@@ -1282,6 +1282,18 @@ C2V_VMENTRY_0(jint, getLocalVariableTableLength, (JNIEnv* env, jobject, ARGUMENT
12821282 return method->localvariable_table_length ();
12831283C2V_END
12841284
1285+ static MethodData* get_profiling_method_data (const methodHandle& method, TRAPS) {
1286+ MethodData* method_data = method->method_data ();
1287+ if (method_data == nullptr ) {
1288+ method->build_profiling_method_data (method, CHECK_NULL);
1289+ method_data = method->method_data ();
1290+ if (method_data == nullptr ) {
1291+ THROW_MSG_NULL (vmSymbols::java_lang_OutOfMemoryError (), " cannot allocate MethodData" )
1292+ }
1293+ }
1294+ return method_data;
1295+ }
1296+
12851297C2V_VMENTRY (void , reprofile, (JNIEnv* env, jobject, ARGUMENT_PAIR(method)))
12861298 methodHandle method(THREAD, UNPACK_PAIR(Method, method));
12871299 MethodCounters* mcs = method->method_counters ();
@@ -1297,9 +1309,7 @@ C2V_VMENTRY(void, reprofile, (JNIEnv* env, jobject, ARGUMENT_PAIR(method)))
12971309
12981310 MethodData* method_data = method->method_data ();
12991311 if (method_data == nullptr ) {
1300- ClassLoaderData* loader_data = method->method_holder ()->class_loader_data ();
1301- method_data = MethodData::allocate (loader_data, method, CHECK);
1302- method->set_method_data (method_data);
1312+ method_data = get_profiling_method_data (method, CHECK);
13031313 } else {
13041314 method_data->initialize ();
13051315 }
@@ -2976,12 +2986,7 @@ C2V_END
29762986
29772987C2V_VMENTRY_0 (jlong, getFailedSpeculationsAddress, (JNIEnv* env, jobject, ARGUMENT_PAIR(method)))
29782988 methodHandle method(THREAD, UNPACK_PAIR(Method, method));
2979- MethodData* method_data = method->method_data ();
2980- if (method_data == nullptr ) {
2981- ClassLoaderData* loader_data = method->method_holder ()->class_loader_data ();
2982- method_data = MethodData::allocate (loader_data, method, CHECK_0);
2983- method->set_method_data (method_data);
2984- }
2989+ MethodData* method_data = get_profiling_method_data(method, CHECK_0);
29852990 return (jlong) method_data->get_failed_speculations_address ();
29862991C2V_END
29872992
0 commit comments