RFR 8201786: Modularize interpreter GC barriers: leftovers for ARM32

Erik Osterlund erik.osterlund at oracle.com
Tue May 1 17:10:38 UTC 2018


Hi Aleksey,

1) The jobject resolve grabs the BarrierSetAssembler and calls straight into it, instead of making an access_load_at call. I would prefer using the access call.
2) The macro assembler has a bunch of G1 includes left. I hope they can be removed now.
3) The CardTableBarrierSet checks for CMS flags instead of checking whether the card table is scanned concurrently or not.
4) The template interpreter generator Reference.get intrinsic is missing an ON_WEAK_OOP_REF decorator, which is required to get the right G1 barriers for example.
5) In the template table, all do_oop_load/store accesses should be IN_HEAP. They are missing that decorator. That will cause those accesses to skip pre/post write barriers.
6) I don’t know if you want to venture into the shady domain of jni fast get field. If you do, the implicit jweak resolve in there on ARM should call BarrierSetAssembler::try_resolve_jobject_in_native. It currently clears the jweak tag in r1, which is used by the calling concention. Therefore, if the speculative load fails, then the runtime will be called as a fallback, except now thinking it is a jobject and not jweak, causing the runtime to use inappropriate barriers. I filed https://bugs.openjdk.java.net/browse/JDK-8202480 for that. So might be a different RFR I guess.

Otherwise this looks good. Thanks a lot for contributing this.

/Erik

> On 30 Apr 2018, at 11:34, Aleksey Shipilev <shade at redhat.com> wrote:
> 
> On 04/28/2018 12:01 AM, Edward Nevill wrote:
>>>>> http://cr.openjdk.java.net/~shade/8201786/webrev.01/
> 
>> So, all we can say is that it is no worse after your patch.
> 
> Good!
> 
>> On 04/27/2018 08:49 PM, Boris Ulasevich wrote:
>> I have checked your change with [JCK vm+lang subset] X [G1|SerialGC] on Raspi 2 - Passed Ok. 
> 
> Thanks for testing, Edward and Boris!
> 
> Rebased the patch for current jdk/jdk (trivial header definition clash resolved):
>  http://cr.openjdk.java.net/~shade/8201786/webrev.02/
> 
> I need JDK-8202379 to go in first, because current arm32 is broken:
>  http://mail.openjdk.java.net/pipermail/hotspot-dev/2018-April/031909.html
> 
> Thanks,
> -Aleksey
> 


More information about the aarch32-port-dev mailing list