Chromium Code Reviews| Index: runtime/vm/deopt_instructions.h |
| diff --git a/runtime/vm/deopt_instructions.h b/runtime/vm/deopt_instructions.h |
| index 134d33db8d2e830bf1850e2f9e42469990be822c..21d4ef4aef4e235638b2d44edf163d379a9285f0 100644 |
| --- a/runtime/vm/deopt_instructions.h |
| +++ b/runtime/vm/deopt_instructions.h |
| @@ -53,11 +53,16 @@ class DeoptimizationContext : public ValueObject { |
| } |
| double FpuRegisterValue(FpuRegister reg) const { |
| - return fpu_registers_copy_[reg]; |
| + return *reinterpret_cast<double*>(&fpu_registers_copy_[reg]); |
|
srdjan
2013/03/19 20:48:45
Is this machine specific (where the double is stor
Cutch
2013/03/19 21:48:33
This is machine specific where a FPU register is w
|
| } |
| int64_t FpuRegisterValueAsInt64(FpuRegister reg) const { |
| - return (reinterpret_cast<int64_t*>(fpu_registers_copy_))[reg]; |
| + return *reinterpret_cast<int64_t*>(&fpu_registers_copy_[reg]); |
| + } |
| + |
| + simd128_value_t FpuRegisterValueAsSimd128(FpuRegister reg) const { |
| + const float* address = reinterpret_cast<float*>(&fpu_registers_copy_[reg]); |
| + return simd128_value_t().readFrom(address); |
| } |
| Isolate* isolate() const { return isolate_; } |
| @@ -73,7 +78,7 @@ class DeoptimizationContext : public ValueObject { |
| intptr_t* from_frame_; |
| intptr_t from_frame_size_; |
| intptr_t* registers_copy_; |
| - double* fpu_registers_copy_; |
| + fpu_register_t* fpu_registers_copy_; |
| const intptr_t num_args_; |
| const DeoptReasonId deopt_reason_; |
| intptr_t caller_fp_; |
| @@ -96,9 +101,13 @@ class DeoptInstr : public ZoneAllocated { |
| kRegister, |
| kFpuRegister, |
| kInt64FpuRegister, |
| + kFloat32x4FpuRegister, |
| + kUint32x4FpuRegister, |
| kStackSlot, |
| kDoubleStackSlot, |
| kInt64StackSlot, |
| + kFloat32x4StackSlot, |
| + kUint32x4StackSlot, |
| kPcMarker, |
| kCallerFp, |
| kCallerPc, |