Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (99764 => 99765)
--- trunk/Source/_javascript_Core/ChangeLog 2011-11-09 22:58:30 UTC (rev 99764)
+++ trunk/Source/_javascript_Core/ChangeLog 2011-11-09 23:05:03 UTC (rev 99765)
@@ -1,3 +1,31 @@
+2011-11-09 Gavin Barraclough <[email protected]>
+
+ https://bugs.webkit.org/show_bug.cgi?id=71873
+
+ Reviewed by Geoff Garen.
+
+ Incrementally re-landing these changes, trying to determine what went wrong.
+ (The whole patch failed tests on the build bot but worked locally.
+
+ * assembler/MacroAssemblerARM.h:
+ (JSC::MacroAssemblerARM::absDouble):
+ * assembler/MacroAssemblerARMv7.h:
+ * assembler/MacroAssemblerMIPS.h:
+ (JSC::MacroAssemblerMIPS::absDouble):
+ * assembler/MacroAssemblerSH4.h:
+ (JSC::MacroAssemblerSH4::absDouble):
+ * assembler/MacroAssemblerX86.h:
+ (JSC::MacroAssemblerX86::absDouble):
+ * assembler/MacroAssemblerX86Common.h:
+ * assembler/MacroAssemblerX86_64.h:
+ (JSC::MacroAssemblerX86_64::absDouble):
+ * dfg/DFGSpeculativeJIT32_64.cpp:
+ (JSC::DFG::SpeculativeJIT::compile):
+ * dfg/DFGSpeculativeJIT64.cpp:
+ (JSC::DFG::SpeculativeJIT::compile):
+ * jit/ThunkGenerators.cpp:
+ (JSC::absThunkGenerator):
+
2011-11-09 Mark Hahnenberg <[email protected]>
De-virtualize JSObject::getOwnPropertyDescriptor
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerARM.h (99764 => 99765)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerARM.h 2011-11-09 22:58:30 UTC (rev 99764)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerARM.h 2011-11-09 23:05:03 UTC (rev 99765)
@@ -862,7 +862,7 @@
m_assembler.vsqrt_f64_r(dest, src);
}
- void andnotDouble(FPRegisterID, FPRegisterID)
+ void absDouble(FPRegisterID, FPRegisterID)
{
ASSERT_NOT_REACHED();
}
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerARMv7.h (99764 => 99765)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerARMv7.h 2011-11-09 22:58:30 UTC (rev 99764)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerARMv7.h 2011-11-09 23:05:03 UTC (rev 99765)
@@ -663,7 +663,7 @@
ASSERT_NOT_REACHED();
}
- void andnotDouble(FPRegisterID, FPRegisterID) NO_RETURN_DUE_TO_ASSERT
+ void absDouble(FPRegisterID, FPRegisterID) NO_RETURN_DUE_TO_ASSERT
{
ASSERT_NOT_REACHED();
}
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerMIPS.h (99764 => 99765)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerMIPS.h 2011-11-09 22:58:30 UTC (rev 99764)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerMIPS.h 2011-11-09 23:05:03 UTC (rev 99765)
@@ -471,7 +471,7 @@
m_assembler.sqrtd(dst, src);
}
- void andnotDouble(FPRegisterID, FPRegisterID)
+ void absDouble(FPRegisterID, FPRegisterID)
{
ASSERT_NOT_REACHED();
}
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerSH4.h (99764 => 99765)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerSH4.h 2011-11-09 22:58:30 UTC (rev 99764)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerSH4.h 2011-11-09 23:05:03 UTC (rev 99765)
@@ -1129,7 +1129,7 @@
m_assembler.dsqrt(dest);
}
- void andnotDouble(FPRegisterID, FPRegisterID)
+ void absDouble(FPRegisterID, FPRegisterID)
{
ASSERT_NOT_REACHED();
}
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerX86.h (99764 => 99765)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerX86.h 2011-11-09 22:58:30 UTC (rev 99764)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerX86.h 2011-11-09 23:05:03 UTC (rev 99765)
@@ -108,6 +108,14 @@
m_assembler.cvtsi2sd_mr(src.m_ptr, dest);
}
+ void absDouble(FPRegisterID src, FPRegisterID dst)
+ {
+ ASSERT(src != dst);
+ static const double negativeZeroConstant = -0.0;
+ loadDouble(&negativeZeroConstant, dst);
+ m_assembler.andnpd_rr(src, dst);
+ }
+
void store32(TrustedImm32 imm, void* address)
{
m_assembler.movl_i32m(imm.m_value, address);
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.h (99764 => 99765)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.h 2011-11-09 22:58:30 UTC (rev 99764)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.h 2011-11-09 23:05:03 UTC (rev 99765)
@@ -424,11 +424,6 @@
m_assembler.sqrtsd_rr(src, dst);
}
- void andnotDouble(FPRegisterID src, FPRegisterID dst)
- {
- m_assembler.andnpd_rr(src, dst);
- }
-
// Memory access operations:
//
// Loads are of the form load(address, destination) and stores of the form
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerX86_64.h (99764 => 99765)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerX86_64.h 2011-11-09 22:58:30 UTC (rev 99764)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerX86_64.h 2011-11-09 23:05:03 UTC (rev 99765)
@@ -105,6 +105,14 @@
m_assembler.cvtsi2sd_rr(scratchRegister, dest);
}
+ void absDouble(FPRegisterID src, FPRegisterID dst)
+ {
+ ASSERT(src != dst);
+ static const double negativeZeroConstant = -0.0;
+ loadDouble(&negativeZeroConstant, dst);
+ m_assembler.andnpd_rr(src, dst);
+ }
+
void store32(TrustedImm32 imm, void* address)
{
move(TrustedImmPtr(address), scratchRegister);
Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp (99764 => 99765)
--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp 2011-11-09 22:58:30 UTC (rev 99764)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp 2011-11-09 23:05:03 UTC (rev 99765)
@@ -1258,10 +1258,7 @@
SpeculateDoubleOperand op1(this, node.child1());
FPRTemporary result(this);
- static const double negativeZeroConstant = -0.0;
-
- m_jit.loadDouble(&negativeZeroConstant, result.fpr());
- m_jit.andnotDouble(op1.fpr(), result.fpr());
+ m_jit.absDouble(op1.fpr(), result.fpr());
doubleResult(result.fpr(), m_compileIndex);
break;
}
Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp (99764 => 99765)
--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp 2011-11-09 22:58:30 UTC (rev 99764)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp 2011-11-09 23:05:03 UTC (rev 99765)
@@ -1308,10 +1308,7 @@
SpeculateDoubleOperand op1(this, node.child1());
FPRTemporary result(this);
- static const double negativeZeroConstant = -0.0;
-
- m_jit.loadDouble(&negativeZeroConstant, result.fpr());
- m_jit.andnotDouble(op1.fpr(), result.fpr());
+ m_jit.absDouble(op1.fpr(), result.fpr());
doubleResult(result.fpr(), m_compileIndex);
break;
}
Modified: trunk/Source/_javascript_Core/jit/ThunkGenerators.cpp (99764 => 99765)
--- trunk/Source/_javascript_Core/jit/ThunkGenerators.cpp 2011-11-09 22:58:30 UTC (rev 99764)
+++ trunk/Source/_javascript_Core/jit/ThunkGenerators.cpp 2011-11-09 23:05:03 UTC (rev 99765)
@@ -225,7 +225,6 @@
return jit.finalize(*globalData, globalData->jitStubs->ctiNativeCall());
}
-static const double negativeZeroConstant = -0.0;
static const double _oneConstant_ = 1.0;
static const double negativeHalfConstant = -0.5;
@@ -288,9 +287,8 @@
jit.returnInt32(SpecializedThunkJIT::regT0);
nonIntJump.link(&jit);
// Shame about the double int conversion here.
- jit.loadDouble(&negativeZeroConstant, SpecializedThunkJIT::fpRegT1);
jit.loadDoubleArgument(0, SpecializedThunkJIT::fpRegT0, SpecializedThunkJIT::regT0);
- jit.andnotDouble(SpecializedThunkJIT::fpRegT0, SpecializedThunkJIT::fpRegT1);
+ jit.absDouble(SpecializedThunkJIT::fpRegT0, SpecializedThunkJIT::fpRegT1);
jit.returnDouble(SpecializedThunkJIT::fpRegT1);
return jit.finalize(*globalData, globalData->jitStubs->ctiNativeCall());
}