| Index: src/arm/macro-assembler-arm.cc | 
| =================================================================== | 
| --- src/arm/macro-assembler-arm.cc	(revision 10127) | 
| +++ src/arm/macro-assembler-arm.cc	(working copy) | 
| @@ -407,6 +407,19 @@ | 
| } | 
|  | 
|  | 
| +void MacroAssembler::LoadHeapObject(Register result, | 
| +                                    Handle<HeapObject> object) { | 
| +  if (isolate()->heap()->InNewSpace(*object)) { | 
| +    Handle<JSGlobalPropertyCell> cell = | 
| +        isolate()->factory()->NewJSGlobalPropertyCell(object); | 
| +    mov(result, Operand(cell)); | 
| +    ldr(result, FieldMemOperand(result, JSGlobalPropertyCell::kValueOffset)); | 
| +  } else { | 
| +    mov(result, Operand(object)); | 
| +  } | 
| +} | 
| + | 
| + | 
| void MacroAssembler::InNewSpace(Register object, | 
| Register scratch, | 
| Condition cond, | 
| @@ -1111,7 +1124,7 @@ | 
| ASSERT(flag == JUMP_FUNCTION || has_frame()); | 
|  | 
| // Get the function and setup the context. | 
| -  mov(r1, Operand(function)); | 
| +  LoadHeapObject(r1, function); | 
| ldr(cp, FieldMemOperand(r1, JSFunction::kContextOffset)); | 
|  | 
| ParameterCount expected(function->shared()->formal_parameter_count()); | 
|  |