RFR: JDK-8200623: Primitive heap access for interpreter BarrierSetAssembler/x86

Roman Kennke rkennke at redhat.com
Mon May 14 10:16:24 UTC 2018


Am 07.05.2018 um 22:31 schrieb Roman Kennke:
> JDK-8199417 added better modularization for interpreter barriers.
> Shenandoah and possibly future GCs also need barriers for primitive access.
> 
> Some notes on implementation:
> - float/double/long access produced some headaches for the following
> reasons:
> 
>   - float and double would either take XMMRegister which is not
> compatible with Register
>   - or load-from/store-to the floating point stack (see
> MacroAssembler::load/store_float/double)
>   - long access on x86_32 would load-into/store-from 2 registers, or
> else use a trick via the floating point stack to do atomic access
> 
> None of this seemed easy/nice to do with the API. I helped myself by
> accepting noreg as dst/src argument, which means the corresponding tos
> (i.e. ltos, ftos, dtos) and the BSA would then access from/to
> xmm0/float-stack in case of float/double or the double-reg/float-stack
> in case of long/32bit, which is all that we ever need.
> 
> I'm passing MO_RELAXED to long access calls to hint that we want atomic
> access or not. I hope that is ok.
> 
> 
> Tested: hotspot/jtreg:tier1
> 
> http://cr.openjdk.java.net/~rkennke/JDK-8200623/webrev.00/
> 
> Can I please get a review?
> 
> Thanks, Roman
> 

Ping?

Thanks, Roman



More information about the hotspot-dev mailing list