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;
}