RFR: Fix aarch64 after merge

Roman Kennke rkennke at redhat.com
Wed Apr 25 08:00:42 UTC 2018


I forgot to mention that testing against a bitmask is a bit more
cumbersome in aarch64 than testing against a single bit. There is a tst
instruction that takes an immediate arg but as it turns out, our bitmask
doesn't fit this. That's why I first need to load it into a tmp reg,
then test, then branch. We might want to improve this in the future:
only one of the 3 bits is ever relevant in a single run, and we might
ask the heuristics against which bit to check. But it's not very
important. (and maybe, someday, we'll reduce back to just one flag anyway).

> This moves code around in aarch64 to account for yesterday merge.
> 
> http://cr.openjdk.java.net/~rkennke/fix-merge-aarch64/webrev.00/
> 
> There are two backportable changes that fix actual issues:
> - c1_LIRGenerator.cpp to fix assert in TestSelectiveBarrierFlags.java
> makes C1 barrier generation more consistent with interpreter and other
> places
> - write-barrier checking for EVACUATION | PARTIAL | TRAVERSAL instead of
> just EVACUATION fixes partial+traversal modes
> 
> those have been broken before. the latter one doesn't easily fit jdk<11
> because code moved to ShenandoahBarrierSetAssembler.
> 
> Testing: hotspot_gc_shenandoah only fires timeouts now. need to
> investigate if it's actual bugs or just slow execution
> 
> Ok?
> 
> Roman
> 




More information about the shenandoah-dev mailing list