| Index: src/codegen-arm.cc
|
| ===================================================================
|
| --- src/codegen-arm.cc (revision 636)
|
| +++ src/codegen-arm.cc (working copy)
|
| @@ -3920,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,
|
|
|