Better cast optimization where only one concrete type exists.
http://gwt-code-reviews.appspot.com/154807/show
Review by: cromwellian
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@7636 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/TypeTightener.java b/dev/core/src/com/google/gwt/dev/jjs/impl/TypeTightener.java
index 04ed496..2a9edbc 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/TypeTightener.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/TypeTightener.java
@@ -387,8 +387,14 @@
return;
}
- JReferenceType toType = (JReferenceType) x.getCastType();
- JReferenceType fromType = (JReferenceType) argType;
+ JReferenceType toType = getSingleConcreteType(x.getCastType());
+ if (toType == null) {
+ toType = (JReferenceType) x.getCastType();
+ }
+ JReferenceType fromType = getSingleConcreteType(argType);
+ if (fromType == null) {
+ fromType = (JReferenceType) argType;
+ }
boolean triviallyTrue = false;
boolean triviallyFalse = false;
@@ -465,8 +471,14 @@
return;
}
- JReferenceType toType = x.getTestType();
- JReferenceType fromType = (JReferenceType) argType;
+ JReferenceType toType = getSingleConcreteType(x.getTestType());
+ if (toType == null) {
+ toType = x.getTestType();
+ }
+ JReferenceType fromType = getSingleConcreteType(argType);
+ if (fromType == null) {
+ fromType = (JReferenceType) argType;
+ }
boolean triviallyTrue = false;
boolean triviallyFalse = false;