| OLD | NEW |
| 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 3407 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3418 } | 3418 } |
| 3419 | 3419 |
| 3420 // A DIV operation expecting an integer result falls through | 3420 // A DIV operation expecting an integer result falls through |
| 3421 // to type transition. | 3421 // to type transition. |
| 3422 | 3422 |
| 3423 } else { | 3423 } else { |
| 3424 // We preserved r0 and r1 to be able to call runtime. | 3424 // We preserved r0 and r1 to be able to call runtime. |
| 3425 // Save the left value on the stack. | 3425 // Save the left value on the stack. |
| 3426 __ Push(r5, r4); | 3426 __ Push(r5, r4); |
| 3427 | 3427 |
| 3428 Label pop_and_call_runtime; |
| 3429 |
| 3428 // Allocate a heap number to store the result. | 3430 // Allocate a heap number to store the result. |
| 3429 heap_number_result = r5; | 3431 heap_number_result = r5; |
| 3430 GenerateHeapResultAllocation(masm, | 3432 GenerateHeapResultAllocation(masm, |
| 3431 heap_number_result, | 3433 heap_number_result, |
| 3432 heap_number_map, | 3434 heap_number_map, |
| 3433 scratch1, | 3435 scratch1, |
| 3434 scratch2, | 3436 scratch2, |
| 3435 &call_runtime); | 3437 &pop_and_call_runtime); |
| 3436 | 3438 |
| 3437 // Load the left value from the value saved on the stack. | 3439 // Load the left value from the value saved on the stack. |
| 3438 __ Pop(r1, r0); | 3440 __ Pop(r1, r0); |
| 3439 | 3441 |
| 3440 // Call the C function to handle the double operation. | 3442 // Call the C function to handle the double operation. |
| 3441 FloatingPointHelper::CallCCodeForDoubleOperation( | 3443 FloatingPointHelper::CallCCodeForDoubleOperation( |
| 3442 masm, op_, heap_number_result, scratch1); | 3444 masm, op_, heap_number_result, scratch1); |
| 3445 |
| 3446 __ bind(&pop_and_call_runtime); |
| 3447 __ Drop(2); |
| 3448 __ b(&call_runtime); |
| 3443 } | 3449 } |
| 3444 | 3450 |
| 3445 break; | 3451 break; |
| 3446 } | 3452 } |
| 3447 | 3453 |
| 3448 case Token::BIT_OR: | 3454 case Token::BIT_OR: |
| 3449 case Token::BIT_XOR: | 3455 case Token::BIT_XOR: |
| 3450 case Token::BIT_AND: | 3456 case Token::BIT_AND: |
| 3451 case Token::SAR: | 3457 case Token::SAR: |
| 3452 case Token::SHR: | 3458 case Token::SHR: |
| (...skipping 3357 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6810 __ strb(untagged_value, MemOperand(external_pointer, untagged_key)); | 6816 __ strb(untagged_value, MemOperand(external_pointer, untagged_key)); |
| 6811 __ Ret(); | 6817 __ Ret(); |
| 6812 } | 6818 } |
| 6813 | 6819 |
| 6814 | 6820 |
| 6815 #undef __ | 6821 #undef __ |
| 6816 | 6822 |
| 6817 } } // namespace v8::internal | 6823 } } // namespace v8::internal |
| 6818 | 6824 |
| 6819 #endif // V8_TARGET_ARCH_ARM | 6825 #endif // V8_TARGET_ARCH_ARM |
| OLD | NEW |