@@ -214,7 +214,7 @@ private static final class ThreadLocalState {
214
214
215
215
@ CompilationFinal public LanguageOptions options ;
216
216
@ CompilationFinal private String rubyHome ;
217
- @ CompilationFinal private TruffleFile rubyHomeTruffleFile ;
217
+ private TruffleFile rubyHomeTruffleFile ;
218
218
219
219
@ CompilationFinal private AllocationReporter allocationReporter ;
220
220
@ CompilationFinal public CoverageManager coverageManager ;
@@ -421,6 +421,15 @@ public RubyContext createContext(Env env) {
421
421
}
422
422
}
423
423
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
+
424
433
LOGGER .fine ("createContext()" );
425
434
Metrics .printTime ("before-create-context" );
426
435
// 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) {
677
686
678
687
private void setRubyHome (Env env , String home ) {
679
688
rubyHome = home ;
689
+ setRubyHomeTruffleFile (env , home );
690
+ }
691
+
692
+ private void setRubyHomeTruffleFile (Env env , String home ) {
680
693
rubyHomeTruffleFile = home == null ? null : env .getInternalTruffleFile (rubyHome );
681
694
}
682
695
0 commit comments