[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Original names; was: Assignment statement isn't parsing



Nathan,

I believe the problem was caused by following code
    74           e = local_variable_table[i];
    75           if (e.index==idx &&
    76               (code==-1 ||
    77                (code>=e.start_pc && code<e.start_pc+e.length))) {

Line 77 should be a bug, because according to the spec, the interval
should be [start_pc, start_pc+length] inclusively. So changing the line
77 to:
 new 77               (code>=e.start_pc && code<=e.start_pc+e.length))) {
                    /* [start_pc, start_pc+length] should be inclusive */

This will fix the bug in your example, and hopefully it will fix your other
programs as well.

Cheers,
===========================================================
Feng Qian                             fqian@sable.mcgill.ca

On Sat, 2 Mar 2002, Nathan Kitchen wrote:

> I didn't miss Pat's email about the splitter.  The 'verbatim' option
> subsumes 'no-splitting' and a slew of others, because it prevents _any_
> BodyTransformers, including LocalSplitter, from transforming the body.
> At least that's what I see in the source code that I have.
>
> About the output being wrong:  The real reason I'm making such a fuss
> about this is because I'm trying very hard to keep the original variable
> names.  I realize that I won't always be able to do that, because the
> info won't always be in the class files that I parse.  However, I don't
> believe that that justifies my failure to get the results I want in this
> case.  This is what I want to see with the command line below:
>
> void run()
> {
>     .unknown this, $stack0, e;
>
>     this := @this;
>     $stack0 = 0;
>     e = $stack0;
>     $stack0 = this;
>     $stack0 = $stack0.calc();
>     e = $stack0;  // This line is the key.
>     return;
> }
>
> Navindra Umanee wrote:
> >>(command line: java soot.Main --soot-classpath
> >>.:$JAVA_HOME/jre/lib/rt.jar -p jb use-original-names -p jb verbatim -j
> >>A).  This is the result I get:
> >>
> >
> > I think you missed Pat's email about the splitter.  I added "-p jb
> > no-splitting" and it seemed to produce the desired output.  Either
> > way, I'm not sure I see what the problem was with the original
> > output...
> >
> >
> >>public class A extends java.lang.Object
> >>{
> >>     void run()
> >>     {
> >>         .unknown this, $stack0, e, l1;
> >>
> >>         this := @this;
> >>         $stack0 = 0;
> >>         e = $stack0;
> >>         $stack0 = this;
> >>         $stack0 = $stack0.calc();
> >>         l1 = $stack0;
> >>         return;
> >>     }
> >>
> --
> Nathan Kitchen
> kitchen@ee.byu.edu
>