diff --git a/README.md b/README.md index 6c421a3f83d78fd2e3d423fde7eefce5489c1478..ae5a5aa685acd0255a307ead2163496fc91c32fb 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ FastR is primarily aimed at long-running applications. The runtime performance b Building FastR from source is supported on Mac OS X (El Capitan onwards), and various flavors of Linux. FastR uses a build tool called `mx` (cf `maven`) which can be downloaded from [here](http://github.com/graalvm/mx). -`mx` manages software in _suites_, which are normally one-to-one with a `git` repository. FastR depends fundamentally on the [truffle](http://github.com/graalvm/truffle) suite. However, performance also depends on the [Graal compiler](http://github.com/graalvm/graal-core) as without it, FastR operates in interpreted mode only. The conventional way to arrange the Git repos (suites) is as siblings in a parent directory, which we will call `FASTR_HOME`. +`mx` manages software in _suites_, which are normally one-to-one with a `git` repository. FastR depends fundamentally on the [truffle](http://github.com/graalvm/truffle) suite. However, performance also depends on the [Graal compiler](http://github.com/graalvm/graal) as without it, FastR operates in interpreted mode only. The conventional way to arrange the Git repos (suites) is as siblings in a parent directory, which we will call `FASTR_HOME`. ## Pre-Requisites FastR shares some code with GnuR, for example, the default packages and the Blas library. Therefore, a version of GnuR (currently diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/REngine.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/REngine.java index 8798c06e6976de8811a41bef02f894a70457e50d..73a6b694cafcbee45b0295d66896961bf279aff9 100644 --- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/REngine.java +++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/REngine.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -293,6 +293,7 @@ final class REngine implements Engine, Engine.Timings { } @Override + @SuppressWarnings("deprecation") public CallTarget parseToCallTarget(Source source, MaterializedFrame executionFrame) throws ParseException { if (source == Engine.GET_CONTEXT) { /* @@ -332,6 +333,7 @@ final class REngine implements Engine, Engine.Timings { @Child private Node findContext = TruffleRLanguage.INSTANCE.actuallyCreateFindContextNode(); + @SuppressWarnings("deprecation") PolyglotEngineRootNode(List<RSyntaxNode> statements, SourceSection sourceSection, MaterializedFrame executionFrame) { super(TruffleRLanguage.class, sourceSection, new FrameDescriptor()); // can't print if initializing the system in embedded mode (no builtins yet) @@ -519,6 +521,7 @@ final class REngine implements Engine, Engine.Timings { @Child private GetVisibilityNode visibility = GetVisibilityNode.create(); @Child private SetVisibilityNode setVisibility = SetVisibilityNode.create(); + @SuppressWarnings("deprecation") protected AnonymousRootNode(RNode body, String description, boolean printResult, boolean topLevel) { super(TruffleRLanguage.class, null, new FrameDescriptor()); this.body = body; diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/TruffleRLanguage.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/TruffleRLanguage.java index f9d97de35c67313ceb0df68f2985b379a7cf5493..1e282c09098f3fcf1d1abfc4c7e5c562e3497953 100644 --- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/TruffleRLanguage.java +++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/TruffleRLanguage.java @@ -90,11 +90,12 @@ public final class TruffleRLanguage extends TruffleLanguage<RContext> { private static boolean systemInitialized; - public static final TruffleRLanguage INSTANCE = new TruffleRLanguage(); + public static TruffleRLanguage INSTANCE; public static final String MIME = RRuntime.R_APP_MIME; - private TruffleRLanguage() { + public TruffleRLanguage() { + INSTANCE = this; } @Override @@ -185,8 +186,8 @@ public final class TruffleRLanguage extends TruffleLanguage<RContext> { return null; } - @SuppressWarnings("try") @Override + @SuppressWarnings({"try", "deprecation"}) protected CallTarget parse(ParsingRequest request) throws Exception { CompilerAsserts.neverPartOfCompilation(); try (RCloseable c = RContext.withinContext(findContext(createFindContextNode()))) { @@ -228,10 +229,12 @@ public final class TruffleRLanguage extends TruffleLanguage<RContext> { } // TODO: why isn't the original method public? + @SuppressWarnings("deprecation") public Node actuallyCreateFindContextNode() { return createFindContextNode(); } + @SuppressWarnings("deprecation") public RContext actuallyFindContext0(Node contextNode) { return findContext(contextNode); } 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 75555feaacc1047bfa8b2d649a89f6cc020fb1dc..f5b6dbbb1bae90f423f6404be1422507daa91734 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 @@ -48,6 +48,7 @@ public final class RAbstractVectorAccessFactory implements Factory18 { @Child private RLengthNode lengthNode = RLengthNode.create(); + @SuppressWarnings("deprecation") VectorSizeNode() { super(TruffleRLanguage.class, null, null); } @@ -65,6 +66,7 @@ public final class RAbstractVectorAccessFactory implements Factory18 { @Child private RLengthNode lengthNode = RLengthNode.create(); @Child private Node findContext = TruffleRLanguage.INSTANCE.actuallyCreateFindContextNode(); + @SuppressWarnings("deprecation") VectorReadNode() { super(TruffleRLanguage.class, null, null); this.lengthAccess = false; @@ -94,6 +96,7 @@ public final class RAbstractVectorAccessFactory implements Factory18 { } private abstract class InteropRootNode extends RootNode { + @SuppressWarnings("deprecation") InteropRootNode() { super(TruffleRLanguage.class, null, null); } diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/printer/ValuePrinterNode.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/printer/ValuePrinterNode.java index e1824bbccbcb343c982b10b6fe6622aa6cf43657..c9437d56e481f0de76c1fad8b2e1e759a27c1cb7 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/printer/ValuePrinterNode.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/printer/ValuePrinterNode.java @@ -562,6 +562,7 @@ public final class ValuePrinterNode extends RBaseNode { ValuePrinters.printNewLine(printCtx); } + @SuppressWarnings("deprecation") public static String prettyPrint(final Object value) { return (String) Truffle.getRuntime().createCallTarget(new RootNode(TruffleLanguage.class, null, null) { diff --git a/com.oracle.truffle.r.nodes.test/src/com/oracle/truffle/r/nodes/casts/TestCasts.java b/com.oracle.truffle.r.nodes.test/src/com/oracle/truffle/r/nodes/casts/TestCasts.java index 16b1166df72e934f8dbc2c4d67ec9f6e4900a1df..9b512143f74f997f6f45efe9cf6276c6a1729a0d 100644 --- a/com.oracle.truffle.r.nodes.test/src/com/oracle/truffle/r/nodes/casts/TestCasts.java +++ b/com.oracle.truffle.r.nodes.test/src/com/oracle/truffle/r/nodes/casts/TestCasts.java @@ -69,7 +69,7 @@ import com.oracle.truffle.r.runtime.nodes.RSyntaxNode; * mx --J @'-Dgraal.Dump=HighTier:1 -Dgraal.MethodFilter=*TestCasts* -Dgraal.TraceTruffleCompilation=true -Dgraal.PrintBackendCFG=false' junits --tests TestCasts * * of course, Graal needs to be imported for this to work: - * DEFAULT_DYNAMIC_IMPORTS=graal-core (or graal-enterprise) + * DEFAULT_DYNAMIC_IMPORTS=compiler (or graal-enterprise) */ public class TestCasts extends TestBase { @@ -82,6 +82,7 @@ public class TestCasts extends TestBase { private boolean isCompiled = false; @Child protected T node; + @SuppressWarnings("deprecation") protected TestRootNode(String name, T node) { super(RContext.getRForeignAccessFactory().getTruffleLanguage(), RSyntaxNode.INTERNAL, descriptor); this.name = name; diff --git a/com.oracle.truffle.r.nodes.test/src/com/oracle/truffle/r/nodes/test/TestUtilities.java b/com.oracle.truffle.r.nodes.test/src/com/oracle/truffle/r/nodes/test/TestUtilities.java index 80bf53c93e4ed277799a2abe8485b1a1ca59694e..2785376e2c31392b4476da78c28f9776a7d2503d 100644 --- a/com.oracle.truffle.r.nodes.test/src/com/oracle/truffle/r/nodes/test/TestUtilities.java +++ b/com.oracle.truffle.r.nodes.test/src/com/oracle/truffle/r/nodes/test/TestUtilities.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -192,6 +192,7 @@ public class TestUtilities { private final NodeAdapter<T> invoke; @Child private T node; + @SuppressWarnings("deprecation") TestRoot(T node, NodeAdapter<T> invoke) { super(TruffleLanguage.class, null, null); this.node = node; diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/RRootNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/RRootNode.java index d04204e0e385de54e1fe66c533b39e74cc27921d..f1ed9c18960d1dd7b7fdb932a1c27974c649d1b4 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/RRootNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/RRootNode.java @@ -47,6 +47,7 @@ public abstract class RRootNode extends RootNode implements HasSignature { private FastPathFactory fastPath; + @SuppressWarnings("deprecation") protected RRootNode(FrameDescriptor frameDescriptor, FastPathFactory fastPath) { super(RContext.getRForeignAccessFactory().getTruffleLanguage(), RSyntaxNode.SOURCE_UNAVAILABLE, frameDescriptor); this.fastPath = fastPath; diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/ffi/FFIUpCallRootNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/ffi/FFIUpCallRootNode.java index 475f51bdfdaa707914aa7a0d51b3965ebc94e9b3..f1420a80ceb006a19d14f758496a16e642c608f3 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/ffi/FFIUpCallRootNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/ffi/FFIUpCallRootNode.java @@ -47,6 +47,7 @@ public final class FFIUpCallRootNode extends RootNode { @Child private FFIUpCallNode theFFIUpCallNode; private final int numArgs; + @SuppressWarnings("deprecation") private FFIUpCallRootNode(FFIUpCallNode child) { super(RContext.getRRuntimeASTAccess().getTruffleRLanguage(), null, new FrameDescriptor()); theFFIUpCallNode = child; diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/RContext.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/RContext.java index b4a193b8fa0aa2726c82474ad2f867bbcd0ee0f3..7866245493af007477904b790f397416fc395446 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/RContext.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/RContext.java @@ -35,7 +35,6 @@ import java.util.concurrent.Semaphore; import com.oracle.truffle.api.Assumption; import com.oracle.truffle.api.CompilerDirectives.CompilationFinal; import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary; -import com.oracle.truffle.api.ExecutionContext; import com.oracle.truffle.api.Truffle; import com.oracle.truffle.api.TruffleLanguage; import com.oracle.truffle.api.TruffleLanguage.Env; @@ -97,7 +96,8 @@ import com.oracle.truffle.r.runtime.rng.RRNG; * * Contexts can be destroyed */ -public final class RContext extends ExecutionContext { +@SuppressWarnings("deprecation") +public final class RContext extends com.oracle.truffle.api.ExecutionContext { public static final int CONSOLE_WIDTH = 80; diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RTypes.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RTypes.java index 2ed40322333bf1bf693e42951d76dc1deb9af7ae..c7c9a3819d8f46b22196331fdc85c3c590d8f6d0 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RTypes.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RTypes.java @@ -26,8 +26,6 @@ import com.oracle.truffle.api.dsl.ImplicitCast; import com.oracle.truffle.api.dsl.TypeCast; import com.oracle.truffle.api.dsl.TypeCheck; import com.oracle.truffle.api.dsl.TypeSystem; -import com.oracle.truffle.api.dsl.internal.DSLOptions; -import com.oracle.truffle.api.dsl.internal.DSLOptions.DSLGenerator; import com.oracle.truffle.r.runtime.data.model.RAbstractAtomicVector; import com.oracle.truffle.r.runtime.data.model.RAbstractComplexVector; import com.oracle.truffle.r.runtime.data.model.RAbstractContainer; @@ -68,7 +66,6 @@ import com.oracle.truffle.r.runtime.nodes.RNode; RAbstractContainer.class, RArgsValuesAndNames.class }) -@DSLOptions(defaultGenerator = DSLGenerator.FLAT) public class RTypes { @TypeCheck(RNull.class) diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/DLL.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/DLL.java index a536479f999311e12c2f0b266dfc75ede5d79a57..2bb5d9a64ae5afc53428ec640de1594bb98a051a 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/DLL.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/DLL.java @@ -581,6 +581,7 @@ public class DLL { @Child RFindSymbolNode findSymbolNode = RFindSymbolNode.create(); + @SuppressWarnings("deprecation") private RFindSymbolRootNode() { super(RContext.getRRuntimeASTAccess().getTruffleRLanguage(), null, new FrameDescriptor()); } diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/RFFIRootNode.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/RFFIRootNode.java index 71d8f98278e42b662db1ed71c61af3c27d70ff00..d6b8451a812102fa1304ee76503492aad10c0fc0 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/RFFIRootNode.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/RFFIRootNode.java @@ -31,6 +31,7 @@ import com.oracle.truffle.r.runtime.context.RContext; public abstract class RFFIRootNode<T extends Node> extends RootNode { @Child T rffiNode; + @SuppressWarnings("deprecation") protected RFFIRootNode(T baseRFFINode) { super(RContext.getRRuntimeASTAccess().getTruffleRLanguage(), null, new FrameDescriptor()); this.rffiNode = baseRFFINode; diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/rng/user/UserRNG.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/rng/user/UserRNG.java index 93c1f237119fd4495b9a25e4d2310629f79cd5e3..27203104d213c47c8406464d4daef8f9a6c816e3 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/rng/user/UserRNG.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/rng/user/UserRNG.java @@ -78,6 +78,7 @@ public final class UserRNG implements RandomNumberGenerator { private abstract static class UserRNGRootNodeAdapter extends RootNode { @Child protected UserRngRFFI.UserRngRFFINode userRngRFFINode = RFFIFactory.getRFFI().getUserRngRFFI().createUserRngRFFINode(); + @SuppressWarnings("deprecation") protected UserRNGRootNodeAdapter() { super(RContext.getRRuntimeASTAccess().getTruffleRLanguage(), null, new FrameDescriptor()); } diff --git a/documentation/dev/truffle_llvm_ffi.md b/documentation/dev/truffle_llvm_ffi.md index 8eb7fd13ca344734107b2a70c0e9a4a9ce37aae1..511d667d43f38135dc850ca0aa6ed0ae5e01da8a 100644 --- a/documentation/dev/truffle_llvm_ffi.md +++ b/documentation/dev/truffle_llvm_ffi.md @@ -15,7 +15,7 @@ The `sulong` repository must be cloned to a sibling directory of `fastr` and bui mx build mx su-pulldragonegg -The `mx build` step will clone the `graal-core` repository, if necessary, and build that also. The `mx su-pulldragonegg` step is required to be able to compile Fortran code to LLVM, which is required by FastR. +The `mx build` step will clone the `compiler` repository, if necessary, and build that also. The `mx su-pulldragonegg` step is required to be able to compile Fortran code to LLVM, which is required by FastR. ## Additional Pre-Requisites diff --git a/mx.fastr/mx_fastr.py b/mx.fastr/mx_fastr.py index 0bc160dec4b1d3e783e5b0a22f000b67d82f5650..eb799067a57de755e503d37ed48971258df2f4f8 100644 --- a/mx.fastr/mx_fastr.py +++ b/mx.fastr/mx_fastr.py @@ -39,7 +39,7 @@ import os ''' This is the launchpad for all the functions available for building/running/testing/analyzing FastR. FastR can run with or without the Graal compiler enabled. As a convenience if the -graal-core suite is detected then the use of the Graal compiler is enabled without any +compiler suite is detected then the use of the Graal compiler is enabled without any additional command line options being required to the mx command, i.e. it is as if --jdk jvmci was passed as an mx global option. ''' @@ -48,7 +48,7 @@ _fastr_suite = mx.suite('fastr') ''' If this is None, then we run under the standard VM in interpreted mode only. ''' -_mx_graal = mx.suite("graal-core", fatalIfMissing=False) +_mx_graal = mx.suite("compiler", fatalIfMissing=False) _mx_sulong = mx.suite("sulong", fatalIfMissing=False) _r_command_package = 'com.oracle.truffle.r.engine' diff --git a/mx.fastr/suite.py b/mx.fastr/suite.py index 39727463a8c14c9979337eca28fcb997a7db6ca8..1e31f049bab76714db753bd7a9cc3bea2de7432f 100644 --- a/mx.fastr/suite.py +++ b/mx.fastr/suite.py @@ -28,9 +28,10 @@ suite = { "suites" : [ { "name" : "truffle", - "version" : "e4c752d5477f3177b30ba80af7cd3c3e61329d2e", + "subdir" : True, + "version" : "01a039cbfc6238fd78d9159292495f93d6428f2a", "urls" : [ - {"url" : "https://github.com/graalvm/truffle", "kind" : "git"}, + {"url" : "https://github.com/graalvm/graal", "kind" : "git"}, {"url" : "https://curio.ssw.jku.at/nexus/content/repositories/snapshots", "kind" : "binary"}, ] },