|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.ObjectMethodAdapter
org.jboss.byteman.agent.adapter.RuleMethodAdapter
org.jboss.byteman.agent.adapter.RuleGeneratorAdapter
org.jboss.byteman.agent.adapter.RuleTriggerMethodAdapter
public class RuleTriggerMethodAdapter
class which provides base functionality extended by all the location-specific method trigger adapters
Nested Class Summary |
---|
Nested classes/interfaces inherited from class org.jboss.byteman.agent.adapter.RuleMethodAdapter |
---|
RuleMethodAdapter.LocalVar |
Field Summary | |
---|---|
private int[] |
argLocalIndices
|
private Type[] |
argumentTypes
|
private boolean |
bindingIndicesSet
|
private boolean |
bindInvokeParams
|
private boolean |
bindReturnOrThrowableValue
|
private java.util.List<Binding> |
callArrayBindings
|
private CFG |
cfg
|
protected java.lang.String[] |
exceptions
|
private boolean |
injected
|
private Type |
returnType
|
private RuleScript |
ruleScript
|
private Type |
saveValueType
|
private java.lang.String |
signature
|
Fields inherited from class org.jboss.byteman.agent.adapter.RuleGeneratorAdapter |
---|
ADD, AND, DIV, EQ, GE, GT, LE, LT, MUL, NE, NEG, OR, REM, SHL, SHR, SUB, USHR, XOR |
Fields inherited from class org.jboss.byteman.agent.adapter.RuleMethodAdapter |
---|
access, descriptor, localVarsByName, name, rule, transformContext |
Constructor Summary | |
---|---|
RuleTriggerMethodAdapter(MethodVisitor mv,
TransformContext transformContext,
int access,
java.lang.String name,
java.lang.String descriptor,
java.lang.String signature,
java.lang.String[] exceptions)
|
Method Summary | |
---|---|
private Binding |
alias(Binding binding,
Bindings bindings,
int localIdx)
|
private boolean |
doArgLoad(int saveSlot)
stack an argument array containing all the values which need to be bound to parameters or local variables in the rule or a null pointer if no bindings are required. |
private void |
doArgUpdate()
plant code to copy back any updated values from the argument array to the relevant local variable slots |
private int |
doInvokeBindingsSave()
|
private int |
doReturnOrThrowSave()
|
Type[] |
getInvokedTypes()
method overridden by AT INVOKE method adapter allowing types for the invoked method owner, parameters and return value to be identified. |
protected java.lang.String |
getMethodName()
|
Type |
getReturnBindingType()
method overridden by AT INVOKE method adapter allowing the type of the $! binding to be identified. |
protected boolean |
inBytemanHandler()
return true if the current block is a handler which catches a byteman exception thrown by the byteman runtime |
protected boolean |
inBytemanTrigger()
return true if the current block is in a trigger block injected by Byteman |
protected void |
injectTriggerPoint()
inject the rule trigger code |
protected boolean |
inRethrowHandler()
return true if the current block is handler which catches a thrown exception within the scope of a monitor enter in order to be able exit the monitor and rethrow the exception |
private void |
setBindingIndices()
|
void |
visitCode()
|
void |
visitEnd()
|
void |
visitFieldInsn(int opcode,
java.lang.String owner,
java.lang.String name,
java.lang.String desc)
|
void |
visitIincInsn(int var,
int increment)
|
void |
visitInsn(int opcode)
|
void |
visitIntInsn(int opcode,
int operand)
|
void |
visitJumpInsn(int opcode,
Label label)
|
void |
visitLabel(Label label)
|
void |
visitLdcInsn(java.lang.Object cst)
|
void |
visitLookupSwitchInsn(Label dflt,
int[] keys,
Label[] labels)
|
void |
visitMaxs(int maxStack,
int maxLocals)
ensure we allow enough room for any extra locals on the stack |
void |
visitMethodInsn(int opcode,
java.lang.String owner,
java.lang.String name,
java.lang.String desc)
|
void |
visitMultiANewArrayInsn(java.lang.String desc,
int dims)
|
void |
visitTableSwitchInsn(int min,
int max,
Label dflt,
Label[] labels)
|
void |
visitTriggerEnd(Label label)
|
void |
visitTriggerStart(Label label)
|
void |
visitTryCatchBlock(Label start,
Label end,
Label handler,
java.lang.String type)
|
void |
visitTypeInsn(int opcode,
java.lang.String desc)
|
void |
visitVarInsn(int opcode,
int var)
override this so we can see track which local var slots are in use and avoid overwriting them |
Methods inherited from class org.jboss.byteman.agent.adapter.RuleGeneratorAdapter |
---|
arrayLength, arrayLoad, arrayStore, box, cast, catchException, checkCast, dup, dup2, dup2X1, dup2X2, dupX1, dupX2, endMethod, getField, getLocalType, getStatic, goTo, ifCmp, ifICmp, ifNonNull, ifNull, ifZCmp, iinc, instanceOf, invokeConstructor, invokeInterface, invokeStatic, invokeVirtual, loadArg, loadArgArray, loadArgs, loadArgs, loadLocal, loadThis, mark, mark, math, monitorEnter, monitorExit, newArray, newInstance, newLabel, newLocal, not, pop, pop2, popLocal, push, push, push, push, push, push, push, putField, putStatic, ret, returnValue, storeArg, storeLocal, swap, swap, tableSwitch, tableSwitch, throwException, throwException, unbox, visitFrame |
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 |
---|
private RuleScript ruleScript
private java.lang.String signature
protected java.lang.String[] exceptions
private Type returnType
private Type[] argumentTypes
private Type saveValueType
private int[] argLocalIndices
private java.util.List<Binding> callArrayBindings
private boolean bindReturnOrThrowableValue
private boolean bindInvokeParams
private boolean bindingIndicesSet
private boolean injected
private CFG cfg
Constructor Detail |
---|
RuleTriggerMethodAdapter(MethodVisitor mv, TransformContext transformContext, int access, java.lang.String name, java.lang.String descriptor, java.lang.String signature, java.lang.String[] exceptions)
Method Detail |
---|
public Type[] getInvokedTypes()
public Type getReturnBindingType()
private void setBindingIndices()
private Binding alias(Binding binding, Bindings bindings, int localIdx)
private int doReturnOrThrowSave()
private int doInvokeBindingsSave()
private boolean doArgLoad(int saveSlot)
saveSlot
- a local variable slot containing either the return value which the trigger method is about
to return or the Throwable the method is about to throw. this is only valid if, respectively, the rule
location is AT EXIT/AFTER INVOKE or AT THROW and the rule body contains a reference to the return value ($!)
or throwable value ($@).
private void doArgUpdate()
protected boolean inBytemanHandler()
protected boolean inBytemanTrigger()
protected boolean inRethrowHandler()
protected java.lang.String getMethodName()
public void visitCode()
public void visitInsn(int opcode)
public void visitIincInsn(int var, int increment)
public void visitIntInsn(int opcode, int operand)
public void visitLdcInsn(java.lang.Object cst)
public void visitVarInsn(int opcode, int var)
RuleGeneratorAdapter
visitVarInsn
in class RuleGeneratorAdapter
public void visitTypeInsn(int opcode, java.lang.String desc)
public void visitFieldInsn(int opcode, java.lang.String owner, java.lang.String name, java.lang.String desc)
public void visitMethodInsn(int opcode, java.lang.String owner, java.lang.String name, java.lang.String desc)
public void visitJumpInsn(int opcode, Label label)
public void visitLabel(Label label)
public void visitTriggerStart(Label label)
public void visitTriggerEnd(Label label)
public void visitTableSwitchInsn(int min, int max, Label dflt, Label[] labels)
public void visitLookupSwitchInsn(Label dflt, int[] keys, Label[] labels)
public void visitMultiANewArrayInsn(java.lang.String desc, int dims)
public void visitTryCatchBlock(Label start, Label end, Label handler, java.lang.String type)
public void visitMaxs(int maxStack, int maxLocals)
RuleGeneratorAdapter
visitMaxs
in class RuleGeneratorAdapter
public void visitEnd()
protected void injectTriggerPoint()
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |