159 bool _is_parsed; // has this block been parsed yet? |
159 bool _is_parsed; // has this block been parsed yet? |
160 bool _is_handler; // is this block an exception handler? |
160 bool _is_handler; // is this block an exception handler? |
161 bool _has_merged_backedge; // does this block have merged backedge? |
161 bool _has_merged_backedge; // does this block have merged backedge? |
162 SafePointNode* _start_map; // all values flowing into this block |
162 SafePointNode* _start_map; // all values flowing into this block |
163 MethodLivenessResult _live_locals; // lazily initialized liveness bitmap |
163 MethodLivenessResult _live_locals; // lazily initialized liveness bitmap |
|
164 bool _has_predicates; // Were predicates added before parsing of the loop head? |
164 |
165 |
165 int _num_successors; // Includes only normal control flow. |
166 int _num_successors; // Includes only normal control flow. |
166 int _all_successors; // Include exception paths also. |
167 int _all_successors; // Include exception paths also. |
167 Block** _successors; |
168 Block** _successors; |
168 |
169 |
200 } |
201 } |
201 #endif |
202 #endif |
202 |
203 |
203 // True when all non-exception predecessors have been parsed. |
204 // True when all non-exception predecessors have been parsed. |
204 bool is_ready() const { return preds_parsed() == pred_count(); } |
205 bool is_ready() const { return preds_parsed() == pred_count(); } |
|
206 |
|
207 bool has_predicates() const { return _has_predicates; } |
|
208 void set_has_predicates() { _has_predicates = true; } |
205 |
209 |
206 int num_successors() const { return _num_successors; } |
210 int num_successors() const { return _num_successors; } |
207 int all_successors() const { return _all_successors; } |
211 int all_successors() const { return _all_successors; } |
208 Block* successor_at(int i) const { |
212 Block* successor_at(int i) const { |
209 assert((uint)i < (uint)all_successors(), ""); |
213 assert((uint)i < (uint)all_successors(), ""); |
550 void adjust_map_after_if(BoolTest::mask btest, Node* c, float prob, |
554 void adjust_map_after_if(BoolTest::mask btest, Node* c, float prob, |
551 Block* path, Block* other_path); |
555 Block* path, Block* other_path); |
552 void sharpen_type_after_if(BoolTest::mask btest, |
556 void sharpen_type_after_if(BoolTest::mask btest, |
553 Node* con, const Type* tcon, |
557 Node* con, const Type* tcon, |
554 Node* val, const Type* tval); |
558 Node* val, const Type* tval); |
|
559 void maybe_add_predicate_after_if(Block* path); |
555 IfNode* jump_if_fork_int(Node* a, Node* b, BoolTest::mask mask, float prob, float cnt); |
560 IfNode* jump_if_fork_int(Node* a, Node* b, BoolTest::mask mask, float prob, float cnt); |
556 Node* jump_if_join(Node* iffalse, Node* iftrue); |
561 Node* jump_if_join(Node* iffalse, Node* iftrue); |
557 void jump_if_true_fork(IfNode *ifNode, int dest_bci_if_true, int prof_table_index, bool unc); |
562 void jump_if_true_fork(IfNode *ifNode, int dest_bci_if_true, int prof_table_index, bool unc); |
558 void jump_if_false_fork(IfNode *ifNode, int dest_bci_if_false, int prof_table_index, bool unc); |
563 void jump_if_false_fork(IfNode *ifNode, int dest_bci_if_false, int prof_table_index, bool unc); |
559 void jump_if_always_fork(int dest_bci_if_true, int prof_table_index, bool unc); |
564 void jump_if_always_fork(int dest_bci_if_true, int prof_table_index, bool unc); |