Re: [abc-users] adding jimple

From: Eric Bodden <eric.bodden_at_mail.mcgill.ca>
Date: Tue, 21 Apr 2009 10:31:38 -0400

Sorry, this was missing quotes...

      Scene.v().addBasicClass("java.util.concurrent.atomic.AtomicLong",SIGNATURES);

There's no need to import anything.

Eric

2009/4/21 Amjad Nusayr <anusayr_at_cs.nmsu.edu>:
> Dear Eric
> I added this import stmt to my AbcExtension
> import java.util.concurrent.atomic.AtomicLong;
>
> and
>
> Scene.v().addBasicClass(java.util.concurrent.atomic.AtomicLong,SIGNATURES);
>
> to addBasicClassesToSoot
>
> but when I try to build I get an error saying that it cant find atomic!!
>
> F:\bbs\src\abc\bbs\AbcExtension.java:218: cannot find symbol
> symbol  : class atomic
> location: package java.util.concurrent
>
> Scene.v().addBasicClass(java.util.concurrent.atomic.AtomicLong,SIGNATURES);
>
> Amjad
>
> Eric Bodden wrote:
>>
>> 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 - 15:31:43 BST

This archive was generated by hypermail 2.2.0 : Wed Apr 22 2009 - 21:30:12 BST