You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2018/02/07 14:59:01 UTC

[1/4] groovy git commit: Minor refactoring: remove duplicated code

Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_6_X b1cc4fcc7 -> e89f8a01d


Minor refactoring: remove duplicated code

(cherry picked from commit 08d1082)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/7442aa37
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/7442aa37
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/7442aa37

Branch: refs/heads/GROOVY_2_6_X
Commit: 7442aa376233a8282f04b6a14ba06530014e00cf
Parents: b1cc4fc
Author: Daniel Sun <re...@hotmail.com>
Authored: Wed Feb 7 21:50:27 2018 +0800
Committer: Daniel Sun <re...@hotmail.com>
Committed: Wed Feb 7 22:58:37 2018 +0800

----------------------------------------------------------------------
 .../groovy/classgen/asm/BytecodeHelper.java     |  2 +-
 .../groovy/classgen/asm/OperandStack.java       | 34 +-------------------
 2 files changed, 2 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/groovy/blob/7442aa37/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeHelper.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeHelper.java b/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeHelper.java
index 25fa258..af464f4 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeHelper.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeHelper.java
@@ -207,7 +207,7 @@ public class BytecodeHelper implements Opcodes {
                 } else if (value >= Short.MIN_VALUE && value <= Short.MAX_VALUE) {
                     mv.visitIntInsn(SIPUSH, value);
                 } else {
-                    mv.visitLdcInsn(Integer.valueOf(value));
+                    mv.visitLdcInsn(value);
                 }
         }
     }

http://git-wip-us.apache.org/repos/asf/groovy/blob/7442aa37/src/main/java/org/codehaus/groovy/classgen/asm/OperandStack.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/OperandStack.java b/src/main/java/org/codehaus/groovy/classgen/asm/OperandStack.java
index 9ba551e..f8a494c 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/OperandStack.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/OperandStack.java
@@ -66,10 +66,6 @@ import static org.objectweb.asm.Opcodes.I2L;
 import static org.objectweb.asm.Opcodes.I2S;
 import static org.objectweb.asm.Opcodes.ICONST_0;
 import static org.objectweb.asm.Opcodes.ICONST_1;
-import static org.objectweb.asm.Opcodes.ICONST_2;
-import static org.objectweb.asm.Opcodes.ICONST_3;
-import static org.objectweb.asm.Opcodes.ICONST_4;
-import static org.objectweb.asm.Opcodes.ICONST_5;
 import static org.objectweb.asm.Opcodes.INVOKESPECIAL;
 import static org.objectweb.asm.Opcodes.INVOKEVIRTUAL;
 import static org.objectweb.asm.Opcodes.L2D;
@@ -80,7 +76,6 @@ import static org.objectweb.asm.Opcodes.LCONST_1;
 import static org.objectweb.asm.Opcodes.NEW;
 import static org.objectweb.asm.Opcodes.POP;
 import static org.objectweb.asm.Opcodes.POP2;
