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

Reply via email to