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