1. 25 Jan, 2016 1 commit
    • bmeurer's avatar
      [turbofan] Switch JSForInPrepare to %ForInPrepare style. · 825ece48
      bmeurer authored
      Now TurboFan always uses the newly introduced %ForInPrepare, no matter
      whether baseline is the interpreter or fullcodegen. For fullcodegen, we
      introduce a new PrepareId bailout point for this purpose.
      
      Drive-by-fix: Avoid the NoObservableSideEffectsScope in Crankshaft and
      use the PrepareId bailout point instead.
      
      R=jarin@chromium.org
      BUG=v8:3650
      LOG=n
      
      Review URL: https://codereview.chromium.org/1630523002
      
      Cr-Commit-Position: refs/heads/master@{#33480}
      825ece48
  2. 05 Jan, 2016 1 commit
  3. 18 Dec, 2015 1 commit
    • rmcilroy's avatar
      [Interpreter] Generate valid FrameStates in the Bytecode Graph Builder. · 32211800
      rmcilroy authored
      Adds FrameState nodes to graphs built by the Bytecode Graph Builder, in
      preparation for adding deopt support. Also adds a new
      FrameStateType::kInterpretedFunction to allow for specialized deopt
      stack translation for interpreted frames. Finally adds support for
      disabling typed lowering of binary ops, since the current approach
      relies on a FrameState hack which does not apply to interpreted frames
      
      BUG=v8:4280
      LOG=N
      
      Review URL: https://codereview.chromium.org/1514413002
      
      Cr-Commit-Position: refs/heads/master@{#32964}
      32211800
  4. 16 Dec, 2015 1 commit
    • bmeurer's avatar
      [turbofan] Add support for CreateIterResultObject. · 01662f1b
      bmeurer authored
      Introduce JSCreateIterResultObject operator, as a way to optimize the
      %_CreateIterResultObject intrinsic, which is used to provide uniform,
      non-polymorphic result objects for iterators (and generators).  We
      cannot utilize the existing JSCreate operator here, because there's no
      constructor function for iterator result objects (as required by the
      spec).
      
      R=mstarzinger@chromium.org
      
      Review URL: https://codereview.chromium.org/1531753002
      
      Cr-Commit-Position: refs/heads/master@{#32901}
      01662f1b
  5. 10 Dec, 2015 1 commit
  6. 09 Dec, 2015 1 commit
  7. 02 Dec, 2015 1 commit
    • bmeurer's avatar
      [turbofan] Desugar JSUnaryNot(x) to Select(x, false, true). · 411c5b7f
      bmeurer authored
      Also remove the ResultMode from ToBooleanStub and always return true or
      false and use the same mechanism in fullcodegen.  This is in preparation
      for adding ToBoolean hints to TurboFan.
      
      Drive-by-fix: We can use the power of the ToBooleanIC in TurboFan now
      that the ResultMode is gone (and the runtime always returns true or
      false from the miss handler).
      
      R=mstarzinger@chromium.org
      BUG=v8:4583
      LOG=n
      
      Review URL: https://codereview.chromium.org/1491223002
      
      Cr-Commit-Position: refs/heads/master@{#32524}
      411c5b7f
  8. 27 Nov, 2015 3 commits
  9. 24 Nov, 2015 2 commits
  10. 20 Nov, 2015 1 commit
    • bmeurer's avatar
      [turbofan] Initial support for Array constructor specialization. · aeb41de0
      bmeurer authored
      Introduce a JSCreateArray operator that represents the Array
      constructor, and lower call and construct calls to the Array
      constructor to JSCreateArray. Currently we don't yet replace
      that with an inline allocation, but always use the specialized
      stubs for the Array constructor.
      
      This saves a lot of unnecessary deopts and elements transitions
      because now we can actually consume the allocation site feedback
      for the transitions.
      
      R=mstarzinger@chromium.org
      BUG=v8:4470
      LOG=n
      
      Review URL: https://codereview.chromium.org/1466643002
      
      Cr-Commit-Position: refs/heads/master@{#32145}
      aeb41de0
  11. 12 Nov, 2015 1 commit
  12. 10 Nov, 2015 1 commit
    • sigurds's avatar
      [turbofan] Pseudo-inline 'instanceof' · 45787501
      sigurds authored
      This patch extends the typed lowering with a specialized version of 'instanceof' that is used if the "class", i.e. the constructor function, is a known constant.
      
      Unittests check that replacement occurs as intended. Functional correctness is ensured by extensive unit tests covering instanceof already in the testsuite.
      
      TESTS=unittests/JSTypedLoweringTest.{JSInstanceOfSpecializationWithSmiCheck,JSInstanceOfSpecializationWithoutSmiCheck,JSInstanceOfNoSpecialization}
      
      Review URL: https://codereview.chromium.org/1407413014
      
      Cr-Commit-Position: refs/heads/master@{#31916}
      45787501
  13. 02 Nov, 2015 1 commit
  14. 30 Oct, 2015 1 commit
  15. 28 Oct, 2015 2 commits
  16. 26 Oct, 2015 1 commit
    • mstarzinger's avatar
      [turbofan] Lower unmapped arguments objects in inline frame. · 0af58d24
      mstarzinger authored
      This lowers JSCreateArguments nodes within inline (i.e. non-outermost)
      frames that create "unmapped arguments objects" to inline allocations.
      
      The arguments count as well as each value is statically known and can be
      directly stored into the arguments object. Note that the object is still
      context-dependent and the map is loaded from the current context. The
      object size is not taken into account for now, we might want to limit it
      later though to keep code size bounded.
      
      R=jarin@chromium.org
      
      Review URL: https://codereview.chromium.org/1412113004
      
      Cr-Commit-Position: refs/heads/master@{#31550}
      0af58d24
  17. 19 Oct, 2015 1 commit
  18. 07 Oct, 2015 1 commit
  19. 02 Oct, 2015 1 commit
    • mstarzinger's avatar
      [turbofan] Call FastNewContextStub for function context. · ea264012
      mstarzinger authored
      This lowers JSCreateFunctionContext nodes to call the above stub for
      help with allocating function contexts when possible. It also contains
      an implementation for inlined allocations of such contexts, which is
      still behind a flag until inlined allocations are ready for prime time.
      
      TEST=unittests/JSTypedLoweringTest.JSCreateFunctionContext
      R=mvstanton@chromium.org
      
      Review URL: https://codereview.chromium.org/1380113002
      
      Cr-Commit-Position: refs/heads/master@{#31068}
      ea264012
  20. 24 Sep, 2015 1 commit
  21. 13 Jul, 2015 1 commit
  22. 08 Jul, 2015 2 commits
  23. 03 Jul, 2015 1 commit
    • bmeurer's avatar
      [turbofan] Right hand side of shifts needs ToUint32. · 5f288c20
      bmeurer authored
      Currently we lower shifts directly to machine operators, and add an
      appropriate Word32And to implement the & 0x1F operation on the right
      hand side required by the specification. However for Word32And we assume
      Int32 in simplified lowering, which is basically changes the right hand
      side bit interpretation for the shifts from Uint32 to Int32, which is
      obviously wrong. So now we represent that explicitly by proper
      simplified operators for the shifts, which are lowered to machine in
      simplified lowering.
      
      R=jarin@chromium.org
      
      Review URL: https://codereview.chromium.org/1213803008
      
      Cr-Commit-Position: refs/heads/master@{#29465}
      5f288c20
  24. 23 Jun, 2015 1 commit
  25. 15 Jun, 2015 1 commit
    • bmeurer's avatar
      [turbofan] Remove the TryLowerDirectJSCall hack from generic lowering. · 6e5b9ffe
      bmeurer authored
      The TryLowerDirectJSCall method tried to lower to a direct JavaScript
      function call depending on the type of the receiver, but only if the
      target is a cosntant JSFunction. Since this depends on types and is not
      required for correctness, it shouldn't be part of generic lowering
      anyway. So this functionality was moved to typed lowering instead, and
      we use proper types for the target instead.
      
      R=mstarzinger@chromium.org
      
      Review URL: https://codereview.chromium.org/1182193005
      
      Cr-Commit-Position: refs/heads/master@{#29028}
      6e5b9ffe
  26. 08 Jun, 2015 1 commit
  27. 03 Jun, 2015 1 commit
  28. 02 Jun, 2015 2 commits
  29. 01 Jun, 2015 1 commit
  30. 19 May, 2015 1 commit
  31. 13 May, 2015 1 commit
  32. 08 May, 2015 1 commit
  33. 04 May, 2015 1 commit
  34. 27 Apr, 2015 1 commit