382 case vmIntrinsics::_dsqrt: 383 case vmIntrinsics::_dsin: 384 case vmIntrinsics::_dcos: 385 case vmIntrinsics::_dtan: 386 case vmIntrinsics::_dlog: 387 case vmIntrinsics::_dlog10: 388 case vmIntrinsics::_dexp: 389 case vmIntrinsics::_dpow: 390 case vmIntrinsics::_updateCRC32: 391 case vmIntrinsics::_updateBytesCRC32: 392 case vmIntrinsics::_updateByteBufferCRC32: 393 case vmIntrinsics::_vectorizedMismatch: 394 case vmIntrinsics::_fmaD: 395 case vmIntrinsics::_fmaF: 396 return false; 397 default: 398 return true; 399 } 400 } 401 402 bool vmIntrinsics::does_virtual_dispatch(vmIntrinsics::ID id) { 403 assert(id != vmIntrinsics::_none, "must be a VM intrinsic"); 404 switch(id) { 405 case vmIntrinsics::_hashCode: 406 case vmIntrinsics::_clone: 407 return true; 408 break; 409 default: 410 return false; 411 } 412 } 413 414 int vmIntrinsics::predicates_needed(vmIntrinsics::ID id) { 415 assert(id != vmIntrinsics::_none, "must be a VM intrinsic"); 416 switch (id) { 417 case vmIntrinsics::_cipherBlockChaining_encryptAESCrypt: 418 case vmIntrinsics::_cipherBlockChaining_decryptAESCrypt: 419 case vmIntrinsics::_counterMode_AESCrypt: 420 return 1; 421 case vmIntrinsics::_digestBase_implCompressMB: | 382 case vmIntrinsics::_dsqrt: 383 case vmIntrinsics::_dsin: 384 case vmIntrinsics::_dcos: 385 case vmIntrinsics::_dtan: 386 case vmIntrinsics::_dlog: 387 case vmIntrinsics::_dlog10: 388 case vmIntrinsics::_dexp: 389 case vmIntrinsics::_dpow: 390 case vmIntrinsics::_updateCRC32: 391 case vmIntrinsics::_updateBytesCRC32: 392 case vmIntrinsics::_updateByteBufferCRC32: 393 case vmIntrinsics::_vectorizedMismatch: 394 case vmIntrinsics::_fmaD: 395 case vmIntrinsics::_fmaF: 396 return false; 397 default: 398 return true; 399 } 400 } 401 402 // Some intrinsics produce different results if they are not pinned 403 bool vmIntrinsics::should_be_pinned(vmIntrinsics::ID id) { 404 assert(id != vmIntrinsics::_none, "must be a VM intrinsic"); 405 switch(id) { 406 #ifdef TRACE_HAVE_INTRINSICS 407 case vmIntrinsics::_counterTime: 408 #endif 409 case vmIntrinsics::_currentTimeMillis: 410 case vmIntrinsics::_nanoTime: 411 return true; 412 default: 413 return false; 414 } 415 } 416 417 bool vmIntrinsics::does_virtual_dispatch(vmIntrinsics::ID id) { 418 assert(id != vmIntrinsics::_none, "must be a VM intrinsic"); 419 switch(id) { 420 case vmIntrinsics::_hashCode: 421 case vmIntrinsics::_clone: 422 return true; 423 break; 424 default: 425 return false; 426 } 427 } 428 429 int vmIntrinsics::predicates_needed(vmIntrinsics::ID id) { 430 assert(id != vmIntrinsics::_none, "must be a VM intrinsic"); 431 switch (id) { 432 case vmIntrinsics::_cipherBlockChaining_encryptAESCrypt: 433 case vmIntrinsics::_cipherBlockChaining_decryptAESCrypt: 434 case vmIntrinsics::_counterMode_AESCrypt: 435 return 1; 436 case vmIntrinsics::_digestBase_implCompressMB: |