You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by em...@apache.org on 2020/10/23 18:42:41 UTC

[groovy] 01/02: SC: eliminate redundant checking for fields in makeGetField

This is an automated email from the ASF dual-hosted git repository.

emilles pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git

commit da0be8c8f4547d433161d656a637f9bf63423e08
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Fri Oct 23 13:35:40 2020 -0500

    SC: eliminate redundant checking for fields in makeGetField
---
 .../classgen/asm/sc/StaticTypesCallSiteWriter.java       | 16 ++--------------
 1 file changed, 2 insertions(+), 14 deletions(-)

diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesCallSiteWriter.java b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesCallSiteWriter.java
index d25cb9f..9a99948 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesCallSiteWriter.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesCallSiteWriter.java
@@ -55,6 +55,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 
+import static org.apache.groovy.ast.tools.ClassNodeUtils.getField;
 import static org.apache.groovy.ast.tools.ExpressionUtils.isThisExpression;
 import static org.apache.groovy.util.BeanUtils.capitalize;
 import static org.codehaus.groovy.ast.ClassHelper.BigDecimal_TYPE;
@@ -549,8 +550,7 @@ public class StaticTypesCallSiteWriter extends CallSiteWriter {
     }
 
     boolean makeGetField(final Expression receiver, final ClassNode receiverType, final String fieldName, final boolean safe, final boolean implicitThis) {
-        FieldNode field = receiverType.getField(fieldName);
-
+        FieldNode field = getField(receiverType, fieldName); // GROOVY-7039: include interface constants
         if (field != null && isDirectAccessAllowed(field, controller.getClassNode())) {
             CompileStack compileStack = controller.getCompileStack();
             MethodVisitor mv = controller.getMethodVisitor();
@@ -593,18 +593,6 @@ public class StaticTypesCallSiteWriter extends CallSiteWriter {
             operandStack.replace(replacementType);
             return true;
         }
-
-        for (ClassNode face : receiverType.getInterfaces()) {
-            // GROOVY-7039
-            if (face != receiverType && makeGetField(receiver, face, fieldName, safe, implicitThis)) {
-                return true;
-            }
-        }
-
-        ClassNode superClass = receiverType.getSuperClass();
-        if (superClass != null && !OBJECT_TYPE.equals(superClass)) {
-            return makeGetField(receiver, superClass, fieldName, safe, implicitThis);
-        }
         return false;
     }