Skip to content

Commit 67f7cb1

Browse files
committed
Materialization can be invoked from a thread without an associated language instance.
1 parent 0de0ff8 commit 67f7cb1

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

graal-js/src/com.oracle.truffle.js/src/com/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
import com.oracle.truffle.api.library.CachedLibrary;
6060
import com.oracle.truffle.api.object.DynamicObject;
6161
import com.oracle.truffle.api.profiles.BranchProfile;
62+
import com.oracle.truffle.js.lang.JavaScriptLanguage;
6263
import com.oracle.truffle.js.nodes.JavaScriptNode;
6364
import com.oracle.truffle.js.nodes.access.JSConstantNode;
6465
import com.oracle.truffle.js.nodes.access.JSConstantNode.JSConstantStringNode;
@@ -181,11 +182,27 @@ public InstrumentableNode materializeInstrumentableNodes(Set<Class<? extends Tag
181182
}
182183
}
183184

185+
private JavaScriptLanguage getLanguageSafe() {
186+
JavaScriptLanguage language = null;
187+
try {
188+
language = getRootNode().getLanguage(JavaScriptLanguage.class);
189+
if (language == null) {
190+
language = getLanguage();
191+
}
192+
} finally {
193+
return language;
194+
}
195+
}
196+
184197
private Object[] parseMaterializationInfo() {
185198
String literal;
186199
boolean identity;
187200
boolean typeofAsLeftOperand;
188-
JSContext context = getLanguage().getJSContext();
201+
JavaScriptLanguage language = getLanguageSafe();
202+
if (language == null) {
203+
return null;
204+
}
205+
JSContext context = language.getJSContext();
189206
try {
190207
Expression expression = context.getEvaluator().parseExpression(context, getSourceSection().getCharacters().toString());
191208
if (expression instanceof BinaryNode) {

0 commit comments

Comments
 (0)