HasElements is 21% faster than existing code and it still passes all tests.

I'll provide a new CL that only does that.


On Tue, Aug 13, 2013 at 12:05 PM, Vyacheslav Egorov <[email protected]>wrote:

> s/%HasElement(i, array)/%HasElement(array, i)/
>
> Vyacheslav Egorov
>
>
> On Tue, Aug 13, 2013 at 6:04 PM, Vyacheslav Egorov 
> <[email protected]>wrote:
>
>> DBC:
>>
>> Can't we just manually inline 'in' here?
>>
>> if I am not mistaken x in y essentially just calls IN function from
>> runtime.js
>>
>>  In this particular case you should be able just to replace i in array
>> with %HasElement(i, array) and hopefully fast path in the %HasElement would
>> take care of the rest.
>>
>> Ideally Crankshaft should take care of this but well... One can dream :-)
>>
>> Vyacheslav Egorov
>>
>>
>> On Tue, Aug 13, 2013 at 5:47 PM, <[email protected]> wrote:
>>
>>>
>>> https://codereview.chromium.**org/22545007/diff/20001/src/**array.js<https://codereview.chromium.org/22545007/diff/20001/src/array.js>
>>> File src/array.js (right):
>>>
>>> https://codereview.chromium.**org/22545007/diff/20001/src/**
>>> array.js#newcode1263<https://codereview.chromium.org/22545007/diff/20001/src/array.js#newcode1263>
>>> src/array.js:1263: if (!isProxy && %HasFastPackedElements(array) || i in
>>> array) {
>>> On 2013/08/13 14:10:22, Michael Starzinger wrote:
>>>
>>>> It is _really_ surprising that the runtime call into
>>>> Runtime_HasFastPackedElements is cheaper than the "in" keyword. This
>>>>
>>> suggests
>>>
>>>> that there is a lot of potential in actually improving "in" in
>>>>
>>> general. This
>>>
>>>> needs investigation of the generated code!
>>>>
>>>
>>> Now that I think about it, I don't actually think that this is a valid
>>> optimization either. What happens if the callback actually changes the
>>> array in a way so that it remains in fast-packed mode, but "i" still
>>> runs out of bounds. Imagine the following callback.
>>>
>>> var array = [1,2,3,4,5,6];
>>> Object.defineProperty(array, '1', {
>>>   get: function () { array.length = 3; },
>>>   configurable: true
>>> });
>>> array.forEach(f);
>>>
>>>
>>> https://codereview.chromium.**org/22545007/<https://codereview.chromium.org/22545007/>
>>>
>>> --
>>> --
>>> v8-dev mailing list
>>> [email protected]
>>> http://groups.google.com/**group/v8-dev<http://groups.google.com/group/v8-dev>
>>> ---You received this message because you are subscribed to the Google
>>> Groups "v8-dev" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to 
>>> v8-dev+unsubscribe@**googlegroups.com<v8-dev%[email protected]>
>>> .
>>> For more options, visit 
>>> https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out>
>>> .
>>>
>>
>>
>


-- 
erik

-- 
-- 
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- 
You received this message because you are subscribed to the Google Groups 
"v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to