1. 17 Aug, 2017 3 commits
    • Ross McIlroy's avatar
      Reland "[Compiler] Remove CompileDebugCode and EnsureBytecode and replace with Compile" · 73ec5598
      Ross McIlroy authored
      This is a reland of 21da12a9
      Original change's description:
      > [Compiler] Remove CompileDebugCode and EnsureBytecode and replace with Compile
      > 
      > Removes the Compiler::CompileDebugCode and Compiler::EnsureBytecode functions
      > and replaces them with a Compiler::Compile(Handle<SharedFunctionInfo> shared)
      > function. The code in compiler.cc is refactored to use this function to compile
      > the SharedFunctionInfo when compiling a JSFunction.
      > 
      > Also does some other cleanup:
      >  - Removes CompileUnoptimizedFunction and inlines into new Compiler function
      >  - Moves code to create top level SharedFunctionInfo into CompilerTopLevel and
      >    out of FinalizeUnoptimizedCompile.
      > 
      > BUG=v8:6409
      > 
      > Change-Id: Ic54afcd8eb005c17f3ae6b2355060846e3091ca3
      > Reviewed-on: https://chromium-review.googlesource.com/613760
      > Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
      > Reviewed-by: Leszek Swirski <leszeks@chromium.org>
      > Reviewed-by: Yang Guo <yangguo@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#47394}
      
      TBR=yangguo@chromium.org
      TBR=jarin@chromium.org
      
      Bug: v8:6409
      Change-Id: If2eae66a85f129e746a5ca5c04935540f3f86b04
      Reviewed-on: https://chromium-review.googlesource.com/618886Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47399}
      73ec5598
    • Ross McIlroy's avatar
      Revert "[Compiler] Remove CompileDebugCode and EnsureBytecode and replace with Compile" · 0f40415b
      Ross McIlroy authored
      This reverts commit 21da12a9.
      
      Reason for revert: Failing on arm64 simulator
      
      Original change's description:
      > [Compiler] Remove CompileDebugCode and EnsureBytecode and replace with Compile
      > 
      > Removes the Compiler::CompileDebugCode and Compiler::EnsureBytecode functions
      > and replaces them with a Compiler::Compile(Handle<SharedFunctionInfo> shared)
      > function. The code in compiler.cc is refactored to use this function to compile
      > the SharedFunctionInfo when compiling a JSFunction.
      > 
      > Also does some other cleanup:
      >  - Removes CompileUnoptimizedFunction and inlines into new Compiler function
      >  - Moves code to create top level SharedFunctionInfo into CompilerTopLevel and
      >    out of FinalizeUnoptimizedCompile.
      > 
      > BUG=v8:6409
      > 
      > Change-Id: Ic54afcd8eb005c17f3ae6b2355060846e3091ca3
      > Reviewed-on: https://chromium-review.googlesource.com/613760
      > Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
      > Reviewed-by: Leszek Swirski <leszeks@chromium.org>
      > Reviewed-by: Yang Guo <yangguo@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#47394}
      
      TBR=rmcilroy@chromium.org,yangguo@chromium.org,jarin@chromium.org,leszeks@chromium.org
      
      Change-Id: I4ba63e82417a185f1528ff2633eb6c8872fbbfe5
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:6409
      Reviewed-on: https://chromium-review.googlesource.com/618687Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47397}
      0f40415b
    • Ross McIlroy's avatar
      [Compiler] Remove CompileDebugCode and EnsureBytecode and replace with Compile · 21da12a9
      Ross McIlroy authored
      Removes the Compiler::CompileDebugCode and Compiler::EnsureBytecode functions
      and replaces them with a Compiler::Compile(Handle<SharedFunctionInfo> shared)
      function. The code in compiler.cc is refactored to use this function to compile
      the SharedFunctionInfo when compiling a JSFunction.
      
      Also does some other cleanup:
       - Removes CompileUnoptimizedFunction and inlines into new Compiler function
       - Moves code to create top level SharedFunctionInfo into CompilerTopLevel and
         out of FinalizeUnoptimizedCompile.
      
      BUG=v8:6409
      
      Change-Id: Ic54afcd8eb005c17f3ae6b2355060846e3091ca3
      Reviewed-on: https://chromium-review.googlesource.com/613760
      Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47394}
      21da12a9
  2. 10 Aug, 2017 1 commit
  3. 09 Aug, 2017 2 commits
  4. 04 Aug, 2017 1 commit
  5. 03 Aug, 2017 1 commit
  6. 01 Aug, 2017 1 commit
    • jgruber's avatar
      Reland "[builtins] Remove Builtins::Name() accessors" · fcaa2c2e
      jgruber authored
      This is a reland of 2f79e035
      Original change's description:
      > [builtins] Remove Builtins::Name() accessors
      > 
      > Instead of auto-generating the Name() convenience accessor, use a macro to
      > avoid wasting code space.
      > 
      >   BUILTIN_CODE(isolate, Name)
      > 
      > expands to
      > 
      >   isolate->builtins()->builtin_handle(Builtins::kName);
      > 
      > This reduces the size of libv8.so by 134,752 bytes on a x64 release build.
      > 
      > Bug: v8:6624
      > Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      > Change-Id: Idff7ee5c45e344e73412c0f47e92553c7c7ff75f
      > Reviewed-on: https://chromium-review.googlesource.com/593607
      > Reviewed-by: Andreas Haas <ahaas@chromium.org>
      > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
      > Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#47010}
      
      TBR=bmeurer@chromium.org,ahaas@chromium.org
      
      Bug: v8:6624
      Change-Id: I4733731e56dc8873ee06c2b36cac1918c0a658b2
      Reviewed-on: https://chromium-review.googlesource.com/594087
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47037}
      fcaa2c2e
  7. 31 Jul, 2017 2 commits
    • Jakob Gruber's avatar
      Revert "[builtins] Remove Builtins::Name() accessors" · 17a26c0b
      Jakob Gruber authored
      This reverts commit 2f79e035.
      
      Reason for revert: Conflicts with successor CL.
      
      Original change's description:
      > [builtins] Remove Builtins::Name() accessors
      > 
      > Instead of auto-generating the Name() convenience accessor, use a macro to
      > avoid wasting code space.
      > 
      >   BUILTIN_CODE(isolate, Name)
      > 
      > expands to
      > 
      >   isolate->builtins()->builtin_handle(Builtins::kName);
      > 
      > This reduces the size of libv8.so by 134,752 bytes on a x64 release build.
      > 
      > Bug: v8:6624
      > Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      > Change-Id: Idff7ee5c45e344e73412c0f47e92553c7c7ff75f
      > Reviewed-on: https://chromium-review.googlesource.com/593607
      > Reviewed-by: Andreas Haas <ahaas@chromium.org>
      > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
      > Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#47010}
      
      TBR=yangguo@chromium.org,ahaas@chromium.org,jgruber@chromium.org,bmeurer@chromium.org
      
      Change-Id: Ia9ef5c755b26c3f4e143d87a7c51033614ea435e
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:6624
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Reviewed-on: https://chromium-review.googlesource.com/594048Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47012}
      17a26c0b
    • jgruber's avatar
      [builtins] Remove Builtins::Name() accessors · 2f79e035
      jgruber authored
      Instead of auto-generating the Name() convenience accessor, use a macro to
      avoid wasting code space.
      
        BUILTIN_CODE(isolate, Name)
      
      expands to
      
        isolate->builtins()->builtin_handle(Builtins::kName);
      
      This reduces the size of libv8.so by 134,752 bytes on a x64 release build.
      
      Bug: v8:6624
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: Idff7ee5c45e344e73412c0f47e92553c7c7ff75f
      Reviewed-on: https://chromium-review.googlesource.com/593607Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47010}
      2f79e035
  8. 26 Jul, 2017 1 commit
  9. 21 Jul, 2017 2 commits
    • Ross McIlroy's avatar
      Revert "[Turbofan] Merged the OSR phase into the graph building phase." · 5d0a4327
      Ross McIlroy authored
      This reverts commit 69c8f16d.
      
      Reason for revert: Causing crashes on Clusterfuzz - http://crbug.com/747154
      
      BUG=chromium:747154
      
      Original change's description:
      > [Turbofan] Merged the OSR phase into the graph building phase.
      > 
      > Now the OSR phase is only used when OSRing from the ast graph builder.
      > When OSRing from Turbofan, the implementation is now in the graph
      > building phase, at the beginning of the VisitBytecode function.
      > We are no longer generating any OSRLoopEntry or OSRNormalEntry nodes,
      > nor nodes for the possible code of the OSRed function which is before
      > the OSRed loops.
      > 
      > The trimming and reducing of the OSR phase is not done either. This
      > change in the way the way the OSR is done enabled to remove the
      > workaround to the bug mentioned below.
      > 
      > Bug: v8:6112
      > Bug: v8:6518
      > Change-Id: I1c9231810b923486d55ea618d550d981d695d797
      > Reviewed-on: https://chromium-review.googlesource.com/543042
      > Commit-Queue: Alexandre Talon <alexandret@google.com>
      > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
      > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#46801}
      
      TBR=rmcilroy@chromium.org,mstarzinger@chromium.org,leszeks@chromium.org,alexandret@google.com
      
      Change-Id: Ifa9bf5d86e888a47cad7fb10446b36fda5029604
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:6112, v8:6518
      Reviewed-on: https://chromium-review.googlesource.com/581288Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#46817}
      5d0a4327
    • Ross McIlroy's avatar
      [Compiler] Remove SharedFunctionInfo from ParseInfo. · c179400b
      Ross McIlroy authored
      Removes the SharedFunctionInfo field from the ParseInfo structure. Instead
      require a SharedFunctionInfo to be explicitly passed to ParseFunction.
      Also renames GetUnoptimizedCode to CompileUnoptimizedFunction to make it
      clear it should only be called for non-top-level code.
      
      BUG=v8:5203
      
      Change-Id: Ibce016e6a5290c3685f7f0a2f5fb1eb2df2ffc3b
      Reviewed-on: https://chromium-review.googlesource.com/574589
      Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Reviewed-by: 's avatarAdam Klein <adamk@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#46814}
      c179400b
  10. 20 Jul, 2017 1 commit
    • Alexandre Talon's avatar
      [Turbofan] Merged the OSR phase into the graph building phase. · 69c8f16d
      Alexandre Talon authored
      Now the OSR phase is only used when OSRing from the ast graph builder.
      When OSRing from Turbofan, the implementation is now in the graph
      building phase, at the beginning of the VisitBytecode function.
      We are no longer generating any OSRLoopEntry or OSRNormalEntry nodes,
      nor nodes for the possible code of the OSRed function which is before
      the OSRed loops.
      
      The trimming and reducing of the OSR phase is not done either. This
      change in the way the way the OSR is done enabled to remove the
      workaround to the bug mentioned below.
      
      Bug: v8:6112
      Bug: v8:6518
      Change-Id: I1c9231810b923486d55ea618d550d981d695d797
      Reviewed-on: https://chromium-review.googlesource.com/543042
      Commit-Queue: Alexandre Talon <alexandret@google.com>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#46801}
      69c8f16d
  11. 13 Jul, 2017 1 commit
  12. 08 Jun, 2017 1 commit
  13. 06 Jun, 2017 1 commit
  14. 31 May, 2017 1 commit
    • jgruber's avatar
      [debug] Untangle DebugInfo from break point support · d3371c23
      jgruber authored
      DebugInfo was very closely tied to break point support:
      * It contained only information relevant to break points.
      * It was created and freed by break point implementation.
      * Existence of a DebugInfo on the shared function info implied existence of
        break points.
      
      This CL is a step towards making DebugInfo usable by other debugging
      functionality such as block coverage by decoupling it from break point support,
      which is now only one kind of information stored on the DebugInfo object.
      
      BUG=v8:6000
      
      Review-Url: https://codereview.chromium.org/2909893002
      Cr-Commit-Position: refs/heads/master@{#45640}
      d3371c23
  15. 29 May, 2017 1 commit
  16. 19 May, 2017 1 commit
  17. 10 May, 2017 1 commit
  18. 03 May, 2017 1 commit
    • bmeurer's avatar
      [turbofan] Introduce dedicated CallFrequency class. · 23ee7431
      bmeurer authored
      When we don't know the call count for a given call site (i.e. for
      inlined accessors), we put 0 as call frequency so far. But as of
      https://codereview.chromium.org/2859433002, this would completely
      disable the inlining of those calls, since 0 is interpreted as never
      called, which is not what we want. So instead of defaulting to 0,
      add a dedicated sentinel, whose value is NaN, which makes the call
      site eligible for inlining, but not high priority (as it was before
      the CL mentioned above).
      
      BUG=v8:4493,v8:5267
      R=jarin@chromium.org
      
      Review-Url: https://codereview.chromium.org/2856103002
      Cr-Commit-Position: refs/heads/master@{#45053}
      23ee7431
  19. 25 Apr, 2017 1 commit
  20. 12 Apr, 2017 2 commits
  21. 30 Mar, 2017 1 commit
  22. 27 Mar, 2017 1 commit
  23. 17 Mar, 2017 1 commit
  24. 15 Mar, 2017 1 commit
    • Michael Starzinger's avatar
      [turbofan] Elide redundant {IfSuccess} control projections. · 6fca2cfa
      Michael Starzinger authored
      This changes the IR to no longer require single {IfSuccess} projection
      nodes unless there is a corresponding {IfException} node that links the
      potentially throwing call to an exception handler. This reduces graph
      size as well as compilation time when exception handlers aren't present.
      
      The new invariant for potentially throwing nodes is: Nodes that can
      potentially throw either have both IfSuccess/IfException projections as
      the only control uses and no direct control uses, or no projections at
      all and solely direct control uses.
      
      R=jarin@chromium.org
      
      Change-Id: I3d9cd816d74ad5af13e0673da7ec7a98f1ecdc7e
      Reviewed-on: https://chromium-review.googlesource.com/449715
      Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#43814}
      6fca2cfa
  25. 02 Mar, 2017 1 commit
  26. 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
  27. 17 Feb, 2017 1 commit
  28. 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
  29. 10 Feb, 2017 1 commit
    • rmcilroy's avatar
      [Compiler] Enable use of seperate zones for parsing and compiling. · 1fc93f2e
      rmcilroy authored
      In order to allow parallel compilation of eager inner functions, we need to
      seperate the zone used for parsing (which will be shared between all the
      parallel compile jobs) and the zone used for compilation. This CL changes
      CompilationInfo to require a zone (which can be different from the zone in
      ParseInfo). We then seal the ParseInfo zone after parsing and analysis is done
      to prevent any further allocation in that zone, so that it can be shared
      (read-only) with the parallel compile jobs.
      
      BUG=v8:5203
      
      Review-Url: https://codereview.chromium.org/2645403002
      Cr-Commit-Position: refs/heads/master@{#43089}
      1fc93f2e
  30. 07 Feb, 2017 5 commits