Integrated: 8266330: itableMethodEntry::initialize() asserts with archived old classes
Calvin Cheung
ccheung at openjdk.java.net
Mon May 10 16:29:14 UTC 2021
On Fri, 7 May 2021 22:32:33 GMT, Calvin Cheung <ccheung at openjdk.org> wrote:
> #ifdef ASSERT
> if (MetaspaceShared::is_in_shared_metaspace((void*)&_method) &&
> !MetaspaceShared::remapped_readwrite() &&
> !MetaspaceShared::is_old_class(m->method_holder())) {
> // At runtime initialize_itable is rerun as part of link_class_impl()
> // for a shared class loaded by the non-boot loader.
> // The dumptime itable method entry should be the same as the runtime entry.
> assert(_method == m, "sanity");
> }
> #endif
>
>
> The above includes the check for !MetaspaceShared::is_old_class(m->method_holder()).
> While the method_holder() is not an old class, the _klass in the klassITable could be an old class.
> The proposed fix is to have the caller of the above function pass in the _klass and add another check
> making sure the _klass is not an old class before the assert.
>
> Testing:
> - [x] tiers 1 and 2 (including the new test)
This pull request has now been integrated.
Changeset: 25d99e52
Author: Calvin Cheung <ccheung at openjdk.org>
URL: https://git.openjdk.java.net/jdk/commit/25d99e52679bdf4601058e10e5679ca3780f8ec3
Stats: 176 lines in 6 files changed: 170 ins; 0 del; 6 mod
8266330: itableMethodEntry::initialize() asserts with archived old classes
Reviewed-by: iklam, minqi
-------------
PR: https://git.openjdk.java.net/jdk/pull/3930
More information about the hotspot-runtime-dev
mailing list