mirror of
https://github.com/fluencelabs/wasmer
synced 2025-03-16 16:20:49 +00:00
Emit a Return opcode if the last one is not return.
This commit is contained in:
parent
8d8db4aa09
commit
1526d35872
@ -1,7 +1,7 @@
|
||||
use crate::codegen::{CodegenError, FunctionCodeGenerator, ModuleCodeGenerator};
|
||||
use std::sync::Arc;
|
||||
use wasmer_runtime_core::{
|
||||
backend::Backend,
|
||||
backend::{Backend, ProtectedCaller},
|
||||
module::{
|
||||
DataInitializer, ExportIndex, ImportName, ModuleInfo, StringTable, StringTableBuilder,
|
||||
TableInitializer,
|
||||
@ -38,7 +38,11 @@ impl From<CodegenError> for LoadError {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn read_module<MCG: ModuleCodeGenerator<FCG>, FCG: FunctionCodeGenerator>(
|
||||
pub fn read_module<
|
||||
MCG: ModuleCodeGenerator<FCG, PC>,
|
||||
FCG: FunctionCodeGenerator,
|
||||
PC: ProtectedCaller,
|
||||
>(
|
||||
wasm: &[u8],
|
||||
backend: Backend,
|
||||
mcg: &mut MCG,
|
||||
@ -72,7 +76,6 @@ pub fn read_module<MCG: ModuleCodeGenerator<FCG>, FCG: FunctionCodeGenerator>(
|
||||
|
||||
loop {
|
||||
if reader.eof() {
|
||||
mcg.finalize()?;
|
||||
return Ok(info);
|
||||
}
|
||||
|
||||
@ -285,10 +288,18 @@ pub fn read_module<MCG: ModuleCodeGenerator<FCG>, FCG: FunctionCodeGenerator>(
|
||||
fcg.feed_local(ty, count as usize)?;
|
||||
}
|
||||
fcg.begin_body()?;
|
||||
let mut last_is_return = false;
|
||||
for op in item.get_operators_reader()? {
|
||||
let op = op?;
|
||||
last_is_return = match op {
|
||||
Operator::Return => true,
|
||||
_ => false,
|
||||
};
|
||||
fcg.feed_opcode(op)?;
|
||||
}
|
||||
if !last_is_return {
|
||||
fcg.feed_opcode(Operator::Return)?;
|
||||
}
|
||||
fcg.finalize()?;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user