src/share/vm/c1/c1_Optimizer.cpp

changeset 4860
46f6f063b272
parent 4164
d804e148cff8
child 4947
acadb114c818
     1.1 --- a/src/share/vm/c1/c1_Optimizer.cpp	Wed Mar 20 17:04:45 2013 -0700
     1.2 +++ b/src/share/vm/c1/c1_Optimizer.cpp	Thu Mar 21 09:27:54 2013 +0100
     1.3 @@ -178,7 +178,7 @@
     1.4    // 2) substitute conditional expression
     1.5    //    with an IfOp followed by a Goto
     1.6    // cut if_ away and get node before
     1.7 -  Instruction* cur_end = if_->prev(block);
     1.8 +  Instruction* cur_end = if_->prev();
     1.9  
    1.10    // append constants of true- and false-block if necessary
    1.11    // clone constants because original block must not be destroyed
    1.12 @@ -202,7 +202,7 @@
    1.13    }
    1.14  
    1.15    // append Goto to successor
    1.16 -  ValueStack* state_before = if_->is_safepoint() ? if_->state_before() : NULL;
    1.17 +  ValueStack* state_before = if_->state_before();
    1.18    Goto* goto_ = new Goto(sux, state_before, if_->is_safepoint() || t_goto->is_safepoint() || f_goto->is_safepoint());
    1.19  
    1.20    // prepare state for Goto
    1.21 @@ -367,10 +367,11 @@
    1.22  #endif
    1.23  
    1.24          // find instruction before end & append first instruction of sux block
    1.25 -        Instruction* prev = end->prev(block);
    1.26 +        Instruction* prev = end->prev();
    1.27          Instruction* next = sux->next();
    1.28          assert(prev->as_BlockEnd() == NULL, "must not be a BlockEnd");
    1.29          prev->set_next(next);
    1.30 +        prev->fixup_block_pointers();
    1.31          sux->disconnect_from_graph();
    1.32          block->set_end(sux->end());
    1.33          // add exception handlers of deleted block, if any
    1.34 @@ -533,6 +534,8 @@
    1.35    void do_ProfileInvoke  (ProfileInvoke*   x);
    1.36    void do_RuntimeCall    (RuntimeCall*     x);
    1.37    void do_MemBar         (MemBar*          x);
    1.38 +  void do_RangeCheckPredicate(RangeCheckPredicate* x);
    1.39 +  void do_Assert         (Assert*          x);
    1.40  };
    1.41  
    1.42  
    1.43 @@ -714,6 +717,8 @@
    1.44  void NullCheckVisitor::do_ProfileInvoke  (ProfileInvoke*   x) {}
    1.45  void NullCheckVisitor::do_RuntimeCall    (RuntimeCall*     x) {}
    1.46  void NullCheckVisitor::do_MemBar         (MemBar*          x) {}
    1.47 +void NullCheckVisitor::do_RangeCheckPredicate(RangeCheckPredicate* x) {}
    1.48 +void NullCheckVisitor::do_Assert         (Assert*          x) {}
    1.49  
    1.50  
    1.51  void NullCheckEliminator::visit(Value* p) {

mercurial