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

Zhou, Tong tz at gatech.edu
Wed Jan 23 14:58:06 EST 2019


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20190123/3058bdb5/attachment.html>


More information about the Soot-list mailing list