Index: src/x87/builtins-x87.cc |
diff --git a/src/x87/builtins-x87.cc b/src/x87/builtins-x87.cc |
index 2139cff6a5203321fc8c690e2a029037732816cd..84f088fa18049dfeca0541e8f9bf95e91a7ab2d2 100644 |
--- a/src/x87/builtins-x87.cc |
+++ b/src/x87/builtins-x87.cc |
@@ -123,6 +123,7 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm, |
bool check_derived_construct) { |
// ----------- S t a t e ------------- |
// -- eax: number of arguments |
+ // -- esi: context |
// -- edi: constructor function |
// -- ebx: allocation site or undefined |
// -- edx: new target |
@@ -134,6 +135,7 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm, |
// Preserve the incoming parameters on the stack. |
__ AssertUndefinedOrAllocationSite(ebx); |
+ __ push(esi); |
__ push(ebx); |
__ SmiTag(eax); |
__ push(eax); |
@@ -201,7 +203,7 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm, |
} |
// Restore context from the frame. |
- __ mov(esi, Operand(ebp, StandardFrameConstants::kContextOffset)); |
+ __ mov(esi, Operand(ebp, ConstructFrameConstants::kContextOffset)); |
if (create_implicit_receiver) { |
// If the result is an object (in the ECMA sense), we should get rid |
@@ -325,9 +327,6 @@ static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm, |
bool is_construct) { |
ProfileEntryHookStub::MaybeCallEntryHook(masm); |
- // Clear the context before we push it when entering the internal frame. |
- __ Move(esi, Immediate(0)); |
- |
{ |
FrameScope scope(masm, StackFrame::INTERNAL); |
@@ -1899,7 +1898,7 @@ void PrepareForTailCall(MacroAssembler* masm, Register args_reg, |
// Drop possible interpreter handler/stub frame. |
{ |
Label no_interpreter_frame; |
- __ cmp(Operand(ebp, StandardFrameConstants::kMarkerOffset), |
+ __ cmp(Operand(ebp, CommonFrameConstants::kContextOrFrameTypeOffset), |
Immediate(Smi::FromInt(StackFrame::STUB))); |
__ j(not_equal, &no_interpreter_frame, Label::kNear); |
__ mov(ebp, Operand(ebp, StandardFrameConstants::kCallerFPOffset)); |
@@ -1910,7 +1909,7 @@ void PrepareForTailCall(MacroAssembler* masm, Register args_reg, |
Register caller_args_count_reg = scratch1; |
Label no_arguments_adaptor, formal_parameter_count_loaded; |
__ mov(scratch2, Operand(ebp, StandardFrameConstants::kCallerFPOffset)); |
- __ cmp(Operand(scratch2, StandardFrameConstants::kContextOffset), |
+ __ cmp(Operand(scratch2, CommonFrameConstants::kContextOrFrameTypeOffset), |
Immediate(Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR))); |
__ j(not_equal, &no_arguments_adaptor, Label::kNear); |
@@ -2457,7 +2456,7 @@ void Builtins::Generate_ArgumentsAdaptorTrampoline(MacroAssembler* masm) { |
// Call the entry point. |
__ bind(&invoke); |
// Restore function pointer. |
- __ mov(edi, Operand(ebp, JavaScriptFrameConstants::kFunctionOffset)); |
+ __ mov(edi, Operand(ebp, ArgumentsAdaptorFrameConstants::kFunctionOffset)); |
// eax : expected number of arguments |
// edx : new target (passed through to callee) |
// edi : function (passed through to callee) |