gwt /
gwt /
15f67570ced896f2eade9afac0cc8bfc755fe941 Overhaul overlay types.
In general, JSOs now treated like other Java types, except for cast/instanceof
and instantiability.
1) Eliminate JavaScriptObjectNormalizer. JSO subtypes are no longer rewritten as
JSO, and trampoline functions not installed until after optimizations
2) No longer copy every Single JSO interface onto JSO itself
3) Teach TypeOracle about cross-cast JSO semantics
4) Each compiler pass recomputes whether a JSO interface is dually implemented
5) ControlFlowAnalyzer treats implicit casts to JSO as instantiations
6) JsoDevirtualizer now devirtualizes any JSO subtype method (not just
java.lang.Object)
7) CastNormalizer treats non-dual Single JSO Interfaces as casts/instanceof
against the concrete implementor.
This patch allows the compiler to effectively remove trampoline functions from
singlely implemented interface dispatches. It also rationalizes the way JSOs are
treated to bring them more in line with regular Java types by preserving their
type hierarchy in the AST.
Review by: scottb@google.com
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@9853 8db76d5a-ed1c-0410-87a9-c151d255dfc7
11 files changed