JS accessors make %HasFastPackedElements false. I need to verify what happens with C++ interceptors.
On Tue, Aug 13, 2013 at 4:47 PM, <[email protected]> wrote: > Dbc > > > > 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) { > I don't think you can have indexed accessors while being packed. I think > we always go dictionary mode when accessors are installed. Holey arrays > would have this problem; but they are already excluded explicitly. > > > On 2013/08/13 15:47:16, Michael Starzinger wrote: > >> 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/> > -- 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.
