|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.codehaus.aspectwerkz.expression.ExpressionVisitor
org.codehaus.aspectwerkz.transform.inlining.compiler.RuntimeCheckVisitor
public class RuntimeCheckVisitor
Visit an expression and push on the bytecode stack the boolean expression that corresponds to the residual part for the target(CALLEE) filtering and cflow / cflowbelow runtime checks
TODO: for now OR / AND / NOT are turned in IAND etc, ie "&" and not "&&" that is more efficient but is using labels. Note: we have to override here (and maintain) every visit Method that visit a node that appears in an expression (f.e. set , get, etc, but not ASTParameter), since we cannot rely on AND/OR/NOT nodes to push the boolean expressions.
Field Summary |
---|
Fields inherited from class org.codehaus.aspectwerkz.expression.ExpressionVisitor |
---|
m_expression, m_namespace, m_root |
Fields inherited from interface org.objectweb.asm.Constants |
---|
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, IMUL, INEG, INSTANCEOF, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, V1_1, V1_2, V1_3, V1_4, V1_5 |
Constructor Summary | |
---|---|
RuntimeCheckVisitor(AbstractJoinPointCompiler compiler,
org.objectweb.asm.CodeVisitor cv,
ExpressionInfo info,
boolean isOptimizedJoinPoint,
int joinPointIndex,
int calleeIndex)
Create a new visitor given a specific AdviceInfo |
Method Summary | |
---|---|
void |
pushCheckOnStack(ExpressionContext context)
Push the boolean typed expression on the stack. |
Object |
visit(ASTAnd node,
Object data)
|
Object |
visit(ASTArgs node,
Object data)
|
Object |
visit(ASTCall node,
Object data)
|
Object |
visit(ASTCflowBelow node,
Object data)
|
Object |
visit(ASTCflow node,
Object data)
|
Object |
visit(ASTExecution node,
Object data)
|
Object |
visit(ASTGet node,
Object data)
|
Object |
visit(ASTHandler node,
Object data)
|
Object |
visit(ASTHasField node,
Object data)
|
Object |
visit(ASTHasMethod node,
Object data)
|
Object |
visit(ASTNot node,
Object data)
|
Object |
visit(ASTOr node,
Object data)
Handles OR expression |
Object |
visit(ASTPointcutReference node,
Object data)
|
Object |
visit(ASTSet node,
Object data)
|
Object |
visit(ASTStaticInitialization node,
Object data)
|
Object |
visit(ASTTarget node,
Object data)
|
Object |
visit(ASTThis node,
Object data)
|
Object |
visit(ASTWithinCode node,
Object data)
|
Object |
visit(ASTWithin node,
Object data)
|
Methods inherited from class org.codehaus.aspectwerkz.expression.ExpressionVisitor |
---|
getASTRoot, getExpressionInfo, match, matchUndeterministic, toString, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visitAnnotatedNode, visitAttributes, visitModifiers, visitParameters |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
public RuntimeCheckVisitor(AbstractJoinPointCompiler compiler, org.objectweb.asm.CodeVisitor cv, ExpressionInfo info, boolean isOptimizedJoinPoint, int joinPointIndex, int calleeIndex)
compiler
- we are working forcv
- of the method block we are compilinginfo
- expression infoisOptimizedJoinPoint
- joinPointIndex
- Method Detail |
---|
public void pushCheckOnStack(ExpressionContext context)
context
- public Object visit(ASTOr node, Object data)
visit
in interface ExpressionParserVisitor
visit
in class ExpressionVisitor
node
- data
-
public Object visit(ASTAnd node, Object data)
visit
in interface ExpressionParserVisitor
visit
in class ExpressionVisitor
public Object visit(ASTNot node, Object data)
visit
in interface ExpressionParserVisitor
visit
in class ExpressionVisitor
public Object visit(ASTTarget node, Object data)
visit
in interface ExpressionParserVisitor
visit
in class ExpressionVisitor
public Object visit(ASTThis node, Object data)
visit
in interface ExpressionParserVisitor
visit
in class ExpressionVisitor
public Object visit(ASTCflow node, Object data)
visit
in interface ExpressionParserVisitor
visit
in class ExpressionVisitor
public Object visit(ASTCflowBelow node, Object data)
visit
in interface ExpressionParserVisitor
visit
in class ExpressionVisitor
public Object visit(ASTArgs node, Object data)
visit
in interface ExpressionParserVisitor
visit
in class ExpressionVisitor
public Object visit(ASTPointcutReference node, Object data)
visit
in interface ExpressionParserVisitor
visit
in class ExpressionVisitor
public Object visit(ASTExecution node, Object data)
visit
in interface ExpressionParserVisitor
visit
in class ExpressionVisitor
public Object visit(ASTCall node, Object data)
visit
in interface ExpressionParserVisitor
visit
in class ExpressionVisitor
public Object visit(ASTSet node, Object data)
visit
in interface ExpressionParserVisitor
visit
in class ExpressionVisitor
public Object visit(ASTGet node, Object data)
visit
in interface ExpressionParserVisitor
visit
in class ExpressionVisitor
public Object visit(ASTHandler node, Object data)
visit
in interface ExpressionParserVisitor
visit
in class ExpressionVisitor
public Object visit(ASTStaticInitialization node, Object data)
visit
in interface ExpressionParserVisitor
visit
in class ExpressionVisitor
public Object visit(ASTWithin node, Object data)
visit
in interface ExpressionParserVisitor
visit
in class ExpressionVisitor
public Object visit(ASTWithinCode node, Object data)
visit
in interface ExpressionParserVisitor
visit
in class ExpressionVisitor
public Object visit(ASTHasMethod node, Object data)
visit
in interface ExpressionParserVisitor
visit
in class ExpressionVisitor
public Object visit(ASTHasField node, Object data)
visit
in interface ExpressionParserVisitor
visit
in class ExpressionVisitor
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |