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.
Vladimir
>
> 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