Giter Site home page Giter Site logo

Comments (9)

timmolderez avatar timmolderez commented on May 28, 2024

Hi Hakan, good idea to post these problems in GitHub's issue tracker! At least it's a lot more organized than all of these e-mails..

I haven't encountered this problem before, but here are some suggestions that might help:

  • You should try to find out some more information about the exceptions you're getting. Try running "(.printStackTrace *e)" in your Clojure REPL after the exception was thrown. (*e is a special variable that represents the last exception that was thrown..)
  • Maybe you can investigate a little further what exactly is causing the problem inside ajsoot/advice-soot|method. You can find its source code in the EkekoAspectJ project, in the file damp,ekeko.aspectj.soot.clj.
  • Since you're not getting this exception in every AspectJ application, I'm suspecting something went with setting up the Contract4j5 project.. Do you still get these two exceptions if you simply remove the aspects mentioned in each exception?

from aop-metrics.

ozlerhakan avatar ozlerhakan commented on May 28, 2024

For the first option, the query doesn't show any error traces because actually I get some information (I am telling of about the Contract4j5 project) that returns from the aj/soot/advice-soot|method, and includes the above exceptions. The REPL console shows them together as well. However , about the MobileMedia07_AO project the soot query gives empty result, but still all the RuntimeExceptions appear for each advice on the REPL.

I think of that the result appears in any case, whether there is a runtimeException or not.

#<RuntimeException java.lang.RuntimeException: tried to get nonexistent method <org.contract4j5.policies.ReportIllegalAccessExceptions: void ajc$before$org_contract4j5_policies_ReportIllegalAccessExceptions$1$13f5cfd3(java.lang.IllegalAccessException)>>
#<RuntimeException java.lang.RuntimeException: tried to get nonexistent method <org.contract4j5.debug.ReportThrows: void ajc$afterThrowing$org_contract4j5_debug_ReportThrows$1$18a398b4(java.lang.Object,java.lang.Throwable)>>

