[Soot-list] Why does Java use bytecode instead of 3-address code IR like Shimple or Jimple

Patrick Lam plam at sable.mcgill.ca
Wed Jan 23 16:53:04 EST 2019


Historical reasons, e.g.

http://web.archive.org/web/20010610045734/http://java.sun.com/nav/whatis/storyofjava.html

It really doesn't make any sense in today's context, but they just add 
bytecodes rather than doing a fresh redesign of the VM.

pat

On 1/23/19 2:58 PM, Zhou, Tong wrote:
> Hi,
> 
> 
> I've been working on a number of Java program analysis/Java JIT compiler 
> related work for sometime, but I still can't figure out a basic 
> question. Why did Java choose to use stack machine based bytecode as its 
> IR instead of quad IR like Jimple?
> 
> 
> For portability, I don't see how Jimple is less portable than bytecode. 
> Maybe someone can shed more lights.
> 
> 
> For interpretation simplicity, Jimple is also easy to interpret.
> 
> 
> For interoperability, supporting dynamic features might be even easier 
> in Jimple-like IRs.
> 
> 
> For advanced compiler optimization, bytecode has to be translated to a 
> Jimple or Shimple-like IR first anyway.
> 
> 
> Finally, if using bytecode is no longer a good decision, it's totally 
> possible to redesign Java distributable IR to be 3-address code. This 
> hasn't discussed so I assume bytecode still has its reasons to be used.
> 
> 
> Can someone with more experience shed some light? Thanks!
> 
> 
> -Tong
> 
> 
> _______________________________________________
> Soot-list mailing list
> Soot-list at CS.McGill.CA
> https://mailman.CS.McGill.CA/mailman/listinfo/soot-list
> 



More information about the Soot-list mailing list