hotspot/src/share/vm/c1/c1_GraphBuilder.cpp
changeset 46542 73dd19b96b5d
parent 46458 3c12af929e7d
child 46630 75aa3e39d02c
equal deleted inserted replaced
46541:d20828de9e39 46542:73dd19b96b5d
  1538       }
  1538       }
  1539       if (profile_return() && x->type()->is_object_kind()) {
  1539       if (profile_return() && x->type()->is_object_kind()) {
  1540         ciMethod* caller = state()->scope()->method();
  1540         ciMethod* caller = state()->scope()->method();
  1541         ciMethodData* md = caller->method_data_or_null();
  1541         ciMethodData* md = caller->method_data_or_null();
  1542         ciProfileData* data = md->bci_to_data(invoke_bci);
  1542         ciProfileData* data = md->bci_to_data(invoke_bci);
  1543         if (data != NULL && (data->is_CallTypeData() || data->is_VirtualCallTypeData())) {
  1543         profile_return_type(x, method(), caller, invoke_bci);
  1544           bool has_return = data->is_CallTypeData() ? ((ciCallTypeData*)data)->has_return() : ((ciVirtualCallTypeData*)data)->has_return();
       
  1545           // May not be true in case of an inlined call through a method handle intrinsic.
       
  1546           if (has_return) {
       
  1547             profile_return_type(x, method(), caller, invoke_bci);
       
  1548           }
       
  1549         }
       
  1550       }
  1544       }
  1551     }
  1545     }
  1552     Goto* goto_callee = new Goto(continuation(), false);
  1546     Goto* goto_callee = new Goto(continuation(), false);
  1553 
  1547 
  1554     // See whether this is the first return; if so, store off some
  1548     // See whether this is the first return; if so, store off some
  4364     invoke_bci = bci();
  4358     invoke_bci = bci();
  4365   }
  4359   }
  4366   ciMethodData* md = m->method_data_or_null();
  4360   ciMethodData* md = m->method_data_or_null();
  4367   ciProfileData* data = md->bci_to_data(invoke_bci);
  4361   ciProfileData* data = md->bci_to_data(invoke_bci);
  4368   if (data != NULL && (data->is_CallTypeData() || data->is_VirtualCallTypeData())) {
  4362   if (data != NULL && (data->is_CallTypeData() || data->is_VirtualCallTypeData())) {
  4369     append(new ProfileReturnType(m , invoke_bci, callee, ret));
  4363     bool has_return = data->is_CallTypeData() ? ((ciCallTypeData*)data)->has_return() : ((ciVirtualCallTypeData*)data)->has_return();
       
  4364     if (has_return) {
       
  4365       append(new ProfileReturnType(m , invoke_bci, callee, ret));
       
  4366     }
  4370   }
  4367   }
  4371 }
  4368 }
  4372 
  4369 
  4373 void GraphBuilder::profile_invocation(ciMethod* callee, ValueStack* state) {
  4370 void GraphBuilder::profile_invocation(ciMethod* callee, ValueStack* state) {
  4374   append(new ProfileInvoke(callee, state));
  4371   append(new ProfileInvoke(callee, state));