1. 25 Jan, 2016 2 commits
  2. 22 Jan, 2016 3 commits
    • ishell's avatar
      Array length reduction should throw in strict mode if it can't delete an element. · ed2be747
      ishell authored
      When accessor getter callback is called the v8::PropertyCallbackInfo::ShouldThrowOnError() is always false, since according to ES6 there's no difference between strict and non-strict property loads. For the setter case the v8::PropertyCallbackInfo::ShouldThrowOnError() returns true if the property is set in strict context.
      
      Interceptors follow same idea: for getter, enumerator and query callbacks the v8::PropertyCallbackInfo::ShouldThrowOnError() is always false, and for setter and deleter callback the v8::PropertyCallbackInfo::ShouldThrowOnError() returns true in strict context.
      
      This CL also cleans up the CallApiGetterStub and removes bogus asserts from [arm] Push(reg1, reg2, ..., regN) that prevented from pushing a set of registers containing duplicates.
      
      BUG=v8:4267
      LOG=Y
      
      Committed: https://crrev.com/1d3e837fcbbd9d9fd5e72dfe85dfd47c025f3c9f
      Cr-Commit-Position: refs/heads/master@{#33438}
      
      Review URL: https://codereview.chromium.org/1587073003
      
      Cr-Commit-Position: refs/heads/master@{#33461}
      ed2be747
    • cbruni's avatar
      Revert of [runtime] Do not use the enum-cache for non-prototype objects.... · 1c523a44
      cbruni authored
      Revert of [runtime] Do not use the enum-cache for non-prototype objects. (patchset #1 id:1 of https://codereview.chromium.org/1612413003/ )
      
      Reason for revert:
      let me quickly revert the revert, wut?
      Goal: my CL should not be in the tree!
      
      Original issue's description:
      > Reland of [runtime] Do not use the enum-cache for non-prototype objects. (patchset #1 id:1 of https://codereview.chromium.org/1619803003/ )
      >
      > Reason for revert:
      > the deopt issues have been taken care of by benedikt
      >
      > Original issue's description:
      > > Revert of [runtime] Do not use the enum-cache for non-prototype objects. (patchset #10 id:180001 of https://codereview.chromium.org/1608523002/ )
      > >
      > > Reason for revert:
      > > tanks for-in significantly
      > >
      > > Original issue's description:
      > > > [runtime] Do not use the enum-cache for keys retrieval.
      > > >
      > > > Currently we fail to properly handle shadowed properties. If the
      > > > receiver defines a non-enumerable property that reappears on the
      > > > prototype as enumerable it incorrectly shows up in [[Enumerate]].
      > > > By extending the KeyAccumulator to track non-enumerable properties
      > > > we can now properly filter them out when seeing them further up in
      > > > the prototype-chain.
      > > >
      > > > BUG=v8:705
      > > > LOG=y
      > > >
      > > > Committed: https://crrev.com/ed24dfe80d1da0827b8571839ee52c03ad09c9c7
      > > > Cr-Commit-Position: refs/heads/master@{#33405}
      > >
      > > TBR=jkummerow@chromium.org,bmeurer@chromium.org
      > > # Not skipping CQ checks because original CL landed more than 1 days ago.
      > > BUG=v8:705
      > > LOG=n
      > >
      > > Committed: https://crrev.com/6e0573c6fff1c3041bab106d1197ab1b64aa9a6a
      > > Cr-Commit-Position: refs/heads/master@{#33443}
      >
      > TBR=jkummerow@chromium.org,bmeurer@chromium.org
      > # Skipping CQ checks because original CL landed less than 1 days ago.
      > NOPRESUBMIT=true
      > NOTREECHECKS=true
      > NOTRY=true
      > BUG=v8:705
      >
      > Committed: https://crrev.com/5569e270eda517b5ea74e3a7676b3230cbe2f7a9
      > Cr-Commit-Position: refs/heads/master@{#33458}
      
      TBR=jkummerow@chromium.org,bmeurer@chromium.org
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=v8:705
      
      Review URL: https://codereview.chromium.org/1614313003
      
      Cr-Commit-Position: refs/heads/master@{#33459}
      1c523a44
    • cbruni's avatar
      Reland of [runtime] Do not use the enum-cache for non-prototype objects.... · 5569e270
      cbruni authored
      Reland of [runtime] Do not use the enum-cache for non-prototype objects. (patchset #1 id:1 of https://codereview.chromium.org/1619803003/ )
      
      Reason for revert:
      the deopt issues have been taken care of by benedikt
      
      Original issue's description:
      > Revert of [runtime] Do not use the enum-cache for non-prototype objects. (patchset #10 id:180001 of https://codereview.chromium.org/1608523002/ )
      >
      > Reason for revert:
      > tanks for-in significantly
      >
      > Original issue's description:
      > > [runtime] Do not use the enum-cache for keys retrieval.
      > >
      > > Currently we fail to properly handle shadowed properties. If the
      > > receiver defines a non-enumerable property that reappears on the
      > > prototype as enumerable it incorrectly shows up in [[Enumerate]].
      > > By extending the KeyAccumulator to track non-enumerable properties
      > > we can now properly filter them out when seeing them further up in
      > > the prototype-chain.
      > >
      > > BUG=v8:705
      > > LOG=y
      > >
      > > Committed: https://crrev.com/ed24dfe80d1da0827b8571839ee52c03ad09c9c7
      > > Cr-Commit-Position: refs/heads/master@{#33405}
      >
      > TBR=jkummerow@chromium.org,bmeurer@chromium.org
      > # Not skipping CQ checks because original CL landed more than 1 days ago.
      > BUG=v8:705
      > LOG=n
      >
      > Committed: https://crrev.com/6e0573c6fff1c3041bab106d1197ab1b64aa9a6a
      > Cr-Commit-Position: refs/heads/master@{#33443}
      
      TBR=jkummerow@chromium.org,bmeurer@chromium.org
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=v8:705
      
      Review URL: https://codereview.chromium.org/1612413003
      
      Cr-Commit-Position: refs/heads/master@{#33458}
      5569e270
  3. 21 Jan, 2016 3 commits
    • machenbach's avatar
      Revert of Array length reduction should throw in strict mode if it can't... · 575e90c1
      machenbach authored
      Revert of Array length reduction should throw in strict mode if it can't delete an element. (patchset #7 id:220001 of https://codereview.chromium.org/1587073003/ )
      
      Reason for revert:
      [Sheriff] Breaks layout tests. Please fix upstream.
      https://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Linux%2064/builds/4077
      
      Original issue's description:
      > Array length reduction should throw in strict mode if it can't delete an element.
      >
      > When accessor getter callback is called the v8::PropertyCallbackInfo::ShouldThrowOnError() is always false, since according to ES6 there's no difference between strict and non-strict property loads. For the setter case the v8::PropertyCallbackInfo::ShouldThrowOnError() returns true if the property is set in strict context.
      >
      > Interceptors follow same idea: for getter, enumerator and query callbacks the v8::PropertyCallbackInfo::ShouldThrowOnError() is always false, and for setter and deleter callback the v8::PropertyCallbackInfo::ShouldThrowOnError() returns true in strict context.
      >
      > This CL also cleans up the CallApiGetterStub and removes bogus asserts from [arm] Push(reg1, reg2, ..., regN) that prevented from pushing a set of registers containing duplicates.
      >
      > BUG=v8:4267
      > LOG=Y
      >
      > Committed: https://crrev.com/1d3e837fcbbd9d9fd5e72dfe85dfd47c025f3c9f
      > Cr-Commit-Position: refs/heads/master@{#33438}
      
      TBR=verwaest@chromium.org,ishell@chromium.org
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=v8:4267
      
      Review URL: https://codereview.chromium.org/1611313003
      
      Cr-Commit-Position: refs/heads/master@{#33444}
      575e90c1
    • cbruni's avatar
      Revert of [runtime] Do not use the enum-cache for non-prototype objects.... · 6e0573c6
      cbruni authored
      Revert of [runtime] Do not use the enum-cache for non-prototype objects. (patchset #10 id:180001 of https://codereview.chromium.org/1608523002/ )
      
      Reason for revert:
      tanks for-in significantly
      
      Original issue's description:
      > [runtime] Do not use the enum-cache for keys retrieval.
      >
      > Currently we fail to properly handle shadowed properties. If the
      > receiver defines a non-enumerable property that reappears on the
      > prototype as enumerable it incorrectly shows up in [[Enumerate]].
      > By extending the KeyAccumulator to track non-enumerable properties
      > we can now properly filter them out when seeing them further up in
      > the prototype-chain.
      >
      > BUG=v8:705
      > LOG=y
      >
      > Committed: https://crrev.com/ed24dfe80d1da0827b8571839ee52c03ad09c9c7
      > Cr-Commit-Position: refs/heads/master@{#33405}
      
      TBR=jkummerow@chromium.org,bmeurer@chromium.org
      # Not skipping CQ checks because original CL landed more than 1 days ago.
      BUG=v8:705
      LOG=n
      
      Review URL: https://codereview.chromium.org/1619803003
      
      Cr-Commit-Position: refs/heads/master@{#33443}
      6e0573c6
    • ishell's avatar
      Array length reduction should throw in strict mode if it can't delete an element. · 1d3e837f
      ishell authored
      When accessor getter callback is called the v8::PropertyCallbackInfo::ShouldThrowOnError() is always false, since according to ES6 there's no difference between strict and non-strict property loads. For the setter case the v8::PropertyCallbackInfo::ShouldThrowOnError() returns true if the property is set in strict context.
      
      Interceptors follow same idea: for getter, enumerator and query callbacks the v8::PropertyCallbackInfo::ShouldThrowOnError() is always false, and for setter and deleter callback the v8::PropertyCallbackInfo::ShouldThrowOnError() returns true in strict context.
      
      This CL also cleans up the CallApiGetterStub and removes bogus asserts from [arm] Push(reg1, reg2, ..., regN) that prevented from pushing a set of registers containing duplicates.
      
      BUG=v8:4267
      LOG=Y
      
      Review URL: https://codereview.chromium.org/1587073003
      
      Cr-Commit-Position: refs/heads/master@{#33438}
      1d3e837f
  4. 20 Jan, 2016 2 commits
    • cbruni's avatar
      [runtime] Do not use the enum-cache for keys retrieval. · ed24dfe8
      cbruni authored
      Currently we fail to properly handle shadowed properties. If the
      receiver defines a non-enumerable property that reappears on the
      prototype as enumerable it incorrectly shows up in [[Enumerate]].
      By extending the KeyAccumulator to track non-enumerable properties
      we can now properly filter them out when seeing them further up in
      the prototype-chain.
      
      BUG=v8:705
      LOG=y
      
      Review URL: https://codereview.chromium.org/1608523002
      
      Cr-Commit-Position: refs/heads/master@{#33405}
      ed24dfe8
    • mstarzinger's avatar
      [interpreter] Implement exception handler table building. · 82716f1c
      mstarzinger authored
      This implements a first version of exception handler table construction
      within the interpreter. Note that the local control flow for try-catch
      and try-finally statements is still off, and also stack unwinding does
      not yet respect interpreter frames. But generated handler tables should
      be populated correctly already.
      
      R=oth@chromium.org
      BUG=v8:4674
      LOG=n
      
      Review URL: https://codereview.chromium.org/1607433005
      
      Cr-Commit-Position: refs/heads/master@{#33400}
      82716f1c
  5. 19 Jan, 2016 1 commit
  6. 18 Jan, 2016 5 commits
  7. 15 Jan, 2016 3 commits
  8. 14 Jan, 2016 1 commit
  9. 13 Jan, 2016 2 commits
  10. 12 Jan, 2016 6 commits
  11. 11 Jan, 2016 1 commit
  12. 08 Jan, 2016 1 commit
  13. 07 Jan, 2016 2 commits
    • jkummerow's avatar
      Fix^3 cast in HasEnumerableElements · a0d03d72
      jkummerow authored
      Empty FixedDoubleArrays aren't FixedDoubleArrays.
      
      BUG=chromium:569534
      LOG=n
      R=yangguo@chromium.org
      
      Review URL: https://codereview.chromium.org/1568863002
      
      Cr-Commit-Position: refs/heads/master@{#33158}
      a0d03d72
    • littledan's avatar
      Add Array support for @@species and subclassing · 6e962237
      littledan authored
      This patch implements @@species, guarded behind the --harmony-species
      flag, on Arrays. Methods which return an Array will instead return
      the appropriate instance based on the ArraySpeciesCreate algorithm.
      The algorithm is implemented in C++ to get access to realm information
      and to implement some Array methods in C++, but it is also accessed
      from JavaScript through a new runtime function. A couple interactive
      Octane runs show no performance regression with the flag turned off,
      but turning --harmony-species on will surely have a significant
      regression, as Array methods now heavily use ObjectDefineProperty.
      
      BUG=v8:4093
      LOG=Y
      R=adamk,cbruni
      
      Review URL: https://codereview.chromium.org/1560763002
      
      Cr-Commit-Position: refs/heads/master@{#33144}
      6e962237
  14. 05 Jan, 2016 3 commits
    • oth's avatar
      [Interpreter] Add support for jumps using constants with wide operands. · 8109f63f
      oth authored
      This increases the size of addressable constant pool entries for jumps
      to match other bytecodes using operands indexing the constant pool.
      
      This change also introduces reservations for constant pool entries.
      Reservations are used for forward jumps to ensure a constant pool entry
      will be available when the jump target (label) is bound and the jump is
      patched up in the bytecode array.
      
      BUG=v8:4280
      LOG=N
      
      Review URL: https://codereview.chromium.org/1546683002
      
      Cr-Commit-Position: refs/heads/master@{#33125}
      8109f63f
    • jkummerow's avatar
      [prototype user tracking] Don't skip JSGlobalProxies · b4583c04
      jkummerow authored
      For a prototype chain foo -> global_proxy -> global_object, we used to
      register a dependency from foo -> global_object. This is incorrect when
      the global_proxy/global_object pairing is modified, e.g. when navigating
      in iframes. With this patch, we properly register foo -> global_proxy and
      global_proxy -> global_object dependencies.
      Additionally, when a prototype's prototype changes from null to something
      else, this new usage relation must be registered if there are other users
      further down on the prototype chain that might expect a complete chain of
      registrations to exist (which was the case before, and must be preserved).
      
      BUG=chromium:571517
      LOG=n
      R=verwaest@chromium.org
      
      Review URL: https://codereview.chromium.org/1559323002
      
      Cr-Commit-Position: refs/heads/master@{#33119}
      b4583c04
    • bmeurer's avatar
      [runtime] Migrate several Date builtins to C++. · 065e9c53
      bmeurer authored
      Almost all of the Date builtins always call into C++ at least once
      anyway, so parsing, compiling and executing the JavaScript wrappers
      is just a waste of time.  The most important part here is the Date
      constructor itself, which is one of the blockers for new.target in
      TurboFan, because compiling the Date constructor takes too much time
      with TurboFan (for no reason since we end up in C++ anway).
      
      R=cbruni@chromium.org
      
      Review URL: https://codereview.chromium.org/1556333002
      
      Cr-Commit-Position: refs/heads/master@{#33109}
      065e9c53
  15. 30 Dec, 2015 1 commit
    • bmeurer's avatar
      [runtime] Migrate Object.create to C++. · 6a51d311
      bmeurer authored
      There's no point in keeping the ObjectCreate JavaScript wrapper
      function, which even does allocation site pretenuring for the
      instances created via Object.create (where ObjectCreate itself is
      the AllocationSite), and does not offer any sane way forward.
      
      Instead introduce a new ObjectCreate C++ builtin, which currently
      serves as a baseline implementation, on top of which we can think
      about ways to optimize Object.create for the common case (i.e.
      frameworks such as Ember.js make heavy use of Object.create).
      
      R=cbruni@chromium.org
      TBR=hpayer@chromium.org
      
      Review URL: https://codereview.chromium.org/1558433002
      
      Cr-Commit-Position: refs/heads/master@{#33061}
      6a51d311
  16. 27 Dec, 2015 2 commits
    • bmeurer's avatar
      [runtime] Introduce dedicated JSBoundFunction to represent bound functions. · 97def807
      bmeurer authored
      According to the ES2015 specification, bound functions are exotic
      objects, and thus don't need to be implemented as JSFunctions. So
      we introduce a new JSBoundFunction type to represent bound functions
      and make them optimizable. This already improves the performance of
      calling or constructing bound functions by 10-100x depending on the
      use case because we avoid the crazy dance between JavaScript and C++
      that was implemented in v8natives.js previously.
      
      There's still room for improvement in the performance of actually
      creating bound functions, which is also relevant in practice, but
      we already have a plan how to accomplish that later.
      
      The mips/mips64 ports were contributed by akos.palfi@imgtec.com.
      
      CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel
      BUG=chromium:535408, chromium:571299, v8:4629
      LOG=n
      
      Committed: https://crrev.com/ca8623eaa468cba65a5adafcdfb4615966f43ce2
      Cr-Commit-Position: refs/heads/master@{#33042}
      
      Review URL: https://codereview.chromium.org/1542963002
      
      Cr-Commit-Position: refs/heads/master@{#33044}
      97def807
    • bmeurer's avatar
      Revert of [runtime] Introduce dedicated JSBoundFunction to represent bound... · 1cf8b105
      bmeurer authored
      Revert of [runtime] Introduce dedicated JSBoundFunction to represent bound functions. (patchset #14 id:260001 of https://codereview.chromium.org/1542963002/ )
      
      Reason for revert:
      Breaks arm64 sim nosnap: https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20arm64%20-%20sim%20-%20nosnap%20-%20debug/builds/805/steps/Check/logs/function-bind
      
      Original issue's description:
      > [runtime] Introduce dedicated JSBoundFunction to represent bound functions.
      >
      > According to the ES2015 specification, bound functions are exotic
      > objects, and thus don't need to be implemented as JSFunctions. So
      > we introduce a new JSBoundFunction type to represent bound functions
      > and make them optimizable. This already improves the performance of
      > calling or constructing bound functions by 10-100x depending on the
      > use case because we avoid the crazy dance between JavaScript and C++
      > that was implemented in v8natives.js previously.
      >
      > There's still room for improvement in the performance of actually
      > creating bound functions, which is also relevant in practice, but
      > we already have a plan how to accomplish that later.
      >
      > The mips/mips64 ports were contributed by akos.palfi@imgtec.com.
      >
      > CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel
      > BUG=chromium:535408, chromium:571299, v8:4629
      > LOG=n
      >
      > Committed: https://crrev.com/ca8623eaa468cba65a5adafcdfb4615966f43ce2
      > Cr-Commit-Position: refs/heads/master@{#33042}
      
      TBR=cbruni@chromium.org,hpayer@chromium.org,yangguo@chromium.org,akos.palfi@imgtec.com
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=chromium:535408, chromium:571299, v8:4629
      
      Review URL: https://codereview.chromium.org/1552473002
      
      Cr-Commit-Position: refs/heads/master@{#33043}
      1cf8b105
  17. 26 Dec, 2015 1 commit
    • bmeurer's avatar
      [runtime] Introduce dedicated JSBoundFunction to represent bound functions. · ca8623ea
      bmeurer authored
      According to the ES2015 specification, bound functions are exotic
      objects, and thus don't need to be implemented as JSFunctions. So
      we introduce a new JSBoundFunction type to represent bound functions
      and make them optimizable. This already improves the performance of
      calling or constructing bound functions by 10-100x depending on the
      use case because we avoid the crazy dance between JavaScript and C++
      that was implemented in v8natives.js previously.
      
      There's still room for improvement in the performance of actually
      creating bound functions, which is also relevant in practice, but
      we already have a plan how to accomplish that later.
      
      The mips/mips64 ports were contributed by akos.palfi@imgtec.com.
      
      CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel
      BUG=chromium:535408, chromium:571299, v8:4629
      LOG=n
      
      Review URL: https://codereview.chromium.org/1542963002
      
      Cr-Commit-Position: refs/heads/master@{#33042}
      ca8623ea
  18. 23 Dec, 2015 1 commit