titzer
ebc5167476
[turbofan] Fix loading of JSFunction from activation in case of adapter frame.
...
R=mstarzinger@chromium.org
BUG=
Review URL: https://codereview.chromium.org/1026023004
Cr-Commit-Position: refs/heads/master@{#27454}
2015-03-25 17:46:16 +00:00
bmeurer
ff89876bb9
[turbofan] Fix lowering of Math.max for integral inputs.
...
R=jarin@chromium.org
BUG=chromium:468162
LOG=y
Review URL: https://codereview.chromium.org/1027753002
Cr-Commit-Position: refs/heads/master@{#27341}
2015-03-20 12:05:19 +00:00
bmeurer
d5893cad6b
[turbofan] Work-around untagged result of CompareIC in pointer maps.
...
BUG=chromium:469089
LOG=n
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/1026683002
Cr-Commit-Position: refs/heads/master@{#27333}
2015-03-20 09:45:12 +00:00
jarin
b7dc9c580a
[turbofan] Remember types for deoptimization during simplified lowering.
...
With this change, we remember the types of frame state inputs (in a new
operator, called TypedStateValues). Instead of inferring the value types
when building translations, we used the recorded types.
The original approach was not reliable because the passes after
simplified lowering can change node types, and this in turn confuses
the translation builder.
BUG=chromium:468727
LOG=n
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/1015423002
Cr-Commit-Position: refs/heads/master@{#27310}
2015-03-19 14:00:33 +00:00
jarin
0cde253c9e
[turbofan] Support lazy deopt for truncating store to a typed array.
...
The change introduces a second frame state (for the state before
the operation) for the StoreProperty nodes. If the store writes
into a typed array, the frame state is used for lazy deopt from
the to-number conversion that is performed by the store.
BUG=v8:3963
LOG=n
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/997983004
Cr-Commit-Position: refs/heads/master@{#27285}
2015-03-19 05:46:30 +00:00
titzer
434d1ad014
[turbofan] Fix bug in OSR deconstruction.
...
In constructing the transfer between loop copies, we need to merge the backedges from all the previous copies of the given loop. The control reduction will work out which ones are really reachable.
R=mstarzinger@chromium.org
BUG=
Review URL: https://codereview.chromium.org/1004993004
Cr-Commit-Position: refs/heads/master@{#27246}
2015-03-17 17:55:29 +00:00
titzer
0b3f4af12c
[turbofan] Fix --turbo-osr for OSRing into inner loop inside for-in.
...
R=mstarzinger@chromium.org
BUG=chromium:462775
LOG=Y
Review URL: https://codereview.chromium.org/988423003
Cr-Commit-Position: refs/heads/master@{#27088}
2015-03-10 09:27:40 +00:00
jarin
6f559b7ec3
[turbofan] Fix lazy deopt for JSToNumber conversions in binary operations.
...
This slightly hacky change provides lazy deopt points for to-number conversions in binops: When we deopt from a to-number conversion, we create a frame state with the already-converted value(s) so that we do not repeat the side effect of the conversion.
Embenchen numbers are below. It is not quite clear what happened to fasta - the hot code looks nearly identical.
Current: EmbenchenBox2d(RunTime): 12746 ms.
d8-master: EmbenchenBox2d(RunTime): 13861 ms.
----------- bullet.js
Current: EmbenchenBullet(RunTime): 17680 ms.
d8-master: EmbenchenBullet(RunTime): 19170 ms.
----------- copy.js
Current: EmbenchenCopy(RunTime): 4939 ms.
d8-master: EmbenchenCopy(RunTime): 4943 ms.
----------- corrections.js
Current: EmbenchenCorrections(RunTime): 6639 ms.
d8-master: EmbenchenCorrections(RunTime): 6728 ms.
----------- fannkuch.js
Current: EmbenchenFannkuch(RunTime): 4630 ms.
d8-master: EmbenchenFannkuch(RunTime): 4872 ms.
----------- fasta.js
Current: EmbenchenFasta(RunTime): 10209 ms.
d8-master: EmbenchenFasta(RunTime): 9673 ms.
----------- lua_binarytrees.js
Current: EmbenchenLuaBinaryTrees(RunTime): 12936 ms.
d8-master: EmbenchenLuaBinaryTrees(RunTime): 15529 ms.
----------- memops.js
Current: EmbenchenMemOps(RunTime): 7357 ms.
d8-master: EmbenchenMemOps(RunTime): 7340 ms.
----------- primes.js
Current: EmbenchenPrimes(RunTime): 7530 ms.
d8-master: EmbenchenPrimes(RunTime): 7457 ms.
----------- skinning.js
Current: EmbenchenSkinning(RunTime): 15832 ms.
d8-master: EmbenchenSkinning(RunTime): 15630 ms.
----------- zlib.js
Current: EmbenchenZLib(RunTime): 11176 ms.
d8-master: EmbenchenZLib(RunTime): 11324 ms.
BUG=
Review URL: https://codereview.chromium.org/985713003
Cr-Commit-Position: refs/heads/master@{#27071}
2015-03-09 13:24:42 +00:00
mstarzinger
dcb502a4ee
[turbofan] Only reduce inline %DeoptimizeNow.
...
This makes sure only the %_DeoptimizeNow intrinsic is inlined, and
not the %DeoptimizeNow one. It hence re-establishes the invariant
that JSIntrinsicLowering only deals with inline intrinsics.
R=jarin@chromium.org
TEST=mjsunit/compiler/eager-deopt-simple
Review URL: https://codereview.chromium.org/988333003
Cr-Commit-Position: refs/heads/master@{#27070}
2015-03-09 13:20:26 +00:00
jarin
8d2e45669f
[turbofan] First shot at eager deoptimization in Turbofan.
...
BUG=
Review URL: https://codereview.chromium.org/961973002
Cr-Commit-Position: refs/heads/master@{#26993}
2015-03-04 15:21:21 +00:00
mstarzinger
d016387e81
[turbofan] Add test coverage for deopt within try-catch.
...
This just contains test, no fixes. Note that some of the tests are
still disabled because they either fail or we don't want ClusterFuzz
to pick up the flag yet.
R=jarin@chromium.org
TEST=cctest/test-run-jsexceptions/Deopt,mjsunit/compiler/try-deopt
Review URL: https://codereview.chromium.org/972943004
Cr-Commit-Position: refs/heads/master@{#26968}
2015-03-03 17:23:42 +00:00
Jaroslav Sevcik
f0b11873a3
[turbofan] Fix deferred replacement in simplified lowering.
...
Deferred replacement must also replace in the pending node vector.
BUG=chromium:463056
LOG=n
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/966423002
Cr-Commit-Position: refs/heads/master@{#26938}
2015-03-02 12:49:49 +00:00
titzer
d050c331eb
[turbofan] Simplify context specialization and fix for OSR.
...
AstGraphBuilder puts a constant context in from the beginning.
Also fix bug in merging contexts in environment.
R=mstarzinger@chromium.org
BUG=
Review URL: https://codereview.chromium.org/934293002
Cr-Commit-Position: refs/heads/master@{#26745}
2015-02-19 11:36:50 +00:00
titzer
71765afff9
[turbofan] Rename context stack as part of the environment for OSR.
...
R=mstarzinger@chromium.org
BUG=
Review URL: https://codereview.chromium.org/921083004
Cr-Commit-Position: refs/heads/master@{#26705}
2015-02-17 18:10:11 +00:00
jarin
0b8063cec8
[turbofan] Avoid ToNumber conversions if they could deoptimize.
...
BUG=chromium:454158
LOG=n
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/922623002
Cr-Commit-Position: refs/heads/master@{#26661}
2015-02-16 12:59:20 +00:00
titzer
31637fb396
[turbofan] Use heavy-handed graph duplication to do loop peeling for OSR.
...
BUG=
Review URL: https://codereview.chromium.org/898353002
Cr-Commit-Position: refs/heads/master@{#26576}
2015-02-11 13:26:45 +00:00
titzer
1db760de7d
Reduce the number of iterations in some OSR tests by using an explicit %OptimizeOsr().
...
R=mstarzinger@chromium.org
BUG=
Review URL: https://codereview.chromium.org/913463002
Cr-Commit-Position: refs/heads/master@{#26540}
2015-02-10 09:53:22 +00:00
titzer
4c302ca290
Make it easier to test OSR with %OptimizeOsr() runtime call.
...
This call triggers OSR for the current function. And also allows explicitly testing OSR on the top-level code.
R=mstarzinger@chromium.org
BUG=
Review URL: https://codereview.chromium.org/906243002
Cr-Commit-Position: refs/heads/master@{#26523}
2015-02-09 12:47:43 +00:00
titzer
79cad15cb0
Speed up tests for OSR of for-in and for-of loops.
...
R=marja@chromium.org
BUG=
Review URL: https://codereview.chromium.org/889293003
Cr-Commit-Position: refs/heads/master@{#26378}
2015-02-02 11:52:07 +00:00
titzer
e25a0f7e4e
[turbofan] Fix usage of ThisFunction parameter in OSR.
...
R=mstarzinger@chromium.org
BUG=
Review URL: https://codereview.chromium.org/892593002
Cr-Commit-Position: refs/heads/master@{#26355}
2015-01-30 13:09:44 +00:00
titzer
11311c083a
[turbofan] Fix OSR compilations of for-in.
...
R=mstarzinger@chromium.org
LOG=Y
BUG=
Review URL: https://codereview.chromium.org/890543002
Cr-Commit-Position: refs/heads/master@{#26333}
2015-01-29 17:40:23 +00:00
jarin
a4b163a940
[turbofan] Make sure there is space for lazy deopt patching before the constant pool.
...
BUG=chromium:446647
LOG=n
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/874863003
Cr-Commit-Position: refs/heads/master@{#26327}
2015-01-29 15:30:32 +00:00
titzer
f5479ca675
[turbofan] Gracefully bail out if OSR encounters a loop too deeply nested.
...
R=jarin@chromium.org
BUG=
Review URL: https://codereview.chromium.org/877553007
Cr-Commit-Position: refs/heads/master@{#26318}
2015-01-29 09:46:36 +00:00
jarin
489b6f7c60
[turbofan] Add missing deopt for the assignment in the for-in statement.
...
BUG=chromium:416359
LOG=n
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/881303002
Cr-Commit-Position: refs/heads/master@{#26309}
2015-01-28 16:16:24 +00:00
jarin
b4a4c4c591
[turbofan] Only replace nodes eagerly during simplified lowering if the types stay the same.
...
BUG=chromium:452427
LOG=n
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/871373010
Cr-Commit-Position: refs/heads/master@{#26286}
2015-01-27 09:27:37 +00:00
jarin
4c79f55c32
[turbofan] Handle cyclic dependencies in context typing.
...
BUG=chromium:451012
LOG=n
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/874983002
Cr-Commit-Position: refs/heads/master@{#26281}
2015-01-27 06:57:41 +00:00
mstarzinger
209b771431
Enable test coverage for test coverage.
...
R=titzer@chromium.org
TEST=mjsunit/compiler/opt-next-call-turbo
Review URL: https://codereview.chromium.org/822673003
Cr-Commit-Position: refs/heads/master@{#26192}
2015-01-21 14:07:19 +00:00
Michael Starzinger
cecd89c2c6
Disable new test failing since 79748e3f7c
.
...
TBR=titzer@chromium.org
TEST=mjsunit/compiler/opt-next-call-turbo
Review URL: https://codereview.chromium.org/862533002
Cr-Commit-Position: refs/heads/master@{#26143}
2015-01-19 16:17:07 +00:00
mstarzinger
79748e3f7c
Remove overzealous check from %OptimizeFunctionOnNextCall.
...
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/863443003
Cr-Commit-Position: refs/heads/master@{#26142}
2015-01-19 15:52:00 +00:00
jarin
ac04d777d6
[turbofan] Allow deoptimization for JSToNumber operator.
...
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/841443004
Cr-Commit-Position: refs/heads/master@{#26053}
2015-01-14 13:09:32 +00:00
bmeurer
70b32e4b8a
[turbofan] Fix truncation/representation sloppiness wrt. bool/bit.
...
TEST=cctest,mjsunit,unittests
BUG=v8:3812
LOG=y
Review URL: https://codereview.chromium.org/850013003
Cr-Commit-Position: refs/heads/master@{#26051}
2015-01-14 12:06:56 +00:00
jarin
527e19afd5
[turbofan] Add missing deopt.
...
BUG=chromium:447567
LOG=n
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/809463005
Cr-Commit-Position: refs/heads/master@{#26033}
2015-01-13 08:40:54 +00:00
titzer
159b14172f
[turbofan] Implement OSR for outer loops.
...
R=bmeurer@chromium.org
BUG=
Review URL: https://codereview.chromium.org/809333002
Cr-Commit-Position: refs/heads/master@{#26020}
2015-01-12 11:39:58 +00:00
bmeurer
fec1bba852
[turbofan] Correctify representation changes to bit.
...
TEST=cctest/test-representation-change,unittests,mjsunit/compiler/regress-bit-number-constant
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/840953003
Cr-Commit-Position: refs/heads/master@{#25987}
2015-01-08 09:48:41 +00:00
bmeurer
d1c1a3c48f
[turbofan] Fix bit representation of NumberConstant.
...
TEST=mjsunit/compiler/regress-bit-number-constant
Review URL: https://codereview.chromium.org/839813002
Cr-Commit-Position: refs/heads/master@{#25979}
2015-01-07 15:44:22 +00:00
jarin
80a7be5cd9
Restrict representation inference to avoid truncation of phi inputs.
...
BUG=chromium:446778
LOG=N
Review URL: https://codereview.chromium.org/837153002
Cr-Commit-Position: refs/heads/master@{#25967}
2015-01-07 11:38:54 +00:00
jarin
a9716d9840
Make control reducer revisit newly introduced merges.
...
TEST=mjsunit/compiler/regress-445876
BUG=chromium:445876
LOG=N
Review URL: https://codereview.chromium.org/830293003
Cr-Commit-Position: refs/heads/master@{#25959}
2015-01-05 16:35:34 +00:00
Benedikt Meurer
17a180842e
[turbofan] Don't crash when typing load from a Uint8ClampedArray.
...
TEST=mjsunit/compiler/regress-446156
BUG=chromium:446156
LOG=y
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/835883003
Cr-Commit-Position: refs/heads/master@{#25957}
2015-01-05 13:43:47 +00:00
jarin
bdf446f590
Do not reduce effect phis for loops.
...
This prevents eliminating effectful statements before the loop.
BUG=
Review URL: https://codereview.chromium.org/830923002
Cr-Commit-Position: refs/heads/master@{#25953}
2015-01-03 12:46:00 +00:00
bmeurer
fb2643c858
[turbofan] Truncation of Bit/Word8/16 to Word32 is a no-op.
...
TEST=mjsunit/compiler/regress-445859
BUG=chromium:445859
LOG=y
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/828313002
Cr-Commit-Position: refs/heads/master@{#25951}
2015-01-02 10:39:10 +00:00
bmeurer
cf866b7c61
[x64] Rearrange code for OOB integer loads.
...
We cannot just clear the result register optimistically, because the
register allocator might assign the same register to result and buffer.
TEST=mjsunit/compiler/regress-445858
BUG=chromium:445858
LOG=y
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/828303002
Cr-Commit-Position: refs/heads/master@{#25950}
2015-01-02 10:15:40 +00:00
bmeurer
a64ac4575a
Fix %NeverOptimizeFunction() intrinsic.
...
Set a valid reason for disabling optimization when using
%NeverOptimizeFunction.
TEST=mjsunit/compiler/regress-445732
BUG=chromium:445732
LOG=y
TBR=machenbach@chromium.org
Review URL: https://codereview.chromium.org/832003002
Cr-Commit-Position: refs/heads/master@{#25949}
2015-01-02 08:18:01 +00:00
bmeurer
ef41f70684
[turbofan] Fix invalid bounds check with overflowing offset.
...
TEST=mjsunit/compiler/regress-445267
BUG=chromium:445267
LOG=y
Review URL: https://codereview.chromium.org/825403002
Cr-Commit-Position: refs/heads/master@{#25945}
2014-12-29 10:01:15 +00:00
bmeurer
b5e8dd0e12
[turbofan] Raise max virtual registers and call parameter limit.
...
Change InstructionOperand to use a 64-bit field for encoding the operand
information instead of the 32-bit field that was used before. Ideally we
wouldn't use the Zone-allocated bit field at all, and use an integer
instead of the pointer; but that requires fixing the register allocator
first, which will take some time.
TEST=mjsunit/compiler/regress-3786
BUG=v8:3786
LOG=y
Review URL: https://codereview.chromium.org/826673002
Cr-Commit-Position: refs/heads/master@{#25941}
2014-12-25 18:18:04 +00:00
Benedikt Meurer
3f00ce2d59
[turbofan] Fix missing ChangeUint32ToUint64 in lowering of LoadBuffer.
...
TEST=mjsunit/compiler/regress-444695
BUG=chromium:444695
LOG=y
R=hpayer@chromium.org
Review URL: https://codereview.chromium.org/824843002
Cr-Commit-Position: refs/heads/master@{#25932}
2014-12-23 06:54:00 +00:00
Benedikt Meurer
65e69497ab
[turbofan] Correctify lowering of Uint8ClampedArray buffer access.
...
TEST=mjsunit/compiler/regress-444508.js
BUG=chromium:444508
LOG=y
R=machenbach@chromium.org
Review URL: https://codereview.chromium.org/794013004
Cr-Commit-Position: refs/heads/master@{#25916}
2014-12-22 08:27:59 +00:00
Benedikt Meurer
f7e4689061
[turbofan] Fix unsafe out-of-bounds check for checked loads/stores.
...
BUG=chromium:443744
LOG=y
TEST=mjsunit/compiler/regress-443744
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/804993004
Cr-Commit-Position: refs/heads/master@{#25901}
2014-12-19 12:53:29 +00:00
Benedikt Meurer
14409abc22
[turbofan] Quickfix for invalid number truncation of typed array loads.
...
TEST=mjsunit/compiler/regress-int32array-outofbounds-nan
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/803483002
Cr-Commit-Position: refs/heads/master@{#25793}
2014-12-12 10:45:38 +00:00
Benedikt Meurer
19418d76df
[x64] Fix optimization for certain checked load/stores.
...
BUG=chromium:439743
LOG=y
TEST=mjsunit
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/733893008
Cr-Commit-Position: refs/heads/master@{#25731}
2014-12-10 07:49:12 +00:00
Benedikt Meurer
48a6766e78
[x86] Disable invalid checked load/store optimization.
...
TEST=mjsunit/compiler/regress-lena
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/784153006
Cr-Commit-Position: refs/heads/master@{#25722}
2014-12-09 14:16:34 +00:00