[Soot-list] Why is not soot used in the workflow of a modern Java compiler?
Patrick Lam
plam at sable.mcgill.ca
Sat Dec 14 09:54:02 EST 2013
On 14/12/13 02:13 AM, Zhoulai wrote:
> Hello,
>
> I have a very naive question.
>
> Since SOOT can be used to optimize Java codes, say, by eliminating dead
> codes, or by constant propagation, etc. Why isn’t it integrated into
> modern compiler like javac as a post-processing step so that they could
> have produced more efficient codes?
>
> One might think that SOOT takes too much time. However, I feel
> (although not sure) that even a simple intra-procedural analysis like
> those built in SOOT could have improved significantly bytecodes compiled
> by Javac, and such intra-procedural can be very fast I suppose. So
> there should be practical reasons explaining why these optimisations
> in Soot not integrated as a part of Javac’s workflow? Can anyone clarify
> this point? Many thanks.
Hi Zhoulai,
Most of the performance optimization for production Java Virtual
Machines happens at runtime by the Just-in-Time compiler, which has a
better view of the code and can easily do optimizations that are more
interprocedural as well as intraprocecedural. The exact bytecode layout
turns out to not matter that much. So Soot is really only worth using
for performance when you are otherwise generating code that is
egregiously bad (like for AspectJ) or if you are going to do some really
worthwhile high-level optimization that is hard to do at runtime. Of
course, many people also use Soot for verification-related analyses.
pat
More information about the Soot-list
mailing list