693 if ( eti == NULL ) { |
693 if ( eti == NULL ) { |
694 // there must be one pointer among the operands |
694 // there must be one pointer among the operands |
695 guarantee(tptr == NULL, "must be only one pointer operand"); |
695 guarantee(tptr == NULL, "must be only one pointer operand"); |
696 tptr = et->isa_oopptr(); |
696 tptr = et->isa_oopptr(); |
697 guarantee(tptr != NULL, "non-int operand must be pointer"); |
697 guarantee(tptr != NULL, "non-int operand must be pointer"); |
|
698 if (tptr->higher_equal(tp->add_offset(tptr->offset()))) |
|
699 tp = tptr; // Set more precise type for bailout |
698 continue; |
700 continue; |
699 } |
701 } |
700 if ( eti->_hi != eti->_lo ) goto bottom_out; |
702 if ( eti->_hi != eti->_lo ) goto bottom_out; |
701 offset += eti->_lo; |
703 offset += eti->_lo; |
702 } |
704 } |