This commit is contained in:
Dan Gohman
2018-11-30 15:35:34 -08:00
parent 8dbd4b8d7c
commit e940c97664

View File

@@ -32,16 +32,16 @@ pub fn get_func_name(func_index: FuncIndex) -> ir::ExternalName {
/// argument to `compile_module`. /// argument to `compile_module`.
pub struct ModuleEnvironment<'data, 'module> { pub struct ModuleEnvironment<'data, 'module> {
/// Compilation setting flags. /// Compilation setting flags.
pub isa: &'module isa::TargetIsa, isa: &'module isa::TargetIsa,
/// Module information. /// Module information.
pub module: &'module mut Module, module: &'module mut Module,
/// References to information to be decoded later. /// References to information to be decoded later.
pub lazy: LazyContents<'data>, lazy: LazyContents<'data>,
/// Tunable parameters. /// Tunable parameters.
pub tunables: Tunables, tunables: Tunables,
} }
impl<'data, 'module> ModuleEnvironment<'data, 'module> { impl<'data, 'module> ModuleEnvironment<'data, 'module> {
@@ -59,13 +59,8 @@ impl<'data, 'module> ModuleEnvironment<'data, 'module> {
} }
} }
fn func_env(&self) -> FuncEnvironment {
FuncEnvironment::new(self.isa, &self.module, self.tunables.clone())
}
fn pointer_type(&self) -> ir::Type { fn pointer_type(&self) -> ir::Type {
use cranelift_wasm::FuncEnvironment; self.isa.frontend_config().pointer_type()
self.func_env().pointer_type()
} }
/// Translate the given wasm module data using this environment. This consumes the /// Translate the given wasm module data using this environment. This consumes the
@@ -90,35 +85,31 @@ pub struct FuncEnvironment<'module_environment> {
isa: &'module_environment isa::TargetIsa, isa: &'module_environment isa::TargetIsa,
/// The module-level environment which this function-level environment belongs to. /// The module-level environment which this function-level environment belongs to.
pub module: &'module_environment Module, module: &'module_environment Module,
/// The Cranelift global holding the vmctx address. /// The Cranelift global holding the vmctx address.
pub vmctx: Option<ir::GlobalValue>, vmctx: Option<ir::GlobalValue>,
/// The Cranelift global holding the base address of the memories vector. /// The Cranelift global holding the base address of the memories vector.
pub memories_base: Option<ir::GlobalValue>, memories_base: Option<ir::GlobalValue>,
/// The Cranelift global holding the base address of the tables vector. /// The Cranelift global holding the base address of the tables vector.
pub tables_base: Option<ir::GlobalValue>, tables_base: Option<ir::GlobalValue>,
/// The Cranelift global holding the base address of the globals vector. /// The Cranelift global holding the base address of the globals vector.
pub globals_base: Option<ir::GlobalValue>, globals_base: Option<ir::GlobalValue>,
/// The external function declaration for implementing wasm's `current_memory`. /// The external function declaration for implementing wasm's `current_memory`.
pub current_memory_extfunc: Option<FuncRef>, current_memory_extfunc: Option<FuncRef>,
/// The external function declaration for implementing wasm's `grow_memory`. /// The external function declaration for implementing wasm's `grow_memory`.
pub grow_memory_extfunc: Option<FuncRef>, grow_memory_extfunc: Option<FuncRef>,
/// Tunable parameters.
pub tunables: Tunables,
} }
impl<'module_environment> FuncEnvironment<'module_environment> { impl<'module_environment> FuncEnvironment<'module_environment> {
pub fn new( pub fn new(
isa: &'module_environment isa::TargetIsa, isa: &'module_environment isa::TargetIsa,
module: &'module_environment Module, module: &'module_environment Module,
tunables: Tunables,
) -> Self { ) -> Self {
Self { Self {
isa, isa,
@@ -129,7 +120,6 @@ impl<'module_environment> FuncEnvironment<'module_environment> {
globals_base: None, globals_base: None,
current_memory_extfunc: None, current_memory_extfunc: None,
grow_memory_extfunc: None, grow_memory_extfunc: None,
tunables,
} }
} }
@@ -583,8 +573,8 @@ pub struct ModuleTranslation<'data, 'module> {
} }
impl<'data, 'module> ModuleTranslation<'data, 'module> { impl<'data, 'module> ModuleTranslation<'data, 'module> {
/// Return a new `FuncEnvironment` for translation a function. /// Return a new `FuncEnvironment` for translating a function.
pub fn func_env(&self) -> FuncEnvironment { pub fn func_env(&self) -> FuncEnvironment {
FuncEnvironment::new(self.isa, &self.module, self.tunables.clone()) FuncEnvironment::new(self.isa, &self.module)
} }
} }