< prev index next >
src/share/vm/c1/c1_GraphBuilder.cpp
Print this page
@@ -1538,19 +1538,13 @@
}
if (profile_return() && x->type()->is_object_kind()) {
ciMethod* caller = state()->scope()->method();
ciMethodData* md = caller->method_data_or_null();
ciProfileData* data = md->bci_to_data(invoke_bci);
- if (data != NULL && (data->is_CallTypeData() || data->is_VirtualCallTypeData())) {
- bool has_return = data->is_CallTypeData() ? ((ciCallTypeData*)data)->has_return() : ((ciVirtualCallTypeData*)data)->has_return();
- // May not be true in case of an inlined call through a method handle intrinsic.
- if (has_return) {
profile_return_type(x, method(), caller, invoke_bci);
}
}
- }
- }
Goto* goto_callee = new Goto(continuation(), false);
// See whether this is the first return; if so, store off some
// of the state for later examination
if (num_returns() == 0) {
@@ -4364,12 +4358,15 @@
invoke_bci = bci();
}
ciMethodData* md = m->method_data_or_null();
ciProfileData* data = md->bci_to_data(invoke_bci);
if (data != NULL && (data->is_CallTypeData() || data->is_VirtualCallTypeData())) {
+ bool has_return = data->is_CallTypeData() ? ((ciCallTypeData*)data)->has_return() : ((ciVirtualCallTypeData*)data)->has_return();
+ if (has_return) {
append(new ProfileReturnType(m , invoke_bci, callee, ret));
}
+ }
}
void GraphBuilder::profile_invocation(ciMethod* callee, ValueStack* state) {
append(new ProfileInvoke(callee, state));
}
< prev index next >