1. 17 Mar, 2015 1 commit
    • jarin's avatar
      [turbofan] Variable liveness analysis for deopt. · ca3abde2
      jarin authored
      This change introduces a liveness analyzer for local variables in frame states.
      
      The main idea is to use the AstGraphBuilder::Environment class to build the control flow graph, and record local variable loads, stores and checkpoints in the CFG basic blocks (LivenessAnalyzerBlock class).
      
      After the graph building finishes, we run a simple data flow analysis over the CFG to figure out liveness of each local variable at each checkpoint. Finally, we run a pass over all the checkpoints and replace dead local variables in the frame states with the 'undefined' value.
      
      Performance numbers for Embenchen are below.
      
      ----------- box2d.js
      Current --turbo-deoptimization: EmbenchenBox2d(RunTime): 11265 ms.
      d8-master --turbo-deoptimization: EmbenchenBox2d(RunTime): 11768 ms.
      d8-master: EmbenchenBox2d(RunTime): 10996 ms.
      ----------- bullet.js
      Current --turbo-deoptimization: EmbenchenBullet(RunTime): 17049 ms.
      d8-master --turbo-deoptimization: EmbenchenBullet(RunTime): 17384 ms.
      d8-master: EmbenchenBullet(RunTime): 16153 ms.
      ----------- copy.js
      Current --turbo-deoptimization: EmbenchenCopy(RunTime): 4877 ms.
      d8-master --turbo-deoptimization: EmbenchenCopy(RunTime): 4938 ms.
      d8-master: EmbenchenCopy(RunTime): 4940 ms.
      ----------- corrections.js
      Current --turbo-deoptimization: EmbenchenCorrections(RunTime): 7068 ms.
      d8-master --turbo-deoptimization: EmbenchenCorrections(RunTime): 6718 ms.
      d8-master: EmbenchenCorrections(RunTime): 6858 ms.
      ----------- fannkuch.js
      Current --turbo-deoptimization: EmbenchenFannkuch(RunTime): 4167 ms.
      d8-master --turbo-deoptimization: EmbenchenFannkuch(RunTime): 4608 ms.
      d8-master: EmbenchenFannkuch(RunTime): 4149 ms.
      ----------- fasta.js
      Current --turbo-deoptimization: EmbenchenFasta(RunTime): 9981 ms.
      d8-master --turbo-deoptimization: EmbenchenFasta(RunTime): 9848 ms.
      d8-master: EmbenchenFasta(RunTime): 9640 ms.
      ----------- lua_binarytrees.js
      Current --turbo-deoptimization: EmbenchenLuaBinaryTrees(RunTime): 11571 ms.
      d8-master --turbo-deoptimization: EmbenchenLuaBinaryTrees(RunTime): 13089 ms.
      d8-master: EmbenchenLuaBinaryTrees(RunTime): 10957 ms.
      ----------- memops.js
      Current --turbo-deoptimization: EmbenchenMemOps(RunTime): 7766 ms.
      d8-master --turbo-deoptimization: EmbenchenMemOps(RunTime): 7346 ms.
      d8-master: EmbenchenMemOps(RunTime): 7738 ms.
      ----------- primes.js
      Current --turbo-deoptimization: EmbenchenPrimes(RunTime): 7459 ms.
      d8-master --turbo-deoptimization: EmbenchenPrimes(RunTime): 7453 ms.
      d8-master: EmbenchenPrimes(RunTime): 7451 ms.
      ----------- skinning.js
      Current --turbo-deoptimization: EmbenchenSkinning(RunTime): 15564 ms.
      d8-master --turbo-deoptimization: EmbenchenSkinning(RunTime): 15611 ms.
      d8-master: EmbenchenSkinning(RunTime): 15583 ms.
      ----------- zlib.js
      Current --turbo-deoptimization: EmbenchenZLib(RunTime): 10825 ms.
      d8-master --turbo-deoptimization: EmbenchenZLib(RunTime): 11180 ms.
      d8-master: EmbenchenZLib(RunTime): 10823 ms.
      
      BUG=
      
      Review URL: https://codereview.chromium.org/949743002
      
      Cr-Commit-Position: refs/heads/master@{#27232}
      ca3abde2
  2. 16 Mar, 2015 2 commits
  3. 13 Mar, 2015 1 commit
  4. 12 Mar, 2015 1 commit
  5. 10 Mar, 2015 2 commits
    • bmeurer's avatar
      [turbofan] Use builtin inlining mechanism for Math.floor. · 1982186b
      bmeurer authored
      BUG=v8:3952
      LOG=n
      R=yangguo@chromium.org
      
      Review URL: https://codereview.chromium.org/997513002
      
      Cr-Commit-Position: refs/heads/master@{#27098}
      1982186b
    • bmeurer's avatar
      [turbofan] Unify Math.floor / Math.ceil optimization. · 022ea7e0
      bmeurer authored
      Provide an intrinsic %MathFloor / %_MathFloor that is used to optimize
      both Math.ceil and Math.floor, and use the JS inlining mechanism to
      inline Math.ceil into TurboFan code. Although we need to touch code
      outside of TurboFan to make this work, this does not affect the way we
      handle Math.ceil and/or Math.floor in CrankShaft, because for CrankShaft
      the old-style builtin function id based inlining still kicks in first.
      
      Once this solution is stabilized, we can use it for Math.floor as well.
      And once that is settled, we can establish it as the unified way to
      inline builtins, and get rid of the specialized builtin function id
      based inlining at some point.
      
      Note that "builtin" applies to basically every piece of internal
      JavaScript/intrinsics based code, so this also applies to the yet to be
      defined JavaScript based code stubs and handlers.
      
      BUG=v8:3953
      LOG=n
      R=yangguo@chromium.org,svenpanne@chromium.org
      
      Review URL: https://codereview.chromium.org/990963003
      
      Cr-Commit-Position: refs/heads/master@{#27086}
      022ea7e0
  6. 09 Mar, 2015 2 commits
  7. 06 Mar, 2015 1 commit
  8. 05 Mar, 2015 1 commit
  9. 03 Mar, 2015 1 commit
  10. 02 Mar, 2015 2 commits
  11. 27 Feb, 2015 1 commit
  12. 26 Feb, 2015 1 commit
  13. 25 Feb, 2015 2 commits
  14. 24 Feb, 2015 5 commits
  15. 23 Feb, 2015 1 commit
  16. 20 Feb, 2015 6 commits
  17. 19 Feb, 2015 1 commit
  18. 18 Feb, 2015 2 commits
  19. 17 Feb, 2015 1 commit
    • bmeurer's avatar
      [turbofan] Optimize certain chains of Branch into a Switch. · acd9c46c
      bmeurer authored
      This adds a new ControlFlowOptimizer that - for now - recognizes chains
      of Branches generated by the SwitchBuilder for a subset of javascript
      switches into Switch nodes. Those Switch nodes are then lowered to
      either table or lookup switches.
      
      Also rename Case to IfValue (and introduce IfDefault) for consistency.
      
      BUG=v8:3872
      LOG=n
      
      Review URL: https://codereview.chromium.org/931623002
      
      Cr-Commit-Position: refs/heads/master@{#26691}
      acd9c46c
  20. 12 Feb, 2015 2 commits
  21. 11 Feb, 2015 2 commits
    • mstarzinger's avatar
      Mark some common operator with Property::kNoThrow. · ec4305e4
      mstarzinger authored
      R=bmeurer@chromium.org
      TEST=unittests/CommonOperatorTest
      
      Review URL: https://codereview.chromium.org/912393002
      
      Cr-Commit-Position: refs/heads/master@{#26584}
      ec4305e4
    • svenpanne's avatar
      Removed most of the bogus CompilationInfo constructor calls. · d1b5aa07
      svenpanne authored
      A CompilationInfo constructed from just an Isolate* and a Zone* is in
      weird an inconsistent state (calling e.g. flags() on it will crash),
      so we need to avoid them. This CL removes almost all of them, the
      remaining 2 call sites in (for testing only) will be handled in a
      separate CL. Things which have been changed:
      
        * Linkage is basically a decorator for CallDescriptor now.
      
        * ChangeLowering doesn't need Linkage at all.
      
        * JSGenericLowering doesn't need a full CompilationInfo*, just a
          single flag.
      
        * JSContextSpecializer doesn't need the full CompilationInfo, just a
          Context.
      
        * Removed unused CompilationInfo from SimplifiedLoweringTester.
      
      This nicely decouples things already a bit more, but there's still
      work to do...
      
      Review URL: https://codereview.chromium.org/899803003
      
      Cr-Commit-Position: refs/heads/master@{#26580}
      d1b5aa07
  22. 10 Feb, 2015 1 commit
  23. 09 Feb, 2015 1 commit