1. 06 Nov, 2020 1 commit
  2. 24 May, 2019 1 commit
  3. 09 May, 2019 1 commit
  4. 15 Jun, 2018 1 commit
  5. 28 Apr, 2018 1 commit
  6. 17 Jan, 2018 1 commit
  7. 30 Aug, 2017 1 commit
  8. 11 Jul, 2017 1 commit
    • Alexandre Talon's avatar
      [Turbofan] Enable reducers to report their name to make reducer tracing clearer · 7a75da34
      Alexandre Talon authored
      Each reducer now has a virtual reducer_name function, returning its name
      (the name of the class containing this reducer). This gets displayed when
      using the --trace_turbo_reduction flag. Also when using this flags more
      messages are displayed.
      
      Actually when a node is replaced in-place (which is called an update
      of the node), other reducers can still update it right after the
      in-place replacement. When a node is really replaced (not in-place),
      then we stop trying to apply reducers to it before we propagate the
      reduction through the relevant nodes.
      
      Before a message got printed only for the last reduction it went
      through. So in case a node was reduced in-place several times
      in a row, only the last update was printed, or none at all if after
      being reduced in-place it got reduced by being replaced by another
      node: only the non-in-place replacement was showed. 
      
      Now each time an in-place reduction is applied to a node, a message
      gets printed.
      
      Bug: 
      Change-Id: Id0f816fecd44c01d0253966c6decc4861be0c2fa
      Reviewed-on: https://chromium-review.googlesource.com/563365Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Commit-Queue: Alexandre Talon <alexandret@google.com>
      Cr-Commit-Position: refs/heads/master@{#46552}
      7a75da34
  9. 28 Feb, 2017 2 commits
    • tebbi's avatar
      [turbofan] extend escape analysis to reduce CheckMaps · 9881b6c7
      tebbi authored
      R=bmeurer@chromium.org
      
      BUG=
      
      Review-Url: https://codereview.chromium.org/2680973013
      Cr-Original-Commit-Position: refs/heads/master@{#43163}
      Committed: https://chromium.googlesource.com/v8/v8/+/f01c8a6e4b24ab38e58bb141fc251bc6b75dbe21
      Review-Url: https://codereview.chromium.org/2680973013
      Cr-Commit-Position: refs/heads/master@{#43478}
      9881b6c7
    • tebbi's avatar
      [turbofan] escape analysis supports arguments object and rest elements · 7467f16d
      tebbi authored
      The new NewUnmappedArgumentsElements node now takes two inputs:
      - the frame holding the arguments (current frame or arguments adaptor frame)
      - the length of the suffix of passed arguments to be copied into the backing store
      
      These inputs are computed with two new node types:
      ArgumentsFrame()
      ArgumentsLength[formal_parameter_count,is_rest_length](Node* arguments_frame)
      The node type NewRestParameterElements can now be expressed with NewUnmappedArgumentsElements and an appropriate length and is thus not needed anymore.
      
      In escape analysis, we lower loads from the length field of NewUnmappedArgumentsElements with its length input and if we find out that no write access to the arguments elements exists, we replace element loads with direct stack access and replace the NewUnmappedArgumentsElements node with a node of the new node type ArgumentsElementsState. This corresponds to an ObjectState node and gets translated into a deoptimizer instruction to allocate the backing store. Together with the already existing deoptimizer support for the actual arguments object/rest parameters, this allows to remove all allocations for arguments objects/rest parameters in this case.
      In the deoptimizer, we read the actual parameters from the stack while transforming the static deopt info into TranslatedValue objects.
      
      If escape analysis cannot remove the backing store allocation, NewUnmappedArgumentsElements gets lo
      
      BUG=v8:5726
      
      Review-Url: https://codereview.chromium.org/2692753004
      Cr-Commit-Position: refs/heads/master@{#43475}
      7467f16d
  10. 17 Feb, 2017 1 commit
  11. 13 Feb, 2017 1 commit
  12. 31 Jan, 2017 1 commit
    • mstarzinger's avatar
      [turbofan] Remove escape analysis stats counters. · 418c9eca
      mstarzinger authored
      These counters were used during the initial implementation to gather
      statistics about comparative effectiveness of the two escape analysis
      approaches in practice. The counters are not thread-safe and cannot be
      used for the analysis any longer as it is now running off main thread.
      We deprecate the counters in question in favor of maintaining deferred
      statistics until the need for such statistics arises again.
      
      R=bmeurer@chromium.org
      BUG=chromium:685942
      
      Review-Url: https://codereview.chromium.org/2667453003
      Cr-Commit-Position: refs/heads/master@{#42808}
      418c9eca
  13. 13 Dec, 2016 1 commit
  14. 15 Nov, 2016 1 commit
  15. 17 Oct, 2016 1 commit
  16. 17 May, 2016 2 commits
  17. 25 Jan, 2016 1 commit
  18. 20 Jan, 2016 1 commit
    • sigurds's avatar
      [turbofan] Improve escape analysis. · 4efbeac1
      sigurds authored
      * Treat Select nodes as escaping
      * Correctly void virtual field information
        after a store to a non-const index
      * Add a shortcut if all allocates escape
      * Add a shortcut if no allocates are discovered
      * Only reduce FrameState/StateValues nodes if they
        have virtual allocates as input (transitively)
      * Fix bug in FrameState/StateValues duplication
      * Add check to verifier: First 3 inputs of FrameState
        must be StateValues
      
      R=mstarzinger@chromium.org
      BUG=v8:4586
      LOG=n
      
      Review URL: https://codereview.chromium.org/1583213003
      
      Cr-Commit-Position: refs/heads/master@{#33406}
      4efbeac1
  19. 13 Jan, 2016 1 commit
  20. 05 Jan, 2016 2 commits
    • sigurds's avatar
      [turbofan] Deopt support for escape analysis · 3b473d7a
      sigurds authored
      Deopt support is added on two levels. On the IR level,
      a new ObjectState node is added, which represenents an
      object to be materialized. ObjectState nodes appear as
      inputs of FrameState and StateValues nodes. On the
      instruction select/code-generation level, the
      FrameStateDescriptor class handles the nesting
      introduced by ObjectState, and ensures that deopt code
      with CAPTURED_OBJECT/DUPLICATED_OBJECT entries are
      generated similarly to what crankshaft's escape
      analysis does.
      
      Two unittests test correctness of the IR level implementation.
      
      Correctness for instruction selection / code generation
      is tested by mjsunit tests.
      
      R=jarin@chromium.org,mstarzinger@chromium.org
      BUG=v8:4586
      LOG=n
      
      Review URL: https://codereview.chromium.org/1485183002
      
      Cr-Commit-Position: refs/heads/master@{#33115}
      3b473d7a
    • sigurds's avatar
      [turbofan] Add performance counters for escape analysis · 89654538
      sigurds authored
      R=bmeurer@chromium.org
      BUG=v8:4586
      LOG=n
      
      Review URL: https://codereview.chromium.org/1559003002
      
      Cr-Commit-Position: refs/heads/master@{#33107}
      89654538
  21. 14 Dec, 2015 1 commit
    • sigurds's avatar
      [turbofan] Stabilize escape analysis (without deopt) · 3161c171
      sigurds authored
      Bugfixes and improvements in escape analysis include:
      
      * Handling of ObjectIsSmi (non-escaping)
      * Handling of nested phi replacements
      * Handling of phis with arity > 2
      * Resilience against effectful nodes dangling from start
      * Allocations escape now, if non-const load/store is performed
      * Fixed a bug where non-allocated objects where tracked
      * Allow fixed double arrays to be tracked
      
      R=mstarzinger@chromium.org
      BUG=v8:4586
      LOG=n
      
      Review URL: https://codereview.chromium.org/1510973006
      
      Cr-Commit-Position: refs/heads/master@{#32833}
      3161c171
  22. 07 Dec, 2015 1 commit
    • sigurds's avatar
      [turbofan] Improve escape analysis · 5b582114
      sigurds authored
      This patch improves escape analysis and fixes bugs
      triggered by clusterfuzz. Impovements include:
      * Handling of LoadElement/StoreElement if index is a
        constant
      * Handling of JSStoreProperty: invalidate all information,
        as the store could have altered any field.
      * Treat phis that use an allocation as escaping
      * Improve resolution of replacements
      
      R=mstarzinger@chromium.org
      BUG=v8:4586
      LOG=n
      
      Review URL: https://codereview.chromium.org/1499143002
      
      Cr-Commit-Position: refs/heads/master@{#32656}
      5b582114
  23. 02 Dec, 2015 2 commits