Index: src/ia32/codegen-ia32.cc |
=================================================================== |
--- src/ia32/codegen-ia32.cc (revision 2767) |
+++ src/ia32/codegen-ia32.cc (working copy) |
@@ -2139,7 +2139,8 @@ |
Label invoke, adapted; |
__ mov(edx, Operand(ebp, StandardFrameConstants::kCallerFPOffset)); |
__ mov(ecx, Operand(edx, StandardFrameConstants::kContextOffset)); |
- __ cmp(ecx, ArgumentsAdaptorFrame::SENTINEL); |
+ __ cmp(Operand(ecx), |
+ Immediate(Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR))); |
__ j(equal, &adapted); |
// No arguments adaptor frame. Copy fixed number of arguments. |
@@ -4912,7 +4913,7 @@ |
// Skip the arguments adaptor frame if it exists. |
Label check_frame_marker; |
__ cmp(Operand(fp.reg(), StandardFrameConstants::kContextOffset), |
- Immediate(ArgumentsAdaptorFrame::SENTINEL)); |
+ Immediate(Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR))); |
__ j(not_equal, &check_frame_marker); |
__ mov(fp.reg(), Operand(fp.reg(), StandardFrameConstants::kCallerFPOffset)); |
@@ -7109,7 +7110,7 @@ |
Label adaptor; |
__ mov(edx, Operand(ebp, StandardFrameConstants::kCallerFPOffset)); |
__ mov(ecx, Operand(edx, StandardFrameConstants::kContextOffset)); |
- __ cmp(ecx, ArgumentsAdaptorFrame::SENTINEL); |
+ __ cmp(Operand(ecx), Immediate(Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR))); |
__ j(equal, &adaptor); |
// Nothing to do: The formal number of parameters has already been |
@@ -7141,7 +7142,7 @@ |
Label adaptor; |
__ mov(ebx, Operand(ebp, StandardFrameConstants::kCallerFPOffset)); |
__ mov(ecx, Operand(ebx, StandardFrameConstants::kContextOffset)); |
- __ cmp(ecx, ArgumentsAdaptorFrame::SENTINEL); |
+ __ cmp(Operand(ecx), Immediate(Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR))); |
__ j(equal, &adaptor); |
// Check index against formal parameters count limit passed in |
@@ -7192,7 +7193,7 @@ |
Label runtime; |
__ mov(edx, Operand(ebp, StandardFrameConstants::kCallerFPOffset)); |
__ mov(ecx, Operand(edx, StandardFrameConstants::kContextOffset)); |
- __ cmp(ecx, ArgumentsAdaptorFrame::SENTINEL); |
+ __ cmp(Operand(ecx), Immediate(Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR))); |
__ j(not_equal, &runtime); |
// Patch the arguments.length and the parameters pointer. |
@@ -7724,11 +7725,11 @@ |
__ push(ebp); |
__ mov(ebp, Operand(esp)); |
+ // Push marker in two places. |
+ int marker = is_construct ? StackFrame::ENTRY_CONSTRUCT : StackFrame::ENTRY; |
+ __ push(Immediate(Smi::FromInt(marker))); // context slot |
+ __ push(Immediate(Smi::FromInt(marker))); // function slot |
// Save callee-saved registers (C calling conventions). |
- int marker = is_construct ? StackFrame::ENTRY_CONSTRUCT : StackFrame::ENTRY; |
- // Push something that is not an arguments adaptor. |
- __ push(Immediate(~ArgumentsAdaptorFrame::SENTINEL)); |
- __ push(Immediate(Smi::FromInt(marker))); // @ function offset |
__ push(edi); |
__ push(esi); |
__ push(ebx); |