346 347 return vmIntrinsics::_none; 348 } 349 350 bool vmIntrinsics::preserves_state(vmIntrinsics::ID id) { 351 assert(id != vmIntrinsics::_none, "must be a VM intrinsic"); 352 switch(id) { 353 #ifdef JFR_HAVE_INTRINSICS 354 case vmIntrinsics::_counterTime: 355 #endif 356 case vmIntrinsics::_currentTimeMillis: 357 case vmIntrinsics::_nanoTime: 358 case vmIntrinsics::_floatToRawIntBits: 359 case vmIntrinsics::_intBitsToFloat: 360 case vmIntrinsics::_doubleToRawLongBits: 361 case vmIntrinsics::_longBitsToDouble: 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: 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: 406 case vmIntrinsics::_dabs: 407 case vmIntrinsics::_dsqrt: 408 case vmIntrinsics::_dsin: 409 case vmIntrinsics::_dcos: 410 case vmIntrinsics::_dtan: 411 case vmIntrinsics::_dlog: 412 case vmIntrinsics::_dlog10: 413 case vmIntrinsics::_dexp: 414 case vmIntrinsics::_dpow: 415 case vmIntrinsics::_updateCRC32: 416 case vmIntrinsics::_updateBytesCRC32: 417 case vmIntrinsics::_updateByteBufferCRC32: 418 case vmIntrinsics::_vectorizedMismatch: 419 case vmIntrinsics::_fmaD: 420 case vmIntrinsics::_fmaF: 421 return false; 422 default: 423 return true; 424 } 425 } 426 550 case vmIntrinsics::_getModifiers: 551 case vmIntrinsics::_isInterface: 552 case vmIntrinsics::_isArray: 553 case vmIntrinsics::_isPrimitive: 554 case vmIntrinsics::_getSuperclass: 555 case vmIntrinsics::_Class_cast: 556 case vmIntrinsics::_getLength: 557 case vmIntrinsics::_newArray: 558 case vmIntrinsics::_getClass: 559 if (!InlineClassNatives) return true; 560 break; 561 case vmIntrinsics::_currentThread: 562 case vmIntrinsics::_isInterrupted: 563 if (!InlineThreadNatives) return true; 564 break; 565 case vmIntrinsics::_floatToRawIntBits: 566 case vmIntrinsics::_intBitsToFloat: 567 case vmIntrinsics::_doubleToRawLongBits: 568 case vmIntrinsics::_longBitsToDouble: 569 case vmIntrinsics::_dabs: 570 case vmIntrinsics::_dsqrt: 571 case vmIntrinsics::_dsin: 572 case vmIntrinsics::_dcos: 573 case vmIntrinsics::_dtan: 574 case vmIntrinsics::_dlog: 575 case vmIntrinsics::_dexp: 576 case vmIntrinsics::_dpow: 577 case vmIntrinsics::_dlog10: 578 case vmIntrinsics::_datan2: 579 case vmIntrinsics::_min: 580 case vmIntrinsics::_max: 581 case vmIntrinsics::_floatToIntBits: 582 case vmIntrinsics::_doubleToLongBits: 583 case vmIntrinsics::_maxF: 584 case vmIntrinsics::_minF: 585 case vmIntrinsics::_maxD: 586 case vmIntrinsics::_minD: 587 if (!InlineMathNatives) return true; 588 break; 589 case vmIntrinsics::_fmaD: | 346 347 return vmIntrinsics::_none; 348 } 349 350 bool vmIntrinsics::preserves_state(vmIntrinsics::ID id) { 351 assert(id != vmIntrinsics::_none, "must be a VM intrinsic"); 352 switch(id) { 353 #ifdef JFR_HAVE_INTRINSICS 354 case vmIntrinsics::_counterTime: 355 #endif 356 case vmIntrinsics::_currentTimeMillis: 357 case vmIntrinsics::_nanoTime: 358 case vmIntrinsics::_floatToRawIntBits: 359 case vmIntrinsics::_intBitsToFloat: 360 case vmIntrinsics::_doubleToRawLongBits: 361 case vmIntrinsics::_longBitsToDouble: 362 case vmIntrinsics::_getClass: 363 case vmIntrinsics::_isInstance: 364 case vmIntrinsics::_currentThread: 365 case vmIntrinsics::_dabs: 366 case vmIntrinsics::_fabs: 367 case vmIntrinsics::_iabs: 368 case vmIntrinsics::_labs: 369 case vmIntrinsics::_dsqrt: 370 case vmIntrinsics::_dsin: 371 case vmIntrinsics::_dcos: 372 case vmIntrinsics::_dtan: 373 case vmIntrinsics::_dlog: 374 case vmIntrinsics::_dlog10: 375 case vmIntrinsics::_dexp: 376 case vmIntrinsics::_dpow: 377 case vmIntrinsics::_checkIndex: 378 case vmIntrinsics::_Reference_get: 379 case vmIntrinsics::_updateCRC32: 380 case vmIntrinsics::_updateBytesCRC32: 381 case vmIntrinsics::_updateByteBufferCRC32: 382 case vmIntrinsics::_vectorizedMismatch: 383 case vmIntrinsics::_fmaD: 384 case vmIntrinsics::_fmaF: 385 case vmIntrinsics::_isDigit: 386 case vmIntrinsics::_isLowerCase: 387 case vmIntrinsics::_isUpperCase: 388 case vmIntrinsics::_isWhitespace: 390 default: 391 return false; 392 } 393 } 394 395 bool vmIntrinsics::can_trap(vmIntrinsics::ID id) { 396 assert(id != vmIntrinsics::_none, "must be a VM intrinsic"); 397 switch(id) { 398 #ifdef JFR_HAVE_INTRINSICS 399 case vmIntrinsics::_counterTime: 400 case vmIntrinsics::_getClassId: 401 #endif 402 case vmIntrinsics::_currentTimeMillis: 403 case vmIntrinsics::_nanoTime: 404 case vmIntrinsics::_floatToRawIntBits: 405 case vmIntrinsics::_intBitsToFloat: 406 case vmIntrinsics::_doubleToRawLongBits: 407 case vmIntrinsics::_longBitsToDouble: 408 case vmIntrinsics::_currentThread: 409 case vmIntrinsics::_dabs: 410 case vmIntrinsics::_fabs: 411 case vmIntrinsics::_iabs: 412 case vmIntrinsics::_labs: 413 case vmIntrinsics::_dsqrt: 414 case vmIntrinsics::_dsin: 415 case vmIntrinsics::_dcos: 416 case vmIntrinsics::_dtan: 417 case vmIntrinsics::_dlog: 418 case vmIntrinsics::_dlog10: 419 case vmIntrinsics::_dexp: 420 case vmIntrinsics::_dpow: 421 case vmIntrinsics::_updateCRC32: 422 case vmIntrinsics::_updateBytesCRC32: 423 case vmIntrinsics::_updateByteBufferCRC32: 424 case vmIntrinsics::_vectorizedMismatch: 425 case vmIntrinsics::_fmaD: 426 case vmIntrinsics::_fmaF: 427 return false; 428 default: 429 return true; 430 } 431 } 432 556 case vmIntrinsics::_getModifiers: 557 case vmIntrinsics::_isInterface: 558 case vmIntrinsics::_isArray: 559 case vmIntrinsics::_isPrimitive: 560 case vmIntrinsics::_getSuperclass: 561 case vmIntrinsics::_Class_cast: 562 case vmIntrinsics::_getLength: 563 case vmIntrinsics::_newArray: 564 case vmIntrinsics::_getClass: 565 if (!InlineClassNatives) return true; 566 break; 567 case vmIntrinsics::_currentThread: 568 case vmIntrinsics::_isInterrupted: 569 if (!InlineThreadNatives) return true; 570 break; 571 case vmIntrinsics::_floatToRawIntBits: 572 case vmIntrinsics::_intBitsToFloat: 573 case vmIntrinsics::_doubleToRawLongBits: 574 case vmIntrinsics::_longBitsToDouble: 575 case vmIntrinsics::_dabs: 576 case vmIntrinsics::_fabs: 577 case vmIntrinsics::_iabs: 578 case vmIntrinsics::_labs: 579 case vmIntrinsics::_dsqrt: 580 case vmIntrinsics::_dsin: 581 case vmIntrinsics::_dcos: 582 case vmIntrinsics::_dtan: 583 case vmIntrinsics::_dlog: 584 case vmIntrinsics::_dexp: 585 case vmIntrinsics::_dpow: 586 case vmIntrinsics::_dlog10: 587 case vmIntrinsics::_datan2: 588 case vmIntrinsics::_min: 589 case vmIntrinsics::_max: 590 case vmIntrinsics::_floatToIntBits: 591 case vmIntrinsics::_doubleToLongBits: 592 case vmIntrinsics::_maxF: 593 case vmIntrinsics::_minF: 594 case vmIntrinsics::_maxD: 595 case vmIntrinsics::_minD: 596 if (!InlineMathNatives) return true; 597 break; 598 case vmIntrinsics::_fmaD: |