| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_ARM64. | 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_ARM64. |
| 6 #if defined(TARGET_ARCH_ARM64) | 6 #if defined(TARGET_ARCH_ARM64) |
| 7 | 7 |
| 8 #include "vm/intermediate_language.h" | 8 #include "vm/intermediate_language.h" |
| 9 | 9 |
| 10 #include "vm/dart_entry.h" | 10 #include "vm/dart_entry.h" |
| (...skipping 4640 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4651 __ b(&try_sqrt, VC); // // Neither 'exp' nor 'base' is NaN. | 4651 __ b(&try_sqrt, VC); // // Neither 'exp' nor 'base' is NaN. |
| 4652 | 4652 |
| 4653 __ Bind(&return_nan); | 4653 __ Bind(&return_nan); |
| 4654 __ LoadDImmediate(result, NAN, PP); | 4654 __ LoadDImmediate(result, NAN, PP); |
| 4655 __ b(&skip_call); | 4655 __ b(&skip_call); |
| 4656 | 4656 |
| 4657 Label return_zero; | 4657 Label return_zero; |
| 4658 __ Bind(&try_sqrt); | 4658 __ Bind(&try_sqrt); |
| 4659 | 4659 |
| 4660 // Before calling pow, check if we could use sqrt instead of pow. | 4660 // Before calling pow, check if we could use sqrt instead of pow. |
| 4661 __ LoadDImmediate(result, -INFINITY, PP); | 4661 __ LoadDImmediate(result, kNegInfinity, PP); |
| 4662 | 4662 |
| 4663 // base == -Infinity -> call pow; | 4663 // base == -Infinity -> call pow; |
| 4664 __ fcmpd(saved_base, result); | 4664 __ fcmpd(saved_base, result); |
| 4665 __ b(&do_pow, EQ); | 4665 __ b(&do_pow, EQ); |
| 4666 | 4666 |
| 4667 // exponent == 0.5 ? | 4667 // exponent == 0.5 ? |
| 4668 __ LoadDImmediate(result, 0.5, PP); | 4668 __ LoadDImmediate(result, 0.5, PP); |
| 4669 __ fcmpd(exp, result); | 4669 __ fcmpd(exp, result); |
| 4670 __ b(&do_pow, NE); | 4670 __ b(&do_pow, NE); |
| 4671 | 4671 |
| (...skipping 818 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5490 compiler->GenerateCall(token_pos(), &label, stub_kind_, locs()); | 5490 compiler->GenerateCall(token_pos(), &label, stub_kind_, locs()); |
| 5491 #if defined(DEBUG) | 5491 #if defined(DEBUG) |
| 5492 __ LoadImmediate(R4, kInvalidObjectPointer, kNoPP); | 5492 __ LoadImmediate(R4, kInvalidObjectPointer, kNoPP); |
| 5493 __ LoadImmediate(R5, kInvalidObjectPointer, kNoPP); | 5493 __ LoadImmediate(R5, kInvalidObjectPointer, kNoPP); |
| 5494 #endif | 5494 #endif |
| 5495 } | 5495 } |
| 5496 | 5496 |
| 5497 } // namespace dart | 5497 } // namespace dart |
| 5498 | 5498 |
| 5499 #endif // defined TARGET_ARCH_ARM64 | 5499 #endif // defined TARGET_ARCH_ARM64 |
| OLD | NEW |