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