LibWasm: Execute the start function, if one exists
This commit is contained in:
parent
d9ed3b504e
commit
3402381d7a
Notes:
sideshowbarker
2024-07-18 17:54:23 +09:00
Author: https://github.com/alimpfard Commit: https://github.com/SerenityOS/serenity/commit/3402381d7ab Pull-request: https://github.com/SerenityOS/serenity/pull/7097 Reviewed-by: https://github.com/Dexesttp
1 changed files with 8 additions and 3 deletions
|
@ -170,9 +170,14 @@ InstantiationResult AbstractMachine::instantiate(const Module& module, Vector<Ex
|
|||
}
|
||||
});
|
||||
|
||||
module.for_each_section_of_type<StartSection>([&](auto&) {
|
||||
instantiation_result = InstantiationError { "Start section not yet implemented" };
|
||||
// FIXME: Invoke the start function.
|
||||
module.for_each_section_of_type<StartSection>([&](const StartSection& section) {
|
||||
auto& functions = m_module_instance.functions();
|
||||
auto index = section.function().index();
|
||||
if (functions.size() <= index.value()) {
|
||||
instantiation_result = InstantiationError { String::formatted("Start section function referenced invalid index {} of max {} entries", index.value(), functions.size()) };
|
||||
return;
|
||||
}
|
||||
invoke(functions[index.value()], {});
|
||||
});
|
||||
|
||||
return instantiation_result.value_or({});
|
||||
|
|
Loading…
Add table
Reference in a new issue