From b6115965393181717fe81cb9f733b7ad4214f262 Mon Sep 17 00:00:00 2001 From: Lukas Stadler <lukas.stadler@oracle.com> Date: Thu, 3 Aug 2017 19:16:31 +0200 Subject: [PATCH] various cleanups --- .../r/engine/TruffleRLanguageImpl.java | 1 - .../truffle/r/engine/interop/ListMR.java | 9 +- .../interop/RAbstractVectorAccessFactory.java | 6 +- .../engine/interop/RArgsValuesAndNamesMR.java | 10 +- .../r/engine/interop/REnvironmentMR.java | 7 +- .../truffle/r/engine/interop/RLanguageMR.java | 8 +- .../truffle/r/engine/interop/RPromiseMR.java | 12 +- .../truffle/r/engine/interop/RS4ObjectMR.java | 9 +- .../builtin/base/ConnectionFunctions.java | 1 - .../r/nodes/builtin/base/FileFunctions.java | 1 - .../r/nodes/builtin/base/Identical.java | 4 +- .../truffle/r/nodes/builtin/base/Prod.java | 1 - .../truffle/r/nodes/builtin/base/Unlist.java | 12 +- .../base/foreign/FortranAndCFunctions.java | 2 +- .../builtin/base/infix/SpecialsUtils.java | 5 - .../base/printer/DoubleVectorPrinter.java | 2 - .../r/nodes/builtin/fastr/FastRContext.java | 9 +- .../r/nodes/castsTests/CastBuilderTest.java | 4 +- .../access/vector/ReplaceVectorNode.java | 5 +- .../r/nodes/binary/BinaryArithmeticNode.java | 14 +- .../r/nodes/binary/BinaryBooleanNode.java | 11 +- .../truffle/r/nodes/builtin/CastBuilder.java | 2 +- .../truffle/r/nodes/unary/PrecedenceNode.java | 18 +- .../r/nodes/unary/UnaryArithmeticNode.java | 2 +- .../unary/UnaryArithmeticReduceNode.java | 163 +++++++----------- .../truffle/r/nodes/unary/UnaryNotNode.java | 2 +- .../truffle/r/runtime/ArgumentsSignature.java | 6 +- .../truffle/r/runtime/context/EvalThread.java | 15 +- .../r/runtime/interop/ForeignArray2R.java | 20 +-- .../r/test/engine/interop/AbstractMRTest.java | 17 +- .../r/test/engine/interop/ListMRTest.java | 1 + .../engine/interop/REnvironmentMRTest.java | 2 + .../test/engine/interop/RFunctionMRTest.java | 2 +- .../r/test/library/fastr/TestJavaInterop.java | 16 +- 34 files changed, 162 insertions(+), 237 deletions(-) diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/TruffleRLanguageImpl.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/TruffleRLanguageImpl.java index d1fa28a8e7..65adfcfd0f 100644 --- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/TruffleRLanguageImpl.java +++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/TruffleRLanguageImpl.java @@ -23,7 +23,6 @@ package com.oracle.truffle.r.engine; import java.util.HashMap; -import java.util.Locale; import com.oracle.truffle.api.CallTarget; import com.oracle.truffle.api.CompilerAsserts; diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/ListMR.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/ListMR.java index 5dad942ddc..6a873e0868 100644 --- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/ListMR.java +++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/ListMR.java @@ -35,7 +35,6 @@ import com.oracle.truffle.api.interop.Resolve; import com.oracle.truffle.api.interop.TruffleObject; import com.oracle.truffle.api.interop.UnknownIdentifierException; import com.oracle.truffle.api.nodes.Node; -import com.oracle.truffle.api.nodes.Node.Child; import com.oracle.truffle.api.profiles.ConditionProfile; import com.oracle.truffle.r.engine.interop.ListMRFactory.ListKeyInfoImplNodeGen; import com.oracle.truffle.r.engine.interop.ListMRFactory.ListReadImplNodeGen; @@ -274,7 +273,7 @@ public class ListMR { } @Fallback - protected Object read(VirtualFrame frame, TruffleObject receiver, Object field) { + protected Object read(@SuppressWarnings("unused") TruffleObject receiver, Object field) { throw UnknownIdentifierException.raise("" + field); } @@ -328,7 +327,7 @@ public class ListMR { } @Fallback - protected Object write(VirtualFrame frame, TruffleObject receiver, Object field, Object object) { + protected Object write(@SuppressWarnings("unused") TruffleObject receiver, Object field, @SuppressWarnings("unused") Object object) { throw UnknownIdentifierException.raise("" + field); } } @@ -384,7 +383,7 @@ public class ListMR { return GetNamesAttributeNode.create(); } - private int buildKeys(Object value) { + private static int buildKeys(Object value) { Builder builder = KeyInfo.newBuilder(); builder.setReadable(true).setWritable(true).setInvocable(value instanceof RFunction); return builder.build(); @@ -398,7 +397,7 @@ public class ListMR { } @Fallback - protected int access(VirtualFrame frame, TruffleObject receiver, Object field) { + protected int access(@SuppressWarnings("unused") TruffleObject receiver, @SuppressWarnings("unused") Object field) { return 0; } } diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RAbstractVectorAccessFactory.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RAbstractVectorAccessFactory.java index 250948d7ab..49398a0d0b 100644 --- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RAbstractVectorAccessFactory.java +++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RAbstractVectorAccessFactory.java @@ -131,7 +131,7 @@ public final class RAbstractVectorAccessFactory implements Factory26 { } @Fallback - protected Object read(VirtualFrame frame, Object receiver, Object indentifier) { + protected Object read(@SuppressWarnings("unused") Object receiver, Object indentifier) { throw UnknownIdentifierException.raise("" + indentifier); } @@ -179,7 +179,7 @@ public final class RAbstractVectorAccessFactory implements Factory26 { } @Fallback - protected Object write(VirtualFrame frame, Object receiver, Object field, Object object) { + protected Object write(@SuppressWarnings("unused") Object receiver, Object field, @SuppressWarnings("unused") Object object) { throw UnknownIdentifierException.raise("" + field); } } @@ -224,7 +224,7 @@ public final class RAbstractVectorAccessFactory implements Factory26 { } @Fallback - protected int keyInfo(VirtualFrame frame, Object receiver, Object label) { + protected int keyInfo(@SuppressWarnings("unused") Object receiver, @SuppressWarnings("unused") Object label) { return 0; } } diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RArgsValuesAndNamesMR.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RArgsValuesAndNamesMR.java index ff96aa902a..fd586b60d9 100644 --- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RArgsValuesAndNamesMR.java +++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RArgsValuesAndNamesMR.java @@ -141,7 +141,7 @@ public class RArgsValuesAndNamesMR { } @Fallback - protected Object access(RArgsValuesAndNames receiver, Object identifier) { + protected Object access(@SuppressWarnings("unused") RArgsValuesAndNames receiver, Object identifier) { throw UnknownIdentifierException.raise("" + identifier); } } @@ -152,7 +152,7 @@ public class RArgsValuesAndNamesMR { abstract Object execute(VirtualFrame frame, RArgsValuesAndNames receiver, Object idx); @Specialization - protected Object access(VirtualFrame frame, RArgsValuesAndNames receiver, int idx) { + protected Object access(RArgsValuesAndNames receiver, int idx) { if (unknownIdentifier.profile(idx < 0 || idx >= receiver.getLength())) { return 0; } @@ -160,7 +160,7 @@ public class RArgsValuesAndNamesMR { } @Specialization - protected Object access(VirtualFrame frame, RArgsValuesAndNames receiver, String identifier) { + protected Object access(RArgsValuesAndNames receiver, String identifier) { ArgumentsSignature sig = receiver.getSignature(); String[] names = sig.getNames(); int idx = -1; @@ -177,14 +177,14 @@ public class RArgsValuesAndNamesMR { return createKeyInfo(receiver, idx); } - private Object createKeyInfo(RArgsValuesAndNames receiver, int idx) { + private static Object createKeyInfo(RArgsValuesAndNames receiver, int idx) { KeyInfo.Builder builder = KeyInfo.newBuilder(); builder.setReadable(true).setInvocable(receiver.getArgument(idx) instanceof RFunction); return builder.build(); } @Fallback - protected Object access(VirtualFrame frame, RArgsValuesAndNames receiver, Object field) { + protected Object access(@SuppressWarnings("unused") RArgsValuesAndNames receiver, @SuppressWarnings("unused") Object field) { return 0; } } diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/REnvironmentMR.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/REnvironmentMR.java index 7f57be4a76..018acd8001 100644 --- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/REnvironmentMR.java +++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/REnvironmentMR.java @@ -45,7 +45,6 @@ import com.oracle.truffle.r.ffi.impl.interop.NativePointer; import com.oracle.truffle.r.nodes.access.vector.ElementAccessMode; import com.oracle.truffle.r.nodes.access.vector.ExtractVectorNode; import com.oracle.truffle.r.nodes.access.vector.ReplaceVectorNode; -import com.oracle.truffle.r.runtime.data.RDouble; import com.oracle.truffle.r.runtime.data.RFunction; import com.oracle.truffle.r.runtime.env.REnvironment; import com.oracle.truffle.r.runtime.interop.Foreign2R; @@ -150,7 +149,7 @@ public class REnvironmentMR { } @Fallback - protected Object access(VirtualFrame frame, TruffleObject receiver, Object identifier) { + protected Object access(@SuppressWarnings("unused") TruffleObject receiver, Object identifier) { throw UnknownIdentifierException.raise("" + identifier); } @@ -207,7 +206,7 @@ public class REnvironmentMR { } @Fallback - protected Object access(VirtualFrame frame, TruffleObject receiver, Object identifier, Object valueObj) { + protected Object access(@SuppressWarnings("unused") TruffleObject receiver, Object identifier, @SuppressWarnings("unused") Object valueObj) { throw UnknownIdentifierException.raise("" + identifier); } @@ -236,7 +235,7 @@ public class REnvironmentMR { } @Fallback - protected int access(REnvironment receiver, Object identifier) { + protected int access(@SuppressWarnings("unused") REnvironment receiver, @SuppressWarnings("unused") Object identifier) { return 0; } } diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RLanguageMR.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RLanguageMR.java index 353ac3daeb..aef100f31b 100644 --- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RLanguageMR.java +++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RLanguageMR.java @@ -63,7 +63,7 @@ public class RLanguageMR { @Resolve(message = "GET_SIZE") public abstract static class RLanguageGetSizeNode extends Node { - protected Object access(@SuppressWarnings("unused") RLanguage receiver) { + protected Object access(RLanguage receiver) { return receiver.getLength(); } } @@ -95,7 +95,7 @@ public class RLanguageMR { public abstract static class RLanguageNode extends Node { @Node.Child private KeyInfoNode keyInfoNode = RLanguageMRFactory.KeyInfoNodeGen.create(); - protected Object access(VirtualFrame frame, RLanguage receiver, Object obj) { + protected Object access(RLanguage receiver, Object obj) { return keyInfoNode.execute(receiver, obj); } } @@ -142,7 +142,7 @@ public class RLanguageMR { } @Fallback - protected Object access(VirtualFrame frame, RLanguage receiver, Object identifier) { + protected Object access(@SuppressWarnings("unused") RLanguage receiver, Object identifier) { throw UnknownIdentifierException.raise("" + identifier); } @@ -169,7 +169,7 @@ public class RLanguageMR { } @Fallback - protected int access(RLanguage receiver, Object identifier) { + protected int access(@SuppressWarnings("unused") RLanguage receiver, @SuppressWarnings("unused") Object identifier) { return 0; } } diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RPromiseMR.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RPromiseMR.java index 16c7115a4d..aaf35509de 100644 --- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RPromiseMR.java +++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RPromiseMR.java @@ -70,7 +70,7 @@ public class RPromiseMR { @TruffleBoundary protected Object access(RPromise receiver, String field) { - return readNode.execute(receiver, receiver); + return readNode.execute(receiver, field); } } @@ -79,7 +79,7 @@ public class RPromiseMR { @Child RPromiseWriteImplNode writeNode = RPromiseWriteImplNodeGen.create(); protected Object access(RPromise receiver, String field, Object valueObj) { - return writeNode.execute(receiver, valueObj, valueObj); + return writeNode.execute(receiver, field, valueObj); } } @@ -138,7 +138,7 @@ public class RPromiseMR { } @Fallback - protected Object access(RPromise receiver, Object identifier, Object valueObj) { + protected Object access(@SuppressWarnings("unused") RPromise receiver, Object identifier, @SuppressWarnings("unused") Object valueObj) { throw UnknownIdentifierException.raise("" + identifier); } } @@ -148,7 +148,7 @@ public class RPromiseMR { protected abstract Object execute(RPromise receiver, Object identifier); @Specialization - protected Object access(@SuppressWarnings("unused") RPromise receiver, String identifier) { + protected Object access(RPromise receiver, String identifier) { if (PROP_EXPR.equals(identifier)) { return RDataFactory.createLanguage(receiver.getRep()); } @@ -166,7 +166,7 @@ public class RPromiseMR { } @Fallback - protected Object access(RPromise receiver, Object identifier) { + protected Object access(@SuppressWarnings("unused") RPromise receiver, Object identifier) { throw UnknownIdentifierException.raise("" + identifier); } } @@ -187,7 +187,7 @@ public class RPromiseMR { } @Fallback - protected Object access(RPromise receiver, Object identifier) { + protected Object access(@SuppressWarnings("unused") RPromise receiver, @SuppressWarnings("unused") Object identifier) { return 0; } } diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RS4ObjectMR.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RS4ObjectMR.java index 0f7c7346fd..c52fc25a1b 100644 --- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RS4ObjectMR.java +++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RS4ObjectMR.java @@ -26,7 +26,6 @@ import com.oracle.truffle.api.CompilerDirectives; import com.oracle.truffle.api.dsl.Cached; import com.oracle.truffle.api.dsl.Fallback; import com.oracle.truffle.api.dsl.Specialization; -import com.oracle.truffle.api.frame.VirtualFrame; import com.oracle.truffle.api.interop.CanResolve; import com.oracle.truffle.api.interop.KeyInfo; import com.oracle.truffle.api.interop.KeyInfo.Builder; @@ -110,7 +109,7 @@ public class RS4ObjectMR { public abstract static class RS4ObjectNode extends Node { @Node.Child private RS4ObjectKeyInfoImplNode keyInfoNode = RS4ObjectKeyInfoImplNodeGen.create(); - protected Object access(VirtualFrame frame, RS4Object receiver, Object obj) { + protected Object access(RS4Object receiver, Object obj) { return keyInfoNode.execute(receiver, obj); } } @@ -164,7 +163,7 @@ public class RS4ObjectMR { } @Fallback - protected Object access(RS4Object receiver, Object identifier) { + protected Object access(@SuppressWarnings("unused") RS4Object receiver, Object identifier) { throw UnknownIdentifierException.raise("" + identifier); } @@ -211,7 +210,7 @@ public class RS4ObjectMR { } @Fallback - protected Object access(RS4Object receiver, Object identifier, Object valueObj) { + protected Object access(@SuppressWarnings("unused") RS4Object receiver, Object identifier, @SuppressWarnings("unused") Object valueObj) { throw UnknownIdentifierException.raise("" + identifier); } @@ -250,7 +249,7 @@ public class RS4ObjectMR { } @Fallback - protected int access(RS4Object receiver, Object field) { + protected int access(@SuppressWarnings("unused") RS4Object receiver, @SuppressWarnings("unused") Object field) { return 0; } } diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/ConnectionFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/ConnectionFunctions.java index fd7198eda7..792abffb0e 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/ConnectionFunctions.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/ConnectionFunctions.java @@ -34,7 +34,6 @@ import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.lte; import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.notEmpty; import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.nullValue; import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.rawValue; -import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.doubleValue; import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.singleElement; import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.stringValue; import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.toBoolean; diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/FileFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/FileFunctions.java index 042b20305c..0be5eb2313 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/FileFunctions.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/FileFunctions.java @@ -1129,7 +1129,6 @@ public class FileFunctions { @TruffleBoundary protected int doUnlink(RAbstractStringVector vec, boolean recursive, @SuppressWarnings("unused") boolean force) { int result = 1; - FileSystem fileSystem = FileSystems.getDefault(); for (int i = -0; i < vec.getLength(); i++) { String pathPattern = Utils.tildeExpand(vec.getDataAt(i)); if (pathPattern.length() == 0 || RRuntime.isNA(pathPattern)) { diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Identical.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Identical.java index 178f29c481..8fbce0e16b 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Identical.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Identical.java @@ -335,11 +335,13 @@ public abstract class Identical extends RBuiltinNode.Arg7 { return identicalAttr(x, y, numEq, singleNA, attribAsSet, ignoreBytecode, ignoreEnvironment); } + @SuppressWarnings("unused") @Specialization protected byte doInternalIdenticalForeignObject(RInteropScalar x, RInteropScalar y, boolean numEq, boolean singleNA, boolean attribAsSet, boolean ignoreBytecode, boolean ignoreEnvironment) { return RRuntime.asLogical(x == y); } + @SuppressWarnings("unused") @Specialization(guards = "areForeignObjects(x, y)") protected byte doInternalIdenticalForeignObject(TruffleObject x, TruffleObject y, boolean numEq, boolean singleNA, boolean attribAsSet, boolean ignoreBytecode, boolean ignoreEnvironment) { return RRuntime.asLogical(x == y); @@ -353,7 +355,7 @@ public abstract class Identical extends RBuiltinNode.Arg7 { } protected boolean areForeignObjects(TruffleObject x, TruffleObject y) { - return RRuntime.isForeignObject(x) && RRuntime.isForeignObject(x); + return RRuntime.isForeignObject(x) && RRuntime.isForeignObject(y); } protected boolean vectorsLists(RAbstractVector x, RAbstractVector y) { diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Prod.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Prod.java index 3edade53d5..da39fe9bde 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Prod.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Prod.java @@ -17,7 +17,6 @@ import static com.oracle.truffle.r.runtime.builtins.RBuiltinKind.PRIMITIVE; import com.oracle.truffle.api.CompilerDirectives; import com.oracle.truffle.api.dsl.Fallback; import com.oracle.truffle.api.dsl.Specialization; -import com.oracle.truffle.api.profiles.ConditionProfile; import com.oracle.truffle.api.profiles.ValueProfile; import com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef; import com.oracle.truffle.r.nodes.builtin.RBuiltinNode; diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Unlist.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Unlist.java index 71bff2a15a..d792c70c41 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Unlist.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Unlist.java @@ -153,7 +153,7 @@ public abstract class Unlist extends RBuiltinNode.Arg3 { @Specialization(guards = {"isForeignArray(obj, hasSize)"}) protected int getForeignArrayLength(VirtualFrame frame, TruffleObject obj, @Cached("READ.createNode()") Node read, - @Cached("HAS_SIZE.createNode()") Node hasSize, + @SuppressWarnings("unused") @Cached("HAS_SIZE.createNode()") Node hasSize, @Cached("GET_SIZE.createNode()") Node getSize, @Cached("createForeign2R()") Foreign2R foreign2R) { int totalSize = 0; @@ -207,8 +207,8 @@ public abstract class Unlist extends RBuiltinNode.Arg3 { } @Specialization(guards = {"isForeignObject(obj)", "!isForeignArray(obj, hasSize)", "!isJavaIterable(obj)"}) - protected int getForeignObject(VirtualFrame frame, TruffleObject obj, - @Cached("HAS_SIZE.createNode()") Node hasSize) { + protected int getForeignObject(@SuppressWarnings("unused") TruffleObject obj, + @SuppressWarnings("unused") @Cached("HAS_SIZE.createNode()") Node hasSize) { return 1; } } @@ -308,7 +308,7 @@ public abstract class Unlist extends RBuiltinNode.Arg3 { } @Specialization(guards = {"isForeignObject(obj)", "!isForeignVector(obj)"}) - protected Object unlistForeign(@SuppressWarnings("unused") VirtualFrame frame, TruffleObject obj, @SuppressWarnings("unused") boolean recursive, @SuppressWarnings("unused") boolean useNames) { + protected Object unlistForeign(TruffleObject obj, @SuppressWarnings("unused") boolean recursive, @SuppressWarnings("unused") boolean useNames) { return obj; } @@ -336,10 +336,8 @@ public abstract class Unlist extends RBuiltinNode.Arg3 { /** * Converts foreign object to RAbstractVector. - * + * * @param obj the foreign object. Has to be ensured it is a foreign array or java iterable. - * @param recursive - * @return */ private RAbstractVector foreignToVector(TruffleObject obj, boolean recursive) { assert isForeignVector(obj); diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/foreign/FortranAndCFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/foreign/FortranAndCFunctions.java index da358853e9..3136f769e9 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/foreign/FortranAndCFunctions.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/foreign/FortranAndCFunctions.java @@ -341,7 +341,7 @@ public class FortranAndCFunctions { } @Fallback - public Object handleOthers(@SuppressWarnings("unused") Object result, @SuppressWarnings("unused") RArgsValuesAndNames argNames) { + public Object handleOthers(Object result, @SuppressWarnings("unused") RArgsValuesAndNames argNames) { // do nothing return result; } diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/SpecialsUtils.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/SpecialsUtils.java index a9860a5d31..425bb7220c 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/SpecialsUtils.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/SpecialsUtils.java @@ -39,7 +39,6 @@ import com.oracle.truffle.r.nodes.function.ClassHierarchyNode; import com.oracle.truffle.r.runtime.ArgumentsSignature; import com.oracle.truffle.r.runtime.data.RDoubleVector; import com.oracle.truffle.r.runtime.data.RIntVector; -import com.oracle.truffle.r.runtime.data.RList; import com.oracle.truffle.r.runtime.data.RStringVector; import com.oracle.truffle.r.runtime.data.model.RAbstractVector; import com.oracle.truffle.r.runtime.nodes.RNode; @@ -123,10 +122,6 @@ class SpecialsUtils { @Child protected GetNamesAttributeNode getNamesNode = GetNamesAttributeNode.create(); - protected final boolean isSimpleList(RList list) { - return true; - } - protected static int getIndex(RStringVector names, String field) { if (names != null) { int fieldHash = field.hashCode(); diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/printer/DoubleVectorPrinter.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/printer/DoubleVectorPrinter.java index aa7010c1a8..266c914a72 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/printer/DoubleVectorPrinter.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/printer/DoubleVectorPrinter.java @@ -12,8 +12,6 @@ package com.oracle.truffle.r.nodes.builtin.base.printer; import java.io.IOException; -import java.math.BigDecimal; -import java.math.MathContext; import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary; import com.oracle.truffle.r.runtime.RRuntime; diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/fastr/FastRContext.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/fastr/FastRContext.java index b9da1b0854..d05f42daf1 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/fastr/FastRContext.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/fastr/FastRContext.java @@ -142,11 +142,8 @@ public class FastRContext { int[] multiSlotIndices = new int[length]; for (int i = 0; i < length; i++) { ChildContextInfo info = createContextInfo(contextKind); - if (FastROptions.SpawnUsesPolyglot.getBooleanValue()) { - threads[i] = new EvalThread(info, RSource.fromTextInternalInvisible(exprs.getDataAt(i % exprs.getLength()), RSource.Internal.CONTEXT_EVAL), true); - } else { - threads[i] = new EvalThread(info, RSource.fromTextInternalInvisible(exprs.getDataAt(i % exprs.getLength()), RSource.Internal.CONTEXT_EVAL)); - } + threads[i] = new EvalThread(info, RSource.fromTextInternalInvisible(exprs.getDataAt(i % exprs.getLength()), RSource.Internal.CONTEXT_EVAL), + FastROptions.SpawnUsesPolyglot.getBooleanValue()); data[i] = info.getId(); multiSlotIndices[i] = info.getMultiSlotInd(); } @@ -248,7 +245,7 @@ public class FastRContext { int[] multiSlotIndices = new int[length]; for (int i = 0; i < length; i++) { ChildContextInfo info = createContextInfo(contextKind); - threads[i] = new EvalThread(info, RSource.fromTextInternalInvisible(exprs.getDataAt(i % exprs.getLength()), RSource.Internal.CONTEXT_EVAL)); + threads[i] = new EvalThread(info, RSource.fromTextInternalInvisible(exprs.getDataAt(i % exprs.getLength()), RSource.Internal.CONTEXT_EVAL), false); multiSlotIndices[i] = info.getMultiSlotInd(); } if (contextKind == ContextKind.SHARE_ALL) { diff --git a/com.oracle.truffle.r.nodes.test/src/com/oracle/truffle/r/nodes/castsTests/CastBuilderTest.java b/com.oracle.truffle.r.nodes.test/src/com/oracle/truffle/r/nodes/castsTests/CastBuilderTest.java index 74dfcb6ba5..ad4f0b46c8 100644 --- a/com.oracle.truffle.r.nodes.test/src/com/oracle/truffle/r/nodes/castsTests/CastBuilderTest.java +++ b/com.oracle.truffle.r.nodes.test/src/com/oracle/truffle/r/nodes/castsTests/CastBuilderTest.java @@ -61,11 +61,11 @@ import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.notEmpty; import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.nullConstant; import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.nullValue; import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.numericValue; +import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.rawValue; import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.shouldBe; import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.singleElement; import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.squareMatrix; import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.stringValue; -import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.rawValue; import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.toBoolean; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; @@ -79,7 +79,6 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; -import com.oracle.truffle.api.vm.PolyglotEngine.Language; import com.oracle.truffle.r.nodes.builtin.CastBuilder; import com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef; import com.oracle.truffle.r.nodes.builtin.casts.fluent.InitialPhaseBuilder; @@ -94,7 +93,6 @@ import com.oracle.truffle.r.runtime.RRuntime; import com.oracle.truffle.r.runtime.builtins.RBehavior; import com.oracle.truffle.r.runtime.builtins.RBuiltin; import com.oracle.truffle.r.runtime.builtins.RBuiltinKind; -import com.oracle.truffle.r.runtime.context.TruffleRLanguage; import com.oracle.truffle.r.runtime.data.RDataFactory; import com.oracle.truffle.r.runtime.data.RDoubleVector; import com.oracle.truffle.r.runtime.data.RFunction; diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/ReplaceVectorNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/ReplaceVectorNode.java index ed182a5496..190797cdd4 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/ReplaceVectorNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/ReplaceVectorNode.java @@ -39,18 +39,17 @@ import com.oracle.truffle.r.nodes.binary.BoxPrimitiveNode; import com.oracle.truffle.r.nodes.profile.TruffleBoundaryNode; import com.oracle.truffle.r.nodes.unary.CastStringNode; import com.oracle.truffle.r.nodes.unary.FirstStringNode; -import com.oracle.truffle.r.runtime.interop.R2Foreign; import com.oracle.truffle.r.runtime.RError; import com.oracle.truffle.r.runtime.RRuntime; import com.oracle.truffle.r.runtime.RType; import com.oracle.truffle.r.runtime.data.RTypedValue; -import com.oracle.truffle.r.runtime.data.model.RAbstractContainer; import com.oracle.truffle.r.runtime.data.model.RAbstractDoubleVector; import com.oracle.truffle.r.runtime.data.model.RAbstractIntVector; import com.oracle.truffle.r.runtime.data.model.RAbstractListVector; import com.oracle.truffle.r.runtime.data.model.RAbstractStringVector; -import com.oracle.truffle.r.runtime.nodes.RBaseNode; +import com.oracle.truffle.r.runtime.interop.R2Foreign; import com.oracle.truffle.r.runtime.interop.R2ForeignNodeGen; +import com.oracle.truffle.r.runtime.nodes.RBaseNode; /** * Syntax node for element writes. diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/BinaryArithmeticNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/BinaryArithmeticNode.java index 4a616a2175..6896d4cf0c 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/BinaryArithmeticNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/BinaryArithmeticNode.java @@ -37,8 +37,6 @@ import com.oracle.truffle.api.profiles.ValueProfile; import com.oracle.truffle.r.nodes.builtin.RBuiltinNode; import com.oracle.truffle.r.nodes.primitive.BinaryMapNode; import com.oracle.truffle.r.nodes.profile.TruffleBoundaryNode; -import com.oracle.truffle.r.nodes.unary.PrecedenceNode; -import com.oracle.truffle.r.nodes.unary.PrecedenceNodeGen; import com.oracle.truffle.r.nodes.unary.UnaryArithmeticNode; import com.oracle.truffle.r.nodes.unary.UnaryArithmeticNodeGen; import com.oracle.truffle.r.runtime.RError; @@ -161,7 +159,7 @@ public abstract class BinaryArithmeticNode extends RBuiltinNode.Arg2 { @Specialization(replaces = "doNumericVectorCached", guards = {"isForeignVector(left, hasSize)", "isNumericVector(right)"}) @TruffleBoundary protected Object doForeignLeft(TruffleObject left, Object right, - @Cached("HAS_SIZE.createNode()") Node hasSize, + @SuppressWarnings("unused") @Cached("HAS_SIZE.createNode()") Node hasSize, @Cached("createForeignArray2R()") ForeignArray2R foreignArray2R, @Cached("createRecursive()") BinaryArithmeticNode recursive) { Object o = foreignArray2R.execute(left, true); @@ -171,7 +169,7 @@ public abstract class BinaryArithmeticNode extends RBuiltinNode.Arg2 { @Specialization(replaces = "doNumericVectorCached", guards = {"isNumericVector(left)", "isForeignVector(right, hasSize)"}) @TruffleBoundary protected Object doForeignRight(Object left, TruffleObject right, - @Cached("HAS_SIZE.createNode()") Node hasSize, + @SuppressWarnings("unused") @Cached("HAS_SIZE.createNode()") Node hasSize, @Cached("createForeignArray2R()") ForeignArray2R foreignArray2R, @Cached("createRecursive()") BinaryArithmeticNode recursive) { Object o = foreignArray2R.execute(right, true); @@ -181,7 +179,7 @@ public abstract class BinaryArithmeticNode extends RBuiltinNode.Arg2 { @Specialization(replaces = "doNumericVectorCached", guards = {"isForeignVector(left, hasSize)", "isForeignVector(right, hasSize)"}) @TruffleBoundary protected Object doForeignVector(TruffleObject left, TruffleObject right, - @Cached("HAS_SIZE.createNode()") Node hasSize, + @SuppressWarnings("unused") @Cached("HAS_SIZE.createNode()") Node hasSize, @Cached("createForeignArray2R()") ForeignArray2R leftForeignArray2R, @Cached("createForeignArray2R()") ForeignArray2R rightForeignArray2R, @Cached("createRecursive()") BinaryArithmeticNode recursive) { @@ -203,8 +201,8 @@ public abstract class BinaryArithmeticNode extends RBuiltinNode.Arg2 { } @Specialization(guards = {"isForeignVector(right, hasSize)"}) - protected Object doForeignLeftNull(@SuppressWarnings("unused") RNull left, TruffleObject right, - @Cached("HAS_SIZE.createNode()") Node hasSize, + protected Object doForeignLeftNull(RNull left, TruffleObject right, + @SuppressWarnings("unused") @Cached("HAS_SIZE.createNode()") Node hasSize, @Cached("createForeignArray2R()") ForeignArray2R foreignArray2R, @Cached("createRecursive()") BinaryArithmeticNode recursive) { Object oRight = foreignArray2R.execute(right, true); @@ -213,7 +211,7 @@ public abstract class BinaryArithmeticNode extends RBuiltinNode.Arg2 { @Specialization(guards = {"isForeignVector(left, hasSize)"}) protected Object doForeignRightNull(TruffleObject left, RNull right, - @Cached("HAS_SIZE.createNode()") Node hasSize, + @SuppressWarnings("unused") @Cached("HAS_SIZE.createNode()") Node hasSize, @Cached("createForeignArray2R()") ForeignArray2R foreignArray2R, @Cached("createRecursive()") BinaryArithmeticNode recursive) { Object oLeft = foreignArray2R.execute(left, true); diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/BinaryBooleanNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/BinaryBooleanNode.java index e5882e8e23..ae3cdfeff6 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/BinaryBooleanNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/BinaryBooleanNode.java @@ -220,15 +220,13 @@ public abstract class BinaryBooleanNode extends RBuiltinNode.Arg2 { return BinaryBooleanNode.create(factory); } - @SuppressWarnings("unused") @Specialization(guards = {"isRNullOrEmptyAndNotMissing(left, right)"}) - protected static Object doEmptyOrNull(Object left, Object right) { + protected static Object doEmptyOrNull(@SuppressWarnings("unused") Object left, @SuppressWarnings("unused") Object right) { return RType.Logical.getEmpty(); } - @SuppressWarnings("unused") @Specialization(guards = {"(isRMissing(left) || isRMissing(right))"}) - protected Object doOneArg(Object left, Object right) { + protected Object doOneArg(@SuppressWarnings("unused") Object left, @SuppressWarnings("unused") Object right) { throw error(RError.Message.IS_OF_WRONG_ARITY, 1, factory.createOperation().opName(), 2); } @@ -246,7 +244,7 @@ public abstract class BinaryBooleanNode extends RBuiltinNode.Arg2 { @Specialization(guards = {"isForeignVector(left, hasSize) || isForeignVector(right, hasSize)"}) protected Object doForeignVector(VirtualFrame frame, TruffleObject left, TruffleObject right, - @Cached("HAS_SIZE.createNode()") Node hasSize, + @SuppressWarnings("unused") @Cached("HAS_SIZE.createNode()") Node hasSize, @Cached("createForeignArray2R()") ForeignArray2R leftForeignArray2R, @Cached("createForeignArray2R()") ForeignArray2R rightForeignArray2R, @Cached("createRecursive()") BinaryBooleanNode recursive) { @@ -255,9 +253,8 @@ public abstract class BinaryBooleanNode extends RBuiltinNode.Arg2 { return recursive.execute(frame, oLeft, oRight); } - @SuppressWarnings("unused") @Fallback - protected Object doInvalidType(Object left, Object right) { + protected Object doInvalidType(@SuppressWarnings("unused") Object left, @SuppressWarnings("unused") Object right) { throw error(Message.OPERATIONS_NUMERIC_LOGICAL_COMPLEX); } diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/CastBuilder.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/CastBuilder.java index 0db087a282..70f34a3d31 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/CastBuilder.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/CastBuilder.java @@ -772,7 +772,7 @@ public final class CastBuilder { public static Function<Object, String> typeName() { return arg -> { CompilerAsserts.neverPartOfCompilation(); - return ((RTypedValue) RRuntime.convertScalarVectors(arg)).getRType().getName(); + return RRuntime.isForeignObject(arg) ? "external object" : ((RTypedValue) RRuntime.convertScalarVectors(arg)).getRType().getName(); }; } } diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/PrecedenceNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/PrecedenceNode.java index c9e1d89b40..4b8964a883 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/PrecedenceNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/PrecedenceNode.java @@ -22,6 +22,7 @@ */ package com.oracle.truffle.r.nodes.unary; +import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary; import com.oracle.truffle.api.dsl.Cached; import com.oracle.truffle.api.dsl.ImportStatic; import com.oracle.truffle.api.dsl.Specialization; @@ -233,7 +234,7 @@ public abstract class PrecedenceNode extends RBaseNode { @Specialization(guards = {"isForeignObject(to)", "!isJavaIterable(to)", "!isForeignArray(to, hasSize)"}) protected int doForeignObject(TruffleObject to, boolean recursive, - @SuppressWarnings("unused") @Cached("HAS_SIZE.createNode()") Node hasSize) { + @Cached("HAS_SIZE.createNode()") Node hasSize) { return LIST_PRECEDENCE; } @@ -268,7 +269,7 @@ public abstract class PrecedenceNode extends RBaseNode { @Specialization(guards = {"isForeignArray(obj, hasSize)"}) protected int doForeignArray(TruffleObject obj, boolean recursive, - @SuppressWarnings("unused") @Cached("HAS_SIZE.createNode()") Node hasSize, + @Cached("HAS_SIZE.createNode()") Node hasSize, @Cached("GET_SIZE.createNode()") Node getSize, @Cached("READ.createNode()") Node read, @Cached("createRecursive()") PrecedenceNode precedenceNode, @@ -299,6 +300,7 @@ public abstract class PrecedenceNode extends RBaseNode { return precedence; } + @TruffleBoundary private int getPrecedence(Class<?> ct, boolean recursive) { if (recursive && ct.isArray()) { return getPrecedence(ct.getComponentType(), recursive); @@ -306,16 +308,14 @@ public abstract class PrecedenceNode extends RBaseNode { return getPrecedence(ct); } - private int getPrecedence(Class<?> ct) { - if (Integer.TYPE.getName().equals(ct.getName()) || Byte.TYPE.getName().equals(ct.getName()) || Short.TYPE.getName().equals(ct.getName()) || - Integer.class.getName().equals(ct.getName()) || Byte.class.getName().equals(ct.getName()) || Short.class.getName().equals(ct.getName())) { + private static int getPrecedence(Class<?> ct) { + if (ct == Integer.class || ct == Byte.class || ct == Short.class || ct == int.class || ct == byte.class || ct == short.class) { return INT_PRECEDENCE; - } else if (Double.TYPE.getName().equals(ct.getName()) || Float.TYPE.getName().equals(ct.getName()) || Long.TYPE.getName().equals(ct.getName()) || - Double.class.getName().equals(ct.getName()) || Float.class.getName().equals(ct.getName()) || Long.class.getName().equals(ct.getName())) { + } else if (ct == Double.class || ct == Float.class || ct == Long.class || ct == double.class || ct == float.class || ct == long.class) { return DOUBLE_PRECEDENCE; - } else if (String.class.getName().equals(ct.getName()) || Character.TYPE.getName().equals(ct.getName()) || Character.class.getName().equals(ct.getName())) { + } else if (ct == String.class || ct == Character.class || ct == char.class) { return STRING_PRECEDENCE; - } else if (Boolean.TYPE.getName().equals(ct.getName()) || Boolean.class.getName().equals(ct.getName())) { + } else if (ct == Boolean.class || ct == boolean.class) { return LOGICAL_PRECEDENCE; } return NO_PRECEDENCE; diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/UnaryArithmeticNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/UnaryArithmeticNode.java index 46d804b6c2..ce65ed44e2 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/UnaryArithmeticNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/UnaryArithmeticNode.java @@ -103,7 +103,7 @@ public abstract class UnaryArithmeticNode extends UnaryNode { @Specialization(guards = {"isForeignVector(obj, hasSize)"}) protected Object doForeignVector(TruffleObject obj, - @Cached("HAS_SIZE.createNode()") Node hasSize, + @SuppressWarnings("unused") @Cached("HAS_SIZE.createNode()") Node hasSize, @Cached("createForeignArray2R()") ForeignArray2R foreignArray2R, @Cached("createRecursive()") UnaryArithmeticNode recursive) { Object vec = foreignArray2R.execute(obj, true); diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/UnaryArithmeticReduceNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/UnaryArithmeticReduceNode.java index 605ce73f7e..f54f392a94 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/UnaryArithmeticReduceNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/UnaryArithmeticReduceNode.java @@ -24,6 +24,7 @@ package com.oracle.truffle.r.nodes.unary; import com.oracle.truffle.api.CompilerDirectives; import com.oracle.truffle.api.dsl.Cached; +import com.oracle.truffle.api.dsl.Fallback; import com.oracle.truffle.api.dsl.ImportStatic; import com.oracle.truffle.api.dsl.Specialization; import com.oracle.truffle.api.dsl.TypeSystemReference; @@ -31,6 +32,7 @@ import com.oracle.truffle.api.interop.Message; import com.oracle.truffle.api.interop.TruffleObject; import com.oracle.truffle.api.nodes.Node; import com.oracle.truffle.api.profiles.ConditionProfile; +import com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef; import com.oracle.truffle.r.runtime.RError; import com.oracle.truffle.r.runtime.RRuntime; import com.oracle.truffle.r.runtime.data.RComplex; @@ -41,8 +43,6 @@ import com.oracle.truffle.r.runtime.data.RIntSequence; import com.oracle.truffle.r.runtime.data.RIntVector; import com.oracle.truffle.r.runtime.data.RLogicalVector; import com.oracle.truffle.r.runtime.data.RNull; -import com.oracle.truffle.r.runtime.data.RRaw; -import com.oracle.truffle.r.runtime.data.RRawVector; import com.oracle.truffle.r.runtime.data.RStringVector; import com.oracle.truffle.r.runtime.data.RTypes; import com.oracle.truffle.r.runtime.interop.ForeignArray2R; @@ -70,6 +70,8 @@ public abstract class UnaryArithmeticReduceNode extends RBaseNode { private final BinaryArithmeticFactory factory; protected final ReduceSemantics semantics; + protected final boolean supportString; + protected final boolean supportComplex; private final NACheck na = NACheck.create(); private final ConditionProfile naRmProfile = ConditionProfile.createBinaryProfile(); @@ -78,6 +80,8 @@ public abstract class UnaryArithmeticReduceNode extends RBaseNode { this.factory = factory; this.semantics = semantics; this.arithmetic = factory.createOperation(); + this.supportString = semantics.supportString; + this.supportComplex = semantics.supportComplex; } private String handleString(RStringVector operand, boolean naRm, boolean finite, int offset) { @@ -164,52 +168,38 @@ public abstract class UnaryArithmeticReduceNode extends RBaseNode { } } - @Specialization + @Specialization(guards = "supportComplex") protected RComplex doComplex(RComplex operand, boolean naRm, @SuppressWarnings("unused") boolean finite) { - if (semantics.supportComplex) { - na.enable(operand); - if (naRmProfile.profile(naRm)) { - if (na.check(operand)) { - emptyWarning(); - return RRuntime.double2complex(semantics.getDoubleStart()); - } else { - return operand; - } + na.enable(operand); + if (naRmProfile.profile(naRm)) { + if (na.check(operand)) { + emptyWarning(); + return RRuntime.double2complex(semantics.getDoubleStart()); } else { - return na.check(operand) ? RComplex.createNA() : operand; + return operand; } } else { - throw error(RError.Message.INVALID_TYPE_ARGUMENT, "complex"); + return na.check(operand) ? RComplex.createNA() : operand; } } - @Specialization + @Specialization(guards = "supportString") protected String doString(String operand, boolean naRm, @SuppressWarnings("unused") boolean finite) { - if (semantics.supportString) { - na.enable(operand); - if (naRmProfile.profile(naRm)) { - if (na.check(operand)) { - if (semantics.getEmptyWarning() != null) { - RError.warning(this, semantics.emptyWarningCharacter); - } - return semantics.getStringStart(); - } else { - return operand; + na.enable(operand); + if (naRmProfile.profile(naRm)) { + if (na.check(operand)) { + if (semantics.getEmptyWarning() != null) { + RError.warning(this, semantics.emptyWarningCharacter); } + return semantics.getStringStart(); } else { - return na.check(operand) ? RRuntime.STRING_NA : operand; + return operand; } } else { - throw error(RError.Message.INVALID_TYPE_ARGUMENT, "character"); + return na.check(operand) ? RRuntime.STRING_NA : operand; } } - @SuppressWarnings("unused") - @Specialization - protected RRaw doString(RRaw operand, boolean naRm, boolean finite) { - throw error(RError.Message.INVALID_TYPE_ARGUMENT, "raw"); - } - @Specialization protected int doIntVector(RIntVector operand, boolean naRm, boolean finite) { RBaseNode.reportWork(this, operand.getLength()); @@ -342,105 +332,78 @@ public abstract class UnaryArithmeticReduceNode extends RBaseNode { return result; } - @Specialization + @Specialization(guards = "supportComplex") protected RComplex doComplexVector(RComplexVector operand, boolean naRm, boolean finite) { RBaseNode.reportWork(this, operand.getLength()); - if (semantics.supportComplex) { - boolean profiledNaRm = naRmProfile.profile(naRm || finite); - RComplex result = RRuntime.double2complex(semantics.getDoubleStart()); - int opCount = 0; - na.enable(operand); - for (int i = 0; i < operand.getLength(); i++) { - RComplex current = operand.getDataAt(i); - if (na.check(current)) { - if (profiledNaRm) { - continue; - } else { - return RComplex.createNA(); - } + boolean profiledNaRm = naRmProfile.profile(naRm || finite); + RComplex result = RRuntime.double2complex(semantics.getDoubleStart()); + int opCount = 0; + na.enable(operand); + for (int i = 0; i < operand.getLength(); i++) { + RComplex current = operand.getDataAt(i); + if (na.check(current)) { + if (profiledNaRm) { + continue; } else { - result = arithmetic.op(result.getRealPart(), result.getImaginaryPart(), current.getRealPart(), current.getImaginaryPart()); + return RComplex.createNA(); } - opCount++; - } - if (opCount == 0) { - emptyWarning(); + } else { + result = arithmetic.op(result.getRealPart(), result.getImaginaryPart(), current.getRealPart(), current.getImaginaryPart()); } - return result; - } else { - throw error(RError.Message.INVALID_TYPE_ARGUMENT, "complex"); - + opCount++; } + if (opCount == 0) { + emptyWarning(); + } + return result; } // the algorithm that works for other types (reducing a vector starting with the "start value") // does not work for String-s as, in particular, we cannot supply the (lexicographically) // "largest" String for the implementation of max function - @SuppressWarnings("unused") - private static String doStringVectorEmptyInternal(RStringVector operand, boolean naRm, boolean finite, ReduceSemantics semantics, RBaseNode invokingNode) { - if (semantics.supportString) { - if (semantics.getEmptyWarning() != null) { - RError.warning(invokingNode, semantics.emptyWarningCharacter); - } - return semantics.getStringStart(); - } else { - throw invokingNode.error(RError.Message.INVALID_TYPE_ARGUMENT, "character"); + private static String doStringVectorEmptyInternal(ReduceSemantics semantics, RBaseNode invokingNode) { + if (semantics.getEmptyWarning() != null) { + RError.warning(invokingNode, semantics.emptyWarningCharacter); } + return semantics.getStringStart(); } - @Specialization(guards = "operand.getLength() == 0") - protected String doStringVectorEmpty(RStringVector operand, boolean naRm, boolean finite) { - return doStringVectorEmptyInternal(operand, naRm, finite, semantics, this); + @Specialization(guards = {"supportString", "operand.getLength() == 0"}) + protected String doStringVectorEmpty(@SuppressWarnings("unused") RStringVector operand, @SuppressWarnings("unused") boolean naRm, @SuppressWarnings("unused") boolean finite) { + return doStringVectorEmptyInternal(semantics, this); } - @Specialization(guards = "operand.getLength() == 1") + @Specialization(guards = {"supportString", "operand.getLength() == 1"}) protected String doStringVectorOneElem(RStringVector operand, boolean naRm, boolean finite) { - if (semantics.supportString) { - boolean profiledNaRm = naRmProfile.profile(naRm); - String result = operand.getDataAt(0); - if (profiledNaRm) { - na.enable(result); - if (na.check(result)) { - return doStringVectorEmpty(operand, naRm, finite); - } + boolean profiledNaRm = naRmProfile.profile(naRm); + String result = operand.getDataAt(0); + if (profiledNaRm) { + na.enable(result); + if (na.check(result)) { + return doStringVectorEmpty(operand, naRm, finite); } - return result; - } else { - throw error(RError.Message.INVALID_TYPE_ARGUMENT, "character"); } + return result; } - @Specialization(guards = "operand.getLength() > 1") + @Specialization(guards = {"supportString", "operand.getLength() > 1"}) protected String doStringVector(RStringVector operand, boolean naRm, boolean finite) { - if (semantics.supportString) { - return handleString(operand, naRm, finite, 0); - } else { - throw error(RError.Message.INVALID_TYPE_ARGUMENT, "character"); - } - } - - @SuppressWarnings("unused") - @Specialization - protected RRaw doString(RRawVector operand, boolean naRm, boolean finite) { - throw error(RError.Message.INVALID_TYPE_ARGUMENT, "raw"); + return handleString(operand, naRm, finite, 0); } @Specialization(guards = {"isForeignVector(obj, hasSize)"}) protected Object doForeignVector(TruffleObject obj, boolean naRm, boolean finite, - @Cached("HAS_SIZE.createNode()") Node hasSize, + @SuppressWarnings("unused") @Cached("HAS_SIZE.createNode()") Node hasSize, @Cached("createForeignArray2R()") ForeignArray2R foreignArray2R, @Cached("createRecursive()") UnaryArithmeticReduceNode recursive) { Object vec = foreignArray2R.execute(obj, true); return recursive.executeReduce(vec, naRm, finite); } - @Specialization(guards = {"isForeignObject(obj)"}) - protected Object doForeign(TruffleObject obj, boolean naRm, boolean finite, - @Cached("HAS_SIZE.createNode()") Node hasSize, - @Cached("createForeignArray2R()") ForeignArray2R foreignArray2R, - @Cached("createRecursive()") UnaryArithmeticReduceNode recursive) { - throw error(RError.Message.INVALID_TYPE_ARGUMENT, "external object"); + @Fallback + protected Object doFallback(Object obj, @SuppressWarnings("unused") boolean naRm, @SuppressWarnings("unused") boolean infinite) { + throw error(RError.Message.INVALID_TYPE_ARGUMENT, Predef.typeName().apply(obj)); } protected UnaryArithmeticReduceNode createRecursive() { @@ -538,7 +501,7 @@ public abstract class UnaryArithmeticReduceNode extends RBaseNode { // the following is meant to eliminate leading NA-s if (offset == operand.getLength() - 1) { // last element - all other are NAs - return doStringVectorEmptyInternal(operand, naRm, finite, semantics, this); + return doStringVectorEmptyInternal(semantics, this); } else { return handleString(operand, naRm, finite, offset + 1); } diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/UnaryNotNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/UnaryNotNode.java index d2b835a272..a6f079c76d 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/UnaryNotNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/UnaryNotNode.java @@ -217,7 +217,7 @@ public abstract class UnaryNotNode extends RBuiltinNode.Arg1 { @Specialization(guards = {"isForeignVector(obj, hasSize)"}) protected Object doForeign(VirtualFrame frame, TruffleObject obj, - @Cached("HAS_SIZE.createNode()") Node hasSize, + @SuppressWarnings("unused") @Cached("HAS_SIZE.createNode()") Node hasSize, @Cached("createForeignArray2R()") ForeignArray2R foreignArray2R, @Cached("createRecursive()") UnaryNotNode recursive) { Object vec = foreignArray2R.execute(obj, true); diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ArgumentsSignature.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ArgumentsSignature.java index ac69a5a14f..ae22e9d513 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ArgumentsSignature.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ArgumentsSignature.java @@ -94,17 +94,17 @@ public final class ArgumentsSignature implements Iterable<String> { private ArgumentsSignature(String[] names, boolean convertEmpty) { this.names = new String[names.length]; - int nonNullCount = 0; + int nonNull = 0; for (int i = 0; i < names.length; i++) { String s = names[i]; if (s == null || (s.isEmpty() && convertEmpty)) { this.names[i] = null; continue; } - nonNullCount++; + nonNull++; this.names[i] = s == UNMATCHED ? s : s.intern(); } - this.nonNullCount = nonNullCount; + this.nonNullCount = nonNull; int index = NO_VARARG; int count = 0; diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/EvalThread.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/EvalThread.java index d515b1d63d..36a35799de 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/EvalThread.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/EvalThread.java @@ -33,7 +33,6 @@ import com.oracle.truffle.api.interop.TruffleObject; import com.oracle.truffle.api.source.Source; import com.oracle.truffle.api.vm.PolyglotEngine; import com.oracle.truffle.r.runtime.ExitException; -import com.oracle.truffle.r.runtime.FastROptions; import com.oracle.truffle.r.runtime.RError; import com.oracle.truffle.r.runtime.RInternalError; import com.oracle.truffle.r.runtime.RRuntime; @@ -62,24 +61,14 @@ public class EvalThread extends Thread { /** We use a separate counter for threads since ConcurrentHashMap.size() is not reliable. */ public static final AtomicInteger threadCnt = new AtomicInteger(0); - public EvalThread(ChildContextInfo info, Source source) { - this.info = info; - this.source = source; - threadCnt.incrementAndGet(); - threads.put(info.getId(), this); - idToMultiSlotTable.put(info.getId(), info.getMultiSlotInd()); - truffleContext = info.createTruffleContext(); - usePolyglot = false; - } - public EvalThread(ChildContextInfo info, Source source, boolean usePolyglot) { this.info = info; this.source = source; threadCnt.incrementAndGet(); threads.put(info.getId(), this); idToMultiSlotTable.put(info.getId(), info.getMultiSlotInd()); - this.usePolyglot = true; - truffleContext = null; + this.usePolyglot = usePolyglot; + this.truffleContext = usePolyglot ? null : info.createTruffleContext(); } @Override diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/interop/ForeignArray2R.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/interop/ForeignArray2R.java index 9188efd74a..8d62b74ba4 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/interop/ForeignArray2R.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/interop/ForeignArray2R.java @@ -100,7 +100,7 @@ public abstract class ForeignArray2R extends RBaseNode { } @Fallback - public Object doObject(Object obj, boolean recursive) { + public Object doObject(Object obj, @SuppressWarnings("unused") boolean recursive) { return obj; } @@ -159,41 +159,39 @@ public abstract class ForeignArray2R extends RBaseNode { } private Object element2R(Object value, CollectedElements ce) throws UnsupportedMessageException { - if (value instanceof TruffleObject) { + Object unboxedValue = value; + if (unboxedValue instanceof TruffleObject) { if (isNull == null) { CompilerDirectives.transferToInterpreterAndInvalidate(); isNull = insert(Message.IS_NULL.createNode()); } - if (ForeignAccess.sendIsNull(isNull, (TruffleObject) value)) { - value = RNull.instance; + if (ForeignAccess.sendIsNull(isNull, (TruffleObject) unboxedValue)) { + unboxedValue = RNull.instance; } else { if (isBoxed == null) { CompilerDirectives.transferToInterpreterAndInvalidate(); isBoxed = insert(Message.IS_BOXED.createNode()); } - if (ForeignAccess.sendIsBoxed(isBoxed, (TruffleObject) value)) { + if (ForeignAccess.sendIsBoxed(isBoxed, (TruffleObject) unboxedValue)) { if (unbox == null) { CompilerDirectives.transferToInterpreterAndInvalidate(); unbox = insert(Message.UNBOX.createNode()); } - value = ForeignAccess.sendUnbox(unbox, (TruffleObject) value); + unboxedValue = ForeignAccess.sendUnbox(unbox, (TruffleObject) unboxedValue); } } } - ce.typeCheck.checkForeign(value); + ce.typeCheck.checkForeign(unboxedValue); if (foreign2R == null) { CompilerDirectives.transferToInterpreterAndInvalidate(); foreign2R = insert(Foreign2RNodeGen.create()); } - return foreign2R.execute(value); + return foreign2R.execute(unboxedValue); } /** * Coverts the elements collected from a foreign array or java iterable into a vector or list. - * - * @param ce - * @return */ public static RAbstractVector asAbstractVector(CollectedElements ce) { InteropTypeCheck.RType type = ce.typeCheck.getType(); diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/interop/AbstractMRTest.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/interop/AbstractMRTest.java index c53520bccb..8e0d8579e8 100644 --- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/interop/AbstractMRTest.java +++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/interop/AbstractMRTest.java @@ -40,8 +40,7 @@ abstract class AbstractMRTest { /** * Create TruffleObject-s to be rudimentary tested for IS_NULL, IS_BOXED/UNBOX, IS_EXECUTABLE, * IS_POINTER, HAS_SIZE/GET_SIZE/KEYS behavior. - * - * @return + * * @throws Exception */ protected abstract TruffleObject[] createTruffleObjects() throws Exception; @@ -55,31 +54,31 @@ abstract class AbstractMRTest { return null; } - protected boolean isNull(TruffleObject obj) { + protected boolean isNull(@SuppressWarnings("unused") TruffleObject obj) { return false; } - protected boolean isExecutable(TruffleObject obj) { + protected boolean isExecutable(@SuppressWarnings("unused") TruffleObject obj) { return false; } - protected boolean isPointer(TruffleObject obj) { + protected boolean isPointer(@SuppressWarnings("unused") TruffleObject obj) { return false; } - protected boolean isBoxed(TruffleObject obj) { + protected boolean isBoxed(@SuppressWarnings("unused") TruffleObject obj) { return false; } - protected boolean hasSize(TruffleObject obj) { + protected boolean hasSize(@SuppressWarnings("unused") TruffleObject obj) { return false; } - protected int getSize(TruffleObject obj) { + protected int getSize(@SuppressWarnings("unused") TruffleObject obj) { throw new UnsupportedOperationException("override if hasSize returns true"); } - protected Object getUnboxed(TruffleObject obj) { + protected Object getUnboxed(@SuppressWarnings("unused") TruffleObject obj) { throw new UnsupportedOperationException("override if isBoxed returns true"); } diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/interop/ListMRTest.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/interop/ListMRTest.java index 9486402b6d..9d21903108 100644 --- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/interop/ListMRTest.java +++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/interop/ListMRTest.java @@ -53,6 +53,7 @@ public class ListMRTest extends AbstractMRTest { engine = PolyglotEngine.newBuilder().build(); } + @Override @Test public void testNativePointer() throws UnsupportedMessageException, UnknownIdentifierException, UnsupportedTypeException { assertTrue(ForeignAccess.sendToNative(Message.TO_NATIVE.createNode(), create("list", testValues)) instanceof NativePointer); diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/interop/REnvironmentMRTest.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/interop/REnvironmentMRTest.java index 33ff1c3fea..cc85fd4757 100644 --- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/interop/REnvironmentMRTest.java +++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/interop/REnvironmentMRTest.java @@ -131,6 +131,7 @@ public class REnvironmentMRTest extends AbstractMRTest { assertFalse(KeyInfo.isInternal(info)); } + @Override protected TruffleObject[] createTruffleObjects() throws Exception { PolyglotEngine engine = PolyglotEngine.newBuilder().build(); Source src = Source.newBuilder("e <- new.env(); e$s <- 'aaa'; e$i <- 123L; e$d <- 123.1; e$b <- TRUE; e$fn <- function() {}; e$n <- NULL; e$l <- 666; lockBinding('l', e); e").mimeType( @@ -143,6 +144,7 @@ public class REnvironmentMRTest extends AbstractMRTest { return new String[]{"s", "i", "d", "b", "fn", "n", "l"}; } + @Override protected TruffleObject createEmptyTruffleObject() throws Exception { PolyglotEngine engine = PolyglotEngine.newBuilder().build(); Source src = Source.newBuilder("new.env()").mimeType("text/x-r").name("test.R").build(); diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/interop/RFunctionMRTest.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/interop/RFunctionMRTest.java index 03c5a908b7..52e912a153 100644 --- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/interop/RFunctionMRTest.java +++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/interop/RFunctionMRTest.java @@ -71,7 +71,7 @@ public class RFunctionMRTest extends AbstractMRTest { return new TruffleObject[]{create("function() {}")}; } - private RFunction create(String fun) { + private static RFunction create(String fun) { PolyglotEngine engine = PolyglotEngine.newBuilder().build(); Source src = Source.newBuilder(fun).mimeType("text/x-r").name("test.R").build(); PolyglotEngine.Value result = engine.eval(src); diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/fastr/TestJavaInterop.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/fastr/TestJavaInterop.java index 9b031d6eec..d4a38ca6e5 100644 --- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/fastr/TestJavaInterop.java +++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/fastr/TestJavaInterop.java @@ -798,12 +798,12 @@ public class TestJavaInterop extends TestBase { "'[[4]]','\n','[external object]','\n\n','[[5]]','\n','[external object]','\n\n','[[6]]','\n','[external object]','\n\n','[[7]]','\n','[external object]','\n\n', sep='')"); } - private String getTestFieldValuesAsResult(String name) throws NoSuchFieldException, IllegalArgumentException, IllegalAccessException { + private static String getTestFieldValuesAsResult(String name) throws NoSuchFieldException, IllegalArgumentException, IllegalAccessException { TestArraysClass ta = new TestArraysClass(); Field f = ta.getClass().getDeclaredField(name); Object value = f.get(ta); if (value instanceof List) { - List<?> l = (List) value; + List<?> l = (List<?>) value; value = l.toArray(new Object[l.size()]); } StringBuilder sb = new StringBuilder(); @@ -831,7 +831,7 @@ public class TestJavaInterop extends TestBase { } @Test - public void testConvertEmptyList() throws IllegalArgumentException, IllegalAccessException { + public void testConvertEmptyList() throws IllegalArgumentException { assertEvalFastR(Ignored.ImplementationError, CREATE_TRUFFLE_OBJECT + "as.character(to$listEmpty);", "as.character(list())"); } @@ -1155,8 +1155,7 @@ public class TestJavaInterop extends TestBase { } @Test - public void testForeignUnaryArithmeticOp() throws NoSuchFieldException, - IllegalAccessException { + public void testForeignUnaryArithmeticOp() { TestClass t = new TestClass(); @@ -1186,8 +1185,7 @@ public class TestJavaInterop extends TestBase { } @Test - public void testForeignUnaryArithmeticReduceOp() throws NoSuchFieldException, - IllegalAccessException { + public void testForeignUnaryArithmeticReduceOp() { assertEvalFastR(CREATE_TRUFFLE_OBJECT + "range(to$fieldBooleanArray)", "c(0, 1)"); assertEvalFastR(CREATE_TRUFFLE_OBJECT + "range(to$fieldByteArray)", "c(1, 3)"); assertEvalFastR(CREATE_TRUFFLE_OBJECT + "range(to$fieldDoubleArray)", "c(1.1, 3.1)"); @@ -1559,6 +1557,7 @@ public class TestJavaInterop extends TestBase { } } + @SuppressWarnings("unused") public static class TestClass { public static boolean fieldStaticBoolean = true; @@ -2178,7 +2177,7 @@ public class TestJavaInterop extends TestBase { @Override public Integer next() { throw new UnsupportedOperationException("Should not reach here."); - }; + } } @Override @@ -2199,5 +2198,4 @@ public class TestJavaInterop extends TestBase { throw new UnsupportedOperationException("Should not reach here."); } } - } -- GitLab