equal
deleted
inserted
replaced
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)); |