1. 17 Dec, 2020 1 commit
  2. 02 Dec, 2020 1 commit
  3. 17 Nov, 2020 1 commit
    • Jakob Gruber's avatar
      [nci] Share smi feedback and enable related optimizations · 3599cce1
      Jakob Gruber authored
      This CL enables a first batch of feedback-based optimizations in NCI
      code. Specifically, optimizations based on unary, binary, compare,
      for-in-next, and for-in-prepare feedback are now enabled.
      
      This has two main implications:
      
      1. NCI code can now deopt. Deoptimized code is currently thrown away
      permanently and cannot be reused. Now that shared/cached NCI code can
      deopt, this leads to an interesting question of what should happen
      with deoptimized NCI code. The answer in this CL is to remove the
      cache entry (it may later be re-added).
      
      2. Tiering up from NCI to TF still requires feedback; since NCI code,
      starting with this CL, no longer collects full feedback, feedback must
      be created in some other way. This is solved by sharing a
      context-independent encoding of feedback across native contexts.
      
      Feedback is shared through a new SerializedFeedback object type,
      essentially a byte array of serialized feedback. Currently, only
      smi-based feedback is shared, but map-based feedback will be added in
      the future.
      
      SerializedFeedback is kept in the NCI cache alongside NCI Code
      objects.  It is created on NCI cache insertion, and deserialized upon
      NCI cache hits.
      
      Bug: v8:8888
      Change-Id: Ic0d5fbea3aa4d3b0a165624dab9d0283b07dcee7
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2531775Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarMythri Alle <mythria@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#71224}
      3599cce1
  4. 04 Nov, 2020 1 commit
  5. 03 Nov, 2020 1 commit
  6. 13 Jul, 2020 1 commit
  7. 10 Jul, 2020 1 commit
    • Leszek Swirski's avatar
      [hashtable] Allow GlobalDictionary to have holes · 82726b64
      Leszek Swirski authored
      Rather than marking deleted GlobalDictionary entries with a "The Hole"
      valued PropertyCell, we now remove those PropertyCells entirely and
      use the standard HashTable deleted item marker (also the Hole).
      
      This comes with several simplifications:
      
        1) We no longer need a customizable IsKey method on HastTable shapes,
           which was only used by GlobalDictionary to mark "The Hole" cells
           as not real keys,
        2) We can get rid of IsLive/IsKey from the Shape entirely, and define
           it directly in the HashTable, which will also allow us (in the
           future) to encourage caching of "undefined" and "Hole" where used
           for IsKey checks,
        3) PropertyCell invalidation doesn't necessarily have to allocate a
           new replacement cell (specifically, on deletion), nor does it have
           to deal with cells that contain the Hole,
        4) kNeedsHoleCheck is renamed to kMatchNeedsHoleCheck (to be explicit
           that this is only needed to guard IsMatch, which may do an
           indentity comparison and thus not need the HoleCheck guard). It's
           also moved out of BaseShape and into the various shapes that
           define IsMatch, to make them more explicitly think about the
           value,
        5) Modified some while loops into for loops to allow clearer use of
           "continue" on successful hole checks.
      
      Change-Id: If591cbb6b49d59726bdc615413aba4f78fd64632
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2292230
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Auto-Submit: Leszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#68807}
      82726b64
  8. 06 Jul, 2020 1 commit
  9. 12 Jun, 2020 1 commit
  10. 03 Mar, 2020 1 commit
  11. 02 Mar, 2020 1 commit
  12. 24 May, 2019 1 commit
  13. 25 Feb, 2019 1 commit
  14. 09 Jan, 2019 1 commit
  15. 26 Dec, 2018 1 commit
  16. 17 Dec, 2018 1 commit
  17. 30 Nov, 2018 3 commits
    • Ross McIlroy's avatar
      Reland "[Compiler] Introduce IsCompiledScope which prevents flushing of compiled code" · e7ea6545
      Ross McIlroy authored
      This is a reland of 10ea3f8a
      
      Original change's description:
      > [Compiler] Introduce IsCompiledScope which prevents flushing of compiled code
      >
      > Introduces a IsCompiledScope object which can be used to check whether a
      > function is compiled, and ensure it remains compiled for the lifetime
      > of the scope without being uncompiled by bytecode flushing. The Compile
      > functions are modified to take a scope so that calling code can ensure
      > the function remains compiled for the lifetime they require.
      >
      > Also, don't allocate a feedback vector for asm-wasm code as this
      > is never used, and will be reallocated if the asm-wasm code fails to
      > instantiate the module and we fallback to regular JavaScript.
      >
      > Also restructure Compiler::PostInstantiation() to allocate the feedback
      > vector once, and do the optimized code check before optimizing for
      > always opt.
      >
      > BUG=v8:8395
      >
      > Change-Id: I3f1a71143fcae3d1a0c01eefe91ebb4b8594221a
      > Reviewed-on: https://chromium-review.googlesource.com/c/1352295
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
      > Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#57971}
      
      TBR=jgruber@chromium.org,mstarzinger@chromium.org
      
      Bug: v8:8395
      Change-Id: I8dc00798a5680997990c879c3380fe4febd47297
      Reviewed-on: https://chromium-review.googlesource.com/c/1357045
      Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#57982}
      e7ea6545
    • Ross McIlroy's avatar
      Revert "[Compiler] Introduce IsCompiledScope which prevents flushing of compiled code" · 07537cdb
      Ross McIlroy authored
      This reverts commit 10ea3f8a.
      
      Reason for revert: Causing failure on gc_stress bot: 
      https://logs.chromium.org/logs/v8/buildbucket/cr-buildbucket.appspot.com/8928421099411850688/+/steps/Bisect_10ea3f8a/0/steps/Retry/0/logs/collections-construct../0
      
      Original change's description:
      > [Compiler] Introduce IsCompiledScope which prevents flushing of compiled code
      > 
      > Introduces a IsCompiledScope object which can be used to check whether a
      > function is compiled, and ensure it remains compiled for the lifetime
      > of the scope without being uncompiled by bytecode flushing. The Compile
      > functions are modified to take a scope so that calling code can ensure
      > the function remains compiled for the lifetime they require.
      > 
      > Also, don't allocate a feedback vector for asm-wasm code as this
      > is never used, and will be reallocated if the asm-wasm code fails to
      > instantiate the module and we fallback to regular JavaScript.
      > 
      > Also restructure Compiler::PostInstantiation() to allocate the feedback
      > vector once, and do the optimized code check before optimizing for
      > always opt.
      > 
      > BUG=v8:8395
      > 
      > Change-Id: I3f1a71143fcae3d1a0c01eefe91ebb4b8594221a
      > Reviewed-on: https://chromium-review.googlesource.com/c/1352295
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
      > Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#57971}
      
      TBR=rmcilroy@chromium.org,mstarzinger@chromium.org,jgruber@chromium.org
      
      Change-Id: I1449a02a0aceb9757440757628e586df33972a40
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:8395
      Reviewed-on: https://chromium-review.googlesource.com/c/1357042Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#57974}
      07537cdb
    • Ross McIlroy's avatar
      [Compiler] Introduce IsCompiledScope which prevents flushing of compiled code · 10ea3f8a
      Ross McIlroy authored
      Introduces a IsCompiledScope object which can be used to check whether a
      function is compiled, and ensure it remains compiled for the lifetime
      of the scope without being uncompiled by bytecode flushing. The Compile
      functions are modified to take a scope so that calling code can ensure
      the function remains compiled for the lifetime they require.
      
      Also, don't allocate a feedback vector for asm-wasm code as this
      is never used, and will be reallocated if the asm-wasm code fails to
      instantiate the module and we fallback to regular JavaScript.
      
      Also restructure Compiler::PostInstantiation() to allocate the feedback
      vector once, and do the optimized code check before optimizing for
      always opt.
      
      BUG=v8:8395
      
      Change-Id: I3f1a71143fcae3d1a0c01eefe91ebb4b8594221a
      Reviewed-on: https://chromium-review.googlesource.com/c/1352295Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#57971}
      10ea3f8a
  18. 28 Nov, 2018 1 commit
  19. 27 Nov, 2018 1 commit
  20. 23 Nov, 2018 1 commit
  21. 05 Nov, 2018 1 commit
  22. 31 Oct, 2018 1 commit
  23. 14 Sep, 2018 1 commit
  24. 13 Sep, 2018 1 commit
  25. 13 Jul, 2018 1 commit
  26. 12 Jul, 2018 1 commit
  27. 03 May, 2018 1 commit
  28. 22 Feb, 2018 1 commit
    • Benedikt Meurer's avatar
      [cleanup] Introduce a dedicated FeedbackCell. · aff1f378
      Benedikt Meurer authored
      This is preparatory cleanup work for eventually tracking the functions
      (rather than concrete closures) in the CALL_IC, also for builtins like
      the default PromiseCapability [[Resolve]] and [[Reject]] functions. It
      adds a new FeedbackCell type, which is used by JSFunctions consistently
      now to reference the feedback vector (or undefined if not the function
      is not compiled yet or is a native/asm.js function).
      
      This also changes the calling convention for FastNewClosure builtin and
      the JSCreateClosure operator in TurboFan to carry the FeedbackCell here
      instead of the parent FeedbackVector and the slot index. In addition we
      eliminate the now unused %InterpreterNewClosure runtime function.
      
      Bug: v8:2206, v8:7253, v8:7310
      Change-Id: Ib4ce456e276e0273e57c163dcdd0b33abf863656
      Reviewed-on: https://chromium-review.googlesource.com/928403
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarMichael Stanton <mvstanton@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51474}
      aff1f378
  29. 21 Feb, 2018 1 commit
  30. 17 Oct, 2017 1 commit
  31. 29 Jun, 2017 1 commit
  32. 22 Jun, 2017 1 commit
  33. 13 Jun, 2017 1 commit
  34. 12 Jun, 2017 2 commits
  35. 09 Jun, 2017 1 commit
  36. 06 Apr, 2017 1 commit