Title: [90157] trunk/Source/_javascript_Core
Revision
90157
Author
[email protected]
Date
2011-06-30 14:30:57 -0700 (Thu, 30 Jun 2011)

Log Message

2011-06-30  Filip Pizlo  <[email protected]>

        Reviewed by Gavin Barraclough.

        X86Assembler does not encode byte registers in 64-bit mode correctly.
        https://bugs.webkit.org/show_bug.cgi?id=63665

        * assembler/X86Assembler.h:
        (JSC::X86Assembler::testb_rr):
        (JSC::X86Assembler::X86InstructionFormatter::oneByteOp8):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (90156 => 90157)


--- trunk/Source/_javascript_Core/ChangeLog	2011-06-30 20:50:16 UTC (rev 90156)
+++ trunk/Source/_javascript_Core/ChangeLog	2011-06-30 21:30:57 UTC (rev 90157)
@@ -1,3 +1,14 @@
+2011-06-30  Filip Pizlo  <[email protected]>
+
+        Reviewed by Gavin Barraclough.
+
+        X86Assembler does not encode byte registers in 64-bit mode correctly.
+        https://bugs.webkit.org/show_bug.cgi?id=63665
+
+        * assembler/X86Assembler.h:
+        (JSC::X86Assembler::testb_rr):
+        (JSC::X86Assembler::X86InstructionFormatter::oneByteOp8):
+
 2011-06-30  Sheriff Bot  <[email protected]>
 
         Unreviewed, rolling out r90102.

Modified: trunk/Source/_javascript_Core/assembler/X86Assembler.h (90156 => 90157)


--- trunk/Source/_javascript_Core/assembler/X86Assembler.h	2011-06-30 20:50:16 UTC (rev 90156)
+++ trunk/Source/_javascript_Core/assembler/X86Assembler.h	2011-06-30 21:30:57 UTC (rev 90157)
@@ -879,7 +879,7 @@
 
     void testb_rr(RegisterID src, RegisterID dst)
     {
-        m_formatter.oneByteOp(OP_TEST_EbGb, src, dst);
+        m_formatter.oneByteOp8(OP_TEST_EbGb, src, dst);
     }
 
     void testb_im(int imm, int offset, RegisterID base)
@@ -1868,6 +1868,14 @@
             registerModRM(groupOp, rm);
         }
 
+        void oneByteOp8(OneByteOpcodeID opcode, int reg, RegisterID rm)
+        {
+            m_buffer.ensureSpace(maxInstructionSize);
+            emitRexIf(byteRegRequiresRex(reg) || byteRegRequiresRex(rm), reg, 0, rm);
+            m_buffer.putByteUnchecked(opcode);
+            registerModRM(reg, rm);
+        }
+
         void twoByteOp8(TwoByteOpcodeID opcode, RegisterID reg, RegisterID rm)
         {
             m_buffer.ensureSpace(maxInstructionSize);
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to