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) {