RFR: JDK-8231583: Shenandoah fails with finagle-http

Roman Kennke rkennke at redhat.com
Mon Sep 30 13:12:19 UTC 2019


We're seeing failure with the finagle-http workload in renaissance
benchmarks.

The problem is caused by ShBSA::resolve_forward_pointer_not_null()
trying to borrow a register. In order to do so, it pushes rscratch1, and
later pops it again. This clashes when dst also happens to be rscratch1,
in this case the pop would restore the original value.

We need the register allocator to allocate an extra tmp reg for this. C1
should be good because rscratch1 is never used by register allocation there.

The whole cmpxchg-oop sequence can be simplified a lot. Maybe we can
reduce tmp register usage there?

Bug:
https://bugs.openjdk.java.net/browse/JDK-8231583
Webrev:
http://cr.openjdk.java.net/~rkennke/JDK-8231583/webrev.00/

Testing: the failing test now passes. hotspot_gc_shenandoah is good too.

Ok?

Roman



More information about the shenandoah-dev mailing list