--- a/hotspot/src/share/vm/opto/doCall.cpp Thu Apr 07 17:12:21 2011 -0700
+++ b/hotspot/src/share/vm/opto/doCall.cpp Thu Apr 07 17:12:23 2011 -0700
@@ -63,6 +63,7 @@
JVMState* jvms, bool allow_inline,
float prof_factor) {
CallGenerator* cg;
+ guarantee(call_method != NULL, "failed method resolution");
// Dtrace currently doesn't work unless all calls are vanilla
if (env()->dtrace_method_probes()) {
@@ -130,8 +131,9 @@
// Get an adapter for the MethodHandle.
ciMethod* target_method = method_handle->get_method_handle_adapter();
-
- CallGenerator* hit_cg = this->call_generator(target_method, vtable_index, false, jvms, true, prof_factor);
+ CallGenerator* hit_cg = NULL;
+ if (target_method != NULL)
+ hit_cg = this->call_generator(target_method, vtable_index, false, jvms, true, prof_factor);
if (hit_cg != NULL && hit_cg->is_inline())
return hit_cg;
}
@@ -152,8 +154,9 @@
// Get an adapter for the MethodHandle.
ciMethod* target_method = method_handle->get_invokedynamic_adapter();
-
- CallGenerator* hit_cg = this->call_generator(target_method, vtable_index, false, jvms, true, prof_factor);
+ CallGenerator* hit_cg = NULL;
+ if (target_method != NULL)
+ hit_cg = this->call_generator(target_method, vtable_index, false, jvms, true, prof_factor);
if (hit_cg != NULL && hit_cg->is_inline()) {
CallGenerator* miss_cg = CallGenerator::for_dynamic_call(call_method);
return CallGenerator::for_predicted_dynamic_call(method_handle, miss_cg, hit_cg, prof_factor);