678 case vmIntrinsics::_montgomeryMultiply: 679 if (!UseMontgomeryMultiplyIntrinsic) return true; 680 break; 681 case vmIntrinsics::_montgomerySquare: 682 if (!UseMontgomerySquareIntrinsic) return true; 683 break; 684 case vmIntrinsics::_addExactI: 685 case vmIntrinsics::_addExactL: 686 case vmIntrinsics::_decrementExactI: 687 case vmIntrinsics::_decrementExactL: 688 case vmIntrinsics::_incrementExactI: 689 case vmIntrinsics::_incrementExactL: 690 case vmIntrinsics::_multiplyExactI: 691 case vmIntrinsics::_multiplyExactL: 692 case vmIntrinsics::_negateExactI: 693 case vmIntrinsics::_negateExactL: 694 case vmIntrinsics::_subtractExactI: 695 case vmIntrinsics::_subtractExactL: 696 if (!UseMathExactIntrinsics || !InlineMathNatives) return true; 697 break; 698 case vmIntrinsics::_getCharStringU: 699 case vmIntrinsics::_putCharStringU: 700 // Until JDK-8138651 is fixed, we have to rely on a special flag to 701 // disable these intrinsics for experiments. 702 if (!StringCharIntrinsics) return true; 703 break; 704 #endif // COMPILER2 705 default: 706 return false; 707 } 708 709 return false; 710 } 711 712 #define VM_INTRINSIC_INITIALIZE(id, klass, name, sig, flags) #id "\0" 713 static const char* vm_intrinsic_name_bodies = 714 VM_INTRINSICS_DO(VM_INTRINSIC_INITIALIZE, 715 VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_ALIAS_IGNORE); 716 717 static const char* vm_intrinsic_name_table[vmIntrinsics::ID_LIMIT]; 718 719 const char* vmIntrinsics::name_at(vmIntrinsics::ID id) { 720 const char** nt = &vm_intrinsic_name_table[0]; 721 if (nt[_none] == NULL) { 722 char* string = (char*) &vm_intrinsic_name_bodies[0]; 723 for (int index = FIRST_ID; index < ID_LIMIT; index++) { | 678 case vmIntrinsics::_montgomeryMultiply: 679 if (!UseMontgomeryMultiplyIntrinsic) return true; 680 break; 681 case vmIntrinsics::_montgomerySquare: 682 if (!UseMontgomerySquareIntrinsic) return true; 683 break; 684 case vmIntrinsics::_addExactI: 685 case vmIntrinsics::_addExactL: 686 case vmIntrinsics::_decrementExactI: 687 case vmIntrinsics::_decrementExactL: 688 case vmIntrinsics::_incrementExactI: 689 case vmIntrinsics::_incrementExactL: 690 case vmIntrinsics::_multiplyExactI: 691 case vmIntrinsics::_multiplyExactL: 692 case vmIntrinsics::_negateExactI: 693 case vmIntrinsics::_negateExactL: 694 case vmIntrinsics::_subtractExactI: 695 case vmIntrinsics::_subtractExactL: 696 if (!UseMathExactIntrinsics || !InlineMathNatives) return true; 697 break; 698 #endif // COMPILER2 699 default: 700 return false; 701 } 702 703 return false; 704 } 705 706 #define VM_INTRINSIC_INITIALIZE(id, klass, name, sig, flags) #id "\0" 707 static const char* vm_intrinsic_name_bodies = 708 VM_INTRINSICS_DO(VM_INTRINSIC_INITIALIZE, 709 VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_ALIAS_IGNORE); 710 711 static const char* vm_intrinsic_name_table[vmIntrinsics::ID_LIMIT]; 712 713 const char* vmIntrinsics::name_at(vmIntrinsics::ID id) { 714 const char** nt = &vm_intrinsic_name_table[0]; 715 if (nt[_none] == NULL) { 716 char* string = (char*) &vm_intrinsic_name_bodies[0]; 717 for (int index = FIRST_ID; index < ID_LIMIT; index++) { |