Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.codehaus.aspectwerkz.transform.inlining.compiler
Class RuntimeCheckVisitor

    java.lang.Object
      org.codehaus.aspectwerkz.expression.ExpressionVisitor
          org.codehaus.aspectwerkz.transform.inlining.compiler.RuntimeCheckVisitor

All Implemented Interfaces:
  ExpressionParserVisitor, org.objectweb.asm.Constants

    public class RuntimeCheckVisitor

extends ExpressionVisitor
implements org.objectweb.asm.Constants

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.

Author:
  Alexandre Vasseur

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

### RuntimeCheckVisitor

    public RuntimeCheckVisitor(AbstractJoinPointCompiler compiler,
                               org.objectweb.asm.CodeVisitor cv,
                               ExpressionInfo info,
                               boolean isOptimizedJoinPoint,
                               int joinPointIndex,
                               int calleeIndex)

  Create a new visitor given a specific AdviceInfo

  Parameters:
    `compiler` - we are working for
    `cv` - of the method block we are compiling
    `info` - expression info
    `isOptimizedJoinPoint` -
    `joinPointIndex` -

Method Detail

### pushCheckOnStack

    public void pushCheckOnStack(ExpressionContext context)

  Push the boolean typed expression on the stack.

  Parameters:
    `context` -

### visit

    public Object visit(ASTOr node,
                        Object data)

  Handles OR expression

  Specified by:
    `visit` in interface `ExpressionParserVisitor`
  Overrides:
    `visit` in class `ExpressionVisitor`
  Parameters:
    `node` -
    `data` -
  Returns:

### visit

    public Object visit(ASTAnd node,
                        Object data)

  Specified by:
    `visit` in interface `ExpressionParserVisitor`
  Overrides:
    `visit` in class `ExpressionVisitor`

### visit

    public Object visit(ASTNot node,
                        Object data)

  Specified by:
    `visit` in interface `ExpressionParserVisitor`
  Overrides:
    `visit` in class `ExpressionVisitor`

### visit

    public Object visit(ASTTarget node,
                        Object data)

  Specified by:
    `visit` in interface `ExpressionParserVisitor`
  Overrides:
    `visit` in class `ExpressionVisitor`

### visit

    public Object visit(ASTThis node,
                        Object data)

  Specified by:
    `visit` in interface `ExpressionParserVisitor`
  Overrides:
    `visit` in class `ExpressionVisitor`

### visit

    public Object visit(ASTCflow node,
                        Object data)

  Specified by:
    `visit` in interface `ExpressionParserVisitor`
  Overrides:
    `visit` in class `ExpressionVisitor`

### visit

    public Object visit(ASTCflowBelow node,
                        Object data)

  Specified by:
    `visit` in interface `ExpressionParserVisitor`
  Overrides:
    `visit` in class `ExpressionVisitor`

### visit

    public Object visit(ASTArgs node,
                        Object data)

  Specified by:
    `visit` in interface `ExpressionParserVisitor`
  Overrides:
    `visit` in class `ExpressionVisitor`

### visit

    public Object visit(ASTPointcutReference node,
                        Object data)

  Specified by:
    `visit` in interface `ExpressionParserVisitor`
  Overrides:
    `visit` in class `ExpressionVisitor`

### visit

    public Object visit(ASTExecution node,
                        Object data)

  Specified by:
    `visit` in interface `ExpressionParserVisitor`
  Overrides:
    `visit` in class `ExpressionVisitor`

### visit

    public Object visit(ASTCall node,
                        Object data)

  Specified by:
    `visit` in interface `ExpressionParserVisitor`
  Overrides:
    `visit` in class `ExpressionVisitor`

### visit

    public Object visit(ASTSet node,
                        Object data)

  Specified by:
    `visit` in interface `ExpressionParserVisitor`
  Overrides:
    `visit` in class `ExpressionVisitor`

### visit

    public Object visit(ASTGet node,
                        Object data)

  Specified by:
    `visit` in interface `ExpressionParserVisitor`
  Overrides:
    `visit` in class `ExpressionVisitor`

### visit

    public Object visit(ASTHandler node,
                        Object data)

  Specified by:
    `visit` in interface `ExpressionParserVisitor`
  Overrides:
    `visit` in class `ExpressionVisitor`

### visit

    public Object visit(ASTStaticInitialization node,
                        Object data)

  Specified by:
    `visit` in interface `ExpressionParserVisitor`
  Overrides:
    `visit` in class `ExpressionVisitor`

### visit

    public Object visit(ASTWithin node,
                        Object data)

  Specified by:
    `visit` in interface `ExpressionParserVisitor`
  Overrides:
    `visit` in class `ExpressionVisitor`

### visit

    public Object visit(ASTWithinCode node,
                        Object data)

  Specified by:
    `visit` in interface `ExpressionParserVisitor`
  Overrides:
    `visit` in class `ExpressionVisitor`

### visit

    public Object visit(ASTHasMethod node,
                        Object data)

  Specified by:
    `visit` in interface `ExpressionParserVisitor`
  Overrides:
    `visit` in class `ExpressionVisitor`

### visit

    public Object visit(ASTHasField node,
                        Object data)

  Specified by:
    `visit` in interface `ExpressionParserVisitor`
  Overrides:
    `visit` in class `ExpressionVisitor`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2002-2005 Jonas Bonér, Alexandre Vasseur. All Rights Reserved.