mirror of
https://github.com/pezkuwichain/wasm-instrument.git
synced 2026-07-24 09:55:42 +00:00
factored out few expects
This commit is contained in:
+24
-23
@@ -62,12 +62,14 @@ pub fn optimize(
|
|||||||
|
|
||||||
{
|
{
|
||||||
loop {
|
loop {
|
||||||
if type_section(module).expect("Functons section to exist").types_mut().len() == index { break; }
|
if type_section(module).map(|section| section.types_mut().len()).unwrap_or(0) == index { break; }
|
||||||
|
|
||||||
if stay.contains(&Symbol::Type(old_index)) {
|
if stay.contains(&Symbol::Type(old_index)) {
|
||||||
index += 1;
|
index += 1;
|
||||||
} else {
|
} else {
|
||||||
type_section(module).expect("Code section to exist").types_mut().remove(index);
|
type_section(module)
|
||||||
|
.expect("If type section does not exists, the loop will break at the beginning of first iteration")
|
||||||
|
.types_mut().remove(index);
|
||||||
eliminated_types.push(old_index);
|
eliminated_types.push(old_index);
|
||||||
trace!("Eliminated type({})", old_index);
|
trace!("Eliminated type({})", old_index);
|
||||||
}
|
}
|
||||||
@@ -78,11 +80,10 @@ pub fn optimize(
|
|||||||
// Second, iterate through imports
|
// Second, iterate through imports
|
||||||
let mut top_funcs = 0;
|
let mut top_funcs = 0;
|
||||||
let mut top_globals = 0;
|
let mut top_globals = 0;
|
||||||
|
index = 0;
|
||||||
|
old_index = 0;
|
||||||
|
|
||||||
{
|
if let Some(imports) = import_section(module) {
|
||||||
index = 0;
|
|
||||||
old_index = 0;
|
|
||||||
let imports = import_section(module).expect("Import section to exist");
|
|
||||||
loop {
|
loop {
|
||||||
let mut remove = false;
|
let mut remove = false;
|
||||||
match imports.entries()[index].external() {
|
match imports.entries()[index].external() {
|
||||||
@@ -121,9 +122,7 @@ pub fn optimize(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Third, iterate through globals
|
// Third, iterate through globals
|
||||||
{
|
if let Some(globals) = global_section(module) {
|
||||||
let globals = global_section(module).expect("Global section to exist");
|
|
||||||
|
|
||||||
index = 0;
|
index = 0;
|
||||||
old_index = 0;
|
old_index = 0;
|
||||||
|
|
||||||
@@ -141,26 +140,28 @@ pub fn optimize(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Forth, delete orphaned functions
|
// Forth, delete orphaned functions
|
||||||
index = 0;
|
if functions_section(module).is_some() && code_section(module).is_some() {
|
||||||
old_index = 0;
|
index = 0;
|
||||||
|
old_index = 0;
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
if functions_section(module).expect("Functons section to exist").entries_mut().len() == index { break; }
|
if functions_section(module).expect("Functons section to exist").entries_mut().len() == index { break; }
|
||||||
if stay.contains(&Symbol::Function(old_index)) {
|
if stay.contains(&Symbol::Function(old_index)) {
|
||||||
index += 1;
|
index += 1;
|
||||||
} else {
|
} else {
|
||||||
functions_section(module).expect("Functons section to exist").entries_mut().remove(index);
|
functions_section(module).expect("Functons section to exist").entries_mut().remove(index);
|
||||||
code_section(module).expect("Code section to exist").bodies_mut().remove(index);
|
code_section(module).expect("Code section to exist").bodies_mut().remove(index);
|
||||||
|
|
||||||
eliminated_funcs.push(top_funcs + old_index);
|
eliminated_funcs.push(top_funcs + old_index);
|
||||||
trace!("Eliminated function({})", top_funcs + old_index);
|
trace!("Eliminated function({})", top_funcs + old_index);
|
||||||
|
}
|
||||||
|
old_index += 1;
|
||||||
}
|
}
|
||||||
old_index += 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fivth, eliminate unused exports
|
// Fifth, eliminate unused exports
|
||||||
{
|
{
|
||||||
let exports = export_section(module).expect("Export section to exist");
|
let exports = export_section(module).ok_or(Error::NoExportSection)?;
|
||||||
|
|
||||||
index = 0;
|
index = 0;
|
||||||
old_index = 0;
|
old_index = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user