Modified: trunk/Source/_javascript_Core/ChangeLog (151227 => 151228)
--- trunk/Source/_javascript_Core/ChangeLog 2013-06-05 17:15:47 UTC (rev 151227)
+++ trunk/Source/_javascript_Core/ChangeLog 2013-06-05 17:16:27 UTC (rev 151228)
@@ -1,3 +1,15 @@
+2013-06-05 Balazs Kilvady <[email protected]>
+
+ JSC Assertion tests failures on MIPS.
+ https://bugs.webkit.org/show_bug.cgi?id=116552
+
+ Reviewed by Geoffrey Garen.
+
+ Fix condition handlig in branchAdd32 implemetations.
+
+ * assembler/MacroAssemblerMIPS.h:
+ (JSC::MacroAssemblerMIPS::branchAdd32):
+
2013-06-04 Julien Brianceau <[email protected]>
[sh4] Add floating point absolute function support in baseline JIT.
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerMIPS.h (151227 => 151228)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerMIPS.h 2013-06-05 17:15:47 UTC (rev 151227)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerMIPS.h 2013-06-05 17:16:27 UTC (rev 151228)
@@ -1545,9 +1545,9 @@
}
if (cond == PositiveOrZero) {
add32(src, dest);
- // Check if dest is negative.
- m_assembler.slt(cmpTempRegister, MIPSRegisters::zero, dest);
- return branchNotEqual(cmpTempRegister, MIPSRegisters::zero);
+ // Check if dest is not negative.
+ m_assembler.slt(cmpTempRegister, dest, MIPSRegisters::zero);
+ return branchEqual(cmpTempRegister, MIPSRegisters::zero);
}
if (cond == Zero) {
add32(src, dest);
@@ -1563,7 +1563,7 @@
Jump branchAdd32(ResultCondition cond, RegisterID op1, RegisterID op2, RegisterID dest)
{
- ASSERT((cond == Overflow) || (cond == Signed) || (cond == Zero) || (cond == NonZero));
+ ASSERT((cond == Overflow) || (cond == Signed) || (cond == PositiveOrZero) || (cond == Zero) || (cond == NonZero));
if (cond == Overflow) {
/*
move dataTemp, op1
@@ -1596,6 +1596,12 @@
m_assembler.slt(cmpTempRegister, dest, MIPSRegisters::zero);
return branchNotEqual(cmpTempRegister, MIPSRegisters::zero);
}
+ if (cond == PositiveOrZero) {
+ add32(op1, op2, dest);
+ // Check if dest is not negative.
+ m_assembler.slt(cmpTempRegister, dest, MIPSRegisters::zero);
+ return branchEqual(cmpTempRegister, MIPSRegisters::zero);
+ }
if (cond == Zero) {
add32(op1, op2, dest);
return branchEqual(dest, MIPSRegisters::zero);
@@ -1623,7 +1629,7 @@
Jump branchAdd32(ResultCondition cond, TrustedImm32 imm, AbsoluteAddress dest)
{
- ASSERT((cond == Overflow) || (cond == Signed) || (cond == Zero) || (cond == NonZero));
+ ASSERT((cond == Overflow) || (cond == Signed) || (cond == PositiveOrZero) || (cond == Zero) || (cond == NonZero));
if (cond == Overflow) {
/*
move dataTemp, dest
@@ -1673,6 +1679,11 @@
m_assembler.slt(cmpTempRegister, dataTempRegister, MIPSRegisters::zero);
return branchNotEqual(cmpTempRegister, MIPSRegisters::zero);
}
+ if (cond == PositiveOrZero) {
+ // Check if dest is not negative.
+ m_assembler.slt(cmpTempRegister, dataTempRegister, MIPSRegisters::zero);
+ return branchEqual(cmpTempRegister, MIPSRegisters::zero);
+ }
if (cond == Zero)
return branchEqual(dataTempRegister, MIPSRegisters::zero);
if (cond == NonZero)