Project: AspectJ
Bug 113118 ClassFormatException with tracing aspect
Reported: 2005-10-19 14:01:25 | Status: resolved fixed

Build id: 20051017111807 AspectJ version: 1.5.0.200510141300 The following aspect resulted in the CFE: public aspect CallTrace { /** * A marker interface used to pick the classes to trace. Declare any class you want to * trace to implement this interface. The best way is using an aspect like the one in * the class comment block above. */ public static interface Traced {} /** * A marker annoation, can be used instead of {@link Traced}. */ @Documented @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE, ElementType.ANNOTATION_TYPE}) public @interface TracedAnno {} private static Level level = Level.INFO; /** * Set the global logging level used for reporting traced calls. Defaults to INFO. * @param newLevel */ public static void setLevel (Level newLevel) { level = newLevel; } /** * @return the Level used for writing traced output. */ public static Level getLevel () { return level; } private static Logger log = Logger.getLogger(Traced.class); private int nesting = 0; private static StringBuffer prefixStr = null; static { new StringBuffer(1024); for (int i=0; i<128; i++) { // stuff with "+". prefixStr.append("++++++++"); } } public pointcut exclusions(): within(CallTrace) || within(*Tracer); // Distinguish between initialization JPs and other method calls, to work // around AJ limitation that around advice isn't supported for initializations. public pointcut traceIntfInit(): initialization(Traced+.new(..)); public pointcut traceIntf(): call(* Traced+.*(..)); public pointcut traceAnnoInit(): initialization(com.adteractive..*.new(..)) && @target(TracedAnno); public pointcut traceAnno(): call(* com.adteractive..*.*(..)) && @target(TracedAnno); public pointcut traceInit(): !exclusions() && (traceIntfInit() || traceAnnoInit()); public pointcut trace(): !exclusions() && (traceIntf() || traceAnno()); before(): traceInit() { nesting++; String pre = prefixStr.substring(0,nesting); log.log (level, pre+"> "+thisJoinPointStaticPart); } after(): traceInit() { String pre = prefixStr.substring(0,nesting); log.log (level, pre+"< "+thisJoinPointStaticPart); nesting--; } Object around(): trace() { nesting++; String pre = prefixStr.substring(0,nesting); log.log (level, pre+"> "+thisJoinPointStaticPart); Object result = proceed(); log.log (level, pre+"< "+thisJoinPointStaticPart); nesting--; return result; } } A separate aspect is used to "declare parent" or "declare @type" either the marker interface or annotation, thereby adding tracing to the user-specified classes. E.g., public aspect CallTraceTestTracer { // declare @type: com.me.foo..*: @CallTrace.TracedAnno; declare parents: com.me.foo..* implements CallTrace.Traced; } The exception wasn't thrown in a previous version when I used just before advice for both the "trace" and "traceInit" pointcuts. org.aspectj.apache.bcel.classfile.ClassFormatException at org.aspectj.apache.bcel.classfile.Utility.typeOfSignature(Utility.java:1293) at org.aspectj.apache.bcel.generic.Type.getTypeInternal(Type.java:166) at org.aspectj.apache.bcel.generic.Type.getTypeInternal(Type.java:174) at org.aspectj.apache.bcel.generic.Type.getType(Type.java:155) at org.aspectj.weaver.bcel.BcelWorld.makeBcelType(BcelWorld.java:198) at org.aspectj.weaver.bcel.BcelShadow.createMethodGen(BcelShadow.java:2999) at org.aspectj.weaver.bcel.BcelShadow.extractMethod(BcelShadow.java:2826) at org.aspectj.weaver.bcel.BcelShadow.weaveAroundInline(BcelShadow.java:2020) at org.aspectj.weaver.bcel.BcelAdvice.implementOn(BcelAdvice.java:211) at org.aspectj.weaver.Shadow.implementMungers(Shadow.java:514) at org.aspectj.weaver.Shadow.implement(Shadow.java:391) at org.aspectj.weaver.bcel.BcelClassWeaver.implement(BcelClassWeaver.java:1781) at org.aspectj.weaver.bcel.BcelClassWeaver.weave(BcelClassWeaver.java:394) at org.aspectj.weaver.bcel.BcelClassWeaver.weave(BcelClassWeaver.java:98) at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1464) at org.aspectj.weaver.bcel.BcelWeaver.weaveWithoutDump(BcelWeaver.java:1429) at org.aspectj.weaver.bcel.BcelWeaver.weaveAndNotify(BcelWeaver.java:1203) at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1039) at org.aspectj.ajdt.internal.compiler.AjCompilerAdapter.weave(AjCompilerAdapter.java:300) at org.aspectj.ajdt.internal.compiler.AjCompilerAdapter.afterCompiling(AjCompilerAdapter.java:178) at org.aspectj.ajdt.internal.compiler.CompilerAdapter.ajc$afterReturning$org_aspectj_ajdt_internal_compiler_CompilerAdapter$2$f9cc9ca0(CompilerAdapter.aj:70) at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:367) at org.aspectj.a jdt.internal.core.builder.AjBuildManager.performCompilation(AjBuildManager.java:759) at org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild(AjBuildManager.java:249) at org.aspectj.ajdt.internal.core.builder.AjBuildManager.incrementalBuild(AjBuildManager.java:158) at org.aspectj.ajde.internal.CompilerAdapter.compile(CompilerAdapter.java:117) at org.aspectj.ajde.internal.AspectJBuildManager$CompilerThread.run(AspectJBuildManager.java:191) trouble in: public class com.adteractive.framework.test.ConditionTestFilterTest extends junit.framework.TestCase: com.adteractive.framework.ConditionTestFilter ctf [Signature(Lcom/adteractive/framework/ConditionTestFilter<Lcom/adteractive/framework/test/InputStub;Lcom/adteractive/framework/test/OutputStub;>;)] static Class class$0 private static final org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_0 public void <init>(): ALOAD_0 // com.adteractive.framework.test.ConditionTestFilterTest this (line 16) INVOKESPECIAL junit.framework.TestCase.<init> ()V constructor-execution(void com.adteractive.framework.test.ConditionTestFilterTest.<init>()) | ALOAD_0 // com.adteractive.framework.test.ConditionTestFilterTest this (line 17) | ACONST_NULL | PUTFIELD com.adteractive.framework.test.ConditionTestFilterTest.ctf Lcom/adteractive/framework/ConditionTestFilter; | RETURN (line 16) constructor-execution(void com.adteractive.framework.test.ConditionTestFilterTest.<init>()) end public void <init>() protected void setUp() throws java.lang.Exception org.aspectj.weaver.MethodDeclarationLineNumber: 23:543 : method-execution(void com.adteractive.framework.test.ConditionTestFilterTest.setUp()) | ALOAD_0 // com.adteractive.framework.test.ConditionTestFilterTest this (line 24) | INVOKESPECIAL junit.framework.TestCase.setUp ()V | ALOAD_0 // com.adteractive.framework.test.ConditionTestFilterTest this (line 25) | NEW com.adteractive.framework.test.ConditionTestFilterStub | DUP | LDC "ctf" | ALOAD_0 // com.adteractive.framework.test.ConditionTestFilterTest this | ASTORE_1 | method-call(com.adteractive.framework.Filter[] com.adteractive.framework.test.ConditionTestFilterTest.makeBranches()) | | ALOAD_1 | | INVOKESPECIAL com.adteractive.framework.test.ConditionTestFilterTest.makeBranches ()[Lcom/adteractive/framework/Filter; | method-call(com.adteractive.framework.Filter[] com.adteractive.framework.test.ConditionTestFilterTest.makeBranches()) | INVOKESPECIAL com.adteractive.framework.test.ConditionTestFilterStub.<init> (Ljava/lang/String;[Lcom/adteractive/framework/Filter;)V | PUTFIELD com.adteractive.framework.test.ConditionTestFilterTest.ctf Lcom/adteractive/framework/ConditionTestFilter; | RETURN (line 26) method-execution(void com.adteractive.framework.test.ConditionTestFilterTest.setUp()) end protected void setUp() throws java.lang.Exception public void testExecute() org.aspectj.weaver.MethodDeclarationLineNumber: 31:754 : method-execution(void com.adteractive.framework.test.ConditionTestFilterTest.testExecute()) | ALOAD_0 // com.adteractive.framework.test.ConditionTestFilterTest this (line 32) | GETFIELD com.adteractive.framework.test.ConditionTestFilterTest.ctf Lcom/adteractive/framework/ConditionTestFilter; | NEW com.adteractive.framework.test.InputStub | DUP | INVOKESPECIAL com.adteractive.framework.test.InputStub.<init> ()V | method-call(com.adteractive.framework.Output com.adteractive.framework.ConditionTestFilter.execute(com.adteractive.framework.Input)) | | INVOKEVIRTUAL com.adteractive.framework.ConditionTestFilter.execute (Lcom/adteractive/framework/Input;)Lcom/adteractive/framework/Output; | method-call(com.adteractive.framework.Output com.adteractive.framework.ConditionTestFilter.execute(com.adteractive.framework.Input)) | CHECKCAST com.adteractive.framework.test.OutputStub | ASTORE_1 | LDC "bf12" (line 33) | ALOAD_1 // com.adteractive.framework.test.OutputStub output | method-call(com.adteractive.framework.Status com.adteractive.framework.test.OutputStub.getStatus()) | | INVOKEVIRTUAL com.adteractive.framework.test.OutputStub.getStatus ()Lcom/adteractive/framework/Status; | method-call(com.adteractive.framework.Status com.adteractive.framework.test.OutputStub.getStatus()) | method-call(java.lang.String com.adteractive.framework.Status.getAdditionalMessage()) | | INVOKEINTERFACE com.adteractive.framework.Status.getAdditionalMessage ()Ljava/lang/String; | method-call(java.lang.String com.adteractive.framework.Status.getAdditionalMessage()) | method-call(void junit.framework.Assert.assertEquals(java.lang.String, java.lang.String)) | | INVOKESTATIC com.adteractive.framework.test.ConditionTestFilterTest.assertEquals (Ljava/lang/String;Ljava/lang/String;)V | method-call(void junit.framework.Assert.assertEquals(java.lang.String, java.lang.String)) | ALOAD_0 // com.adteractive.framework.test.ConditionTestFilterTest this (line 34) | NEW com.adteractive.framework.test.ConditionTestFilterStub | DUP | INVOKESPECIAL com.adteractive.framework.test.ConditionTestFilterStub.<init> ()V | PUTFIELD com.adteractive.framework.test.ConditionTestFilterTest.ctf Lcom/adteractive/framework/ConditionTestFilter; | ALOAD_0 // com.adteractive.framework.test.ConditionTestFilterTest this (line 35) | GETFIELD com.adteractive.framework.test.ConditionTestFilterTest.ctf Lcom/adteractive/framework/ConditionTestFilter; | NEW com.adteractive.framework.test.InputStub | DUP | INVOKESPECIAL com.adteractive.framework.test.InputStub.<init> ()V | method-call(com.adteractive.framework.Output com.adteractive.framework.ConditionTestFilter.execute(com.adteractive.framework.Input)) | | INVOKEVIRTUAL com.adteractive.framework.ConditionTestFilter.execute (Lcom/adteractive/framework/Input;)Lcom/adteractive/framework/Output; | method-call(com.adteractive.framework.Output com.adteractive.framework.ConditionTestFilter.execute(com.adteractive.framework.Input)) | CHECKCAST com.adteractive.framework.test.OutputStub | ASTORE_1 // com.adteractive.framework.test.OutputStub output | ALOAD_1 // com.adteractive.framework.test.OutputStub output (line 36) | method-call(void junit.framework.Assert.assertNotNull(java.lang.Object)) | | INVOKESTATIC com.adteractive.framework.test.ConditionTestFilterTest.assertNotNull (Ljava/lang/Object;)V | method-call(void junit.framework.Assert.assertNotNull(java.lang.Object)) | RETURN (line 37) method-execution(void com.adteractive.framework.test.ConditionTestFilterTest.testExecute()) end public void testExecute() public void testGetFilterBranches() org.aspectj.weaver.MethodDeclarationLineNumber: 42:1111 : method-execution(void com.adteractive.framework.test.ConditionTestFilterTest.testGetFilterBranches()) | ALOAD_0 // com.adteractive.framework.test.ConditionTestFilterTest this (line 43) | GETFIELD com.adteractive.framework.test.ConditionTestFilterTest.ctf Lcom/adteractive/framework/ConditionTestFilter; | method-call(com.adteractive.framework.Filter[] com.adteractive.framework.ConditionTestFilter.getFilterBranches()) | | INVOKEVIRTUAL com.adteractive.framework.ConditionTestFilter.getFilterBranches ()[Lcom/adteractive/framework/Filter; | method-call(com.adteractive.framework.Filter[] com.adteractive.framework.ConditionTestFilter.getFilterBranches()) | method-call(void junit.framework.Assert.assertNotNull(java.lang.Object)) | | INVOKESTATIC com.adteractive.framework.test.ConditionTestFilterTest.assertNotNull (Ljava/lang/Object;)V | method-call(void junit.framework.Assert.assertNotNull(java.lang.Object)) | ICONST_3 (line 44) | ALOAD_0 // com.adteractive.framework.test.ConditionTestFilterTest this | GETFIELD com.adteractive.framework.test.ConditionTestFilterTest.ctf Lcom/adteractive/framework/ConditionTestFilter; | method-call(com.adteractive.framework.Filter[] com.adteractive.framework.ConditionTestFilter.getFilterBranches()) | | INVOKEVIRTUAL com.adteractive.framework.ConditionTestFilter.getFilterBranches ()[Lcom/adteractive/framework/Filter; | method-call(com.adteractive.framework.Filter[] com.adteractive.framework.ConditionTestFilter.getFilterBranches()) | ARRAYLENGTH | method-call(void junit.framework.Assert.assertEquals(int, int)) | | INVOKESTATIC com.adteractive.framework.test.ConditionTestFilterTest.assertEquals (II)V | method-call(void junit.framework.Assert.assertEquals(int, int)) | ALOAD_0 // com.adteractive.framework.test.ConditionTestFilterTest this (line 45) | NEW com.adteractive.framework.test.ConditionTestFilterStub | DUP | INVOKESPECIAL com.adteractive.framework.test.ConditionTestFilterStub.<init> ()V | PUTFIELD com.adteractive.framework.test.ConditionTestFilterTest.ctf Lcom/adteractive/framework/ConditionTestFilter; | ALOAD_0 // com.adteractive.framework.test.ConditionTestFilterTest this (line 46) | GETFIELD com.adteractive.framework.test.ConditionTestFilterTest.ctf Lcom/adteractive/framework/ConditionTestFilter; | method-call(com.adteractive.framework.Filter[] com.adteractive.framework.ConditionTestFilter.getFilterBranches()) | | INVOKEVIRTUAL com.adteractive.framework.ConditionTestFilter.getFilterBranches ()[Lcom/adteractive/framework/Filter; | method-call(com.adteractive.framework.Filter[] com.adteractive.framework.ConditionTestFilter.getFilterBranches()) | method-call(void junit.framework.Assert.assertNull(java.lang.Object)) | | INVOKESTATIC com.adteractive.framework.test.ConditionTestFilterTest.assertNull (Ljava/lang/Object;)V | method-call(void junit.framework.Assert.assertNull(java.lang.Object)) | RETURN (line 47) method-execution(void com.adteractive.framework.test.ConditionTestFilterTest.testGetFilterBranches()) end public void testGetFilterBranches() public void testSetFilterBranches() org.aspectj.weaver.MethodDeclarationLineNumber: 52:1441 : method-execution(void com.adteractive.framework.test.ConditionTestFilterTest.testSetFilterBranches()) | ALOAD_0 // com.adteractive.framework.test.ConditionTestFilterTest this (line 53) | method-call(com.adteractive.framework.Filter[] com.adteractive.framework.test.ConditionTestFilterTest.makeBranches()) | | INVOKESPECIAL com.adteractive.framework.test.ConditionTestFilterTest.makeBranches ()[Lcom/adteractive/framework/Filter; | method-call(com.adteractive.framework.Filter[] com.adteractive.framework.test.ConditionTestFilterTest.makeBranches()) | ASTORE_1 | ALOAD_0 // com.adteractive.framework.test.ConditionTestFilterTest this (line 54) | GETFIELD com.adteractive.framework.test.ConditionTestFilterTest.ctf Lcom/adteractive/framework/ConditionTestFilter; | ALOAD_1 // com.adteractive.framework.Filter[] branches | method-call(void com.adteractive.framework.ConditionTestFilter.setFilterBranches(com.adteractive.framework.Filter[])) | | INVOKEVIRTUAL com.adteractive.framework.ConditionTestFilter.setFilterBranches ([Lcom/adteractive/framework/Filter;)V | method-call(void com.adteractive.framework.ConditionTestFilter.setFilterBranches(com.adteractive.framework.Filter[])) | ALOAD_0 // com.adteractive.framework.test.ConditionTestFilterTest this (line 55) | GETFIELD com.adteractive.framework.test.ConditionTestFilterTest.ctf Lcom/adteractive/framework/ConditionTestFilter; | method-call(com.adteractive.framework.Filter[] com.adteractive.framework.ConditionTestFilter.getFilterBranches()) | | INVOKEVIRTUAL com.adteractive.framework.ConditionTestFilter.getFilterBranches ()[Lcom/adteractive/framework/Filter; | method-call(com.adteractive.framework.Filter[] com.adteractive.framework.ConditionTestFilter.getFilterBranches()) | method-call(void junit.framework.Assert.assertNotNull(java.lang.Object)) | | INVOKESTATIC com.adteractive.framework.test.ConditionTestFilterTest.assertNotNull (Ljava/lang/Object;)V | method-call(void junit.framework.Assert.assertNotNull(java.lang.Object)) | ICONST_3 (line 56) | ALOAD_0 // com.adteractive.framework.test.ConditionTestFilterTest this | GETFIELD com.adteractive.framework.test.ConditionTestFilterTest.ctf Lcom/adteractive/framework/ConditionTestFilter; | method-call(com.adteractive.framework.Filter[] com.adteractive.framework.ConditionTestFilter.getFilterBranches()) | | INVOKEVIRTUAL com.adteractive.framework.ConditionTestFilter.getFilterBranches ()[Lcom/adteractive/framework/Filter; | method-call(com.adteractive.framework.Filter[] com.adteractive.framework.ConditionTestFilter.getFilterBranches()) | ARRAYLENGTH | method-call(void junit.framework.Assert.assertEquals(int, int)) | | INVOKESTATIC com.adteractive.framework.test.ConditionTestFilterTest.assertEquals (II)V | method-call(void junit.framework.Assert.assertEquals(int, int)) | ALOAD_0 // com.adteractive.framework.test.ConditionTestFilterTest this (line 57) | GETFIELD com.adteractive.framework.test.ConditionTestFilterTest.ctf Lcom/adteractive/framework/ConditionTestFilter; | ACONST_NULL | method-call(void com.adteractive.framework.ConditionTestFilter.setFilterBranches(com.adteractive.framework.Filter[])) | | INVOKEVIRTUAL com.adteractive.framework.ConditionTestFilter.setFilterBranches ([Lcom/adteractive/framework/Filter;)V | method-call(void com.adteractive.framework.ConditionTestFilter.setFilterBranches(com.adteractive.framework.Filter[])) | ALOAD_0 // com.adteractive.framework.test.ConditionTestFilterTest this (line 58) | GETFIELD com.adteractive.framework.test.ConditionTestFilterTest.ctf Lcom/adteractive/framework/ConditionTestFilter; | method-call(com.adteractive.framework.Filter[] com.adteractive.framework.ConditionTestFilter.getFilterBranches()) | | INVOKEVIRTUAL com.adteractive.framework.ConditionTestFilter.getFilterBranches ()[Lcom/adteractive/framework/Filter; | method-call(com.adteractive.framework.Filter[] com.adteractive.framework.ConditionTestFilter.getFilterBranches()) | method-call(void junit.framework.Assert.assertNull(java.lang.Object)) | | INVOKESTATIC com.adteractive.framework.test.ConditionTestFilterTest.assertNull (Ljava/lang/Object;)V | method-call(void junit.framework.Assert.assertNull(java.lang.Object)) | RETURN (line 59) method-execution(void com.adteractive.framework.test.ConditionTestFilterTest.testSetFilterBranches()) end public void testSetFilterBranches() public void testConditionTestFilter() org.aspectj.weaver.MethodDeclarationLineNumber: 64:1847 : method-execution(void com.adteractive.framework.test.ConditionTestFilterTest.testConditionTestFilter()) | ALOAD_0 // com.adteractive.framework.test.ConditionTestFilterTest this (line 65) | NEW com.adteractive.framework.test.ConditionTestFilterStub | DUP | INVOKESPECIAL com.adteractive.framework.test.ConditionTestFilterStub.<init> ()V | PUTFIELD com.adteractive.framework.test.ConditionTestFilterTest.ctf Lcom/adteractive/framework/ConditionTestFilter; | ALOAD_0 // com.adteractive.framework.test.ConditionTestFilterTest this (line 66) | GETFIELD com.adteractive.framework.test.ConditionTestFilterTest.ctf Lcom/adteractive/framework/ConditionTestFilter; | method-call(com.adteractive.framework.Filter[] com.adteractive.framework.ConditionTestFilter.getFilterBranches()) | | INVOKEVIRTUAL com.adteractive.framework.ConditionTestFilter.getFilterBranches ()[Lcom/adteractive/framework/Filter; | method-call(com.adteractive.framework.Filter[] com.adteractive.framework.ConditionTestFilter.getFilterBranches()) | method-call(void junit.framework.Assert.assertNull(java.lang.Object)) | | INVOKESTATIC com.adteractive.framework.test.ConditionTestFilterTest.assertNull (Ljava/lang/Object;)V | method-call(void junit.framework.Assert.assertNull(java.lang.Object)) | LDC com.adteractive.framework.test.ConditionTestFilterStub (line 67) | method-call(java.lang.String java.lang.Class.getSimpleName()) | | INVOKEVIRTUAL java.lang.Class.getSimpleName ()Ljava/lang/String; | method-call(java.lang.String java.lang.Class.getSimpleName()) | ALOAD_0 // com.adteractive.framework.test.ConditionTestFilterTest this | GETFIELD com.adteractive.framework.test.ConditionTestFilterTest.ctf Lcom/adteractive/framework/ConditionTestFilter; | method-call(java.lang.String com.adteractive.framework.FilterHelper.getName()) | | INVOKEVIRTUAL com.adteractive.framework.FilterHelper.getName ()Ljava/lang/String; | method-call(java.lang.String com.adteractive.framework.FilterHelper.getName()) | method-call(void junit.framework.Assert.assertEquals(java.lang.String, java.lang.String)) | | INVOKESTATIC com.adteractive.framework.test.ConditionTestFilterTest.assertEquals (Ljava/lang/String;Ljava/lang/String;)V | method-call(void junit.framework.Assert.assertEquals(java.lang.String, java.lang.String)) | RETURN (line 68) method-execution(void com.adteractive.framework.test.ConditionTestFilterTest.testConditionTestFilter()) end public void testConditionTestFilter() public void testConditionTestFilterString() org.aspectj.weaver.MethodDeclarationLineNumber: 73:2158 : method-execution(void com.adteractive.framework.test.ConditionTestFilterTest.testConditionTestFilterString()) | ALOAD_0 // com.adteractive.framework.test.ConditionTestFilterTest this (line 74) | NEW com.adteractive.framework.test.ConditionTestFilterStub | DUP | LDC "foo" | INVOKESPECIAL com.adteractive.framework.test.ConditionTestFilterStub.<init> (Ljava/lang/String;)V | PUTFIELD com.adteractive.framework.test.ConditionTestFilterTest.ctf Lcom/adteractive/framework/ConditionTestFilter; | ALOAD_0 // com.adteractive.framework.test.ConditionTestFilterTest this (line 75) | GETFIELD com.adteractive.framework.test.ConditionTestFilterTest.ctf Lcom/adteractive/framework/ConditionTestFilter; | method-call(com.adteractive.framework.Filter[] com.adteractive.framework.ConditionTestFilter.getFilterBranches()) | | INVOKEVIRTUAL com.adteractive.framework.ConditionTestFilter.getFilterBranches ()[Lcom/adteractive/framework/Filter; | method-call(com.adteractive.framework.Filter[] com.adteractive.framework.ConditionTestFilter.getFilterBranches()) | method-call(void junit.framework.Assert.assertNull(java.lang.Object)) | | INVOKESTATIC com.adteractive.framework.test.ConditionTestFilterTest.assertNull (Ljava/lang/Object;)V | method-call(void junit.framework.Assert.assertNull(java.lang.Object)) | LDC "foo" (line 76) | ALOAD_0 // com.adteractive.framework.test.ConditionTestFilterTest this | GETFIELD com.adteractive.framework.test.ConditionTestFilterTest.ctf Lcom/adteractive/framework/ConditionTestFilter; | method-call(java.lang.String com.adteractive.framework.FilterHelper.getName()) | | INVOKEVIRTUAL com.adteractive.framework.FilterHelper.getName ()Ljava/lang/String; | method-call(java.lang.String com.adteractive.framework.FilterHelper.getName()) | method-call(void junit.framework.Assert.assertEquals(java.lang.String, java.lang.String)) | | INVOKESTATIC com.adteractive.framework.test.ConditionTestFilterTest.assertEquals (Ljava/lang/String;Ljava/lang/String;)V | method-call(void junit.framework.Assert.assertEquals(java.lang.String, java.lang.String)) | RETURN (line 77) method-execution(void com.adteractive.framework.test.ConditionTestFilterTest.testConditionTestFilterString()) end public void testConditionTestFilterString() public void testConditionTestFilterStringFilterOfIOArray() org.aspectj.weaver.MethodDeclarationLineNumber: 82:2456 : method-execution(void com.adteractive.framework.test.ConditionTestFilterTest.testConditionTestFilterStringFilterOfIOArray()) | ALOAD_0 // com.adteractive.framework.test.ConditionTestFilterTest this (line 83) | NEW com.adteractive.framework.test.ConditionTestFilterStub | DUP | LDC "foo" | ALOAD_0 // com.adteractive.framework.test.ConditionTestFilterTest this | method-call(com.adteractive.framework.Filter[] com.adteractive.framework.test.ConditionTestFilterTest.makeBranches()) | | INVOKESPECIAL com.adteractive.framework.test.ConditionTestFilterTest.makeBranches ()[Lcom/adteractive/framework/Filter; | method-call(com.adteractive.framework.Filter[] com.adteractive.framework.test.ConditionTestFilterTest.makeBranches()) | INVOKESPECIAL com.adteractive.framework.test.ConditionTestFilterStub.<init> (Ljava/lang/String;[Lcom/adteractive/framework/Filter;)V | PUTFIELD com.adteractive.framework.test.ConditionTestFilterTest.ctf Lcom/adteractive/framework/ConditionTestFilter; | ALOAD_0 // com.adteractive.framework.test.ConditionTestFilterTest this (line 84) | GETFIELD com.adteractive.framework.test.ConditionTestFilterTest.ctf Lcom/adteractive/framework/ConditionTestFilter; | method-call(com.adteractive.framework.Filter[] com.adteractive.framework.ConditionTestFilter.getFilterBranches()) | | INVOKEVIRTUAL com.adteractive.framework.ConditionTestFilter.getFilterBranches ()[Lcom/adteractive/framework/Filter; | method-call(com.adteractive.framework.Filter[] com.adteractive.framework.ConditionTestFilter.getFilterBranches()) | method-call(void junit.framework.Assert.assertNotNull(java.lang.Object)) | | INVOKESTATIC com.adteractive.framework.test.ConditionTestFilterTest.assertNotNull (Ljava/lang/Object;)V | method-call(void junit.framework.Assert.assertNotNull(java.lang.Object)) | ICONST_3 (line 85) | ALOAD_0 // com.adteractive.framework.test.ConditionTestFilterTest this | GETFIELD com.adteractive.framework.test.ConditionTestFilterTest.ctf Lcom/adteractive/framework/ConditionTestFilter; | method-call(com.adteractive.framework.Filter[] com.adteractive.framework.ConditionTestFilter.getFilterBranches()) | | INVOKEVIRTUAL com.adteractive.framework.ConditionTestFilter.getFilterBranches ()[Lcom/adteractive/framework/Filter; | method-call(com.adteractive.framework.Filter[] com.adteractive.framework.ConditionTestFilter.getFilterBranches()) | ARRAYLENGTH | method-call(void junit.framework.Assert.assertEquals(int, int)) | | INVOKESTATIC com.adteractive.framework.test.ConditionTestFilterTest.assertEquals (II)V | method-call(void junit.framework.Assert.assertEquals(int, int)) | LDC "foo" (line 86) | ALOAD_0 // com.adteractive.framework.test.ConditionTestFilterTest this | GETFIELD com.adteractive.framework.test.ConditionTestFilterTest.ctf Lcom/adteractive/framework/ConditionTestFilter; | method-call(java.lang.String com.adteractive.framework.FilterHelper.getName()) | | INVOKEVIRTUAL com.adteractive.framework.FilterHelper.getName ()Ljava/lang/String; | method-call(java.lang.String com.adteractive.framework.FilterHelper.getName()) | method-call(void junit.framework.Assert.assertEquals(java.lang.String, java.lang.String)) | | INVOKESTATIC com.adteractive.framework.test.ConditionTestFilterTest.assertEquals (Ljava/lang/String;Ljava/lang/String;)V | method-call(void junit.framework.Assert.assertEquals(java.lang.String, java.lang.String)) | RETURN (line 87) method-execution(void com.adteractive.framework.test.ConditionTestFilterTest.testConditionTestFilterStringFilterOfIOArray()) end public void testConditionTestFilterStringFilterOfIOArray() private com.adteractive.framework.Filter[] makeBranches() org.aspectj.weaver.MethodDeclarationLineNumber: 89:2749 : method-execution(com.adteractive.framework.Filter[] com.adteractive.framework.test.ConditionTestFilterTest.makeBranches()) | ICONST_3 (line 90) | ANEWARRAY com.adteractive.framework.test.FilterHelperStub | ASTORE_1 | ALOAD_1 // com.adteractive.framework.Filter[] branches (line 91) | ICONST_0 | NEW com.adteractive.framework.test.FilterHelperStub | DUP | LDC "bf1" | INVOKESPECIAL com.adteractive.framework.test.FilterHelperStub.<init> (Ljava/lang/String;)V | AASTORE | ALOAD_1 // com.adteractive.framework.Filter[] branches (line 92) | ICONST_1 | NEW com.adteractive.framework.test.FilterHelperStub | DUP | LDC "bf12" | INVOKESPECIAL com.adteractive.framework.test.FilterHelperStub.<init> (Ljava/lang/String;)V | AASTORE | ALOAD_1 // com.adteractive.framework.Filter[] branches (line 93) | ICONST_2 | NEW com.adteractive.framework.test.FilterHelperStub | DUP | LDC "bf" | INVOKESPECIAL com.adteractive.framework.test.FilterHelperStub.<init> (Ljava/lang/String;)V | AASTORE | ALOAD_1 // com.adteractive.framework.Filter[] branches (line 94) | ARETURN method-execution(com.adteractive.framework.Filter[] com.adteractive.framework.test.ConditionTestFilterTest.makeBranches()) end private com.adteractive.framework.Filter[] makeBranches() end public class com.adteractive.framework.test.ConditionTestFilterTest when implementing on shadow method-call(com.adteractive.framework.Filter[] com.adteractive.framework.test.ConditionTestFilterTest.makeBranches()) when weaving type com.adteractive.framework.test.ConditionTestFilterTest when weaving classes when weaving when incrementally building BuildConfig[C:\cygwin\home\dwampler\work\workspace\.metadata\.plugins\org.eclipse.ajdt.core\adserver-service.generated.lst] #Files=259

Files changed in fix:
weaver/src/org/aspectj/weaver/bcel/LazyClassGen.java