mirror of
https://github.com/fluencelabs/wasmer
synced 2025-06-29 16:41:33 +00:00
Improved formatting
This commit is contained in:
@ -38,8 +38,7 @@ pub fn generate_libc_env<'a, 'b>() -> ImportObject<&'a str, &'b str> {
|
|||||||
mod tests {
|
mod tests {
|
||||||
use super::generate_libc_env;
|
use super::generate_libc_env;
|
||||||
use crate::webassembly::{
|
use crate::webassembly::{
|
||||||
instantiate, ErrorKind, Export, ImportObject, Instance, Module, ResultObject,
|
instantiate, ErrorKind, Export, ImportObject, Instance, Module, ResultObject, VmCtx,
|
||||||
VmCtx
|
|
||||||
};
|
};
|
||||||
use libc::putchar;
|
use libc::putchar;
|
||||||
|
|
||||||
|
10
src/main.rs
10
src/main.rs
@ -14,8 +14,8 @@ extern crate wabt;
|
|||||||
extern crate target_lexicon;
|
extern crate target_lexicon;
|
||||||
extern crate spin;
|
extern crate spin;
|
||||||
|
|
||||||
use std::time::{Duration, Instant};
|
|
||||||
use std::alloc::System;
|
use std::alloc::System;
|
||||||
|
use std::time::{Duration, Instant};
|
||||||
|
|
||||||
// #[global_allocator]
|
// #[global_allocator]
|
||||||
// static A: System = System;
|
// static A: System = System;
|
||||||
@ -75,9 +75,11 @@ fn execute_wasm(wasm_path: PathBuf) -> Result<(), String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let import_object = integrations::generate_libc_env();
|
let import_object = integrations::generate_libc_env();
|
||||||
let webassembly::ResultObject { module, mut instance } =
|
let webassembly::ResultObject {
|
||||||
webassembly::instantiate(wasm_binary, import_object)
|
module,
|
||||||
.map_err(|err| String::from(err.description()))?;
|
mut instance,
|
||||||
|
} = webassembly::instantiate(wasm_binary, import_object)
|
||||||
|
.map_err(|err| String::from(err.description()))?;
|
||||||
let func_index = instance
|
let func_index = instance
|
||||||
.start_func
|
.start_func
|
||||||
.unwrap_or_else(|| match module.info.exports.get("main") {
|
.unwrap_or_else(|| match module.info.exports.get("main") {
|
||||||
|
@ -68,7 +68,6 @@ fn get_function_addr(
|
|||||||
// (base as usize + offset) as _
|
// (base as usize + offset) as _
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
||||||
// #[derive(Debug)]
|
// #[derive(Debug)]
|
||||||
#[repr(C, packed)]
|
#[repr(C, packed)]
|
||||||
pub struct VmCtx<'phantom> {
|
pub struct VmCtx<'phantom> {
|
||||||
@ -506,8 +505,10 @@ impl Instance {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn generate_context(&mut self) -> VmCtx {
|
pub fn generate_context(&mut self) -> VmCtx {
|
||||||
let memories: Vec<UncheckedSlice<u8>> = self.memories.iter().map(|mem| mem[..].into()).collect();
|
let memories: Vec<UncheckedSlice<u8>> =
|
||||||
let tables: Vec<BoundedSlice<usize>> = self.tables.iter().map(|table| table[..].into()).collect();
|
self.memories.iter().map(|mem| mem[..].into()).collect();
|
||||||
|
let tables: Vec<BoundedSlice<usize>> =
|
||||||
|
self.tables.iter().map(|table| table[..].into()).collect();
|
||||||
let globals: UncheckedSlice<u8> = self.globals[..].into();
|
let globals: UncheckedSlice<u8> = self.globals[..].into();
|
||||||
|
|
||||||
// println!("GENERATING CONTEXT {:?}", self.tables);
|
// println!("GENERATING CONTEXT {:?}", self.tables);
|
||||||
@ -570,7 +571,6 @@ impl Clone for Instance {
|
|||||||
}
|
}
|
||||||
|
|
||||||
extern "C" fn grow_memory(size: u32, memory_index: u32, vmctx: &mut VmCtx) -> i32 {
|
extern "C" fn grow_memory(size: u32, memory_index: u32, vmctx: &mut VmCtx) -> i32 {
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
// unimplemented!();
|
// unimplemented!();
|
||||||
// let instance = &vmctx.user_data.instance;
|
// let instance = &vmctx.user_data.instance;
|
||||||
|
@ -36,10 +36,11 @@ impl LinearMemory {
|
|||||||
initial, maximum
|
initial, maximum
|
||||||
);
|
);
|
||||||
|
|
||||||
let len: u64 = PAGE_SIZE as u64 * match maximum {
|
let len: u64 = PAGE_SIZE as u64
|
||||||
Some(val) => val as u64,
|
* match maximum {
|
||||||
None => initial as u64,
|
Some(val) => val as u64,
|
||||||
};
|
None => initial as u64,
|
||||||
|
};
|
||||||
let len = if len == 0 { PAGE_SIZE as u64 } else { len };
|
let len = if len == 0 { PAGE_SIZE as u64 } else { len };
|
||||||
|
|
||||||
let mmap = MmapMut::map_anon(len as usize).unwrap();
|
let mmap = MmapMut::map_anon(len as usize).unwrap();
|
||||||
|
@ -409,7 +409,7 @@ impl<'environment> FuncEnvironmentTrait for FuncEnvironment<'environment> {
|
|||||||
fn make_table(&mut self, func: &mut ir::Function, table_index: TableIndex) -> ir::Table {
|
fn make_table(&mut self, func: &mut ir::Function, table_index: TableIndex) -> ir::Table {
|
||||||
let vmctx = func.create_global_value(ir::GlobalValueData::VMContext);
|
let vmctx = func.create_global_value(ir::GlobalValueData::VMContext);
|
||||||
let ptr_size = self.ptr_size();
|
let ptr_size = self.ptr_size();
|
||||||
|
|
||||||
// Given a vmctx, we want to retrieve vmctx.tables
|
// Given a vmctx, we want to retrieve vmctx.tables
|
||||||
// Create a table whose base address is stored at `vmctx+112`.
|
// Create a table whose base address is stored at `vmctx+112`.
|
||||||
// 112 is the offset of the vmctx.tables pointer respect to vmctx pointer
|
// 112 is the offset of the vmctx.tables pointer respect to vmctx pointer
|
||||||
@ -433,7 +433,7 @@ impl<'environment> FuncEnvironmentTrait for FuncEnvironment<'environment> {
|
|||||||
offset: Offset32::new(table_data_offset),
|
offset: Offset32::new(table_data_offset),
|
||||||
global_type: I64,
|
global_type: I64,
|
||||||
});
|
});
|
||||||
|
|
||||||
let table = func.create_table(ir::TableData {
|
let table = func.create_table(ir::TableData {
|
||||||
base_gv: base_gv,
|
base_gv: base_gv,
|
||||||
min_size: Imm64::new(0),
|
min_size: Imm64::new(0),
|
||||||
@ -539,12 +539,9 @@ impl<'environment> FuncEnvironmentTrait for FuncEnvironment<'environment> {
|
|||||||
ext
|
ext
|
||||||
// pos.ins().imul_imm(ext, 4)
|
// pos.ins().imul_imm(ext, 4)
|
||||||
};
|
};
|
||||||
let entry_addr = pos.ins().table_addr(
|
let entry_addr = pos
|
||||||
self.pointer_type(),
|
.ins()
|
||||||
table,
|
.table_addr(self.pointer_type(), table, callee_offset, 0);
|
||||||
callee_offset,
|
|
||||||
0,
|
|
||||||
);
|
|
||||||
let mut mflags = ir::MemFlags::new();
|
let mut mflags = ir::MemFlags::new();
|
||||||
mflags.set_notrap();
|
mflags.set_notrap();
|
||||||
mflags.set_aligned();
|
mflags.set_aligned();
|
||||||
|
Reference in New Issue
Block a user