diff -r e3618c902d17 -r eda750f21308 src/hotspot/share/oops/method.cpp --- a/src/hotspot/share/oops/method.cpp Mon Oct 14 11:36:17 2019 +0200 +++ b/src/hotspot/share/oops/method.cpp Thu Oct 17 07:35:22 2019 -0400 @@ -118,11 +118,6 @@ void Method::deallocate_contents(ClassLoaderData* loader_data) { MetadataFactory::free_metadata(loader_data, constMethod()); set_constMethod(NULL); -#if INCLUDE_JVMCI - if (method_data()) { - FailedSpeculation::free_failed_speculations(method_data()->get_failed_speculations_address()); - } -#endif MetadataFactory::free_metadata(loader_data, method_data()); set_method_data(NULL); MetadataFactory::free_metadata(loader_data, method_counters()); @@ -131,6 +126,16 @@ if (code() != NULL) _code = NULL; } +void Method::release_C_heap_structures() { + if (method_data()) { +#if INCLUDE_JVMCI + FailedSpeculation::free_failed_speculations(method_data()->get_failed_speculations_address()); +#endif + // Destroy MethodData + method_data()->~MethodData(); + } +} + address Method::get_i2c_entry() { assert(adapter() != NULL, "must have"); return adapter()->get_i2c_entry();