Index: src/x64/fast-codegen-x64.cc |
=================================================================== |
--- src/x64/fast-codegen-x64.cc (revision 3659) |
+++ src/x64/fast-codegen-x64.cc (working copy) |
@@ -51,7 +51,7 @@ |
// |
// The function builds a JS frame. Please see JavaScriptFrameConstants in |
// frames-x64.h for its layout. |
-void FastCodeGenerator::Generate(FunctionLiteral* fun) { |
+void FullCodeGenerator::Generate(FunctionLiteral* fun) { |
function_ = fun; |
SetFunctionPosition(fun); |
@@ -161,7 +161,7 @@ |
} |
-void FastCodeGenerator::EmitReturnSequence(int position) { |
+void FullCodeGenerator::EmitReturnSequence(int position) { |
Comment cmnt(masm_, "[ Return sequence"); |
if (return_label_.is_bound()) { |
__ jmp(&return_label_); |
@@ -200,7 +200,7 @@ |
} |
-void FastCodeGenerator::Apply(Expression::Context context, Register reg) { |
+void FullCodeGenerator::Apply(Expression::Context context, Register reg) { |
switch (context) { |
case Expression::kUninitialized: |
UNREACHABLE(); |
@@ -243,7 +243,7 @@ |
} |
-void FastCodeGenerator::Apply(Expression::Context context, Slot* slot) { |
+void FullCodeGenerator::Apply(Expression::Context context, Slot* slot) { |
switch (context) { |
case Expression::kUninitialized: |
UNREACHABLE(); |
@@ -285,7 +285,7 @@ |
} |
-void FastCodeGenerator::Apply(Expression::Context context, Literal* lit) { |
+void FullCodeGenerator::Apply(Expression::Context context, Literal* lit) { |
switch (context) { |
case Expression::kUninitialized: |
UNREACHABLE(); |
@@ -324,7 +324,7 @@ |
} |
-void FastCodeGenerator::ApplyTOS(Expression::Context context) { |
+void FullCodeGenerator::ApplyTOS(Expression::Context context) { |
switch (context) { |
case Expression::kUninitialized: |
UNREACHABLE(); |
@@ -364,7 +364,7 @@ |
} |
-void FastCodeGenerator::DropAndApply(int count, |
+void FullCodeGenerator::DropAndApply(int count, |
Expression::Context context, |
Register reg) { |
ASSERT(count > 0); |
@@ -415,7 +415,7 @@ |
} |
-void FastCodeGenerator::Apply(Expression::Context context, |
+void FullCodeGenerator::Apply(Expression::Context context, |
Label* materialize_true, |
Label* materialize_false) { |
switch (context) { |
@@ -480,7 +480,7 @@ |
} |
-void FastCodeGenerator::DoTest(Expression::Context context) { |
+void FullCodeGenerator::DoTest(Expression::Context context) { |
// The value to test is in the accumulator. If the value might be needed |
// on the stack (value/test and test/value contexts with a stack location |
// desired), then the value is already duplicated on the stack. |
@@ -614,7 +614,7 @@ |
} |
-MemOperand FastCodeGenerator::EmitSlotSearch(Slot* slot, Register scratch) { |
+MemOperand FullCodeGenerator::EmitSlotSearch(Slot* slot, Register scratch) { |
switch (slot->type()) { |
case Slot::PARAMETER: |
case Slot::LOCAL: |
@@ -633,13 +633,13 @@ |
} |
-void FastCodeGenerator::Move(Register destination, Slot* source) { |
+void FullCodeGenerator::Move(Register destination, Slot* source) { |
MemOperand location = EmitSlotSearch(source, destination); |
__ movq(destination, location); |
} |
-void FastCodeGenerator::Move(Slot* dst, |
+void FullCodeGenerator::Move(Slot* dst, |
Register src, |
Register scratch1, |
Register scratch2) { |
@@ -655,7 +655,7 @@ |
} |
-void FastCodeGenerator::VisitDeclaration(Declaration* decl) { |
+void FullCodeGenerator::VisitDeclaration(Declaration* decl) { |
Comment cmnt(masm_, "[ Declaration"); |
Variable* var = decl->proxy()->var(); |
ASSERT(var != NULL); // Must have been resolved. |
@@ -754,7 +754,7 @@ |
} |
-void FastCodeGenerator::DeclareGlobals(Handle<FixedArray> pairs) { |
+void FullCodeGenerator::DeclareGlobals(Handle<FixedArray> pairs) { |
// Call the runtime to declare the globals. |
__ push(rsi); // The context is the first argument. |
__ Push(pairs); |
@@ -764,7 +764,7 @@ |
} |
-void FastCodeGenerator::VisitFunctionLiteral(FunctionLiteral* expr) { |
+void FullCodeGenerator::VisitFunctionLiteral(FunctionLiteral* expr) { |
Comment cmnt(masm_, "[ FunctionLiteral"); |
// Build the function boilerplate and instantiate it. |
@@ -782,13 +782,13 @@ |
} |
-void FastCodeGenerator::VisitVariableProxy(VariableProxy* expr) { |
+void FullCodeGenerator::VisitVariableProxy(VariableProxy* expr) { |
Comment cmnt(masm_, "[ VariableProxy"); |
EmitVariableLoad(expr->var(), context_); |
} |
-void FastCodeGenerator::EmitVariableLoad(Variable* var, |
+void FullCodeGenerator::EmitVariableLoad(Variable* var, |
Expression::Context context) { |
Expression* rewrite = var->rewrite(); |
if (rewrite == NULL) { |
@@ -864,7 +864,7 @@ |
} |
-void FastCodeGenerator::VisitRegExpLiteral(RegExpLiteral* expr) { |
+void FullCodeGenerator::VisitRegExpLiteral(RegExpLiteral* expr) { |
Comment cmnt(masm_, "[ RegExpLiteral"); |
Label done; |
// Registers will be used as follows: |
@@ -890,7 +890,7 @@ |
} |
-void FastCodeGenerator::VisitObjectLiteral(ObjectLiteral* expr) { |
+void FullCodeGenerator::VisitObjectLiteral(ObjectLiteral* expr) { |
Comment cmnt(masm_, "[ ObjectLiteral"); |
__ movq(rdi, Operand(rbp, JavaScriptFrameConstants::kFunctionOffset)); |
__ push(FieldOperand(rdi, JSFunction::kLiteralsOffset)); |
@@ -960,7 +960,7 @@ |
} |
-void FastCodeGenerator::VisitArrayLiteral(ArrayLiteral* expr) { |
+void FullCodeGenerator::VisitArrayLiteral(ArrayLiteral* expr) { |
Comment cmnt(masm_, "[ ArrayLiteral"); |
__ movq(rbx, Operand(rbp, JavaScriptFrameConstants::kFunctionOffset)); |
__ push(FieldOperand(rbx, JSFunction::kLiteralsOffset)); |
@@ -1010,7 +1010,7 @@ |
} |
-void FastCodeGenerator::EmitNamedPropertyLoad(Property* prop) { |
+void FullCodeGenerator::EmitNamedPropertyLoad(Property* prop) { |
SetSourcePosition(prop->position()); |
Literal* key = prop->key()->AsLiteral(); |
__ Move(rcx, key->handle()); |
@@ -1020,7 +1020,7 @@ |
} |
-void FastCodeGenerator::EmitKeyedPropertyLoad(Property* prop) { |
+void FullCodeGenerator::EmitKeyedPropertyLoad(Property* prop) { |
SetSourcePosition(prop->position()); |
Handle<Code> ic(Builtins::builtin(Builtins::KeyedLoadIC_Initialize)); |
__ Call(ic, RelocInfo::CODE_TARGET); |
@@ -1028,7 +1028,7 @@ |
} |
-void FastCodeGenerator::EmitBinaryOp(Token::Value op, |
+void FullCodeGenerator::EmitBinaryOp(Token::Value op, |
Expression::Context context) { |
__ push(result_register()); |
GenericBinaryOpStub stub(op, |
@@ -1039,7 +1039,7 @@ |
} |
-void FastCodeGenerator::EmitVariableAssignment(Variable* var, |
+void FullCodeGenerator::EmitVariableAssignment(Variable* var, |
Expression::Context context) { |
ASSERT(var != NULL); |
ASSERT(var->is_global() || var->slot() != NULL); |
@@ -1086,7 +1086,7 @@ |
} |
-void FastCodeGenerator::EmitNamedPropertyAssignment(Assignment* expr) { |
+void FullCodeGenerator::EmitNamedPropertyAssignment(Assignment* expr) { |
// Assignment to a property, using a named store IC. |
Property* prop = expr->target()->AsProperty(); |
ASSERT(prop != NULL); |
@@ -1121,7 +1121,7 @@ |
} |
-void FastCodeGenerator::EmitKeyedPropertyAssignment(Assignment* expr) { |
+void FullCodeGenerator::EmitKeyedPropertyAssignment(Assignment* expr) { |
// Assignment to a property, using a keyed store IC. |
// If the assignment starts a block of assignments to the same object, |
@@ -1157,7 +1157,7 @@ |
} |
-void FastCodeGenerator::VisitProperty(Property* expr) { |
+void FullCodeGenerator::VisitProperty(Property* expr) { |
Comment cmnt(masm_, "[ Property"); |
Expression* key = expr->key(); |
@@ -1177,7 +1177,7 @@ |
} |
-void FastCodeGenerator::EmitCallWithIC(Call* expr, |
+void FullCodeGenerator::EmitCallWithIC(Call* expr, |
Handle<Object> ignored, |
RelocInfo::Mode mode) { |
// Code common for calls using the IC. |
@@ -1200,7 +1200,7 @@ |
} |
-void FastCodeGenerator::EmitCallWithStub(Call* expr) { |
+void FullCodeGenerator::EmitCallWithStub(Call* expr) { |
// Code common for calls using the call stub. |
ZoneList<Expression*>* args = expr->arguments(); |
int arg_count = args->length(); |
@@ -1218,7 +1218,7 @@ |
} |
-void FastCodeGenerator::VisitCall(Call* expr) { |
+void FullCodeGenerator::VisitCall(Call* expr) { |
Comment cmnt(masm_, "[ Call"); |
Expression* fun = expr->expression(); |
Variable* var = fun->AsVariableProxy()->AsVariable(); |
@@ -1292,7 +1292,7 @@ |
} |
-void FastCodeGenerator::VisitCallNew(CallNew* expr) { |
+void FullCodeGenerator::VisitCallNew(CallNew* expr) { |
Comment cmnt(masm_, "[ CallNew"); |
// According to ECMA-262, section 11.2.2, page 44, the function |
// expression in new calls must be evaluated before the |
@@ -1327,7 +1327,7 @@ |
} |
-void FastCodeGenerator::VisitCallRuntime(CallRuntime* expr) { |
+void FullCodeGenerator::VisitCallRuntime(CallRuntime* expr) { |
Comment cmnt(masm_, "[ CallRuntime"); |
ZoneList<Expression*>* args = expr->arguments(); |
@@ -1360,7 +1360,7 @@ |
} |
-void FastCodeGenerator::VisitUnaryOperation(UnaryOperation* expr) { |
+void FullCodeGenerator::VisitUnaryOperation(UnaryOperation* expr) { |
switch (expr->op()) { |
case Token::VOID: { |
Comment cmnt(masm_, "[ UnaryOperation (VOID)"); |
@@ -1470,7 +1470,7 @@ |
} |
-void FastCodeGenerator::VisitCountOperation(CountOperation* expr) { |
+void FullCodeGenerator::VisitCountOperation(CountOperation* expr) { |
Comment cmnt(masm_, "[ CountOperation"); |
// Expression can only be a property, a global or a (parameter or local) |
@@ -1601,7 +1601,7 @@ |
} |
} |
-void FastCodeGenerator::VisitBinaryOperation(BinaryOperation* expr) { |
+void FullCodeGenerator::VisitBinaryOperation(BinaryOperation* expr) { |
Comment cmnt(masm_, "[ BinaryOperation"); |
switch (expr->op()) { |
case Token::COMMA: |
@@ -1636,7 +1636,7 @@ |
} |
-void FastCodeGenerator::VisitCompareOperation(CompareOperation* expr) { |
+void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) { |
Comment cmnt(masm_, "[ CompareOperation"); |
// Always perform the comparison for its control flow. Pack the result |
@@ -1748,25 +1748,25 @@ |
} |
-void FastCodeGenerator::VisitThisFunction(ThisFunction* expr) { |
+void FullCodeGenerator::VisitThisFunction(ThisFunction* expr) { |
__ movq(rax, Operand(rbp, JavaScriptFrameConstants::kFunctionOffset)); |
Apply(context_, rax); |
} |
-Register FastCodeGenerator::result_register() { return rax; } |
+Register FullCodeGenerator::result_register() { return rax; } |
-Register FastCodeGenerator::context_register() { return rsi; } |
+Register FullCodeGenerator::context_register() { return rsi; } |
-void FastCodeGenerator::StoreToFrameField(int frame_offset, Register value) { |
+void FullCodeGenerator::StoreToFrameField(int frame_offset, Register value) { |
ASSERT(IsAligned(frame_offset, kPointerSize)); |
__ movq(Operand(rbp, frame_offset), value); |
} |
-void FastCodeGenerator::LoadContextField(Register dst, int context_index) { |
+void FullCodeGenerator::LoadContextField(Register dst, int context_index) { |
__ movq(dst, CodeGenerator::ContextOperand(rsi, context_index)); |
} |
@@ -1775,7 +1775,7 @@ |
// Non-local control flow support. |
-void FastCodeGenerator::EnterFinallyBlock() { |
+void FullCodeGenerator::EnterFinallyBlock() { |
ASSERT(!result_register().is(rdx)); |
ASSERT(!result_register().is(rcx)); |
// Cook return address on top of stack (smi encoded Code* delta) |
@@ -1789,7 +1789,7 @@ |
} |
-void FastCodeGenerator::ExitFinallyBlock() { |
+void FullCodeGenerator::ExitFinallyBlock() { |
ASSERT(!result_register().is(rdx)); |
ASSERT(!result_register().is(rcx)); |
// Restore result register from stack. |