RFR (S) 8178336: Unnecessary SystemDictionary walk for Protection domain liveness

Ioi Lam ioi.lam at oracle.com
Tue Apr 11 06:35:13 UTC 2017

Hi Coleen,

Thanks for doing this clean up. I was guiltily of writing the original 
code :-(

A few questions:

Why is this block of code moved and the comments dropped?

  328 void Dictionary::oops_do(OopClosure* f) {
  329   // Only the protection domain oops contain references into the 
heap. Iterate
  330   // over all of them.
  331   _pd_cache_table->oops_do(f);
  332 }

It would be better to make the changes in-place.

Also, have you validated that (either with an explicit test, or inside 
the debugger)

[1] live protection domains in _pd_cache_table are properly relocated 
during GC?
[2] dead protection domains are removed after class unloading?

- Ioi

On 4/11/17 4:18 AM, coleen.phillimore at oracle.com wrote:
> Summary: remove system dictionary walk and pass strong closure for 
> !ClassUnloading
> See bug for more details:
> open webrev at http://cr.openjdk.java.net/~coleenp/8178336.01/webrev
> bug link https://bugs.openjdk.java.net/browse/JDK-8178336
> Tested with nightly tier2-5 tests and jprt (runs all GCs) and runThese 
> with -XX:-ClassUnloading.
> Thanks,
> Coleen

More information about the hotspot-dev mailing list