1. 18 Mar, 2015 1 commit
  2. 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
  3. 16 Mar, 2015 3 commits
  4. 14 Mar, 2015 5 commits
  5. 13 Mar, 2015 2 commits
  6. 12 Mar, 2015 2 commits
  7. 10 Mar, 2015 1 commit
    • 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
  8. 09 Mar, 2015 3 commits
  9. 06 Mar, 2015 2 commits
    • Michael Achenbach's avatar
      Whitespace change to test recipe trigger. · 5a3f085d
      Michael Achenbach authored
      Cr-Commit-Position: refs/heads/master@{#27053}
      5a3f085d
    • machenbach's avatar
      Make automated branch creation gnumbd-save. · 934dd88d
      machenbach authored
      This makes now the same simplification as the chromium
      release scripts do. For creating branch B from a gnumbd'ed
      (aka real) commit X do:
      1. Branch Y off the real X
      2. Set refs/pending/heads/B to Y
      3. Set refs/pending-tags/B to X
      4. Set refs/heads/B to X
      
      The old algorithm tried to branch off the pending
      correspondent of X. That commit was determined by comparing
      tree objects of the real X and commits on pending.
      Unfortunately, multiple commits on one branch can refer to
      the same tree object, e.g., for commits P, Q, R with R being
      the revert of Q, P and R refer to the same tree object.
      
      TBR=tandrii@chromium.org
      NOTRY=true
      TEST=./script_test.py
      TEST=tools/release/create_release.py -a me -r you --dry-run
      
      Review URL: https://codereview.chromium.org/979243004
      
      Cr-Commit-Position: refs/heads/master@{#27042}
      934dd88d
  10. 05 Mar, 2015 2 commits
    • machenbach's avatar
      Fix progress check in auto-roller. · f96e2260
      machenbach authored
      Using a git range check for checking progress is wrong when
      the last rolled revision and the revision candidate are on
      different branches. The range A..B will always show the
      commits from the merge-base of A and B until B.
      
      Better compare the tags of the last rolled revision and the
      candidate. The candidate's version must be strictly greater
      than what's in chromium.
      
      TBR=tandrii@chromium.org
      NOTRY=true
      TEST=./script_test.py
      
      Review URL: https://codereview.chromium.org/979133002
      
      Cr-Commit-Position: refs/heads/master@{#27021}
      f96e2260
    • machenbach's avatar
      Make auto-roller roll recent release based on timestamp. · a6a0bd88
      machenbach authored
      Before this change, out of two versions 4.2.13.1 and
      4.2.14, the latter would have been considered the newest.
      Now, the timestamp of the commit determines the age, which
      allows to roll a patched version first. The auto-roller
      will only roll forward (i.e. there needs to be a commit
      range between the last roll and the new candidate).
      
      Additionally, this CL does some cleanups:
      - Use the sheriff detection mechanism in the auto-roller.
      - Require the roll revision parameter in the chromium_roll
      script to avoid redundancy. The auto_roll script determines
      that revision automatically.
      - Simplify the revision summary in the commit message. The
      summary will now show last_roll..new_roll, which e.g.
      includes the version change CL. It'll now show useful
      information for cherry-picks, which it didn't before.
      - Remove unused clusterfuzz check. That check is part of the
      release process script.
      
      TBR=tandrii@chromium.org
      NOTRY=true
      TEST=./script_test.py
      TEST=./tools/release/chromium_roll.py --dry-run --sheriff -c ~/tmp/chromium/src --last-roll 55b9049ea3978a589d8db2aa191d21222eef737f fc263505535a175c8efa18f4c787bd92a1d1ab3d --use-commit-queue -r me -a you
      
      Review URL: https://codereview.chromium.org/977903002
      
      Cr-Commit-Position: refs/heads/master@{#27009}
      a6a0bd88
  11. 27 Feb, 2015 1 commit
    • machenbach's avatar
      Make the auto-pusher recover easier. · 002b1ddb
      machenbach authored
      The auto-push script is only used in an automated fashion
      on bots. It doesn't need to check for a clean git
      environment as it has a special workdir checkout.
      
      If the release creation fails for whatever reason (e.g.
      a master restart happens in the middle), the workdir
      checkout might be left dirty. Any new attempt of the auto
      pusher then bails out.
      
      After this change it will call the create_release script
      in any case which tidies up the workspace on startup.
      
      TBR=tandrii@chromium.org
      NOTRY=true
      TEST=./script_test.py
      
      Review URL: https://codereview.chromium.org/960773007
      
      Cr-Commit-Position: refs/heads/master@{#26928}
      002b1ddb
  12. 26 Feb, 2015 1 commit
  13. 25 Feb, 2015 1 commit
  14. 24 Feb, 2015 3 commits
  15. 20 Feb, 2015 6 commits
  16. 19 Feb, 2015 1 commit
  17. 18 Feb, 2015 3 commits
  18. 17 Feb, 2015 2 commits