[9] RFR (XS): 8036667: "assert(adr->is_AddP() && adr->in(AddPNode::Offset)->is_Con()) failed: offset is a constant" with FoldStableValues on

Vladimir Ivanov vladimir.x.ivanov at oracle.com
Wed Mar 5 18:01:22 PST 2014

> Why you did changes in extract_uncommon_trap_request()? How we can get
> phi there?
It's a fix for a crash w/ -XX:+TraceIterGVN.
Will file a separate bug to track it, as you suggested.

> What is 'off' value in this case? How you can get constant value from C2
> type system (tp->offset()) but not from looking on ideal nodes?
Good point! My fix isn't correct in some cases.

In case only 1 phi input has non-top type, it should be safe to use 
offset. But when at least 2 inputs are live, it's not correct (same 
offset, but different address).

So, I need to ignore phi case completely.

Updated fix: http://cr.openjdk.java.net/~vlivanov/8036667/webrev.01/

Best regards,
Vladimir Ivanov

> On 3/5/14 4:26 PM, Vladimir Ivanov wrote:
>> http://cr.openjdk.java.net/~vlivanov/8036667/webrev.00/
>> https://bugs.openjdk.java.net/browse/JDK-8036667
>> 10 lines changed: 8 ins; 0 del; 2 mod
>> The assert is too strong. It doesn't take into account the case when
>> constant offset comes from phi node.
>> The fix is to relax the assertion by skipping phi node case. I decided
>> to keep it simple and avoided doing deep verification of the graph.
>> Also, fixed a crash w/ -XX:+TraceIterGVN (see callnode.cpp).
>> Testing: failing tests.
>> Thanks!
>> Best regards,
>> Vladimir Ivanov

More information about the hotspot-compiler-dev mailing list