Re: [abc-users] adding jimple

From: Eric Bodden <eric.bodden_at_mail.mcgill.ca>
Date: Tue, 21 Apr 2009 08:30:08 -0400

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, Canada
Received 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