Changeset 243344 in webkit
- Timestamp:
- Mar 21, 2019, 4:34:31 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 3 edited
-
JSTests/ChangeLog (modified) (1 diff)
-
JSTests/stress/dfg-compare-eq-via-nonSpeculativeNonPeepholeCompareNullOrUndefined.js (added)
-
Source/JavaScriptCore/ChangeLog (modified) (1 diff)
-
Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/JSTests/ChangeLog
r243299 r243344 1 2019-03-21 Mark Lam <mark.lam@apple.com> 2 3 Remove an invalid assertion in DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNullOrUndefined(). 4 https://bugs.webkit.org/show_bug.cgi?id=196116 5 <rdar://problem/48976951> 6 7 Reviewed by Filip Pizlo. 8 9 * stress/dfg-compare-eq-via-nonSpeculativeNonPeepholeCompareNullOrUndefined.js: Added. 10 1 11 2019-03-21 Tadeu Zagallo <tzagallo@apple.com> 2 12 -
trunk/Source/JavaScriptCore/ChangeLog
r243335 r243344 1 2019-03-21 Mark Lam <mark.lam@apple.com> 2 3 Remove an invalid assertion in DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNullOrUndefined(). 4 https://bugs.webkit.org/show_bug.cgi?id=196116 5 <rdar://problem/48976951> 6 7 Reviewed by Filip Pizlo. 8 9 The DFG backend should not make assumptions about what optimizations the front end 10 will or will not do. The assertion asserts that the operand cannot be known to be 11 a cell. However, it is not guaranteed that the front end will fold away this case. 12 Also, the DFG backend is perfectly capable of generating code to handle the case 13 where the operand is a cell. 14 15 The attached test case demonstrates a case where the operand can be a known cell. 16 The test needs to be run with the concurrent JIT and GC, and is racy. It used to 17 trip up this assertion about once every 10 runs or so. 18 19 * dfg/DFGSpeculativeJIT64.cpp: 20 (JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNullOrUndefined): 21 1 22 2019-03-21 Tadeu Zagallo <tzagallo@apple.com> 2 23 -
trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp
r243232 r243344 218 218 void SpeculativeJIT::nonSpeculativeNonPeepholeCompareNullOrUndefined(Edge operand) 219 219 { 220 ASSERT_WITH_MESSAGE(!masqueradesAsUndefinedWatchpointIsStillValid() || !isKnownCell(operand.node()), "The Compare should have been eliminated, it is known to be always false.");221 222 220 JSValueOperand arg(this, operand, ManualOperandSpeculation); 223 221 GPRReg argGPR = arg.gpr();
Note:
See TracChangeset
for help on using the changeset viewer.