diff -r d4e7ccaf1445 -r 1512d88b24c6 src/hotspot/share/oops/method.cpp --- a/src/hotspot/share/oops/method.cpp Fri May 17 10:48:02 2019 -0400 +++ b/src/hotspot/share/oops/method.cpp Fri May 17 08:29:55 2019 -0700 @@ -958,23 +958,30 @@ void Method::unlink_method() { _code = NULL; - assert(DumpSharedSpaces, "dump time only"); + assert(DumpSharedSpaces || DynamicDumpSharedSpaces, "dump time only"); // Set the values to what they should be at run time. Note that // this Method can no longer be executed during dump time. _i2i_entry = Interpreter::entry_for_cds_method(this); _from_interpreted_entry = _i2i_entry; + if (DynamicDumpSharedSpaces) { + assert(_from_compiled_entry != NULL, "sanity"); + } else { + // TODO: Simplify the adapter trampoline allocation for static archiving. + // Remove the use of CDSAdapterHandlerEntry. + CDSAdapterHandlerEntry* cds_adapter = (CDSAdapterHandlerEntry*)adapter(); + constMethod()->set_adapter_trampoline(cds_adapter->get_adapter_trampoline()); + _from_compiled_entry = cds_adapter->get_c2i_entry_trampoline(); + assert(*((int*)_from_compiled_entry) == 0, + "must be NULL during dump time, to be initialized at run time"); + } + if (is_native()) { *native_function_addr() = NULL; set_signature_handler(NULL); } NOT_PRODUCT(set_compiled_invocation_count(0);) - CDSAdapterHandlerEntry* cds_adapter = (CDSAdapterHandlerEntry*)adapter(); - constMethod()->set_adapter_trampoline(cds_adapter->get_adapter_trampoline()); - _from_compiled_entry = cds_adapter->get_c2i_entry_trampoline(); - assert(*((int*)_from_compiled_entry) == 0, "must be NULL during dump time, to be initialized at run time"); - set_method_data(NULL); clear_method_counters(); }