Remove all dynamic type checking overhead for struct field accesses. These checks are unnecessary by construction; see the codepaths that construct SkylarkInfo instances.

RELNOTES: None
PiperOrigin-RevId: 188373688
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/DotExpression.java b/src/main/java/com/google/devtools/build/lib/syntax/DotExpression.java
index 06659ae..5b1045f 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/DotExpression.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/DotExpression.java
@@ -85,7 +85,13 @@
    */
   public static Object eval(Object objValue, String name,
       Location loc, Environment env) throws EvalException {
-    if (objValue instanceof ClassObject) {
+    if (objValue instanceof SkylarkClassObject) {
+      try {
+        return ((SkylarkClassObject) objValue).getValue(name);
+      } catch (IllegalArgumentException ex) {
+        throw new EvalException(loc, ex);
+      }
+    } else if (objValue instanceof ClassObject) {
       Object result = null;
       try {
         result = ((ClassObject) objValue).getValue(name);