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

Vladimir Kozlov vladimir.kozlov at oracle.com
Thu May 1 17:52:29 UTC 2014


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