mirror of
https://github.com/fluencelabs/wasmer
synced 2025-06-26 07:01:33 +00:00
Fix emscripten globals
This commit is contained in:
@ -112,12 +112,12 @@ macro_rules! mock_external {
|
|||||||
}};
|
}};
|
||||||
}
|
}
|
||||||
|
|
||||||
struct EmscriptenGlobals {
|
pub struct EmscriptenGlobals {
|
||||||
pub data: Vec<(String, LocalGlobal, GlobalDesc)>,
|
pub data: Vec<(String, LocalGlobal, GlobalDesc)>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl EmscriptenGlobals {
|
impl EmscriptenGlobals {
|
||||||
fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
let mut data = Vec::new();
|
let mut data = Vec::new();
|
||||||
|
|
||||||
data.push((
|
data.push((
|
||||||
@ -156,13 +156,11 @@ impl EmscriptenGlobals {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn generate_emscripten_env(globals: &EmscriptenGlobals) -> Imports {
|
||||||
pub fn generate_emscripten_env() -> Imports {
|
|
||||||
let mut imports = Imports::new();
|
let mut imports = Imports::new();
|
||||||
let em_globals = EmscriptenGlobals::new();
|
|
||||||
|
|
||||||
// Add globals.
|
// Add globals.
|
||||||
for (ref name, ref global, ref desc) in em_globals.data {
|
for (name, global, desc) in &globals.data {
|
||||||
let export = Export::Global {
|
let export = Export::Global {
|
||||||
local: unsafe { std::mem::transmute::<&LocalGlobal, *mut LocalGlobal>(global) },
|
local: unsafe { std::mem::transmute::<&LocalGlobal, *mut LocalGlobal>(global) },
|
||||||
global: desc.clone(),
|
global: desc.clone(),
|
||||||
|
@ -81,8 +81,10 @@ fn execute_wasm(options: &Run) -> Result<(), String> {
|
|||||||
webassembly::InstanceABI::None
|
webassembly::InstanceABI::None
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let emscripten_globals = wasmer_emscripten::EmscriptenGlobals::new();
|
||||||
|
|
||||||
let import_object = if abi == webassembly::InstanceABI::Emscripten {
|
let import_object = if abi == webassembly::InstanceABI::Emscripten {
|
||||||
wasmer_emscripten::generate_emscripten_env()
|
wasmer_emscripten::generate_emscripten_env(&emscripten_globals)
|
||||||
} else {
|
} else {
|
||||||
wasmer_runtime::import::Imports::new()
|
wasmer_runtime::import::Imports::new()
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user