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 |