Skip to content

Commit e8e0641

Browse files
committed
CompileFunctionInContext() should create the function in the right context.
1 parent c173cf9 commit e8e0641

File tree

1 file changed

+9
-3
lines changed
  • graal-nodejs/mx.graal-nodejs/com.oracle.truffle.trufflenode/src/com/oracle/truffle/trufflenode

1 file changed

+9
-3
lines changed

graal-nodejs/mx.graal-nodejs/com.oracle.truffle.trufflenode/src/com/oracle/truffle/trufflenode/GraalJSAccess.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2186,9 +2186,15 @@ public Object scriptCompilerCompileFunctionInContext(Object context, String sour
21862186
suffix,
21872187
String.valueOf(isStrict)
21882188
};
2189-
CallTarget target = realm.getEnv().parsePublic(source, args);
2190-
DynamicObject script = (DynamicObject) target.call();
2191-
function = anyExtension ? JSFunction.call(script, Undefined.instance, extensions) : script;
2189+
JSRealm mainRealm = JSRealm.getMain(null);
2190+
JSRealm prevRealm = mainRealm.enterRealm(null, realm);
2191+
try {
2192+
CallTarget target = realm.getEnv().parsePublic(source, args);
2193+
DynamicObject script = (DynamicObject) target.call();
2194+
function = anyExtension ? JSFunction.call(script, Undefined.instance, extensions) : script;
2195+
} finally {
2196+
mainRealm.leaveRealm(null, prevRealm);
2197+
}
21922198
}
21932199
assert JSFunction.isJSFunction(function);
21942200

0 commit comments

Comments
 (0)