Hi Amjad.
So does your generated code contain references to AtomicLong? If it
does then you have to resolve that to SIGNATURES as well. The
exception even tells you what to do:
Scene.v().addBasicClass(java.util.concurrent.atomic.AtomicLong,SIGNATURES);
Eric
2009/4/21 Amjad Nusayr <anusayr_at_cs.nmsu.edu>:
> Okay that worked just fine.
> When I try it. It works in short and simple code. But most of the times I
> get the following exception
> Exception in thread "main" polyglot.util.InternalCompilerError: unhandled
> exception during wea
> ving/optimisation
> at abc.main.CompileSequence.runSequence(CompileSequence.java:142)
> at abc.main.Main.run(Main.java:406)
> at abc.main.Main.main(Main.java:144)
> Caused by: polyglot.util.InternalCompilerError: World.aj:23,3-44:4: Error
> during matching
> at
> abc.weaving.matching.AdviceApplication.doShadows(AdviceApplication.java:209)
> at abc.main.AbcExtension.findMethodShadows(AbcExtension.java:541)
> at abc.bbs.AbcExtension.findMethodShadows(AbcExtension.java:233)
> at
> abc.weaving.matching.AdviceApplication.doMethod(AdviceApplication.java:275)
> at
> abc.weaving.matching.AdviceApplication.computeAdviceLists(AdviceApplication.java:31
> 2)
> at
> abc.weaving.aspectinfo.GlobalAspectInfo.computeAdviceLists(GlobalAspectInfo.java:48
> 2)
> at abc.main.CompileSequence.weave(CompileSequence.java:447)
> at abc.main.CompileSequence.runSequence(CompileSequence.java:115)
> ... 2 more
> Caused by: java.lang.ExceptionInInitializerError
> at
> abc.bbs.weaving.aspectinfo.ProbabilityD.matchesAt(ProbabilityD.java:52)
> at
> abc.weaving.aspectinfo.ShadowPointcut.matchesAt(ShadowPointcut.java:38)
> at abc.weaving.aspectinfo.AndPointcut.matchesAt(AndPointcut.java:65)
> at abc.weaving.aspectinfo.AndPointcut.matchesAt(AndPointcut.java:65)
> at abc.weaving.aspectinfo.AndPointcut.matchesAt(AndPointcut.java:65)
> at abc.weaving.aspectinfo.AndPointcut.matchesAt(AndPointcut.java:65)
> at
> abc.weaving.matching.AdviceApplication$2.run(AdviceApplication.java:115)
> at
> abc.weaving.matching.AdviceApplication.doShadows(AdviceApplication.java:192)
> ... 9 more
> Caused by: java.lang.RuntimeException: This operation requires resolving
> level SIGNATURES but
> java.util.concurrent.atomic.AtomicLong is at resolving level HIERARCHY
> If you are extending Soot, try to add the following call before calling
> soot.Main.main(..):
> Scene.v().addBasicClass(java.util.concurrent.atomic.AtomicLong,SIGNATURES);
> Otherwise, try whole-program mode (-w).
> at soot.SootClass.checkLevel(SootClass.java:121)
> at soot.SootClass.addField(SootClass.java:177)
> at soot.coffi.Util.resolveFromClassFile(Util.java:147)
> at soot.CoffiClassSource.resolve(CoffiClassSource.java:39)
> at soot.SootResolver.bringToHierarchy(SootResolver.java:194)
> at soot.SootResolver.processResolveWorklist(SootResolver.java:140)
> at soot.SootResolver.resolveClass(SootResolver.java:124)
> at soot.Scene.loadClass(Scene.java:390)
> at soot.Scene.loadClassAndSupport(Scene.java:376)
> at
> abc.bbs.weaving.residues.ProbabilityDResidue.<clinit>(ProbabilityDResidue.java:42)
>
> Any idea why and how to fix this.
>
> Amjad
>
> Eric Bodden wrote:
>>
>> Hi.
>>
>> You need to put your incExpr into an AssignStmt which, on its
>> left-hand-side, refers to result.
>>
>> Eric
>>
>> 2009/4/20 Amjad Nusayr <anusayr_at_cs.nmsu.edu>:
>>
>>>
>>> Apologies I was not clear in my last email. Here is what i have
>>> ===============
>>> myFoo= helperClass.getMethod("int myFoo()");
>>> Local result=localgen.generateLocal(IntType.v(),"var1");
>>> InvokeExpr incExpr= Jimple.v().newStaticInvokeExpr(myFoo.makeRef());
>>> ===============
>>>
>>> My problem is that I cant seem to get the return value into the Local
>>> *result*. Should I be using something else??
>>>
>>> Amjad
>>>
>>> Eric Bodden wrote:
>>>
>>>>
>>>> You just have to add a fresh Local to the method's Body. Then you
>>>> assign the result to the Local and pass the local as an arument to the
>>>> EqExpr.
>>>>
>>>> Eric
>>>>
>>>> 2009/4/20 Amjad Nusayr <anusayr_at_cs.nmsu.edu>:
>>>>
>>>>
>>>>>
>>>>> Thanks Eric,
>>>>> Another quick question. The method I'm calling returns an integer, How
>>>>> can I
>>>>> store the return value from my invocation? I want to use it in a
>>>>> "EqExpr"
>>>>> that compares it to an int.
>>>>>
>>>>> Amjad
>>>>>
>>>>> Eric Bodden wrote:
>>>>>
>>>>>
>>>>>>
>>>>>> Hi Amjad.
>>>>>>
>>>>>> You have to make Soot aware of your helper class, using your
>>>>>> AbcExtension.
>>>>>> See:
>>>>>>
>>>>>> AbcExtension.addBasicClassesToSoot()
>>>>>>
>>>>>> Eric
>>>>>>
>>>>>> 2009/4/20 Amjad Nusayr <anusayr_at_cs.nmsu.edu>:
>>>>>>
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> Hi,
>>>>>>> I trying to add jimple stmts to the IR code generated in abc using
>>>>>>> MyResidue.codeGen method. The jimple code I writing should call a
>>>>>>> method
>>>>>>> from a helper class I created.
>>>>>>> I used the code from this link to aid me.
>>>>>>> http://www.sable.mcgill.ca/soot/tutorial/profiler2/index.html
>>>>>>>
>>>>>>> abc compiles but when run abc with my extension using the following
>>>>>>> command
>>>>>>> line
>>>>>>> +soot -f J -soot -argfile files.lst
>>>>>>>
>>>>>>> I get
>>>>>>> Exception in thread "main" polyglot.util.InternalCompilerError:
>>>>>>> unhandled
>>>>>>> exception during we
>>>>>>> ving/optimisation
>>>>>>> at abc.main.CompileSequence.runSequence(CompileSequence.java:142)
>>>>>>> at abc.main.Main.run(Main.java:406)
>>>>>>> at abc.main.Main.main(Main.java:144)
>>>>>>> Caused by: polyglot.util.InternalCompilerError: World.aj:29,3-32:4:
>>>>>>> Error
>>>>>>> during matching
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> abc.weaving.matching.AdviceApplication.doShadows(AdviceApplication.java:209)
>>>>>>> at abc.main.AbcExtension.findMethodShadows(AbcExtension.java:541)
>>>>>>> at abc.bbs.AbcExtension.findMethodShadows(AbcExtension.java:230)
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> abc.weaving.matching.AdviceApplication.doMethod(AdviceApplication.java:275)
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> abc.weaving.matching.AdviceApplication.computeAdviceLists(AdviceApplication.java:3
>>>>>>> 2)
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> abc.weaving.aspectinfo.GlobalAspectInfo.computeAdviceLists(GlobalAspectInfo.java:4
>>>>>>> 2)
>>>>>>> at abc.main.CompileSequence.weave(CompileSequence.java:447)
>>>>>>> at abc.main.CompileSequence.runSequence(CompileSequence.java:115)
>>>>>>> ... 2 more
>>>>>>> Caused by: java.lang.ExceptionInInitializerError
>>>>>>> at
>>>>>>>
>>>>>>> abc.bbs.weaving.aspectinfo.ProbabilityD.matchesAt(ProbabilityD.java:52)
>>>>>>> at
>>>>>>>
>>>>>>> abc.weaving.aspectinfo.ShadowPointcut.matchesAt(ShadowPointcut.java:38)
>>>>>>> at
>>>>>>> abc.weaving.aspectinfo.AndPointcut.matchesAt(AndPointcut.java:65)
>>>>>>> at
>>>>>>> abc.weaving.aspectinfo.AndPointcut.matchesAt(AndPointcut.java:65)
>>>>>>> at
>>>>>>> abc.weaving.aspectinfo.AndPointcut.matchesAt(AndPointcut.java:65)
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>> abc.weaving.matching.AdviceApplication$2.run(AdviceApplication.java:115)
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> abc.weaving.matching.AdviceApplication.doShadows(AdviceApplication.java:192)
>>>>>>> ... 9 more
>>>>>>> Caused by: java.lang.RuntimeException: This operation requires
>>>>>>> resolving
>>>>>>> level SIGNATURES but
>>>>>>> Helper is at resolving level HIERARCHY
>>>>>>> If you are extending Soot, try to add the following call before
>>>>>>> calling
>>>>>>> soot.Main.main(..):
>>>>>>> Scene.v().addBasicClass(Helper,SIGNATURES);
>>>>>>> Otherwise, try whole-program mode (-w).
>>>>>>> at soot.SootClass.checkLevel(SootClass.java:121)
>>>>>>> at soot.SootClass.addMethod(SootClass.java:570)
>>>>>>> at soot.coffi.Util.resolveFromClassFile(Util.java:249)
>>>>>>> at soot.CoffiClassSource.resolve(CoffiClassSource.java:39)
>>>>>>> at soot.SootResolver.bringToHierarchy(SootResolver.java:194)
>>>>>>> at soot.SootResolver.bringToSignatures(SootResolver.java:219)
>>>>>>> at soot.SootResolver.processResolveWorklist(SootResolver.java:139)
>>>>>>> at soot.SootResolver.resolveClass(SootResolver.java:124)
>>>>>>> at soot.Scene.loadClass(Scene.java:390)
>>>>>>> at soot.Scene.loadClassAndSupport(Scene.java:375)
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> abc.bbs.weaving.residues.ProbabilityDResidue.<clinit>(ProbabilityDResidue.java:37)
>>>>>>> ... 16 more
>>>>>>>
>>>>>>>
>>>>>>> Could someone tell me what this means and how to fix it.
>>>>>>>
>>>>>>> thanks
>>>>>>> Amjad
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>>
>>
>
>
>
-- Eric Bodden Sable Research Group, McGill University Montréal, Québec, CanadaReceived on Tue Apr 21 2009 - 13:30:13 BST
This archive was generated by hypermail 2.2.0 : Tue Apr 21 2009 - 15:20:11 BST