1. 22 Apr, 2016 2 commits
    • bmeurer's avatar
      [turbofan] Move more type checks to the representation selector. · 550c0f9f
      bmeurer authored
      Get rid of further typing checks from ChangeLowering and put them into
      the representation selection pass instead (encoding the information in
      the operator instead).
      
      Drive-by-change: Rename ChangeSmiToInt32 to ChangeTaggedSignedToInt32
      for consistency about naming Tagged, TaggedSigned and TaggedPointer.
      
      R=jarin@chromium.org
      
      Review URL: https://codereview.chromium.org/1909343002
      
      Cr-Commit-Position: refs/heads/master@{#35723}
      550c0f9f
    • bmeurer's avatar
      [turbofan] Optimize tagged conversion based on type. · 861295bf
      bmeurer authored
      If we have to convert a float64 value to tagged representation and we
      already know that the value is either in Signed31/Signed32 or
      Unsigned32 range, then we can just convert the float64 to word32 and
      use the fast word32 to tagged conversion. Doing this in
      ChangeLowering (or the effect linearization pass) would be unsound, as
      the types on the nodes are no longer usable.
      
      This removes all Type uses from effect linearization. There's still some
      work to be done for ChangeLowering tho.
      
      R=jarin@chromium.org
      
      Review URL: https://codereview.chromium.org/1908093002
      
      Cr-Commit-Position: refs/heads/master@{#35713}
      861295bf
  2. 19 Apr, 2016 1 commit
  3. 18 Apr, 2016 1 commit
    • jarin's avatar
      [turbofan] Effect linearization after representation inference. · b9e287c6
      jarin authored
      This introduces a compiler pass that schedules the graph and re-wires effect chain according to the schedule. It also connects allocating representation changes to the effect chain, and removes the BeginRegion and EndRegion nodes - they should not be needed anymore because all effectful nodes should be already wired-in.
      
      This is an intermediate CL - the next step is to move lowering of the Change*ToTaggedEffect nodes to StateEffectIntroduction so that we do not have to introduce the effectful versions of nodes.
      
      Review URL: https://codereview.chromium.org/1849603002
      
      Cr-Commit-Position: refs/heads/master@{#35565}
      b9e287c6
  4. 16 Apr, 2016 1 commit
  5. 14 Apr, 2016 3 commits
  6. 08 Apr, 2016 1 commit
  7. 06 Apr, 2016 1 commit
  8. 05 Apr, 2016 1 commit
    • jarin's avatar
      [turbofan] Restrict types in load elimination. · 4142bc6b
      jarin authored
      In simplified numbering, we make sanity checks based on types (e.g.,
      NumberSubtract should take numbers as inputs), but this can be
      violated if optimization passes make types less precise.
      
      In this CL, we fix load elimination to make sure that types are
      smaller in the store -> load elimination by taking an intersection
      of the load's type with the store value's type and inserting a guard
      with that type. Note that the load type comes from type feedback, so
      it can be disjoint from the stored value type (in that case, this
      must be dead code because the map chack for the load should prevent
      us from using the stored value).
      
      BUG=chromium:599412
      LOG=n
      
      Review URL: https://codereview.chromium.org/1857133003
      
      Cr-Commit-Position: refs/heads/master@{#35259}
      4142bc6b
  9. 04 Apr, 2016 1 commit
    • titzer's avatar
      [turbofan] Handle dead diamonds in scheduling and add a test. · 45d75bca
      titzer authored
      The background here is that graphs generated from WASM are not trimmed.
      That means there can be some floating control diamonds that are not
      reachable from end. An assertion in the scheduler for phis from floating
      diamonds checks that the use edge in this situation is the control edge,
      but in general, any edge could cause this.
      
      Scheduling still works without this assertion. The longer term fix
      is to either trim the graphs (more compile time overhead for WASM)
      or improve the scheduler's handling of dead code in the graph. Currently
      it does not schedule dead code but the potential use positions of
      dead code are used in the computation of the common dominator of uses. We could
      recognize dead nodes in PrepareUses() and check in GetBlockForUse()
      as per TODO.
      
      R=bradnelson@chromium.org, mstarzinger@chromium.org
      BUG=
      
      Review URL: https://codereview.chromium.org/1846933002
      
      Cr-Commit-Position: refs/heads/master@{#35245}
      45d75bca
  10. 01 Apr, 2016 2 commits
  11. 31 Mar, 2016 1 commit
  12. 30 Mar, 2016 2 commits
    • ahaas's avatar
      [wasm] Int64Lowering of Int64Mul on ia32 and arm. · 40bdbef9
      ahaas authored
      Int64Mul is lowered to a new turbofan operator, Int32MulPair. The new
      operator takes 4 inputs an generates 2 outputs. The inputs are the low
      word of the left input, high word of the left input, the low word of the
      right input, and high word of the right input. The ouputs are the low
      and high word of the result of the multiplication.
      
      R=titzer@chromium.org, v8-arm-ports@googlegroups.com
      
      Review URL: https://codereview.chromium.org/1807273002
      
      Cr-Commit-Position: refs/heads/master@{#35131}
      40bdbef9
    • ahaas's avatar
      [wasm] New attempt to implement the Int64Lowering of phis. · 682df6dd
      ahaas authored
      The new implementation deals with cycles in the TF graph in two steps:
      1) The lowering of phis is delayed to avoid cyclic dependencies.
      2) The replacement nodes of phis are created already when the phi is
         pushed onto the stack so that other nodes can use these replacements
         for their lowering.
      
      R=titzer@chromium.org
      
      Review URL: https://codereview.chromium.org/1844553002
      
      Cr-Commit-Position: refs/heads/master@{#35126}
      682df6dd
  13. 28 Mar, 2016 1 commit
    • bmeurer's avatar
      [builtins] Provide Math.floor as TurboFan builtin. · 36ead519
      bmeurer authored
      This way we avoid the second deoptimization for the Math.floor and
      Math.ceil builtins when -0 is involved. We still deoptimize the inlined
      Crankshaft version in various cases, that's a separate issue.
      
      The algorithm used for implement CodeStubAssembler::Float64Floor is
      vaguely based on the fast math version used in the libm of various BSDs,
      but had to be reengineered to match the EcmaScript specification.
      
      R=epertoso@chromium.org
      BUG=v8:2890, v8:4059
      LOG=n
      
      Review URL: https://codereview.chromium.org/1828253002
      
      Cr-Commit-Position: refs/heads/master@{#35083}
      36ead519
  14. 22 Mar, 2016 2 commits
  15. 17 Mar, 2016 1 commit
  16. 16 Mar, 2016 3 commits
  17. 15 Mar, 2016 6 commits
  18. 14 Mar, 2016 1 commit
    • ahaas's avatar
      [wasm] Int64Lowering of Int64Add on ia32 and arm. · 1b230799
      ahaas authored
      Int64Add is lowered to a new turbofan operator, Int32AddPair. The new
      operator takes 4 inputs an generates 2 outputs. The inputs are the low
      word of the left input, high word of the left input, the low word of the
      right input, and high word of the right input. The ouputs are the low
      and high word of the result of the addition.
      
      R=titzer@chromium.org, v8-arm-ports@googlegroups.com
      
      Review URL: https://codereview.chromium.org/1778493004
      
      Cr-Commit-Position: refs/heads/master@{#34747}
      1b230799
  19. 10 Mar, 2016 1 commit
  20. 09 Mar, 2016 2 commits
  21. 08 Mar, 2016 3 commits
  22. 07 Mar, 2016 1 commit
    • ahaas's avatar
      [wasm] Int64Lowering of I64Shl on ia32. · ddc626e1
      ahaas authored
      I64Shl is lowered to a new turbofan operator, WasmWord64Shl. The new
      operator takes 3 inputs, the low-word input, the high-word input, and
      the shift, and produces 2 output, the low-word output and the high-word
      output.
      
      At the moment I implemented the lowering only for ia32, but I think the
      CL is already big enough. I will add the other platforms in separate
      CLs.
      
      R=titzer@chromium.org
      
      Review URL: https://codereview.chromium.org/1756863002
      
      Cr-Commit-Position: refs/heads/master@{#34546}
      ddc626e1
  23. 25 Feb, 2016 1 commit
  24. 24 Feb, 2016 1 commit