| Index: src/full-codegen/mips64/full-codegen-mips64.cc
 | 
| diff --git a/src/full-codegen/mips64/full-codegen-mips64.cc b/src/full-codegen/mips64/full-codegen-mips64.cc
 | 
| index d86ed8e4e7872d08b43904a8abfa0ea352c64631..d024434bbabb082bd5d1fe676e38879a18fb7b46 100644
 | 
| --- a/src/full-codegen/mips64/full-codegen-mips64.cc
 | 
| +++ b/src/full-codegen/mips64/full-codegen-mips64.cc
 | 
| @@ -1459,49 +1459,12 @@ void FullCodeGenerator::EmitVariableLoad(VariableProxy* proxy,
 | 
|  
 | 
|  void FullCodeGenerator::VisitRegExpLiteral(RegExpLiteral* expr) {
 | 
|    Comment cmnt(masm_, "[ RegExpLiteral");
 | 
| -  Label materialized;
 | 
| -  // Registers will be used as follows:
 | 
| -  // a5 = materialized value (RegExp literal)
 | 
| -  // a4 = JS function, literals array
 | 
| -  // a3 = literal index
 | 
| -  // a2 = RegExp pattern
 | 
| -  // a1 = RegExp flags
 | 
| -  // a0 = RegExp literal clone
 | 
| -  __ ld(a0, MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset));
 | 
| -  __ ld(a4, FieldMemOperand(a0, JSFunction::kLiteralsOffset));
 | 
| -  int literal_offset = LiteralsArray::OffsetOfLiteralAt(expr->literal_index());
 | 
| -  __ ld(a5, FieldMemOperand(a4, literal_offset));
 | 
| -  __ LoadRoot(at, Heap::kUndefinedValueRootIndex);
 | 
| -  __ Branch(&materialized, ne, a5, Operand(at));
 | 
| -
 | 
| -  // Create regexp literal using runtime function.
 | 
| -  // Result will be in v0.
 | 
| -  __ li(a3, Operand(Smi::FromInt(expr->literal_index())));
 | 
| -  __ li(a2, Operand(expr->pattern()));
 | 
| -  __ li(a1, Operand(expr->flags()));
 | 
| -  __ Push(a4, a3, a2, a1);
 | 
| -  __ CallRuntime(Runtime::kMaterializeRegExpLiteral, 4);
 | 
| -  __ mov(a5, v0);
 | 
| -
 | 
| -  __ bind(&materialized);
 | 
| -  int size = JSRegExp::kSize + JSRegExp::kInObjectFieldCount * kPointerSize;
 | 
| -  Label allocated, runtime_allocate;
 | 
| -  __ Allocate(size, v0, a2, a3, &runtime_allocate, TAG_OBJECT);
 | 
| -  __ jmp(&allocated);
 | 
| -
 | 
| -  __ bind(&runtime_allocate);
 | 
| -  __ li(a0, Operand(Smi::FromInt(size)));
 | 
| -  __ Push(a5, a0);
 | 
| -  __ CallRuntime(Runtime::kAllocateInNewSpace, 1);
 | 
| -  __ pop(a5);
 | 
| -
 | 
| -  __ bind(&allocated);
 | 
| -
 | 
| -  // After this, registers are used as follows:
 | 
| -  // v0: Newly allocated regexp.
 | 
| -  // a5: Materialized regexp.
 | 
| -  // a2: temp.
 | 
| -  __ CopyFields(v0, a5, a2.bit(), size / kPointerSize);
 | 
| +  __ ld(a3, MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset));
 | 
| +  __ li(a2, Operand(Smi::FromInt(expr->literal_index())));
 | 
| +  __ li(a1, Operand(expr->pattern()));
 | 
| +  __ li(a0, Operand(expr->flags()));
 | 
| +  FastCloneRegExpStub stub(isolate());
 | 
| +  __ CallStub(&stub);
 | 
|    context()->Plug(v0);
 | 
|  }
 | 
|  
 | 
| 
 |