From 82d28ad2a4343d830148c9c458c90ac498b5f364 Mon Sep 17 00:00:00 2001 From: "haitao.feng@intel.com" Date: Thu, 24 Oct 2013 07:38:50 +0000 Subject: [PATCH] Use PopReturnAddressTo and PushReturnAddressFrom in Generate_MarkCodeAsExecutedOnce builtin function for X64 R=danno@chromium.org Review URL: https://codereview.chromium.org/38613003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17357 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/x64/assembler-x64.cc | 4 ++-- src/x64/builtins-x64.cc | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/x64/assembler-x64.cc b/src/x64/assembler-x64.cc index 9fe7b83..1502d79 100644 --- a/src/x64/assembler-x64.cc +++ b/src/x64/assembler-x64.cc @@ -110,8 +110,8 @@ void RelocInfo::PatchCodeWithCall(Address target, int guard_bytes) { #endif // Patch the code. - patcher.masm()->movq(r10, target, RelocInfo::NONE64); - patcher.masm()->call(r10); + patcher.masm()->movq(kScratchRegister, target, RelocInfo::NONE64); + patcher.masm()->call(kScratchRegister); // Check that the size of the code generated is as expected. ASSERT_EQ(Assembler::kCallSequenceLength, diff --git a/src/x64/builtins-x64.cc b/src/x64/builtins-x64.cc index 2f5e0c1..f65b25c 100644 --- a/src/x64/builtins-x64.cc +++ b/src/x64/builtins-x64.cc @@ -646,12 +646,12 @@ void Builtins::Generate_MarkCodeAsExecutedOnce(MacroAssembler* masm) { __ Popad(); // Perform prologue operations usually performed by the young code stub. - __ pop(r10); // Pop return address into scratch register. + __ PopReturnAddressTo(kScratchRegister); __ push(rbp); // Caller's frame pointer. __ movq(rbp, rsp); __ push(rsi); // Callee's context. __ push(rdi); // Callee's JS Function. - __ push(r10); // Push return address after frame prologue. + __ PushReturnAddressFrom(kScratchRegister); // Jump to point after the code-age stub. __ ret(0); @@ -696,17 +696,17 @@ static void Generate_NotifyDeoptimizedHelper(MacroAssembler* masm, } // Get the full codegen state from the stack and untag it. - __ SmiToInteger32(r10, Operand(rsp, kPCOnStackSize)); + __ SmiToInteger32(kScratchRegister, Operand(rsp, kPCOnStackSize)); // Switch on the state. Label not_no_registers, not_tos_rax; - __ cmpq(r10, Immediate(FullCodeGenerator::NO_REGISTERS)); + __ cmpq(kScratchRegister, Immediate(FullCodeGenerator::NO_REGISTERS)); __ j(not_equal, ¬_no_registers, Label::kNear); __ ret(1 * kPointerSize); // Remove state. __ bind(¬_no_registers); __ movq(rax, Operand(rsp, kPCOnStackSize + kPointerSize)); - __ cmpq(r10, Immediate(FullCodeGenerator::TOS_REG)); + __ cmpq(kScratchRegister, Immediate(FullCodeGenerator::TOS_REG)); __ j(not_equal, ¬_tos_rax, Label::kNear); __ ret(2 * kPointerSize); // Remove state, rax. -- 2.7.4