1. 14 Jan, 2016 1 commit
  2. 12 Jan, 2016 2 commits
    • mlippautz's avatar
      [heap, deoptimizer] Use proper right trim instead of manually trimming · 8cf79873
      mlippautz authored
      Failing to do so results in out-of-date marking information, because live bytes
      is not properly adjusted.
      
      This CL adds support for right trimming ByteArray and properly DCHECKs that we
      do not left trim  ByteArray (as we already do for FixedTypedArrayBase).
      
      BUG=
      
      Review URL: https://codereview.chromium.org/1577263003
      
      Cr-Commit-Position: refs/heads/master@{#33252}
      8cf79873
    • mlippautz's avatar
      [heap] Use HashMap as scratchpad backing store · 55422bdd
      mlippautz authored
      We use a scratchpad to remember visited allocation sites for post processing
      (making tenure decisions). The previous implementation used a rooted FixedArray
      with constant length (256) to remember all sites. Updating the scratchpad is a
      bottleneck in any parallel/concurrent implementation of newspace evacuation.
      
      The new implementation uses a HashMap with allocation sites as keys and
      temporary counts as values. During evacuation we collect a local hashmap of
      visited allocation sites. Upon merging the local hashmap back into a global one
      we update potential forward pointers of compacted allocation sites.  The
      scavenger can directly enter its entries into the global hashmap. Note that the
      actual memento found count is still kept on the AllocationSite as it needs to
      survive scavenges and full GCs.
      
      BUG=chromium:524425
      LOG=N
      R=hpayer@chromium.org
      
      Review URL: https://codereview.chromium.org/1535723002
      
      Cr-Commit-Position: refs/heads/master@{#33233}
      55422bdd
  3. 11 Jan, 2016 2 commits
  4. 08 Jan, 2016 3 commits
  5. 07 Jan, 2016 1 commit
  6. 05 Jan, 2016 1 commit
  7. 04 Jan, 2016 1 commit
    • littledan's avatar
      Add a --harmony-species flag, defining @@species on constructors · fb5cbc2e
      littledan authored
      This patch adds the basis for subclassing TypedArrays, Arrays and
      ArrayBuffers through the @@species hook, added in ES2015. This is
      the first patch in a series. This patch simply defines the
      @@species Symbol and installs it on the appropriate constructors.
      The behavior is guarded behind the --harmony-species flag.
      
      R=cbruni
      BUG=v8:4093
      LOG=Y
      CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel
      TBR=hpayer@chromium.org
      
      Review URL: https://codereview.chromium.org/1558543002
      
      Cr-Commit-Position: refs/heads/master@{#33095}
      fb5cbc2e
  8. 01 Jan, 2016 1 commit
  9. 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
  10. 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
  11. 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
  12. 23 Dec, 2015 1 commit
  13. 22 Dec, 2015 1 commit
    • bmeurer's avatar
      [runtime] Rewrite Function.prototype.toString in C++. · 4acca53e
      bmeurer authored
      There's actually no point trying to do Function.prototype.toString in
      JavaScript, as it always calls into C++ at least once, so it only
      complicates things (esp. once we start optimizing bound functions).
      
      Drive-by-fix: Rename FunctionApply and FunctionCall builtins to also
      reflect the fact that these are builtins in the Function.prototype and
      not on Function itself.
      
      TBR=hpayer@chromium.org
      R=yangguo@chromium.org
      BUG=chromium:535408
      LOG=n
      
      Review URL: https://codereview.chromium.org/1540953004
      
      Cr-Commit-Position: refs/heads/master@{#32996}
      4acca53e
  14. 18 Dec, 2015 2 commits
    • mlippautz's avatar
      [heap] Move to LAB-based allocation for newspace evacuation. · a4e3a3b6
      mlippautz authored
      This CL prepare newspace evacuation for parallel execution wrt. to actual
      allocations. The priority for allocations is:
      * Try to allocate from LAB if objects are below kMaxLabObjectSize
      * Allocate directly (synchronized) from newspace for larger objects.
      * Fall back to old space allocation (which will be backed by a local compaction
        space in future).
      
      Semantical change: Previously we did fall back to regular new space promotion if
      we are OOM in old space. With this CL we fall back to new space promotion, which
      could fail because of fragmentation, again leading to an old space allocation
      that finally bails into OOM.
      
      Newspace evacuation is still single threaded and requires further changes to
      allocation site tracking.
      
      BUG=chromium:524425
      LOG=N
      
      Review URL: https://codereview.chromium.org/1487853002
      
      Cr-Commit-Position: refs/heads/master@{#32970}
      a4e3a3b6
    • mlippautz's avatar
      Revert of [heap] delete Heap::LeftTrimFixedAray · e5015918
      mlippautz authored
      Reason for revert:
      Revive left-trimming until new strategies are evaluated and decided on.
      
      Partially reverted changes from:
      https://codereview.chromium.org/1474203003/
      
      BUG=v8:4606
      LOG=N
      
      Original issue's description:
      > [heap] delete Heap::LeftTrimFixedAray
      >
      > No more uses left for this code (thank goodness.)
      >
      > R=hpayer@chromium.org
      > BUG=
      >
      > Committed: https://crrev.com/dc3442b1ec803916eb6c1882ab4c3ec6fd44dd55
      > Cr-Commit-Position: refs/heads/master@{#32305}
      
      TBR=hpayer@chromium.org,ofrobots@google.com
      
      Review URL: https://codereview.chromium.org/1535933002
      
      Cr-Commit-Position: refs/heads/master@{#32965}
      e5015918
  15. 16 Dec, 2015 1 commit
    • mlippautz's avatar
      Reland of "[cctest] Add tests for aborting compaction of pages" · 2bb51df9
      mlippautz authored
      Tests for
      * aborting a full page.
      * partially aborting a page.
      * partially aborting a page with pointers between aborted pages.
      * partially aborting a page with store buffer entries.
      
      Also introduces force_oom() which prohibits a old space to
      expand
      
      BUG=chromium:524425
      LOG=N
      
      CQ_EXTRA_TRYBOTS=tryserver.v8:v8_linux_nosnap_rel,v8_linux_nosnap_dbg,v8_win_nosnap_shared_rel,v8_win_nosnap_shared_compile_rel
      
      Review URL: https://codereview.chromium.org/1518803005
      
      Cr-Commit-Position: refs/heads/master@{#32899}
      2bb51df9
  16. 11 Dec, 2015 7 commits
  17. 10 Dec, 2015 3 commits
  18. 09 Dec, 2015 5 commits
  19. 08 Dec, 2015 2 commits
  20. 07 Dec, 2015 2 commits