[Soot-list] my StrongLocalMustAliasAnalysis gives unexpected results

Patrick Lam plam at sable.mcgill.ca
Sun Oct 21 07:04:40 EDT 2012


As I said, variable redefinition only gives UNKNOWN if the redefinition 
is not mandatory.

pat

On 10/21/2012 01:26 AM, Zhoulai wrote:
> Thanks Patrick. I see your point. Don't forget that your
> StrongMustAliasAnalysis, as described by your 2008's paper, is supposed
> to consider variable redefinition in loops!
>
> For the k-th iteration of the loop, a new object o_k is created and
> bound to x (which overwrites its earlier state) , so the "*states
> history* "  related to x will be
> x->o_0, x -> o_2, x->o_k....
> which mean that ***Over time*** x is bound to {o_0,o_1,o_2 ...}. I
> believe this is the way your StrongMustAliasAnalysis in your paper
> reasons, right?
>
> My apologies for any misunderstandings.
> Zell.
>
> On Sun, Oct 21, 2012 at 6:33 AM, Patrick Lam <plam at sable.mcgill.ca
> <mailto:plam at sable.mcgill.ca>> wrote:
>
>     On 10/21/2012 12:25 AM, Zhoulai wrote:
>      > > ****************
>      > > 1:     static void test5(int i){
>      > > 2:         while (i>0){
>      > > 3:             A x = new A();
>      > > 4:             A y = x;
>      > > 5:             String s = "hello";
>      > >          }
>      > >      }
>      > > **************
>
>      > By your specification in your paper, the strong representative only
>      > must-alias itself at the same program location if it is not
>     guaranteed
>      > that this representative represents a single run-time object.
>      >
>      > Here variable 'x'' is associated with  more than 1 run-time
>     objects.  It
>      > is therefore expected to be bound to UNKNOWN.
>
>     x only points to one object at a time in this case. The only way that x
>     might point to more than one object is if there are two different
>     definitions that reach x (perhaps from different iterations of the
>     loop), like if you had this program instead:
>
>           A x = null;
>           if (...) x = new A();
>           A y = x;
>
>     Then you should not get UNKNOWN. But in the program you wrote, there's
>     only one object that x could possibly contain.
>
>     pat
>
>     _______________________________________________
>     Soot-list mailing list
>     Soot-list at sable.mcgill.ca <mailto:Soot-list at sable.mcgill.ca>
>     http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>
>



More information about the Soot-list mailing list