Commit 68ef41af authored by erik.corry@gmail.com's avatar erik.corry@gmail.com

Small tweaks to make the x64 full code generator generate

more compact code.
Review URL: http://codereview.chromium.org/3443022

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5520 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 9c503a83
...@@ -375,10 +375,10 @@ void FullCodeGenerator::AccumulatorValueContext::Plug( ...@@ -375,10 +375,10 @@ void FullCodeGenerator::AccumulatorValueContext::Plug(
Label* materialize_false) const { Label* materialize_false) const {
NearLabel done; NearLabel done;
__ bind(materialize_true); __ bind(materialize_true);
__ Move(result_register(), Factory::true_value()); __ LoadRoot(result_register(), Heap::kTrueValueRootIndex);
__ jmp(&done); __ jmp(&done);
__ bind(materialize_false); __ bind(materialize_false);
__ Move(result_register(), Factory::false_value()); __ LoadRoot(result_register(), Heap::kFalseValueRootIndex);
__ bind(&done); __ bind(&done);
} }
...@@ -388,10 +388,10 @@ void FullCodeGenerator::StackValueContext::Plug( ...@@ -388,10 +388,10 @@ void FullCodeGenerator::StackValueContext::Plug(
Label* materialize_false) const { Label* materialize_false) const {
NearLabel done; NearLabel done;
__ bind(materialize_true); __ bind(materialize_true);
__ Push(Factory::true_value()); __ PushRoot(Heap::kTrueValueRootIndex);
__ jmp(&done); __ jmp(&done);
__ bind(materialize_false); __ bind(materialize_false);
__ Push(Factory::false_value()); __ PushRoot(Heap::kFalseValueRootIndex);
__ bind(&done); __ bind(&done);
} }
...@@ -2250,12 +2250,12 @@ void FullCodeGenerator::EmitClassOf(ZoneList<Expression*>* args) { ...@@ -2250,12 +2250,12 @@ void FullCodeGenerator::EmitClassOf(ZoneList<Expression*>* args) {
// Functions have class 'Function'. // Functions have class 'Function'.
__ bind(&function); __ bind(&function);
__ Move(rax, Factory::function_class_symbol()); __ LoadRoot(rax, Heap::kFunctionClassSymbolRootIndex);
__ jmp(&done); __ jmp(&done);
// Objects with a non-function constructor have class 'Object'. // Objects with a non-function constructor have class 'Object'.
__ bind(&non_function_constructor); __ bind(&non_function_constructor);
__ Move(rax, Factory::Object_symbol()); __ LoadRoot(rax, Heap::kObjectSymbolRootIndex);
__ jmp(&done); __ jmp(&done);
// Non-JS objects have class null. // Non-JS objects have class null.
...@@ -2710,10 +2710,10 @@ void FullCodeGenerator::EmitIsRegExpEquivalent(ZoneList<Expression*>* args) { ...@@ -2710,10 +2710,10 @@ void FullCodeGenerator::EmitIsRegExpEquivalent(ZoneList<Expression*>* args) {
__ cmpq(tmp, FieldOperand(right, JSRegExp::kDataOffset)); __ cmpq(tmp, FieldOperand(right, JSRegExp::kDataOffset));
__ j(equal, &ok); __ j(equal, &ok);
__ bind(&fail); __ bind(&fail);
__ Move(rax, Factory::false_value()); __ LoadRoot(rax, Heap::kFalseValueRootIndex);
__ jmp(&done); __ jmp(&done);
__ bind(&ok); __ bind(&ok);
__ Move(rax, Factory::true_value()); __ LoadRoot(rax, Heap::kTrueValueRootIndex);
__ bind(&done); __ bind(&done);
context()->Plug(rax); context()->Plug(rax);
......
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