Removes JTypeOracle.isJsType and isJsFunction.

These two are redundant after JType introduced this functions.
Also patches makes some related simplifications in CFA.

Change-Id: I3a9e6ba8111157e67295f16c8429316bc5398dfd
diff --git a/dev/core/src/com/google/gwt/dev/jjs/ast/JTypeOracle.java b/dev/core/src/com/google/gwt/dev/jjs/ast/JTypeOracle.java
index 3ff2567..4a0bf15 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/ast/JTypeOracle.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/ast/JTypeOracle.java
@@ -1009,13 +1009,6 @@
   }
 
   /**
-   * Whether the type is a JS interface (does not check supertypes).
-   */
-  public boolean isJsType(JType type) {
-    return type instanceof JDeclaredType && ((JDeclaredType) type).isJsType();
-  }
-
-  /**
    * Whether the type or any supertypes is a JS type, optionally, only return true if
    * one of the types has a js prototype.
    */
@@ -1024,13 +1017,6 @@
   }
 
   /**
-   * Whether the type is a JsFunction interface.
-   */
-  public boolean isJsFunction(JType type) {
-    return type instanceof JInterfaceType && ((JInterfaceType) type).isJsFunction();
-  }
-
-  /**
    * Returns true if possibleSubType is a subclass of type, directly or indirectly.
    */
   public boolean isSubClass(JClassType type, JClassType possibleSubType) {
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java b/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java
index 296a694..956a33f 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java
@@ -31,7 +31,6 @@
 import com.google.gwt.dev.jjs.ast.JExpression;
 import com.google.gwt.dev.jjs.ast.JField;
 import com.google.gwt.dev.jjs.ast.JFieldRef;
-import com.google.gwt.dev.jjs.ast.JInstanceOf;
 import com.google.gwt.dev.jjs.ast.JInterfaceType;
 import com.google.gwt.dev.jjs.ast.JLocal;
 import com.google.gwt.dev.jjs.ast.JLocalRef;
@@ -310,16 +309,6 @@
     }
 
     @Override
-    public boolean visit(JInstanceOf x, Context ctx) {
-      JReferenceType targetType = x.getTestType();
-      if (program.typeOracle.isJsType(targetType) || program.typeOracle.isJsFunction(targetType)) {
-        // keep alive JsType used in instanceof so it is not pruned and re-written as null check.
-        rescue(targetType, true);
-      }
-      return true;
-    }
-
-    @Override
     public boolean visit(JInterfaceType type, Context ctx) {
       boolean isReferenced = referencedTypes.contains(type);
       boolean isInstantiated = instantiatedTypes.contains(type);
@@ -659,8 +648,7 @@
         return;
       }
       JArrayType arrayType = (JArrayType) type;
-      if (program.typeOracle.isJsType(arrayType.getLeafType()) ||
-          program.typeOracle.isJsFunction(arrayType.getLeafType())) {
+      if (arrayType.isJsType()) {
         rescue(arrayType, true);
         maybeRescueJsTypeArray(arrayType.getElementType());
       }
@@ -693,7 +681,7 @@
 
       accept(type);
 
-      if (!program.typeOracle.isJsType(type) && !program.typeOracle.isJsFunction(type)) {
+      if (!(type instanceof JDeclaredType)) {
         return;
       }
 
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/TypeCategory.java b/dev/core/src/com/google/gwt/dev/jjs/impl/TypeCategory.java
index 0242b35..55cf8bc 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/TypeCategory.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/TypeCategory.java
@@ -53,13 +53,12 @@
     } else if (program.typeOracle.willCrossCastLikeJso(type)) {
       return TypeCategory.TYPE_JSO;
     } else if (program.typeOracle.isDualJsoInterface(type) ||
-        program.typeOracle.hasLiveImplementors(type) &&
         program.typeOracle.isOrExtendsJsType(type, false) &&
         !program.typeOracle.isOrExtendsJsType(type, true)) {
       return TypeCategory.TYPE_JAVA_OBJECT_OR_JSO;
     } else if (program.typeOracle.isOrExtendsJsType(type, true)) {
       return TypeCategory.TYPE_JS_INTERFACE;
-    } else if (program.typeOracle.isJsFunction(type)) {
+    } else if (type.isJsFunction()) {
       return TypeCategory.TYPE_JS_FUNCTION;
     }
     return TypeCategory.TYPE_JAVA_OBJECT;