1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use crate::utils::*;
use walrus::*;
pub fn shrink(m: &mut Module) {
if is_motoko_canister(m) {
let ids = get_motoko_wasm_data_sections(m);
for (id, mut module) in ids.into_iter() {
shrink(&mut module);
let blob = encode_module_as_data_section(module);
let original_len = m.data.get(id).value.len();
if blob.len() < original_len {
m.data.get_mut(id).value = blob;
}
}
}
let to_remove: Vec<_> = m
.customs
.iter()
.filter(|(_, section)| !section.name().starts_with("icp:"))
.map(|(id, _)| id)
.collect();
for s in to_remove {
m.customs.delete(s);
}
passes::gc::run(m);
}