Index: src/mips64/code-stubs-mips64.cc |
diff --git a/src/mips64/code-stubs-mips64.cc b/src/mips64/code-stubs-mips64.cc |
index beb83e9ad39167fe1f8e0ae10e534ec2a0c0dccd..ef812c7f09bac27f9be9bacd09e7e982977afede 100644 |
--- a/src/mips64/code-stubs-mips64.cc |
+++ b/src/mips64/code-stubs-mips64.cc |
@@ -3376,6 +3376,26 @@ void SubStringStub::Generate(MacroAssembler* masm) { |
} |
+void ToNumberStub::Generate(MacroAssembler* masm) { |
+ // The ToNumber stub takes one argument in a0. |
+ Label check_heap_number, call_builtin; |
+ __ JumpIfNotSmi(a0, &check_heap_number); |
+ __ Ret(USE_DELAY_SLOT); |
+ __ mov(v0, a0); |
+ |
+ __ bind(&check_heap_number); |
+ __ ld(a1, FieldMemOperand(a0, HeapObject::kMapOffset)); |
+ __ LoadRoot(at, Heap::kHeapNumberMapRootIndex); |
+ __ Branch(&call_builtin, ne, a1, Operand(at)); |
+ __ Ret(USE_DELAY_SLOT); |
+ __ mov(v0, a0); |
+ |
+ __ bind(&call_builtin); |
+ __ push(a0); |
+ __ InvokeBuiltin(Builtins::TO_NUMBER, JUMP_FUNCTION); |
+} |
+ |
+ |
void StringHelper::GenerateFlatOneByteStringEquals( |
MacroAssembler* masm, Register left, Register right, Register scratch1, |
Register scratch2, Register scratch3) { |