Commit ffafe7b9 authored by haitao.feng@intel.com's avatar haitao.feng@intel.com

Use PushReturnAddressFrom and PopReturnAddressTo to manipulate return address for X64

R=dcarney@chromium.org

Review URL: https://codereview.chromium.org/102943003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18477 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent b2616f41
...@@ -475,7 +475,7 @@ static void GenerateFastApiCall(MacroAssembler* masm, ...@@ -475,7 +475,7 @@ static void GenerateFastApiCall(MacroAssembler* masm,
// Prepare arguments. // Prepare arguments.
STATIC_ASSERT(kFastApiCallArguments == 7); STATIC_ASSERT(kFastApiCallArguments == 7);
__ lea(rax, Operand(rsp, 1 * kPointerSize)); __ lea(rax, args.GetArgumentOperand(offset - FCA::kHolderIndex));
GenerateFastApiCallBody(masm, optimization, argc, false); GenerateFastApiCallBody(masm, optimization, argc, false);
} }
...@@ -495,8 +495,7 @@ static void GenerateFastApiCall(MacroAssembler* masm, ...@@ -495,8 +495,7 @@ static void GenerateFastApiCall(MacroAssembler* masm,
Register* values) { Register* values) {
ASSERT(optimization.is_simple_api_call()); ASSERT(optimization.is_simple_api_call());
// Copy return value. __ PopReturnAddressTo(scratch1);
__ pop(scratch1);
// receiver // receiver
__ push(receiver); __ push(receiver);
...@@ -563,9 +562,7 @@ static void GenerateFastApiCall(MacroAssembler* masm, ...@@ -563,9 +562,7 @@ static void GenerateFastApiCall(MacroAssembler* masm,
ASSERT(!scratch1.is(rax)); ASSERT(!scratch1.is(rax));
// store receiver address for GenerateFastApiCallBody // store receiver address for GenerateFastApiCallBody
__ movq(rax, rsp); __ movq(rax, rsp);
__ PushReturnAddressFrom(scratch1);
// return address
__ push(scratch1);
GenerateFastApiCallBody(masm, optimization, argc, true); GenerateFastApiCallBody(masm, optimization, argc, true);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment