RFR: JDK-8204941: Refactor TemplateTable::_new to use MacroAssembler helpers for tlab and eden

coleen.phillimore at oracle.com coleen.phillimore at oracle.com
Mon Jun 18 20:09:23 UTC 2018

This looks good to me as well.  Except sparc and other platforms still 
have the duplicated tlab and eden allocation in TemplateTable::_new(), 
but aarch64 has code similar to this.  It seems like something we could 
not clean up unless we need to.


On 6/15/18 12:49 PM, Vladimir Kozlov wrote:
> Looks good to me.
> Thanks,
> Vladimir
> On 6/13/18 4:53 AM, Roman Kennke wrote:
>> TemplateTable::_new (in x86) currently has its own implementation of
>> tlab and eden allocation paths, which are basically identical to the
>> ones in MacroAssembler::tlab_allocate() and
>> MacroAssembler::eden_allocate(). TemplateTable should use the
>> MacroAssembler helpers to avoid duplication.
>> The MacroAssembler version of eden_allocate() features an additional
>> bounds check to prevent wraparound of obj-end. I am not sure if/how that
>> can ever happen and if/how this could be exploited, but it might be
>> relevant. In any case, I think it's a good thing to include it in the
>> interpreter too.
>> The refactoring can be taken further: fold incr_allocated_bytes() into
>> eden_allocate() (they always come in pairs), probably fold
>> tlab_allocate() and eden_allocate() into a single helper (they also seem
>> to come in pairs mostly), also fold initialize_object/initialize_header
>> sections too, but 1. I wanted to keep this manageable and 2. I also want
>> to factor the tlab_allocate/eden_allocate paths into BarrierSetAssembler
>> as next step (which should also include at least some of the mentioned
>> unifications).
>> http://cr.openjdk.java.net/~rkennke/JDK-8204941/webrev.00/
>> Passes tier1_hotspot
>> Can I please get a review?
>> Roman

More information about the hotspot-dev mailing list