|
[turbofan] Don't use the CompareIC in JSGenericLowering.
The CompareICStub produces an untagged raw word value, which has to be
translated to true or false manually in the TurboFan code. But for lazy
bailout after the CompareIC, we immediately go back to fullcodegen or
Ignition with the raw value, to a location where both fullcodegen and
Ignition expect a boolean value, which might crash or in the worst case
(depending on the exact computation inside the CompareIC) could lead to
arbitrary memory access.
Short-term fix is to use the proper runtime functions (unified with the
interpreter now) for comparisons. Next task is to provide optimized
versions of these based on the CodeStubAssembler, which can then be used
via code stubs in TurboFan or directly in handlers in the interpreter.
R=mstarzinger@chromium.org
BUG= v8:4788
LOG=n
Committed: https://crrev.com/d00da47b61462681b48e48bdff4a80a33da1a6d6
Cr-Commit-Position: refs/heads/master@{#34335}
|
Unified diffs |
Side-by-side diffs |
Delta from patch set |
Stats (+132 lines, -277 lines) |
Patch |
|
M |
src/arm/code-stubs-arm.cc
|
View
|
1
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
|
M |
src/arm64/code-stubs-arm64.cc
|
View
|
1
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
|
M |
src/compiler/js-generic-lowering.h
|
View
|
|
1 chunk |
+0 lines, -1 line |
0 comments
|
Download
|
|
M |
src/compiler/js-generic-lowering.cc
|
View
|
1
|
2 chunks |
+12 lines, -106 lines |
0 comments
|
Download
|
|
M |
src/ia32/code-stubs-ia32.cc
|
View
|
1
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
|
M |
src/interpreter/interpreter.cc
|
View
|
|
8 chunks |
+8 lines, -8 lines |
0 comments
|
Download
|
|
M |
src/mips/code-stubs-mips.cc
|
View
|
1
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
|
M |
src/mips64/code-stubs-mips64.cc
|
View
|
1
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
|
M |
src/objects-inl.h
|
View
|
1
2
|
1 chunk |
+4 lines, -0 lines |
0 comments
|
Download
|
|
M |
src/runtime/runtime.h
|
View
|
|
2 chunks |
+8 lines, -8 lines |
0 comments
|
Download
|
|
M |
src/runtime/runtime-interpreter.cc
|
View
|
|
1 chunk |
+0 lines, -56 lines |
0 comments
|
Download
|
|
M |
src/runtime/runtime-operators.cc
|
View
|
|
5 chunks |
+44 lines, -4 lines |
0 comments
|
Download
|
|
M |
src/x64/code-stubs-x64.cc
|
View
|
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
|
M |
test/mjsunit/mjsunit.status
|
View
|
1
|
1 chunk |
+0 lines, -1 line |
0 comments
|
Download
|
|
A |
test/mjsunit/regress/regress-4788-1.js
|
View
|
|
1 chunk |
+25 lines, -0 lines |
0 comments
|
Download
|
|
A |
test/mjsunit/regress/regress-4788-2.js
|
View
|
|
1 chunk |
+25 lines, -0 lines |
0 comments
|
Download
|
|
M |
test/unittests/runtime/runtime-interpreter-unittest.cc
|
View
|
|
2 chunks |
+0 lines, -87 lines |
0 comments
|
Download
|
Total messages: 9 (3 generated)
|