| Index: src/compiler/ia32/code-generator-ia32.cc
 | 
| diff --git a/src/compiler/ia32/code-generator-ia32.cc b/src/compiler/ia32/code-generator-ia32.cc
 | 
| index 76a457b8f6645d82b8c97753511fe4777df111e4..2bb240dea5996f3a3a156a5a9b9263e3460df0a7 100644
 | 
| --- a/src/compiler/ia32/code-generator-ia32.cc
 | 
| +++ b/src/compiler/ia32/code-generator-ia32.cc
 | 
| @@ -1309,29 +1309,15 @@ void CodeGenerator::AssembleMove(InstructionOperand* source,
 | 
|      Constant src_constant = g.ToConstant(source);
 | 
|      if (src_constant.type() == Constant::kHeapObject) {
 | 
|        Handle<HeapObject> src = src_constant.ToHeapObject();
 | 
| -      if (info()->IsOptimizing() && src.is_identical_to(info()->context())) {
 | 
| -        // Loading the context from the frame is way cheaper than materializing
 | 
| -        // the actual context heap object address.
 | 
| +      int offset;
 | 
| +      if (IsMaterializableFromFrame(src, &offset)) {
 | 
|          if (destination->IsRegister()) {
 | 
|            Register dst = g.ToRegister(destination);
 | 
| -          __ mov(dst, Operand(ebp, StandardFrameConstants::kContextOffset));
 | 
| +          __ mov(dst, Operand(ebp, offset));
 | 
|          } else {
 | 
|            DCHECK(destination->IsStackSlot());
 | 
|            Operand dst = g.ToOperand(destination);
 | 
| -          __ push(Operand(ebp, StandardFrameConstants::kContextOffset));
 | 
| -          __ pop(dst);
 | 
| -        }
 | 
| -      } else if (info()->IsOptimizing() &&
 | 
| -                 src.is_identical_to(info()->closure())) {
 | 
| -        // Loading the JSFunction from the frame is way cheaper than
 | 
| -        // materializing the actual JSFunction heap object address.
 | 
| -        if (destination->IsRegister()) {
 | 
| -          Register dst = g.ToRegister(destination);
 | 
| -          __ mov(dst, Operand(ebp, JavaScriptFrameConstants::kFunctionOffset));
 | 
| -        } else {
 | 
| -          DCHECK(destination->IsStackSlot());
 | 
| -          Operand dst = g.ToOperand(destination);
 | 
| -          __ push(Operand(ebp, JavaScriptFrameConstants::kFunctionOffset));
 | 
| +          __ push(Operand(ebp, offset));
 | 
|            __ pop(dst);
 | 
|          }
 | 
|        } else if (destination->IsRegister()) {
 | 
| 
 |