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

Roman Kennke rkennke at redhat.com
Mon May 7 20:31:39 UTC 2018

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

  - float and double would either take XMMRegister which is not
compatible with Register
  - or load-from/store-to the floating point stack (see
  - 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


Can I please get a review?

Thanks, Roman

More information about the hotspot-dev mailing list