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