2730 inc_sp(1);
2731 Node* null_ctl = top();
2732 b = null_check_oop(b, &null_ctl, true, true, true);
2733 assert(null_ctl->is_top(), "no null control here");
2734 dec_sp(1);
2735 } else if (_gvn.type(b)->speculative_always_null() &&
2736 !too_many_traps(Deoptimization::Reason_speculate_null_assert)) {
2737 inc_sp(1);
2738 b = null_assert(b);
2739 dec_sp(1);
2740 }
2741 c = _gvn.transform( new CmpPNode(b, a) );
2742 do_ifnull(btest, c);
2743 break;
2744
2745 case Bytecodes::_if_acmpeq: btest = BoolTest::eq; goto handle_if_acmp;
2746 case Bytecodes::_if_acmpne: btest = BoolTest::ne; goto handle_if_acmp;
2747 handle_if_acmp:
2748 // If this is a backwards branch in the bytecodes, add Safepoint
2749 maybe_add_safepoint(iter().get_dest());
2750 a = pop();
2751 b = pop();
2752 c = _gvn.transform( new CmpPNode(b, a) );
2753 c = optimize_cmp_with_klass(c);
2754 do_if(btest, c);
2755 break;
2756
2757 case Bytecodes::_ifeq: btest = BoolTest::eq; goto handle_ifxx;
2758 case Bytecodes::_ifne: btest = BoolTest::ne; goto handle_ifxx;
2759 case Bytecodes::_iflt: btest = BoolTest::lt; goto handle_ifxx;
2760 case Bytecodes::_ifle: btest = BoolTest::le; goto handle_ifxx;
2761 case Bytecodes::_ifgt: btest = BoolTest::gt; goto handle_ifxx;
2762 case Bytecodes::_ifge: btest = BoolTest::ge; goto handle_ifxx;
2763 handle_ifxx:
2764 // If this is a backwards branch in the bytecodes, add Safepoint
2765 maybe_add_safepoint(iter().get_dest());
2766 a = _gvn.intcon(0);
2767 b = pop();
2768 c = _gvn.transform( new CmpINode(b, a) );
2769 do_if(btest, c);
2770 break;
2771
|
2730 inc_sp(1);
2731 Node* null_ctl = top();
2732 b = null_check_oop(b, &null_ctl, true, true, true);
2733 assert(null_ctl->is_top(), "no null control here");
2734 dec_sp(1);
2735 } else if (_gvn.type(b)->speculative_always_null() &&
2736 !too_many_traps(Deoptimization::Reason_speculate_null_assert)) {
2737 inc_sp(1);
2738 b = null_assert(b);
2739 dec_sp(1);
2740 }
2741 c = _gvn.transform( new CmpPNode(b, a) );
2742 do_ifnull(btest, c);
2743 break;
2744
2745 case Bytecodes::_if_acmpeq: btest = BoolTest::eq; goto handle_if_acmp;
2746 case Bytecodes::_if_acmpne: btest = BoolTest::ne; goto handle_if_acmp;
2747 handle_if_acmp:
2748 // If this is a backwards branch in the bytecodes, add Safepoint
2749 maybe_add_safepoint(iter().get_dest());
2750 a = access_resolve(pop(), 0);
2751 b = access_resolve(pop(), 0);
2752 c = _gvn.transform( new CmpPNode(b, a) );
2753 c = optimize_cmp_with_klass(c);
2754 do_if(btest, c);
2755 break;
2756
2757 case Bytecodes::_ifeq: btest = BoolTest::eq; goto handle_ifxx;
2758 case Bytecodes::_ifne: btest = BoolTest::ne; goto handle_ifxx;
2759 case Bytecodes::_iflt: btest = BoolTest::lt; goto handle_ifxx;
2760 case Bytecodes::_ifle: btest = BoolTest::le; goto handle_ifxx;
2761 case Bytecodes::_ifgt: btest = BoolTest::gt; goto handle_ifxx;
2762 case Bytecodes::_ifge: btest = BoolTest::ge; goto handle_ifxx;
2763 handle_ifxx:
2764 // If this is a backwards branch in the bytecodes, add Safepoint
2765 maybe_add_safepoint(iter().get_dest());
2766 a = _gvn.intcon(0);
2767 b = pop();
2768 c = _gvn.transform( new CmpINode(b, a) );
2769 do_if(btest, c);
2770 break;
2771
|