Request for Reviews(M): 7092905: C2: Keep track of the number of dead nodes

Vladimir Kozlov vladimir.kozlov at oracle.com
Fri Nov 9 09:35:31 PST 2012


Bharadwaj,

Nils just reminded me (for his changes) that you need to fix our LogCompilation 
parsing tool to recognize new "unique='n' live_tracked='n'" values (old was 
"nodes='n'"):

src/share/tools/LogCompilation/

Also live_tracked could be simple "live".

Thanks,
Vladimir

Vladimir Kozlov wrote:
> VerifyIdealNodeCount flag should be also notproduct since it is used 
> only in debug VM.
> 
> The next assert is not needed because it duplicates assert in live_nodes():
> 
>     bool check_node_count(uint margin, const char* reason) {
>       if (unique() + margin > (uint)MaxNodeLimit) {
> +     assert(dead_node_count() <= unique(), "number of dead nodes more 
> than created");
> 
> Also don't split the assert in live_nodes() into 2 lines and maybe use 
> err_msg_res() to print _unique and _dead_node_count values. Also I think 
> it should return unsigned int type value as unique() method.
> 
> Second Compile() constructor does not set _dead_node_count(0).
> 
> count_live_nodes_by_graph_walk() and NotANode() methods are now used 
> only in debug code so put them under #ifdef ASSERT.
> 
> 
> print_missing_nodes() should call count_live_nodes_by_graph_walk() 
> instead of duplicating code. And it should print to _log itself. 
> TracePhase() code will have only call to it:
> 
> 3133   if (VerifyIdealNodeCount) {
> 3134     Compile::current()->print_missing_nodes();
> 3135   }
> 
> And do not check VerifyIdealNodeCount in print_missing_nodes() to allow 
> call it in debugger without VerifyIdealNodeCount set.
> 
> I think VerifyIdealNodeCount code should be in ~TracePhase() (end of 
> phase).
> 
> Thanks,
> Vladimir
> 
> Bharadwaj Yadavalli wrote:
>> Addressed comments on my previous RFR. Changes at
>> http://cr.openjdk.java.net/~bharadwaj/7092905/webrev_02/
>>
>> These changes are made to keep an (almost) accurate running count of 
>> the reachable (live) flow graph nodes. This will result in a more 
>> realistic node count for various phases of C2 to decide on whether to 
>> proceed with optimizations or not. Prior to these changes, C2 bails 
>> out of compilation based on the number of nodes created which 
>> typically larger than the number of reachable (live) nodes.
>>


More information about the hotspot-compiler-dev mailing list