338 case vmIntrinsics::_doubleToRawLongBits: 339 case vmIntrinsics::_longBitsToDouble: 340 case vmIntrinsics::_getClass: 341 case vmIntrinsics::_isInstance: 342 case vmIntrinsics::_currentThread: 343 case vmIntrinsics::_dabs: 344 case vmIntrinsics::_dsqrt: 345 case vmIntrinsics::_dsin: 346 case vmIntrinsics::_dcos: 347 case vmIntrinsics::_dtan: 348 case vmIntrinsics::_dlog: 349 case vmIntrinsics::_dlog10: 350 case vmIntrinsics::_dexp: 351 case vmIntrinsics::_dpow: 352 case vmIntrinsics::_checkIndex: 353 case vmIntrinsics::_Reference_get: 354 case vmIntrinsics::_updateCRC32: 355 case vmIntrinsics::_updateBytesCRC32: 356 case vmIntrinsics::_updateByteBufferCRC32: 357 case vmIntrinsics::_vectorizedMismatch: 358 return true; 359 default: 360 return false; 361 } 362 } 363 364 bool vmIntrinsics::can_trap(vmIntrinsics::ID id) { 365 assert(id != vmIntrinsics::_none, "must be a VM intrinsic"); 366 switch(id) { 367 #ifdef TRACE_HAVE_INTRINSICS 368 case vmIntrinsics::_counterTime: 369 #endif 370 case vmIntrinsics::_currentTimeMillis: 371 case vmIntrinsics::_nanoTime: 372 case vmIntrinsics::_floatToRawIntBits: 373 case vmIntrinsics::_intBitsToFloat: 374 case vmIntrinsics::_doubleToRawLongBits: 375 case vmIntrinsics::_longBitsToDouble: 376 case vmIntrinsics::_currentThread: 377 case vmIntrinsics::_dabs: 378 case vmIntrinsics::_dsqrt: 379 case vmIntrinsics::_dsin: 380 case vmIntrinsics::_dcos: 381 case vmIntrinsics::_dtan: 382 case vmIntrinsics::_dlog: 383 case vmIntrinsics::_dlog10: 384 case vmIntrinsics::_dexp: 385 case vmIntrinsics::_dpow: 386 case vmIntrinsics::_updateCRC32: 387 case vmIntrinsics::_updateBytesCRC32: 388 case vmIntrinsics::_updateByteBufferCRC32: 389 case vmIntrinsics::_vectorizedMismatch: 390 return false; 391 default: 392 return true; 393 } 394 } 395 396 bool vmIntrinsics::does_virtual_dispatch(vmIntrinsics::ID id) { 397 assert(id != vmIntrinsics::_none, "must be a VM intrinsic"); 398 switch(id) { 399 case vmIntrinsics::_hashCode: 400 case vmIntrinsics::_clone: 401 return true; 402 break; 403 default: 404 return false; 405 } 406 } 407 408 int vmIntrinsics::predicates_needed(vmIntrinsics::ID id) { 409 assert(id != vmIntrinsics::_none, "must be a VM intrinsic"); 517 break; 518 case vmIntrinsics::_floatToRawIntBits: 519 case vmIntrinsics::_intBitsToFloat: 520 case vmIntrinsics::_doubleToRawLongBits: 521 case vmIntrinsics::_longBitsToDouble: 522 case vmIntrinsics::_dabs: 523 case vmIntrinsics::_dsqrt: 524 case vmIntrinsics::_dsin: 525 case vmIntrinsics::_dcos: 526 case vmIntrinsics::_dtan: 527 case vmIntrinsics::_dlog: 528 case vmIntrinsics::_dexp: 529 case vmIntrinsics::_dpow: 530 case vmIntrinsics::_dlog10: 531 case vmIntrinsics::_datan2: 532 case vmIntrinsics::_min: 533 case vmIntrinsics::_max: 534 case vmIntrinsics::_floatToIntBits: 535 case vmIntrinsics::_doubleToLongBits: 536 if (!InlineMathNatives) return true; 537 break; 538 case vmIntrinsics::_arraycopy: 539 if (!InlineArrayCopy) return true; 540 break; 541 case vmIntrinsics::_updateCRC32: 542 case vmIntrinsics::_updateBytesCRC32: 543 case vmIntrinsics::_updateByteBufferCRC32: 544 if (!UseCRC32Intrinsics) return true; 545 break; 546 case vmIntrinsics::_getObject: 547 case vmIntrinsics::_getBoolean: 548 case vmIntrinsics::_getByte: 549 case vmIntrinsics::_getShort: 550 case vmIntrinsics::_getChar: 551 case vmIntrinsics::_getInt: 552 case vmIntrinsics::_getLong: 553 case vmIntrinsics::_getFloat: 554 case vmIntrinsics::_getDouble: 555 case vmIntrinsics::_putObject: 556 case vmIntrinsics::_putBoolean: | 338 case vmIntrinsics::_doubleToRawLongBits: 339 case vmIntrinsics::_longBitsToDouble: 340 case vmIntrinsics::_getClass: 341 case vmIntrinsics::_isInstance: 342 case vmIntrinsics::_currentThread: 343 case vmIntrinsics::_dabs: 344 case vmIntrinsics::_dsqrt: 345 case vmIntrinsics::_dsin: 346 case vmIntrinsics::_dcos: 347 case vmIntrinsics::_dtan: 348 case vmIntrinsics::_dlog: 349 case vmIntrinsics::_dlog10: 350 case vmIntrinsics::_dexp: 351 case vmIntrinsics::_dpow: 352 case vmIntrinsics::_checkIndex: 353 case vmIntrinsics::_Reference_get: 354 case vmIntrinsics::_updateCRC32: 355 case vmIntrinsics::_updateBytesCRC32: 356 case vmIntrinsics::_updateByteBufferCRC32: 357 case vmIntrinsics::_vectorizedMismatch: 358 case vmIntrinsics::_fmaD: 359 case vmIntrinsics::_fmaF: 360 return true; 361 default: 362 return false; 363 } 364 } 365 366 bool vmIntrinsics::can_trap(vmIntrinsics::ID id) { 367 assert(id != vmIntrinsics::_none, "must be a VM intrinsic"); 368 switch(id) { 369 #ifdef TRACE_HAVE_INTRINSICS 370 case vmIntrinsics::_counterTime: 371 #endif 372 case vmIntrinsics::_currentTimeMillis: 373 case vmIntrinsics::_nanoTime: 374 case vmIntrinsics::_floatToRawIntBits: 375 case vmIntrinsics::_intBitsToFloat: 376 case vmIntrinsics::_doubleToRawLongBits: 377 case vmIntrinsics::_longBitsToDouble: 378 case vmIntrinsics::_currentThread: 379 case vmIntrinsics::_dabs: 380 case vmIntrinsics::_dsqrt: 381 case vmIntrinsics::_dsin: 382 case vmIntrinsics::_dcos: 383 case vmIntrinsics::_dtan: 384 case vmIntrinsics::_dlog: 385 case vmIntrinsics::_dlog10: 386 case vmIntrinsics::_dexp: 387 case vmIntrinsics::_dpow: 388 case vmIntrinsics::_updateCRC32: 389 case vmIntrinsics::_updateBytesCRC32: 390 case vmIntrinsics::_updateByteBufferCRC32: 391 case vmIntrinsics::_vectorizedMismatch: 392 case vmIntrinsics::_fmaD: 393 case vmIntrinsics::_fmaF: 394 return false; 395 default: 396 return true; 397 } 398 } 399 400 bool vmIntrinsics::does_virtual_dispatch(vmIntrinsics::ID id) { 401 assert(id != vmIntrinsics::_none, "must be a VM intrinsic"); 402 switch(id) { 403 case vmIntrinsics::_hashCode: 404 case vmIntrinsics::_clone: 405 return true; 406 break; 407 default: 408 return false; 409 } 410 } 411 412 int vmIntrinsics::predicates_needed(vmIntrinsics::ID id) { 413 assert(id != vmIntrinsics::_none, "must be a VM intrinsic"); 521 break; 522 case vmIntrinsics::_floatToRawIntBits: 523 case vmIntrinsics::_intBitsToFloat: 524 case vmIntrinsics::_doubleToRawLongBits: 525 case vmIntrinsics::_longBitsToDouble: 526 case vmIntrinsics::_dabs: 527 case vmIntrinsics::_dsqrt: 528 case vmIntrinsics::_dsin: 529 case vmIntrinsics::_dcos: 530 case vmIntrinsics::_dtan: 531 case vmIntrinsics::_dlog: 532 case vmIntrinsics::_dexp: 533 case vmIntrinsics::_dpow: 534 case vmIntrinsics::_dlog10: 535 case vmIntrinsics::_datan2: 536 case vmIntrinsics::_min: 537 case vmIntrinsics::_max: 538 case vmIntrinsics::_floatToIntBits: 539 case vmIntrinsics::_doubleToLongBits: 540 if (!InlineMathNatives) return true; 541 break; 542 case vmIntrinsics::_fmaD: 543 case vmIntrinsics::_fmaF: 544 if (!InlineMathNatives || !UseFMA) return true; 545 break; 546 case vmIntrinsics::_arraycopy: 547 if (!InlineArrayCopy) return true; 548 break; 549 case vmIntrinsics::_updateCRC32: 550 case vmIntrinsics::_updateBytesCRC32: 551 case vmIntrinsics::_updateByteBufferCRC32: 552 if (!UseCRC32Intrinsics) return true; 553 break; 554 case vmIntrinsics::_getObject: 555 case vmIntrinsics::_getBoolean: 556 case vmIntrinsics::_getByte: 557 case vmIntrinsics::_getShort: 558 case vmIntrinsics::_getChar: 559 case vmIntrinsics::_getInt: 560 case vmIntrinsics::_getLong: 561 case vmIntrinsics::_getFloat: 562 case vmIntrinsics::_getDouble: 563 case vmIntrinsics::_putObject: 564 case vmIntrinsics::_putBoolean: |