|
@ -3425,6 +3425,8 @@ void TypeRecordingBinaryOpStub::GenerateInt32Stub(MacroAssembler* masm) { |
|
|
// Save the left value on the stack.
|
|
|
// Save the left value on the stack.
|
|
|
__ Push(r5, r4); |
|
|
__ Push(r5, r4); |
|
|
|
|
|
|
|
|
|
|
|
Label pop_and_call_runtime; |
|
|
|
|
|
|
|
|
// Allocate a heap number to store the result.
|
|
|
// Allocate a heap number to store the result.
|
|
|
heap_number_result = r5; |
|
|
heap_number_result = r5; |
|
|
GenerateHeapResultAllocation(masm, |
|
|
GenerateHeapResultAllocation(masm, |
|
@ -3432,7 +3434,7 @@ void TypeRecordingBinaryOpStub::GenerateInt32Stub(MacroAssembler* masm) { |
|
|
heap_number_map, |
|
|
heap_number_map, |
|
|
scratch1, |
|
|
scratch1, |
|
|
scratch2, |
|
|
scratch2, |
|
|
&call_runtime); |
|
|
&pop_and_call_runtime); |
|
|
|
|
|
|
|
|
// Load the left value from the value saved on the stack.
|
|
|
// Load the left value from the value saved on the stack.
|
|
|
__ Pop(r1, r0); |
|
|
__ Pop(r1, r0); |
|
@ -3440,6 +3442,10 @@ void TypeRecordingBinaryOpStub::GenerateInt32Stub(MacroAssembler* masm) { |
|
|
// Call the C function to handle the double operation.
|
|
|
// Call the C function to handle the double operation.
|
|
|
FloatingPointHelper::CallCCodeForDoubleOperation( |
|
|
FloatingPointHelper::CallCCodeForDoubleOperation( |
|
|
masm, op_, heap_number_result, scratch1); |
|
|
masm, op_, heap_number_result, scratch1); |
|
|
|
|
|
|
|
|
|
|
|
__ bind(&pop_and_call_runtime); |
|
|
|
|
|
__ Drop(2); |
|
|
|
|
|
__ b(&call_runtime); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
break; |
|
|
break; |
|
|