Improved formatting

This commit is contained in:
Syrus Akbary
2018-10-23 11:43:43 +02:00
parent 837e67999f
commit 3f5091780d
5 changed files with 21 additions and 22 deletions

View File

@ -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;

View File

@ -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") {

View File

@ -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;

View File

@ -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();

View File

@ -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();