Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (230576 => 230577)
--- trunk/Source/_javascript_Core/ChangeLog 2018-04-12 15:51:10 UTC (rev 230576)
+++ trunk/Source/_javascript_Core/ChangeLog 2018-04-12 16:11:22 UTC (rev 230577)
@@ -1,3 +1,19 @@
+2018-04-12 Yusuke Suzuki <[email protected]>
+
+ [DFG] Remove compileBigIntEquality in DFG 32bit
+ https://bugs.webkit.org/show_bug.cgi?id=184535
+
+ Reviewed by Saam Barati.
+
+ We can have the unified implementation for compileBigIntEquality.
+
+ * dfg/DFGSpeculativeJIT.cpp:
+ (JSC::DFG::SpeculativeJIT::compileBigIntEquality):
+ * dfg/DFGSpeculativeJIT32_64.cpp:
+ (JSC::DFG::SpeculativeJIT::compileBigIntEquality): Deleted.
+ * dfg/DFGSpeculativeJIT64.cpp:
+ (JSC::DFG::SpeculativeJIT::compileBigIntEquality): Deleted.
+
2018-04-12 Michael Catanzaro <[email protected]>
[WPE] Improve include hierarchy
Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.cpp (230576 => 230577)
--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.cpp 2018-04-12 15:51:10 UTC (rev 230576)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.cpp 2018-04-12 16:11:22 UTC (rev 230577)
@@ -12940,6 +12940,40 @@
m_currentNode = branchNode;
}
+void SpeculativeJIT::compileBigIntEquality(Node* node)
+{
+ // FIXME: [ESNext][BigInt] Create specialized version of strict equals for BigIntUse
+ // https://bugs.webkit.org/show_bug.cgi?id=182895
+ SpeculateCellOperand left(this, node->child1());
+ SpeculateCellOperand right(this, node->child2());
+ GPRTemporary result(this, Reuse, left);
+ GPRReg leftGPR = left.gpr();
+ GPRReg rightGPR = right.gpr();
+ GPRReg resultGPR = result.gpr();
+
+ left.use();
+ right.use();
+
+ speculateBigInt(node->child1(), leftGPR);
+ speculateBigInt(node->child2(), rightGPR);
+
+ JITCompiler::Jump notEqualCase = m_jit.branchPtr(JITCompiler::NotEqual, leftGPR, rightGPR);
+
+ m_jit.move(JITCompiler::TrustedImm32(1), resultGPR);
+
+ JITCompiler::Jump done = m_jit.jump();
+
+ notEqualCase.link(&m_jit);
+
+ silentSpillAllRegisters(resultGPR);
+ callOperation(operationCompareStrictEqCell, resultGPR, leftGPR, rightGPR);
+ silentFillAllRegisters();
+
+ done.link(&m_jit);
+
+ unblessedBooleanResult(resultGPR, node, UseChildrenCalledExplicitly);
+}
+
} } // namespace JSC::DFG
#endif
Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp (230576 => 230577)
--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp 2018-04-12 15:51:10 UTC (rev 230576)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp 2018-04-12 16:11:22 UTC (rev 230577)
@@ -4267,42 +4267,6 @@
doubleResult(result.fpr(), node);
}
-void SpeculativeJIT::compileBigIntEquality(Node* node)
-{
- // FIXME: [ESNext][BigInt] Create specialized version of strict equals for BigIntUse
- // https://bugs.webkit.org/show_bug.cgi?id=182895
- SpeculateCellOperand left(this, node->child1());
- SpeculateCellOperand right(this, node->child2());
- GPRReg leftPayloadGPR = left.gpr();
- GPRReg rightPayloadGPR = right.gpr();
-
- GPRTemporary resultPayload(this, Reuse, left);
- GPRReg resultPayloadGPR = resultPayload.gpr();
-
- left.use();
- right.use();
-
- speculateBigInt(node->child1(), leftPayloadGPR);
- speculateBigInt(node->child2(), rightPayloadGPR);
-
- JITCompiler::Jump notEqualCase = m_jit.branchPtr(JITCompiler::NotEqual, leftPayloadGPR, rightPayloadGPR);
-
- m_jit.move(JITCompiler::TrustedImm32(true), resultPayloadGPR);
- JITCompiler::Jump done = m_jit.jump();
-
- notEqualCase.link(&m_jit);
-
- silentSpillAllRegisters(resultPayloadGPR);
- callOperation(operationCompareStrictEqCell, resultPayloadGPR, leftPayloadGPR, rightPayloadGPR);
- silentFillAllRegisters();
-
- m_jit.andPtr(JITCompiler::TrustedImm32(1), resultPayloadGPR);
-
- done.link(&m_jit);
-
- booleanResult(resultPayloadGPR, node, UseChildrenCalledExplicitly);
-}
-
#endif
} } // namespace JSC::DFG
Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp (230576 => 230577)
--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp 2018-04-12 15:51:10 UTC (rev 230576)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp 2018-04-12 16:11:22 UTC (rev 230577)
@@ -4907,43 +4907,6 @@
doubleResult(result.fpr(), node);
}
-void SpeculativeJIT::compileBigIntEquality(Node* node)
-{
- // FIXME: [ESNext][BigInt] Create specialized version of strict equals for BigIntUse
- // https://bugs.webkit.org/show_bug.cgi?id=182895
- SpeculateCellOperand left(this, node->child1());
- SpeculateCellOperand right(this, node->child2());
- GPRTemporary result(this);
- GPRReg leftGPR = left.gpr();
- GPRReg rightGPR = right.gpr();
- GPRReg resultGPR = result.gpr();
-
- left.use();
- right.use();
-
- speculateBigInt(node->child1(), leftGPR);
- speculateBigInt(node->child2(), rightGPR);
-
- JITCompiler::Jump notEqualCase = m_jit.branch64(JITCompiler::NotEqual, leftGPR, rightGPR);
-
- m_jit.move(JITCompiler::TrustedImm64(JSValue::encode(jsBoolean(true))), resultGPR);
-
- JITCompiler::Jump done = m_jit.jump();
-
- notEqualCase.link(&m_jit);
-
- silentSpillAllRegisters(resultGPR);
- callOperation(operationCompareStrictEqCell, resultGPR, leftGPR, rightGPR);
- silentFillAllRegisters();
-
- m_jit.and64(JITCompiler::TrustedImm32(1), resultGPR);
- m_jit.or32(JITCompiler::TrustedImm32(ValueFalse), resultGPR);
-
- done.link(&m_jit);
-
- jsValueResult(resultGPR, m_currentNode, DataFormatJSBoolean, UseChildrenCalledExplicitly);
-}
-
#endif
} } // namespace JSC::DFG