Skip to content

Commit cf919ed

Browse files
committed
[GR-33046] Set rubyHomeTruffleFile every time in createContext()
PullRequest: truffleruby/2882
2 parents 5e1d0f0 + b3476e1 commit cf919ed

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

src/main/java/org/truffleruby/RubyLanguage.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ private static final class ThreadLocalState {
214214

215215
@CompilationFinal public LanguageOptions options;
216216
@CompilationFinal private String rubyHome;
217-
@CompilationFinal private TruffleFile rubyHomeTruffleFile;
217+
private TruffleFile rubyHomeTruffleFile;
218218

219219
@CompilationFinal private AllocationReporter allocationReporter;
220220
@CompilationFinal public CoverageManager coverageManager;
@@ -421,6 +421,15 @@ public RubyContext createContext(Env env) {
421421
}
422422
}
423423

424+
// Set rubyHomeTruffleFile every time, as pre-initialized contexts use a different FileSystem
425+
final String oldHome = this.rubyHome;
426+
final String newHome = findRubyHome();
427+
if (!Objects.equals(newHome, oldHome)) {
428+
throw CompilerDirectives.shouldNotReachHere(
429+
"home changed for the same RubyLanguage instance: " + oldHome + " vs " + newHome);
430+
}
431+
setRubyHomeTruffleFile(env, newHome);
432+
424433
LOGGER.fine("createContext()");
425434
Metrics.printTime("before-create-context");
426435
// TODO CS 3-Dec-16 need to parse RUBYOPT here if it hasn't been already?
@@ -677,6 +686,10 @@ public String getPathRelativeToHome(String path) {
677686

678687
private void setRubyHome(Env env, String home) {
679688
rubyHome = home;
689+
setRubyHomeTruffleFile(env, home);
690+
}
691+
692+
private void setRubyHomeTruffleFile(Env env, String home) {
680693
rubyHomeTruffleFile = home == null ? null : env.getInternalTruffleFile(rubyHome);
681694
}
682695

0 commit comments

Comments
 (0)