Merge

Tue, 19 Mar 2013 16:31:10 -0700

author
morris
date
Tue, 19 Mar 2013 16:31:10 -0700
changeset 4775
1275835a4ccc
parent 4772
80208f353616
parent 4774
3b9368710f08
child 4776
41340544e182

Merge

     1.1 --- a/src/share/vm/oops/generateOopMap.cpp	Tue Mar 19 10:56:33 2013 -0700
     1.2 +++ b/src/share/vm/oops/generateOopMap.cpp	Tue Mar 19 16:31:10 2013 -0700
     1.3 @@ -762,6 +762,7 @@
     1.4  // monitor matching is purely informational and doesn't say anything
     1.5  // about the correctness of the code.
     1.6  void GenerateOopMap::merge_state_into_bb(BasicBlock *bb) {
     1.7 +  guarantee(bb != NULL, "null basicblock");
     1.8    assert(bb->is_alive(), "merging state into a dead basicblock");
     1.9  
    1.10    if (_stack_top == bb->_stack_top) {
    1.11 @@ -1189,6 +1190,7 @@
    1.12  
    1.13        if (start_pc <= bci && bci < end_pc) {
    1.14          BasicBlock *excBB = get_basic_block_at(handler_pc);
    1.15 +        guarantee(excBB != NULL, "no basic block for exception");
    1.16          CellTypeState *excStk = excBB->stack();
    1.17          CellTypeState *cOpStck = stack();
    1.18          CellTypeState cOpStck_0 = cOpStck[0];
    1.19 @@ -1803,6 +1805,7 @@
    1.20      // possibility that this bytecode will throw an
    1.21      // exception.
    1.22      BasicBlock* bb = get_basic_block_containing(bci);
    1.23 +    guarantee(bb != NULL, "no basic block for bci");
    1.24      bb->set_changed(true);
    1.25      bb->_monitor_top = bad_monitors;
    1.26  
    1.27 @@ -2190,6 +2193,7 @@
    1.28  
    1.29    // Find basicblock and report results
    1.30    BasicBlock* bb = get_basic_block_containing(bci);
    1.31 +  guarantee(bb != NULL, "no basic block for bci");
    1.32    assert(bb->is_reachable(), "getting result from unreachable basicblock");
    1.33    bb->set_changed(true);
    1.34    interp_bb(bb);
     2.1 --- a/src/share/vm/opto/loopnode.hpp	Tue Mar 19 10:56:33 2013 -0700
     2.2 +++ b/src/share/vm/opto/loopnode.hpp	Tue Mar 19 16:31:10 2013 -0700
     2.3 @@ -603,7 +603,10 @@
     2.4    }
     2.5  
     2.6  public:
     2.7 -  bool has_node( Node* n ) const { return _nodes[n->_idx] != NULL; }
     2.8 +  bool has_node( Node* n ) const {
     2.9 +    guarantee(n != NULL, "No Node.");
    2.10 +    return _nodes[n->_idx] != NULL;
    2.11 +  }
    2.12    // check if transform created new nodes that need _ctrl recorded
    2.13    Node *get_late_ctrl( Node *n, Node *early );
    2.14    Node *get_early_ctrl( Node *n );
    2.15 @@ -737,7 +740,8 @@
    2.16      return n;
    2.17    }
    2.18    uint dom_depth(Node* d) const {
    2.19 -    assert(d->_idx < _idom_size, "");
    2.20 +    guarantee(d != NULL, "Null dominator info.");
    2.21 +    guarantee(d->_idx < _idom_size, "");
    2.22      return _dom_depth[d->_idx];
    2.23    }
    2.24    void set_idom(Node* d, Node* n, uint dom_depth);
     3.1 --- a/src/share/vm/opto/loopopts.cpp	Tue Mar 19 10:56:33 2013 -0700
     3.2 +++ b/src/share/vm/opto/loopopts.cpp	Tue Mar 19 16:31:10 2013 -0700
     3.3 @@ -232,7 +232,11 @@
     3.4    // Loop predicates may have depending checks which should not
     3.5    // be skipped. For example, range check predicate has two checks
     3.6    // for lower and upper bounds.
     3.7 -  ProjNode* unc_proj = iff->as_If()->proj_out(1 - dp->as_Proj()->_con)->as_Proj();
     3.8 +  if (dp == NULL)
     3.9 +    return;
    3.10 +
    3.11 +  ProjNode* dp_proj  = dp->as_Proj();
    3.12 +  ProjNode* unc_proj = iff->as_If()->proj_out(1 - dp_proj->_con)->as_Proj();
    3.13    if (exclude_loop_predicate &&
    3.14        is_uncommon_trap_proj(unc_proj, Deoptimization::Reason_predicate))
    3.15      return; // Let IGVN transformation change control dependence.
    3.16 @@ -866,8 +870,11 @@
    3.17  
    3.18      // Now split the bool up thru the phi
    3.19      Node *bolphi = split_thru_phi( bol, n_ctrl, -1 );
    3.20 +    guarantee(bolphi != NULL, "null boolean phi node");
    3.21 +
    3.22      _igvn.replace_node( bol, bolphi );
    3.23      assert( iff->in(1) == bolphi, "" );
    3.24 +
    3.25      if( bolphi->Value(&_igvn)->singleton() )
    3.26        return;
    3.27  
    3.28 @@ -1628,6 +1635,7 @@
    3.29  //------------------------------ short_circuit_if -------------------------------------
    3.30  // Force the iff control output to be the live_proj
    3.31  Node* PhaseIdealLoop::short_circuit_if(IfNode* iff, ProjNode* live_proj) {
    3.32 +  guarantee(live_proj != NULL, "null projection");
    3.33    int proj_con = live_proj->_con;
    3.34    assert(proj_con == 0 || proj_con == 1, "false or true projection");
    3.35    Node *con = _igvn.intcon(proj_con);
    3.36 @@ -1686,6 +1694,7 @@
    3.37    set_idom(proj, new_if, ddepth);
    3.38  
    3.39    ProjNode* new_exit = proj_clone(other_proj, new_if)->as_Proj();
    3.40 +  guarantee(new_exit != NULL, "null exit node");
    3.41    register_node(new_exit, get_loop(other_proj), new_if, ddepth);
    3.42  
    3.43    return new_exit;
    3.44 @@ -1793,7 +1802,10 @@
    3.45    int stride = stride_of_possible_iv(if_cmpu);
    3.46    if (stride == 0) return NULL;
    3.47  
    3.48 -  ProjNode* lp_continue = stay_in_loop(if_cmpu, loop)->as_Proj();
    3.49 +  Node* lp_proj = stay_in_loop(if_cmpu, loop);
    3.50 +  guarantee(lp_proj != NULL, "null loop node");
    3.51 +
    3.52 +  ProjNode* lp_continue = lp_proj->as_Proj();
    3.53    ProjNode* lp_exit     = if_cmpu->proj_out(!lp_continue->is_IfTrue())->as_Proj();
    3.54  
    3.55    Node* limit = NULL;
    3.56 @@ -1805,6 +1817,7 @@
    3.57    }
    3.58    // Create a new region on the exit path
    3.59    RegionNode* reg = insert_region_before_proj(lp_exit);
    3.60 +  guarantee(reg != NULL, "null region node");
    3.61  
    3.62    // Clone the if-cmpu-true-false using a signed compare
    3.63    BoolTest::mask rel_i = stride > 0 ? bol->_test._test : BoolTest::ge;

mercurial