Commit 30f8d335 authored by mstarzinger's avatar mstarzinger Committed by Commit bot

[fullcodegen] Factor out VisitRegExpLiteral from architectures.

This makes the aforementioned visitation function independent of the
target architecture by leveraging existing abstractions.

R=mvstanton@chromium.org

Review-Url: https://codereview.chromium.org/2060173002
Cr-Commit-Position: refs/heads/master@{#36922}
parent ccefb3ae
......@@ -1374,18 +1374,6 @@ void FullCodeGenerator::EmitVariableLoad(VariableProxy* proxy,
}
void FullCodeGenerator::VisitRegExpLiteral(RegExpLiteral* expr) {
Comment cmnt(masm_, "[ RegExpLiteral");
__ ldr(r3, MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset));
__ mov(r2, Operand(Smi::FromInt(expr->literal_index())));
__ mov(r1, Operand(expr->pattern()));
__ mov(r0, Operand(Smi::FromInt(expr->flags())));
FastCloneRegExpStub stub(isolate());
__ CallStub(&stub);
context()->Plug(r0);
}
void FullCodeGenerator::EmitAccessor(ObjectLiteralProperty* property) {
Expression* expression = (property == NULL) ? NULL : property->value();
if (expression == NULL) {
......
......@@ -1359,18 +1359,6 @@ void FullCodeGenerator::EmitVariableLoad(VariableProxy* proxy,
}
void FullCodeGenerator::VisitRegExpLiteral(RegExpLiteral* expr) {
Comment cmnt(masm_, "[ RegExpLiteral");
__ Ldr(x3, MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset));
__ Mov(x2, Smi::FromInt(expr->literal_index()));
__ Mov(x1, Operand(expr->pattern()));
__ Mov(x0, Smi::FromInt(expr->flags()));
FastCloneRegExpStub stub(isolate());
__ CallStub(&stub);
context()->Plug(x0);
}
void FullCodeGenerator::EmitAccessor(ObjectLiteralProperty* property) {
Expression* expression = (property == NULL) ? NULL : property->value();
if (expression == NULL) {
......
......@@ -1541,6 +1541,19 @@ void FullCodeGenerator::VisitClassLiteral(ClassLiteral* lit) {
context()->Plug(result_register());
}
void FullCodeGenerator::VisitRegExpLiteral(RegExpLiteral* expr) {
Comment cmnt(masm_, "[ RegExpLiteral");
Callable callable = CodeFactory::FastCloneRegExp(isolate());
CallInterfaceDescriptor descriptor = callable.descriptor();
LoadFromFrameField(JavaScriptFrameConstants::kFunctionOffset,
descriptor.GetRegisterParameter(0));
__ Move(descriptor.GetRegisterParameter(1),
Smi::FromInt(expr->literal_index()));
__ Move(descriptor.GetRegisterParameter(2), expr->pattern());
__ Move(descriptor.GetRegisterParameter(3), Smi::FromInt(expr->flags()));
__ Call(callable.code(), RelocInfo::CODE_TARGET);
context()->Plug(result_register());
}
void FullCodeGenerator::VisitNativeFunctionLiteral(
NativeFunctionLiteral* expr) {
......
......@@ -1300,18 +1300,6 @@ void FullCodeGenerator::EmitVariableLoad(VariableProxy* proxy,
}
void FullCodeGenerator::VisitRegExpLiteral(RegExpLiteral* expr) {
Comment cmnt(masm_, "[ RegExpLiteral");
__ mov(edi, Operand(ebp, JavaScriptFrameConstants::kFunctionOffset));
__ Move(eax, Immediate(Smi::FromInt(expr->literal_index())));
__ Move(ecx, Immediate(expr->pattern()));
__ Move(edx, Immediate(Smi::FromInt(expr->flags())));
FastCloneRegExpStub stub(isolate());
__ CallStub(&stub);
context()->Plug(eax);
}
void FullCodeGenerator::EmitAccessor(ObjectLiteralProperty* property) {
Expression* expression = (property == NULL) ? NULL : property->value();
if (expression == NULL) {
......
......@@ -1370,18 +1370,6 @@ void FullCodeGenerator::EmitVariableLoad(VariableProxy* proxy,
}
void FullCodeGenerator::VisitRegExpLiteral(RegExpLiteral* expr) {
Comment cmnt(masm_, "[ RegExpLiteral");
__ lw(a3, MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset));
__ li(a2, Operand(Smi::FromInt(expr->literal_index())));
__ li(a1, Operand(expr->pattern()));
__ li(a0, Operand(Smi::FromInt(expr->flags())));
FastCloneRegExpStub stub(isolate());
__ CallStub(&stub);
context()->Plug(v0);
}
void FullCodeGenerator::EmitAccessor(ObjectLiteralProperty* property) {
Expression* expression = (property == NULL) ? NULL : property->value();
if (expression == NULL) {
......
......@@ -1371,18 +1371,6 @@ void FullCodeGenerator::EmitVariableLoad(VariableProxy* proxy,
}
void FullCodeGenerator::VisitRegExpLiteral(RegExpLiteral* expr) {
Comment cmnt(masm_, "[ RegExpLiteral");
__ ld(a3, MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset));
__ li(a2, Operand(Smi::FromInt(expr->literal_index())));
__ li(a1, Operand(expr->pattern()));
__ li(a0, Operand(Smi::FromInt(expr->flags())));
FastCloneRegExpStub stub(isolate());
__ CallStub(&stub);
context()->Plug(v0);
}
void FullCodeGenerator::EmitAccessor(ObjectLiteralProperty* property) {
Expression* expression = (property == NULL) ? NULL : property->value();
if (expression == NULL) {
......
......@@ -1336,18 +1336,6 @@ void FullCodeGenerator::EmitVariableLoad(VariableProxy* proxy,
}
void FullCodeGenerator::VisitRegExpLiteral(RegExpLiteral* expr) {
Comment cmnt(masm_, "[ RegExpLiteral");
__ LoadP(r6, MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset));
__ LoadSmiLiteral(r5, Smi::FromInt(expr->literal_index()));
__ mov(r4, Operand(expr->pattern()));
__ LoadSmiLiteral(r3, Smi::FromInt(expr->flags()));
FastCloneRegExpStub stub(isolate());
__ CallStub(&stub);
context()->Plug(r3);
}
void FullCodeGenerator::EmitAccessor(ObjectLiteralProperty* property) {
Expression* expression = (property == NULL) ? NULL : property->value();
if (expression == NULL) {
......
......@@ -1298,17 +1298,6 @@ void FullCodeGenerator::EmitVariableLoad(VariableProxy* proxy,
}
}
void FullCodeGenerator::VisitRegExpLiteral(RegExpLiteral* expr) {
Comment cmnt(masm_, "[ RegExpLiteral");
__ LoadP(r5, MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset));
__ LoadSmiLiteral(r4, Smi::FromInt(expr->literal_index()));
__ mov(r3, Operand(expr->pattern()));
__ LoadSmiLiteral(r2, Smi::FromInt(expr->flags()));
FastCloneRegExpStub stub(isolate());
__ CallStub(&stub);
context()->Plug(r2);
}
void FullCodeGenerator::EmitAccessor(ObjectLiteralProperty* property) {
Expression* expression = (property == NULL) ? NULL : property->value();
if (expression == NULL) {
......
......@@ -1326,18 +1326,6 @@ void FullCodeGenerator::EmitVariableLoad(VariableProxy* proxy,
}
void FullCodeGenerator::VisitRegExpLiteral(RegExpLiteral* expr) {
Comment cmnt(masm_, "[ RegExpLiteral");
__ movp(rdi, Operand(rbp, JavaScriptFrameConstants::kFunctionOffset));
__ Move(rax, Smi::FromInt(expr->literal_index()));
__ Move(rcx, expr->pattern());
__ Move(rdx, Smi::FromInt(expr->flags()));
FastCloneRegExpStub stub(isolate());
__ CallStub(&stub);
context()->Plug(rax);
}
void FullCodeGenerator::EmitAccessor(ObjectLiteralProperty* property) {
Expression* expression = (property == NULL) ? NULL : property->value();
if (expression == NULL) {
......
......@@ -1299,18 +1299,6 @@ void FullCodeGenerator::EmitVariableLoad(VariableProxy* proxy,
}
void FullCodeGenerator::VisitRegExpLiteral(RegExpLiteral* expr) {
Comment cmnt(masm_, "[ RegExpLiteral");
__ mov(edi, Operand(ebp, JavaScriptFrameConstants::kFunctionOffset));
__ Move(eax, Immediate(Smi::FromInt(expr->literal_index())));
__ Move(ecx, Immediate(expr->pattern()));
__ Move(edx, Immediate(Smi::FromInt(expr->flags())));
FastCloneRegExpStub stub(isolate());
__ CallStub(&stub);
context()->Plug(eax);
}
void FullCodeGenerator::EmitAccessor(ObjectLiteralProperty* property) {
Expression* expression = (property == NULL) ? NULL : property->value();
if (expression == NULL) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment