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

Re: [Fwd: BOUNCE soot-list@sable.mcgill.ca: Non-member submission from [Robby <robby@cis.ksu.edu>]]



Raja Vallee-Rai wrote:
> 
> -------- Original Message --------
> From: owner-soot-list@sable.mcgill.ca
> Subject: BOUNCE soot-list@sable.mcgill.ca:    Non-member submission from
> [Robby <robby@cis.ksu.edu>]
> To: owner-soot-list@sable.mcgill.ca
> 
> Hi,
> I am trying to figure out why I have a null pointer exception throwed
> from
> ConstantAndCopyPropagator...
> 
> the code is as the following:
> 
>   int i4, i5
>   A i1, h, i3
>   B i0
> 
>   i0 := @this
>   i1 = new A
>   specialinvoke i1.[A.<init>():void]()
>   h = i1
>   i3 = h
>   i4 = virtualinvoke i0.[B.b(B):int](h)
>   i3.[A.id:int] = i4
>   i5 = i3.[A.id:int]
> 
> when I ran it through Transformations.cleanupCode... a null exception is
> throwed in CopyAndConstantPropagator... the statements became:
> 
>   int i4, i5
>   A  i1, h, i3
>   B i0
> 
>   i0 := @this
>   i1 = new A
>   specialinvoke i1.[A.<init>():void]()
>   h = i1
>   i3 = h
>   i4 = virtualinvoke i0.[B.b(B):int](i1)
>   i1.[A.id:int] = i4
>   i5 = i1.[A.id:int]   // exception occured here... if (defsOfUse.size()
> == 1)... raised that exception...
> 
> The localDefs.getDefsOfAt(<i1>, <i5 = i1.[A.id:int]>)
> returned a null, because the map in the SimpleLocalDefs did not have an
> entry with a key of (<i1>, <i5 = i1.[A.id:int]>), but it had an
> entry with a key of (<i3>, <i5 = i1.[A.id:int]>) in it...
> 
> what I think is that the map of LocalDefs was outdated... using
> useBox.setValue only updates a local usage in statements... but not as
> part of the key (localStmtPairs) of LocalDefs' map... am I right?

Yeah.  I don't know if this is a bug that we fixed in our current
version or not.  Do you have a small .java program which reproduces this
error?


Raja