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) {