src/hotspot/share/opto/parse.hpp
changeset 50623 5209d8a6303e
parent 49877 d84f06a0cae1
child 53244 9807daeb47c4
--- a/src/hotspot/share/opto/parse.hpp	Tue Jun 19 08:44:31 2018 +0200
+++ b/src/hotspot/share/opto/parse.hpp	Tue Jun 19 09:08:39 2018 +0200
@@ -161,6 +161,7 @@
     bool               _has_merged_backedge; // does this block have merged backedge?
     SafePointNode*     _start_map;      // all values flowing into this block
     MethodLivenessResult _live_locals;  // lazily initialized liveness bitmap
+    bool               _has_predicates; // Were predicates added before parsing of the loop head?
 
     int                _num_successors; // Includes only normal control flow.
     int                _all_successors; // Include exception paths also.
@@ -203,6 +204,9 @@
     // True when all non-exception predecessors have been parsed.
     bool is_ready() const                  { return preds_parsed() == pred_count(); }
 
+    bool has_predicates() const            { return _has_predicates; }
+    void set_has_predicates()              { _has_predicates = true; }
+
     int num_successors() const             { return _num_successors; }
     int all_successors() const             { return _all_successors; }
     Block* successor_at(int i) const {
@@ -552,6 +556,7 @@
   void    sharpen_type_after_if(BoolTest::mask btest,
                                 Node* con, const Type* tcon,
                                 Node* val, const Type* tval);
+  void    maybe_add_predicate_after_if(Block* path);
   IfNode* jump_if_fork_int(Node* a, Node* b, BoolTest::mask mask, float prob, float cnt);
   Node*   jump_if_join(Node* iffalse, Node* iftrue);
   void    jump_if_true_fork(IfNode *ifNode, int dest_bci_if_true, int prof_table_index, bool unc);