< prev index next >

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

Print this page

        

*** 19,53 **** * limitations under the License. */ package com.sun.org.apache.bcel.internal.generic; - /** * Super class for JSR - Jump to subroutine * ! * @author <A HREF="mailto:markus.dahm@berlin.de">M. Dahm</A> */ ! public abstract class JsrInstruction extends BranchInstruction ! implements UnconditionalBranch, TypedInstruction, StackProducer ! { ! JsrInstruction(short opcode, InstructionHandle target) { super(opcode, target); } /** * Empty constructor needed for the Class.newInstance() statement in * Instruction.readInstruction(). Not to be used otherwise. */ ! JsrInstruction(){} /** @return return address type */ ! public Type getType(ConstantPoolGen cp) { return new ReturnaddressType(physicalSuccessor()); } /** * Returns an InstructionHandle to the physical successor * of this JsrInstruction. <B>For this method to work, * this JsrInstruction object must not be shared between * multiple InstructionHandle objects!</B> --- 19,57 ---- * limitations under the License. */ package com.sun.org.apache.bcel.internal.generic; /** * Super class for JSR - Jump to subroutine * ! * @version $Id: JsrInstruction.java 1749603 2016-06-21 20:50:19Z ggregory $ */ ! public abstract class JsrInstruction extends BranchInstruction implements UnconditionalBranch, ! TypedInstruction, StackProducer { ! ! JsrInstruction(final short opcode, final InstructionHandle target) { super(opcode, target); } + /** * Empty constructor needed for the Class.newInstance() statement in * Instruction.readInstruction(). Not to be used otherwise. */ ! JsrInstruction() { ! } ! /** @return return address type */ ! @Override ! public Type getType( final ConstantPoolGen cp ) { return new ReturnaddressType(physicalSuccessor()); } + /** * Returns an InstructionHandle to the physical successor * of this JsrInstruction. <B>For this method to work, * this JsrInstruction object must not be shared between * multiple InstructionHandle objects!</B>
*** 55,82 **** * i, j where i != j and i.getInstruction() == this == * j.getInstruction(). * @return an InstructionHandle to the "next" instruction that * will be executed when RETurned from a subroutine. */ ! public InstructionHandle physicalSuccessor(){ ! InstructionHandle ih = this.target; ! // Rewind! ! while(ih.getPrev() != null) ih = ih.getPrev(); ! // Find the handle for "this" JsrInstruction object. ! while(ih.getInstruction() != this) ih = ih.getNext(); ! ! InstructionHandle toThis = ih; ! ! while(ih != null){ ih = ih.getNext(); ! if ((ih != null) && (ih.getInstruction() == this)) throw new RuntimeException("physicalSuccessor() called on a shared JsrInstruction."); } ! // Return the physical successor return toThis.getNext(); } } --- 59,84 ---- * i, j where i != j and i.getInstruction() == this == * j.getInstruction(). * @return an InstructionHandle to the "next" instruction that * will be executed when RETurned from a subroutine. */ ! public InstructionHandle physicalSuccessor() { ! InstructionHandle ih = super.getTarget(); // Rewind! ! while (ih.getPrev() != null) { ih = ih.getPrev(); ! } // Find the handle for "this" JsrInstruction object. ! while (ih.getInstruction() != this) { ih = ih.getNext(); ! } ! final InstructionHandle toThis = ih; ! while (ih != null) { ih = ih.getNext(); ! if ((ih != null) && (ih.getInstruction() == this)) { throw new RuntimeException("physicalSuccessor() called on a shared JsrInstruction."); } ! } // Return the physical successor return toThis.getNext(); } }
< prev index next >