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