< prev index next >

src/share/vm/c1/c1_GraphBuilder.cpp

Print this page
rev 7508 : 8028595: WhiteBox API for stress testing of TieredCompilation
Reviewed-by:


3557       // Use the intrinsic version of Reference.get() so that the value in
3558       // the referent field can be registered by the G1 pre-barrier code.
3559       // Also to prevent commoning reads from this field across safepoint
3560       // since GC can change its value.
3561       preserves_state = true;
3562       break;
3563 
3564     case vmIntrinsics::_updateCRC32:
3565     case vmIntrinsics::_updateBytesCRC32:
3566     case vmIntrinsics::_updateByteBufferCRC32:
3567       if (!UseCRC32Intrinsics) return false;
3568       cantrap = false;
3569       preserves_state = true;
3570       break;
3571 
3572     case vmIntrinsics::_loadFence :
3573     case vmIntrinsics::_storeFence:
3574     case vmIntrinsics::_fullFence :
3575       break;
3576 



3577     default                       : return false; // do not inline
3578   }
3579   // create intrinsic node
3580   const bool has_receiver = !callee->is_static();
3581   ValueType* result_type = as_ValueType(callee->return_type());
3582   ValueStack* state_before = copy_state_for_exception();
3583 
3584   Values* args = state()->pop_arguments(callee->arg_size());
3585 
3586   if (is_profiling()) {
3587     // Don't profile in the special case where the root method
3588     // is the intrinsic
3589     if (callee != method()) {
3590       // Note that we'd collect profile data in this method if we wanted it.
3591       compilation()->set_would_profile(true);
3592       if (profile_calls()) {
3593         Value recv = NULL;
3594         if (has_receiver) {
3595           recv = args->at(0);
3596           null_check(recv);




3557       // Use the intrinsic version of Reference.get() so that the value in
3558       // the referent field can be registered by the G1 pre-barrier code.
3559       // Also to prevent commoning reads from this field across safepoint
3560       // since GC can change its value.
3561       preserves_state = true;
3562       break;
3563 
3564     case vmIntrinsics::_updateCRC32:
3565     case vmIntrinsics::_updateBytesCRC32:
3566     case vmIntrinsics::_updateByteBufferCRC32:
3567       if (!UseCRC32Intrinsics) return false;
3568       cantrap = false;
3569       preserves_state = true;
3570       break;
3571 
3572     case vmIntrinsics::_loadFence :
3573     case vmIntrinsics::_storeFence:
3574     case vmIntrinsics::_fullFence :
3575       break;
3576 
3577     case vmIntrinsics::_getCompiler:
3578       break;
3579 
3580     default                       : return false; // do not inline
3581   }
3582   // create intrinsic node
3583   const bool has_receiver = !callee->is_static();
3584   ValueType* result_type = as_ValueType(callee->return_type());
3585   ValueStack* state_before = copy_state_for_exception();
3586 
3587   Values* args = state()->pop_arguments(callee->arg_size());
3588 
3589   if (is_profiling()) {
3590     // Don't profile in the special case where the root method
3591     // is the intrinsic
3592     if (callee != method()) {
3593       // Note that we'd collect profile data in this method if we wanted it.
3594       compilation()->set_would_profile(true);
3595       if (profile_calls()) {
3596         Value recv = NULL;
3597         if (has_receiver) {
3598           recv = args->at(0);
3599           null_check(recv);


< prev index next >