Title: [197186] trunk/Source/_javascript_Core
Revision
197186
Author
commit-qu...@webkit.org
Date
2016-02-26 11:18:55 -0800 (Fri, 26 Feb 2016)

Log Message

[JSC] Add32(Imm, Tmp, Tmp) does not ZDef the destination if Imm is zero
https://bugs.webkit.org/show_bug.cgi?id=154704

Patch by Benjamin Poulain <bpoul...@apple.com> on 2016-02-26
Reviewed by Geoffrey Garen.

If the Imm is zero, we should still zero the top bits
to match the definition in AirOpcodes.

* assembler/MacroAssemblerX86Common.h:
(JSC::MacroAssemblerX86Common::add32):
* b3/testb3.cpp:

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (197185 => 197186)


--- trunk/Source/_javascript_Core/ChangeLog	2016-02-26 19:18:06 UTC (rev 197185)
+++ trunk/Source/_javascript_Core/ChangeLog	2016-02-26 19:18:55 UTC (rev 197186)
@@ -1,3 +1,17 @@
+2016-02-26  Benjamin Poulain  <bpoul...@apple.com>
+
+        [JSC] Add32(Imm, Tmp, Tmp) does not ZDef the destination if Imm is zero
+        https://bugs.webkit.org/show_bug.cgi?id=154704
+
+        Reviewed by Geoffrey Garen.
+
+        If the Imm is zero, we should still zero the top bits
+        to match the definition in AirOpcodes.
+
+        * assembler/MacroAssemblerX86Common.h:
+        (JSC::MacroAssemblerX86Common::add32):
+        * b3/testb3.cpp:
+
 2016-02-26  Oliver Hunt  <oli...@apple.com>
 
         Make testRegExp not crash when given an invalid regexp

Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.h (197185 => 197186)


--- trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.h	2016-02-26 19:18:06 UTC (rev 197185)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.h	2016-02-26 19:18:55 UTC (rev 197186)
@@ -198,7 +198,7 @@
     void add32(TrustedImm32 imm, RegisterID src, RegisterID dest)
     {
         if (!imm.m_value) {
-            move(src, dest);
+            zeroExtend32ToPtr(src, dest);
             return;
         }
 

Modified: trunk/Source/_javascript_Core/b3/testb3.cpp (197185 => 197186)


--- trunk/Source/_javascript_Core/b3/testb3.cpp	2016-02-26 19:18:06 UTC (rev 197185)
+++ trunk/Source/_javascript_Core/b3/testb3.cpp	2016-02-26 19:18:55 UTC (rev 197186)
@@ -412,6 +412,25 @@
     CHECK(inputOutput == a + b);
 }
 
+void testAddArgZeroImmZDef()
+{
+    Procedure proc;
+    BasicBlock* root = proc.addBlock();
+    Value* arg = root->appendNew<Value>(
+        proc, Trunc, Origin(),
+        root->appendNew<ArgumentRegValue>(proc, Origin(), GPRInfo::argumentGPR0));
+    Value* constZero = root->appendNew<Const32Value>(proc, Origin(), 0);
+    root->appendNew<ControlValue>(
+        proc, Return, Origin(),
+        root->appendNew<Value>(
+            proc, Add, Origin(),
+            arg,
+            constZero));
+
+    auto code = compile(proc, 0);
+    CHECK(invoke<int64_t>(*code, 0x0123456789abcdef) == 0x89abcdef);
+}
+
 void testAddLoadTwice()
 {
     auto test = [&] (unsigned optLevel) {
@@ -10615,6 +10634,7 @@
     RUN_BINARY(testAddArgMem32, int32Operands(), int32Operands());
     RUN_BINARY(testAddMemArg32, int32Operands(), int32Operands());
     RUN_BINARY(testAddImmMem32, int32Operands(), int32Operands());
+    RUN(testAddArgZeroImmZDef());
     RUN(testAddLoadTwice());
 
     RUN(testAddArgDouble(M_PI));
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to