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