From cf92026d0f625b3501ac50e8d9614c831575a40c Mon Sep 17 00:00:00 2001 From: Lukas Stadler <lukas.stadler@oracle.com> Date: Mon, 10 Nov 2014 19:00:15 +0100 Subject: [PATCH] use functional interfaces for operation factories --- .../r/runtime/ops/BinaryArithmetic.java | 77 +++---------------- .../runtime/ops/BinaryArithmeticFactory.java | 6 +- .../truffle/r/runtime/ops/BinaryCompare.java | 49 ++---------- .../truffle/r/runtime/ops/BinaryLogic.java | 35 +-------- .../runtime/ops/BooleanOperationFactory.java | 6 +- .../r/runtime/ops/OperationFactory.java | 5 +- .../r/runtime/ops/UnaryArithmetic.java | 35 +-------- .../r/runtime/ops/UnaryArithmeticFactory.java | 6 +- 8 files changed, 35 insertions(+), 184 deletions(-) diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/BinaryArithmetic.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/BinaryArithmetic.java index bc37448c28..39e978d642 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/BinaryArithmetic.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/BinaryArithmetic.java @@ -56,74 +56,15 @@ public abstract class BinaryArithmetic extends Operation { public static class PowBuiltin { } - public static final BinaryArithmeticFactory ADD = new BinaryArithmeticFactory() { - - @Override - public BinaryArithmetic create() { - return new Add(); - } - }; - public static final BinaryArithmeticFactory SUBTRACT = new BinaryArithmeticFactory() { - - @Override - public BinaryArithmetic create() { - return new Subtract(); - } - }; - public static final BinaryArithmeticFactory MULTIPLY = new BinaryArithmeticFactory() { - - @Override - public BinaryArithmetic create() { - return new Multiply(); - } - }; - public static final BinaryArithmeticFactory INTEGER_DIV = new BinaryArithmeticFactory() { - - @Override - public BinaryArithmetic create() { - return new IntegerDiv(); - } - }; - - public static final BinaryArithmeticFactory DIV = new BinaryArithmeticFactory() { - - @Override - public BinaryArithmetic create() { - return new Div(); - } - }; - - public static final BinaryArithmeticFactory MOD = new BinaryArithmeticFactory() { - - @Override - public BinaryArithmetic create() { - return new Mod(); - } - }; - - public static final BinaryArithmeticFactory POW = new BinaryArithmeticFactory() { - - @Override - public BinaryArithmetic create() { - return new Pow(); - } - }; - - public static final BinaryArithmeticFactory MAX = new BinaryArithmeticFactory() { - - @Override - public BinaryArithmetic create() { - return new Max(); - } - }; - - public static final BinaryArithmeticFactory MIN = new BinaryArithmeticFactory() { - - @Override - public BinaryArithmetic create() { - return new Min(); - } - }; + public static final BinaryArithmeticFactory ADD = Add::new; + public static final BinaryArithmeticFactory SUBTRACT = Subtract::new; + public static final BinaryArithmeticFactory MULTIPLY = Multiply::new; + public static final BinaryArithmeticFactory INTEGER_DIV = IntegerDiv::new; + public static final BinaryArithmeticFactory DIV = Div::new; + public static final BinaryArithmeticFactory MOD = Mod::new; + public static final BinaryArithmeticFactory POW = Pow::new; + public static final BinaryArithmeticFactory MAX = Max::new; + public static final BinaryArithmeticFactory MIN = Min::new; private final boolean supportsIntResult; diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/BinaryArithmeticFactory.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/BinaryArithmeticFactory.java index 9caa9b4a99..9f50120d85 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/BinaryArithmeticFactory.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/BinaryArithmeticFactory.java @@ -22,8 +22,8 @@ */ package com.oracle.truffle.r.runtime.ops; -public abstract class BinaryArithmeticFactory extends OperationFactory { +@FunctionalInterface +public interface BinaryArithmeticFactory extends OperationFactory { - @Override - public abstract BinaryArithmetic create(); + BinaryArithmetic create(); } diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/BinaryCompare.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/BinaryCompare.java index 0a614dc224..51cdb19edf 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/BinaryCompare.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/BinaryCompare.java @@ -52,49 +52,12 @@ public abstract class BinaryCompare extends BooleanOperation { public static class LessBuiltin { } - public static final BooleanOperationFactory NOT_EQUAL = new BooleanOperationFactory() { - - @Override - public BooleanOperation create() { - return new NotEqual(); - } - }; - - public static final BooleanOperationFactory EQUAL = new BooleanOperationFactory() { - - @Override - public BooleanOperation create() { - return new Equal(); - } - }; - public static final BooleanOperationFactory GREATER_EQUAL = new BooleanOperationFactory() { - - @Override - public BooleanOperation create() { - return new GreaterEqual(); - } - }; - public static final BooleanOperationFactory GREATER_THAN = new BooleanOperationFactory() { - - @Override - public BooleanOperation create() { - return new GreaterThan(); - } - }; - public static final BooleanOperationFactory LESS_EQUAL = new BooleanOperationFactory() { - - @Override - public BooleanOperation create() { - return new LessEqual(); - } - }; - public static final BooleanOperationFactory LESS_THAN = new BooleanOperationFactory() { - - @Override - public BooleanOperation create() { - return new LessThan(); - } - }; + public static final BooleanOperationFactory NOT_EQUAL = NotEqual::new; + public static final BooleanOperationFactory EQUAL = Equal::new; + public static final BooleanOperationFactory GREATER_EQUAL = GreaterEqual::new; + public static final BooleanOperationFactory GREATER_THAN = GreaterThan::new; + public static final BooleanOperationFactory LESS_EQUAL = LessEqual::new; + public static final BooleanOperationFactory LESS_THAN = LessThan::new; public BinaryCompare(boolean commutative) { super(commutative, false); diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/BinaryLogic.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/BinaryLogic.java index 42927099a3..94c72adc0d 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/BinaryLogic.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/BinaryLogic.java @@ -45,37 +45,10 @@ public abstract class BinaryLogic extends BooleanOperation { public static class OrBuiltin { } - public static final BooleanOperationFactory NON_VECTOR_AND = new BooleanOperationFactory() { - - @Override - public BooleanOperation create() { - return new NonVectorAnd(); - } - }; - - public static final BooleanOperationFactory NON_VECTOR_OR = new BooleanOperationFactory() { - - @Override - public BooleanOperation create() { - return new NonVectorOr(); - } - }; - - public static final BooleanOperationFactory AND = new BooleanOperationFactory() { - - @Override - public BooleanOperation create() { - return new And(); - } - }; - - public static final BooleanOperationFactory OR = new BooleanOperationFactory() { - - @Override - public BooleanOperation create() { - return new Or(); - } - }; + public static final BooleanOperationFactory NON_VECTOR_AND = NonVectorAnd::new; + public static final BooleanOperationFactory NON_VECTOR_OR = NonVectorOr::new; + public static final BooleanOperationFactory AND = And::new; + public static final BooleanOperationFactory OR = Or::new; public BinaryLogic() { super(true, true); diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/BooleanOperationFactory.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/BooleanOperationFactory.java index 01745f511a..fd6384e591 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/BooleanOperationFactory.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/BooleanOperationFactory.java @@ -22,8 +22,8 @@ */ package com.oracle.truffle.r.runtime.ops; -public abstract class BooleanOperationFactory extends OperationFactory { +@FunctionalInterface +public interface BooleanOperationFactory extends OperationFactory { - @Override - public abstract BooleanOperation create(); + BooleanOperation create(); } diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/OperationFactory.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/OperationFactory.java index f16147f68a..1b92f75b31 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/OperationFactory.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/OperationFactory.java @@ -22,8 +22,9 @@ */ package com.oracle.truffle.r.runtime.ops; -public abstract class OperationFactory { +@FunctionalInterface +public interface OperationFactory { - public abstract Operation create(); + Operation create(); } diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/UnaryArithmetic.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/UnaryArithmetic.java index b270f54a42..e141953c17 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/UnaryArithmetic.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/UnaryArithmetic.java @@ -20,37 +20,10 @@ import com.oracle.truffle.r.runtime.data.*; public abstract class UnaryArithmetic extends Operation { - public static final UnaryArithmeticFactory NEGATE = new UnaryArithmeticFactory() { - - @Override - public UnaryArithmetic create() { - return new Negate(); - } - }; - - public static final UnaryArithmeticFactory ROUND = new UnaryArithmeticFactory() { - - @Override - public UnaryArithmetic create() { - return new Round(); - } - }; - - public static final UnaryArithmeticFactory FLOOR = new UnaryArithmeticFactory() { - - @Override - public UnaryArithmetic create() { - return new Floor(); - } - }; - - public static final UnaryArithmeticFactory CEILING = new UnaryArithmeticFactory() { - - @Override - public UnaryArithmetic create() { - return new Ceiling(); - } - }; + public static final UnaryArithmeticFactory NEGATE = Negate::new; + public static final UnaryArithmeticFactory ROUND = Round::new; + public static final UnaryArithmeticFactory FLOOR = Floor::new; + public static final UnaryArithmeticFactory CEILING = Ceiling::new; public UnaryArithmetic() { super(false, false); diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/UnaryArithmeticFactory.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/UnaryArithmeticFactory.java index 19ef9e17c4..07a19b5d38 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/UnaryArithmeticFactory.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/UnaryArithmeticFactory.java @@ -22,8 +22,8 @@ */ package com.oracle.truffle.r.runtime.ops; -public abstract class UnaryArithmeticFactory extends OperationFactory { +@FunctionalInterface +public interface UnaryArithmeticFactory extends OperationFactory { - @Override - public abstract UnaryArithmetic create(); + UnaryArithmetic create(); } -- GitLab