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 d1fa28a8e76d347dc6fb7b517bfb0b56a3212320..65adfcfd0f9f825430961e248f74cbcbca055a18 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 5dad942ddc4384657e394bcbaa4d3ce48f0734a6..6a873e08685ce69ee2dacc19db248962c7a75d15 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 250948d7ab3689d80b5a4533ed5029e61a303922..49398a0d0bb7625214c3bd4d5d5a9d7f5eb30e3a 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 ff96aa902a84ef0490a935e174bc89025075646f..fd586b60d95c446b3c9325c260ba3f75b433f3e7 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 7f57be4a7640a9904f58b1b003663248052ef927..018acd8001b0a8d003c6ab43b7385caf8f24e091 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 353ac3daebfe9b9c1a4e8c4699a7b05cee0c4682..aef100f31be1a166baf498ea58cb0a5623137f18 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 16c7115a4dcb2497a2fb2e90c8b6c95a668c1f31..aaf35509de1b756d4175b9ff4161d71e1af0d768 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 0f7c7346fd652a5d815418533c056444f1983215..c52fc25a1b1a3412fb8ca0d1d4a72fa7b77315f6 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 fd7198eda7a52d30f70e2bcb8c6a92a5ccfa9008..792abffb0e426b6d7920b2eb98ee7f5bc0f7064c 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 042b20305cc10094df24f1e9af25b20d43536301..0be5eb231324116a9ac7c2f4639f52f6a8a19496 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 178f29c4816b6bd7125b6db76099c92bba38a8c2..8fbce0e16b3edc0a9c0908402421edf9abbb3a8e 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 3edade53d5551c2e2d3b3892a9cbaa94f07f356f..da39fe9bdec0bf28a7259cf9f31fb90fe5b65302 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 71bff2a15a0295901ff2bbc513eaf05ae3dc4257..d792c70c410dcaf1c79f72a59cb1dff8004a5025 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 da358853e981db282353cb67d3377fb806b1a6de..3136f769e998137d0d11b3fa9df764d3830047ee 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 a9860a5d31058644a95bb67c8852cc60f0deb05c..425bb7220c544608be9f77badb5a340fadadb823 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 aa7010c1a8e29ee96d0416b873ad6af6a0236ae4..266c914a7273b98a847c4d5cee71b011288e2956 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 b9da1b0854c96f1a08dedcdca70916a5ba8f1761..d05f42daf1e7ae23032d741b8de5ba534453d367 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 74dfcb6ba5359f03e683a9ea2558f47f4b517c92..ad4f0b46c876189de0c9944a81c4a17bf13b92e4 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 ed182a5496d8539394c85901ec2339461133dba0..190797cdd47a3412a5bb862c937fe542253ec7f7 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 4a616a2175674c4d312bbe4c4ab29f460b13b20b..6896d4cf0c35ad53ab21aa12a96d85cc0b02ebce 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 e5882e8e23e9d436fb9e20bde95b005b532121c4..ae3cdfeff6afb55e27e55aefa564646cbad8e700 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 0db087a2824d21ad167cd17001cb1888360f0fd2..70f34a3d31d1afd35087958cefe70a8de97c20a1 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 c9e1d89b406d5d82f3afaaf24bd3619d5921b604..4b8964a8834e3e73e9d8f2bf510c0b36efca0797 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 46d804b6c25b4d41286dba76d9d5d85e9f6d23ff..ce65ed44e29023665f06ee0f4e4741eba3c24e63 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 605ce73f7ef90f19ed69d441d6d3902a56ebaf3d..f54f392a94f0cc3c598686beb57675199610c5b3 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 d2b835a2727eaf6071c94d77c35370959fdf8e97..a6f079c76d74c2b219bfff5d7cb0b9b60868e621 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 ac69a5a14fd5a4ec37a529811733dbe1df51a437..ae22e9d513dfb264e7b2d91fd4d0bbdf6d7afa11 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 d515b1d63d6773af31fb687b30c2019754f24086..36a35799de65e30d2577288d0e432d7b48a1a2d5 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 9188efd74ade37058e8a0cd58ca1f32e2fc599d1..8d62b74ba44e9abf2dd02b38056682ab5978a462 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 c53520bccbbf856cdd5ae2f7cfaabcf039f6a44f..8e0d8579e8b292a2e74e7cfdfbfaf230921c2277 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 9486402b6da24bc7fc821c33be2b9fc71edc3ffa..9d2190310874d3727909d540699e50688fbd2b22 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 33ff1c3fea8760a3e3a6ff1ae0e6ded6f60e33e2..cc85fd4757a1f15a7e4504d45fe5c066e0da637a 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 03c5a908b7d16155168ccb025558a4f9e0e7eaa0..52e912a153a49f1edd4501453602e463feec3ccf 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 9b031d6eec129a18fef4cf2dda0b018df165ce66..d4a38ca6e5459e25a78ca77e2c6caba9a508303b 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."); } } - }