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:02 UTC
[2/4] groovy git commit: Minor refactoring: remove duplicated code of
`StaticTypesBinaryExpressionMultiTypeDispatcher`
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) {