RFR 8245823: Shenandoah: inline/optimize ShenandoahEvacOOMScope
rkennke at redhat.com
Wed May 27 11:18:52 UTC 2020
On Tue, 2020-05-26 at 13:57 -0400, Zhengyu Gu wrote:
> > Hm! I actually thought we optimized ShenandoahHeap::heap() enough
> > not to matter . Reverting
> > heap() cache would seem to ditch some of these overloads:
> > 131 inline ShenandoahEvacOOMScope();
> > 132 inline ShenandoahEvacOOMScope(Thread* t);
> > 133 inline ShenandoahEvacOOMScope(ShenandoahHeap* heap);
> > 134 inline ShenandoahEvacOOMScope(ShenandoahHeap* heap, Thread*
> > t);
> > 135 inline ~ShenandoahEvacOOMScope();
> > Thread:current() seems fine to pass, where available, and store
> > locally.
> Okay, updated:
Looks good in general.
+ void register_thread_to_protocol(Thread* t);
+ void unregister_thread_to_protocol(Thread* t);
It would have to be 'unregister_thread_from_protocol' but then I think
we can just do 'register_thread' and 'unregister_thread' instead?
Also, why not inline register_thread() and unregister_thread() too?
Those appear to be the common paths in mutator-LRB, and should only
account for a few instructions?
It may be worth passing thread from compiled-code into mutator-LRB, we
already keep it permanently in a register, and it may be relevant for
tiny-object-evacs. But that would be a future change.
More information about the hotspot-gc-dev