RFR (M): 8039298: assert(base == NULL || t_adr->isa_rawptr() || ...

Vladimir Kozlov vladimir.kozlov at oracle.com
Fri May 2 04:25:38 UTC 2014

On 5/1/14 8:59 PM, Christian Thalinger wrote:
> *+                    use->is_Loop() && !use->is_Root() &&       // Root is also Loop*
> Is that correct?

What do you mean?

class RootNode : public LoopNode {

And I don't want to kill Root.


> On May 1, 2014, at 7:52 AM, Vladimir Kozlov <vladimir.kozlov at oracle.com <mailto:vladimir.kozlov at oracle.com>> wrote:
>> http://cr.openjdk.java.net/~kvn/8039298/webrev
>> https://bugs.openjdk.java.net/browse/JDK-8039298
>> This assert was added for 6711117 when we observed "NULL+off" non-raw address type. It was fixed by delaying a memory
>> node processing if its inputs are on IGVN worklist or address types do not match.
>> Recently we start hitting this assert for big graphs when control path become dead but due to the nodes order in IGVN
>> worklist data nodes on dead path were processed first. As result we get TOP or NULL dead address base for memory nodes.
>> I am suggesting 2 ways solution.
>> First, convert the assert into the runtime check to skip IGVN optimizations for such memory nodes. I ran performance
>> tests and did not see regression.
>> Second, eliminate dead nodes more aggressively. The method kill_dead_code() will eliminate dead loops (except
>> irreducible), dead regions and nodes which have only TOP or NULL inputs. I have to add the code to mark presence of
>> irreducible loops for that.
>> Test ctw, jtreg, jprt.
>> Thanks,
>> Vladimir

More information about the hotspot-compiler-dev mailing list