| Index: src/codegen-arm.cc
|
| ===================================================================
|
| --- src/codegen-arm.cc (revision 645)
|
| +++ src/codegen-arm.cc (working copy)
|
| @@ -2240,9 +2240,10 @@
|
| __ mov(r0, Operand(var->name()));
|
| __ push(r0);
|
|
|
| - // TODO(120): Use global object for function lookup and inline
|
| - // cache, and use global proxy as 'this' for invocation.
|
| - LoadGlobalReceiver(r0);
|
| + // Pass the global object as the receiver and let the IC stub
|
| + // patch the stack to use the global proxy as 'this' in the
|
| + // invoked function.
|
| + LoadGlobal();
|
|
|
| // Load the arguments.
|
| for (int i = 0; i < args->length(); i++) Load(args->at(i));
|
| @@ -3919,23 +3920,27 @@
|
| Label throw_out_of_memory_exception;
|
| Label throw_normal_exception;
|
|
|
| -#ifdef DEBUG
|
| + // Call into the runtime system. Collect garbage before the call if
|
| + // running with --gc-greedy set.
|
| if (FLAG_gc_greedy) {
|
| Failure* failure = Failure::RetryAfterGC(0);
|
| __ mov(r0, Operand(reinterpret_cast<intptr_t>(failure)));
|
| }
|
| - GenerateCore(masm,
|
| - &throw_normal_exception,
|
| + GenerateCore(masm, &throw_normal_exception,
|
| &throw_out_of_memory_exception,
|
| frame_type,
|
| FLAG_gc_greedy);
|
| -#else
|
| +
|
| + // Do space-specific GC and retry runtime call.
|
| GenerateCore(masm,
|
| &throw_normal_exception,
|
| &throw_out_of_memory_exception,
|
| frame_type,
|
| - false);
|
| -#endif
|
| + true);
|
| +
|
| + // Do full GC and retry runtime call one final time.
|
| + Failure* failure = Failure::InternalError();
|
| + __ mov(r0, Operand(reinterpret_cast<int32_t>(failure)));
|
| GenerateCore(masm,
|
| &throw_normal_exception,
|
| &throw_out_of_memory_exception,
|
|
|