Title: [154298] trunk/Source/_javascript_Core
- Revision
- 154298
- Author
- [email protected]
- Date
- 2013-08-19 14:26:10 -0700 (Mon, 19 Aug 2013)
Log Message
https://bugs.webkit.org/show_bug.cgi?id=120020 Change Set 154207 causes wrong register to be used for 32 bit tests
Reviewed by Benjamin Poulain.
Change branshTest32 to only use the byte for 8 bit test on the lower 4 registers.
Registers 4 through 7 as byte regisers are ah, ch, dh and bh instead of sp, bp, si and di.
* assembler/MacroAssemblerX86Common.h:
(JSC::MacroAssemblerX86Common::branchTest32):
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::fillSpeculateCell):
Modified Paths
Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (154297 => 154298)
--- trunk/Source/_javascript_Core/ChangeLog 2013-08-19 21:09:46 UTC (rev 154297)
+++ trunk/Source/_javascript_Core/ChangeLog 2013-08-19 21:26:10 UTC (rev 154298)
@@ -1,3 +1,17 @@
+2013-08-19 Michael Saboff <[email protected]>
+
+ https://bugs.webkit.org/show_bug.cgi?id=120020 Change Set 154207 causes wrong register to be used for 32 bit tests
+
+ Reviewed by Benjamin Poulain.
+
+ Change branshTest32 to only use the byte for 8 bit test on the lower 4 registers.
+ Registers 4 through 7 as byte regisers are ah, ch, dh and bh instead of sp, bp, si and di.
+
+ * assembler/MacroAssemblerX86Common.h:
+ (JSC::MacroAssemblerX86Common::branchTest32):
+ * dfg/DFGSpeculativeJIT32_64.cpp:
+ (JSC::DFG::SpeculativeJIT::fillSpeculateCell):
+
2013-08-16 Oliver Hunt <[email protected]>
<https://webkit.org/b/119860> Crash during exception unwinding
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.h (154297 => 154298)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.h 2013-08-19 21:09:46 UTC (rev 154297)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.h 2013-08-19 21:26:10 UTC (rev 154298)
@@ -1140,7 +1140,7 @@
{
if (mask.m_value == -1)
m_assembler.testl_rr(reg, reg);
- else if (!(mask.m_value & ~0xff))
+ else if (!(mask.m_value & ~0xff) && reg < X86Registers::esp) // Using esp and greater as a byte register yields the upper half of the 16 bit registers ax, cx, dx and bx, e.g. esp, register 4, is actually ah.
m_assembler.testb_i8r(mask.m_value, reg);
else
m_assembler.testl_i32r(mask.m_value, reg);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes