Index: src/x64/macro-assembler-x64.cc |
diff --git a/src/x64/macro-assembler-x64.cc b/src/x64/macro-assembler-x64.cc |
index c6829c5bfb971d0a8398425caba303230736386f..45fbd41d4553bebf0f0c32c65f42aac3a2d1d3fb 100644 |
--- a/src/x64/macro-assembler-x64.cc |
+++ b/src/x64/macro-assembler-x64.cc |
@@ -2028,16 +2028,15 @@ void MacroAssembler::EnterExitFramePrologue(bool save_rax) { |
push(kScratchRegister); // Accessed from EditFrame::code_slot. |
// Save the frame pointer and the context in top. |
- ExternalReference c_entry_fp_address(Top::k_c_entry_fp_address); |
- ExternalReference context_address(Top::k_context_address); |
if (save_rax) { |
- movq(r14, rax); // Backup rax before we use it. |
+ movq(r14, rax); // Backup rax in callee-save register. |
} |
- movq(rax, rbp); |
- store_rax(c_entry_fp_address); |
- movq(rax, rsi); |
- store_rax(context_address); |
+ movq(kScratchRegister, ExternalReference(Top::k_c_entry_fp_address)); |
+ movq(Operand(kScratchRegister, 0), rbp); |
+ |
+ movq(kScratchRegister, ExternalReference(Top::k_context_address)); |
+ movq(Operand(kScratchRegister, 0), rsi); |
} |