-import static org.objectweb.asm.Opcodes.SIPUSH;
 import static org.objectweb.asm.Opcodes.SWAP;
 
 public class OperandStack {
@@ -535,34 +530,7 @@ public class OperandStack {
         boolean isChar = ClassHelper.char_TYPE.equals(type);
         if (isInt || isShort || isByte || isChar) {
             int val = isInt?(Integer)value:isShort?(Short)value:isChar?(Character)value:(Byte)value;
-            switch (val) {
-                case 0:
-                    mv.visitInsn(ICONST_0);
-                    break;
-                case 1:
-                    mv.visitInsn(ICONST_1);
-                    break;
-                case 2:
-                    mv.visitInsn(ICONST_2);
-                    break;
-                case 3:
-                    mv.visitInsn(ICONST_3);
-                    break;
-                case 4:
-                    mv.visitInsn(ICONST_4);
-                    break;
-                case 5:
-                    mv.visitInsn(ICONST_5);
-                    break;
-                default:
-                    if (val>=Byte.MIN_VALUE && val<=Byte.MAX_VALUE) {
-                        mv.visitIntInsn(BIPUSH, val);
-                    } else if (val>=Short.MIN_VALUE && val<=Short.MAX_VALUE) {
-                        mv.visitIntInsn(SIPUSH, val);
-                    } else {
-                        mv.visitLdcInsn(value);
-                    }
-            }
+            BytecodeHelper.pushConstant(mv, val);
         } else if (ClassHelper.long_TYPE.equals(type)) {
             if ((Long)value==0L) {
                 mv.visitInsn(LCONST_0);


[3/4] groovy git commit: Minor refactoring: remove duplicated code of `StaticInvocationWriter`

Posted by su...@apache.org.
Minor refactoring: remove duplicated code of `StaticInvocationWriter`

(cherry picked from commit 03c69ca)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/98adb35f
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/98adb35f
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/98adb35f

Branch: refs/heads/GROOVY_2_6_X
Commit: 98adb35f5228875fc1e46df2eb5956dc5e5f6673
Parents: fb2a021
Author: Daniel Sun <re...@hotmail.com>
Authored: Wed Feb 7 22:43:31 2018 +0800
Committer: Daniel Sun <re...@hotmail.com>
Committed: Wed Feb 7 22:58:47 2018 +0800

----------------------------------------------------------------------
 .../groovy/classgen/asm/sc/StaticInvocationWriter.java | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/groovy/blob/98adb35f/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticInvocationWriter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticInvocationWriter.java b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticInvocationWriter.java
index a6329ce..88b6d99 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticInvocationWriter.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticInvocationWriter.java
@@ -390,16 +390,19 @@ public class StaticInvocationWriter extends InvocationWriter {
                 && !declaringClass.equals(classNode)) {
             if (tryBridgeMethod(target, receiver, implicitThis, args, classNode)) {
                 return true;
-            } else if (declaringClass != classNode) {
-                controller.getSourceUnit().addError(new SyntaxException("Cannot call private method " + (target.isStatic() ? "static " : "") +
-                        declaringClass.toString(false) + "#" + target.getName() + " from class " + classNode.toString(false), receiver.getLineNumber(), receiver.getColumnNumber(), receiver.getLastLineNumber(), receiver.getLastColumnNumber()));
+            } else {
+                checkAndAddCannotCallPrivateMethodError(target, receiver, classNode, declaringClass);
             }
         }
+        checkAndAddCannotCallPrivateMethodError(target, receiver, classNode, declaringClass);
+        return false;
+    }
+
+    private void checkAndAddCannotCallPrivateMethodError(MethodNode target, Expression receiver, ClassNode classNode, ClassNode declaringClass) {
         if (declaringClass != classNode) {
             controller.getSourceUnit().addError(new SyntaxException("Cannot call private method " + (target.isStatic() ? "static " : "") +
-                                                declaringClass.toString(false) + "#" + target.getName() + " from class " + classNode.toString(false), receiver.getLineNumber(), receiver.getColumnNumber(), receiver.getLastLineNumber(), receiver.getLastColumnNumber()));
+                    declaringClass.toString(false) + "#" + target.getName() + " from class " + classNode.toString(false), receiver.getLineNumber(), receiver.getColumnNumber(), receiver.getLastLineNumber(), receiver.getLastColumnNumber()));
         }
-        return false;
     }
 
     protected static boolean isPrivateBridgeMethodsCallAllowed(ClassNode receiver, ClassNode caller) {


[4/4] groovy git commit: Minor refactoring: remove duplicated code of `AsmClassGenerator`

Posted by su...@apache.org.
Minor refactoring: remove duplicated code of `AsmClassGenerator`

(cherry picked from commit 714abf2)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/e89f8a01
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/e89f8a01
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/e89f8a01

Branch: refs/heads/GROOVY_2_6_X
Commit: e89f8a01db3d230fcfc04421d29cfc14e13c1140
Parents: 98adb35
Author: Daniel Sun <re...@hotmail.com>
Authored: Wed Feb 7 22:53:50 2018 +0800
Committer: Daniel Sun <re...@hotmail.com>
Committed: Wed Feb 7 22:58:52 2018 +0800

----------------------------------------------------------------------
 .../codehaus/groovy/classgen/AsmClassGenerator.java | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/groovy/blob/e89f8a01/src/main/java/org/codehaus/groovy/classgen/AsmClassGenerator.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/codehaus/groovy/classgen/AsmClassGenerator.java b/src/main/java/org/codehaus/groovy/classgen/AsmClassGenerator.java
index 099bc9c..4b7600f 100644
--- a/src/main/java/org/codehaus/groovy/classgen/AsmClassGenerator.java
+++ b/src/main/java/org/codehaus/groovy/classgen/AsmClassGenerator.java
@@ -325,12 +325,18 @@ public class AsmClassGenerator extends ClassGenerator {
     private static int adjustedClassModifiersForInnerClassTable(ClassNode classNode) {
         int modifiers = classNode.getModifiers();
         modifiers = modifiers & ~ACC_SUPER;
+        modifiers = fixInterfaceModifiers(classNode, modifiers);
+
+        modifiers = fixInnerClassModifiers(classNode, modifiers);
+        return modifiers;
+    }
+
+    private static int fixInterfaceModifiers(ClassNode classNode, int modifiers) {
         // (JLS §9.1.1.1). Such a class file must not have its ACC_FINAL, ACC_SUPER or ACC_ENUM flags set.
         if (classNode.isInterface()) {
             modifiers = modifiers & ~ACC_ENUM;
             modifiers = modifiers & ~ACC_FINAL;
         }
-        modifiers = fixInnerClassModifiers(classNode, modifiers);
         return modifiers;
     }
 
@@ -362,16 +368,10 @@ public class AsmClassGenerator extends ClassGenerator {
         // eliminate static
         modifiers = modifiers & ~ACC_STATIC;
         modifiers = fixInnerClassModifiers(classNode, modifiers);
-
-        // (JLS §9.1.1.1). Such a class file must not have its ACC_FINAL, ACC_SUPER or ACC_ENUM flags set.
-        if (classNode.isInterface()) {
-            modifiers = modifiers & ~ACC_ENUM;
-            modifiers = modifiers & ~ACC_FINAL;
-        }
+        modifiers = fixInterfaceModifiers(classNode, modifiers);
         return modifiers;
     }
 
-
     public void visitGenericType(GenericsType genericsType) {
         ClassNode type = genericsType.getType();
         genericParameterNames.put(type.getName(), genericsType);


[2/4] groovy git commit: Minor refactoring: remove duplicated code of `StaticTypesBinaryExpressionMultiTypeDispatcher`

Posted by su...@apache.org.
Minor refactoring: remove duplicated code of `StaticTypesBinaryExpressionMultiTypeDispatcher`

(cherry picked from commit ea81620)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/fb2a0214
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/fb2a0214
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/fb2a0214

Branch: refs/heads/GROOVY_2_6_X
Commit: fb2a02141e4cddfab188ec755740a41638440ffe
Parents: 7442aa3
Author: Daniel Sun <re...@hotmail.com>
Authored: Wed Feb 7 22:33:18 2018 +0800
Committer: Daniel Sun <re...@hotmail.com>
Committed: Wed Feb 7 22:58:42 2018 +0800

----------------------------------------------------------------------
 ...ypesBinaryExpressionMultiTypeDispatcher.java | 42 +++++++-------------
 1 file changed, 15 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/groovy/blob/fb2a0214/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesBinaryExpressionMultiTypeDispatcher.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesBinaryExpressionMultiTypeDispatcher.java b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesBinaryExpressionMultiTypeDispatcher.java
index 116fd16..9088d8b 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesBinaryExpressionMultiTypeDispatcher.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesBinaryExpressionMultiTypeDispatcher.java
@@ -109,41 +109,29 @@ public class StaticTypesBinaryExpressionMultiTypeDispatcher extends BinaryExpres
         ClassNode top = operandStack.getTopOperand();
         if (ClassHelper.isPrimitiveType(top) && (ClassHelper.isNumberType(top)||char_TYPE.equals(top))) {
             MethodVisitor mv = controller.getMethodVisitor();
-            if (WideningCategories.isIntCategory(top) || char_TYPE.equals(top)) {
-                mv.visitInsn(ICONST_1);
-            } else if (long_TYPE.equals(top)) {
-                mv.visitInsn(LCONST_1);
-            } else if (float_TYPE.equals(top)) {
-                mv.visitInsn(FCONST_1);
-            } else if (double_TYPE.equals(top)) {
-                mv.visitInsn(DCONST_1);
-            }
+            visitInsnByType(top, mv, ICONST_1, LCONST_1, FCONST_1, DCONST_1);
             if ("next".equals(method)) {
-                if (WideningCategories.isIntCategory(top) || char_TYPE.equals(top)) {
-                    mv.visitInsn(IADD);
-                } else if (long_TYPE.equals(top)) {
-                    mv.visitInsn(LADD);
-                } else if (float_TYPE.equals(top)) {
-                    mv.visitInsn(FADD);
-                } else if (double_TYPE.equals(top)) {
-                    mv.visitInsn(DADD);
-                }
+                visitInsnByType(top, mv, IADD, LADD, FADD, DADD);
             } else {
-                if (WideningCategories.isIntCategory(top) || char_TYPE.equals(top)) {
-                    mv.visitInsn(ISUB);
-                } else if (long_TYPE.equals(top)) {
-                    mv.visitInsn(LSUB);
-                } else if (float_TYPE.equals(top)) {
-                    mv.visitInsn(FSUB);
-                } else if (double_TYPE.equals(top)) {
-                    mv.visitInsn(DSUB);
-                }
+                visitInsnByType(top, mv, ISUB, LSUB, FSUB, DSUB);
             }
             return;
         }
         super.writePostOrPrefixMethod(op, method, expression, orig);
     }
 
+    private static void visitInsnByType(ClassNode top, MethodVisitor mv, int iInsn, int lInsn, int fInsn, int dInsn) {
+        if (WideningCategories.isIntCategory(top) || char_TYPE.equals(top)) {
+            mv.visitInsn(iInsn);
+        } else if (long_TYPE.equals(top)) {
+            mv.visitInsn(lInsn);
+        } else if (float_TYPE.equals(top)) {
+            mv.visitInsn(fInsn);
+        } else if (double_TYPE.equals(top)) {
+            mv.visitInsn(dInsn);
+        }
+    }
+
     @Override
     public void evaluateEqual(final BinaryExpression expression, final boolean defineVariable) {
         if (!defineVariable) {