Title: [167782] trunk/Source/_javascript_Core
Revision
167782
Author
[email protected]
Date
2014-04-24 17:14:14 -0700 (Thu, 24 Apr 2014)

Log Message

REGRESSION: Apparent hang of PCE.js Mac OS System 7.0.1 on ARM64 devices
https://bugs.webkit.org/show_bug.cgi?id=132147

Reviewed by Mark Lam.

Fixed or64(), eor32( ) and eor64() to use "src" register when we have a valid logicalImm.

* assembler/MacroAssemblerARM64.h:
(JSC::MacroAssemblerARM64::or64):
(JSC::MacroAssemblerARM64::xor32):
(JSC::MacroAssemblerARM64::xor64):
* tests/stress/regress-132147.js: Added test.

Modified Paths

Added Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (167781 => 167782)


--- trunk/Source/_javascript_Core/ChangeLog	2014-04-25 00:06:46 UTC (rev 167781)
+++ trunk/Source/_javascript_Core/ChangeLog	2014-04-25 00:14:14 UTC (rev 167782)
@@ -1,3 +1,18 @@
+2014-04-24  Michael Saboff  <[email protected]>
+
+        REGRESSION: Apparent hang of PCE.js Mac OS System 7.0.1 on ARM64 devices
+        https://bugs.webkit.org/show_bug.cgi?id=132147
+
+        Reviewed by Mark Lam.
+
+        Fixed or64(), eor32( ) and eor64() to use "src" register when we have a valid logicalImm.
+
+        * assembler/MacroAssemblerARM64.h:
+        (JSC::MacroAssemblerARM64::or64):
+        (JSC::MacroAssemblerARM64::xor32):
+        (JSC::MacroAssemblerARM64::xor64):
+        * tests/stress/regress-132147.js: Added test.
+
 2014-04-24  Mark Lam  <[email protected]>
 
         Make slowPathAllocsBetweenGCs a runtime option.

Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerARM64.h (167781 => 167782)


--- trunk/Source/_javascript_Core/assembler/MacroAssemblerARM64.h	2014-04-25 00:06:46 UTC (rev 167781)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerARM64.h	2014-04-25 00:14:14 UTC (rev 167782)
@@ -504,7 +504,7 @@
         LogicalImmediate logicalImm = LogicalImmediate::create64(static_cast<intptr_t>(static_cast<int64_t>(imm.m_value)));
 
         if (logicalImm.isValid()) {
-            m_assembler.orr<64>(dest, dest, logicalImm);
+            m_assembler.orr<64>(dest, src, logicalImm);
             return;
         }
 
@@ -713,7 +713,7 @@
             LogicalImmediate logicalImm = LogicalImmediate::create32(imm.m_value);
 
             if (logicalImm.isValid()) {
-                m_assembler.eor<32>(dest, dest, logicalImm);
+                m_assembler.eor<32>(dest, src, logicalImm);
                 return;
             }
 
@@ -752,7 +752,7 @@
             LogicalImmediate logicalImm = LogicalImmediate::create64(static_cast<intptr_t>(static_cast<int64_t>(imm.m_value)));
 
             if (logicalImm.isValid()) {
-                m_assembler.eor<64>(dest, dest, logicalImm);
+                m_assembler.eor<64>(dest, src, logicalImm);
                 return;
             }
 

Added: trunk/Source/_javascript_Core/tests/stress/regress-132147.js (0 => 167782)


--- trunk/Source/_javascript_Core/tests/stress/regress-132147.js	                        (rev 0)
+++ trunk/Source/_javascript_Core/tests/stress/regress-132147.js	2014-04-25 00:14:14 UTC (rev 167782)
@@ -0,0 +1,28 @@
+var foo = function(a, b, count) {
+    a = a | 0;
+    b = b | 0;
+
+    if (false) {
+        return 1;
+    } else {
+        a = a & 0xff00;
+        b = b & 0x00ff;
+
+        orA = a | 0xff00;
+        xorB = b ^ 0xff;
+    }
+
+    return orA | xorB;
+};
+
+var argA = 0;
+var argB = 0x22;
+var result = 0;
+
+noInline(foo)
+
+for (i = 0; i < 100000; i++)
+    result = result | foo(argA, argB, 4)
+
+if (result != 0xffdd)
+    throw new Error("Incorrect result!");
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to