| Index: src/mips/regexp-macro-assembler-mips.cc
 | 
| ===================================================================
 | 
| --- src/mips/regexp-macro-assembler-mips.cc	(revision 9531)
 | 
| +++ src/mips/regexp-macro-assembler-mips.cc	(working copy)
 | 
| @@ -377,9 +377,12 @@
 | 
|      // Isolate.
 | 
|      __ li(a3, Operand(ExternalReference::isolate_address()));
 | 
|  
 | 
| -    ExternalReference function =
 | 
| -        ExternalReference::re_case_insensitive_compare_uc16(masm_->isolate());
 | 
| -    __ CallCFunction(function, argument_count);
 | 
| +    {
 | 
| +      AllowExternalCallThatCantCauseGC scope(masm_);
 | 
| +      ExternalReference function =
 | 
| +          ExternalReference::re_case_insensitive_compare_uc16(masm_->isolate());
 | 
| +      __ CallCFunction(function, argument_count);
 | 
| +    }
 | 
|  
 | 
|      // Restore regexp engine registers.
 | 
|      __ MultiPop(regexp_registers_to_retain);
 | 
| @@ -607,6 +610,12 @@
 | 
|  
 | 
|      // Entry code:
 | 
|      __ bind(&entry_label_);
 | 
| +
 | 
| +    // Tell the system that we have a stack frame.  Because the type is MANUAL,
 | 
| +    // no is generated.
 | 
| +    FrameScope scope(masm_, StackFrame::MANUAL);
 | 
| +
 | 
| +    // Actually emit code to start a new stack frame.
 | 
|      // Push arguments
 | 
|      // Save callee-save registers.
 | 
|      // Start new stack frame.
 | 
| @@ -1244,13 +1253,14 @@
 | 
|    if (stack_alignment < kPointerSize) stack_alignment = kPointerSize;
 | 
|    // Stack is already aligned for call, so decrement by alignment
 | 
|    // to make room for storing the return address.
 | 
| -  __ Subu(sp, sp, Operand(stack_alignment));
 | 
| -  __ sw(ra, MemOperand(sp, 0));
 | 
| -  __ mov(a0, sp);
 | 
| +  __ Subu(sp, sp, Operand(stack_alignment + kCArgsSlotsSize));
 | 
| +  const int return_address_offset = kCArgsSlotsSize;
 | 
| +  __ Addu(a0, sp, return_address_offset);
 | 
| +  __ sw(ra, MemOperand(a0, 0));
 | 
|    __ mov(t9, t1);
 | 
|    __ Call(t9);
 | 
| -  __ lw(ra, MemOperand(sp, 0));
 | 
| -  __ Addu(sp, sp, Operand(stack_alignment));
 | 
| +  __ lw(ra, MemOperand(sp, return_address_offset));
 | 
| +  __ Addu(sp, sp, Operand(stack_alignment + kCArgsSlotsSize));
 | 
|    __ Jump(ra);
 | 
|  }
 | 
|  
 | 
| 
 |