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.weaver
Class ConstructorCallVisitor.ReplaceNewInstructionCodeAdapter

    java.lang.Object
      org.objectweb.asm.CodeAdapter
          org.codehaus.aspectwerkz.transform.inlining.weaver.ConstructorCallVisitor.ReplaceNewInstructionCodeAdapter

All Implemented Interfaces:
  org.objectweb.asm.CodeVisitor

Enclosing class:
  ConstructorCallVisitor

    public class ConstructorCallVisitor.ReplaceNewInstructionCodeAdapter

extends org.objectweb.asm.CodeAdapter

Replaces 'new' instructions with a call to the compiled JoinPoint instance.
It does the following: - remove NEW when we know (from first visit) that it matchs - remove DUP that follows NEW - replace INVOKESPECIAL with call to JP

Author:
  Alexandre Vasseur

Field Summary

Fields inherited from class org.objectweb.asm.CodeAdapter
`cv`

Constructor Summary
`ConstructorCallVisitor.ReplaceNewInstructionCodeAdapter(org.objectweb.asm.CodeVisitor ca, ClassLoader loader, ClassInfo callerClassInfo, String callerClassName, String callerMethodName, String callerMethodDesc, gnu.trove.TIntObjectHashMap newInvocations)` Creates a new instance.

Method Summary
`boolean` | `constructorFilter(Set definitions, ExpressionContext ctx, ConstructorInfo calleeConstructorInfo)` Filters out the ctor that are not eligible for transformation.
`void` | `visitInsn(int opcode)` Remove the DUP instruction if we know that those were for a NEW ...
`void` | `visitLabel(org.objectweb.asm.Label label)` Label
`void` | `visitMethodInsn(int opcode, String calleeClassName, String calleeConstructorName, String calleeConstructorDesc)` Visits INVOKESPECIAL instructions and replace them with a call to the join point when matched.
`void` | `visitTypeInsn(int opcode, String desc)` Removes the NEW when we know that the corresponding INVOKE SPECIAL is advised.

Methods inherited from class org.objectweb.asm.CodeAdapter
`visitAttribute, visitFieldInsn, visitIincInsn, visitIntInsn, visitJumpInsn, visitLdcInsn, visitLineNumber, visitLocalVariable, visitLookupSwitchInsn, visitMaxs, visitMultiANewArrayInsn, visitTableSwitchInsn, visitTryCatchBlock, visitVarInsn`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### ConstructorCallVisitor.ReplaceNewInstructionCodeAdapter

    public ConstructorCallVisitor.ReplaceNewInstructionCodeAdapter(org.objectweb.asm.CodeVisitor ca,
                                                                   ClassLoader loader,
                                                                   ClassInfo callerClassInfo,
                                                                   String callerClassName,
                                                                   String callerMethodName,
                                                                   String callerMethodDesc,
                                                                   gnu.trove.TIntObjectHashMap newInvocations)

  Creates a new instance.

  Parameters:
    `ca` -
    `loader` -
    `callerClassInfo` -
    `callerClassName` -
    `callerMethodName` -
    `callerMethodDesc` -

Method Detail

### visitLabel

    public void visitLabel(org.objectweb.asm.Label label)

  Label

  Specified by:
    `visitLabel` in interface `org.objectweb.asm.CodeVisitor`
  Overrides:
    `visitLabel` in class `org.objectweb.asm.CodeAdapter`
  Parameters:
    `label` -

### visitTypeInsn

    public void visitTypeInsn(int opcode,
                              String desc)

  Removes the NEW when we know that the corresponding INVOKE SPECIAL is advised.

  Specified by:
    `visitTypeInsn` in interface `org.objectweb.asm.CodeVisitor`
  Overrides:
    `visitTypeInsn` in class `org.objectweb.asm.CodeAdapter`
  Parameters:
    `opcode` -
    `desc` -

### visitInsn

    public void visitInsn(int opcode)

  Remove the DUP instruction if we know that those were for a NEW ... INVOKESPECIAL that match.

  Specified by:
    `visitInsn` in interface `org.objectweb.asm.CodeVisitor`
  Overrides:
    `visitInsn` in class `org.objectweb.asm.CodeAdapter`
  Parameters:
    `opcode` -

### visitMethodInsn

    public void visitMethodInsn(int opcode,
                                String calleeClassName,
                                String calleeConstructorName,
                                String calleeConstructorDesc)

  Visits INVOKESPECIAL instructions and replace them with a call to the join point when matched.

  Specified by:
    `visitMethodInsn` in interface `org.objectweb.asm.CodeVisitor`
  Overrides:
    `visitMethodInsn` in class `org.objectweb.asm.CodeAdapter`
  Parameters:
    `opcode` -
    `calleeClassName` -
    `calleeConstructorName` -
    `calleeConstructorDesc` -

### constructorFilter

    public boolean constructorFilter(Set definitions,
                                     ExpressionContext ctx,
                                     ConstructorInfo calleeConstructorInfo)

  Filters out the ctor that are not eligible for transformation.

  Parameters:
    `definitions` -
    `ctx` -
    `calleeConstructorInfo` -
  Returns:
    boolean true if the method should be filtered out

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.