Comment by [email protected]:
FWIW, I remember the day, many years back, when I realized that clinits
could have circular dependencies, and had to fix a codegen bug in the
compiler to deal with it. We had a fair amount of code at the time, yet
only a single case where there was a circular dependency. In practice I
suspect they occur quite rarely.
I also suspect we'll see a non-trivial effect on both code size and
performance. In addition to getting rid of the rat's nest of clinit
functions that call each other and stub themselves out, it would remove a
*lot* of lazy clinit calls that are interspersed throughout generated code.
It wouldn't surprise me to discover that this was exacting a significant
performance cost, as well as defeating inlining (I recently got profile
results on a complex piece of code where "nullmethod" accounted for a *lot*
of time).
For more information:
http://code.google.com/p/google-web-toolkit/wiki/AggressiveClinitOptimization
--
http://groups.google.com/group/Google-Web-Toolkit-Contributors