1. 21 Feb, 2017 1 commit
  2. 15 Feb, 2017 1 commit
  3. 14 Feb, 2017 1 commit
    • vabr's avatar
      Fix TypeError message for Reflect.construct · b478e9c1
      vabr authored
      If the Reflect.construct receives an argument expected to be a constructor,
      and the argument is not a constructor, V8 currently declares that
      Reflect.construct is not a function. It should instead say that the offending
      argument is not a constructor.
      
      This is the case for all ports of builtins
      (Builtins::Generate_ReflectConstruct). All of them make an
      attempt to at least pass the right argument to the TypeError parametrised
      message, calling out the offending Reflect.construct argument. However,
      Runtime::kThrowCalledNonCallable extracts the callsite from those arguments,
      discarding the precise information.
      
      This CL adds Runtime::kNotConstructor, which reports the arguments passed
      to it, and the CL also modifies the ports of builtins to make use of
      Runtime::kNotConstructor
      
      BUG=v8:5671
      
      Review-Url: https://codereview.chromium.org/2688393003
      Cr-Commit-Position: refs/heads/master@{#43182}
      b478e9c1
  4. 13 Feb, 2017 1 commit
    • Michael Starzinger's avatar
      [turbofan] Correct lazy deopt by {JSCreate} operation. · 6ee0b6ce
      Michael Starzinger authored
      This adds support for deoptimizing into the JSConstructStub after the
      receiver instantiation but before the actual constructor invocation.
      Such a deoptimization point is needed for cases where instantiation
      might be observed (e.g. when new.target is a proxy) and hence might
      trigger a deopt.
      
      We use this new deoptimization point for the "after" frame-state the
      inliner attaches to {JSCreate} nodes being inserted when constructor
      calls are being inlined.
      
      R=jarin@chromium.org
      TEST=mjsunit/regress/regress-5638b
      BUG=v8:5638
      
      Change-Id: I7c72c807ee8fb76d12e0e9ccab86d970ab1a0efd
      Reviewed-on: https://chromium-review.googlesource.com/440125Reviewed-by: 's avatarHannes Payer <hpayer@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#43149}
      6ee0b6ce
  5. 07 Feb, 2017 1 commit
  6. 06 Feb, 2017 1 commit
    • mvstanton's avatar
      [TypeFeedbackVector] Root feedback vectors at function literal site. · aea3ce3d
      mvstanton authored
      TypeFeedbackVectors are strongly rooted by a closure. However, in modern
      JavaScript closures are created and abandoned more freely. An important
      closure may not be present in the root-set at time of garbage collection,
      even though we've cached optimized code and use it regularly. For
      example, consider leaf functions in an event dispatching system. They may
      well be "hot," but tragically non-present when we collect the heap.
      
      Until now, we've relied on a weak root to cache the feedback vector in
      this case. Since there is no way to signal intent or relative importance,
      this weak root is as susceptible to clearing as any other weak root at
      garbage collection time.
      
      Meanwhile, the feedback vector has become more important. All of our
      ICs store their data there. Literal and regex boilerplates are stored there.
      If we lose the vector, then we not only lose optimized code built from
      it, we also lose the very feedback which allowed us to create that optimized
      code. Therefore it's vital to express that dependency through the root
      set.
      
      This CL does this by creating a strong link to a feedback
      vector at the instantiation site of the function closure.
      This instantiation site is in the code and feedback vector
      of the outer closure.
      
      BUG=v8:5456
      
      Review-Url: https://codereview.chromium.org/2674593003
      Cr-Commit-Position: refs/heads/master@{#42953}
      aea3ce3d
  7. 30 Jan, 2017 2 commits
  8. 26 Jan, 2017 1 commit
    • 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
  9. 25 Jan, 2017 1 commit
  10. 24 Jan, 2017 1 commit
  11. 23 Jan, 2017 1 commit
  12. 20 Jan, 2017 1 commit
  13. 19 Jan, 2017 3 commits
  14. 18 Jan, 2017 2 commits
  15. 17 Jan, 2017 3 commits
  16. 12 Jan, 2017 4 commits
  17. 03 Jan, 2017 1 commit
    • rmcilroy's avatar
      [Ignition] Teach CompileLazy about interpreted functions. · 72c37076
      rmcilroy authored
      Currently the CompileLazy builtin checks the SFI expliciltly for FCG code. This means
      if the SFI has bytecode we have to go through to the runtime to install the
      interpreter entry trampoline into the JSFunction object.
      
      Modify the builtin to always put the SFI code object into the JSFunction unless it's
      the lazy compile stub on the SFI as well.
      
      BUG=v8:4380
      
      Review-Url: https://codereview.chromium.org/2583693003
      Cr-Commit-Position: refs/heads/master@{#42034}
      72c37076
  18. 29 Dec, 2016 1 commit
  19. 22 Dec, 2016 1 commit
  20. 21 Dec, 2016 1 commit
    • mvstanton's avatar
      [TypeFeedbackVector] Root literal arrays in function literals slots · 93df0940
      mvstanton authored
      Literal arrays and feedback vectors for a function can be garbage
      collected if we don't have a rooted closure for the function, which
      happens often. It's expensive to come back from this (recreating
      boilerplates and gathering feedback again), and the cost is
      disproportionate if the function was inlined into optimized code.
      
      To guard against losing these arrays when we need them, we'll now
      create literal arrays when creating the feedback vector for the outer
      closure, and root them strongly in that vector.
      
      BUG=v8:5456
      
      Review-Url: https://codereview.chromium.org/2504153002
      Cr-Commit-Position: refs/heads/master@{#41893}
      93df0940
  21. 08 Dec, 2016 2 commits
  22. 07 Dec, 2016 1 commit
  23. 06 Dec, 2016 1 commit
  24. 05 Dec, 2016 1 commit
  25. 29 Nov, 2016 2 commits
  26. 21 Nov, 2016 1 commit
    • mstarzinger's avatar
      [fullcodegen] Remove deprecated generator implementation. · 09255541
      mstarzinger authored
      This removes the deprecated generator support for resumable functions
      from {FullCodeGenerator}. The existing {AstNumbering} heuristic already
      triggers Ignition for most resumable functions, with this change we make
      said heuristic a hard choice and remove the deprecated code. This also
      has the advantage that any suspended {JSGeneratorObject} instance on the
      heap is guaranteed to have code based on a bytecode array.
      
      R=bmeurer@chromium.org
      
      Review-Url: https://codereview.chromium.org/2504223002
      Cr-Commit-Position: refs/heads/master@{#41135}
      09255541
  27. 10 Nov, 2016 1 commit
    • mstarzinger's avatar
      [turbofan] Advance bytecode offset after lazy deopt. · 93c65952
      mstarzinger authored
      This changes {FrameState} nodes modeling "after" states to use bytecode
      offsets pointing to the deoptimizing bytecode. This is in sync with the
      normal execution, as the bytecode offset is advanced after operations
      complete in regular bytecode handlers.
      
      The change is necessary to ensure lazy deoptimized frames contain an
      accurate bytecode offset while they are on the stack. Such frames can be
      inspected by various stack walks. The continuation builtin will advance
      the bytecode offset upon return.
      
      R=jarin@chromium.org
      TEST=mjsunit/regress/regress-crbug-660379
      BUG=chromium:660379
      
      Review-Url: https://codereview.chromium.org/2487173002
      Cr-Commit-Position: refs/heads/master@{#40887}
      93c65952
  28. 04 Nov, 2016 1 commit
    • mstarzinger's avatar
      [compiler] Remove --ignition-preserve-bytecode flag. · 01219881
      mstarzinger authored
      This removes the deprecated flag in question which has been enabled by
      default a while ago. All components can by now deal with activations of
      a single function being mixed between Ignition and other compilers. The
      maintenance overhead to support a mode that clears bytecode is no longer
      warranted.
      
      R=rmcilroy@chromium.org
      BUG=v8:4280
      
      Review-Url: https://codereview.chromium.org/2475203003
      Cr-Commit-Position: refs/heads/master@{#40776}
      01219881
  29. 27 Oct, 2016 1 commit