< 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 >