Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (97152 => 97153)
--- trunk/Source/_javascript_Core/ChangeLog 2011-10-11 14:43:45 UTC (rev 97152)
+++ trunk/Source/_javascript_Core/ChangeLog 2011-10-11 16:02:52 UTC (rev 97153)
@@ -1,3 +1,48 @@
+2011-10-11 Gavin Barraclough <[email protected]>
+
+ Switch RegisterSizedBoolean/dfgConvertJSValueToInt32 return type to size_t
+ https://bugs.webkit.org/show_bug.cgi?id=69821
+
+ Reviewed by Filip Pizlo.
+
+ Operations returning types Z (int32_t) and B (RegisterSizedBoolean - implemented as an
+ intptr_t) are indistinguishable on 32-bit Linux, preventing the DFG JIT from building.
+
+ dfgConvertJSValueToInt32 would be better returning a value known to be register sized, for
+ JSVALUE64 (we currently zero-extend in JIT code, potentially introducing an unnecessary
+ move), so by switching all associated operations to return a size_t we can fix the type
+ problem on Linux & make it a small tweak that removes an unnecessary instruction.
+
+ * dfg/DFGJITCodeGenerator.cpp:
+ (JSC::DFG::JITCodeGenerator::nonSpeculativeCompare):
+ - comparisons now return a size_t.
+ * dfg/DFGJITCodeGenerator.h:
+ (JSC::DFG::callOperation):
+ - Removed Z_DFGOperation_EJ form.
+ * dfg/DFGJITCodeGenerator32_64.cpp:
+ (JSC::DFG::JITCodeGenerator::nonSpeculativePeepholeBranch):
+ (JSC::DFG::JITCodeGenerator::nonSpeculativeNonPeepholeCompare):
+ - comparisons now return a size_t.
+ * dfg/DFGJITCodeGenerator64.cpp:
+ (JSC::DFG::JITCodeGenerator::nonSpeculativeValueToInt32):
+ (JSC::DFG::JITCodeGenerator::nonSpeculativePeepholeBranch):
+ (JSC::DFG::JITCodeGenerator::nonSpeculativeNonPeepholeCompare):
+ - comparisons now return a size_t.
+ * dfg/DFGOperations.cpp:
+ * dfg/DFGOperations.h:
+ - Change return types for comparison operations & dfgConvertJSValueToInt32 to size_t,
+ Both need to return values zero extended to fill a register.
+ * dfg/DFGSpeculativeJIT.cpp:
+ (JSC::DFG::SpeculativeJIT::compilePeepHoleBranch):
+ - comparisons now return a size_t.
+ * dfg/DFGSpeculativeJIT.h:
+ * dfg/DFGSpeculativeJIT32_64.cpp:
+ (JSC::DFG::SpeculativeJIT::compare):
+ - comparisons now return a size_t.
+ * dfg/DFGSpeculativeJIT64.cpp:
+ (JSC::DFG::SpeculativeJIT::compare):
+ - comparisons now return a size_t.
+
2011-10-11 Tor Arne Vestbø <[email protected]>
[Qt] Remove all references to QTDIR_build and standalone_package
Modified: trunk/Source/_javascript_Core/dfg/DFGJITCodeGenerator.cpp (97152 => 97153)
--- trunk/Source/_javascript_Core/dfg/DFGJITCodeGenerator.cpp 2011-10-11 14:43:45 UTC (rev 97152)
+++ trunk/Source/_javascript_Core/dfg/DFGJITCodeGenerator.cpp 2011-10-11 16:02:52 UTC (rev 97153)
@@ -345,7 +345,7 @@
#endif
}
-bool JITCodeGenerator::nonSpeculativeCompare(Node& node, MacroAssembler::RelationalCondition cond, B_DFGOperation_EJJ helperFunction)
+bool JITCodeGenerator::nonSpeculativeCompare(Node& node, MacroAssembler::RelationalCondition cond, S_DFGOperation_EJJ helperFunction)
{
NodeIndex branchNodeIndex = detectPeepHoleBranch();
if (branchNodeIndex != NoNode) {
Modified: trunk/Source/_javascript_Core/dfg/DFGJITCodeGenerator.h (97152 => 97153)
--- trunk/Source/_javascript_Core/dfg/DFGJITCodeGenerator.h 2011-10-11 14:43:45 UTC (rev 97152)
+++ trunk/Source/_javascript_Core/dfg/DFGJITCodeGenerator.h 2011-10-11 16:02:52 UTC (rev 97153)
@@ -747,9 +747,9 @@
void nonSpeculativePeepholeBranchNull(NodeIndex operand, NodeIndex branchNodeIndex, bool invert = false);
bool nonSpeculativeCompareNull(Node&, NodeIndex operand, bool invert = false);
- void nonSpeculativePeepholeBranch(Node&, NodeIndex branchNodeIndex, MacroAssembler::RelationalCondition, B_DFGOperation_EJJ helperFunction);
- void nonSpeculativeNonPeepholeCompare(Node&, MacroAssembler::RelationalCondition, B_DFGOperation_EJJ helperFunction);
- bool nonSpeculativeCompare(Node&, MacroAssembler::RelationalCondition, B_DFGOperation_EJJ helperFunction);
+ void nonSpeculativePeepholeBranch(Node&, NodeIndex branchNodeIndex, MacroAssembler::RelationalCondition, S_DFGOperation_EJJ helperFunction);
+ void nonSpeculativeNonPeepholeCompare(Node&, MacroAssembler::RelationalCondition, S_DFGOperation_EJJ helperFunction);
+ bool nonSpeculativeCompare(Node&, MacroAssembler::RelationalCondition, S_DFGOperation_EJJ helperFunction);
void nonSpeculativePeepholeStrictEq(Node&, NodeIndex branchNodeIndex, bool invert = false);
void nonSpeculativeNonPeepholeStrictEq(Node&, bool invert = false);
@@ -1100,14 +1100,14 @@
return appendCallWithExceptionCheckSetResult(operation, result);
}
- JITCompiler::Call callOperation(B_DFGOperation_EJ operation, GPRReg result, GPRReg arg1)
+ JITCompiler::Call callOperation(S_DFGOperation_EJ operation, GPRReg result, GPRReg arg1)
{
m_jit.move(arg1, GPRInfo::argumentGPR1);
m_jit.move(GPRInfo::callFrameRegister, GPRInfo::argumentGPR0);
return appendCallWithExceptionCheckSetResult(operation, result);
}
- JITCompiler::Call callOperation(B_DFGOperation_EJJ operation, GPRReg result, GPRReg arg1, GPRReg arg2)
+ JITCompiler::Call callOperation(S_DFGOperation_EJJ operation, GPRReg result, GPRReg arg1, GPRReg arg2)
{
setupStubArguments(arg1, arg2);
m_jit.move(GPRInfo::callFrameRegister, GPRInfo::argumentGPR0);
@@ -1182,13 +1182,6 @@
return appendCallWithExceptionCheck(operation);
}
- JITCompiler::Call callOperation(Z_DFGOperation_EJ operation, GPRReg result, GPRReg arg1)
- {
- m_jit.move(arg1, GPRInfo::argumentGPR1);
- m_jit.move(GPRInfo::callFrameRegister, GPRInfo::argumentGPR0);
-
- return appendCallWithExceptionCheckSetResult(operation, result);
- }
JITCompiler::Call callOperation(D_DFGOperation_EJ operation, FPRReg result, GPRReg arg1)
{
m_jit.move(arg1, GPRInfo::argumentGPR1);
@@ -1326,7 +1319,7 @@
return appendCallWithExceptionCheckSetResult(operation, result);
}
- JITCompiler::Call callOperation(B_DFGOperation_EJ operation, GPRReg result, GPRReg arg1Tag, GPRReg arg1Payload)
+ JITCompiler::Call callOperation(S_DFGOperation_EJ operation, GPRReg result, GPRReg arg1Tag, GPRReg arg1Payload)
{
m_jit.push(arg1Tag);
m_jit.push(arg1Payload);
@@ -1334,7 +1327,7 @@
return appendCallWithExceptionCheckSetResult(operation, result);
}
- JITCompiler::Call callOperation(B_DFGOperation_EJJ operation, GPRReg result, GPRReg arg1Tag, GPRReg arg1Payload, GPRReg arg2Tag, GPRReg arg2Payload)
+ JITCompiler::Call callOperation(S_DFGOperation_EJJ operation, GPRReg result, GPRReg arg1Tag, GPRReg arg1Payload, GPRReg arg2Tag, GPRReg arg2Payload)
{
m_jit.push(arg2Tag);
m_jit.push(arg2Payload);
@@ -1423,14 +1416,6 @@
return callOperation((V_DFGOperation_EPZJ)operation, arg1, arg2, arg3Tag, arg3Payload);
}
- JITCompiler::Call callOperation(Z_DFGOperation_EJ operation, GPRReg result, GPRReg arg1Tag, GPRReg arg1Payload)
- {
- m_jit.push(arg1Tag);
- m_jit.push(arg1Payload);
- m_jit.push(GPRInfo::callFrameRegister);
-
- return appendCallWithExceptionCheckSetResult(operation, result);
- }
JITCompiler::Call callOperation(D_DFGOperation_EJ operation, FPRReg result, GPRReg arg1Tag, GPRReg arg1Payload)
{
m_jit.push(arg1Tag);
Modified: trunk/Source/_javascript_Core/dfg/DFGJITCodeGenerator32_64.cpp (97152 => 97153)
--- trunk/Source/_javascript_Core/dfg/DFGJITCodeGenerator32_64.cpp 2011-10-11 14:43:45 UTC (rev 97152)
+++ trunk/Source/_javascript_Core/dfg/DFGJITCodeGenerator32_64.cpp 2011-10-11 16:02:52 UTC (rev 97153)
@@ -1025,7 +1025,7 @@
return false;
}
-void JITCodeGenerator::nonSpeculativePeepholeBranch(Node& node, NodeIndex branchNodeIndex, MacroAssembler::RelationalCondition cond, B_DFGOperation_EJJ helperFunction)
+void JITCodeGenerator::nonSpeculativePeepholeBranch(Node& node, NodeIndex branchNodeIndex, MacroAssembler::RelationalCondition cond, S_DFGOperation_EJJ helperFunction)
{
Node& branchNode = at(branchNodeIndex);
BlockIndex taken = m_jit.graph().blockIndexForBytecodeOffset(branchNode.takenBytecodeOffset());
@@ -1094,7 +1094,7 @@
addBranch(m_jit.jump(), notTaken);
}
-void JITCodeGenerator::nonSpeculativeNonPeepholeCompare(Node& node, MacroAssembler::RelationalCondition cond, B_DFGOperation_EJJ helperFunction)
+void JITCodeGenerator::nonSpeculativeNonPeepholeCompare(Node& node, MacroAssembler::RelationalCondition cond, S_DFGOperation_EJJ helperFunction)
{
JSValueOperand arg1(this, node.child1());
JSValueOperand arg2(this, node.child2());
Modified: trunk/Source/_javascript_Core/dfg/DFGJITCodeGenerator64.cpp (97152 => 97153)
--- trunk/Source/_javascript_Core/dfg/DFGJITCodeGenerator64.cpp 2011-10-11 14:43:45 UTC (rev 97152)
+++ trunk/Source/_javascript_Core/dfg/DFGJITCodeGenerator64.cpp 2011-10-11 16:02:52 UTC (rev 97153)
@@ -448,8 +448,7 @@
// First handle non-integers
silentSpillAllRegisters(resultGPR);
- callOperation(dfgConvertJSValueToInt32, GPRInfo::returnValueGPR, jsValueGpr);
- m_jit.zeroExtend32ToPtr(GPRInfo::returnValueGPR, resultGPR);
+ callOperation(dfgConvertJSValueToInt32, resultGPR, jsValueGpr);
silentFillAllRegisters(resultGPR);
JITCompiler::Jump hasCalledToInt32 = m_jit.jump();
@@ -986,7 +985,7 @@
return false;
}
-void JITCodeGenerator::nonSpeculativePeepholeBranch(Node& node, NodeIndex branchNodeIndex, MacroAssembler::RelationalCondition cond, B_DFGOperation_EJJ helperFunction)
+void JITCodeGenerator::nonSpeculativePeepholeBranch(Node& node, NodeIndex branchNodeIndex, MacroAssembler::RelationalCondition cond, S_DFGOperation_EJJ helperFunction)
{
Node& branchNode = at(branchNodeIndex);
BlockIndex taken = m_jit.graph().blockIndexForBytecodeOffset(branchNode.takenBytecodeOffset());
@@ -1053,7 +1052,7 @@
addBranch(m_jit.jump(), notTaken);
}
-void JITCodeGenerator::nonSpeculativeNonPeepholeCompare(Node& node, MacroAssembler::RelationalCondition cond, B_DFGOperation_EJJ helperFunction)
+void JITCodeGenerator::nonSpeculativeNonPeepholeCompare(Node& node, MacroAssembler::RelationalCondition cond, S_DFGOperation_EJJ helperFunction)
{
JSValueOperand arg1(this, node.child1());
JSValueOperand arg2(this, node.child2());
Modified: trunk/Source/_javascript_Core/dfg/DFGOperations.cpp (97152 => 97153)
--- trunk/Source/_javascript_Core/dfg/DFGOperations.cpp 2011-10-11 14:43:45 UTC (rev 97152)
+++ trunk/Source/_javascript_Core/dfg/DFGOperations.cpp 2011-10-11 16:02:52 UTC (rev 97153)
@@ -495,32 +495,32 @@
stubInfo.seen = true;
}
-RegisterSizedBoolean DFG_OPERATION operationCompareLess(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2)
+size_t DFG_OPERATION operationCompareLess(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2)
{
return jsLess<true>(exec, JSValue::decode(encodedOp1), JSValue::decode(encodedOp2));
}
-RegisterSizedBoolean DFG_OPERATION operationCompareLessEq(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2)
+size_t DFG_OPERATION operationCompareLessEq(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2)
{
return jsLessEq<true>(exec, JSValue::decode(encodedOp1), JSValue::decode(encodedOp2));
}
-RegisterSizedBoolean DFG_OPERATION operationCompareGreater(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2)
+size_t DFG_OPERATION operationCompareGreater(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2)
{
return jsLess<false>(exec, JSValue::decode(encodedOp2), JSValue::decode(encodedOp1));
}
-RegisterSizedBoolean DFG_OPERATION operationCompareGreaterEq(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2)
+size_t DFG_OPERATION operationCompareGreaterEq(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2)
{
return jsLessEq<false>(exec, JSValue::decode(encodedOp2), JSValue::decode(encodedOp1));
}
-RegisterSizedBoolean DFG_OPERATION operationCompareEq(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2)
+size_t DFG_OPERATION operationCompareEq(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2)
{
return JSValue::equalSlowCaseInline(exec, JSValue::decode(encodedOp1), JSValue::decode(encodedOp2));
}
-RegisterSizedBoolean DFG_OPERATION operationCompareStrictEqCell(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2)
+size_t DFG_OPERATION operationCompareStrictEqCell(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2)
{
JSValue op1 = JSValue::decode(encodedOp1);
JSValue op2 = JSValue::decode(encodedOp2);
@@ -531,7 +531,7 @@
return JSValue::strictEqualSlowCaseInline(exec, op1, op2);
}
-RegisterSizedBoolean DFG_OPERATION operationCompareStrictEq(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2)
+size_t DFG_OPERATION operationCompareStrictEq(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2)
{
return JSValue::strictEqual(exec, JSValue::decode(encodedOp1), JSValue::decode(encodedOp2));
}
@@ -817,12 +817,13 @@
return JSValue::decode(value).toNumber(exec);
}
-int32_t DFG_OPERATION dfgConvertJSValueToInt32(ExecState* exec, EncodedJSValue value)
+size_t DFG_OPERATION dfgConvertJSValueToInt32(ExecState* exec, EncodedJSValue value)
{
- return JSValue::decode(value).toInt32(exec);
+ // toInt32/toUInt32 return the same value; we want the value zero extended to fill the register.
+ return JSValue::decode(value).toUInt32(exec);
}
-RegisterSizedBoolean DFG_OPERATION dfgConvertJSValueToBoolean(ExecState* exec, EncodedJSValue encodedOp)
+size_t DFG_OPERATION dfgConvertJSValueToBoolean(ExecState* exec, EncodedJSValue encodedOp)
{
return JSValue::decode(encodedOp).toBoolean(exec);
}
Modified: trunk/Source/_javascript_Core/dfg/DFGOperations.h (97152 => 97153)
--- trunk/Source/_javascript_Core/dfg/DFGOperations.h 2011-10-11 14:43:45 UTC (rev 97152)
+++ trunk/Source/_javascript_Core/dfg/DFGOperations.h 2011-10-11 16:02:52 UTC (rev 97153)
@@ -38,8 +38,6 @@
enum PutKind { Direct, NotDirect };
-typedef intptr_t RegisterSizedBoolean;
-
extern "C" {
#if CALLING_CONVENTION_IS_CDECL
@@ -60,7 +58,6 @@
S: size_t
Z: int32_t
D: double
- B: Boolean
I: Identifier*
G: GlobalResolveInfo*
*/
@@ -79,8 +76,8 @@
typedef EncodedJSValue DFG_OPERATION (*J_DFGOperation_EPS)(ExecState*, void*, size_t);
typedef EncodedJSValue DFG_OPERATION (*J_DFGOperation_ESS)(ExecState*, size_t, size_t);
typedef EncodedJSValue DFG_OPERATION (*J_DFGOperation_EI)(ExecState*, Identifier*);
-typedef RegisterSizedBoolean DFG_OPERATION (*B_DFGOperation_EJ)(ExecState*, EncodedJSValue);
-typedef RegisterSizedBoolean DFG_OPERATION (*B_DFGOperation_EJJ)(ExecState*, EncodedJSValue, EncodedJSValue);
+typedef size_t DFG_OPERATION (*S_DFGOperation_EJ)(ExecState*, EncodedJSValue);
+typedef size_t DFG_OPERATION (*S_DFGOperation_EJJ)(ExecState*, EncodedJSValue, EncodedJSValue);
typedef void DFG_OPERATION (*V_DFGOperation_EJJJ)(ExecState*, EncodedJSValue, EncodedJSValue, EncodedJSValue);
typedef void DFG_OPERATION (*V_DFGOperation_ECJJ)(ExecState*, JSCell*, EncodedJSValue, EncodedJSValue);
typedef void DFG_OPERATION (*V_DFGOperation_EJPP)(ExecState*, EncodedJSValue, EncodedJSValue, void*);
@@ -89,7 +86,6 @@
typedef void DFG_OPERATION (*V_DFGOperation_EAZJ)(ExecState*, JSArray*, int32_t, EncodedJSValue);
typedef double (*D_DFGOperation_DD)(double, double); // Using default calling conventions!
typedef double DFG_OPERATION (*D_DFGOperation_EJ)(ExecState*, EncodedJSValue);
-typedef int32_t DFG_OPERATION (*Z_DFGOperation_EJ)(ExecState*, EncodedJSValue);
typedef void* DFG_OPERATION (*P_DFGOperation_E)(ExecState*);
// These routines are provide callbacks out to C++ implementations of operations too complex to JIT.
@@ -129,13 +125,14 @@
void DFG_OPERATION operationPutByIdNonStrictOptimize(ExecState*, EncodedJSValue encodedValue, JSCell* base, Identifier*);
void DFG_OPERATION operationPutByIdDirectStrictOptimize(ExecState*, EncodedJSValue encodedValue, JSCell* base, Identifier*);
void DFG_OPERATION operationPutByIdDirectNonStrictOptimize(ExecState*, EncodedJSValue encodedValue, JSCell* base, Identifier*);
-RegisterSizedBoolean DFG_OPERATION operationCompareLess(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
-RegisterSizedBoolean DFG_OPERATION operationCompareLessEq(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
-RegisterSizedBoolean DFG_OPERATION operationCompareGreater(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
-RegisterSizedBoolean DFG_OPERATION operationCompareGreaterEq(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
-RegisterSizedBoolean DFG_OPERATION operationCompareEq(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
-RegisterSizedBoolean DFG_OPERATION operationCompareStrictEqCell(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
-RegisterSizedBoolean DFG_OPERATION operationCompareStrictEq(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
+// These comparisons return a boolean within a size_t such that the value is zero extended to fill the register.
+size_t DFG_OPERATION operationCompareLess(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
+size_t DFG_OPERATION operationCompareLessEq(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
+size_t DFG_OPERATION operationCompareGreater(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
+size_t DFG_OPERATION operationCompareGreaterEq(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
+size_t DFG_OPERATION operationCompareEq(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
+size_t DFG_OPERATION operationCompareStrictEqCell(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
+size_t DFG_OPERATION operationCompareStrictEq(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
void* DFG_OPERATION operationVirtualCall(ExecState*);
void* DFG_OPERATION operationLinkCall(ExecState*);
void* DFG_OPERATION operationVirtualConstruct(ExecState*);
@@ -157,8 +154,9 @@
// These operations implement the implicitly called ToInt32, ToNumber, and ToBoolean conversions from ES5.
double DFG_OPERATION dfgConvertJSValueToNumber(ExecState*, EncodedJSValue);
-int32_t DFG_OPERATION dfgConvertJSValueToInt32(ExecState*, EncodedJSValue);
-RegisterSizedBoolean DFG_OPERATION dfgConvertJSValueToBoolean(ExecState*, EncodedJSValue);
+// This conversion returns an int32_t within a size_t such that the value is zero extended to fill the register.
+size_t DFG_OPERATION dfgConvertJSValueToInt32(ExecState*, EncodedJSValue);
+size_t DFG_OPERATION dfgConvertJSValueToBoolean(ExecState*, EncodedJSValue);
#if ENABLE(DFG_VERBOSE_SPECULATION_FAILURE)
void DFG_OPERATION debugOperationPrintSpeculationFailure(ExecState*, void*);
Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.cpp (97152 => 97153)
--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.cpp 2011-10-11 14:43:45 UTC (rev 97152)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.cpp 2011-10-11 16:02:52 UTC (rev 97153)
@@ -201,7 +201,7 @@
}
// Returns true if the compare is fused with a subsequent branch.
-bool SpeculativeJIT::compilePeepHoleBranch(Node& node, MacroAssembler::RelationalCondition condition, MacroAssembler::DoubleCondition doubleCondition, B_DFGOperation_EJJ operation)
+bool SpeculativeJIT::compilePeepHoleBranch(Node& node, MacroAssembler::RelationalCondition condition, MacroAssembler::DoubleCondition doubleCondition, S_DFGOperation_EJJ operation)
{
// Fused compare & branch.
NodeIndex branchNodeIndex = detectPeepHoleBranch();
Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.h (97152 => 97153)
--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.h 2011-10-11 14:43:45 UTC (rev 97152)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.h 2011-10-11 16:02:52 UTC (rev 97153)
@@ -460,8 +460,8 @@
}
}
- bool compare(Node&, MacroAssembler::RelationalCondition, MacroAssembler::DoubleCondition, B_DFGOperation_EJJ);
- bool compilePeepHoleBranch(Node&, MacroAssembler::RelationalCondition, MacroAssembler::DoubleCondition, B_DFGOperation_EJJ);
+ bool compare(Node&, MacroAssembler::RelationalCondition, MacroAssembler::DoubleCondition, S_DFGOperation_EJJ);
+ bool compilePeepHoleBranch(Node&, MacroAssembler::RelationalCondition, MacroAssembler::DoubleCondition, S_DFGOperation_EJJ);
void compilePeepHoleIntegerBranch(Node&, NodeIndex branchNodeIndex, JITCompiler::RelationalCondition);
void compilePeepHoleDoubleBranch(Node&, NodeIndex branchNodeIndex, JITCompiler::DoubleCondition);
void compilePeepHoleObjectEquality(Node&, NodeIndex branchNodeIndex, void* vptr);
Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp (97152 => 97153)
--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp 2011-10-11 14:43:45 UTC (rev 97152)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp 2011-10-11 16:02:52 UTC (rev 97153)
@@ -375,7 +375,7 @@
}
// Returns true if the compare is fused with a subsequent branch.
-bool SpeculativeJIT::compare(Node& node, MacroAssembler::RelationalCondition condition, MacroAssembler::DoubleCondition doubleCondition, B_DFGOperation_EJJ operation)
+bool SpeculativeJIT::compare(Node& node, MacroAssembler::RelationalCondition condition, MacroAssembler::DoubleCondition doubleCondition, S_DFGOperation_EJJ operation)
{
if (compilePeepHoleBranch(node, condition, doubleCondition, operation))
return true;
Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp (97152 => 97153)
--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp 2011-10-11 14:43:45 UTC (rev 97152)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp 2011-10-11 16:02:52 UTC (rev 97153)
@@ -513,7 +513,7 @@
}
// Returns true if the compare is fused with a subsequent branch.
-bool SpeculativeJIT::compare(Node& node, MacroAssembler::RelationalCondition condition, MacroAssembler::DoubleCondition doubleCondition, B_DFGOperation_EJJ operation)
+bool SpeculativeJIT::compare(Node& node, MacroAssembler::RelationalCondition condition, MacroAssembler::DoubleCondition doubleCondition, S_DFGOperation_EJJ operation)
{
if (compilePeepHoleBranch(node, condition, doubleCondition, operation))
return true;