Title: [110751] trunk/Source/_javascript_Core
- Revision
- 110751
- Author
- [email protected]
- Date
- 2012-03-14 14:21:42 -0700 (Wed, 14 Mar 2012)
Log Message
Make ARMv7 work again
https://bugs.webkit.org/show_bug.cgi?id=81157
Reviewed by Geoffrey Garen.
We were trying to use the ARMv7 dataRegister as a scratch register in a scenario
where we the ARMv7MacroAssembler would also try to use dataRegister for its own
nefarious purposes.
* assembler/MacroAssembler.h:
(JSC::MacroAssembler::store32):
* assembler/MacroAssemblerARMv7.h:
(MacroAssemblerARMv7):
Modified Paths
Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (110750 => 110751)
--- trunk/Source/_javascript_Core/ChangeLog 2012-03-14 21:20:56 UTC (rev 110750)
+++ trunk/Source/_javascript_Core/ChangeLog 2012-03-14 21:21:42 UTC (rev 110751)
@@ -1,3 +1,19 @@
+2012-03-14 Oliver Hunt <[email protected]>
+
+ Make ARMv7 work again
+ https://bugs.webkit.org/show_bug.cgi?id=81157
+
+ Reviewed by Geoffrey Garen.
+
+ We were trying to use the ARMv7 dataRegister as a scratch register in a scenario
+ where we the ARMv7MacroAssembler would also try to use dataRegister for its own
+ nefarious purposes.
+
+ * assembler/MacroAssembler.h:
+ (JSC::MacroAssembler::store32):
+ * assembler/MacroAssemblerARMv7.h:
+ (MacroAssemblerARMv7):
+
2012-03-14 Mark Hahnenberg <[email protected]>
Heap::destroy leaks CopiedSpace
Modified: trunk/Source/_javascript_Core/assembler/MacroAssembler.h (110750 => 110751)
--- trunk/Source/_javascript_Core/assembler/MacroAssembler.h 2012-03-14 21:20:56 UTC (rev 110750)
+++ trunk/Source/_javascript_Core/assembler/MacroAssembler.h 2012-03-14 21:21:42 UTC (rev 110751)
@@ -828,9 +828,17 @@
store32(blind.value1, dest);
xor32(blind.value2, dest);
#else
- RegisterID scratchRegister = (RegisterID)scratchRegisterForBlinding();
- loadXorBlindedConstant(xorBlindConstant(imm), scratchRegister);
- store32(scratchRegister, dest);
+ if (RegisterID scratchRegister = (RegisterID)scratchRegisterForBlinding()) {
+ loadXorBlindedConstant(xorBlindConstant(imm), scratchRegister);
+ store32(scratchRegister, dest);
+ } else {
+ // If we don't have a scratch register available for use, we'll just
+ // place a random number of nops.
+ uint32_t nopCount = random() & 3;
+ while (nopCount--)
+ nop();
+ store32(imm.asTrustedImm32(), dest);
+ }
#endif
} else
store32(imm.asTrustedImm32(), dest);
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerARMv7.h (110750 => 110751)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerARMv7.h 2012-03-14 21:20:56 UTC (rev 110750)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerARMv7.h 2012-03-14 21:21:42 UTC (rev 110751)
@@ -722,7 +722,6 @@
}
#if ENABLE(JIT_CONSTANT_BLINDING)
- static RegisterID scratchRegisterForBlinding() { return dataTempRegister; }
static bool shouldBlindForSpecificArch(uint32_t value)
{
ARMThumbImmediate immediate = ARMThumbImmediate::makeEncodedImm(value);
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes