[Soot-list] ThreadLocal class
yi zhang
cathy.zhyi at gmail.com
Mon Aug 16 12:12:23 EDT 2010
Hi, Eric:
Could you give me a clue on how to do the fourth step: 4.) replace
all references to the field ? Is there any API in soot which can make me
find all the reference to a field of a class easily? This may include both a
direct FieldRef to this field or in form of Local.thisfield?
On Mon, Jul 26, 2010 at 3:52 AM, Eric Bodden <
bodden at st.informatik.tu-darmstadt.de> wrote:
> Hello.
>
> Since ThreadLocal is just a java class like any other class, Soot
> certainly supports it. I am assuming that you are doing something
> wrong in the code generation.
>
> My estimation would be that for every field you need to...
>
> 1.) create a new sub-class of ThreadLocal
> 2.) construct an initialValue method in that subclass
> 3.) replace the field and assign to it at the right point in time
> 4.) replace all references to the field
>
> Eric
>
> --
> Dr. Eric Bodden
> Software Technology Group, Technische Universität Darmstadt, Germany
> Tel: +49 6151 16-5478 Fax: +49 6151 16-5410
> Mailing Address: S2|02 A209, Hochschulstraße 10, 64289 Darmstadt
>
>
>
> On 24 July 2010 17:53, yi zhang <cathy.zhyi at gmail.com> wrote:
> > Hi everyone:
> > I am using soot to optimize this code. However, soot seems have
> > problem dealing with the ThreadLocal field. Whenever I include the
> > ThreadLocal HelloWorld I got error: Exception in thread "main"
> > java.lang.NoClassDefFoundError: HelloWorld$1 when running the .class
> > generated by soot. When I delete the threadlocal helloworld everything
> works
> > fine. Does soot really support the threadlocal class?
> >
> > What I want to do currently is: Give a java class, change all the
> > fields which are static non-volatile to ThreadLocal. I am thinking doing
> > this after the soot has loaded all the classes and change them to
> sootclass
> > before any jimple transfromation happans. Could anyone give me some
> advice
> > or clue on how to do this? Thank you so much.
> >
> > import java.io.*;
> >
> > public class HelloWorld {
> > public static String HelloWorldNormal = "HelloWorld--normal";
> > public static volatile String HelloWorldVolatile =
> > "HelloWorld--volatile";
> > private static ThreadLocal <String> HelloWorldThreadLocal = new
> > ThreadLocal(){
> > protected String initialValue(){
> > return new String("HelloWorld--threadlocal");
> > }
> > };
> >
> > public static void main(String[] arg) {
> > HelloWorld item = new HelloWorld();
> > System.out.println( item.HelloWorldNormal );
> > System.out.println( item.HelloWorldVolatile );
> > // System.out.println( item.HelloWorldThreadLocal.get());
> > }
> > }
> >
> >
> > _______________________________________________
> > Soot-list mailing list
> > Soot-list at sable.mcgill.ca
> > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.cs.mcgill.ca/pipermail/soot-list/attachments/20100816/2bfa31b7/attachment.html
More information about the Soot-list
mailing list