jaxp/src/com/sun/org/apache/bcel/internal/generic/CodeExceptionGen.java
Print this page
*** 56,66 ****
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
- import com.sun.org.apache.bcel.internal.Constants;
import com.sun.org.apache.bcel.internal.classfile.*;
/**
* This class represents an exception handler, i.e., specifies the region where
* a handler is active and an instruction where the actual handling is done.
--- 56,65 ----
*** 116,150 ****
}
/* Set start of handler
* @param start_pc Start of handled region (inclusive)
*/
! public void setStartPC(InstructionHandle start_pc) {
! BranchInstruction.notifyTarget(this.start_pc, start_pc, this);
this.start_pc = start_pc;
}
/* Set end of handler
* @param end_pc End of handled region (inclusive)
*/
! public void setEndPC(InstructionHandle end_pc) {
! BranchInstruction.notifyTarget(this.end_pc, end_pc, this);
this.end_pc = end_pc;
}
/* Set handler code
* @param handler_pc Start of handler
*/
! public void setHandlerPC(InstructionHandle handler_pc) {
! BranchInstruction.notifyTarget(this.handler_pc, handler_pc, this);
this.handler_pc = handler_pc;
}
/**
* @param old_ih old target, either start or end
* @param new_ih new target
*/
public void updateTarget(InstructionHandle old_ih, InstructionHandle new_ih) {
boolean targeted = false;
if(start_pc == old_ih) {
targeted = true;
--- 115,153 ----
}
/* Set start of handler
* @param start_pc Start of handled region (inclusive)
*/
! public final void setStartPC(InstructionHandle start_pc) {
! BranchInstruction.notifyTargetChanging(this.start_pc, this);
this.start_pc = start_pc;
+ BranchInstruction.notifyTargetChanged(this.start_pc, this);
}
/* Set end of handler
* @param end_pc End of handled region (inclusive)
*/
! public final void setEndPC(InstructionHandle end_pc) {
! BranchInstruction.notifyTargetChanging(this.end_pc, this);
this.end_pc = end_pc;
+ BranchInstruction.notifyTargetChanged(this.end_pc, this);
}
/* Set handler code
* @param handler_pc Start of handler
*/
! public final void setHandlerPC(InstructionHandle handler_pc) {
! BranchInstruction.notifyTargetChanging(this.handler_pc, this);
this.handler_pc = handler_pc;
+ BranchInstruction.notifyTargetChanged(this.handler_pc, this);
}
/**
* @param old_ih old target, either start or end
* @param new_ih new target
*/
+ @Override
public void updateTarget(InstructionHandle old_ih, InstructionHandle new_ih) {
boolean targeted = false;
if(start_pc == old_ih) {
targeted = true;
*** 167,176 ****
--- 170,180 ----
}
/**
* @return true, if ih is target of this handler
*/
+ @Override
public boolean containsTarget(InstructionHandle ih) {
return (start_pc == ih) || (end_pc == ih) || (handler_pc == ih);
}
/** Sets the type of the Exception to catch. Set 'null' for ANY. */
*** 188,201 ****
--- 192,207 ----
/** @return start of handler
*/
public InstructionHandle getHandlerPC() { return handler_pc; }
+ @Override
public String toString() {
return "CodeExceptionGen(" + start_pc + ", " + end_pc + ", " + handler_pc + ")";
}
+ @Override
public Object clone() {
try {
return super.clone();
} catch(CloneNotSupportedException e) {
System.err.println(e);