1.1 --- a/src/share/vm/opto/parse.hpp Thu Mar 24 23:00:27 2011 -0700 1.2 +++ b/src/share/vm/opto/parse.hpp Thu Mar 24 23:04:36 2011 -0700 1.3 @@ -136,6 +136,7 @@ 1.4 uint _count; // how many times executed? Currently only set by _goto's 1.5 bool _is_parsed; // has this block been parsed yet? 1.6 bool _is_handler; // is this block an exception handler? 1.7 + bool _has_merged_backedge; // does this block have merged backedge? 1.8 SafePointNode* _start_map; // all values flowing into this block 1.9 MethodLivenessResult _live_locals; // lazily initialized liveness bitmap 1.10 1.11 @@ -168,6 +169,18 @@ 1.12 // True after any predecessor flows control into this block 1.13 bool is_merged() const { return _start_map != NULL; } 1.14 1.15 +#ifdef ASSERT 1.16 + // True after backedge predecessor flows control into this block 1.17 + bool has_merged_backedge() const { return _has_merged_backedge; } 1.18 + void mark_merged_backedge(Block* pred) { 1.19 + assert(is_SEL_head(), "should be loop head"); 1.20 + if (pred != NULL && is_SEL_backedge(pred)) { 1.21 + assert(is_parsed(), "block should be parsed before merging backedges"); 1.22 + _has_merged_backedge = true; 1.23 + } 1.24 + } 1.25 +#endif 1.26 + 1.27 // True when all non-exception predecessors have been parsed. 1.28 bool is_ready() const { return preds_parsed() == pred_count(); } 1.29 1.30 @@ -441,11 +454,6 @@ 1.31 } 1.32 } 1.33 1.34 - // Return true if the parser should add a loop predicate 1.35 - bool should_add_predicate(int target_bci); 1.36 - // Insert a loop predicate into the graph 1.37 - void add_predicate(); 1.38 - 1.39 // Note: Intrinsic generation routines may be found in library_call.cpp. 1.40 1.41 // Helper function to setup Ideal Call nodes