1. 30 Mar, 2017 1 commit
  2. 29 Mar, 2017 1 commit
  3. 15 Mar, 2017 1 commit
    • bmeurer's avatar
      [turbofan] Skip JSCallReducer and JSNativeContextSpecialization on asm.js. · 94b33165
      bmeurer authored
      For the old asm.js pipeline, there's no point in running either the
      JSCallReducer or the JSNativeContextSpecialization, as both will not
      kick in for any asm.js relevant code.
      
      So remove the kDeoptimizationEnabled flag from both of them and just
      run them on regular JavaScript only.
      
      Drive-by-fix: Slightly rearrange keyed access to String receivers in the
      JSNativeContextSpecialization::ReduceKeyedAccess method to access constant
      characters independent of the IC mode (as long as the constant index is
      within the range of the receiver).
      
      BUG=v8:5267
      R=jarin@chromium.org
      
      Review-Url: https://codereview.chromium.org/2743253002
      Cr-Commit-Position: refs/heads/master@{#43813}
      94b33165
  4. 06 Mar, 2017 1 commit
  5. 03 Mar, 2017 1 commit
  6. 28 Feb, 2017 1 commit
    • 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
  7. 27 Feb, 2017 1 commit
    • bmeurer's avatar
      [turbofan] Make sure that CallIC feedback actually helps. · eb5f06de
      bmeurer authored
      Don't just blindly bake in CallIC feedback in the JSCallReducer,
      but instead try to estimate first whether it makes sense to bake
      it in (and risk potential eager deoptimization exits). We already
      didn't use the CallIC feedback when the call target is a known
      constant, but we should also not use it if the target is a
      JSCreateClosure node or a Phi of known constants / JSCreateClosure
      nodes.
      
      R=jarin@chromium.org
      BUG=v8:5267
      
      Review-Url: https://codereview.chromium.org/2721483003
      Cr-Commit-Position: refs/heads/master@{#43443}
      eb5f06de
  8. 22 Feb, 2017 1 commit
  9. 20 Feb, 2017 1 commit
    • bmeurer's avatar
      [turbofan] Unify NodeProperties::InferReceiverMaps. · fc331225
      bmeurer authored
      Unify the three different implementations of InferReceiverMaps, which
      were basically copy&paste with slightly different optimizations applied
      later into a single NodeProperties::InferReceiverMaps helper, which also
      returns a ZoneHandleSet of maps, rather than only a single map.
      
      BUG=v8:5267
      R=jarin@chromium.org
      
      Review-Url: https://codereview.chromium.org/2703133003
      Cr-Commit-Position: refs/heads/master@{#43318}
      fc331225
  10. 08 Feb, 2017 1 commit
  11. 07 Feb, 2017 1 commit
  12. 03 Feb, 2017 1 commit
  13. 02 Feb, 2017 1 commit
  14. 01 Feb, 2017 2 commits
  15. 30 Jan, 2017 1 commit
  16. 26 Jan, 2017 2 commits
    • bmeurer's avatar
      [turbofan] Don't try to optimize tail calls to .apply. · 7be3b4c9
      bmeurer authored
      BUG=chromium:685634
      R=ishell@chromium.org
      
      Review-Url: https://codereview.chromium.org/2658853002
      Cr-Commit-Position: refs/heads/master@{#42713}
      7be3b4c9
    • bmeurer's avatar
      [turbofan] Introduce JSCallForwardVarargs operator. · 69747e26
      bmeurer authored
      We turn a JSCallFunction node for
      
        f.apply(receiver, arguments)
      
      into a JSCallForwardVarargs node, when the arguments refers to the
      arguments of the outermost optimized code object, i.e. not an inlined
      arguments, and the apply method refers to Function.prototype.apply,
      and there's no other user of arguments except in frame states.
      
      We also replace the arguments node in the graph with a marker for
      the Deoptimizer similar to Crankshaft to make sure we don't materialize
      unused arguments just for the sake of deoptimization. We plan to replace
      this with a saner EscapeAnalysis based solution soon.
      
      R=jarin@chromium.org
      BUG=v8:5267,v8:5726
      
      Review-Url: https://codereview.chromium.org/2655233002
      Cr-Commit-Position: refs/heads/master@{#42680}
      69747e26
  17. 25 Jan, 2017 1 commit
  18. 18 Jan, 2017 1 commit
  19. 09 Jan, 2017 1 commit
  20. 22 Dec, 2016 1 commit
  21. 20 Dec, 2016 1 commit
  22. 08 Dec, 2016 1 commit
  23. 29 Nov, 2016 1 commit
    • bmeurer's avatar
      [turbofan] Also optimize instanceof with bound functions. · 719d6c1d
      bmeurer authored
      For bound functions on the right-hand side of instanceof we can
      constant-fold to the actual [[BoundTargetFunction]], actually
      instance OrdinaryHasInstance. Move the Function.prototype[@@hasInstance]
      reduction up to the JSCallReducer to allow this optimization to become
      effective (and also enable other optimizations).
      
      BUG=v8:5267
      R=jarin@chromium.org
      
      Review-Url: https://codereview.chromium.org/2537763002
      Cr-Commit-Position: refs/heads/master@{#41352}
      719d6c1d
  24. 23 Nov, 2016 1 commit
  25. 07 Nov, 2016 1 commit
    • bmeurer's avatar
      [turbofan] Properly rename receiver on CheckHeapObject. · a758c197
      bmeurer authored
      We need to rename the receiver on CheckHeapObject, because we
      don't canonicalize numbers in SignedSmall range, and thus we
      the representation selection can hand out TaggedSigned values
      for receiver uses, even though we checked for TaggedPointerness
      first.
      
      Note that this is rather hacky and just intended to fix the bug
      ASAP. We need to think about how to deal with representations in
      earlier compilation stages.
      
      BUG=chromium:662410
      R=jarin@chromium.org
      
      Review-Url: https://codereview.chromium.org/2485563002
      Cr-Commit-Position: refs/heads/master@{#40792}
      a758c197
  26. 17 Oct, 2016 1 commit
  27. 10 Oct, 2016 1 commit
    • bmeurer's avatar
      [turbofan] Enforce native context specialization. · f6bd23f2
      bmeurer authored
      There were once plans to generate cross-context code with TurboFan,
      however that doesn't fit into the model anymore, and so all of this
      is essentially dead untested code (and thus most likely already broken
      in subtle ways). With this mode still in place it would also be a lot
      harder to make inlining based on SharedFunctionInfo work.
      
      BUG=v8:2206,v8:5499
      R=jarin@chromium.org
      
      Review-Url: https://codereview.chromium.org/2406803002
      Cr-Commit-Position: refs/heads/master@{#40109}
      f6bd23f2
  28. 22 Sep, 2016 1 commit
  29. 14 Sep, 2016 2 commits
  30. 08 Aug, 2016 1 commit
  31. 03 Aug, 2016 1 commit
  32. 30 Jun, 2016 1 commit
    • bmeurer's avatar
      [turbofan] Introduce CheckIf simplified operator. · 483291d2
      bmeurer authored
      This adds a new CheckIf operator and changes all direct uses of
      DeoptimizeIf and DeoptimizeUnless on the JavaScript level to use
      CheckIf (or one of the more concrete check operators) instead.
      This way we do not depend on particular frame states, but the
      effect/control linearizer will assign an appropriate frame
      state instead.
      
      R=jarin@chromium.org
      BUG=v8:5141
      
      Review-Url: https://codereview.chromium.org/2115513002
      Cr-Commit-Position: refs/heads/master@{#37423}
      483291d2
  33. 16 Jun, 2016 1 commit
  34. 14 Jun, 2016 1 commit
  35. 13 Jun, 2016 2 commits
  36. 06 Jun, 2016 1 commit