1. 25 Mar, 2020 1 commit
    • Seth Brenith's avatar
      Revert "Move branch inversion on ==0 into platform-agnostic reducer" · 252acd7f
      Seth Brenith authored
      This reverts commit 0c72c719.
      
      Reason for revert: Wasm code size increase because not all pipelines use CommonOperatorReducer
      
      Original change's description:
      > Move branch inversion on ==0 into platform-agnostic reducer
      > 
      > This change is based on a discussion from
      > https://crrev.com/c/v8/v8/+/2053769/4/src/compiler/machine-operator-reducer.cc#1696
      > wherein Tobias suggested moving the folding away of ==0 operations out
      > of the platform-specific instruction selectors and into the
      > MachineOperatorReducer. I noticed that CommonOperatorReducer already
      > handles some very similar cases, so I have tried putting the ==0 folding
      > into CommonOperatorReducer instead. I'm happy to move it into
      > MachineOperatorReducer if that's better; I still don't have a very good
      > understanding of how roles are separated among reducers.
      > 
      > Change-Id: Ia0285bd9fafeef29d87cc88654bd6d355d467e8f
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2076498
      > Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
      > Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
      > Reviewed-by: Clemens Backes <clemensb@chromium.org>
      > Reviewed-by: Georg Neis <neis@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#66688}
      
      # Not skipping CQ checks because original CL landed > 1 day ago.
      
      Bug: chromium:1061767
      Change-Id: Id1fdfb38357eb514d92ed3be0a683f077202faa4
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2117789
      Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#66862}
      252acd7f
  2. 12 Mar, 2020 1 commit
  3. 24 May, 2019 1 commit
  4. 06 May, 2019 1 commit
  5. 15 Oct, 2018 1 commit
  6. 17 Sep, 2018 1 commit
  7. 23 Jul, 2018 1 commit
  8. 10 Jul, 2018 1 commit
  9. 25 May, 2018 1 commit
  10. 01 Feb, 2018 1 commit
  11. 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
  12. 17 Oct, 2016 1 commit
  13. 18 May, 2016 1 commit
    • bmeurer's avatar
      [turbofan] Turn common Guard operator into simplified TypeGuard. · c5a71f02
      bmeurer authored
      The type guard should never be used after the effect/control
      linearization pass, so making it a simplified operator better
      expresses the intended use. Also this way none of the common
      operators actually has any dependency on the type system.
      
      Drive-by-fix: Properly print the type parameter to a TypeGuard operator.
      
      BUG=chromium:612142
      R=jarin@chromium.org
      
      Review-Url: https://codereview.chromium.org/1994503002
      Cr-Commit-Position: refs/heads/master@{#36304}
      c5a71f02
  14. 24 Feb, 2016 1 commit
  15. 30 Oct, 2015 1 commit
    • bmeurer's avatar
      [turbofan] Add support for storing to double fields. · 0df0e254
      bmeurer authored
      Adds new Guard[Type] common operator, which takes value and control
      inputs and records a guaranty that a certain value has a certain type
      in that control path.  This is some kind of ad-hoc SSI similar to what
      we have to do in Crankshaft in some places.
      
      Also introduces an ObjectIsNumber simplified operator, which checks
      whether a certain value is a number (either a Smi or a HeapNumber).
      
      This doesn't yet support transitioning stores to double fields, which
      require support for allocating mutable heap numbers.
      
      R=jarin@chromium.org
      BUG=v8:4470
      LOG=n
      
      Review URL: https://codereview.chromium.org/1420283009
      
      Cr-Commit-Position: refs/heads/master@{#31675}
      0df0e254
  16. 26 Jun, 2015 1 commit
  17. 23 Jun, 2015 1 commit
  18. 19 Jun, 2015 1 commit
    • bmeurer's avatar
      [turbofan] Proper dead code elimination as regular reducer. · 733a2463
      bmeurer authored
      The three different concerns that the ControlReducer used to deal with
      are now properly separated into
      
        a.) DeadCodeElimination, which is a regular AdvancedReducer, that
            propagates Dead via control edges,
        b.) CommonOperatorReducer, which does strength reduction on common
            operators (i.e. Branch, Phi, and friends), and
        c.) GraphTrimming, which removes dead->live edges from the graph.
      
      This will make it possible to run the DeadCodeElimination together with
      other passes that actually introduce Dead nodes, i.e. typed lowering;
      and it opens the door for general inlining without two stage fix point
      iteration.
      
      To make the DeadCodeElimination easier and more uniform, we basically
      reverted the introduction of DeadValue and DeadEffect, and changed the
      Dead operator to produce control, value and effect. Note however that
      this is not a requirement, but merely a way to make dead propagation
      easier and more uniform. We could always go back and decide to have
      different Dead operators if some other change requires that.
      
      Note that there are several additional opportunities for cleanup now,
      i.e. OSR deconstruction could be a regular reducer now, and we don't
      need to use TheHole as dead value marker in the GraphReducer. And we can
      actually run the dead code elimination together with the other passes
      instead of using separate passes over the graph.  We will do this in
      follow up CLs.
      
      R=jarin@chromium.org, mstarzinger@chromium.org
      
      Review URL: https://codereview.chromium.org/1193833002
      
      Cr-Commit-Position: refs/heads/master@{#29146}
      733a2463
  19. 18 Jun, 2015 1 commit
    • bmeurer's avatar
      [turbofan] Improve interplay of ControlReducer and CommonOperatorReducer. · 92e6bcf1
      bmeurer authored
      This turns the CommonOperatorReducer into an AdvancedReducer and makes
      it independent of JSGraph (which was used only because it was convienent),
      and let's the CommonOperatorReducer run together with the ControlReducer.
      
      The ControlReducer is still not able to run together with other reducers,
      but we're getting closer. The plan is to split the ControlReducer into
      two parts: The dead code elimination part and the common operator
      reduction part. This separation will help to avoid tricky bugs in the
      future and should make testing a *lot* easier.
      
      R=jarin@chromium.org
      
      Review URL: https://codereview.chromium.org/1192063002
      
      Cr-Commit-Position: refs/heads/master@{#29105}
      92e6bcf1
  20. 20 Apr, 2015 1 commit
  21. 08 Apr, 2015 1 commit
  22. 12 Mar, 2015 1 commit
  23. 22 Dec, 2014 1 commit
    • Benedikt Meurer's avatar
      [turbofan] Introduce CommonOperatorReducer. · ee98a1d7
      Benedikt Meurer authored
      The CommonOperatorReducer currently takes care of redundant Phis,
      EffectPhis and Selects. This functionality overlaps with ControlReducer,
      but is required to make certain optimizations effective, since the
      ControlReducer only runs really early and really late in the pipeline
      and therefore other reducers aren't reapplied properly after redundant
      phi/select elimination.
      
      TEST=unittests
      R=hpayer@chromium.org
      
      Review URL: https://codereview.chromium.org/817243003
      
      Cr-Commit-Position: refs/heads/master@{#25922}
      ee98a1d7
  24. 05 Dec, 2014 1 commit