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

Unified Diff: runtime/vm/code_generator.cc

Issue 12871015: SIMD plumbing (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fix FPU register move instruction on x64 Created 7 years, 9 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
Index: runtime/vm/code_generator.cc
diff --git a/runtime/vm/code_generator.cc b/runtime/vm/code_generator.cc
index b1f11df6a68f805e53a64c67ffdb625ada54e2ea..13b53b8b8ccb45128d94b1c2aea23f9d6c804fb6 100644
--- a/runtime/vm/code_generator.cc
+++ b/runtime/vm/code_generator.cc
@@ -1449,11 +1449,13 @@ void DeoptimizeIfOwner(const GrowableArray<intptr_t>& classes) {
// Copy saved registers into the isolate buffer.
static void CopySavedRegisters(uword saved_registers_address) {
- double* fpu_registers_copy = new double[kNumberOfFpuRegisters];
+ fpu_register_t* fpu_registers_copy =
+ new fpu_register_t[kNumberOfFpuRegisters];
ASSERT(fpu_registers_copy != NULL);
for (intptr_t i = 0; i < kNumberOfFpuRegisters; i++) {
- fpu_registers_copy[i] = *reinterpret_cast<double*>(saved_registers_address);
- saved_registers_address += kDoubleSize;
+ fpu_registers_copy[i] =
+ *reinterpret_cast<fpu_register_t*>(saved_registers_address);
+ saved_registers_address += kFpuRegisterSize;
}
Isolate::Current()->set_deopt_fpu_registers_copy(fpu_registers_copy);
@@ -1505,7 +1507,8 @@ DEFINE_LEAF_RUNTIME_ENTRY(intptr_t, DeoptimizeCopyFrame,
// All registers have been saved below last-fp.
const uword last_fp = saved_registers_address +
- kNumberOfCpuRegisters * kWordSize + kNumberOfFpuRegisters * kDoubleSize;
+ kNumberOfCpuRegisters * kWordSize +
+ kNumberOfFpuRegisters * kFpuRegisterSize;
CopySavedRegisters(saved_registers_address);
// Get optimized code and frame that need to be deoptimized.
@@ -1607,7 +1610,7 @@ DEFINE_LEAF_RUNTIME_ENTRY(intptr_t, DeoptimizeFillFrame, uword last_fp) {
intptr_t* frame_copy = isolate->deopt_frame_copy();
intptr_t* cpu_registers_copy = isolate->deopt_cpu_registers_copy();
- double* fpu_registers_copy = isolate->deopt_fpu_registers_copy();
+ fpu_register_t* fpu_registers_copy = isolate->deopt_fpu_registers_copy();
intptr_t deopt_reason = kDeoptUnknown;
const DeoptInfo& deopt_info = DeoptInfo::Handle(

Powered by Google App Engine
This is Rietveld 408576698