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:33:31 UTC

groovy git commit: Minor refactoring: remove duplicated code of `StaticTypesBinaryExpressionMultiTypeDispatcher`

Repository: groovy
Updated Branches:
  refs/heads/master 08d108220 -> ea816201e


Minor refactoring: remove duplicated code of `StaticTypesBinaryExpressionMultiTypeDispatcher`


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

Branch: refs/heads/master
Commit: ea816201ee08fa0dd87a347f11c14781d15d2ff6
Parents: 08d1082
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:33:18 2018 +0800

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


http://git-wip-us.apache.org/repos/asf/groovy/blob/ea816201/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) {