- 17 Mar, 2015 1 commit
-
-
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}
-
- 16 Mar, 2015 2 commits
-
-
jarin authored
Instead of the current approach of storing flat vectors in frame states (and possibly reusing the last vector in AST graph builder), this change list builds a tree for the values and tries to reuse the nodes for different frame states. At the moment, we only use this for the local variable part of frame state, but nothing prevents us from using this for all parts. This change provides two new classes: one for creating the tree (StateValuesCache) and one for iterating the trees (StateValuesAccess). BUG= Review URL: https://codereview.chromium.org/1008213002 Cr-Commit-Position: refs/heads/master@{#27222}
-
dusan.milosavljevic authored
The CL enables the same instructions are selected for Word32 and Word64 compare operations which is possible due to a fact 32-bit inputs and produced values are always sign-extended. TEST= BUG= Review URL: https://codereview.chromium.org/1005123002 Cr-Commit-Position: refs/heads/master@{#27212}
-
- 13 Mar, 2015 1 commit
-
-
bmeurer authored
Reduces the amount of custom support code for Math functions in TurboFan and allows for more general inlining (i.e. independent of parameter types). BUG=v8:3952 LOG=n R=yangguo@chromium.org Review URL: https://codereview.chromium.org/1004083002 Cr-Commit-Position: refs/heads/master@{#27172}
-
- 12 Mar, 2015 1 commit
-
-
bmeurer authored
Basically recognize certain x < y ? x : y constructs and turn that into Float64Min/Float64Max operations, if the target machine supports that. On x86 we lower to (v)minsd/(v)maxsd. R=dcarney@chromium.org Review URL: https://codereview.chromium.org/998283002 Cr-Commit-Position: refs/heads/master@{#27160}
-
- 10 Mar, 2015 2 commits
-
-
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}
-
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}
-
- 09 Mar, 2015 2 commits
-
-
Benedikt Meurer authored
Avoid loading the stack pointer and the stack limit into allocatable registers first, but generate a cmp rsp,[limit] instead. R=dcarney@chromium.org Review URL: https://codereview.chromium.org/989203002 Cr-Commit-Position: refs/heads/master@{#27065}
-
Jaroslav Sevcik authored
BUG= R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/983153002 Cr-Commit-Position: refs/heads/master@{#27060}
-
- 06 Mar, 2015 1 commit
-
-
svenpanne authored
BUG=v8:3947 LOG=n Review URL: https://codereview.chromium.org/978123003 Cr-Commit-Position: refs/heads/master@{#27039}
-
- 05 Mar, 2015 1 commit
-
-
bmeurer authored
This adds support for the double bits intrinsics to TurboFan, and is a first step towards fast Math functions inlined into TurboFan code or even compiled by themselves with TurboFan. Review URL: https://codereview.chromium.org/974313002 Cr-Commit-Position: refs/heads/master@{#27006}
-
- 03 Mar, 2015 1 commit
-
-
bmeurer authored
Review URL: https://codereview.chromium.org/971223002 Cr-Commit-Position: refs/heads/master@{#26949}
-
- 02 Mar, 2015 2 commits
-
-
Benedikt Meurer authored
- (x * (K << L)) & (-1 << L) => x * (K << L) - ((K << L) * x) & (-1 << L) => x * (K << L) R=dcarney@chromium.org Review URL: https://codereview.chromium.org/972653002 Cr-Commit-Position: refs/heads/master@{#26942}
-
Benedikt Meurer authored
R=rossberg@chromium.org Review URL: https://codereview.chromium.org/968773004 Cr-Commit-Position: refs/heads/master@{#26939}
-
- 27 Feb, 2015 1 commit
-
-
bmeurer authored
Without this shortcut we generate one BooleanNot per JSUnaryNot with number input, which is quite common in asm.js. These dead nodes then survive until the late control reducer runs, and may prevent optimizations in the mean time. R=dcarney@chromium.org Review URL: https://codereview.chromium.org/963713002 Cr-Commit-Position: refs/heads/master@{#26911}
-
- 26 Feb, 2015 1 commit
-
-
bmeurer authored
Review URL: https://codereview.chromium.org/960783002 Cr-Commit-Position: refs/heads/master@{#26870}
-
- 25 Feb, 2015 2 commits
-
-
dcarney authored
BUG= Review URL: https://codereview.chromium.org/951553005 Cr-Commit-Position: refs/heads/master@{#26859}
-
bmeurer authored
Review URL: https://codereview.chromium.org/958533002 Cr-Commit-Position: refs/heads/master@{#26841}
-
- 24 Feb, 2015 5 commits
-
-
dcarney authored
BUG= Review URL: https://codereview.chromium.org/755323011 Cr-Commit-Position: refs/heads/master@{#26819}
-
bmeurer authored
Perform strength reduction on machine operators with inline comparisons: CMP & 1 => CMP 1 & CMP => CMP CMP << 31 >> 31 => CMP Also strength reduce the following constructs: x + (0 - y) => x - y (0 - y) + x => x - y R=dcarney@chromium.org Review URL: https://codereview.chromium.org/951903003 Cr-Commit-Position: refs/heads/master@{#26817}
-
mstarzinger authored
R=bmeurer@chromium.org TEST=unittests/SchedulerTest.CallException Review URL: https://codereview.chromium.org/944903002 Cr-Commit-Position: refs/heads/master@{#26816}
-
dcarney authored
BUG= Review URL: https://codereview.chromium.org/948033002 Cr-Commit-Position: refs/heads/master@{#26814}
-
bmeurer authored
This implements a special case of block cloning to recognize constructs like if (a ? b : c) { ... } that happen to be generated by Emscripten quite often. Review URL: https://codereview.chromium.org/947963002 Cr-Commit-Position: refs/heads/master@{#26808}
-
- 23 Feb, 2015 1 commit
-
-
bmeurer authored
Revert of [x64] Improve instruction selection for TruncateInt64ToInt32. (patchset #1 id:1 of https://codereview.chromium.org/936323004/) Reason for revert: Breaks SQLite Original issue's description: > [x64] Improve instruction selection for TruncateInt64ToInt32. > > R=svenpanne@chromium.org > > Committed: https://crrev.com/64a2717529e2197f3a789adabf86ca36f5eb764c > Cr-Commit-Position: refs/heads/master@{#26739} TBR=svenpanne@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/928723003 Cr-Commit-Position: refs/heads/master@{#26791}
-
- 20 Feb, 2015 6 commits
-
-
mstarzinger authored
R=bmeurer@chromium.org TEST=unittests/SchedulerTest,unittests/SchedulerRPOTest Review URL: https://codereview.chromium.org/927653004 Cr-Commit-Position: refs/heads/master@{#26778}
-
mstarzinger authored
R=bmeurer@chromium.org TEST=unittests/NodePropertiesTest.CollectControlProjections_Call Review URL: https://codereview.chromium.org/941993002 Cr-Commit-Position: refs/heads/master@{#26777}
-
Benedikt Meurer authored
R=svenpanne@chromium.org Committed: https://crrev.com/5bbe693e4817011b6a496c638c9f09026fd3dac9 Cr-Commit-Position: refs/heads/master@{#26760} Review URL: https://codereview.chromium.org/944803002 Cr-Commit-Position: refs/heads/master@{#26767}
-
mstarzinger authored
R=titzer@chromium.org,bmeurer@chromium.org Review URL: https://codereview.chromium.org/928213003 Cr-Commit-Position: refs/heads/master@{#26766}
-
machenbach authored
Revert of [turbofan] Finally get rid of the generic algorithm. (patchset #2 id:20001 of https://codereview.chromium.org/944803002/) Reason for revert: Breaks dbg builds. Original issue's description: > [turbofan] Finally get rid of the generic algorithm. > > R=svenpanne@chromium.org > > Committed: https://crrev.com/5bbe693e4817011b6a496c638c9f09026fd3dac9 > Cr-Commit-Position: refs/heads/master@{#26760} TBR=svenpanne@chromium.org,bmeurer@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/941963003 Cr-Commit-Position: refs/heads/master@{#26763}
-
Benedikt Meurer authored
R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/944803002 Cr-Commit-Position: refs/heads/master@{#26760}
-
- 19 Feb, 2015 1 commit
-
-
Benedikt Meurer authored
R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/936323004 Cr-Commit-Position: refs/heads/master@{#26739}
-
- 18 Feb, 2015 2 commits
-
-
mstarzinger authored
R=bmeurer@chromium.org TEST=unittests/NodePropertiesTest.CollectControlProjections Review URL: https://codereview.chromium.org/935033004 Cr-Commit-Position: refs/heads/master@{#26720}
-
bmeurer authored
R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/938513003 Cr-Commit-Position: refs/heads/master@{#26712}
-
- 17 Feb, 2015 1 commit
-
-
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}
-
- 12 Feb, 2015 2 commits
-
-
jarin authored
R=rossberg@chromium.org BUG= Review URL: https://codereview.chromium.org/904863002 Cr-Commit-Position: refs/heads/master@{#26621}
-
bmeurer authored
Review URL: https://codereview.chromium.org/924453002 Cr-Commit-Position: refs/heads/master@{#26609}
-
- 11 Feb, 2015 2 commits
-
-
mstarzinger authored
R=bmeurer@chromium.org TEST=unittests/CommonOperatorTest Review URL: https://codereview.chromium.org/912393002 Cr-Commit-Position: refs/heads/master@{#26584}
-
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}
-
- 10 Feb, 2015 1 commit
-
-
vogelheim authored
To do so, extract startup_data_util from d8 and use it those executables. BUG= Review URL: https://codereview.chromium.org/913703002 Cr-Commit-Position: refs/heads/master@{#26547}
-
- 09 Feb, 2015 1 commit
-
-
dcarney authored
BUG= Review URL: https://codereview.chromium.org/910753002 Cr-Commit-Position: refs/heads/master@{#26524}
-