RFR(XS): 8202123: C2 Crash in Node::in(unsigned int) const+0x14
Tobias Hartmann
tobias.hartmann at oracle.com
Tue Jul 10 07:33:27 UTC 2018
On 09.07.2018 19:29, Vladimir Kozlov wrote:
>> The allocation is found to be non escaping but in
>> ConnectionGraph::adjust_scalar_replaceable_state():
>>
>> // 4. An object is not scalar replaceable if it has a field with unknown
>> // offset (array's element is accessed in loop).
>> if (offset == Type::OffsetBot) {
>> jobj->set_scalar_replaceable(false);
>> return;
>> }
>>
>> so it's set to non scalar replaceable which prevents
>> ConnectionGraph::split_unique_types() from running and an instance_id to
>> be assigned to the allocation. MemNode::optimize_memory_chain() doesn't
>> seem to do much unless a pointer is is_known_instance_field() which
>> requires an _instance_id.
>
> It was mostly done to reduce time spent in EA. I think nothing prevent us from assigning
> _instance_id to any *non-escaping* allocation if it will help us to optimize code (for value types
> for example).
Thanks for the explanation. All tests passed.
Best regards,
Tobias
More information about the hotspot-compiler-dev
mailing list