| Index: src/full-codegen/ppc/full-codegen-ppc.cc
|
| diff --git a/src/full-codegen/ppc/full-codegen-ppc.cc b/src/full-codegen/ppc/full-codegen-ppc.cc
|
| index f60dc9b2c51b8c797e03a44a742c2ebd5f12e82c..3361be3ad57fff22cc3330ea7525ea3b25e66946 100644
|
| --- a/src/full-codegen/ppc/full-codegen-ppc.cc
|
| +++ b/src/full-codegen/ppc/full-codegen-ppc.cc
|
| @@ -1426,49 +1426,12 @@ void FullCodeGenerator::EmitVariableLoad(VariableProxy* proxy,
|
|
|
| void FullCodeGenerator::VisitRegExpLiteral(RegExpLiteral* expr) {
|
| Comment cmnt(masm_, "[ RegExpLiteral");
|
| - Label materialized;
|
| - // Registers will be used as follows:
|
| - // r8 = materialized value (RegExp literal)
|
| - // r7 = JS function, literals array
|
| - // r6 = literal index
|
| - // r5 = RegExp pattern
|
| - // r4 = RegExp flags
|
| - // r3 = RegExp literal clone
|
| - __ LoadP(r3, MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset));
|
| - __ LoadP(r7, FieldMemOperand(r3, JSFunction::kLiteralsOffset));
|
| - int literal_offset = LiteralsArray::OffsetOfLiteralAt(expr->literal_index());
|
| - __ LoadP(r8, FieldMemOperand(r7, literal_offset), r0);
|
| - __ LoadRoot(ip, Heap::kUndefinedValueRootIndex);
|
| - __ cmp(r8, ip);
|
| - __ bne(&materialized);
|
| -
|
| - // Create regexp literal using runtime function.
|
| - // Result will be in r3.
|
| - __ LoadSmiLiteral(r6, Smi::FromInt(expr->literal_index()));
|
| - __ mov(r5, Operand(expr->pattern()));
|
| - __ mov(r4, Operand(expr->flags()));
|
| - __ Push(r7, r6, r5, r4);
|
| - __ CallRuntime(Runtime::kMaterializeRegExpLiteral, 4);
|
| - __ mr(r8, r3);
|
| -
|
| - __ bind(&materialized);
|
| - int size = JSRegExp::kSize + JSRegExp::kInObjectFieldCount * kPointerSize;
|
| - Label allocated, runtime_allocate;
|
| - __ Allocate(size, r3, r5, r6, &runtime_allocate, TAG_OBJECT);
|
| - __ b(&allocated);
|
| -
|
| - __ bind(&runtime_allocate);
|
| - __ LoadSmiLiteral(r3, Smi::FromInt(size));
|
| - __ Push(r8, r3);
|
| - __ CallRuntime(Runtime::kAllocateInNewSpace, 1);
|
| - __ pop(r8);
|
| -
|
| - __ bind(&allocated);
|
| - // After this, registers are used as follows:
|
| - // r3: Newly allocated regexp.
|
| - // r8: Materialized regexp.
|
| - // r5: temp.
|
| - __ CopyFields(r3, r8, r5.bit(), size / kPointerSize);
|
| + __ LoadP(r6, MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset));
|
| + __ LoadSmiLiteral(r5, Smi::FromInt(expr->literal_index()));
|
| + __ mov(r4, Operand(expr->pattern()));
|
| + __ mov(r3, Operand(expr->flags()));
|
| + FastCloneRegExpStub stub(isolate());
|
| + __ CallStub(&stub);
|
| context()->Plug(r3);
|
| }
|
|
|
|
|