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/03/09 04:57:36 UTC
[2/2] groovy git commit: Minor refactoring: remove duplicated code of
number calculation
Minor refactoring: remove duplicated code of number calculation
(cherry picked from commit f73d551)
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/930508a3
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/930508a3
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/930508a3
Branch: refs/heads/GROOVY_2_6_X
Commit: 930508a366a3118023dea7a85ecf09de5926a480
Parents: 2bfb300
Author: sunlan <su...@apache.org>
Authored: Fri Mar 9 12:54:10 2018 +0800
Committer: sunlan <su...@apache.org>
Committed: Fri Mar 9 12:57:27 2018 +0800
----------------------------------------------------------------------
.../groovy/runtime/dgmimpl/NumberNumberDiv.java | 87 ++++++++++++-------
.../runtime/dgmimpl/NumberNumberMetaMethod.java | 78 +++++++++++++++++
.../runtime/dgmimpl/NumberNumberMinus.java | 91 +++++++++++---------
.../runtime/dgmimpl/NumberNumberMultiply.java | 91 +++++++++++---------
.../runtime/dgmimpl/NumberNumberPlus.java | 91 +++++++++++---------
5 files changed, 282 insertions(+), 156 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/930508a3/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberDiv.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberDiv.java b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberDiv.java
index b20d4fe..443d970 100644
--- a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberDiv.java
+++ b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberDiv.java
@@ -46,51 +46,72 @@ public final class NumberNumberDiv extends NumberNumberMetaMethod {
return NumberMath.divide(left, right);
}
- public CallSite createPojoCallSite(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
- if (receiver instanceof Integer) {
- if (args[0] instanceof Float)
- return new IntegerFloat(site, metaClass, metaMethod, params, receiver, args);
- if (args[0] instanceof Double)
- return new IntegerDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createIntegerInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return createNumberNumber(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (receiver instanceof Long) {
- if (args[0] instanceof Float)
- return new LongFloat(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createIntegerLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return createNumberNumber(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Double)
- return new LongDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createIntegerFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new IntegerFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (receiver instanceof Float) {
- if (args[0] instanceof Integer)
- return new FloatInteger(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createIntegerDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new IntegerDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Long)
- return new FloatLong(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createLongInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return createNumberNumber(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Float)
- return new FloatFloat(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createLongLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return createNumberNumber(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Double)
- return new FloatDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createLongFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new LongFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (receiver instanceof Double) {
- if (args[0] instanceof Integer)
- return new DoubleInteger(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createLongDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new LongDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Long)
- return new DoubleLong(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createFloatInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatInteger(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Float)
- return new DoubleFloat(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createFloatLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatLong(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Double)
- return new DoubleDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createFloatFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
+
+ public CallSite createFloatDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
+
+ public CallSite createDoubleInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleInteger(site, metaClass, metaMethod, params, receiver, args);
+ }
+
+ public CallSite createDoubleLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleLong(site, metaClass, metaMethod, params, receiver, args);
+ }
+
+ public CallSite createDoubleFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
+
+ public CallSite createDoubleDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
+ public CallSite createNumberNumber(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
return new NumberNumber(site, metaClass, metaMethod, params, receiver, args);
}
http://git-wip-us.apache.org/repos/asf/groovy/blob/930508a3/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMetaMethod.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMetaMethod.java b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMetaMethod.java
index 1d945fc..7e588cc 100644
--- a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMetaMethod.java
+++ b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMetaMethod.java
@@ -58,4 +58,82 @@ public abstract class NumberNumberMetaMethod extends CallSiteAwareMetaMethod {
math = NumberMath.getMath(receiver,arg);
}
}
+
+ public CallSite createPojoCallSite(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ if (receiver instanceof Integer) {
+ if (args[0] instanceof Integer)
+ return createIntegerInteger(site, metaClass, metaMethod, params, receiver, args);
+
+ if (args[0] instanceof Long)
+ return createIntegerLong(site, metaClass, metaMethod, params, receiver, args);
+
+ if (args[0] instanceof Float)
+ return createIntegerFloat(site, metaClass, metaMethod, params, receiver, args);
+
+ if (args[0] instanceof Double)
+ return createIntegerDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
+
+ if (receiver instanceof Long) {
+ if (args[0] instanceof Integer)
+ return createLongInteger(site, metaClass, metaMethod, params, receiver, args);
+
+ if (args[0] instanceof Long)
+ return createLongLong(site, metaClass, metaMethod, params, receiver, args);
+
+ if (args[0] instanceof Float)
+ return createLongFloat(site, metaClass, metaMethod, params, receiver, args);
+
+ if (args[0] instanceof Double)
+ return createLongDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
+
+ if (receiver instanceof Float) {
+ if (args[0] instanceof Integer)
+ return createFloatInteger(site, metaClass, metaMethod, params, receiver, args);
+
+ if (args[0] instanceof Long)
+ return createFloatLong(site, metaClass, metaMethod, params, receiver, args);
+
+ if (args[0] instanceof Float)
+ return createFloatFloat(site, metaClass, metaMethod, params, receiver, args);
+
+ if (args[0] instanceof Double)
+ return createFloatDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
+
+ if (receiver instanceof Double) {
+ if (args[0] instanceof Integer)
+ return createDoubleInteger(site, metaClass, metaMethod, params, receiver, args);
+
+ if (args[0] instanceof Long)
+ return createDoubleLong(site, metaClass, metaMethod, params, receiver, args);
+
+ if (args[0] instanceof Float)
+ return createDoubleFloat(site, metaClass, metaMethod, params, receiver, args);
+
+ if (args[0] instanceof Double)
+ return createDoubleDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
+
+ return createNumberNumber(site, metaClass, metaMethod, params, receiver, args);
+ }
+
+ public abstract CallSite createIntegerInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createIntegerLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createIntegerFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createIntegerDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createLongInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createLongLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createLongFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createLongDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createFloatInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createFloatLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createFloatFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createFloatDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createDoubleInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createDoubleLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createDoubleFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createDoubleDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createNumberNumber(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
}
http://git-wip-us.apache.org/repos/asf/groovy/blob/930508a3/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMinus.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMinus.java b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMinus.java
index 81fe53d..573634c 100644
--- a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMinus.java
+++ b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMinus.java
@@ -43,63 +43,72 @@ public final class NumberNumberMinus extends NumberNumberMetaMethod {
return NumberMath.subtract(left, right);
}
- public CallSite createPojoCallSite(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
- if (receiver instanceof Integer) {
- if (args[0] instanceof Integer)
- return new IntegerInteger(site, metaClass, metaMethod, params, receiver, args);
- if (args[0] instanceof Long)
- return new IntegerLong(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createIntegerInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new IntegerInteger(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Float)
- return new IntegerFloat(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createIntegerLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new IntegerLong(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Double)
- return new IntegerDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createIntegerFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new IntegerFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (receiver instanceof Long) {
- if (args[0] instanceof Integer)
- return new LongInteger(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createIntegerDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new IntegerDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Long)
- return new LongLong(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createLongInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new LongInteger(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Float)
- return new LongFloat(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createLongLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new LongLong(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Double)
- return new LongDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createLongFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new LongFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (receiver instanceof Float) {
- if (args[0] instanceof Integer)
- return new FloatInteger(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createLongDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new LongDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Long)
- return new FloatLong(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createFloatInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatInteger(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Float)
- return new FloatFloat(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createFloatLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatLong(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Double)
- return new FloatDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createFloatFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
+
+ public CallSite createFloatDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (receiver instanceof Double) {
- if (args[0] instanceof Integer)
- return new DoubleInteger(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createDoubleInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleInteger(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Long)
- return new DoubleLong(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createDoubleLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleLong(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Float)
- return new DoubleFloat(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createDoubleFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Double)
- return new DoubleDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createDoubleDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
+ public CallSite createNumberNumber(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
return new NumberNumber(site, metaClass, metaMethod, params, receiver, args);
}
http://git-wip-us.apache.org/repos/asf/groovy/blob/930508a3/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMultiply.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMultiply.java b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMultiply.java
index 2f170e1..a326515 100644
--- a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMultiply.java
+++ b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMultiply.java
@@ -45,63 +45,72 @@ public final class NumberNumberMultiply extends NumberNumberMetaMethod {
return NumberMath.multiply(left, right);
}
- public CallSite createPojoCallSite(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
- if (receiver instanceof Integer) {
- if (args[0] instanceof Integer)
- return new IntegerInteger(site, metaClass, metaMethod, params, receiver, args);
- if (args[0] instanceof Long)
- return new IntegerLong(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createIntegerInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new IntegerInteger(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Float)
- return new IntegerFloat(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createIntegerLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new IntegerLong(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Double)
- return new IntegerDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createIntegerFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new IntegerFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (receiver instanceof Long) {
- if (args[0] instanceof Integer)
- return new LongInteger(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createIntegerDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new IntegerDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Long)
- return new LongLong(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createLongInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new LongInteger(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Float)
- return new LongFloat(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createLongLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new LongLong(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Double)
- return new LongDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createLongFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new LongFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (receiver instanceof Float) {
- if (args[0] instanceof Integer)
- return new FloatInteger(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createLongDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new LongDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Long)
- return new FloatLong(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createFloatInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatInteger(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Float)
- return new FloatFloat(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createFloatLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatLong(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Double)
- return new FloatDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createFloatFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
+
+ public CallSite createFloatDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (receiver instanceof Double) {
- if (args[0] instanceof Integer)
- return new DoubleInteger(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createDoubleInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleInteger(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Long)
- return new DoubleLong(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createDoubleLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleLong(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Float)
- return new DoubleFloat(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createDoubleFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Double)
- return new DoubleDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createDoubleDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
+ public CallSite createNumberNumber(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
return new NumberNumber(site, metaClass, metaMethod, params, receiver, args);
}
http://git-wip-us.apache.org/repos/asf/groovy/blob/930508a3/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberPlus.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberPlus.java b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberPlus.java
index b5b0761..33e2128 100644
--- a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberPlus.java
+++ b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberPlus.java
@@ -43,63 +43,71 @@ public final class NumberNumberPlus extends NumberNumberMetaMethod {
return NumberMath.add(left, right);
}
- public CallSite createPojoCallSite(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
- if (receiver instanceof Integer) {
- if (args[0] instanceof Integer)
- return new IntegerInteger(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createIntegerInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new IntegerInteger(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Long)
- return new IntegerLong(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createIntegerLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new IntegerLong(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Float)
- return new IntegerFloat(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createIntegerFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new IntegerFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Double)
- return new IntegerDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createIntegerDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new IntegerDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (receiver instanceof Long) {
- if (args[0] instanceof Integer)
- return new LongInteger(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createLongInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new LongInteger(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Long)
- return new LongLong(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createLongLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new LongLong(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Float)
- return new LongFloat(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createLongFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new LongFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Double)
- return new LongDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createLongDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new LongDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (receiver instanceof Float) {
- if (args[0] instanceof Integer)
- return new FloatInteger(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createFloatInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatInteger(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Long)
- return new FloatLong(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createFloatLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatLong(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Float)
- return new FloatFloat(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createFloatFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Double)
- return new FloatDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createFloatDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (receiver instanceof Double) {
- if (args[0] instanceof Integer)
- return new DoubleInteger(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createDoubleInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleInteger(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Long)
- return new DoubleLong(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createDoubleLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleLong(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Float)
- return new DoubleFloat(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createDoubleFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Double)
- return new DoubleDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createDoubleDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
+ public CallSite createNumberNumber(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
return new NumberNumberCallSite(site, metaClass, metaMethod, params, (Number) receiver, (Number) args[0]) {
public Object invoke(Object receiver, Object[] args) {
return math.addImpl((Number) receiver, (Number) args[0]);
@@ -111,6 +119,7 @@ public final class NumberNumberPlus extends NumberNumberMetaMethod {
};
}
+
private static class DoubleDouble extends NumberNumberCallSite {
public DoubleDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
super(site, metaClass, metaMethod, params, (Number) receiver, (Number) args[0]);