diff --git a/src/tools/wasm-split/split-options.cpp b/src/tools/wasm-split/split-options.cpp index 82a73551fd1..aa2181d9f1c 100644 --- a/src/tools/wasm-split/split-options.cpp +++ b/src/tools/wasm-split/split-options.cpp @@ -231,7 +231,7 @@ WasmSplitOptions::WasmSplitOptions() "module into the secondary module. In instrument mode, refers to the " "namespace from which to import the secondary memory, if any.", WasmSplitOption, - {Mode::Split, Mode::Instrument, Mode::MultiSplit}, + {Mode::Split, Mode::MultiSplit, Mode::Instrument}, Options::Arguments::One, [&](Options* o, const std::string& argument) { importNamespace = argument; diff --git a/src/tools/wasm-split/wasm-split.cpp b/src/tools/wasm-split/wasm-split.cpp index 1e17b1d5b3a..0d7d67a64f9 100644 --- a/src/tools/wasm-split/wasm-split.cpp +++ b/src/tools/wasm-split/wasm-split.cpp @@ -222,6 +222,16 @@ void writePlaceholderMap( } } +void setCommonSplitConfigs(ModuleSplitting::Config& config, + const WasmSplitOptions& options) { + config.usePlaceholders = options.usePlaceholders; + config.minimizeNewExportNames = !options.passOptions.debugInfo; + if (options.importNamespace.size()) { + config.importNamespace = options.importNamespace; + } + // TODO Add more configs here +} + void splitModule(const WasmSplitOptions& options) { Module wasm; parseInput(wasm, options); @@ -329,18 +339,14 @@ void splitModule(const WasmSplitOptions& options) { // Actually perform the splitting ModuleSplitting::Config config; + setCommonSplitConfigs(config, options); config.secondaryFuncs.push_back(std::move(splitFuncs)); - if (options.importNamespace.size()) { - config.importNamespace = options.importNamespace; - } if (options.placeholderNamespace.size()) { config.placeholderNamespace = options.placeholderNamespace; } if (options.exportPrefix.size()) { config.newExportPrefix = options.exportPrefix; } - config.usePlaceholders = options.usePlaceholders; - config.minimizeNewExportNames = !options.passOptions.debugInfo; config.jspi = options.jspi; auto splitResults = ModuleSplitting::splitFunctions(wasm, config); auto& secondary = *splitResults.secondaries.begin(); @@ -398,6 +404,8 @@ void multiSplitModule(const WasmSplitOptions& options) { std::unordered_map funcModules; ModuleSplitting::Config config; + setCommonSplitConfigs(config, options); + std::string line; bool newSection = true; std::vector moduleNames; @@ -436,9 +444,6 @@ void multiSplitModule(const WasmSplitOptions& options) { } } - config.usePlaceholders = options.usePlaceholders; - config.importNamespace = options.importNamespace; - config.minimizeNewExportNames = !options.passOptions.debugInfo; if (options.emitModuleNames && !wasm.name) { wasm.name = Path::getBaseName(options.output); } diff --git a/test/lit/help/wasm-split.test b/test/lit/help/wasm-split.test index e04fe5aa3c3..c6443b3a104 100644 --- a/test/lit/help/wasm-split.test +++ b/test/lit/help/wasm-split.test @@ -76,7 +76,7 @@ ;; CHECK-NEXT: placeholder indices to the function ;; CHECK-NEXT: names. ;; CHECK-NEXT: -;; CHECK-NEXT: --import-namespace [split, instrument, multi-split] When +;; CHECK-NEXT: --import-namespace [split, multi-split, instrument] When ;; CHECK-NEXT: provided as an option for module ;; CHECK-NEXT: splitting, the namespace from which to ;; CHECK-NEXT: import objects from the primary module diff --git a/test/lit/wasm-split/multi-split-escape-names.wast b/test/lit/wasm-split/multi-split-escape-names.wast index 54e20f18676..51de069fc77 100644 --- a/test/lit/wasm-split/multi-split-escape-names.wast +++ b/test/lit/wasm-split/multi-split-escape-names.wast @@ -22,11 +22,11 @@ ;; MOD1: (type $2 (func (result i32))) - ;; MOD1: (import "" "table" (table $timport$0 3 funcref)) + ;; MOD1: (import "primary" "table" (table $timport$0 3 funcref)) - ;; MOD1: (import "" "trampoline_std::operator<<\\28std::__2::basic_ostream>&\\2c\\20wasm::Module&\\29" (func $trampoline_std::operator<<\28std::__2::basic_ostream>&\2c\20wasm::Module&\29 (result f32))) + ;; MOD1: (import "primary" "trampoline_std::operator<<\\28std::__2::basic_ostream>&\\2c\\20wasm::Module&\\29" (func $trampoline_std::operator<<\28std::__2::basic_ostream>&\2c\20wasm::Module&\29 (result f32))) - ;; MOD1: (import "" "trampoline_wasm::Literal::Literal\\28std::__2::array\\20const&\\29" (func $trampoline_wasm::Literal::Literal\28std::__2::array\20const&\29 (result i64))) + ;; MOD1: (import "primary" "trampoline_wasm::Literal::Literal\\28std::__2::array\\20const&\\29" (func $trampoline_wasm::Literal::Literal\28std::__2::array\20const&\29 (result i64))) ;; MOD1: (elem $0 (i32.const 2) $wasm::Type::getFeatures\28\29\20const) @@ -73,11 +73,11 @@ ;; MOD2: (type $2 (func (result i64))) - ;; MOD2: (import "" "table" (table $timport$0 3 funcref)) + ;; MOD2: (import "primary" "table" (table $timport$0 3 funcref)) - ;; MOD2: (import "" "trampoline_std::operator<<\\28std::__2::basic_ostream>&\\2c\\20wasm::Module&\\29" (func $trampoline_std::operator<<\28std::__2::basic_ostream>&\2c\20wasm::Module&\29 (result f32))) + ;; MOD2: (import "primary" "trampoline_std::operator<<\\28std::__2::basic_ostream>&\\2c\\20wasm::Module&\\29" (func $trampoline_std::operator<<\28std::__2::basic_ostream>&\2c\20wasm::Module&\29 (result f32))) - ;; MOD2: (import "" "trampoline_wasm::Type::getFeatures\\28\\29\\20const" (func $trampoline_wasm::Type::getFeatures\28\29\20const (result i32))) + ;; MOD2: (import "primary" "trampoline_wasm::Type::getFeatures\\28\\29\\20const" (func $trampoline_wasm::Type::getFeatures\28\29\20const (result i32))) ;; MOD2: (elem $0 (i32.const 0) $wasm::Literal::Literal\28std::__2::array\20const&\29) @@ -124,11 +124,11 @@ ;; MOD3: (type $2 (func (result f32))) - ;; MOD3: (import "" "table" (table $timport$0 3 funcref)) + ;; MOD3: (import "primary" "table" (table $timport$0 3 funcref)) - ;; MOD3: (import "" "trampoline_wasm::Literal::Literal\\28std::__2::array\\20const&\\29" (func $trampoline_wasm::Literal::Literal\28std::__2::array\20const&\29 (result i64))) + ;; MOD3: (import "primary" "trampoline_wasm::Literal::Literal\\28std::__2::array\\20const&\\29" (func $trampoline_wasm::Literal::Literal\28std::__2::array\20const&\29 (result i64))) - ;; MOD3: (import "" "trampoline_wasm::Type::getFeatures\\28\\29\\20const" (func $trampoline_wasm::Type::getFeatures\28\29\20const (result i32))) + ;; MOD3: (import "primary" "trampoline_wasm::Type::getFeatures\\28\\29\\20const" (func $trampoline_wasm::Type::getFeatures\28\29\20const (result i32))) ;; MOD3: (elem $0 (i32.const 1) $std::operator<<\28std::__2::basic_ostream>&\2c\20wasm::Module&\29) diff --git a/test/lit/wasm-split/multi-split.wast b/test/lit/wasm-split/multi-split.wast index c8419732da1..54e606db289 100644 --- a/test/lit/wasm-split/multi-split.wast +++ b/test/lit/wasm-split/multi-split.wast @@ -34,11 +34,11 @@ ;; MOD1: (type $2 (func (result i32))) - ;; MOD1: (import "" "table" (table $timport$0 3 funcref)) + ;; MOD1: (import "primary" "table" (table $timport$0 3 funcref)) - ;; MOD1: (import "" "trampoline_B" (func $trampoline_B (result i64))) + ;; MOD1: (import "primary" "trampoline_B" (func $trampoline_B (result i64))) - ;; MOD1: (import "" "trampoline_C" (func $trampoline_C (result f32))) + ;; MOD1: (import "primary" "trampoline_C" (func $trampoline_C (result f32))) ;; MOD1: (elem $0 (i32.const 2) $A) @@ -117,11 +117,11 @@ ;; MOD2: (type $2 (func (result i64))) - ;; MOD2: (import "" "table" (table $timport$0 3 funcref)) + ;; MOD2: (import "primary" "table" (table $timport$0 3 funcref)) - ;; MOD2: (import "" "trampoline_A" (func $trampoline_A (result i32))) + ;; MOD2: (import "primary" "trampoline_A" (func $trampoline_A (result i32))) - ;; MOD2: (import "" "trampoline_C" (func $trampoline_C (result f32))) + ;; MOD2: (import "primary" "trampoline_C" (func $trampoline_C (result f32))) ;; MOD2: (elem $0 (i32.const 0) $B) @@ -200,11 +200,11 @@ ;; MOD3: (type $2 (func (result f32))) - ;; MOD3: (import "" "table" (table $timport$0 3 funcref)) + ;; MOD3: (import "primary" "table" (table $timport$0 3 funcref)) - ;; MOD3: (import "" "trampoline_A" (func $trampoline_A (result i32))) + ;; MOD3: (import "primary" "trampoline_A" (func $trampoline_A (result i32))) - ;; MOD3: (import "" "trampoline_B" (func $trampoline_B (result i64))) + ;; MOD3: (import "primary" "trampoline_B" (func $trampoline_B (result i64))) ;; MOD3: (elem $0 (i32.const 1) $C)