Skip to content

Commit 361ebca

Browse files
committed
[wasm-split] Set import namespace only when given in multi-split
Currently, in the case of two-way split, we set `config.importNamespace` only when `--import-namespace` option is given, and otherwise just use the default namespace "primary". But in the case of multi split, we set it regardless of whether the option is given, resulting in the "" namespace when no option is given. The default import namespace for multi-split was "" when the multi-split function was first added (#6943), so I'm not sure whether this difference was intentional. In case it wasn't, I think it makes sense to be consistent between two-way split and multi-split. So this in effect changes the import namespace in multi split tests from "" to `primary`. This also factors out the part that moves `WasmSplitOptions` into `Config` to a function.
1 parent dd4dc47 commit 361ebca

3 files changed

Lines changed: 23 additions & 18 deletions

File tree

src/tools/wasm-split/split-options.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ WasmSplitOptions::WasmSplitOptions()
231231
"module into the secondary module. In instrument mode, refers to the "
232232
"namespace from which to import the secondary memory, if any.",
233233
WasmSplitOption,
234-
{Mode::Split, Mode::Instrument, Mode::MultiSplit},
234+
{Mode::Split, Mode::MultiSplit, Mode::Instrument},
235235
Options::Arguments::One,
236236
[&](Options* o, const std::string& argument) {
237237
importNamespace = argument;

src/tools/wasm-split/wasm-split.cpp

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,16 @@ void writePlaceholderMap(
222222
}
223223
}
224224

225+
void setCommonSplitConfigs(ModuleSplitting::Config& config,
226+
const WasmSplitOptions& options) {
227+
config.usePlaceholders = options.usePlaceholders;
228+
config.minimizeNewExportNames = !options.passOptions.debugInfo;
229+
if (options.importNamespace.size()) {
230+
config.importNamespace = options.importNamespace;
231+
}
232+
// TODO Add more configs here
233+
}
234+
225235
void splitModule(const WasmSplitOptions& options) {
226236
Module wasm;
227237
parseInput(wasm, options);
@@ -329,18 +339,14 @@ void splitModule(const WasmSplitOptions& options) {
329339

330340
// Actually perform the splitting
331341
ModuleSplitting::Config config;
342+
setCommonSplitConfigs(config, options);
332343
config.secondaryFuncs.push_back(std::move(splitFuncs));
333-
if (options.importNamespace.size()) {
334-
config.importNamespace = options.importNamespace;
335-
}
336344
if (options.placeholderNamespace.size()) {
337345
config.placeholderNamespace = options.placeholderNamespace;
338346
}
339347
if (options.exportPrefix.size()) {
340348
config.newExportPrefix = options.exportPrefix;
341349
}
342-
config.usePlaceholders = options.usePlaceholders;
343-
config.minimizeNewExportNames = !options.passOptions.debugInfo;
344350
config.jspi = options.jspi;
345351
auto splitResults = ModuleSplitting::splitFunctions(wasm, config);
346352
auto& secondary = *splitResults.secondaries.begin();
@@ -398,6 +404,8 @@ void multiSplitModule(const WasmSplitOptions& options) {
398404
std::unordered_map<Name, Name> funcModules;
399405

400406
ModuleSplitting::Config config;
407+
setCommonSplitConfigs(config, options);
408+
401409
std::string line;
402410
bool newSection = true;
403411
std::vector<Name> moduleNames;
@@ -436,9 +444,6 @@ void multiSplitModule(const WasmSplitOptions& options) {
436444
}
437445
}
438446

439-
config.usePlaceholders = options.usePlaceholders;
440-
config.importNamespace = options.importNamespace;
441-
config.minimizeNewExportNames = !options.passOptions.debugInfo;
442447
if (options.emitModuleNames && !wasm.name) {
443448
wasm.name = Path::getBaseName(options.output);
444449
}

test/lit/wasm-split/multi-split.wast

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@
3434

3535
;; MOD1: (type $2 (func (result i32)))
3636

37-
;; MOD1: (import "" "table" (table $timport$0 3 funcref))
37+
;; MOD1: (import "primary" "table" (table $timport$0 3 funcref))
3838

39-
;; MOD1: (import "" "trampoline_B" (func $trampoline_B (result i64)))
39+
;; MOD1: (import "primary" "trampoline_B" (func $trampoline_B (result i64)))
4040

41-
;; MOD1: (import "" "trampoline_C" (func $trampoline_C (result f32)))
41+
;; MOD1: (import "primary" "trampoline_C" (func $trampoline_C (result f32)))
4242

4343
;; MOD1: (elem $0 (i32.const 2) $A)
4444

@@ -117,11 +117,11 @@
117117

118118
;; MOD2: (type $2 (func (result i64)))
119119

120-
;; MOD2: (import "" "table" (table $timport$0 3 funcref))
120+
;; MOD2: (import "primary" "table" (table $timport$0 3 funcref))
121121

122-
;; MOD2: (import "" "trampoline_A" (func $trampoline_A (result i32)))
122+
;; MOD2: (import "primary" "trampoline_A" (func $trampoline_A (result i32)))
123123

124-
;; MOD2: (import "" "trampoline_C" (func $trampoline_C (result f32)))
124+
;; MOD2: (import "primary" "trampoline_C" (func $trampoline_C (result f32)))
125125

126126
;; MOD2: (elem $0 (i32.const 0) $B)
127127

@@ -200,11 +200,11 @@
200200

201201
;; MOD3: (type $2 (func (result f32)))
202202

203-
;; MOD3: (import "" "table" (table $timport$0 3 funcref))
203+
;; MOD3: (import "primary" "table" (table $timport$0 3 funcref))
204204

205-
;; MOD3: (import "" "trampoline_A" (func $trampoline_A (result i32)))
205+
;; MOD3: (import "primary" "trampoline_A" (func $trampoline_A (result i32)))
206206

207-
;; MOD3: (import "" "trampoline_B" (func $trampoline_B (result i64)))
207+
;; MOD3: (import "primary" "trampoline_B" (func $trampoline_B (result i64)))
208208

209209
;; MOD3: (elem $0 (i32.const 1) $C)
210210

0 commit comments

Comments
 (0)