RFR 8165246: [REDO] InstanceKlass::_previous_version_count goes negative
George Triantafillou
george.triantafillou at oracle.com
Wed Sep 7 12:23:21 UTC 2016
Hi Coleen,
The fix looks good. One nit:
src/share/vm/oops/instanceKlass.cpp:
3370 // Globally, there is at least one previous version of a class to walk
3371 // during class unloading, which is saved because there are old
methods in the class
3372 // are still running. Otherwise the previous version list is
cleaned up.
Change to:
3370 // Globally, there is at least one previous version of a class to walk
3371 // during class unloading, which is saved because old methods in
the class
3372 // are still running. Otherwise the previous version list is
cleaned up.
-George
On 9/6/2016 12:24 PM, Coleen Phillimore wrote:
> Summary: make _has_previous_version a boolean that is set to true when
> previous version of a class is added or during class unloading call to
> purge_previous_versions
>
> The failed fix was because InstanceKlass's previous_versions klasses
> were walked more than once during class unloading, because the scratch
> classes are also on the CLD::_klasses list. This change does three
> things. 1. Only walk the class if has_been_redefined (which is not
> set for the scratch class), 2. set next link to NULL for the scratch
> class when removed from the previous version list, and 3. change the
> counter to a flag because the counter may never go to zero if a CLD
> has redefined classes with previous versions and is unloaded. For
> this latter case we don't need to walk previous_versions.
>
> I tested this with changes 1 and 2 in Kitchensink, to verify the
> diagnosis, and then added 3 and retested.
> Also tested with the fix for
> https://bugs.openjdk.java.net/browse/JDK-8156137 which was checked
> into hs_-omp repository.
>
> Also ran through RBT 4 tiers nightly tests.
>
> open webrev at http://cr.openjdk.java.net/~coleenp/8165246.01/webrev
> bug link https://bugs.openjdk.java.net/browse/JDK-8165246
>
> Thanks,
> Coleen
>
>
More information about the hotspot-runtime-dev
mailing list