Index: src/x64/code-stubs-x64.cc |
=================================================================== |
--- src/x64/code-stubs-x64.cc (revision 6513) |
+++ src/x64/code-stubs-x64.cc (working copy) |
@@ -37,6 +37,28 @@ |
namespace internal { |
#define __ ACCESS_MASM(masm) |
+ |
+void ToNumberStub::Generate(MacroAssembler* masm) { |
+ // The ToNumber stub takes one argument in eax. |
+ NearLabel check_heap_number, call_builtin; |
+ __ SmiTest(rax); |
+ __ j(not_zero, &check_heap_number); |
+ __ Ret(); |
+ |
+ __ bind(&check_heap_number); |
+ __ Move(rbx, Factory::heap_number_map()); |
+ __ cmpq(rbx, FieldOperand(rax, HeapObject::kMapOffset)); |
+ __ j(not_equal, &call_builtin); |
+ __ Ret(); |
+ |
+ __ bind(&call_builtin); |
+ __ pop(rcx); // Pop return address. |
+ __ push(rax); |
+ __ push(rcx); // Push return address. |
+ __ InvokeBuiltin(Builtins::TO_NUMBER, JUMP_FUNCTION); |
+} |
+ |
+ |
void FastNewClosureStub::Generate(MacroAssembler* masm) { |
// Create a new closure from the given function info in new |
// space. Set the context to the current context in rsi. |