RFR(XS): 8202123: C2 Crash in Node::in(unsigned int) const+0x14
Vladimir Kozlov
vladimir.kozlov at oracle.com
Mon Jul 9 17:29:40 UTC 2018
On 7/9/18 7:14 AM, Roland Westrelin wrote:
>
> Hi Tobias,
>
> Thanks for looking at this.
>
>> Why are we not able to figure out that counts != arr? Shouldn't EA
>> even remove the allocation and scalar replace counts?
>
> 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,
Vladimir
>
> Roland.
>
More information about the hotspot-compiler-dev
mailing list