| Index: src/ia32/regexp-macro-assembler-ia32.cc
|
| ===================================================================
|
| --- src/ia32/regexp-macro-assembler-ia32.cc (revision 8110)
|
| +++ src/ia32/regexp-macro-assembler-ia32.cc (working copy)
|
| @@ -396,9 +396,14 @@
|
| __ add(edx, Operand(esi));
|
| __ mov(Operand(esp, 0 * kPointerSize), edx);
|
|
|
| - ExternalReference compare =
|
| - ExternalReference::re_case_insensitive_compare_uc16(masm_->isolate());
|
| - __ CallCFunction(compare, 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 compare =
|
| + ExternalReference::re_case_insensitive_compare_uc16(masm_->isolate());
|
| + __ CallCFunction(compare, argument_count);
|
| + }
|
| // Pop original values before reacting on result value.
|
| __ pop(ebx);
|
| __ pop(backtrack_stackpointer());
|
| @@ -668,7 +673,12 @@
|
|
|
| // Entry code:
|
| __ bind(&entry_label_);
|
| - // Start new stack frame.
|
| +
|
| + // 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(ebp);
|
| __ mov(ebp, esp);
|
| // Save callee-save registers. Order here should correspond to order of
|
|
|