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 |