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:


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






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


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