src/hotspot/share/classfile/vmSymbols.cpp

Print this page




 362   case vmIntrinsics::_getClass:
 363   case vmIntrinsics::_isInstance:
 364   case vmIntrinsics::_currentThread:
 365   case vmIntrinsics::_dabs:
 366   case vmIntrinsics::_dsqrt:
 367   case vmIntrinsics::_dsin:
 368   case vmIntrinsics::_dcos:
 369   case vmIntrinsics::_dtan:
 370   case vmIntrinsics::_dlog:
 371   case vmIntrinsics::_dlog10:
 372   case vmIntrinsics::_dexp:
 373   case vmIntrinsics::_dpow:
 374   case vmIntrinsics::_checkIndex:
 375   case vmIntrinsics::_Reference_get:
 376   case vmIntrinsics::_updateCRC32:
 377   case vmIntrinsics::_updateBytesCRC32:
 378   case vmIntrinsics::_updateByteBufferCRC32:
 379   case vmIntrinsics::_vectorizedMismatch:
 380   case vmIntrinsics::_fmaD:
 381   case vmIntrinsics::_fmaF:




 382     return true;
 383   default:
 384     return false;
 385   }
 386 }
 387 
 388 bool vmIntrinsics::can_trap(vmIntrinsics::ID id) {
 389   assert(id != vmIntrinsics::_none, "must be a VM intrinsic");
 390   switch(id) {
 391 #ifdef JFR_HAVE_INTRINSICS
 392   case vmIntrinsics::_counterTime:
 393   case vmIntrinsics::_getClassId:
 394 #endif
 395   case vmIntrinsics::_currentTimeMillis:
 396   case vmIntrinsics::_nanoTime:
 397   case vmIntrinsics::_floatToRawIntBits:
 398   case vmIntrinsics::_intBitsToFloat:
 399   case vmIntrinsics::_doubleToRawLongBits:
 400   case vmIntrinsics::_longBitsToDouble:
 401   case vmIntrinsics::_currentThread:


 809     break;
 810   case vmIntrinsics::_montgomeryMultiply:
 811     if (!UseMontgomeryMultiplyIntrinsic) return true;
 812     break;
 813   case vmIntrinsics::_montgomerySquare:
 814     if (!UseMontgomerySquareIntrinsic) return true;
 815     break;
 816   case vmIntrinsics::_addExactI:
 817   case vmIntrinsics::_addExactL:
 818   case vmIntrinsics::_decrementExactI:
 819   case vmIntrinsics::_decrementExactL:
 820   case vmIntrinsics::_incrementExactI:
 821   case vmIntrinsics::_incrementExactL:
 822   case vmIntrinsics::_multiplyExactI:
 823   case vmIntrinsics::_multiplyExactL:
 824   case vmIntrinsics::_negateExactI:
 825   case vmIntrinsics::_negateExactL:
 826   case vmIntrinsics::_subtractExactI:
 827   case vmIntrinsics::_subtractExactL:
 828     if (!UseMathExactIntrinsics || !InlineMathNatives) return true;






 829     break;
 830 #endif // COMPILER2
 831   default:
 832     return false;
 833   }
 834 
 835   return false;
 836 }
 837 
 838 #define VM_INTRINSIC_INITIALIZE(id, klass, name, sig, flags) #id "\0"
 839 static const char* vm_intrinsic_name_bodies =
 840   VM_INTRINSICS_DO(VM_INTRINSIC_INITIALIZE,
 841                    VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_ALIAS_IGNORE);
 842 
 843 static const char* vm_intrinsic_name_table[vmIntrinsics::ID_LIMIT];
 844 
 845 const char* vmIntrinsics::name_at(vmIntrinsics::ID id) {
 846   const char** nt = &vm_intrinsic_name_table[0];
 847   if (nt[_none] == NULL) {
 848     char* string = (char*) &vm_intrinsic_name_bodies[0];




 362   case vmIntrinsics::_getClass:
 363   case vmIntrinsics::_isInstance:
 364   case vmIntrinsics::_currentThread:
 365   case vmIntrinsics::_dabs:
 366   case vmIntrinsics::_dsqrt:
 367   case vmIntrinsics::_dsin:
 368   case vmIntrinsics::_dcos:
 369   case vmIntrinsics::_dtan:
 370   case vmIntrinsics::_dlog:
 371   case vmIntrinsics::_dlog10:
 372   case vmIntrinsics::_dexp:
 373   case vmIntrinsics::_dpow:
 374   case vmIntrinsics::_checkIndex:
 375   case vmIntrinsics::_Reference_get:
 376   case vmIntrinsics::_updateCRC32:
 377   case vmIntrinsics::_updateBytesCRC32:
 378   case vmIntrinsics::_updateByteBufferCRC32:
 379   case vmIntrinsics::_vectorizedMismatch:
 380   case vmIntrinsics::_fmaD:
 381   case vmIntrinsics::_fmaF:
 382   case vmIntrinsics::_isDigit:
 383   case vmIntrinsics::_isLowerCase:
 384   case vmIntrinsics::_isUpperCase:
 385   case vmIntrinsics::_isWhitespace:
 386     return true;
 387   default:
 388     return false;
 389   }
 390 }
 391 
 392 bool vmIntrinsics::can_trap(vmIntrinsics::ID id) {
 393   assert(id != vmIntrinsics::_none, "must be a VM intrinsic");
 394   switch(id) {
 395 #ifdef JFR_HAVE_INTRINSICS
 396   case vmIntrinsics::_counterTime:
 397   case vmIntrinsics::_getClassId:
 398 #endif
 399   case vmIntrinsics::_currentTimeMillis:
 400   case vmIntrinsics::_nanoTime:
 401   case vmIntrinsics::_floatToRawIntBits:
 402   case vmIntrinsics::_intBitsToFloat:
 403   case vmIntrinsics::_doubleToRawLongBits:
 404   case vmIntrinsics::_longBitsToDouble:
 405   case vmIntrinsics::_currentThread:


 813     break;
 814   case vmIntrinsics::_montgomeryMultiply:
 815     if (!UseMontgomeryMultiplyIntrinsic) return true;
 816     break;
 817   case vmIntrinsics::_montgomerySquare:
 818     if (!UseMontgomerySquareIntrinsic) return true;
 819     break;
 820   case vmIntrinsics::_addExactI:
 821   case vmIntrinsics::_addExactL:
 822   case vmIntrinsics::_decrementExactI:
 823   case vmIntrinsics::_decrementExactL:
 824   case vmIntrinsics::_incrementExactI:
 825   case vmIntrinsics::_incrementExactL:
 826   case vmIntrinsics::_multiplyExactI:
 827   case vmIntrinsics::_multiplyExactL:
 828   case vmIntrinsics::_negateExactI:
 829   case vmIntrinsics::_negateExactL:
 830   case vmIntrinsics::_subtractExactI:
 831   case vmIntrinsics::_subtractExactL:
 832     if (!UseMathExactIntrinsics || !InlineMathNatives) return true;
 833     break;
 834   case vmIntrinsics::_isDigit:
 835   case vmIntrinsics::_isLowerCase:
 836   case vmIntrinsics::_isUpperCase:
 837   case vmIntrinsics::_isWhitespace:
 838     if (!UseCharacterCompareIntrinsics) return true;
 839     break;
 840 #endif // COMPILER2
 841   default:
 842     return false;
 843   }
 844 
 845   return false;
 846 }
 847 
 848 #define VM_INTRINSIC_INITIALIZE(id, klass, name, sig, flags) #id "\0"
 849 static const char* vm_intrinsic_name_bodies =
 850   VM_INTRINSICS_DO(VM_INTRINSIC_INITIALIZE,
 851                    VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_ALIAS_IGNORE);
 852 
 853 static const char* vm_intrinsic_name_table[vmIntrinsics::ID_LIMIT];
 854 
 855 const char* vmIntrinsics::name_at(vmIntrinsics::ID id) {
 856   const char** nt = &vm_intrinsic_name_table[0];
 857   if (nt[_none] == NULL) {
 858     char* string = (char*) &vm_intrinsic_name_bodies[0];