Skip to content

Commit 0ffae37

Browse files
committed
[GR-52252] Make it easier to disable async parsing for all inputs
PullRequest: graal/17057
2 parents c02fc6e + 9f7cf4b commit 0ffae37

File tree

2 files changed

+4
-3
lines changed

2 files changed

+4
-3
lines changed

wasm/src/org.graalvm.wasm/src/org/graalvm/wasm/WasmInstantiator.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,15 +103,16 @@ public WasmInstance createInstance(WasmContext context, WasmModule module) {
103103
instance.createLinkActions();
104104
int binarySize = instance.module().bytecodeLength();
105105
final int asyncParsingBinarySize = WasmOptions.AsyncParsingBinarySize.getValue(context.environment().getOptions());
106-
if (binarySize < asyncParsingBinarySize) {
106+
if (binarySize < asyncParsingBinarySize || !context.environment().isCreateThreadAllowed()) {
107107
instantiateCodeEntries(context, instance);
108108
} else {
109109
final Runnable parsing = () -> instantiateCodeEntries(context, instance);
110110
final String name = "wasm-parsing-thread(" + instance.name() + ")";
111111
final int requestedSize = WasmOptions.AsyncParsingStackSize.getValue(context.environment().getOptions()) * 1000;
112112
final int defaultSize = Math.max(MIN_DEFAULT_STACK_SIZE, Math.min(2 * binarySize, MAX_DEFAULT_ASYNC_STACK_SIZE));
113113
final int stackSize = requestedSize != 0 ? requestedSize : defaultSize;
114-
final Thread parsingThread = new Thread(null, parsing, name, stackSize);
114+
final Thread parsingThread = context.environment().newTruffleThreadBuilder(parsing).stackSize(stackSize).build();
115+
parsingThread.setName(name);
115116
final ParsingExceptionHandler handler = new ParsingExceptionHandler();
116117
parsingThread.setUncaughtExceptionHandler(handler);
117118
parsingThread.start();

wasm/src/org.graalvm.wasm/src/org/graalvm/wasm/WasmOptions.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public class WasmOptions {
5151
@Option(help = "A comma-separated list of builtin modules to use.", category = OptionCategory.USER, stability = OptionStability.STABLE, usageSyntax = "[<linkingName>:]<builtinModuleName>,[<linkingName>:]<builtinModuleName>,...")//
5252
public static final OptionKey<String> Builtins = new OptionKey<>("");
5353

54-
@Option(help = "The minimal binary size for which to use async parsing.", category = OptionCategory.USER, stability = OptionStability.STABLE, usageSyntax = "[0, inf)")//
54+
@Option(help = "The minimal binary size for which to use async parsing. If threads are not supported, async parsing will not be used.", category = OptionCategory.USER, stability = OptionStability.STABLE, usageSyntax = "[0, inf)")//
5555
public static final OptionKey<Integer> AsyncParsingBinarySize = new OptionKey<>(100_000);
5656

5757
@Option(help = "The stack size in kilobytes to use during async parsing, or zero to use defaults.", category = OptionCategory.USER, stability = OptionStability.STABLE, usageSyntax = "[0, inf)")//

0 commit comments

Comments
 (0)