< prev index next >

src/java.xml/share/classes/com/sun/org/apache/bcel/internal/generic/ReturnaddressType.java

Print this page

        

*** 19,75 **** * limitations under the License. */ package com.sun.org.apache.bcel.internal.generic; ! import com.sun.org.apache.bcel.internal.Constants; ! import java.util.Objects; /** * Returnaddress, the type JSR or JSR_W instructions push upon the stack. * * see vmspec2 3.3.3 ! * @author <A HREF="http://www.inf.fu-berlin.de/~ehaase">Enver Haase</A> */ public class ReturnaddressType extends Type { public static final ReturnaddressType NO_TARGET = new ReturnaddressType(); private InstructionHandle returnTarget; /** * A Returnaddress [that doesn't know where to return to]. */ ! private ReturnaddressType(){ ! super(Constants.T_ADDRESS, "<return address>"); } /** * Creates a ReturnaddressType object with a target. */ ! public ReturnaddressType(InstructionHandle returnTarget) { ! super(Constants.T_ADDRESS, "<return address targeting "+returnTarget+">"); this.returnTarget = returnTarget; } @Override public int hashCode() { ! return Objects.hashCode(this.returnTarget); } /** * Returns if the two Returnaddresses refer to the same target. */ @Override ! public boolean equals(Object rat){ ! if(!(rat instanceof ReturnaddressType)) return false; - - return ((ReturnaddressType)rat).returnTarget.equals(this.returnTarget); } /** * @return the target of this ReturnaddressType */ ! public InstructionHandle getTarget(){ return returnTarget; } } --- 19,88 ---- * limitations under the License. */ package com.sun.org.apache.bcel.internal.generic; ! import com.sun.org.apache.bcel.internal.Const; /** * Returnaddress, the type JSR or JSR_W instructions push upon the stack. * * see vmspec2 3.3.3 ! * @version $Id: ReturnaddressType.java 1749603 2016-06-21 20:50:19Z ggregory $ */ public class ReturnaddressType extends Type { public static final ReturnaddressType NO_TARGET = new ReturnaddressType(); private InstructionHandle returnTarget; + /** * A Returnaddress [that doesn't know where to return to]. */ ! private ReturnaddressType() { ! super(Const.T_ADDRESS, "<return address>"); } + /** * Creates a ReturnaddressType object with a target. */ ! public ReturnaddressType(final InstructionHandle returnTarget) { ! super(Const.T_ADDRESS, "<return address targeting " + returnTarget + ">"); this.returnTarget = returnTarget; } + + /** @return a hash code value for the object. + */ @Override public int hashCode() { ! if (returnTarget == null) { ! return 0; ! } ! return returnTarget.hashCode(); } + /** * Returns if the two Returnaddresses refer to the same target. */ @Override ! public boolean equals( final Object rat ) { ! if (!(rat instanceof ReturnaddressType)) { return false; } + final ReturnaddressType that = (ReturnaddressType) rat; + if (this.returnTarget == null || that.returnTarget == null) { + return that.returnTarget == this.returnTarget; + } + return that.returnTarget.equals(this.returnTarget); + } + /** * @return the target of this ReturnaddressType */ ! public InstructionHandle getTarget() { return returnTarget; } }
< prev index next >