Chromium Code Reviews| Index: src/arm/regexp-macro-assembler-arm.cc |
| =================================================================== |
| --- src/arm/regexp-macro-assembler-arm.cc (revision 8110) |
| +++ src/arm/regexp-macro-assembler-arm.cc (working copy) |
| @@ -371,9 +371,14 @@ |
| // Isolate. |
| __ mov(r3, Operand(ExternalReference::isolate_address())); |
| - ExternalReference function = |
| - ExternalReference::re_case_insensitive_compare_uc16(masm_->isolate()); |
| - __ CallCFunction(function, argument_count); |
| + { |
| + // The compare function can't cause a GC. Tell the system that it is OK |
| + // to call into C++ without having a stack frame in place. |
| + FrameScope scope(masm_, StackFrame::NONE); |
| + ExternalReference function = |
| + ExternalReference::re_case_insensitive_compare_uc16(masm_->isolate()); |
| + __ CallCFunction(function, argument_count); |
|
Søren Thygesen Gjesse
2011/05/31 07:51:45
How about having CallCFunctionWithoutFrame or Call
Erik Corry
2011/05/31 11:52:52
This turns out to be messy because there are lots
|
| + } |
| // Check if function returned non-zero for success or zero for failure. |
| __ cmp(r0, Operand(0, RelocInfo::NONE)); |
| @@ -611,6 +616,12 @@ |
| // Entry code: |
| __ bind(&entry_label_); |
| + |
| + // Tell the system that we have a stack frame. Because the type is NONE, no |
| + // is generated. |
| + FrameScope scope(masm_, StackFrame::NONE); |
| + |
| + // Actually emit code to start a new stack frame. |
| // Push arguments |
| // Save callee-save registers. |
| // Start new stack frame. |