RFR (M): 8039298: assert(base == NULL || t_adr->isa_rawptr() || ...
vladimir.kozlov at oracle.com
Thu May 1 17:52:29 UTC 2014
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
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.
More information about the hotspot-compiler-dev