-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Open
Labels
arch-wasm32-bit and 64-bit WebAssembly32-bit and 64-bit WebAssemblyenhancementSolving this issue will likely involve adding new logic or components to the codebase.Solving this issue will likely involve adding new logic or components to the codebase.linkingoptimization
Milestone
Description
zig version: 0.14.0-dev.2790+d4fe4698d
Observe:
var foo: [1000]u8 = undefined;
pub fn main() void {
foo[100] = 1;
}zig build-exe test.zig -target wasm32-wasi -fno-llvm -fno-lld -OReleaseFast
Then look at test.wasm with wasm-objdump -x. There are pages and pages of aaaaaaa. This is OK for debug mode but for release modes, it should lower these as zeroes so that the binary can be smaller.
...
- 10006a0: aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa ................
- 10006b0: aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa ................
- 10006c0: aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa ................
- 10006d0: aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa ................
- 10006e0: aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa ................
- 10006f0: aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa ................
- 1000700: aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa ................
- 1000710: aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa ................
- 1000720: aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa ................
- 1000730: aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa ................
- 1000740: aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa ................
- 1000750: aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa ................
- 1000760: aaaa aa ...
Another thing to look into: even for debug builds, emit these the same as zero data, and use runtime memory initialization to memset the undef bytes to aa.
Metadata
Metadata
Assignees
Labels
arch-wasm32-bit and 64-bit WebAssembly32-bit and 64-bit WebAssemblyenhancementSolving this issue will likely involve adding new logic or components to the codebase.Solving this issue will likely involve adding new logic or components to the codebase.linkingoptimization