1. 24 Feb, 2016 1 commit
  2. 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
  3. 26 Jun, 2015 1 commit
  4. 23 Jun, 2015 1 commit
  5. 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
  6. 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
  7. 20 Apr, 2015 1 commit
  8. 08 Apr, 2015 1 commit
  9. 12 Mar, 2015 1 commit
  10. 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
  11. 05 Dec, 2014 1 commit