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 bc37448c2807ca0676a435d9682e58efc4baffbd..39e978d64211cb8c6aba1165f78954e316aaf664 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 9caa9b4a99b2bdcb8e5b3dc2ed20b64b77a1bbe3..9f50120d8538d7397ddd1df55fde8a5c0fa17c3c 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 0a614dc224f5f5cafc84402517093fa10a96b075..51cdb19edf48abf7f758ab631bea9fc27e096362 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 42927099a3de6bf569d405f045840cb42418b2dc..94c72adc0dcbc11335e660fd73e30ada409e4b1a 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 01745f511a9dd2ac7a23f3746dc1adb2af969618..fd6384e5912b01dd4b76e6abdb683116a81e335c 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 f16147f68a116e347044b91123675486063fd6ec..1b92f75b313a6b2eb46db509df55f9a3fb452dec 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 b270f54a42a09c62d795a98dd5f84324af1c8b49..e141953c1740070644f3da42550cfe81c90b2b61 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 19ef9e17c4952e0bdf3b3b932257589b5efd6670..07a19b5d3891d4e2fd8e6a194766c5efd3cc6dea 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(); }