Index: src/ia32/code-stubs-ia32.cc |
=================================================================== |
--- src/ia32/code-stubs-ia32.cc (revision 7936) |
+++ src/ia32/code-stubs-ia32.cc (working copy) |
@@ -622,10 +622,13 @@ |
} |
-void TypeRecordingUnaryOpStub::GenerateSmiCodeSub( |
- MacroAssembler* masm, Label* non_smi, Label* undo, Label* slow, |
- Label::Distance non_smi_near, Label::Distance undo_near, |
- Label::Distance slow_near) { |
+void TypeRecordingUnaryOpStub::GenerateSmiCodeSub(MacroAssembler* masm, |
+ Label* non_smi, |
+ Label* undo, |
+ Label* slow, |
+ Label::Distance non_smi_near, |
+ Label::Distance undo_near, |
+ Label::Distance slow_near) { |
// Check whether the value is a smi. |
__ test(eax, Immediate(kSmiTagMask)); |
__ j(not_zero, non_smi, non_smi_near); |
@@ -679,14 +682,16 @@ |
void TypeRecordingUnaryOpStub::GenerateHeapNumberStubSub(MacroAssembler* masm) { |
- Label non_smi, undo, slow; |
- GenerateSmiCodeSub(masm, &non_smi, &undo, &slow, Label::kNear); |
+ Label non_smi, undo, slow, call_builtin; |
+ GenerateSmiCodeSub(masm, &non_smi, &undo, &call_builtin, Label::kNear); |
__ bind(&non_smi); |
GenerateHeapNumberCodeSub(masm, &slow); |
__ bind(&undo); |
GenerateSmiCodeUndo(masm); |
__ bind(&slow); |
GenerateTypeTransition(masm); |
+ __ bind(&call_builtin); |
+ GenerateGenericCodeFallback(masm); |
} |