1. 01 Feb, 2018 1 commit
  2. 31 Jan, 2018 2 commits
    • Benedikt Meurer's avatar
      [builtins] Refactor promises to reduce GC overhead. · 8e7737cb
      Benedikt Meurer authored
      This implements the ideas outlined in the section "Microtask queue"
      of the exploration document "Promise and async/await performance" (at
      https://goo.gl/WHRar2), except that the microtask queue stays a linear
      FixedArray for now, to avoid running into trouble with the parallel
      scavenger. This way we can already save a significant amount of
      allocations, thereby reducing the GC frequency quite a bit.
      
      All items on the microtask queue are now proper structs that subclass
      Microtask, i.e. we also wrap JSFunction and MicrotaskCallback jobs
      into structs. We also consistently remember the context for every
      microtask (except for MicrotaskCallback where we don't have a
      context), and execute it later in exactly that context (as required
      by the spec anyways for the Promise related jobs). Particularly
      interesting is the PromiseReactionJobTask and its subclasses, since
      they are designed to have the same size as the PromiseReaction. When
      we resolve a JSPromise we just take the existing PromiseReaction
      instances and morph them into PromiseFulfillReactionJobTask or
      PromiseRejectReactionJobTask (depending whether you "Fulfill" or
      "Reject"). That way the JSPromise class is now only 6 words instead
      of 10 words.
      
      Also the PromiseReaction and the reaction tasks can either carry a
      JSPromise (for the fast native case) or a PromiseCapability (for the
      generic case), which means we don't always pay the overhead of having
      to also remember the "deferred resolve" and "deferred reject" handlers
      that are only relevant for the generic case anyways.
      
      It also fixes a spec violation where we called "then" before we actually
      enqueued the PromiseResolveThenableJob, which is observably wrong.
      Calling it later has the advantage that it should be fairly
      straight-forward now to completely avoid it for native Promise
      instances.
      
      This seems to save around 10-20% on the various Promise benchmarks and
      micro-benchmarks. We expect to gain even more as we're now able to
      inline various operations into TurboFan optimized code easily.
      
      Bug: v8:7253
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: I893d24ca5bb046974b4f5826a8f6dd22f1210b6a
      Reviewed-on: https://chromium-review.googlesource.com/892819
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarSathya Gunasekaran <gsathya@chromium.org>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50980}
      8e7737cb
    • Yang Guo's avatar
      [api] advance deprecation for ScriptCompiler::CompileFunctionInContext. · 85a13975
      Yang Guo authored
      R=adamk@chromium.org
      
      Bug: v8:7275
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: Iada634ab275a1a348d14400b3138ac9e5cc08de7
      Reviewed-on: https://chromium-review.googlesource.com/892441Reviewed-by: 's avatarAdam Klein <adamk@chromium.org>
      Commit-Queue: Yang Guo <yangguo@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50973}
      85a13975
  3. 29 Jan, 2018 1 commit
  4. 25 Jan, 2018 1 commit
  5. 24 Jan, 2018 4 commits
  6. 22 Jan, 2018 1 commit
  7. 19 Jan, 2018 1 commit
  8. 18 Jan, 2018 4 commits
  9. 17 Jan, 2018 1 commit
  10. 16 Jan, 2018 2 commits
  11. 12 Jan, 2018 1 commit
  12. 10 Jan, 2018 2 commits
  13. 09 Jan, 2018 2 commits
  14. 04 Jan, 2018 1 commit
  15. 03 Jan, 2018 1 commit
    • Mythri's avatar
      Add new options to CompileOptions and NoCacheReason · c5eb79e6
      Mythri authored
      Now that we have an API to request code cache, we want to decouple
      compilation from serialization. As a first step, we will add CompileEager
      option (used when we want to produce full code cache) and
      DeferredProduceCodeOption to NoCacheReason. This is so that we can
      properly bucket the compilation time and collect statistics about the
      cache behaviour. Once, blink and node start using the new API, we can
      remove the code to produce code cache from the compilation.
      
      Bug: chromium:783124
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: I35dbb6b0af39940450d412ff75b769603398b2f6
      Reviewed-on: https://chromium-review.googlesource.com/828977
      Commit-Queue: Mythri Alle <mythria@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50336}
      c5eb79e6
  16. 22 Dec, 2017 3 commits
    • Bill Budge's avatar
      [Memory] Add OnCriticalMemoryPressure overload to v8::Platform. · 29bb707e
      Bill Budge authored
      - Adds overload to v8::Platform that will make it easier for embedders to
        maintain a reserve of address space for large, contiguous allocations.
      - Rewrites retry logic using loops.
      - Moves retry logic from some VirtualMemory allocation functions to AllocPages.
      
      Bug: chromium:756050
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: I52e66f9f8b15b6ce2a2f36e74783f178b8cd5cf7
      Reviewed-on: https://chromium-review.googlesource.com/840724
      Commit-Queue: Bill Budge <bbudge@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50303}
      29bb707e
    • Yang Guo's avatar
      Reduce max instance type enum value. · c8736f68
      Yang Guo authored
      We collect instance type statistics in FatalProcessOutOfMemory into an
      array, which is allocated to the max instance type value. While we want
      to leave space to ensure new instance types do not affect constants in
      the API, we can be more frugal.
      
      We currently serialize 350 maps into the startup/context snapshot.  Even
      if we assign a distinct instance type to each of these maps, we would
      still have more than enough to spare with this change.
      
      R=ulan@chromium.org
      
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: I3e583c2c8da3342e9132d96046b5d80cd41afd72
      Reviewed-on: https://chromium-review.googlesource.com/842542
      Commit-Queue: Yang Guo <yangguo@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50302}
      c8736f68
    • Georg Neis's avatar
      [modules] Implement recent ES revisions. · a067281d
      Georg Neis authored
      - Instantiation errors are no longer recorded. If instantiation fails,
        the module(s) are reset to "uninstantiated". When instantiation is
        re-attempted, the thrown exception will be fresh.
      - Instantiation can succeed even where there are modules in the graph
        that previously failed evaluation.
      
      Bug: v8:1569
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: I429f616918afe5f8ab1a956024f0a22f464b8c44
      Reviewed-on: https://chromium-review.googlesource.com/763369
      Commit-Queue: Georg Neis <neis@chromium.org>
      Reviewed-by: 's avatarAdam Klein <adamk@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50301}
      a067281d
  17. 21 Dec, 2017 1 commit
  18. 20 Dec, 2017 2 commits
  19. 14 Dec, 2017 1 commit
  20. 12 Dec, 2017 1 commit
  21. 11 Dec, 2017 1 commit
  22. 06 Dec, 2017 1 commit
  23. 04 Dec, 2017 1 commit
  24. 01 Dec, 2017 1 commit
    • Mythri's avatar
      Reland "Add support to produce code cache after execute" · dae20b0d
      Mythri authored
      Adds new API function to request code cache. Earlier code cache was
      produced along with compile requests. This new API allows us to request
      code cache after executing. Also adds support in the code serializer to
      serialize after executing the script.
      
      Bug: chromium:783124,chromium:789694
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: Id4e6a967e176e3e979dc4ccb9a37a353c70c3890
      Reviewed-on: https://chromium-review.googlesource.com/797036Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Commit-Queue: Mythri Alle <mythria@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49793}
      dae20b0d
  25. 30 Nov, 2017 1 commit
  26. 29 Nov, 2017 2 commits