RFR: JDK-8203172: Primitive heap access for interpreter BarrierSetAssembler/aarch64
Roman Kennke
rkennke at redhat.com
Mon May 14 20:23:12 UTC 2018
Similar to x86
(http://mail.openjdk.java.net/pipermail/hotspot-dev/2018-May/032114.html)
here comes the primitive heap access changes for aarch64:
http://cr.openjdk.java.net/~rkennke/JDK-8203172/webrev.00/
Some notes:
- array access used to compute base_obj + index, and then use indexed
addressing with base_offset. This means we cannot get base_obj in the
BarrierSetAssembler API, but we need that, e.g. for resolving the target
object via forwarding pointer. I changed (base_obj+index)+base_offset to
base_obj+(index+base_offset) in all the relevant places.
- in jniFastGetField_aarch64.cpp, we are using a trick to ensure correct
ordering field-load with the load of the safepoint counter: we make them
address dependend. For float and double loads this meant to load the
value as int/long, and then later moving those into v0. This doesn't
work when going through the BarrierSetAssembler API: it loads straight
to v0. Instead I am inserting a LoadLoad membar for float/double (which
should be rare enough anyway).
Other than that it's pretty much analogous to x86.
Testing: no regressions in hotspot/tier1
Can I please get a review?
Thanks, Roman
More information about the hotspot-dev
mailing list