399 break; 400 default: 401 return false; 402 } 403 } 404 405 int vmIntrinsics::predicates_needed(vmIntrinsics::ID id) { 406 assert(id != vmIntrinsics::_none, "must be a VM intrinsic"); 407 switch (id) { 408 case vmIntrinsics::_cipherBlockChaining_encryptAESCrypt: 409 case vmIntrinsics::_cipherBlockChaining_decryptAESCrypt: 410 case vmIntrinsics::_counterMode_AESCrypt: 411 return 1; 412 case vmIntrinsics::_digestBase_implCompressMB: 413 return 3; 414 default: 415 return 0; 416 } 417 } 418 419 bool vmIntrinsics::is_disabled_by_flags(const methodHandle& method) { 420 vmIntrinsics::ID id = method->intrinsic_id(); 421 assert(id != vmIntrinsics::_none, "must be a VM intrinsic"); 422 423 // -XX:-InlineNatives disables nearly all intrinsics except the ones listed in 424 // the following switch statement. 425 if (!InlineNatives) { 426 switch (id) { 427 case vmIntrinsics::_indexOfL: 428 case vmIntrinsics::_indexOfU: 429 case vmIntrinsics::_indexOfUL: 430 case vmIntrinsics::_indexOfIL: 431 case vmIntrinsics::_indexOfIU: 432 case vmIntrinsics::_indexOfIUL: 433 case vmIntrinsics::_indexOfU_char: 434 case vmIntrinsics::_compareToL: 435 case vmIntrinsics::_compareToU: 436 case vmIntrinsics::_compareToLU: 437 case vmIntrinsics::_compareToUL: 438 case vmIntrinsics::_equalsL: 439 case vmIntrinsics::_equalsU: 440 case vmIntrinsics::_equalsC: | 399 break; 400 default: 401 return false; 402 } 403 } 404 405 int vmIntrinsics::predicates_needed(vmIntrinsics::ID id) { 406 assert(id != vmIntrinsics::_none, "must be a VM intrinsic"); 407 switch (id) { 408 case vmIntrinsics::_cipherBlockChaining_encryptAESCrypt: 409 case vmIntrinsics::_cipherBlockChaining_decryptAESCrypt: 410 case vmIntrinsics::_counterMode_AESCrypt: 411 return 1; 412 case vmIntrinsics::_digestBase_implCompressMB: 413 return 3; 414 default: 415 return 0; 416 } 417 } 418 419 bool vmIntrinsics::is_intrinsic_available(vmIntrinsics::ID id) { 420 return !DirectiveSet::is_intrinsic_disabled(id) && 421 !vmIntrinsics::is_disabled_by_flags(id); 422 } 423 424 bool vmIntrinsics::is_disabled_by_flags(const methodHandle& method) { 425 vmIntrinsics::ID id = method->intrinsic_id(); 426 assert(id != vmIntrinsics::_none, "must be a VM intrinsic"); 427 return is_disabled_by_flags(id); 428 } 429 430 bool vmIntrinsics::is_disabled_by_flags(const vmIntrinsics::ID id) { 431 assert(id != vmIntrinsics::_none, "must be a VM intrinsic"); 432 433 // -XX:-InlineNatives disables nearly all intrinsics except the ones listed in 434 // the following switch statement. 435 if (!InlineNatives) { 436 switch (id) { 437 case vmIntrinsics::_indexOfL: 438 case vmIntrinsics::_indexOfU: 439 case vmIntrinsics::_indexOfUL: 440 case vmIntrinsics::_indexOfIL: 441 case vmIntrinsics::_indexOfIU: 442 case vmIntrinsics::_indexOfIUL: 443 case vmIntrinsics::_indexOfU_char: 444 case vmIntrinsics::_compareToL: 445 case vmIntrinsics::_compareToU: 446 case vmIntrinsics::_compareToLU: 447 case vmIntrinsics::_compareToUL: 448 case vmIntrinsics::_equalsL: 449 case vmIntrinsics::_equalsU: 450 case vmIntrinsics::_equalsC: |