[Soot-list] Problems with nested try..catch..finally?

Etienne M. Gagnon egagnon at j-meg.com
Fri Oct 9 16:54:18 EDT 2009


In case anyone is insterested, here's a link to Jamal's thesis (in French):
http://www.archipel.uqam.ca/1809/1/M10697.pdf

Etienne

Etienne M. Gagnon a écrit :
> Hi there,
>
> As far as I remember, Soot did inline the code of JSRs to get rid of 
> jsr/ret instructions. One problem is that inlining could be trickier 
> than one would intuitively think, as you can get out of a "subroutine" 
> without going through a RET instruction. So, I wouldn't be surprised 
> if there were some corner cases that are improperly handled in Soot. 
> The name "JSR" was a poor choice for this instruction, as the 
> instruction does a "branch and store address on the stack" operation, 
> nothing more; it does not always invoke a "subroutine". (Another 
> problem, which is not real in practice, is that, in the worst case, 
> inlining can exponentially expand the size of the code).
>
> Jamal Lazaar has developed a theoretical framework that allows the 
> analysis of bytecode instructions in presence of JSR/RET instructions, 
> in polynonimal time. He actually shows (and proves) how to verify Java 
> bytecode. Separately, he uses the computed results (about 
> "subroutimes" and JSR/RET relations) to also statically verify that 
> each MONITORENTER is properly closed with MONITOREXIT instructions.
>
> I think that the first steps of his algorithm could help in finding 
> the appropriate code to duplicate when inlining JSR instructions.
>
> Example (valid bytecode):
>
> static int foo(int) {
>
> Label_1:
>  ILOAD_0
>  ICONST_0
>  IF_ICMPEQ Label_3
>  JSR Label_2
> Label_2:
>  ASTORE_1
>  GOTO Label_1
> Label3:
>  ICONST_1
>  IRETURN
>
> }
>
> Yep, I know: this doesn't look like it was generated from Java code. 
> Yet, it does match all the rules of Java verification. Have fun 
> inlining the JSR. :)
>
> Etienne
>

-- 
Etienne M. Gagnon, Ph.D.
SableCC:                                            http://sablecc.org



More information about the Soot-list mailing list