Title: [180516] trunk/Source/_javascript_Core
Revision
180516
Author
[email protected]
Date
2015-02-23 14:08:41 -0800 (Mon, 23 Feb 2015)

Log Message

r9 is volatile on ARMv7 for iOS 3 and up.
https://bugs.webkit.org/show_bug.cgi?id=141489
rdar://problem/19432916

Reviewed by Michael Saboff.

* jit/RegisterSet.cpp:
(JSC::RegisterSet::calleeSaveRegisters): removed r9 from the list of ARMv7 callee save registers.
* tests/stress/regress-141489.js: Added.
(foo):

Modified Paths

Added Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (180515 => 180516)


--- trunk/Source/_javascript_Core/ChangeLog	2015-02-23 21:56:54 UTC (rev 180515)
+++ trunk/Source/_javascript_Core/ChangeLog	2015-02-23 22:08:41 UTC (rev 180516)
@@ -1,3 +1,16 @@
+2015-02-23  Matthew Mirman  <[email protected]>
+
+        r9 is volatile on ARMv7 for iOS 3 and up. 
+        https://bugs.webkit.org/show_bug.cgi?id=141489
+        rdar://problem/19432916
+
+        Reviewed by Michael Saboff.
+
+        * jit/RegisterSet.cpp: 
+        (JSC::RegisterSet::calleeSaveRegisters): removed r9 from the list of ARMv7 callee save registers.
+        * tests/stress/regress-141489.js: Added.
+        (foo):
+
 2015-02-23  Csaba Osztrogonác  <[email protected]>
 
         [ARM] Add the necessary setupArgumentsWithExecState after bug141915

Modified: trunk/Source/_javascript_Core/jit/RegisterSet.cpp (180515 => 180516)


--- trunk/Source/_javascript_Core/jit/RegisterSet.cpp	2015-02-23 21:56:54 UTC (rev 180515)
+++ trunk/Source/_javascript_Core/jit/RegisterSet.cpp	2015-02-23 22:08:41 UTC (rev 180516)
@@ -86,7 +86,6 @@
     result.set(ARMRegisters::r5);
     result.set(ARMRegisters::r6);
     result.set(ARMRegisters::r8);
-    result.set(ARMRegisters::r9);
     result.set(ARMRegisters::r10);
     result.set(ARMRegisters::r11);
 #elif CPU(ARM64)

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


--- trunk/Source/_javascript_Core/tests/stress/regress-141489.js	                        (rev 0)
+++ trunk/Source/_javascript_Core/tests/stress/regress-141489.js	2015-02-23 22:08:41 UTC (rev 180516)
@@ -0,0 +1,34 @@
+// this test checks that register r9 is not a callee save on ios armv7.
+function ident(a) { 
+    return a; 
+}
+
+function foo(array,obj) { 
+    var a = array[0]; 
+    var b = array[1]; 
+    var c = array[2]; 
+    obj.a = array;
+    obj.b = array;
+    obj.c = array;
+    obj.d = array;
+    obj.e = array;
+    obj.f = array;
+    obj.h = array;
+    return a(b(c(10)));
+}
+noInline(foo);
+
+var arr = [ident,ident,ident];
+
+for (var i = 0; i < 100; i++) {
+    var obj = {};
+    for (var j = 0; j < 200; j ++) {
+        obj["j"+j] = i;
+    }
+    foo(arr, obj);
+}
+
+for (var i = 0; i < 100; i++) {
+    var obj = {};
+    foo(arr, obj);
+}
\ No newline at end of file
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to