| OLD | NEW |
| 1 // Copyright 2010 the V8 project authors. All rights reserved. | 1 // Copyright 2010 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 5960 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5971 void GenericBinaryOpStub::HandleBinaryOpSlowCases( | 5971 void GenericBinaryOpStub::HandleBinaryOpSlowCases( |
| 5972 MacroAssembler* masm, | 5972 MacroAssembler* masm, |
| 5973 Label* not_smi, | 5973 Label* not_smi, |
| 5974 Register lhs, | 5974 Register lhs, |
| 5975 Register rhs, | 5975 Register rhs, |
| 5976 const Builtins::JavaScript& builtin) { | 5976 const Builtins::JavaScript& builtin) { |
| 5977 Label slow, slow_pop_2_first, do_the_call; | 5977 Label slow, slow_pop_2_first, do_the_call; |
| 5978 Label r0_is_smi, r1_is_smi, finished_loading_r0, finished_loading_r1; | 5978 Label r0_is_smi, r1_is_smi, finished_loading_r0, finished_loading_r1; |
| 5979 bool use_fp_registers = CpuFeatures::IsSupported(VFP3) && Token::MOD != op_; | 5979 bool use_fp_registers = CpuFeatures::IsSupported(VFP3) && Token::MOD != op_; |
| 5980 | 5980 |
| 5981 ASSERT((lhs.is(r0) && rhs.is(r1)) || lhs.is(r1) && rhs.is(r0)); | 5981 ASSERT((lhs.is(r0) && rhs.is(r1)) || (lhs.is(r1) && rhs.is(r0))); |
| 5982 | 5982 |
| 5983 if (ShouldGenerateSmiCode()) { | 5983 if (ShouldGenerateSmiCode()) { |
| 5984 // Smi-smi case (overflow). | 5984 // Smi-smi case (overflow). |
| 5985 // Since both are Smis there is no heap number to overwrite, so allocate. | 5985 // Since both are Smis there is no heap number to overwrite, so allocate. |
| 5986 // The new heap number is in r5. r6 and r7 are scratch. | 5986 // The new heap number is in r5. r6 and r7 are scratch. |
| 5987 __ AllocateHeapNumber(r5, r6, r7, &slow); | 5987 __ AllocateHeapNumber(r5, r6, r7, &slow); |
| 5988 | 5988 |
| 5989 // If we have floating point hardware, inline ADD, SUB, MUL, and DIV, | 5989 // If we have floating point hardware, inline ADD, SUB, MUL, and DIV, |
| 5990 // using registers d7 and d6 for the double values. | 5990 // using registers d7 and d6 for the double values. |
| 5991 if (use_fp_registers) { | 5991 if (use_fp_registers) { |
| (...skipping 2905 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8897 | 8897 |
| 8898 // Just jump to runtime to add the two strings. | 8898 // Just jump to runtime to add the two strings. |
| 8899 __ bind(&string_add_runtime); | 8899 __ bind(&string_add_runtime); |
| 8900 __ TailCallRuntime(Runtime::kStringAdd, 2, 1); | 8900 __ TailCallRuntime(Runtime::kStringAdd, 2, 1); |
| 8901 } | 8901 } |
| 8902 | 8902 |
| 8903 | 8903 |
| 8904 #undef __ | 8904 #undef __ |
| 8905 | 8905 |
| 8906 } } // namespace v8::internal | 8906 } } // namespace v8::internal |
| OLD | NEW |