summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/passes/MinifyImportsAndExports.cpp18
-rw-r--r--src/shared-constants.h2
-rw-r--r--src/wasm/wasm.cpp2
-rw-r--r--test/passes/minify-imports-and-exports_all-features.txt23
-rw-r--r--test/passes/minify-imports-and-exports_all-features.wast2
5 files changed, 32 insertions, 15 deletions
diff --git a/src/passes/MinifyImportsAndExports.cpp b/src/passes/MinifyImportsAndExports.cpp
index d625f7543..0edc85dc7 100644
--- a/src/passes/MinifyImportsAndExports.cpp
+++ b/src/passes/MinifyImportsAndExports.cpp
@@ -143,17 +143,25 @@ private:
MinifiedNames names;
size_t soFar = 0;
std::map<Name, Name> oldToNew;
+ std::map<Name, Name> newToOld;
auto process = [&](Name& name) {
// do not minifiy special imports, they must always exist
if (name == MEMORY_BASE || name == TABLE_BASE || name == STACK_POINTER) {
return;
}
- auto newName = names.getName(soFar++);
- oldToNew[newName] = name;
- name = newName;
+ auto iter = oldToNew.find(name);
+ if (iter == oldToNew.end()) {
+ auto newName = names.getName(soFar++);
+ oldToNew[name] = newName;
+ newToOld[newName] = name;
+ name = newName;
+ } else {
+ name = iter->second;
+ }
};
auto processImport = [&](Importable* curr) {
- if (curr->module == ENV) {
+ if (curr->module == ENV || curr->module == WASI ||
+ curr->module == WASI_UNSTABLE) {
process(curr->base);
}
};
@@ -169,7 +177,7 @@ private:
}
module->updateMaps();
// Emit the mapping.
- for (auto& pair : oldToNew) {
+ for (auto& pair : newToOld) {
std::cout << pair.second.str << " => " << pair.first.str << '\n';
}
}
diff --git a/src/shared-constants.h b/src/shared-constants.h
index 4f64f1cf6..929b173cb 100644
--- a/src/shared-constants.h
+++ b/src/shared-constants.h
@@ -65,6 +65,8 @@ extern Name EXIT;
extern Name SHARED;
extern Name EVENT;
extern Name ATTR;
+extern Name WASI;
+extern Name WASI_UNSTABLE;
} // namespace wasm
diff --git a/src/wasm/wasm.cpp b/src/wasm/wasm.cpp
index b13797c89..1a47327c1 100644
--- a/src/wasm/wasm.cpp
+++ b/src/wasm/wasm.cpp
@@ -88,6 +88,8 @@ Name EXIT("exit");
Name SHARED("shared");
Name EVENT("event");
Name ATTR("attr");
+Name WASI("wasi");
+Name WASI_UNSTABLE("wasi_unstable");
// Expressions
diff --git a/test/passes/minify-imports-and-exports_all-features.txt b/test/passes/minify-imports-and-exports_all-features.txt
index 78852dfa8..b3f8b5b8a 100644
--- a/test/passes/minify-imports-and-exports_all-features.txt
+++ b/test/passes/minify-imports-and-exports_all-features.txt
@@ -942,7 +942,7 @@ longname3488 => J9
longname1490 => JA
longname4946 => JAa
longname1544 => JB
-eventname1 => JBa
+longname3-only => JBa
longname1598 => JC
longname1652 => JD
longname1706 => JE
@@ -1035,7 +1035,7 @@ longname3489 => K9
longname1491 => KA
longname4947 => KAa
longname1545 => KB
-exp1 => KBa
+eventname1 => KBa
longname1599 => KC
longname1653 => KD
longname1707 => KE
@@ -1128,7 +1128,7 @@ longname3490 => L9
longname1492 => LA
longname4948 => LAa
longname1546 => LB
-exp2 => LBa
+exp1 => LBa
longname1600 => LC
longname1654 => LD
longname1708 => LE
@@ -1221,7 +1221,7 @@ longname3491 => M9
longname1493 => MA
longname4949 => MAa
longname1547 => MB
-event1 => MBa
+exp2 => MBa
longname1601 => MC
longname1655 => MD
longname1709 => ME
@@ -1314,6 +1314,7 @@ longname3492 => N9
longname1494 => NA
longname4950 => NAa
longname1548 => NB
+event1 => NBa
longname1602 => NC
longname1656 => ND
longname1710 => NE
@@ -10009,15 +10010,17 @@ longname4882 => zza
(import "env" "HBa" (func $internal4998))
(import "env" "IBa" (func $internal4999))
(import "other" "anything" (func $internalInfinity))
- (import "env" "JBa" (event $eventname1 (attr 0) (param i32)))
+ (import "wasi_unstable" "d" (func $internal3_wasi))
+ (import "wasi_unstable" "JBa" (func $internal3_wasi_only))
+ (import "env" "KBa" (event $eventname1 (attr 0) (param i32)))
(event $event1 (attr 0) (param i32 i32))
- (export "KBa" (func $foo1))
- (export "LBa" (func $foo2))
- (export "MBa" (event $event1))
- (func $foo1 (; 5000 ;) (type $FUNCSIG$v)
+ (export "LBa" (func $foo1))
+ (export "MBa" (func $foo2))
+ (export "NBa" (event $event1))
+ (func $foo1 (; 5002 ;) (type $FUNCSIG$v)
(nop)
)
- (func $foo2 (; 5001 ;) (type $FUNCSIG$v)
+ (func $foo2 (; 5003 ;) (type $FUNCSIG$v)
(nop)
)
)
diff --git a/test/passes/minify-imports-and-exports_all-features.wast b/test/passes/minify-imports-and-exports_all-features.wast
index 2db91c2ad..19fdc4d02 100644
--- a/test/passes/minify-imports-and-exports_all-features.wast
+++ b/test/passes/minify-imports-and-exports_all-features.wast
@@ -5003,6 +5003,8 @@
(import "env" "__table_base" (global i32))
(import "other" "anything" (func $internalInfinity))
(import "env" "eventname1" (event $eventname1 (attr 0) (param i32)))
+ (import "wasi_unstable" "longname3" (func $internal3_wasi)) ;; overlapping base
+ (import "wasi_unstable" "longname3-only" (func $internal3_wasi_only))
(export "exp1" (func $foo1))
(export "exp2" (func $foo2))
(func $foo1)