Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(626)

Unified Diff: runtime/vm/simulator_arm.cc

Issue 23549013: Preserves callee-saved FPU registers on ARM (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/constants_arm.h ('k') | runtime/vm/stack_frame_arm.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/simulator_arm.cc
===================================================================
--- runtime/vm/simulator_arm.cc (revision 27068)
+++ runtime/vm/simulator_arm.cc (working copy)
@@ -3589,6 +3589,15 @@
int32_t r10_val = get_register(R10);
int32_t r11_val = get_register(R11);
+ double d8_val = get_dregister(D8);
+ double d9_val = get_dregister(D9);
+ double d10_val = get_dregister(D10);
+ double d11_val = get_dregister(D11);
+ double d12_val = get_dregister(D12);
+ double d13_val = get_dregister(D13);
+ double d14_val = get_dregister(D14);
+ double d15_val = get_dregister(D15);
+
// Setup the callee-saved registers with a known value. To be able to check
// that they are preserved properly across dart execution.
int32_t callee_saved_value = icount_;
@@ -3601,6 +3610,16 @@
set_register(R10, callee_saved_value);
set_register(R11, callee_saved_value);
+ double callee_saved_dvalue = static_cast<double>(icount_);
+ set_dregister(D8, callee_saved_dvalue);
+ set_dregister(D9, callee_saved_dvalue);
+ set_dregister(D10, callee_saved_dvalue);
+ set_dregister(D11, callee_saved_dvalue);
+ set_dregister(D12, callee_saved_dvalue);
+ set_dregister(D13, callee_saved_dvalue);
+ set_dregister(D14, callee_saved_dvalue);
+ set_dregister(D15, callee_saved_dvalue);
+
// Start the simulation
Execute();
@@ -3614,6 +3633,15 @@
ASSERT(callee_saved_value == get_register(R10));
ASSERT(callee_saved_value == get_register(R11));
+ ASSERT(callee_saved_dvalue == get_dregister(D8));
+ ASSERT(callee_saved_dvalue == get_dregister(D9));
+ ASSERT(callee_saved_dvalue == get_dregister(D10));
+ ASSERT(callee_saved_dvalue == get_dregister(D11));
+ ASSERT(callee_saved_dvalue == get_dregister(D12));
+ ASSERT(callee_saved_dvalue == get_dregister(D13));
+ ASSERT(callee_saved_dvalue == get_dregister(D14));
+ ASSERT(callee_saved_dvalue == get_dregister(D15));
+
// Restore callee-saved registers with the original value.
set_register(R4, r4_val);
set_register(R5, r5_val);
@@ -3624,6 +3652,15 @@
set_register(R10, r10_val);
set_register(R11, r11_val);
+ set_dregister(D8, d8_val);
+ set_dregister(D9, d9_val);
+ set_dregister(D10, d10_val);
+ set_dregister(D11, d11_val);
+ set_dregister(D12, d12_val);
+ set_dregister(D13, d13_val);
+ set_dregister(D14, d14_val);
+ set_dregister(D15, d15_val);
+
// Restore the SP register and return R1:R0.
set_register(SP, sp_before_call);
int64_t return_value;
« no previous file with comments | « runtime/vm/constants_arm.h ('k') | runtime/vm/stack_frame_arm.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698