org.jboss.byteman.agent.adapter
Class ExitCheckAdapter.ExitCheckMethodAdapter

java.lang.Object
  extended by MethodAdapter
      extended by org.jboss.byteman.agent.adapter.RuleMethodAdapter
          extended by org.jboss.byteman.agent.adapter.RuleCheckMethodAdapter
              extended by org.jboss.byteman.agent.adapter.ExitCheckAdapter.ExitCheckMethodAdapter
Enclosing class:
ExitCheckAdapter

private class ExitCheckAdapter.ExitCheckMethodAdapter
extends RuleCheckMethodAdapter

a method visitor used to add a rule event trigger call to a method


Nested Class Summary
 
Nested classes/interfaces inherited from class org.jboss.byteman.agent.adapter.RuleMethodAdapter
RuleMethodAdapter.LocalVar
 
Field Summary
private  int access
           
private  java.lang.String descriptor
           
private  java.util.Vector<Label> endLabels
           
private  java.lang.String[] exceptions
           
private  boolean inhibit
           
private  java.lang.String name
           
private  java.lang.String signature
           
private  java.util.Vector<Label> startLabels
           
 
Fields inherited from class org.jboss.byteman.agent.adapter.RuleMethodAdapter
localVarsByName, rule, transformContext
 
Constructor Summary
ExitCheckAdapter.ExitCheckMethodAdapter(MethodVisitor mv, TransformContext transformContext, int access, java.lang.String name, java.lang.String descriptor, java.lang.String signature, java.lang.String[] exceptions)
           
 
Method Summary
 void visitEnd()
           
 void visitInsn(int opcode)
          we need to identify return instructions which are inserted because of other rules
 void visitLabel(Label label)
          each time we visit a label we set or clear flag inhibit depending upon whether the label identifies an EarlyReturnException block or not in order to avoid inserting triggers for returns added by our own exception handling code
 void visitTryCatchBlock(Label start, Label end, Label handler, java.lang.String type)
          Visits a try catch block and records the label of the handler start if the exception type EarlyReturnException so we can later avoid inserting a rule trigger.
 
Methods inherited from class org.jboss.byteman.agent.adapter.RuleCheckMethodAdapter
checkBindings, isTriggerPoint, setTriggerPoint
 
Methods inherited from class org.jboss.byteman.agent.adapter.RuleMethodAdapter
getTriggerClass, lookup, visitLocalVariable
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

access

private int access

name

private java.lang.String name

descriptor

private java.lang.String descriptor

signature

private java.lang.String signature

exceptions

private java.lang.String[] exceptions

startLabels

private java.util.Vector<Label> startLabels

endLabels

private java.util.Vector<Label> endLabels

inhibit

private boolean inhibit
Constructor Detail

ExitCheckAdapter.ExitCheckMethodAdapter

ExitCheckAdapter.ExitCheckMethodAdapter(MethodVisitor mv,
                                        TransformContext transformContext,
                                        int access,
                                        java.lang.String name,
                                        java.lang.String descriptor,
                                        java.lang.String signature,
                                        java.lang.String[] exceptions)
Method Detail

visitTryCatchBlock

public void visitTryCatchBlock(Label start,
                               Label end,
                               Label handler,
                               java.lang.String type)
Visits a try catch block and records the label of the handler start if the exception type EarlyReturnException so we can later avoid inserting a rule trigger.

Parameters:
start - beginning of the exception handler's scope (inclusive).
end - end of the exception handler's scope (exclusive).
handler - beginning of the exception handler's code.
type - internal name of the type of exceptions handled by the handler, or null to catch any exceptions (for "finally" blocks).
Throws:
java.lang.IllegalArgumentException - if one of the labels has already been visited by this visitor (by the visitLabel method).

visitLabel

public void visitLabel(Label label)
each time we visit a label we set or clear flag inhibit depending upon whether the label identifies an EarlyReturnException block or not in order to avoid inserting triggers for returns added by our own exception handling code

Parameters:
label -

visitInsn

public void visitInsn(int opcode)
we need to identify return instructions which are inserted because of other rules

Parameters:
opcode -

visitEnd

public void visitEnd()