2285 b = null_check_oop(b, &null_ctl, true, true, true);
2286 assert(null_ctl->is_top(), "no null control here");
2287 dec_sp(1);
2288 } else if (_gvn.type(b)->speculative_always_null() &&
2289 !too_many_traps(Deoptimization::Reason_speculate_null_assert)) {
2290 inc_sp(1);
2291 b = null_assert(b);
2292 dec_sp(1);
2293 }
2294 c = _gvn.transform( new CmpPNode(b, a) );
2295 do_ifnull(btest, c);
2296 break;
2297
2298 case Bytecodes::_if_acmpeq: btest = BoolTest::eq; goto handle_if_acmp;
2299 case Bytecodes::_if_acmpne: btest = BoolTest::ne; goto handle_if_acmp;
2300 handle_if_acmp:
2301 // If this is a backwards branch in the bytecodes, add Safepoint
2302 maybe_add_safepoint(iter().get_dest());
2303 a = pop();
2304 b = pop();
2305 c = _gvn.transform( new CmpPNode(b, a) );
2306 c = optimize_cmp_with_klass(c);
2307 do_if(btest, c);
2308 break;
2309
2310 case Bytecodes::_ifeq: btest = BoolTest::eq; goto handle_ifxx;
2311 case Bytecodes::_ifne: btest = BoolTest::ne; goto handle_ifxx;
2312 case Bytecodes::_iflt: btest = BoolTest::lt; goto handle_ifxx;
2313 case Bytecodes::_ifle: btest = BoolTest::le; goto handle_ifxx;
2314 case Bytecodes::_ifgt: btest = BoolTest::gt; goto handle_ifxx;
2315 case Bytecodes::_ifge: btest = BoolTest::ge; goto handle_ifxx;
2316 handle_ifxx:
2317 // If this is a backwards branch in the bytecodes, add Safepoint
2318 maybe_add_safepoint(iter().get_dest());
2319 a = _gvn.intcon(0);
2320 b = pop();
2321 c = _gvn.transform( new CmpINode(b, a) );
2322 do_if(btest, c);
2323 break;
2324
2325 case Bytecodes::_if_icmpeq: btest = BoolTest::eq; goto handle_if_icmp;
|
2285 b = null_check_oop(b, &null_ctl, true, true, true);
2286 assert(null_ctl->is_top(), "no null control here");
2287 dec_sp(1);
2288 } else if (_gvn.type(b)->speculative_always_null() &&
2289 !too_many_traps(Deoptimization::Reason_speculate_null_assert)) {
2290 inc_sp(1);
2291 b = null_assert(b);
2292 dec_sp(1);
2293 }
2294 c = _gvn.transform( new CmpPNode(b, a) );
2295 do_ifnull(btest, c);
2296 break;
2297
2298 case Bytecodes::_if_acmpeq: btest = BoolTest::eq; goto handle_if_acmp;
2299 case Bytecodes::_if_acmpne: btest = BoolTest::ne; goto handle_if_acmp;
2300 handle_if_acmp:
2301 // If this is a backwards branch in the bytecodes, add Safepoint
2302 maybe_add_safepoint(iter().get_dest());
2303 a = pop();
2304 b = pop();
2305 c = _gvn.transform(acmp(a, b));
2306 c = optimize_cmp_with_klass(c);
2307 do_if(btest, c);
2308 break;
2309
2310 case Bytecodes::_ifeq: btest = BoolTest::eq; goto handle_ifxx;
2311 case Bytecodes::_ifne: btest = BoolTest::ne; goto handle_ifxx;
2312 case Bytecodes::_iflt: btest = BoolTest::lt; goto handle_ifxx;
2313 case Bytecodes::_ifle: btest = BoolTest::le; goto handle_ifxx;
2314 case Bytecodes::_ifgt: btest = BoolTest::gt; goto handle_ifxx;
2315 case Bytecodes::_ifge: btest = BoolTest::ge; goto handle_ifxx;
2316 handle_ifxx:
2317 // If this is a backwards branch in the bytecodes, add Safepoint
2318 maybe_add_safepoint(iter().get_dest());
2319 a = _gvn.intcon(0);
2320 b = pop();
2321 c = _gvn.transform( new CmpINode(b, a) );
2322 do_if(btest, c);
2323 break;
2324
2325 case Bytecodes::_if_icmpeq: btest = BoolTest::eq; goto handle_if_icmp;
|