RFR (S) 8222446: assert(C->env()->system_dictionary_modification_counter_changed()) failed: Must invalidate if TypeFuncs differ

coleen.phillimore at oracle.com coleen.phillimore at oracle.com
Thu Jun 20 17:28:31 UTC 2019


Summary: Remove SystemDictionary::modification_counter optimization

See bug for more details.  To avoid the assert in the bug report, it's 
necessary to also increase the modification counter for class unloading, 
which needs special code for concurrent class unloading. The global 
counter is used to verify that validate_dependencies() gets the same 
answer based on the subklass hierarchy, but provides a quick exit in 
production mode.  Removing it may allow more nmethods to be created that 
don't depend on the classes that may be loaded while the Method is being 
compiled.  Performance testing was done on this with no change in 
performance.  Also investigated the breakpoint setting code which 
incremented the modification counter. Dependent compilations are 
invalidated using evol_method dependencies, so updating the system 
dictionary modification counter isn't unnecessary.

Tested with hs-tier1-8 testing, and CTW, and local jvmti/jdi/jdwp test 
runs with -Xcomp.

open webrev at http://cr.openjdk.java.net/~coleenp/2019/8222446.01/webrev
bug link https://bugs.openjdk.java.net/browse/JDK-8222446

Thanks,
Coleen


More information about the hotspot-dev mailing list