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

Andrew Dinn adinn at redhat.com
Mon May 14 13:35:56 UTC 2018


On 14/05/18 11:16, Roman Kennke wrote:
> 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?

Also reviewed.

regards,


Andrew Dinn
-----------
Senior Principal Software Engineer
Red Hat UK Ltd
Registered in England and Wales under Company Registration No. 03798903
Directors: Michael Cunningham, Michael ("Mike") O'Neill, Eric Shander


More information about the hotspot-dev mailing list