| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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/intermediate_language.h" | 5 #include "vm/intermediate_language.h" |
| 6 | 6 |
| 7 #include "vm/bit_vector.h" | 7 #include "vm/bit_vector.h" |
| 8 #include "vm/bootstrap.h" | 8 #include "vm/bootstrap.h" |
| 9 #include "vm/compiler.h" | 9 #include "vm/compiler.h" |
| 10 #include "vm/constant_propagator.h" | 10 #include "vm/constant_propagator.h" |
| (...skipping 3526 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3537 MethodRecognizer::Kind kind) { | 3537 MethodRecognizer::Kind kind) { |
| 3538 switch (kind) { | 3538 switch (kind) { |
| 3539 case MethodRecognizer::kDoubleTruncate: | 3539 case MethodRecognizer::kDoubleTruncate: |
| 3540 case MethodRecognizer::kDoubleFloor: | 3540 case MethodRecognizer::kDoubleFloor: |
| 3541 case MethodRecognizer::kDoubleCeil: { | 3541 case MethodRecognizer::kDoubleCeil: { |
| 3542 ASSERT(!TargetCPUFeatures::double_truncate_round_supported()); | 3542 ASSERT(!TargetCPUFeatures::double_truncate_round_supported()); |
| 3543 return 1; | 3543 return 1; |
| 3544 } | 3544 } |
| 3545 case MethodRecognizer::kDoubleRound: | 3545 case MethodRecognizer::kDoubleRound: |
| 3546 case MethodRecognizer::kMathAtan: | 3546 case MethodRecognizer::kMathAtan: |
| 3547 case MethodRecognizer::kMathTan: |
| 3548 case MethodRecognizer::kMathAcos: |
| 3549 case MethodRecognizer::kMathAsin: |
| 3547 return 1; | 3550 return 1; |
| 3548 case MethodRecognizer::kDoubleMod: | 3551 case MethodRecognizer::kDoubleMod: |
| 3549 case MethodRecognizer::kMathDoublePow: | 3552 case MethodRecognizer::kMathDoublePow: |
| 3550 case MethodRecognizer::kMathAtan2: | 3553 case MethodRecognizer::kMathAtan2: |
| 3551 return 2; | 3554 return 2; |
| 3552 default: | 3555 default: |
| 3553 UNREACHABLE(); | 3556 UNREACHABLE(); |
| 3554 } | 3557 } |
| 3555 return 0; | 3558 return 0; |
| 3556 } | 3559 } |
| (...skipping 23 matching lines...) Expand all Loading... |
| 3580 static_cast<UnaryMathCFunction>(&ceil))); | 3583 static_cast<UnaryMathCFunction>(&ceil))); |
| 3581 | 3584 |
| 3582 DEFINE_RAW_LEAF_RUNTIME_ENTRY(LibcTrunc, 1, true /* is_float */, | 3585 DEFINE_RAW_LEAF_RUNTIME_ENTRY(LibcTrunc, 1, true /* is_float */, |
| 3583 reinterpret_cast<RuntimeFunction>( | 3586 reinterpret_cast<RuntimeFunction>( |
| 3584 static_cast<UnaryMathCFunction>(&trunc))); | 3587 static_cast<UnaryMathCFunction>(&trunc))); |
| 3585 | 3588 |
| 3586 DEFINE_RAW_LEAF_RUNTIME_ENTRY(LibcRound, 1, true /* is_float */, | 3589 DEFINE_RAW_LEAF_RUNTIME_ENTRY(LibcRound, 1, true /* is_float */, |
| 3587 reinterpret_cast<RuntimeFunction>( | 3590 reinterpret_cast<RuntimeFunction>( |
| 3588 static_cast<UnaryMathCFunction>(&round))); | 3591 static_cast<UnaryMathCFunction>(&round))); |
| 3589 | 3592 |
| 3593 DEFINE_RAW_LEAF_RUNTIME_ENTRY(LibcCos, 1, true /* is_float */, |
| 3594 reinterpret_cast<RuntimeFunction>( |
| 3595 static_cast<UnaryMathCFunction>(&cos))); |
| 3596 |
| 3597 DEFINE_RAW_LEAF_RUNTIME_ENTRY(LibcSin, 1, true /* is_float */, |
| 3598 reinterpret_cast<RuntimeFunction>( |
| 3599 static_cast<UnaryMathCFunction>(&sin))); |
| 3600 |
| 3601 DEFINE_RAW_LEAF_RUNTIME_ENTRY(LibcAsin, 1, true /* is_float */, |
| 3602 reinterpret_cast<RuntimeFunction>( |
| 3603 static_cast<UnaryMathCFunction>(&asin))); |
| 3604 |
| 3605 DEFINE_RAW_LEAF_RUNTIME_ENTRY(LibcAcos, 1, true /* is_float */, |
| 3606 reinterpret_cast<RuntimeFunction>( |
| 3607 static_cast<UnaryMathCFunction>(&acos))); |
| 3608 |
| 3609 DEFINE_RAW_LEAF_RUNTIME_ENTRY(LibcTan, 1, true /* is_float */, |
| 3610 reinterpret_cast<RuntimeFunction>( |
| 3611 static_cast<UnaryMathCFunction>(&tan))); |
| 3612 |
| 3613 DEFINE_RAW_LEAF_RUNTIME_ENTRY(LibcAtan, 1, true /* is_float */, |
| 3614 reinterpret_cast<RuntimeFunction>( |
| 3615 static_cast<UnaryMathCFunction>(&atan))); |
| 3616 |
| 3590 | 3617 |
| 3591 const RuntimeEntry& InvokeMathCFunctionInstr::TargetFunction() const { | 3618 const RuntimeEntry& InvokeMathCFunctionInstr::TargetFunction() const { |
| 3592 switch (recognized_kind_) { | 3619 switch (recognized_kind_) { |
| 3593 case MethodRecognizer::kDoubleTruncate: | 3620 case MethodRecognizer::kDoubleTruncate: |
| 3594 return kLibcTruncRuntimeEntry; | 3621 return kLibcTruncRuntimeEntry; |
| 3595 case MethodRecognizer::kDoubleRound: | 3622 case MethodRecognizer::kDoubleRound: |
| 3596 return kLibcRoundRuntimeEntry; | 3623 return kLibcRoundRuntimeEntry; |
| 3597 case MethodRecognizer::kDoubleFloor: | 3624 case MethodRecognizer::kDoubleFloor: |
| 3598 return kLibcFloorRuntimeEntry; | 3625 return kLibcFloorRuntimeEntry; |
| 3599 case MethodRecognizer::kDoubleCeil: | 3626 case MethodRecognizer::kDoubleCeil: |
| 3600 return kLibcCeilRuntimeEntry; | 3627 return kLibcCeilRuntimeEntry; |
| 3601 case MethodRecognizer::kMathDoublePow: | 3628 case MethodRecognizer::kMathDoublePow: |
| 3602 return kLibcPowRuntimeEntry; | 3629 return kLibcPowRuntimeEntry; |
| 3603 case MethodRecognizer::kDoubleMod: | 3630 case MethodRecognizer::kDoubleMod: |
| 3604 return kDartModuloRuntimeEntry; | 3631 return kDartModuloRuntimeEntry; |
| 3632 case MethodRecognizer::kMathTan: |
| 3633 return kLibcTanRuntimeEntry; |
| 3634 case MethodRecognizer::kMathAsin: |
| 3635 return kLibcAsinRuntimeEntry; |
| 3636 case MethodRecognizer::kMathAcos: |
| 3637 return kLibcAcosRuntimeEntry; |
| 3605 case MethodRecognizer::kMathAtan: | 3638 case MethodRecognizer::kMathAtan: |
| 3606 return kLibcAtanRuntimeEntry; | 3639 return kLibcAtanRuntimeEntry; |
| 3607 case MethodRecognizer::kMathAtan2: | 3640 case MethodRecognizer::kMathAtan2: |
| 3608 return kLibcAtan2RuntimeEntry; | 3641 return kLibcAtan2RuntimeEntry; |
| 3609 default: | 3642 default: |
| 3610 UNREACHABLE(); | 3643 UNREACHABLE(); |
| 3611 } | 3644 } |
| 3612 return kLibcPowRuntimeEntry; | 3645 return kLibcPowRuntimeEntry; |
| 3613 } | 3646 } |
| 3614 | 3647 |
| 3615 | 3648 |
| 3616 DEFINE_RAW_LEAF_RUNTIME_ENTRY(LibcCos, 1, true /* is_float */, | |
| 3617 reinterpret_cast<RuntimeFunction>( | |
| 3618 static_cast<UnaryMathCFunction>(&cos))); | |
| 3619 | |
| 3620 DEFINE_RAW_LEAF_RUNTIME_ENTRY(LibcSin, 1, true /* is_float */, | |
| 3621 reinterpret_cast<RuntimeFunction>( | |
| 3622 static_cast<UnaryMathCFunction>(&sin))); | |
| 3623 | |
| 3624 DEFINE_RAW_LEAF_RUNTIME_ENTRY(LibcAtan, 1, true /* is_float */, | |
| 3625 reinterpret_cast<RuntimeFunction>( | |
| 3626 static_cast<UnaryMathCFunction>(&atan))); | |
| 3627 | |
| 3628 const RuntimeEntry& MathUnaryInstr::TargetFunction() const { | 3649 const RuntimeEntry& MathUnaryInstr::TargetFunction() const { |
| 3629 switch (kind()) { | 3650 switch (kind()) { |
| 3630 case MathUnaryInstr::kSin: | 3651 case MathUnaryInstr::kSin: |
| 3631 return kLibcSinRuntimeEntry; | 3652 return kLibcSinRuntimeEntry; |
| 3632 case MathUnaryInstr::kCos: | 3653 case MathUnaryInstr::kCos: |
| 3633 return kLibcCosRuntimeEntry; | 3654 return kLibcCosRuntimeEntry; |
| 3634 default: | 3655 default: |
| 3635 UNREACHABLE(); | 3656 UNREACHABLE(); |
| 3636 } | 3657 } |
| 3637 return kLibcSinRuntimeEntry; | 3658 return kLibcSinRuntimeEntry; |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3710 set_native_c_function(native_function); | 3731 set_native_c_function(native_function); |
| 3711 function().SetIsNativeAutoSetupScope(auto_setup_scope); | 3732 function().SetIsNativeAutoSetupScope(auto_setup_scope); |
| 3712 Dart_NativeEntryResolver resolver = library.native_entry_resolver(); | 3733 Dart_NativeEntryResolver resolver = library.native_entry_resolver(); |
| 3713 bool is_bootstrap_native = Bootstrap::IsBootstapResolver(resolver); | 3734 bool is_bootstrap_native = Bootstrap::IsBootstapResolver(resolver); |
| 3714 set_is_bootstrap_native(is_bootstrap_native); | 3735 set_is_bootstrap_native(is_bootstrap_native); |
| 3715 } | 3736 } |
| 3716 | 3737 |
| 3717 #undef __ | 3738 #undef __ |
| 3718 | 3739 |
| 3719 } // namespace dart | 3740 } // namespace dart |
| OLD | NEW |