jaxp/src/com/sun/org/apache/bcel/internal/generic/ReturnaddressType.java

Print this page




  41  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  42  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  43  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  44  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  45  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  46  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  47  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  48  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  49  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  50  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  51  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  52  * SUCH DAMAGE.
  53  * ====================================================================
  54  *
  55  * This software consists of voluntary contributions made by many
  56  * individuals on behalf of the Apache Software Foundation.  For more
  57  * information on the Apache Software Foundation, please see
  58  * <http://www.apache.org/>.
  59  */
  60 import com.sun.org.apache.bcel.internal.Constants;
  61 import com.sun.org.apache.bcel.internal.generic.InstructionHandle;
  62 
  63 /**
  64  * Returnaddress, the type JSR or JSR_W instructions push upon the stack.
  65  *
  66  * see vmspec2 3.3.3
  67  * @author  <A HREF="http://www.inf.fu-berlin.de/~ehaase">Enver Haase</A>
  68  */
  69 public class ReturnaddressType extends Type {
  70 
  71   public static final ReturnaddressType NO_TARGET = new ReturnaddressType();
  72   private InstructionHandle returnTarget;
  73 
  74   /**
  75    * A Returnaddress [that doesn't know where to return to].
  76    */
  77   private ReturnaddressType(){
  78     super(Constants.T_ADDRESS, "<return address>");
  79   }
  80 
  81   /**
  82    * Creates a ReturnaddressType object with a target.
  83    */
  84   public ReturnaddressType(InstructionHandle returnTarget) {
  85     super(Constants.T_ADDRESS, "<return address targeting "+returnTarget+">");
  86         this.returnTarget = returnTarget;
  87   }
  88 





  89   /**
  90    * Returns if the two Returnaddresses refer to the same target.
  91    */

  92   public boolean equals(Object rat){
  93     if(!(rat instanceof ReturnaddressType))
  94       return false;
  95 
  96     return ((ReturnaddressType)rat).returnTarget.equals(this.returnTarget);
  97   }
  98 
  99   /**
 100    * @return the target of this ReturnaddressType
 101    */
 102   public InstructionHandle getTarget(){
 103     return returnTarget;
 104   }
 105 }


  41  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  42  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  43  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  44  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  45  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  46  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  47  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  48  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  49  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  50  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  51  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  52  * SUCH DAMAGE.
  53  * ====================================================================
  54  *
  55  * This software consists of voluntary contributions made by many
  56  * individuals on behalf of the Apache Software Foundation.  For more
  57  * information on the Apache Software Foundation, please see
  58  * <http://www.apache.org/>.
  59  */
  60 import com.sun.org.apache.bcel.internal.Constants;
  61 import java.util.Objects;
  62 
  63 /**
  64  * Returnaddress, the type JSR or JSR_W instructions push upon the stack.
  65  *
  66  * see vmspec2 3.3.3
  67  * @author  <A HREF="http://www.inf.fu-berlin.de/~ehaase">Enver Haase</A>
  68  */
  69 public class ReturnaddressType extends Type {
  70 
  71   public static final ReturnaddressType NO_TARGET = new ReturnaddressType();
  72   private InstructionHandle returnTarget;
  73 
  74   /**
  75    * A Returnaddress [that doesn't know where to return to].
  76    */
  77   private ReturnaddressType(){
  78     super(Constants.T_ADDRESS, "<return address>");
  79   }
  80 
  81   /**
  82    * Creates a ReturnaddressType object with a target.
  83    */
  84   public ReturnaddressType(InstructionHandle returnTarget) {
  85     super(Constants.T_ADDRESS, "<return address targeting "+returnTarget+">");
  86         this.returnTarget = returnTarget;
  87   }
  88 
  89   @Override
  90   public int hashCode() {
  91       return Objects.hashCode(this.returnTarget);
  92   }
  93 
  94   /**
  95    * Returns if the two Returnaddresses refer to the same target.
  96    */
  97   @Override
  98   public boolean equals(Object rat){
  99     if(!(rat instanceof ReturnaddressType))
 100       return false;
 101 
 102     return ((ReturnaddressType)rat).returnTarget.equals(this.returnTarget);
 103   }
 104 
 105   /**
 106    * @return the target of this ReturnaddressType
 107    */
 108   public InstructionHandle getTarget(){
 109     return returnTarget;
 110   }
 111 }