mirror of
https://github.com/fluencelabs/parity-wasm
synced 2025-06-23 03:31:56 +00:00
Fix native_env_global.
This commit is contained in:
@ -1,16 +1,17 @@
|
||||
|
||||
use std::sync::Arc;
|
||||
use std::sync::{Arc, Weak};
|
||||
use std::collections::HashMap;
|
||||
use std::borrow::Cow;
|
||||
use parking_lot::RwLock;
|
||||
use elements::{Internal, ValueType};
|
||||
use interpreter::Error;
|
||||
use interpreter::module::{ModuleInstanceInterface, ExecutionParams, ItemIndex,
|
||||
use interpreter::module::{ModuleInstance, ModuleInstanceInterface, ExecutionParams, ItemIndex,
|
||||
CallerContext, ExportEntryType, InternalFunctionReference, InternalFunction, FunctionSignature};
|
||||
use interpreter::memory::MemoryInstance;
|
||||
use interpreter::table::TableInstance;
|
||||
use interpreter::value::RuntimeValue;
|
||||
use interpreter::variable::{VariableInstance, VariableType};
|
||||
use builder::module;
|
||||
|
||||
/// Min index of native function.
|
||||
pub const NATIVE_INDEX_FUNC_MIN: u32 = 10001;
|
||||
@ -284,6 +285,12 @@ pub fn native_module<'a, E: UserFunctionExecutor + 'a>(base: Arc<ModuleInstanceI
|
||||
Ok(Arc::new(NativeModuleInstance::new(base, user_elements)?))
|
||||
}
|
||||
|
||||
pub fn simple_native_module<'a, E: UserFunctionExecutor + 'a>(user_elements: UserDefinedElements<E>) -> Result<Arc<ModuleInstanceInterface + 'a>, Error> {
|
||||
let mut instance = ModuleInstance::new(Weak::default(), "env".into(), module().build())?;
|
||||
instance.instantiate(None)?;
|
||||
native_module(Arc::new(instance), user_elements)
|
||||
}
|
||||
|
||||
impl<'a> PartialEq for UserFunctionDescriptor {
|
||||
fn eq(&self, other: &Self) -> bool {
|
||||
self.params() == other.params()
|
||||
|
@ -7,7 +7,7 @@ use builder::module;
|
||||
use elements::{ExportEntry, Internal, ImportEntry, External, GlobalEntry, GlobalType,
|
||||
InitExpr, ValueType, BlockType, Opcodes, Opcode, FunctionType, TableType, MemoryType};
|
||||
use interpreter::{Error, UserError, ProgramInstance};
|
||||
use interpreter::native::{native_module, UserDefinedElements, UserFunctionExecutor, UserFunctionDescriptor};
|
||||
use interpreter::native::{simple_native_module, native_module, UserDefinedElements, UserFunctionExecutor, UserFunctionDescriptor};
|
||||
use interpreter::memory::MemoryInstance;
|
||||
use interpreter::module::{ModuleInstance, ModuleInstanceInterface, CallerContext, ItemIndex, ExecutionParams, ExportEntryType, FunctionSignature};
|
||||
use interpreter::validator::{FunctionValidationContext, Validator};
|
||||
@ -334,9 +334,8 @@ fn native_env_global() {
|
||||
}
|
||||
|
||||
let module_constructor = |elements: UserDefinedElements<DummyExecutor>| {
|
||||
let program = ProgramInstance::with_emscripten_env(Default::default()).unwrap();
|
||||
let env_instance = program.module("env").unwrap();
|
||||
let native_env_instance = native_module(env_instance.clone(), elements).unwrap();
|
||||
let program = ProgramInstance::new();
|
||||
let native_env_instance = simple_native_module(elements).unwrap();
|
||||
let params = ExecutionParams::with_external("env".into(), native_env_instance);
|
||||
|
||||
let module = module()
|
||||
|
Reference in New Issue
Block a user