| Index: src/ia32/lithium-codegen-ia32.cc | 
| diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc | 
| index 72f59d09c46ad50bec4d3135dd043fe043866d14..0003d258d80ce59419eac80ce4d6e5e79e27e71b 100644 | 
| --- a/src/ia32/lithium-codegen-ia32.cc | 
| +++ b/src/ia32/lithium-codegen-ia32.cc | 
| @@ -2543,25 +2543,29 @@ void LCodeGen::DoLoadKeyedGeneric(LLoadKeyedGeneric* instr) { | 
| void LCodeGen::DoArgumentsElements(LArgumentsElements* instr) { | 
| Register result = ToRegister(instr->result()); | 
|  | 
| -  // Check for arguments adapter frame. | 
| -  Label done, adapted; | 
| -  __ mov(result, Operand(ebp, StandardFrameConstants::kCallerFPOffset)); | 
| -  __ mov(result, Operand(result, StandardFrameConstants::kContextOffset)); | 
| -  __ cmp(Operand(result), | 
| -         Immediate(Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR))); | 
| -  __ j(equal, &adapted, Label::kNear); | 
| - | 
| -  // No arguments adaptor frame. | 
| -  __ mov(result, Operand(ebp)); | 
| -  __ jmp(&done, Label::kNear); | 
| +  if (instr->from_inlined()) { | 
| +    __ lea(result, Operand(esp, -2 * kPointerSize)); | 
| +  } else { | 
| +    // Check for arguments adapter frame. | 
| +    Label done, adapted; | 
| +    __ mov(result, Operand(ebp, StandardFrameConstants::kCallerFPOffset)); | 
| +    __ mov(result, Operand(result, StandardFrameConstants::kContextOffset)); | 
| +    __ cmp(Operand(result), | 
| +           Immediate(Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR))); | 
| +    __ j(equal, &adapted, Label::kNear); | 
| + | 
| +    // No arguments adaptor frame. | 
| +    __ mov(result, Operand(ebp)); | 
| +    __ jmp(&done, Label::kNear); | 
|  | 
| -  // Arguments adaptor frame present. | 
| -  __ bind(&adapted); | 
| -  __ mov(result, Operand(ebp, StandardFrameConstants::kCallerFPOffset)); | 
| +    // Arguments adaptor frame present. | 
| +    __ bind(&adapted); | 
| +    __ mov(result, Operand(ebp, StandardFrameConstants::kCallerFPOffset)); | 
|  | 
| -  // Result is the frame pointer for the frame if not adapted and for the real | 
| -  // frame below the adaptor frame if adapted. | 
| -  __ bind(&done); | 
| +    // Result is the frame pointer for the frame if not adapted and for the real | 
| +    // frame below the adaptor frame if adapted. | 
| +    __ bind(&done); | 
| +  } | 
| } | 
|  | 
|  | 
| @@ -2683,6 +2687,11 @@ void LCodeGen::DoPushArgument(LPushArgument* instr) { | 
| } | 
|  | 
|  | 
| +void LCodeGen::DoDrop(LDrop* instr) { | 
| +  __ Drop(instr->count()); | 
| +} | 
| + | 
| + | 
| void LCodeGen::DoThisFunction(LThisFunction* instr) { | 
| Register result = ToRegister(instr->result()); | 
| __ LoadHeapObject(result, instr->hydrogen()->closure()); | 
|  |