Fix an edge case in non-vfp3 version of TypeRecordingBinaryOpStub.

Review URL: http://codereview.chromium.org/6903030

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7683 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
vegorov@chromium.org 2011-04-26 16:40:20 +00:00
parent b62bdda7d1
commit db2cb44b55

View File

@ -2327,6 +2327,8 @@ void TypeRecordingBinaryOpStub::GenerateInt32Stub(MacroAssembler* masm) {
// Save the left value on the stack.
__ Push(r5, r4);
Label pop_and_call_runtime;
// Allocate a heap number to store the result.
heap_number_result = r5;
GenerateHeapResultAllocation(masm,
@ -2334,7 +2336,7 @@ void TypeRecordingBinaryOpStub::GenerateInt32Stub(MacroAssembler* masm) {
heap_number_map,
scratch1,
scratch2,
&call_runtime);
&pop_and_call_runtime);
// Load the left value from the value saved on the stack.
__ Pop(r1, r0);
@ -2345,6 +2347,10 @@ void TypeRecordingBinaryOpStub::GenerateInt32Stub(MacroAssembler* masm) {
if (FLAG_debug_code) {
__ stop("Unreachable code.");
}
__ bind(&pop_and_call_runtime);
__ Drop(2);
__ b(&call_runtime);
}
break;