Modified: trunk/Source/_javascript_Core/ChangeLog (165430 => 165431)
--- trunk/Source/_javascript_Core/ChangeLog 2014-03-11 04:52:02 UTC (rev 165430)
+++ trunk/Source/_javascript_Core/ChangeLog 2014-03-11 04:53:52 UTC (rev 165431)
@@ -1,5 +1,23 @@
2014-03-10 Mark Lam <[email protected]>
+ r165414 broke the 32-bit x86 tests: ASSERTION FAILED: result != InvalidIndex @ GPRInfo.h:330.
+ <https://webkit.org/b/130065>
+
+ Reviewed by Michael Saboff.
+
+ There is code in ScratchRegisterAllocator.cpp that is relying on GPRInfo::toIndex()
+ being able to return InvalidIndex. Hence, the assertion is invalid. Ditto for
+ FPRInfo::toIndex().
+
+ The fix is to remove the "result != InvalidIndex" assertions.
+
+ * jit/FPRInfo.h:
+ (JSC::FPRInfo::toIndex):
+ * jit/GPRInfo.h:
+ (JSC::GPRInfo::toIndex):
+
+2014-03-10 Mark Lam <[email protected]>
+
Crash on a stack overflow on 32-bit x86 in http/tests/websocket/tests/hybi/workers/no-onmessage-in-sync-op.html.
<https://webkit.org/b/129955>
Modified: trunk/Source/_javascript_Core/jit/FPRInfo.h (165430 => 165431)
--- trunk/Source/_javascript_Core/jit/FPRInfo.h 2014-03-11 04:52:02 UTC (rev 165430)
+++ trunk/Source/_javascript_Core/jit/FPRInfo.h 2014-03-11 04:53:52 UTC (rev 165431)
@@ -242,7 +242,6 @@
16, 17, 18, 19, 20, 21, 22, InvalidIndex
};
unsigned result = indexForRegister[reg];
- ASSERT(result != InvalidIndex);
return result;
}
@@ -305,7 +304,6 @@
InvalidIndex, InvalidIndex, 5, InvalidIndex,
};
unsigned result = indexForRegister[reg];
- ASSERT(result != InvalidIndex);
return result;
}
@@ -371,7 +369,6 @@
InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex
};
unsigned result = indexForRegister[reg];
- ASSERT(result != InvalidIndex);
return result;
}
Modified: trunk/Source/_javascript_Core/jit/GPRInfo.h (165430 => 165431)
--- trunk/Source/_javascript_Core/jit/GPRInfo.h 2014-03-11 04:52:02 UTC (rev 165430)
+++ trunk/Source/_javascript_Core/jit/GPRInfo.h 2014-03-11 04:53:52 UTC (rev 165431)
@@ -327,7 +327,6 @@
ASSERT(static_cast<int>(reg) < 8);
static const unsigned indexForRegister[8] = { 0, 2, 1, 3, InvalidIndex, InvalidIndex, 5, 4 };
unsigned result = indexForRegister[reg];
- ASSERT(result != InvalidIndex);
return result;
}
@@ -504,7 +503,6 @@
{ 0, 1, 2, 8, 3, 9, InvalidIndex, 7, 4, 5, 6, InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex };
#endif
unsigned result = indexForRegister[reg];
- ASSERT(result != InvalidIndex);
return result;
}
@@ -684,7 +682,6 @@
6, InvalidIndex, 3, InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex
};
unsigned result = indexForRegister[reg];
- ASSERT(result != InvalidIndex);
return result;
}
@@ -756,7 +753,6 @@
ASSERT(reg < 14);
static const unsigned indexForRegister[14] = { 0, 1, 2, InvalidIndex, 4, 5, 6, 7, 8, 9, 3, InvalidIndex, InvalidIndex, InvalidIndex };
unsigned result = indexForRegister[reg];
- ASSERT(result != InvalidIndex);
return result;
}