([#<SootMethod <org.contract4j5.aspects.InvariantFieldCtorConditions$InvariantFieldCtorConditionsPerCtor: void ajc$afterReturning$org_contract4j5_aspects_InvariantFieldCtorConditions$InvariantFieldCtorConditionsPerCtor$2$d2878b90(java.lang.Object,org.aspectj.lang.JoinPoint$StaticPart)>> #<PatchingChain [r0 := @this: org.contract4j5.aspects.InvariantFieldCtorConditions$InvariantFieldCtorConditionsPerCtor, r1 := @parameter0: java.lang.Object, r2 := @parameter1: org.aspectj.lang.JoinPoint$StaticPart, $r7 = r0.<org.contract4j5.aspects.InvariantFieldCtorConditions$InvariantFieldCtorConditionsPerCtor: java.util.HashMap listOfAnnosFound>, if $r7 != null goto $r8 = r0.<org.contract4j5.aspects.InvariantFieldCtorConditions$InvariantFieldCtorConditionsPerCtor: java.util.HashMap listOfAnnosFound>, return, $r8 = r0.<org.contract4j5.aspects.InvariantFieldCtorConditions$InvariantFieldCtorConditionsPerCtor: java.util.HashMap listOfAnnosFound>, $r9 = virtualinvoke $r8.<java.util.HashMap: java.util.Set entrySet()>(), r3 = interfaceinvoke $r9.<java.util.Set: java.util.Iterator iterator()>(), goto [?= $z0 = interfaceinvoke r3.<java.util.Iterator: boolean hasNext()>()], $r10 = interfaceinvoke r3.<java.util.Iterator: java.lang.Object next()>(), r4 = (java.util.Map$Entry) $r10, $r11 = interfaceinvoke r4.<java.util.Map$Entry: java.lang.Object getValue()>(), r5 = (org.contract4j5.aspects.InvariantFieldCtorConditions$InvariantFieldCtorConditionsPerCtor$ListElem) $r11, $r12 = interfaceinvoke r4.<java.util.Map$Entry: java.lang.Object getKey()>(), $r13 = (java.lang.String) $r12, r6 = virtualinvoke r0.<org.contract4j5.aspects.InvariantFieldCtorConditions$InvariantFieldCtorConditionsPerCtor: org.contract4j5.context.TestContext getOrMakeTestContextAndTestExpr(org.aspectj.lang.JoinPoint$StaticPart,java.lang.Object,java.lang.String,org.contract4j5.aspects.InvariantFieldCtorConditions$InvariantFieldCtorConditionsPerCtor$ListElem)>(r2, r1, $r13, r5), $r14 = virtualinvoke r0.<org.contract4j5.aspects.InvariantFieldCtorConditions$InvariantFieldCtorConditionsPerCtor: org.contract4j5.enforcer.ContractEnforcer getContractEnforcer()>(), $r15 = r5.<org.contract4j5.aspects.InvariantFieldCtorConditions$InvariantFieldCtorConditionsPerCtor$ListElem: org.contract4j5.contract.Invar invar>, $r16 = interfaceinvoke $r15.<org.contract4j5.contract.Invar: java.lang.String message()>(), interfaceinvoke $r14.<org.contract4j5.enforcer.ContractEnforcer: void invokeTest(java.lang.String,java.lang.String,org.contract4j5.context.TestContext)>("Invar", $r16, r6), $z0 = interfaceinvoke r3.<java.util.Iterator: boolean hasNext()>(), if $z0 != 0 goto $r10 = interfaceinvoke r3.<java.util.Iterator: java.lang.Object next()>(), return]>] [#<SootMethod <org.contract4j5.aspects.InvariantTypeConditions: void ajc$afterReturning$org_contract4j5_aspects_InvariantTypeConditions$2$9b9ecf5(org.contract4j5.contract.Invar,java.lang.Object,org.aspectj.lang.JoinPoint$StaticPart,org.aspectj.lang.JoinPoint)>> #<PatchingChain [r0 := @this: org.contract4j5.aspects.InvariantTypeConditions, r1 := @parameter0: org.contract4j5.contract.Invar, r2 := @parameter1: java.lang.Object, r3 := @parameter2: org.aspectj.lang.JoinPoint$StaticPart, r4 := @parameter3: org.aspectj.lang.JoinPoint, $r12 = interfaceinvoke r3.<org.aspectj.lang.JoinPoint$StaticPart: org.aspectj.lang.Signature getSignature()>(), r5 = (org.aspectj.lang.reflect.ConstructorSignature) $r12, n0 = null, r6 = interfaceinvoke r3.<org.aspectj.lang.JoinPoint$StaticPart: org.aspectj.lang.reflect.SourceLocation getSourceLocation()>(), r7 = interfaceinvoke r6.<org.aspectj.lang.reflect.SourceLocation: java.lang.String getFileName()>(), i0 = interfaceinvoke r6.<org.aspectj.lang.reflect.SourceLocation: int getLine()>(), $r13 = new org.contract4j5.context.TestContextCache$Key, specialinvoke $r13.<org.contract4j5.context.TestContextCache$Key: void <init>(java.lang.String,java.lang.String,int)>("Invar", r7, i0), r8 = $r13, $r14 = <org.contract4j5.controller.SystemCaches: org.contract4j5.context.TestContextCache testContextCache>, r9 = virtualinvoke $r14.<org.contract4j5.context.TestContextCache: org.contract4j5.context.TestContextCache$Entry get(org.contract4j5.context.TestContextCache$Key)>(r8), if r9 == null goto r10 = interfaceinvoke r5.<org.aspectj.lang.reflect.ConstructorSignature: java.lang.String[] getParameterNames()>(), r15 = specialinvoke r0.<org.contract4j5.aspects.InvariantTypeConditions: org.contract4j5.context.TestContext updateContext(org.aspectj.lang.JoinPoint,java.lang.Object,org.contract4j5.context.TestContextCache$Entry)>(r4, r2, r9), goto [?= $r16 = virtualinvoke r0.<org.contract4j5.aspects.InvariantTypeConditions: java.util.Map determineOldValues(org.contract4j5.context.TestContext)>(r15)], r10 = interfaceinvoke r5.<org.aspectj.lang.reflect.ConstructorSignature: java.lang.String[] getParameterNames()>(), r11 = interfaceinvoke r5.<org.aspectj.lang.reflect.ConstructorSignature: java.lang.Class[] getParameterTypes()>(), r15 = specialinvoke r0.<org.contract4j5.aspects.InvariantTypeConditions: org.contract4j5.context.TestContext makeNewTestContext(org.aspectj.lang.JoinPoint,org.contract4j5.contract.Invar,java.lang.Object,java.lang.String[],java.lang.Class[],java.lang.String,int,org.contract4j5.context.TestContextCache$Key)>(r4, r1, r2, r10, r11, r7, i0, r8), $r16 = virtualinvoke r0.<org.contract4j5.aspects.InvariantTypeConditions: java.util.Map determineOldValues(org.contract4j5.context.TestContext)>(r15), interfaceinvoke r15.<org.contract4j5.context.TestContext: void setOldValuesMap(java.util.Map)>($r16), $r17 = virtualinvoke r0.<org.contract4j5.aspects.InvariantTypeConditions: org.contract4j5.enforcer.ContractEnforcer getContractEnforcer()>(), $r18 = interfaceinvoke r1.<org.contract4j5.contract.Invar: java.lang.String message()>(), interfaceinvoke $r17.<org.contract4j5.enforcer.ContractEnforcer: void invokeTest(java.lang.String,java.lang.String,org.contract4j5.context.TestContext)>("Invar", $r18, r15), return]>] [#<SootMethod <org.contract4j5.aspects.MethodBoundaryConditions: void ajc$around$org_contract4j5_aspects_MethodBoundaryConditions$3$b58a58d9(org.contract4j5.contract.Post,java.lang.Object,org.aspectj.runtime.internal.AroundClosure,org.aspectj.lang.JoinPoint)>> #<PatchingChain [r0 := @this: org.contract4j5.aspects.MethodBoundaryConditions, r1 := @parameter0: org.contract4j5.contract.Post, r2 := @parameter1: java.lang.Object, r3 := @parameter2: org.aspectj.runtime.internal.AroundClosure, r4 := @parameter3: org.aspectj.lang.JoinPoint, $r6 = interfaceinvoke r1.<org.contract4j5.contract.Post: java.lang.String value()>(), $r7 = interfaceinvoke r1.<org.contract4j5.contract.Post: java.lang.String message()>(), $r8 = virtualinvoke r0.<org.contract4j5.aspects.MethodBoundaryConditions: org.contract4j5.testexpression.DefaultTestExpressionMaker getDefaultPostReturningVoidTestExpressionMaker()>(), r5 = staticinvoke <org.contract4j5.aspects.MethodBoundaryConditions: org.contract4j5.context.TestContext ajc$inlineAccessMethod$org_contract4j5_aspects_MethodBoundaryConditions$org_contract4j5_aspects_MethodBoundaryConditions$doBeforeTest(org.contract4j5.aspects.MethodBoundaryConditions,org.aspectj.lang.JoinPoint,java.lang.Object,java.lang.annotation.Annotation,java.lang.String,java.lang.String,java.lang.String,org.contract4j5.testexpression.DefaultTestExpressionMaker)>(r0, r4, r2, r1, "Post", $r6, $r7, $r8), $r9 = virtualinvoke r0.<org.contract4j5.aspects.MethodBoundaryConditions: java.util.Map determineOldValues(org.contract4j5.context.TestContext)>(r5), interfaceinvoke r5.<org.contract4j5.context.TestContext: void setOldValuesMap(java.util.Map)>($r9), staticinvoke <org.contract4j5.aspects.MethodBoundaryConditions: void ajc$around$org_contract4j5_aspects_MethodBoundaryConditions$3$b58a58d9proceed(org.contract4j5.contract.Post,java.lang.Object,org.aspectj.runtime.internal.AroundClosure)>(r1, r2, r3), $r10 = virtualinvoke r0.<org.contract4j5.aspects.MethodBoundaryConditions: org.contract4j5.enforcer.ContractEnforcer getContractEnforcer()>(), $r11 = interfaceinvoke r1.<org.contract4j5.contract.Post: java.lang.String message()>(), interfaceinvoke $r10.<org.contract4j5.enforcer.ContractEnforcer: void invokeTest(java.lang.String,java.lang.String,org.contract4j5.context.TestContext)>("Post", $r11, r5), return]>] [#<SootMethod <org.contract4j5.aspects.MethodBoundaryConditions: java.lang.Object ajc$around$org_contract4j5_aspects_MethodBoundaryConditions$2$ec2a300d(org.contract4j5.contract.Post,java.lang.Object,org.aspectj.runtime.internal.AroundClosure,org.aspectj.lang.JoinPoint)>> #<PatchingChain [r0 := @this: org.contract4j5.aspects.MethodBoundaryConditions, r1 := @parameter0: org.contract4j5.contract.Post, r2 := @parameter1: java.lang.Object, r3 := @parameter2: org.aspectj.runtime.internal.AroundClosure, r4 := @parameter3: org.aspectj.lang.JoinPoint, $r7 = interfaceinvoke r1.<org.contract4j5.contract.Post: java.lang.String value()>(), $r8 = interfaceinvoke r1.<org.contract4j5.contract.Post: java.lang.String message()>(), $r9 = virtualinvoke r0.<org.contract4j5.aspects.MethodBoundaryConditions: org.contract4j5.testexpression.DefaultTestExpressionMaker getDefaultPostTestExpressionMaker()>(), r5 = staticinvoke <org.contract4j5.aspects.MethodBoundaryConditions: org.contract4j5.context.TestContext ajc$inlineAccessMethod$org_contract4j5_aspects_MethodBoundaryConditions$org_contract4j5_aspects_MethodBoundaryConditions$doBeforeTest(org.contract4j5.aspects.MethodBoundaryConditions,org.aspectj.lang.JoinPoint,java.lang.Object,java.lang.annotation.Annotation,java.lang.String,java.lang.String,java.lang.String,org.contract4j5.testexpression.DefaultTestExpressionMaker)>(r0, r4, r2, r1, "Post", $r7, $r8, $r9), $r10 = virtualinvoke r0.<org.contract4j5.aspects.MethodBoundaryConditions: java.util.Map determineOldValues(org.contract4j5.context.TestContext)>(r5), interfaceinvoke r5.<org.contract4j5.context.TestContext: void setOldValuesMap(java.util.Map)>($r10), r6 = staticinvoke <org.contract4j5.aspects.MethodBoundaryConditions: java.lang.Object ajc$around$org_contract4j5_aspects_MethodBoundaryConditions$2$ec2a300dproceed(org.contract4j5.contract.Post,java.lang.Object,org.aspectj.runtime.internal.AroundClosure)>(r1, r2, r3), $r11 = interfaceinvoke r5.<org.contract4j5.context.TestContext: org.contract4j5.instance.Instance getMethodResult()>(), virtualinvoke $r11.<org.contract4j5.instance.Instance: void setValue(java.lang.Object)>(r6), $r12 = virtualinvoke r0.<org.contract4j5.aspects.MethodBoundaryConditions: org.contract4j5.enforcer.ContractEnforcer getContractEnforcer()>(), $r13 = interfaceinvoke r1.<org.contract4j5.contract.Post: java.lang.String message()>(), interfaceinvoke $r12.<org.contract4j5.enforcer.ContractEnforcer: void invokeTest(java.lang.String,java.lang.String,org.contract4j5.context.TestContext)>("Post", $r13, r5), return r6]>] [#<SootMethod <org.contract4j5.aspects.InvariantFieldCtorConditions$InvariantFieldCtorConditionsPerCtor: void ajc$afterReturning$org_contract4j5_aspects_InvariantFieldCtorConditions$InvariantFieldCtorConditionsPerCtor$1$886d37de(org.contract4j5.contract.Invar,java.lang.Object,java.lang.Object,org.aspectj.lang.JoinPoint$StaticPart)>> #<PatchingChain [r0 := @this: org.contract4j5.aspects.InvariantFieldCtorConditions$InvariantFieldCtorConditionsPerCtor, r1 := @parameter0: org.contract4j5.contract.Invar, r2 := @parameter1: java.lang.Object, r3 := @parameter2: java.lang.Object, r4 := @parameter3: org.aspectj.lang.JoinPoint$StaticPart, $r11 = r0.<org.contract4j5.aspects.InvariantFieldCtorConditions$InvariantFieldCtorConditionsPerCtor: java.util.HashMap listOfAnnosFound>, if $r11 != null goto r6 = interfaceinvoke r4.<org.aspectj.lang.JoinPoint$StaticPart: org.aspectj.lang.Signature getSignature()>(), $r5 = new java.util.HashMap, specialinvoke $r5.<java.util.HashMap: void <init>()>(), r0.<org.contract4j5.aspects.InvariantFieldCtorConditions$InvariantFieldCtorConditionsPerCtor: java.util.HashMap listOfAnnosFound> = $r5, r6 = interfaceinvoke r4.<org.aspectj.lang.JoinPoint$StaticPart: org.aspectj.lang.Signature getSignature()>(), $z0 = <org.contract4j5.aspects.InvariantFieldCtorConditions$InvariantFieldCtorConditionsPerCtor: boolean $assertionsDisabled>, if $z0 != 0 goto r7 = (org.aspectj.lang.reflect.FieldSignature) r6, $z1 = r6 instanceof org.aspectj.lang.reflect.FieldSignature, if $z1 != 0 goto r7 = (org.aspectj.lang.reflect.FieldSignature) r6, $r12 = new java.lang.AssertionError, specialinvoke $r12.<java.lang.AssertionError: void <init>()>(), throw $r12, r7 = (org.aspectj.lang.reflect.FieldSignature) r6, r8 = interfaceinvoke r7.<org.aspectj.lang.reflect.FieldSignature: java.lang.reflect.Field getField()>(), r9 = virtualinvoke r8.<java.lang.reflect.Field: java.lang.String getName()>(), $r13 = new org.contract4j5.instance.Instance, $r14 = virtualinvoke r8.<java.lang.reflect.Field: java.lang.Class getType()>(), specialinvoke $r13.<org.contract4j5.instance.Instance: void <init>(java.lang.String,java.lang.Class,java.lang.Object)>(r9, $r14, r3), r10 = $r13, $r15 = r0.<org.contract4j5.aspects.InvariantFieldCtorConditions$InvariantFieldCtorConditionsPerCtor: java.util.HashMap listOfAnnosFound>, $r16 = new org.contract4j5.aspects.InvariantFieldCtorConditions$InvariantFieldCtorConditionsPerCtor$ListElem, specialinvoke $r16.<org.contract4j5.aspects.InvariantFieldCtorConditions$InvariantFieldCtorConditionsPerCtor$ListElem: void <init>(org.contract4j5.contract.Invar,org.contract4j5.instance.Instance)>(r1, r10), virtualinvoke $r15.<java.util.HashMap: java.lang.Object put(java.lang.Object,java.lang.Object)>(r9, $r16), return]>] [#<SootMethod <org.contract4j5.aspects.MethodBoundaryConditions: void ajc$before$org_contract4j5_aspects_MethodBoundaryConditions$1$d79ef325(org.contract4j5.contract.Pre,java.lang.Object,org.aspectj.lang.JoinPoint)>> #<PatchingChain [r0 := @this: org.contract4j5.aspects.MethodBoundaryConditions, r1 := @parameter0: org.contract4j5.contract.Pre, r2 := @parameter1: java.lang.Object, r3 := @parameter2: org.aspectj.lang.JoinPoint, $r5 = interfaceinvoke r1.<org.contract4j5.contract.Pre: java.lang.String value()>(), $r6 = interfaceinvoke r1.<org.contract4j5.contract.Pre: java.lang.String message()>(), $r7 = virtualinvoke r0.<org.contract4j5.aspects.MethodBoundaryConditions: org.contract4j5.testexpression.DefaultTestExpressionMaker getDefaultPreTestExpressionMaker()>(), r4 = virtualinvoke r0.<org.contract4j5.aspects.MethodBoundaryConditions: org.contract4j5.context.TestContext doBeforeTest(org.aspectj.lang.JoinPoint,java.lang.Object,java.lang.annotation.Annotation,java.lang.String,java.lang.String,java.lang.String,org.contract4j5.testexpression.DefaultTestExpressionMaker)>(r3, r2, r1, "Pre", $r5, $r6, $r7), $r8 = virtualinvoke r0.<org.contract4j5.aspects.MethodBoundaryConditions: org.contract4j5.enforcer.ContractEnforcer getContractEnforcer()>(), $r9 = interfaceinvoke r1.<org.contract4j5.contract.Pre: java.lang.String message()>(), interfaceinvoke $r8.<org.contract4j5.enforcer.ContractEnforcer: void invokeTest(java.lang.String,java.lang.String,org.contract4j5.context.TestContext)>("Pre", $r9, r4), return]>] [#<SootMethod <org.contract4j5.aspects.InvariantFieldConditions: java.lang.Object ajc$around$org_contract4j5_aspects_InvariantFieldConditions$2$47acb06(org.contract4j5.contract.Invar,java.lang.Object,org.aspectj.runtime.internal.AroundClosure,org.aspectj.lang.JoinPoint)>> #<PatchingChain [r0 := @this: org.contract4j5.aspects.InvariantFieldConditions, r1 := @parameter0: org.contract4j5.contract.Invar, r2 := @parameter1: java.lang.Object, r3 := @parameter2: org.aspectj.runtime.internal.AroundClosure, r4 := @parameter3: org.aspectj.lang.JoinPoint, $r7 = interfaceinvoke r1.<org.contract4j5.contract.Invar: java.lang.String value()>(), $r8 = interfaceinvoke r1.<org.contract4j5.contract.Invar: java.lang.String message()>(), $r9 = virtualinvoke r0.<org.contract4j5.aspects.InvariantFieldConditions: org.contract4j5.testexpression.DefaultTestExpressionMaker getDefaultFieldInvarTestExpressionMaker()>(), r5 = staticinvoke <org.contract4j5.aspects.InvariantFieldConditions: org.contract4j5.context.TestContext ajc$inlineAccessMethod$org_contract4j5_aspects_InvariantFieldConditions$org_contract4j5_aspects_InvariantFieldConditions$doBeforeTest(org.contract4j5.aspects.InvariantFieldConditions,org.aspectj.lang.JoinPoint,java.lang.Object,java.lang.Object,java.lang.String,java.lang.String,java.lang.String,org.contract4j5.testexpression.DefaultTestExpressionMaker)>(r0, r4, r2, null, "Invar", $r7, $r8, $r9), r6 = staticinvoke <org.contract4j5.aspects.InvariantFieldConditions: java.lang.Object ajc$around$org_contract4j5_aspects_InvariantFieldConditions$2$47acb06proceed(org.contract4j5.contract.Invar,java.lang.Object,org.aspectj.runtime.internal.AroundClosure)>(r1, r2, r3), $r10 = interfaceinvoke r5.<org.contract4j5.context.TestContext: org.contract4j5.instance.Instance getField()>(), virtualinvoke $r10.<org.contract4j5.instance.Instance: void setValue(java.lang.Object)>(r6), $r11 = interfaceinvoke r5.<org.contract4j5.context.TestContext: org.contract4j5.instance.Instance getField()>(), interfaceinvoke r5.<org.contract4j5.context.TestContext: void setMethodResult(org.contract4j5.instance.Instance)>($r11), $r12 = virtualinvoke r0.<org.contract4j5.aspects.InvariantFieldConditions: org.contract4j5.enforcer.ContractEnforcer getContractEnforcer()>(), $r13 = interfaceinvoke r1.<org.contract4j5.contract.Invar: java.lang.String message()>(), interfaceinvoke $r12.<org.contract4j5.enforcer.ContractEnforcer: void invokeTest(java.lang.String,java.lang.String,org.contract4j5.context.TestContext)>("Invar", $r13, r5), return r6]>] [#<SootMethod <org.contract4j5.aspects.InvariantTypeConditions: java.lang.Object ajc$around$org_contract4j5_aspects_InvariantTypeConditions$1$bc78eb6d(org.contract4j5.contract.Invar,java.lang.Object,org.aspectj.runtime.internal.AroundClosure,org.aspectj.lang.JoinPoint$StaticPart,org.aspectj.lang.JoinPoint)>> #<PatchingChain [r0 := @this: org.contract4j5.aspects.InvariantTypeConditions, r1 := @parameter0: org.contract4j5.contract.Invar, r2 := @parameter1: java.lang.Object, r3 := @parameter2: org.aspectj.runtime.internal.AroundClosure, r4 := @parameter3: org.aspectj.lang.JoinPoint$StaticPart, r5 := @parameter4: org.aspectj.lang.JoinPoint, $r14 = interfaceinvoke r4.<org.aspectj.lang.JoinPoint$StaticPart: org.aspectj.lang.Signature getSignature()>(), r6 = (org.aspectj.lang.reflect.MethodSignature) $r14, n0 = null, r7 = interfaceinvoke r4.<org.aspectj.lang.JoinPoint$StaticPart: org.aspectj.lang.reflect.SourceLocation getSourceLocation()>(), r8 = interfaceinvoke r7.<org.aspectj.lang.reflect.SourceLocation: java.lang.String getFileName()>(), i0 = interfaceinvoke r7.<org.aspectj.lang.reflect.SourceLocation: int getLine()>(), $r15 = new org.contract4j5.context.TestContextCache$Key, specialinvoke $r15.<org.contract4j5.context.TestContextCache$Key: void <init>(java.lang.String,java.lang.String,int)>("Invar", r8, i0), r9 = $r15, $r16 = <org.contract4j5.controller.SystemCaches: org.contract4j5.context.TestContextCache testContextCache>, r10 = virtualinvoke $r16.<org.contract4j5.context.TestContextCache: org.contract4j5.context.TestContextCache$Entry get(org.contract4j5.context.TestContextCache$Key)>(r9), if r10 == null goto r11 = interfaceinvoke r6.<org.aspectj.lang.reflect.MethodSignature: java.lang.String[] getParameterNames()>(), r17 = staticinvoke <org.contract4j5.aspects.InvariantTypeConditions: org.contract4j5.context.TestContext ajc$inlineAccessMethod$org_contract4j5_aspects_InvariantTypeConditions$org_contract4j5_aspects_InvariantTypeConditions$updateContext(org.contract4j5.aspects.InvariantTypeConditions,org.aspectj.lang.JoinPoint,java.lang.Object,org.contract4j5.context.TestContextCache$Entry)>(r0, r5, r2, r10), goto [?= $r18 = virtualinvoke r0.<org.contract4j5.aspects.InvariantTypeConditions: java.util.Map determineOldValues(org.contract4j5.context.TestContext)>(r17)], r11 = interfaceinvoke r6.<org.aspectj.lang.reflect.MethodSignature: java.lang.String[] getParameterNames()>(), r12 = interfaceinvoke r6.<org.aspectj.lang.reflect.MethodSignature: java.lang.Class[] getParameterTypes()>(), r17 = staticinvoke <org.contract4j5.aspects.InvariantTypeConditions: org.contract4j5.context.TestContext ajc$inlineAccessMethod$org_contract4j5_aspects_InvariantTypeConditions$org_contract4j5_aspects_InvariantTypeConditions$makeNewTestContext(org.contract4j5.aspects.InvariantTypeConditions,org.aspectj.lang.JoinPoint,org.contract4j5.contract.Invar,java.lang.Object,java.lang.String[],java.lang.Class[],java.lang.String,int,org.contract4j5.context.TestContextCache$Key)>(r0, r5, r1, r2, r11, r12, r8, i0, r9), $r18 = virtualinvoke r0.<org.contract4j5.aspects.InvariantTypeConditions: java.util.Map determineOldValues(org.contract4j5.context.TestContext)>(r17), interfaceinvoke r17.<org.contract4j5.context.TestContext: void setOldValuesMap(java.util.Map)>($r18), $r19 = virtualinvoke r0.<org.contract4j5.aspects.InvariantTypeConditions: org.contract4j5.enforcer.ContractEnforcer getContractEnforcer()>(), $r20 = interfaceinvoke r1.<org.contract4j5.contract.Invar: java.lang.String message()>(), interfaceinvoke $r19.<org.contract4j5.enforcer.ContractEnforcer: void invokeTest(java.lang.String,java.lang.String,org.contract4j5.context.TestContext)>("Invar", $r20, r17), r13 = staticinvoke <org.contract4j5.aspects.InvariantTypeConditions: java.lang.Object ajc$around$org_contract4j5_aspects_InvariantTypeConditions$1$bc78eb6dproceed(org.contract4j5.contract.Invar,java.lang.Object,org.aspectj.runtime.internal.AroundClosure)>(r1, r2, r3), $r21 = new org.contract4j5.instance.Instance, $r22 = interfaceinvoke r6.<org.aspectj.lang.reflect.MethodSignature: java.lang.Class getReturnType()>(), specialinvoke $r21.<org.contract4j5.instance.Instance: void <init>(java.lang.String,java.lang.Class,java.lang.Object)>("", $r22, r13), interfaceinvoke r17.<org.contract4j5.context.TestContext: void setMethodResult(org.contract4j5.instance.Instance)>($r21), $r23 = virtualinvoke r0.<org.contract4j5.aspects.InvariantTypeConditions: org.contract4j5.enforcer.ContractEnforcer getContractEnforcer()>(), $r24 = interfaceinvoke r1.<org.contract4j5.contract.Invar: java.lang.String message()>(), interfaceinvoke $r23.<org.contract4j5.enforcer.ContractEnforcer: void invokeTest(java.lang.String,java.lang.String,org.contract4j5.context.TestContext)>("Invar", $r24, r17), return r13]>] [#<SootMethod <org.contract4j5.aspects.ConstructorBoundaryConditions: void ajc$after$org_contract4j5_aspects_ConstructorBoundaryConditions$2$ba1a60fa(org.contract4j5.contract.Post,java.lang.Object,org.aspectj.lang.JoinPoint)>> #<PatchingChain [r0 := @this: org.contract4j5.aspects.ConstructorBoundaryConditions, r1 := @parameter0: org.contract4j5.contract.Post, r2 := @parameter1: java.lang.Object, r3 := @parameter2: org.aspectj.lang.JoinPoint, $r4 = interfaceinvoke r1.<org.contract4j5.contract.Post: java.lang.String value()>(), $r5 = interfaceinvoke r1.<org.contract4j5.contract.Post: java.lang.String message()>(), $r6 = virtualinvoke r0.<org.contract4j5.aspects.ConstructorBoundaryConditions: org.contract4j5.testexpression.DefaultTestExpressionMaker getDefaultPostReturningVoidTestExpressionMaker()>(), virtualinvoke r0.<org.contract4j5.aspects.ConstructorBoundaryConditions: void doTest(org.aspectj.lang.JoinPoint,java.lang.Object,java.lang.annotation.Annotation,java.lang.String,java.lang.String,java.lang.String,org.contract4j5.testexpression.DefaultTestExpressionMaker)>(r3, r2, r1, "Post", $r4, $r5, $r6), return]>] [#<SootMethod <org.contract4j5.aspects.ConstructorBoundaryConditions: void ajc$before$org_contract4j5_aspects_ConstructorBoundaryConditions$1$a13f6d17(org.contract4j5.contract.Pre,org.aspectj.lang.JoinPoint)>> #<PatchingChain [r0 := @this: org.contract4j5.aspects.ConstructorBoundaryConditions, r1 := @parameter0: org.contract4j5.contract.Pre, r2 := @parameter1: org.aspectj.lang.JoinPoint, $r3 = interfaceinvoke r1.<org.contract4j5.contract.Pre: java.lang.String value()>(), $r4 = interfaceinvoke r1.<org.contract4j5.contract.Pre: java.lang.String message()>(), $r5 = virtualinvoke r0.<org.contract4j5.aspects.ConstructorBoundaryConditions: org.contract4j5.testexpression.DefaultTestExpressionMaker getDefaultPreTestExpressionMaker()>(), virtualinvoke r0.<org.contract4j5.aspects.ConstructorBoundaryConditions: void doTest(org.aspectj.lang.JoinPoint,java.lang.Object,java.lang.annotation.Annotation,java.lang.String,java.lang.String,java.lang.String,org.contract4j5.testexpression.DefaultTestExpressionMaker)>(r2, null, r1, "Pre", $r3, $r4, $r5), return]>] [#<SootMethod <org.contract4j5.aspects.InvariantFieldConditions: void ajc$around$org_contract4j5_aspects_InvariantFieldConditions$1$631c0f56(org.contract4j5.contract.Invar,java.lang.Object,java.lang.Object,org.aspectj.runtime.internal.AroundClosure,org.aspectj.lang.JoinPoint)>> #<PatchingChain [r0 := @this: org.contract4j5.aspects.InvariantFieldConditions, r1 := @parameter0: org.contract4j5.contract.Invar, r2 := @parameter1: java.lang.Object, r3 := @parameter2: java.lang.Object, r4 := @parameter3: org.aspectj.runtime.internal.AroundClosure, r5 := @parameter4: org.aspectj.lang.JoinPoint, $r7 = interfaceinvoke r1.<org.contract4j5.contract.Invar: java.lang.String value()>(), $r8 = interfaceinvoke r1.<org.contract4j5.contract.Invar: java.lang.String message()>(), $r9 = virtualinvoke r0.<org.contract4j5.aspects.InvariantFieldConditions: org.contract4j5.testexpression.DefaultTestExpressionMaker getDefaultFieldInvarTestExpressionMaker()>(), r6 = staticinvoke <org.contract4j5.aspects.InvariantFieldConditions: org.contract4j5.context.TestContext ajc$inlineAccessMethod$org_contract4j5_aspects_InvariantFieldConditions$org_contract4j5_aspects_InvariantFieldConditions$doBeforeTest(org.contract4j5.aspects.InvariantFieldConditions,org.aspectj.lang.JoinPoint,java.lang.Object,java.lang.Object,java.lang.String,java.lang.String,java.lang.String,org.contract4j5.testexpression.DefaultTestExpressionMaker)>(r0, r5, r2, r3, "Invar", $r7, $r8, $r9), $r10 = virtualinvoke r0.<org.contract4j5.aspects.InvariantFieldConditions: java.util.Map determineOldValues(org.contract4j5.context.TestContext)>(r6), interfaceinvoke r6.<org.contract4j5.context.TestContext: void setOldValuesMap(java.util.Map)>($r10), staticinvoke <org.contract4j5.aspects.InvariantFieldConditions: void ajc$around$org_contract4j5_aspects_InvariantFieldConditions$1$631c0f56proceed(org.contract4j5.contract.Invar,java.lang.Object,java.lang.Object,org.aspectj.runtime.internal.AroundClosure)>(r1, r2, r3, r4), $r11 = virtualinvoke r0.<org.contract4j5.aspects.InvariantFieldConditions: org.contract4j5.enforcer.ContractEnforcer getContractEnforcer()>(), $r12 = interfaceinvoke r1.<org.contract4j5.contract.Invar: java.lang.String message()>(), interfaceinvoke $r11.<org.contract4j5.enforcer.ContractEnforcer: void invokeTest(java.lang.String,java.lang.String,org.contract4j5.context.TestContext)>("Invar", $r12, r6), return]>] [#<SootMethod <org.contract4j5.aspects.InvariantMethodConditions: java.lang.Object ajc$around$org_contract4j5_aspects_InvariantMethodConditions$1$f588a9a3(org.contract4j5.contract.Invar,java.lang.Object,org.aspectj.runtime.internal.AroundClosure,org.aspectj.lang.JoinPoint$StaticPart,org.aspectj.lang.JoinPoint)>> #<PatchingChain [r0 := @this: org.contract4j5.aspects.InvariantMethodConditions, r1 := @parameter0: org.contract4j5.contract.Invar, r2 := @parameter1: java.lang.Object, r3 := @parameter2: org.aspectj.runtime.internal.AroundClosure, r4 := @parameter3: org.aspectj.lang.JoinPoint$StaticPart, r5 := @parameter4: org.aspectj.lang.JoinPoint, r6 = interfaceinvoke r4.<org.aspectj.lang.JoinPoint$StaticPart: org.aspectj.lang.Signature getSignature()>(), r7 = (org.aspectj.lang.reflect.MethodSignature) r6, n0 = null, r8 = interfaceinvoke r5.<org.aspectj.lang.JoinPoint: org.aspectj.lang.reflect.SourceLocation getSourceLocation()>(), r9 = interfaceinvoke r8.<org.aspectj.lang.reflect.SourceLocation: java.lang.String getFileName()>(), i0 = interfaceinvoke r8.<org.aspectj.lang.reflect.SourceLocation: int getLine()>(), $r22 = new org.contract4j5.context.TestContextCache$Key, specialinvoke $r22.<org.contract4j5.context.TestContextCache$Key: void <init>(java.lang.String,java.lang.String,int)>("Invar", r9, i0), r10 = $r22, $r23 = <org.contract4j5.controller.SystemCaches: org.contract4j5.context.TestContextCache testContextCache>, r11 = virtualinvoke $r23.<org.contract4j5.context.TestContextCache: org.contract4j5.context.TestContextCache$Entry get(org.contract4j5.context.TestContextCache$Key)>(r10), if r11 == null goto r28 = interfaceinvoke r6.<org.aspectj.lang.Signature: java.lang.String getName()>(), r24 = r11.<org.contract4j5.context.TestContextCache$Entry: org.contract4j5.context.TestContext testContext>, $r25 = interfaceinvoke r24.<org.contract4j5.context.TestContext: org.contract4j5.instance.Instance getInstance()>(), virtualinvoke $r25.<org.contract4j5.instance.Instance: void setValue(java.lang.Object)>(r2), r12 = interfaceinvoke r5.<org.aspectj.lang.JoinPoint: java.lang.Object[] getArgs()>(), $r26 = r11.<org.contract4j5.context.TestContextCache$Entry: java.lang.String[] argNames>, $r27 = r11.<org.contract4j5.context.TestContextCache$Entry: java.lang.Class[] argTypes>, r13 = staticinvoke <org.contract4j5.instance.InstanceUtils: org.contract4j5.instance.Instance[] makeInstanceArray(java.lang.String[],java.lang.Class[],java.lang.Object[])>($r26, $r27, r12), interfaceinvoke r24.<org.contract4j5.context.TestContext: void setMethodArgs(org.contract4j5.instance.Instance[])>(r13), goto [?= $r45 = virtualinvoke r0.<org.contract4j5.aspects.InvariantMethodConditions: java.util.Map determineOldValues(org.contract4j5.context.TestContext)>(r24)], r28 = interfaceinvoke r6.<org.aspectj.lang.Signature: java.lang.String getName()>(), r29 = virtualinvoke r2.<java.lang.Object: java.lang.Class getClass()>(), r14 = interfaceinvoke r7.<org.aspectj.lang.reflect.MethodSignature: java.lang.String[] getParameterNames()>(), r15 = interfaceinvoke r7.<org.aspectj.lang.reflect.MethodSignature: java.lang.Class[] getParameterTypes()>(), r16 = interfaceinvoke r5.<org.aspectj.lang.JoinPoint: java.lang.Object[] getArgs()>(), r17 = staticinvoke <org.contract4j5.instance.InstanceUtils: org.contract4j5.instance.Instance[] makeInstanceArray(java.lang.String[],java.lang.Class[],java.lang.Object[])>(r14, r15, r16), $r30 = new org.contract4j5.instance.Instance, $r31 = virtualinvoke r29.<java.lang.Class: java.lang.String getName()>(), specialinvoke $r30.<org.contract4j5.instance.Instance: void <init>(java.lang.String,java.lang.Class,java.lang.Object)>($r31, r29, r2), r18 = $r30, $r32 = new org.contract4j5.context.TestContextImpl, $r33 = interfaceinvoke r1.<org.contract4j5.contract.Invar: java.lang.String value()>(), specialinvoke $r32.<org.contract4j5.context.TestContextImpl: void <init>(java.lang.String,java.lang.String,org.contract4j5.instance.Instance,org.contract4j5.instance.Instance,org.contract4j5.instance.Instance[],org.contract4j5.instance.Instance,java.util.Map,java.lang.String,int)>($r33, r28, r18, null, r17, null, null, r9, i0), r24 = $r32, $r34 = virtualinvoke r0.<org.contract4j5.aspects.InvariantMethodConditions: org.contract4j5.testexpression.ParentTestExpressionFinder getParentTestExpressionFinder()>(), $r35 = interfaceinvoke r1.<org.contract4j5.contract.Invar: java.lang.String value()>(), $r36 = interfaceinvoke r7.<org.aspectj.lang.reflect.MethodSignature: java.lang.reflect.Method getMethod()>(), r19 = interfaceinvoke $r34.<org.contract4j5.testexpression.ParentTestExpressionFinder: org.contract4j5.interpreter.TestResult findParentMethodTestExpressionIfEmpty(java.lang.String,java.lang.annotation.Annotation,java.lang.reflect.Method,org.contract4j5.context.TestContext)>($r35, r1, $r36, r24), $z0 = virtualinvoke r19.<org.contract4j5.interpreter.TestResult: boolean isPassed()>(), if $z0 != 0 goto $r41 = virtualinvoke r0.<org.contract4j5.aspects.InvariantMethodConditions: org.contract4j5.testexpression.DefaultTestExpressionMaker getDefaultMethodInvarTestExpressionMaker()>(), $r37 = virtualinvoke r0.<org.contract4j5.aspects.InvariantMethodConditions: org.contract4j5.enforcer.ContractEnforcer getContractEnforcer()>(), $r38 = interfaceinvoke r1.<org.contract4j5.contract.Invar: java.lang.String value()>(), $r39 = virtualinvoke r19.<org.contract4j5.interpreter.TestResult: java.lang.String getMessage()>(), $r40 = new org.contract4j5.errors.TestSpecificationError, specialinvoke $r40.<org.contract4j5.errors.TestSpecificationError: void <init>()>(), interfaceinvoke $r37.<org.contract4j5.enforcer.ContractEnforcer: void fail(java.lang.String,java.lang.String,java.lang.String,org.contract4j5.context.TestContext,java.lang.Throwable)>($r38, "Invar", $r39, r24, $r40), $r41 = virtualinvoke r0.<org.contract4j5.aspects.InvariantMethodConditions: org.contract4j5.testexpression.DefaultTestExpressionMaker getDefaultMethodInvarTestExpressionMaker()>(), $r42 = virtualinvoke r19.<org.contract4j5.interpreter.TestResult: java.lang.String getMessage()>(), r20 = interfaceinvoke $r41.<org.contract4j5.testexpression.DefaultTestExpressionMaker: java.lang.String makeDefaultTestExpressionIfEmpty(java.lang.String,org.contract4j5.context.TestContext)>($r42, r24), interfaceinvoke r24.<org.contract4j5.context.TestContext: void setActualTestExpression(java.lang.String)>(r20), $r43 = <org.contract4j5.controller.SystemCaches: org.contract4j5.context.TestContextCache testContextCache>, $r44 = new org.contract4j5.context.TestContextCache$Entry, specialinvoke $r44.<org.contract4j5.context.TestContextCache$Entry: void <init>(org.contract4j5.context.TestContext,java.lang.String[],java.lang.Class[],java.lang.String,java.lang.Class)>(r24, r14, r15, null, null), virtualinvoke $r43.<org.contract4j5.context.TestContextCache: void put(org.contract4j5.context.TestContextCache$Key,org.contract4j5.context.TestContextCache$Entry)>(r10, $r44), $r45 = virtualinvoke r0.<org.contract4j5.aspects.InvariantMethodConditions: java.util.Map determineOldValues(org.contract4j5.context.TestContext)>(r24), interfaceinvoke r24.<org.contract4j5.context.TestContext: void setOldValuesMap(java.util.Map)>($r45), $r46 = virtualinvoke r0.<org.contract4j5.aspects.InvariantMethodConditions: org.contract4j5.enforcer.ContractEnforcer getContractEnforcer()>(), $r47 = interfaceinvoke r1.<org.contract4j5.contract.Invar: java.lang.String message()>(), interfaceinvoke $r46.<org.contract4j5.enforcer.ContractEnforcer: void invokeTest(java.lang.String,java.lang.String,org.contract4j5.context.TestContext)>("Invar", $r47, r24), r21 = staticinvoke <org.contract4j5.aspects.InvariantMethodConditions: java.lang.Object ajc$around$org_contract4j5_aspects_InvariantMethodConditions$1$f588a9a3proceed(org.contract4j5.contract.Invar,java.lang.Object,org.aspectj.runtime.internal.AroundClosure)>(r1, r2, r3), $r48 = new org.contract4j5.instance.Instance, $r49 = interfaceinvoke r7.<org.aspectj.lang.reflect.MethodSignature: java.lang.Class getReturnType()>(), specialinvoke $r48.<org.contract4j5.instance.Instance: void <init>(java.lang.String,java.lang.Class,java.lang.Object)>("", $r49, r21), interfaceinvoke r24.<org.contract4j5.context.TestContext: void setMethodResult(org.contract4j5.instance.Instance)>($r48), $r50 = virtualinvoke r0.<org.contract4j5.aspects.InvariantMethodConditions: org.contract4j5.enforcer.ContractEnforcer getContractEnforcer()>(), $r51 = interfaceinvoke r1.<org.contract4j5.contract.Invar: java.lang.String message()>(), interfaceinvoke $r50.<org.contract4j5.enforcer.ContractEnforcer: void invokeTest(java.lang.String,java.lang.String,org.contract4j5.context.TestContext)>("Invar", $r51, r24), return r21]>] [#<SootMethod <org.contract4j5.aspects.InvariantCtorConditions: void ajc$afterReturning$org_contract4j5_aspects_InvariantCtorConditions$1$98655ed6(org.contract4j5.contract.Invar,java.lang.Object,org.aspectj.lang.JoinPoint$StaticPart,org.aspectj.lang.JoinPoint)>> #<PatchingChain [r0 := @this: org.contract4j5.aspects.InvariantCtorConditions, r1 := @parameter0: org.contract4j5.contract.Invar, r2 := @parameter1: java.lang.Object, r3 := @parameter2: org.aspectj.lang.JoinPoint$StaticPart, r4 := @parameter3: org.aspectj.lang.JoinPoint, r5 = interfaceinvoke r4.<org.aspectj.lang.JoinPoint: java.lang.Object[] getArgs()>(), n0 = null, r6 = interfaceinvoke r3.<org.aspectj.lang.JoinPoint$StaticPart: org.aspectj.lang.reflect.SourceLocation getSourceLocation()>(), r7 = interfaceinvoke r6.<org.aspectj.lang.reflect.SourceLocation: java.lang.String getFileName()>(), i0 = interfaceinvoke r6.<org.aspectj.lang.reflect.SourceLocation: int getLine()>(), $r18 = new org.contract4j5.context.TestContextCache$Key, specialinvoke $r18.<org.contract4j5.context.TestContextCache$Key: void <init>(java.lang.String,java.lang.String,int)>("InvarCtor", r7, i0), r8 = $r18, $r19 = <org.contract4j5.controller.SystemCaches: org.contract4j5.context.TestContextCache testContextCache>, r9 = virtualinvoke $r19.<org.contract4j5.context.TestContextCache: org.contract4j5.context.TestContextCache$Entry get(org.contract4j5.context.TestContextCache$Key)>(r8), if r9 == null goto $r24 = interfaceinvoke r3.<org.aspectj.lang.JoinPoint$StaticPart: org.aspectj.lang.Signature getSignature()>(), r20 = r9.<org.contract4j5.context.TestContextCache$Entry: org.contract4j5.context.TestContext testContext>, $r21 = interfaceinvoke r20.<org.contract4j5.context.TestContext: org.contract4j5.instance.Instance getInstance()>(), virtualinvoke $r21.<org.contract4j5.instance.Instance: void setValue(java.lang.Object)>(r2), $r22 = r9.<org.contract4j5.context.TestContextCache$Entry: java.lang.String[] argNames>, $r23 = r9.<org.contract4j5.context.TestContextCache$Entry: java.lang.Class[] argTypes>, r10 = staticinvoke <org.contract4j5.instance.InstanceUtils: org.contract4j5.instance.Instance[] makeInstanceArray(java.lang.String[],java.lang.Class[],java.lang.Object[])>($r22, $r23, r5), interfaceinvoke r20.<org.contract4j5.context.TestContext: void setMethodArgs(org.contract4j5.instance.Instance[])>(r10), goto [?= $r43 = virtualinvoke r0.<org.contract4j5.aspects.InvariantCtorConditions: org.contract4j5.enforcer.ContractEnforcer getContractEnforcer()>()], $r24 = interfaceinvoke r3.<org.aspectj.lang.JoinPoint$StaticPart: org.aspectj.lang.Signature getSignature()>(), r25 = (org.aspectj.lang.reflect.ConstructorSignature) $r24, r11 = virtualinvoke r2.<java.lang.Object: java.lang.Class getClass()>(), r12 = interfaceinvoke r25.<org.aspectj.lang.reflect.ConstructorSignature: java.lang.String[] getParameterNames()>(), r13 = interfaceinvoke r25.<org.aspectj.lang.reflect.ConstructorSignature: java.lang.Class[] getParameterTypes()>(), r14 = staticinvoke <org.contract4j5.instance.InstanceUtils: org.contract4j5.instance.Instance[] makeInstanceArray(java.lang.String[],java.lang.Class[],java.lang.Object[])>(r12, r13, r5), $r26 = new org.contract4j5.instance.Instance, $r27 = virtualinvoke r11.<java.lang.Class: java.lang.String getName()>(), specialinvoke $r26.<org.contract4j5.instance.Instance: void <init>(java.lang.String,java.lang.Class,java.lang.Object)>($r27, r11, r2), r15 = $r26, $r28 = new org.contract4j5.context.TestContextImpl, $r29 = interfaceinvoke r1.<org.contract4j5.contract.Invar: java.lang.String value()>(), $r30 = virtualinvoke r11.<java.lang.Class: java.lang.String getSimpleName()>(), specialinvoke $r28.<org.contract4j5.context.TestContextImpl: void <init>(java.lang.String,java.lang.String,org.contract4j5.instance.Instance,org.contract4j5.instance.Instance,org.contract4j5.instance.Instance[],org.contract4j5.instance.Instance,java.util.Map,java.lang.String,int)>($r29, $r30, r15, null, r14, null, null, r7, i0), r20 = $r28, $r31 = virtualinvoke r0.<org.contract4j5.aspects.InvariantCtorConditions: org.contract4j5.testexpression.ParentTestExpressionFinder getParentTestExpressionFinder()>(), $r32 = interfaceinvoke r1.<org.contract4j5.contract.Invar: java.lang.String value()>(), $r33 = interfaceinvoke r25.<org.aspectj.lang.reflect.ConstructorSignature: java.lang.reflect.Constructor getConstructor()>(), r16 = interfaceinvoke $r31.<org.contract4j5.testexpression.ParentTestExpressionFinder: org.contract4j5.interpreter.TestResult findParentConstructorTestExpressionIfEmpty(java.lang.String,java.lang.annotation.Annotation,java.lang.reflect.Constructor,org.contract4j5.context.TestContext)>($r32, r1, $r33, r20), $z0 = virtualinvoke r16.<org.contract4j5.interpreter.TestResult: boolean isPassed()>(), if $z0 != 0 goto $r38 = virtualinvoke r0.<org.contract4j5.aspects.InvariantCtorConditions: org.contract4j5.testexpression.DefaultTestExpressionMaker getDefaultCtorInvarTestExpressionMaker()>(), $r34 = virtualinvoke r0.<org.contract4j5.aspects.InvariantCtorConditions: org.contract4j5.enforcer.ContractEnforcer getContractEnforcer()>(), $r35 = interfaceinvoke r1.<org.contract4j5.contract.Invar: java.lang.String value()>(), $r36 = virtualinvoke r16.<org.contract4j5.interpreter.TestResult: java.lang.String getMessage()>(), $r37 = new org.contract4j5.errors.TestSpecificationError, specialinvoke $r37.<org.contract4j5.errors.TestSpecificationError: void <init>()>(), interfaceinvoke $r34.<org.contract4j5.enforcer.ContractEnforcer: void fail(java.lang.String,java.lang.String,java.lang.String,org.contract4j5.context.TestContext,java.lang.Throwable)>($r35, "Invar", $r36, r20, $r37), $r38 = virtualinvoke r0.<org.contract4j5.aspects.InvariantCtorConditions: org.contract4j5.testexpression.DefaultTestExpressionMaker getDefaultCtorInvarTestExpressionMaker()>(), $r39 = virtualinvoke r16.<org.contract4j5.interpreter.TestResult: java.lang.String getMessage()>(), r17 = interfaceinvoke $r38.<org.contract4j5.testexpression.DefaultTestExpressionMaker: java.lang.String makeDefaultTestExpressionIfEmpty(java.lang.String,org.contract4j5.context.TestContext)>($r39, r20), interfaceinvoke r20.<org.contract4j5.context.TestContext: void setActualTestExpression(java.lang.String)>(r17), $r40 = virtualinvoke r0.<org.contract4j5.aspects.InvariantCtorConditions: java.util.Map determineOldValues(org.contract4j5.context.TestContext)>(r20), interfaceinvoke r20.<org.contract4j5.context.TestContext: void setOldValuesMap(java.util.Map)>($r40), $r41 = <org.contract4j5.controller.SystemCaches: org.contract4j5.context.TestContextCache testContextCache>, $r42 = new org.contract4j5.context.TestContextCache$Entry, specialinvoke $r42.<org.contract4j5.context.TestContextCache$Entry: void <init>(org.contract4j5.context.TestContext,java.lang.String[],java.lang.Class[],java.lang.String,java.lang.Class)>(r20, r12, r13, null, null), virtualinvoke $r41.<org.contract4j5.context.TestContextCache: void put(org.contract4j5.context.TestContextCache$Key,org.contract4j5.context.TestContextCache$Entry)>(r8, $r42), $r43 = virtualinvoke r0.<org.contract4j5.aspects.InvariantCtorConditions: org.contract4j5.enforcer.ContractEnforcer getContractEnforcer()>(), $r44 = interfaceinvoke r1.<org.contract4j5.contract.Invar: java.lang.String message()>(), interfaceinvoke $r43.<org.contract4j5.enforcer.ContractEnforcer: void invokeTest(java.lang.String,java.lang.String,org.contract4j5.context.TestContext)>("Invar", $r44, r20), return]>] [#<SootMethod <org.contract4j5.configurator.ensurer.Contract4JConfigurationEnsurer: void ajc$before$org_contract4j5_configurator_ensurer_Contract4JConfigurationEnsurer$1$1c6bae1(org.contract4j5.controller.Contract4J)>> #<PatchingChain [r0 := @this: org.contract4j5.configurator.ensurer.Contract4JConfigurationEnsurer, r1 := @parameter0: org.contract4j5.controller.Contract4J, $r2 = <org.contract4j5.configurator.ensurer.Contract4JConfigurationEnsurer: org.aspectj.runtime.internal.CFlowCounter ajc$cflowCounter$0>, virtualinvoke $r2.<org.aspectj.runtime.internal.CFlowCounter: void inc()>(), $r4 = <org.contract4j5.configurator.ensurer.Contract4JConfigurationEnsurer: org.aspectj.runtime.internal.CFlowCounter ajc$cflowCounter$0>, virtualinvoke $r4.<org.aspectj.runtime.internal.CFlowCounter: void inc()>(), virtualinvoke r0.<org.contract4j5.configurator.ensurer.Contract4JConfigurationEnsurer: void doLazyConfiguration(org.contract4j5.controller.Contract4J)>(r1), goto [?= $r10 = <org.contract4j5.configurator.ensurer.Contract4JConfigurationEnsurer: org.aspectj.runtime.internal.CFlowCounter ajc$cflowCounter$0>], $r8 := @caughtexception, r5 = $r8, $r9 = <org.contract4j5.configurator.ensurer.Contract4JConfigurationEnsurer: org.aspectj.runtime.internal.CFlowCounter ajc$cflowCounter$0>, virtualinvoke $r9.<org.aspectj.runtime.internal.CFlowCounter: void dec()>(), throw r5, $r10 = <org.contract4j5.configurator.ensurer.Contract4JConfigurationEnsurer: org.aspectj.runtime.internal.CFlowCounter ajc$cflowCounter$0>, virtualinvoke $r10.<org.aspectj.runtime.internal.CFlowCounter: void dec()>(), goto [?= $r13 = <org.contract4j5.configurator.ensurer.Contract4JConfigurationEnsurer: org.aspectj.runtime.internal.CFlowCounter ajc$cflowCounter$0>], $r11 := @caughtexception, r6 = $r11, $r12 = <org.contract4j5.configurator.ensurer.Contract4JConfigurationEnsurer: org.aspectj.runtime.internal.CFlowCounter ajc$cflowCounter$0>, virtualinvoke $r12.<org.aspectj.runtime.internal.CFlowCounter: void dec()>(), throw r6, $r13 = <org.contract4j5.configurator.ensurer.Contract4JConfigurationEnsurer: org.aspectj.runtime.internal.CFlowCounter ajc$cflowCounter$0>, virtualinvoke $r13.<org.aspectj.runtime.internal.CFlowCounter: void dec()>(), return]>] [#<SootMethod <org.contract4j5.configurator.ensurer.ReporterDependencyInitializer: org.contract4j5.reporter.Reporter ajc$around$org_contract4j5_configurator_ensurer_ReporterDependencyInitializer$1$da48bfab(org.aspectj.runtime.internal.AroundClosure)>> #<PatchingChain [r0 := @this: org.contract4j5.configurator.ensurer.ReporterDependencyInitializer, r1 := @parameter0: org.aspectj.runtime.internal.AroundClosure, r2 = staticinvoke <org.contract4j5.configurator.ensurer.ReporterDependencyInitializer: org.contract4j5.reporter.Reporter ajc$around$org_contract4j5_configurator_ensurer_ReporterDependencyInitializer$1$da48bfabproceed(org.aspectj.runtime.internal.AroundClosure)>(r1), if r2 != null goto $r6 = r2, $r5 = staticinvoke <org.contract4j5.controller.Contract4J: org.contract4j5.controller.Contract4J getInstance()>(), $r3 = <org.contract4j5.configurator.ensurer.ReporterDependencyInitializer: org.aspectj.runtime.internal.CFlowCounter ajc$cflowCounter$0>, virtualinvoke $r3.<org.aspectj.runtime.internal.CFlowCounter: void inc()>(), $r6 = virtualinvoke $r5.<org.contract4j5.controller.Contract4J: org.contract4j5.reporter.Reporter getReporter()>(), goto [?= $r9 = <org.contract4j5.configurator.ensurer.ReporterDependencyInitializer: org.aspectj.runtime.internal.CFlowCounter ajc$cflowCounter$0>], $r7 := @caughtexception, r4 = $r7, $r8 = <org.contract4j5.configurator.ensurer.ReporterDependencyInitializer: org.aspectj.runtime.internal.CFlowCounter ajc$cflowCounter$0>, virtualinvoke $r8.<org.aspectj.runtime.internal.CFlowCounter: void dec()>(), throw r4, $r9 = <org.contract4j5.configurator.ensurer.ReporterDependencyInitializer: org.aspectj.runtime.internal.CFlowCounter ajc$cflowCounter$0>, virtualinvoke $r9.<org.aspectj.runtime.internal.CFlowCounter: void dec()>(), goto [?= return $r6], $r6 = r2, return $r6]>]) 

For the second option, I investigated some functions including both aspectj.soot.clj and soot/soot.clj.
Apparently, the following function (jsoot/soot-model-scene ?model ?scene) gets a selected project's classes, plus I reach the classes via ?scene parameter. I hereby checked to be sure that the above aspects that pose exceptions, appear or not. Unfortunately, the below function proves that the 2 aspects are missing in the soot project area.

 (inspect (ekeko [?class] 
                 (l/fresh [?classes ?scene ?model ]
                 (jsoot/soot-model-scene ?model ?scene)
                 (equals ?classes (.getClasses ?scene))
                 (contains ?classes ?class)
                 (or (succeeds (IndexOfText (.getName ?class) "org.contract4j5.debug"))
                      (succeeds (IndexOfText (.getName ?class) "org.contract4j5.policies"))))))

About the last option, Since I deleted the 2 causing aspects, I have not receive the same errors any more. In fact, I can not use this option in another project, for example the MobileMedia07_AO has 77 advice and the aj/soot/advice-soot|method function returns null and in any case, shows 77 runtime exceptions on the REPL. I guess that it is not logical for my aim.

I think the projects that I imported, have setup issues, and I am not sure how I can deal with these kind of errors.

from aop-metrics.

ozlerhakan avatar ozlerhakan commented on May 28, 2024

In addition to the second option, the mentioned query "jsoot/soot-model-scene" shows only one class which declared by me in order to enable soot analysis in the mobilemedia01_AO.

from aop-metrics.

timmolderez avatar timmolderez commented on May 28, 2024

I don't think this will already solve the problem, but the .jars of the Contract4j5 were missing some .jars that they depend on. (In such a case, I think Eclipse still is able to compile the application classes, but Soot's Java-to-Jimple compiler needs all dependencies..)
Try and add these missing .jars to to the project's libraries: https://dl.dropboxusercontent.com/u/4834991/Contract4J-libs.zip Then clean the project. Do you now get a different error when executing your queries?

For other projects, if you want to find out if any .jars are missing:

  • Go to the project properties, and use the "Restore defaults" button on the Ekeko page to reset Soot's command line parameters to the default.
  • Clean the project, and Soot will try to compile it. If exceptions are thrown that it cannot find some particular class, you know a .jar is missing. You can usually find out which jar you need by copy-pasting the class name in a website like http://www.findjar.com
  • Add the .jar to the project; clean it again to see if it fixes the problem.
  • If you're not getting any errors anymore, it may take a few minutes for Soot to finish its analysis. When done, you can switch Soot's command-line options back to the previous value.. (which makes the Soot analysis fast again, but won't show errors if any classes are missing..)

from aop-metrics.

ozlerhakan avatar ozlerhakan commented on May 28, 2024

Although I imported the additional jars of the Contract4j5 , I still get the same errors.
I also checked the transformed classes and I do not see the aspect starting with "org.contract4j5.debug" .
Here is the trace output while soot analyses the Contract4j5 project : https://dl.dropboxusercontent.com/s/0ietoi7mhcgr7yf/trace.txt

from aop-metrics.

timmolderez avatar timmolderez commented on May 28, 2024

Hi Hakan,

I think I've found what causes these RuntimeExceptions. If you run this query (which should find all SootMethods):

(damp.ekeko/ekeko [?m]
  (jsoot/soot :method ?m))

, then you'll see it finds very few results. Because ajsoot/advice-soot|method tries to find which SootMethod corresponds to a certain advice, it will throw these RuntimeExceptions because most SootMethods are missing.

It turns out the reason for all these missing SootMethods is because Soot will only analyze the code that is reachable from the main() method. However, applications like HealthWatcher and MobileMedia are not regular Java applications that are started via a main method; they are actually Java servlets (that should run on a web server).

An easy fix to this problem is to simply create a new class with a main() method, where you initialize one (or more) of these servlets such that their code becomes reachable.

For example, in case of Healthwatcher, I added this class:

package tests;
import javax.servlet.ServletException;
import gui.servlets.ServletLogin;

public class Main {
    public static void main(String[] args) {
        ServletLogin s = new ServletLogin();
        try {
            s.init(null);
        } catch (ServletException e) {
            e.printStackTrace();
        }
    }
}

In the Ekeko properties of the HealthWatcher project, you should now choose this class as your "Entry point for static analyses". This already removed the majority of my RuntimeExceptions. (You may need to call init() on a few more servlets to get rid of all RuntimeExceptions..)

(See here for a little more information on the problem: cderoove/damp.ekeko.aspectj#11 In general: If you encounter more "tried to get nonexistent method" errors, you should add method calls in your main() to the five methods that you see on this page..)

Kind regards,
Tim

from aop-metrics.

ozlerhakan avatar ozlerhakan commented on May 28, 2024

Thank you for pointing out the clear advice. I have tried to remove the errors, in addition, I now receive only 1 exception out of 4. Furthermore, in order to minimize the failures, I used your main body, plus made some changes in the HealthWatcherAspectJ project. Before reducing the size of errors, I had these exceptions:

#<RuntimeException java.lang.RuntimeException: tried to get nonexistent method <aspects.updateState.UpdateStateControlPerCflowHandler: void ajc$after$aspects_updateState_UpdateStateControlPerCflowHandler$1$a18e94e1(java.util.Iterator)>>
#<RuntimeException java.lang.RuntimeException: tried to get nonexistent method <aspects.exceptionHandling.distribution.RMIServerExceptionHandlingAspect: void ajc$around$aspects_exceptionHandling_distribution_RMIServerExceptionHandlingAspect$1$427b6304(org.aspectj.runtime.internal.AroundClosure,org.aspectj.lang.JoinPoint$StaticPart)>>
#<RuntimeException java.lang.RuntimeException: tried to get nonexistent method <aspects.exceptionHandling.distribution.RMIServerExceptionHandlingAspect: void ajc$afterThrowing$aspects_exceptionHandling_distribution_RMIServerExceptionHandlingAspect$2$6ba03854(java.lang.Exception)>>
#<RuntimeException java.lang.RuntimeException: tried to get nonexistent method <aspects.concurrencyControl.AbstractSynchronizationModifierAspect: java.lang.Object ajc$around$aspects_concurrencyControl_AbstractSynchronizationModifierAspect$1$9c0d17f(java.lang.Object,org.aspectj.runtime.internal.AroundClosure)>>

I avoided the below exceptions by simply creating a main method into the HealthWatcherFacade class because, the around advice declared in the RMIServerExceptionHandlingAspect did not reach the main method in this class, so I made the method to get rid of two errors. I think of that, even if there is only one unconnected advice (yellow marker) in an aspect file, the unconnected advice affects the entire aspect, even the rest of advice declared in the aspect match some points in a project. In this situation, after throwing connects with some points and is showed as a rest of advice in RMIServerExceptionHandlingAspect file.

#<RuntimeException java.lang.RuntimeException: tried to get nonexistent method <aspects.exceptionHandling.distribution.RMIServerExceptionHandlingAspect: void ajc$around$aspects_exceptionHandling_distribution_RMIServerExceptionHandlingAspect$1$427b6304(org.aspectj.runtime.internal.AroundClosure,org.aspectj.lang.JoinPoint$StaticPart)>>
#<RuntimeException java.lang.RuntimeException: tried to get nonexistent method <aspects.exceptionHandling.distribution.RMIServerExceptionHandlingAspect: void ajc$afterThrowing$aspects_exceptionHandling_distribution_RMIServerExceptionHandlingAspect$2$6ba03854(java.lang.Exception)>>

The mentioned pointcut assigned with the around advice :

pointcut serverInitialization(): 
        execution(public static void  HealthWatcherFacade.main(String[]));

The second duty is to avoid the below error:

#<RuntimeException java.lang.RuntimeException: tried to get nonexistent method <aspects.concurrencyControl.AbstractSynchronizationModifierAspect: java.lang.Object ajc$around$aspects_concurrencyControl_AbstractSynchronizationModifierAspect$1$9c0d17f(java.lang.Object,org.aspectj.runtime.internal.AroundClosure)>>

In order to remove the error, I simply create an instance of the EmployeeRepositoryArray because the around advice matches with a few advise but no one called them before, for this case, I activated the advice for soot by adding an instance of the class in the main body:

package tests;
import java.io.IOException;
import gui.servlets.ServletLogin;
import javax.servlet.ServletException;

import aspects.dataManagement.dataCollections.array.EmployeeRepositoryArray;
public class MainTST {

    public static void main(String[] args) throws IOException {
        ServletLogin s = new ServletLogin();
        try {
            s.init(null);
            s.service(null, null);
        } catch (ServletException e) {
            e.printStackTrace();
        }

        EmployeeRepositoryArray emp = new EmployeeRepositoryArray();
    }
}

Lastly, the below exception was left, plus I couldn't find a way to connect the after advice with related join points.
The UpdateStateControlPerCflow does not include in the project.

Should I skip this aspect? or Do I forget some points for the aspect?

#<RuntimeException java.lang.RuntimeException: tried to get nonexistent method <aspects.updateState.UpdateStateControlPerCflowHandler: void ajc$after$aspects_updateState_UpdateStateControlPerCflowHandler$1$a18e94e1(java.util.Iterator)>>

The UpdateStateControlPerCflowHandler is the following aspect body and the updateDirtyObjects and aspectUpdating do not exist in the project.

package aspects.updateState;

import java.util.Iterator;

/**
 * Handler aspect for <code>UpdateStateControlPerCflow</code>.
 * 
 * @author Fernando Castor Filho
 */
privileged public aspect UpdateStateControlPerCflowHandler {

  pointcut aux(Iterator it) : 
    withincode(* UpdateStateControlPerCflow.updateDirtyObjects(Iterator, ..)) 
    && args(it); 

  pointcut updateDirtyObjectsExec(Iterator it) : args(it, ..) &&
    execution(private void updateDirtyObjects(Iterator,int)); 

  pointcut updateDirtyObjectsHandler(): call(* *.aspectUpdating(..));

  after(Iterator it) : updateDirtyObjectsHandler() && cflow(updateDirtyObjectsExec(it)){
    it.remove();
  }
}

All the best,
Hakan

from aop-metrics.

timmolderez avatar timmolderez commented on May 28, 2024

About the UpdateStateControlPerCflowHandler aspect: If you're sure it's never used, it's okay to simply remove this aspect...

from aop-metrics.

ozlerhakan avatar ozlerhakan commented on May 28, 2024

I have checked the missing aspect from the folder that contains all AspectJ applications that you gave me. I have noticed that the aspect were apparently missing in my current project so, I added it from my another copy of the project and finally I have not receive any runtimeexception failures 👍

I will try the same technique to avoid the same exception that appears from the rest of the projects which are namely AJHotDraw, MobileMedia07_AO, PetStore, Spacewar, Telesrada, Contract4j5

from aop-metrics.

Related Issues (3)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.