Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1289)

Side by Side Diff: src/arm/code-stubs-arm.cc

Issue 6903030: Fix an edge case in non-vfp3 version of TypeRecordingBinaryOpStub. (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 9 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 2309 matching lines...) Expand 10 before | Expand all | Expand 10 after
2320 } 2320 }
2321 2321
2322 // A DIV operation expecting an integer result falls through 2322 // A DIV operation expecting an integer result falls through
2323 // to type transition. 2323 // to type transition.
2324 2324
2325 } else { 2325 } else {
2326 // We preserved r0 and r1 to be able to call runtime. 2326 // We preserved r0 and r1 to be able to call runtime.
2327 // Save the left value on the stack. 2327 // Save the left value on the stack.
2328 __ Push(r5, r4); 2328 __ Push(r5, r4);
2329 2329
2330 Label pop_and_call_runtime;
2331
2330 // Allocate a heap number to store the result. 2332 // Allocate a heap number to store the result.
2331 heap_number_result = r5; 2333 heap_number_result = r5;
2332 GenerateHeapResultAllocation(masm, 2334 GenerateHeapResultAllocation(masm,
2333 heap_number_result, 2335 heap_number_result,
2334 heap_number_map, 2336 heap_number_map,
2335 scratch1, 2337 scratch1,
2336 scratch2, 2338 scratch2,
2337 &call_runtime); 2339 &pop_and_call_runtime);
2338 2340
2339 // Load the left value from the value saved on the stack. 2341 // Load the left value from the value saved on the stack.
2340 __ Pop(r1, r0); 2342 __ Pop(r1, r0);
2341 2343
2342 // Call the C function to handle the double operation. 2344 // Call the C function to handle the double operation.
2343 FloatingPointHelper::CallCCodeForDoubleOperation( 2345 FloatingPointHelper::CallCCodeForDoubleOperation(
2344 masm, op_, heap_number_result, scratch1); 2346 masm, op_, heap_number_result, scratch1);
2345 if (FLAG_debug_code) { 2347 if (FLAG_debug_code) {
2346 __ stop("Unreachable code."); 2348 __ stop("Unreachable code.");
2347 } 2349 }
2350
2351 __ bind(&pop_and_call_runtime);
2352 __ Drop(2);
2353 __ b(&call_runtime);
2348 } 2354 }
2349 2355
2350 break; 2356 break;
2351 } 2357 }
2352 2358
2353 case Token::BIT_OR: 2359 case Token::BIT_OR:
2354 case Token::BIT_XOR: 2360 case Token::BIT_XOR:
2355 case Token::BIT_AND: 2361 case Token::BIT_AND:
2356 case Token::SAR: 2362 case Token::SAR:
2357 case Token::SHR: 2363 case Token::SHR:
(...skipping 3413 matching lines...) Expand 10 before | Expand all | Expand 10 after
5771 __ str(pc, MemOperand(sp, 0)); 5777 __ str(pc, MemOperand(sp, 0));
5772 __ Jump(target); // Call the C++ function. 5778 __ Jump(target); // Call the C++ function.
5773 } 5779 }
5774 5780
5775 5781
5776 #undef __ 5782 #undef __
5777 5783
5778 } } // namespace v8::internal 5784 } } // namespace v8::internal
5779 5785
5780 #endif // V8_TARGET_ARCH_ARM 5786 #endif // V8_TARGET_ARCH_ARM
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698