[Ironruby-core] More fixes for core/array specs

Daniele Alessandri suppakilla at gmail.com
Mon Apr 20 04:51:41 EDT 2009


Good point, and I guess there is no real reason for doing that... it
wasn't really an attempt to achieve optimization, it just turned out
like that as I honestly totally missed the case of already unique
lists :-) Adjustments scheduled for the next push of my commits.

On Sun, Apr 19, 2009 at 01:10, Shri Borde <Shri.Borde at microsoft.com> wrote:
> Looks good!
>
> In IListOps.UniqueSelf, any reason you do "bool frozen = context.IsObjectFrozen(self);" upfront instead doing IsObjectFrozen when you actually need it? If uniq! Is called on a System.Collections.Generic.List<T>, IsObjectFrozen will be expensive since we have to keep the "frozen" bit on the side. (For RubyArray, we will keep the bit as an instance field which will be cheap to access). So for List<T> objects which are already unique, it will be faster if you can avoid doing IsObjectFrozen.
>
> Note that simplicity trumps optimization unless you have hard data that the optimization is required. I am only suggesting this optimization as its trivial, and the code is as simple in either case...
>
> -----Original Message-----
> From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at rubyforge.org] On Behalf Of Daniele Alessandri
> Sent: Saturday, April 18, 2009 3:39 PM
> To: ironruby-core at rubyforge.org
> Subject: Re: [Ironruby-core] More fixes for core/array specs
>
> Hi,
>
> just a self-reply to point out that the changes in ArrayOps.ToArray
> introduced a regression for Array#to_ary (reported by
> core/array/to_ary) due to the different behaviour of Array#to_a and
> Array#to_ary on subclasses of Array. I have already fixed this on my
> local repository, I'm just waiting to have a few more commits to
> rebase and push the next set of changes on github.
>
>
> On Sat, Apr 18, 2009 at 13:31, Daniele Alessandri <suppakilla at gmail.com> wrote:
>> Hi,
>>
>> http://github.com/nrk/ironruby/commit/4afc7f1bc44b007a9dca30e6330eca35d487f165
>>
>> This commit resolves the following failing specs:
>>
>> Array#<=> properly handles recursive arrays (critical)
>> Array#initialize with (size, object=nil) uses the block value instead
>> of using the default value
>> Array#to_a does not return subclass instance on Array subclasses
>> Array#uniq! raises a TypeError on a frozen array if modification would
>> take place
>> Array#values_at returns an array of elements in the ranges when passes ranges
>>
>> From the commit message:
>>
>> * Removed unused allocateStorage argument from IListOps.First and
>> IListOps.Last; Removed the manual protocol conversion bits in
>> IListOps.Fetch
>> * Fix IoOps.ToPrintedString to output a double converted to string
>> using an invariant culture (Issue #597 NumericLiterals1 test fails
>> under french culture)
>> * IListOps.ValuesAt adds a null value to the result if the begin value
>> of the specified range instance(s) is <= the length of the array and
>> the end value is >= the length of the array.
>> * Array#uniq! raises a TypeError on a frozen array if modification
>> would take place.
>> * Fixed ArrayOps.ToArray to return a new RubyArray instance with the
>> elements of self if self is a RubyArray.Subclass.
>> * Array#initialize with (size, object=nil) uses the block value
>> instead of using the default value
>> * Fixed IListOps.Compare to work with recursive arrays.
>>
>> A diff is attached to this mail.
>>
>> PS: This completes my previous commit by removing unused
>> allocateStorage arguments from IListOps.First and IListOps.Last.
>>
>> Thanks,
>> Daniele
>>
>> --
>> Daniele Alessandri
>> http://www.clorophilla.net/blog/
>> http://twitter.com/JoL1hAHN
>>
>
>
>
> --
> Daniele Alessandri
> http://www.clorophilla.net/blog/
> http://twitter.com/JoL1hAHN
> _______________________________________________
> Ironruby-core mailing list
> Ironruby-core at rubyforge.org
> http://rubyforge.org/mailman/listinfo/ironruby-core
>
> _______________________________________________
> Ironruby-core mailing list
> Ironruby-core at rubyforge.org
> http://rubyforge.org/mailman/listinfo/ironruby-core
>



-- 
Daniele Alessandri
http://www.clorophilla.net/blog/
http://twitter.com/JoL1hAHN


More information about the Ironruby-core mailing list