Title: [164241] trunk/Source/_javascript_Core
Revision
164241
Author
[email protected]
Date
2014-02-17 12:07:35 -0800 (Mon, 17 Feb 2014)

Log Message

Register preservation wrapper should know about the possibility of callee-saved FPRs
https://bugs.webkit.org/show_bug.cgi?id=128923

Reviewed by Mark Hahnenberg.

* jit/RegisterPreservationWrapperGenerator.cpp:
(JSC::generateRegisterPreservationWrapper):
(JSC::generateRegisterRestoration):
* jit/RegisterSet.cpp:

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (164240 => 164241)


--- trunk/Source/_javascript_Core/ChangeLog	2014-02-17 20:06:34 UTC (rev 164240)
+++ trunk/Source/_javascript_Core/ChangeLog	2014-02-17 20:07:35 UTC (rev 164241)
@@ -1,5 +1,17 @@
 2014-02-17  Filip Pizlo  <[email protected]>
 
+        Register preservation wrapper should know about the possibility of callee-saved FPRs
+        https://bugs.webkit.org/show_bug.cgi?id=128923
+
+        Reviewed by Mark Hahnenberg.
+
+        * jit/RegisterPreservationWrapperGenerator.cpp:
+        (JSC::generateRegisterPreservationWrapper):
+        (JSC::generateRegisterRestoration):
+        * jit/RegisterSet.cpp:
+
+2014-02-17  Filip Pizlo  <[email protected]>
+
         lr is a special register on ARM64
         https://bugs.webkit.org/show_bug.cgi?id=128922
 

Modified: trunk/Source/_javascript_Core/jit/RegisterPreservationWrapperGenerator.cpp (164240 => 164241)


--- trunk/Source/_javascript_Core/jit/RegisterPreservationWrapperGenerator.cpp	2014-02-17 20:06:34 UTC (rev 164240)
+++ trunk/Source/_javascript_Core/jit/RegisterPreservationWrapperGenerator.cpp	2014-02-17 20:07:35 UTC (rev 164241)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
+ * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -104,6 +104,12 @@
         currentOffset += sizeof(Register);
         jit.store64(gpr, AssemblyHelpers::Address(GPRInfo::regT4, currentOffset));
     }
+    for (FPRReg fpr = AssemblyHelpers::firstFPRegister(); fpr <= AssemblyHelpers::lastFPRegister(); fpr = static_cast<FPRReg>(fpr + 1)) {
+        if (!toSave.get(fpr))
+            continue;
+        currentOffset += sizeof(Register);
+        jit.storeDouble(fpr, AssemblyHelpers::Address(GPRInfo::regT4, currentOffset));
+    }
     
     // Assume that there aren't any saved FP registers.
     
@@ -188,6 +194,12 @@
         currentOffset += sizeof(Register);
         jit.load64(AssemblyHelpers::Address(GPRInfo::regT2, currentOffset), gpr);
     }
+    for (FPRReg fpr = AssemblyHelpers::firstFPRegister(); fpr <= AssemblyHelpers::lastFPRegister(); fpr = static_cast<FPRReg>(fpr + 1)) {
+        if (!toSave.get(fpr))
+            continue;
+        currentOffset += sizeof(Register);
+        jit.loadDouble(AssemblyHelpers::Address(GPRInfo::regT2, currentOffset), fpr);
+    }
     
     // Thunks like this rely on the ArgumentCount being intact. Pay it forward.
     jit.store32(

Modified: trunk/Source/_javascript_Core/jit/RegisterSet.cpp (164240 => 164241)


--- trunk/Source/_javascript_Core/jit/RegisterSet.cpp	2014-02-17 20:06:34 UTC (rev 164240)
+++ trunk/Source/_javascript_Core/jit/RegisterSet.cpp	2014-02-17 20:07:35 UTC (rev 164241)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
+ * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to