Changeset 284788 in webkit
- Timestamp:
- Oct 25, 2021, 10:02:25 AM (5 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 3 edited
-
ChangeLog (modified) (1 diff)
-
dfg/DFGFixupPhase.cpp (modified) (1 diff)
-
dfg/DFGSpeculativeJIT32_64.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r284781 r284788 1 2021-10-25 Mikhail R. Gadelha <mikhail@igalia.com> 2 3 [JSC][32bit] Don't speculate Cell on PutByVal 4 https://bugs.webkit.org/show_bug.cgi?id=232242 5 6 Reviewed by Yusuke Suzuki. 7 8 This patch is similar to https://bugs.webkit.org/show_bug.cgi?id=232052 9 but smaller: given that we have more registers available, we don't have 10 to speculate Cells anymore. 11 12 This patch removes the Cell speculation during the DFG FixUp phase and 13 adjust the operationPutByVal* calls to use the generic version (instead 14 of the Cell versions). 15 16 * dfg/DFGFixupPhase.cpp: 17 (JSC::DFG::FixupPhase::fixupNode): 18 * dfg/DFGSpeculativeJIT32_64.cpp: 19 (JSC::DFG::SpeculativeJIT::compile): 20 1 21 2021-10-25 Geza Lore <gezalore@gmail.com> 2 22 -
trunk/Source/JavaScriptCore/dfg/DFGFixupPhase.cpp
r284700 r284788 1253 1253 } 1254 1254 } 1255 #if USE(JSVALUE32_64)1256 // Due to register pressure on 32-bit, we speculate cell and1257 // ignore the base-is-not-cell case entirely by letting the1258 // baseline JIT handle it.1259 fixEdge<CellUse>(child1);1260 #endif1261 1255 break; 1262 1256 case Array::Int32: -
trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp
r284700 r284788 2741 2741 } 2742 2742 2743 SpeculateCellOperand base(this, child1); // Save a register, speculate cell. We'll probably be right.2743 JSValueOperand base(this, child1); 2744 2744 JSValueOperand property(this, child2); 2745 2745 JSValueOperand value(this, child3); 2746 GPRReg baseGPR = base.gpr();2746 JSValueRegs baseRegs = base.jsValueRegs(); 2747 2747 JSValueRegs propertyRegs = property.jsValueRegs(); 2748 2748 JSValueRegs valueRegs = value.jsValueRegs(); … … 2750 2750 flushRegisters(); 2751 2751 if (node->op() == PutByValDirect) 2752 callOperation(node->ecmaMode().isStrict() ? operationPutByValDirect CellStrict : operationPutByValDirectCellNonStrict, TrustedImmPtr::weakPointer(m_graph, m_graph.globalObjectFor(node->origin.semantic)), baseGPR,propertyRegs, valueRegs);2752 callOperation(node->ecmaMode().isStrict() ? operationPutByValDirectStrict : operationPutByValDirectNonStrict, TrustedImmPtr::weakPointer(m_graph, m_graph.globalObjectFor(node->origin.semantic)), baseRegs, propertyRegs, valueRegs); 2753 2753 else 2754 callOperation(node->ecmaMode().isStrict() ? operationPutByVal CellStrict : operationPutByValCellNonStrict, TrustedImmPtr::weakPointer(m_graph, m_graph.globalObjectFor(node->origin.semantic)), baseGPR,propertyRegs, valueRegs);2754 callOperation(node->ecmaMode().isStrict() ? operationPutByValStrict : operationPutByValNonStrict, TrustedImmPtr::weakPointer(m_graph, m_graph.globalObjectFor(node->origin.semantic)), baseRegs, propertyRegs, valueRegs); 2755 2755 m_jit.exceptionCheck(); 2756 2756
Note:
See TracChangeset
for help on using the changeset viewer.