< 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 >