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 73345654c9ce22af02c39ac84800246d933ae140..114953b6d876bb669da1b887c726417ebca74dd1 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 @@ -51,9 +51,8 @@ public final class REngine { private REngine(String[] commandArgs, ConsoleHandler consoleHandler) { RDefaultPackages defaultPackages = RDefaultPackages.getInstance(); - this.context = new RContext(defaultPackages, commandArgs, consoleHandler); + this.context = RContext.instantiate(defaultPackages, commandArgs, consoleHandler); defaultPackages.load(context); - } /** diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RContext.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RContext.java index 88f6b4cca6f0302892103cd07cf447e1dc610189..dd5d71c1db8d82135208c65bd3f37d09a5412610 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RContext.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RContext.java @@ -99,13 +99,20 @@ public final class RContext { return singleton; } - public RContext(RBuiltinLookup lookup, String[] commandArgs, ConsoleHandler consoleHandler) { + public static RContext instantiate(RBuiltinLookup lookup, String[] commandArgs, ConsoleHandler consoleHandler) { + if (singleton != null) { + throw new IllegalStateException("RContext already instantiated."); + } + singleton = new RContext(lookup, commandArgs, consoleHandler); + return singleton; + } + + private RContext(RBuiltinLookup lookup, String[] commandArgs, ConsoleHandler consoleHandler) { this.sourceManager = new SourceManager(); this.lookup = lookup; this.commandArgs = commandArgs; this.consoleHandler = consoleHandler; this.evalWarnings = null; - singleton = this; } public RBuiltinLookup getLookup() {