Reviewers: Lex, cromwellian,

Message:
Hey guys,

I was working on a patch to JsInlining and it really started to bug me
how many silly clinits are just hanging around.  So I wrote this patch
that does a couple of neat things:

1) A trivial clinit that merely delegates to a superclass doesn't emit
code; instead, call sites that would have targeted the subclass will
target the superclass instead.

2) As an added bonus, in situations where you have two classes that
sharing a supertype, where only the supertype has a clinit, calls
between the two classes won't trigger clinit checks anymore.  This also
works when a supetype calls into a subtype when only the supertype has a
clinit, which is exactly the case that enums are currently tripping
over.


Description:
Hey guys,

I was working on a patch to JsInlining and it really started to bug me
how many silly clinits are just hanging around.  So I wrote this patch
that does a couple of neat things:

1) A trivial clinit that merely delegates to a superclass doesn't emit
code; instead, call sites that would have targeted the subclass will
target the superclass instead.

2) As an added bonus, in situations where you have two classes that
sharing a supertype, where only the supertype has a clinit, calls
between the two classes won't trigger clinit checks anymore.  This also
works when a supetype calls into a subtype when only the supertype has a
clinit, which is exactly the case that enums are currently tripping
over.


Please review this at http://gwt-code-reviews.appspot.com/184802

Affected files:
  M dev/core/src/com/google/gwt/dev/jjs/ast/JDeclaredType.java
  M dev/core/src/com/google/gwt/dev/jjs/ast/JTypeOracle.java
  M dev/core/src/com/google/gwt/dev/jjs/impl/DeadCodeElimination.java
  M dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java
  M dev/core/src/com/google/gwt/dev/jjs/impl/MethodInliner.java


--
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to