533 switch (tag) { |
533 switch (tag) { |
534 case floatTag: |
534 case floatTag: |
535 case doubleTag: do_ArithmeticOp_FPU(x); return; |
535 case doubleTag: do_ArithmeticOp_FPU(x); return; |
536 case longTag: do_ArithmeticOp_Long(x); return; |
536 case longTag: do_ArithmeticOp_Long(x); return; |
537 case intTag: do_ArithmeticOp_Int(x); return; |
537 case intTag: do_ArithmeticOp_Int(x); return; |
538 } |
538 default: ShouldNotReachHere(); |
539 ShouldNotReachHere(); |
539 } |
540 } |
540 } |
541 |
541 |
542 |
542 |
543 // _ishl, _lshl, _ishr, _lshr, _iushr, _lushr |
543 // _ishl, _lshl, _ishr, _lshr, _iushr, _lushr |
544 void LIRGenerator::do_ShiftOp(ShiftOp* x) { |
544 void LIRGenerator::do_ShiftOp(ShiftOp* x) { |
733 LIR_Opr dst = rlock_result(x); |
733 LIR_Opr dst = rlock_result(x); |
734 __ sqrt(value.result(), dst, LIR_OprFact::illegalOpr); |
734 __ sqrt(value.result(), dst, LIR_OprFact::illegalOpr); |
735 break; |
735 break; |
736 } // else fallthru |
736 } // else fallthru |
737 } |
737 } |
|
738 case vmIntrinsics::_dsin: // fall through |
|
739 case vmIntrinsics::_dcos: // fall through |
|
740 case vmIntrinsics::_dtan: // fall through |
|
741 case vmIntrinsics::_dlog: // fall through |
738 case vmIntrinsics::_dlog10: // fall through |
742 case vmIntrinsics::_dlog10: // fall through |
739 case vmIntrinsics::_dlog: // fall through |
|
740 case vmIntrinsics::_dsin: // fall through |
|
741 case vmIntrinsics::_dtan: // fall through |
|
742 case vmIntrinsics::_dcos: // fall through |
|
743 case vmIntrinsics::_dexp: { |
743 case vmIntrinsics::_dexp: { |
744 assert(x->number_of_arguments() == 1, "wrong type"); |
744 assert(x->number_of_arguments() == 1, "wrong type"); |
745 |
745 |
746 address runtime_entry = NULL; |
746 address runtime_entry = NULL; |
747 switch (x->id()) { |
747 switch (x->id()) { |
748 case vmIntrinsics::_dsqrt: |
748 case vmIntrinsics::_dsqrt: |
749 runtime_entry = CAST_FROM_FN_PTR(address, SharedRuntime::dsqrt); |
749 runtime_entry = CAST_FROM_FN_PTR(address, SharedRuntime::dsqrt); |
750 break; |
750 break; |
751 case vmIntrinsics::_dsin: |
751 case vmIntrinsics::_dsin: |
752 runtime_entry = CAST_FROM_FN_PTR(address, SharedRuntime::dsin); |
752 runtime_entry = CAST_FROM_FN_PTR(address, SharedRuntime::dsin); |
753 break; |
753 break; |
754 case vmIntrinsics::_dcos: |
754 case vmIntrinsics::_dcos: |
755 runtime_entry = CAST_FROM_FN_PTR(address, SharedRuntime::dcos); |
755 runtime_entry = CAST_FROM_FN_PTR(address, SharedRuntime::dcos); |
756 break; |
756 break; |
757 case vmIntrinsics::_dtan: |
757 case vmIntrinsics::_dtan: |
758 runtime_entry = CAST_FROM_FN_PTR(address, SharedRuntime::dtan); |
758 runtime_entry = CAST_FROM_FN_PTR(address, SharedRuntime::dtan); |
759 break; |
759 break; |
760 case vmIntrinsics::_dlog: |
760 case vmIntrinsics::_dlog: |
761 runtime_entry = CAST_FROM_FN_PTR(address, SharedRuntime::dlog); |
761 runtime_entry = CAST_FROM_FN_PTR(address, SharedRuntime::dlog); |
762 break; |
762 break; |
763 case vmIntrinsics::_dlog10: |
763 case vmIntrinsics::_dlog10: |
764 runtime_entry = CAST_FROM_FN_PTR(address, SharedRuntime::dlog10); |
764 runtime_entry = CAST_FROM_FN_PTR(address, SharedRuntime::dlog10); |
765 break; |
765 break; |
766 case vmIntrinsics::_dexp: |
766 case vmIntrinsics::_dexp: |
767 runtime_entry = CAST_FROM_FN_PTR(address, SharedRuntime::dexp); |
767 runtime_entry = CAST_FROM_FN_PTR(address, SharedRuntime::dexp); |
768 break; |
768 break; |
769 default: |
769 default: |
770 ShouldNotReachHere(); |
770 ShouldNotReachHere(); |
771 } |
771 } |
772 |
772 |
773 LIR_Opr result = call_runtime(x->argument_at(0), runtime_entry, x->type(), NULL); |
773 LIR_Opr result = call_runtime(x->argument_at(0), runtime_entry, x->type(), NULL); |
774 set_result(x, result); |
774 set_result(x, result); |
775 break; |
775 break; |
779 address runtime_entry = CAST_FROM_FN_PTR(address, SharedRuntime::dpow); |
779 address runtime_entry = CAST_FROM_FN_PTR(address, SharedRuntime::dpow); |
780 LIR_Opr result = call_runtime(x->argument_at(0), x->argument_at(1), runtime_entry, x->type(), NULL); |
780 LIR_Opr result = call_runtime(x->argument_at(0), x->argument_at(1), runtime_entry, x->type(), NULL); |
781 set_result(x, result); |
781 set_result(x, result); |
782 break; |
782 break; |
783 } |
783 } |
|
784 default: |
|
785 break; |
784 } |
786 } |
785 } |
787 } |
786 |
788 |
787 |
789 |
788 void LIRGenerator::do_ArrayCopy(Intrinsic* x) { |
790 void LIRGenerator::do_ArrayCopy(Intrinsic* x) { |