< prev index next >

src/share/vm/opto/parse2.cpp

Print this page




2265     int taken = ((ciJumpData*)data)->taken();
2266     taken = method()->scale_count(taken);
2267     target_block->set_count(taken);
2268     break;
2269   }
2270 
2271   case Bytecodes::_ifnull:    btest = BoolTest::eq; goto handle_if_null;
2272   case Bytecodes::_ifnonnull: btest = BoolTest::ne; goto handle_if_null;
2273   handle_if_null:
2274     // If this is a backwards branch in the bytecodes, add Safepoint
2275     maybe_add_safepoint(iter().get_dest());
2276     a = null();
2277     b = pop();
2278     if (!_gvn.type(b)->speculative_maybe_null() &&
2279         !too_many_traps(Deoptimization::Reason_speculate_null_check)) {
2280       inc_sp(1);
2281       Node* null_ctl = top();
2282       b = null_check_oop(b, &null_ctl, true, true, true);
2283       assert(null_ctl->is_top(), "no null control here");
2284       dec_sp(1);





2285     }
2286     c = _gvn.transform( new CmpPNode(b, a) );
2287     do_ifnull(btest, c);
2288     break;
2289 
2290   case Bytecodes::_if_acmpeq: btest = BoolTest::eq; goto handle_if_acmp;
2291   case Bytecodes::_if_acmpne: btest = BoolTest::ne; goto handle_if_acmp;
2292   handle_if_acmp:
2293     // If this is a backwards branch in the bytecodes, add Safepoint
2294     maybe_add_safepoint(iter().get_dest());
2295     a = pop();
2296     b = pop();
2297     c = _gvn.transform( new CmpPNode(b, a) );
2298     c = optimize_cmp_with_klass(c);
2299     do_if(btest, c);
2300     break;
2301 
2302   case Bytecodes::_ifeq: btest = BoolTest::eq; goto handle_ifxx;
2303   case Bytecodes::_ifne: btest = BoolTest::ne; goto handle_ifxx;
2304   case Bytecodes::_iflt: btest = BoolTest::lt; goto handle_ifxx;




2265     int taken = ((ciJumpData*)data)->taken();
2266     taken = method()->scale_count(taken);
2267     target_block->set_count(taken);
2268     break;
2269   }
2270 
2271   case Bytecodes::_ifnull:    btest = BoolTest::eq; goto handle_if_null;
2272   case Bytecodes::_ifnonnull: btest = BoolTest::ne; goto handle_if_null;
2273   handle_if_null:
2274     // If this is a backwards branch in the bytecodes, add Safepoint
2275     maybe_add_safepoint(iter().get_dest());
2276     a = null();
2277     b = pop();
2278     if (!_gvn.type(b)->speculative_maybe_null() &&
2279         !too_many_traps(Deoptimization::Reason_speculate_null_check)) {
2280       inc_sp(1);
2281       Node* null_ctl = top();
2282       b = null_check_oop(b, &null_ctl, true, true, true);
2283       assert(null_ctl->is_top(), "no null control here");
2284       dec_sp(1);
2285     } else if (_gvn.type(b)->speculative_always_null() &&
2286                !too_many_traps(Deoptimization::Reason_speculate_null_assert)) {
2287       inc_sp(1);
2288       b = null_assert(b);
2289       dec_sp(1);
2290     }
2291     c = _gvn.transform( new CmpPNode(b, a) );
2292     do_ifnull(btest, c);
2293     break;
2294 
2295   case Bytecodes::_if_acmpeq: btest = BoolTest::eq; goto handle_if_acmp;
2296   case Bytecodes::_if_acmpne: btest = BoolTest::ne; goto handle_if_acmp;
2297   handle_if_acmp:
2298     // If this is a backwards branch in the bytecodes, add Safepoint
2299     maybe_add_safepoint(iter().get_dest());
2300     a = pop();
2301     b = pop();
2302     c = _gvn.transform( new CmpPNode(b, a) );
2303     c = optimize_cmp_with_klass(c);
2304     do_if(btest, c);
2305     break;
2306 
2307   case Bytecodes::_ifeq: btest = BoolTest::eq; goto handle_ifxx;
2308   case Bytecodes::_ifne: btest = BoolTest::ne; goto handle_ifxx;
2309   case Bytecodes::_iflt: btest = BoolTest::lt; goto handle_ifxx;


< prev index next >