src/share/vm/opto/parse.hpp

changeset 2665
9dc311b8473e
parent 2314
f95d63e2154a
child 2667
0e3ed5a14f73
     1.1 --- a/src/share/vm/opto/parse.hpp	Mon Mar 21 02:30:49 2011 -0700
     1.2 +++ b/src/share/vm/opto/parse.hpp	Mon Mar 21 11:28:14 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

mercurial