| Index: src/x64/macro-assembler-x64.cc
|
| diff --git a/src/x64/macro-assembler-x64.cc b/src/x64/macro-assembler-x64.cc
|
| index 339420679184b15ead2d8a4921d07368eeb86106..26c6e3324b20102565245cbb7f5bc50fd38c0bee 100644
|
| --- a/src/x64/macro-assembler-x64.cc
|
| +++ b/src/x64/macro-assembler-x64.cc
|
| @@ -2260,7 +2260,7 @@ void MacroAssembler::LeaveExitFrame(bool save_doubles) {
|
| int offset = -2 * kPointerSize;
|
| for (int i = 0; i < XMMRegister::kNumAllocatableRegisters; i++) {
|
| XMMRegister reg = XMMRegister::FromAllocationIndex(i);
|
| - movsd(reg, Operand(rbp, offset - ((i + 1) * kDoubleSize)));
|
| + LoadDbl(reg, Operand(rbp, offset - ((i + 1) * kDoubleSize)));
|
| }
|
| }
|
| // Get the return address from the stack and restore the frame pointer.
|
| @@ -2894,6 +2894,16 @@ void MacroAssembler::CallCFunction(Register function, int num_arguments) {
|
| }
|
|
|
|
|
| +void MacroAssembler::LoadDbl(XMMRegister dst, const Operand& src) {
|
| + if (CpuFeatures::IsSupported(SSE3)) {
|
| + CpuFeatures::Scope enable(SSE3);
|
| + movddup(dst, src);
|
| + } else {
|
| + movsd(dst, src);
|
| + }
|
| +}
|
| +
|
| +
|
| CodePatcher::CodePatcher(byte* address, int size)
|
| : address_(address),
|
| size_(size),
|
|
|