Skip to content

Commit

Permalink
[Truffle] Don't even pass Truffle the classic context.
Browse files Browse the repository at this point in the history
  • Loading branch information
chrisseaton committed Nov 5, 2016
1 parent e127807 commit 398462f
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 22 deletions.
4 changes: 2 additions & 2 deletions core/src/main/java/org/jruby/Ruby.java
Expand Up @@ -929,8 +929,8 @@ private JRubyTruffleInterface loadTruffle() {
final JRubyTruffleInterface truffleContext;

try {
Constructor<?> con = clazz.getConstructor(Ruby.class);
truffleContext = (JRubyTruffleInterface) con.newInstance(this);
Constructor<?> con = clazz.getConstructor(RubyInstanceConfig.class);
truffleContext = (JRubyTruffleInterface) con.newInstance(config);
} catch (Exception e) {
throw new RuntimeException("Error while calling the constructor of Truffle's RubyContext", e);
}
Expand Down
8 changes: 4 additions & 4 deletions truffle/src/main/java/org/jruby/truffle/JRubyTruffleImpl.java
Expand Up @@ -13,8 +13,8 @@
import com.oracle.truffle.api.source.Source;
import com.oracle.truffle.api.vm.PolyglotEngine;
import org.jruby.JRubyTruffleInterface;
import org.jruby.Ruby;
import org.jruby.truffle.interop.JRubyContextWrapper;
import org.jruby.RubyInstanceConfig;
import org.jruby.truffle.interop.InstanceConfigWrapper;
import org.jruby.truffle.platform.graal.Graal;
import org.jruby.util.cli.Options;

Expand All @@ -25,9 +25,9 @@ public class JRubyTruffleImpl implements JRubyTruffleInterface {

// Created by reflection from Ruby#loadTruffle

public JRubyTruffleImpl(Ruby runtime) {
public JRubyTruffleImpl(RubyInstanceConfig instanceConfig) {
engine = PolyglotEngine.newBuilder()
.globalSymbol(JRubyTruffleInterface.RUNTIME_SYMBOL, new JRubyContextWrapper(runtime))
.globalSymbol(JRubyTruffleInterface.RUNTIME_SYMBOL, new InstanceConfigWrapper(instanceConfig))
.build();
context = (RubyContext) engine.eval(loadSource("Truffle::Boot.context", "context")).get();
}
Expand Down
4 changes: 2 additions & 2 deletions truffle/src/main/java/org/jruby/truffle/RubyContext.java
Expand Up @@ -110,7 +110,7 @@ public class RubyContext extends ExecutionContext {

private String currentDirectory;

public RubyContext(RubyInstanceConfig instanceConfig, Ruby jrubyRuntime, TruffleLanguage.Env env) {
public RubyContext(RubyInstanceConfig instanceConfig, TruffleLanguage.Env env) {
this.instanceConfig = instanceConfig;
jrubyHome = findJRubyHome();
this.env = env;
Expand Down Expand Up @@ -184,7 +184,7 @@ public RubyContext(RubyInstanceConfig instanceConfig, Ruby jrubyRuntime, Truffle

// Load other subsystems

final PrintStream configStandardOut = jrubyRuntime.getInstanceConfig().getOutput();
final PrintStream configStandardOut = instanceConfig.getOutput();
debugStandardOut = (configStandardOut == System.out) ? null : configStandardOut;

if (options.INSTRUMENTATION_SERVER_PORT != 0) {
Expand Down
12 changes: 4 additions & 8 deletions truffle/src/main/java/org/jruby/truffle/RubyLanguage.java
Expand Up @@ -17,12 +17,11 @@
import com.oracle.truffle.api.instrumentation.StandardTags;
import com.oracle.truffle.api.nodes.Node;
import com.oracle.truffle.api.source.Source;
import org.jruby.Ruby;
import org.jruby.RubyInstanceConfig;
import org.jruby.runtime.Constants;
import org.jruby.truffle.core.kernel.TraceManager;
import org.jruby.truffle.extra.AttachmentsManager;
import org.jruby.truffle.interop.JRubyContextWrapper;
import org.jruby.truffle.interop.InstanceConfigWrapper;
import org.jruby.truffle.language.LazyRubyRootNode;
import org.jruby.truffle.language.RubyGuards;
import org.jruby.truffle.stdlib.CoverageManager;
Expand Down Expand Up @@ -58,22 +57,19 @@ private RubyLanguage() {

@Override
public RubyContext createContext(Env env) {
final JRubyContextWrapper runtimeWrapper = (JRubyContextWrapper) env.importSymbol(JRubyTruffleImpl.RUNTIME_SYMBOL);
final InstanceConfigWrapper runtimeWrapper = (InstanceConfigWrapper) env.importSymbol(JRubyTruffleImpl.RUNTIME_SYMBOL);

final RubyInstanceConfig instanceConfig;
final Ruby runtime;

if (runtimeWrapper == null) {
instanceConfig = new RubyInstanceConfig();
instanceConfig.processArgumentsWithRubyopts();
instanceConfig.setCompileMode(RubyInstanceConfig.CompileMode.TRUFFLE);
runtime = Ruby.newInstance(instanceConfig);
} else {
runtime = runtimeWrapper.getRuby();
instanceConfig = runtime.getInstanceConfig();
instanceConfig = runtimeWrapper.getInstanceConfig();
}

return new RubyContext(instanceConfig, runtime, env);
return new RubyContext(instanceConfig, env);
}

@Override
Expand Down
Expand Up @@ -12,17 +12,18 @@
import com.oracle.truffle.api.interop.ForeignAccess;
import com.oracle.truffle.api.interop.TruffleObject;
import org.jruby.Ruby;
import org.jruby.RubyInstanceConfig;

public class JRubyContextWrapper implements TruffleObject {
public class InstanceConfigWrapper implements TruffleObject {

private final Ruby ruby;
private final RubyInstanceConfig instanceConfig;

public JRubyContextWrapper(Ruby ruby) {
this.ruby = ruby;
public InstanceConfigWrapper(RubyInstanceConfig instanceConfig) {
this.instanceConfig = instanceConfig;
}

public Ruby getRuby() {
return ruby;
public RubyInstanceConfig getInstanceConfig() {
return instanceConfig;
}

@Override
Expand Down

0 comments on commit 398462f

Please sign in to comment.