Merge branch 'master' into feature/cleanup

This commit is contained in:
Syrus 2019-07-31 21:11:54 -07:00
commit 9efaaab0bf
10 changed files with 153 additions and 103 deletions

148
Cargo.lock generated
View File

@ -1390,7 +1390,7 @@ dependencies = [
[[package]]
name = "wasmer"
version = "0.5.7"
version = "0.6.0"
dependencies = [
"byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"errno 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1399,23 +1399,23 @@ dependencies = [
"rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
"structopt 0.2.17 (registry+https://github.com/rust-lang/crates.io-index)",
"wabt 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"wasmer-clif-backend 0.5.7",
"wasmer-dev-utils 0.5.7",
"wasmer-emscripten 0.5.7",
"wasmer-emscripten-tests 0.5.7",
"wasmer-clif-backend 0.6.0",
"wasmer-dev-utils 0.6.0",
"wasmer-emscripten 0.6.0",
"wasmer-emscripten-tests 0.6.0",
"wasmer-kernel-loader 0.1.0",
"wasmer-llvm-backend 0.5.7",
"wasmer-middleware-common 0.5.7",
"wasmer-runtime 0.5.7",
"wasmer-runtime-core 0.5.7",
"wasmer-singlepass-backend 0.5.7",
"wasmer-wasi 0.5.7",
"wasmer-wasi-tests 0.5.7",
"wasmer-llvm-backend 0.6.0",
"wasmer-middleware-common 0.6.0",
"wasmer-runtime 0.6.0",
"wasmer-runtime-core 0.6.0",
"wasmer-singlepass-backend 0.6.0",
"wasmer-wasi 0.6.0",
"wasmer-wasi-tests 0.6.0",
]
[[package]]
name = "wasmer-clif-backend"
version = "0.5.7"
version = "0.6.0"
dependencies = [
"byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"cranelift-codegen 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1430,17 +1430,17 @@ dependencies = [
"serde_bytes 0.10.5 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)",
"target-lexicon 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"wasmer-clif-fork-frontend 0.32.0 (registry+https://github.com/rust-lang/crates.io-index)",
"wasmer-clif-fork-wasm 0.32.0 (registry+https://github.com/rust-lang/crates.io-index)",
"wasmer-runtime-core 0.5.7",
"wasmer-win-exception-handler 0.5.7",
"wasmparser 0.34.0 (registry+https://github.com/rust-lang/crates.io-index)",
"wasmer-clif-fork-frontend 0.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
"wasmer-clif-fork-wasm 0.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
"wasmer-runtime-core 0.6.0",
"wasmer-win-exception-handler 0.6.0",
"wasmparser 0.35.1 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "wasmer-clif-fork-frontend"
version = "0.32.0"
version = "0.33.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"cranelift-codegen 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1450,7 +1450,7 @@ dependencies = [
[[package]]
name = "wasmer-clif-fork-wasm"
version = "0.32.0"
version = "0.33.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"cranelift-codegen 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1458,20 +1458,20 @@ dependencies = [
"failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
"failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"wasmer-clif-fork-frontend 0.32.0 (registry+https://github.com/rust-lang/crates.io-index)",
"wasmparser 0.34.0 (registry+https://github.com/rust-lang/crates.io-index)",
"wasmer-clif-fork-frontend 0.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
"wasmparser 0.35.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "wasmer-dev-utils"
version = "0.5.7"
version = "0.6.0"
dependencies = [
"libc 0.2.57 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "wasmer-emscripten"
version = "0.5.7"
version = "0.6.0"
dependencies = [
"byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1479,21 +1479,21 @@ dependencies = [
"libc 0.2.57 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
"time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
"wasmer-runtime-core 0.5.7",
"wasmer-runtime-core 0.6.0",
]
[[package]]
name = "wasmer-emscripten-tests"
version = "0.5.7"
version = "0.6.0"
dependencies = [
"glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
"wabt 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"wasmer-clif-backend 0.5.7",
"wasmer-dev-utils 0.5.7",
"wasmer-emscripten 0.5.7",
"wasmer-llvm-backend 0.5.7",
"wasmer-runtime-core 0.5.7",
"wasmer-singlepass-backend 0.5.7",
"wasmer-clif-backend 0.6.0",
"wasmer-dev-utils 0.6.0",
"wasmer-emscripten 0.6.0",
"wasmer-llvm-backend 0.6.0",
"wasmer-runtime-core 0.6.0",
"wasmer-singlepass-backend 0.6.0",
]
[[package]]
@ -1501,12 +1501,12 @@ name = "wasmer-kernel-loader"
version = "0.1.0"
dependencies = [
"libc 0.2.57 (registry+https://github.com/rust-lang/crates.io-index)",
"wasmer-runtime-core 0.5.7",
"wasmer-runtime-core 0.6.0",
]
[[package]]
name = "wasmer-llvm-backend"
version = "0.5.7"
version = "0.6.0"
dependencies = [
"capstone 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
"cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1521,51 +1521,51 @@ dependencies = [
"semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)",
"wabt 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"wasmer-runtime-core 0.5.7",
"wasmparser 0.34.0 (registry+https://github.com/rust-lang/crates.io-index)",
"wasmer-runtime-core 0.6.0",
"wasmparser 0.35.1 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "wasmer-middleware-common"
version = "0.5.7"
version = "0.6.0"
dependencies = [
"criterion 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
"wabt 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"wasmer-clif-backend 0.5.7",
"wasmer-llvm-backend 0.5.7",
"wasmer-runtime-core 0.5.7",
"wasmer-singlepass-backend 0.5.7",
"wasmer-clif-backend 0.6.0",
"wasmer-llvm-backend 0.6.0",
"wasmer-runtime-core 0.6.0",
"wasmer-singlepass-backend 0.6.0",
]
[[package]]
name = "wasmer-runtime"
version = "0.5.7"
version = "0.6.0"
dependencies = [
"criterion 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"memmap 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"tempfile 3.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
"wabt 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"wasmer-clif-backend 0.5.7",
"wasmer-llvm-backend 0.5.7",
"wasmer-runtime-core 0.5.7",
"wasmer-singlepass-backend 0.5.7",
"wasmer-clif-backend 0.6.0",
"wasmer-llvm-backend 0.6.0",
"wasmer-runtime-core 0.6.0",
"wasmer-singlepass-backend 0.6.0",
]
[[package]]
name = "wasmer-runtime-c-api"
version = "0.5.7"
version = "0.6.0"
dependencies = [
"cbindgen 0.8.7 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.57 (registry+https://github.com/rust-lang/crates.io-index)",
"wasmer-runtime 0.5.7",
"wasmer-runtime-core 0.5.7",
"wasmer-runtime 0.6.0",
"wasmer-runtime-core 0.6.0",
]
[[package]]
name = "wasmer-runtime-core"
version = "0.5.7"
version = "0.6.0"
dependencies = [
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"blake2b_simd 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1588,13 +1588,13 @@ dependencies = [
"serde_bytes 0.10.5 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)",
"smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)",
"wasmparser 0.34.0 (registry+https://github.com/rust-lang/crates.io-index)",
"wasmparser 0.35.1 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "wasmer-singlepass-backend"
version = "0.5.7"
version = "0.6.0"
dependencies = [
"byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"colored 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1605,24 +1605,24 @@ dependencies = [
"libc 0.2.57 (registry+https://github.com/rust-lang/crates.io-index)",
"nix 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)",
"smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)",
"wasmer-runtime-core 0.5.7",
"wasmparser 0.34.0 (registry+https://github.com/rust-lang/crates.io-index)",
"wasmer-runtime-core 0.6.0",
"wasmparser 0.35.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "wasmer-spectests"
version = "0.5.7"
version = "0.6.0"
dependencies = [
"wabt 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"wasmer-clif-backend 0.5.7",
"wasmer-llvm-backend 0.5.7",
"wasmer-runtime-core 0.5.7",
"wasmer-singlepass-backend 0.5.7",
"wasmer-clif-backend 0.6.0",
"wasmer-llvm-backend 0.6.0",
"wasmer-runtime-core 0.6.0",
"wasmer-singlepass-backend 0.6.0",
]
[[package]]
name = "wasmer-wasi"
version = "0.5.7"
version = "0.6.0"
dependencies = [
"byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"generational-arena 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1630,38 +1630,38 @@ dependencies = [
"libc 0.2.57 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
"wasmer-runtime-core 0.5.7",
"wasmer-runtime-core 0.6.0",
"winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "wasmer-wasi-tests"
version = "0.5.7"
version = "0.6.0"
dependencies = [
"glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
"wasmer-clif-backend 0.5.7",
"wasmer-dev-utils 0.5.7",
"wasmer-llvm-backend 0.5.7",
"wasmer-runtime-core 0.5.7",
"wasmer-singlepass-backend 0.5.7",
"wasmer-wasi 0.5.7",
"wasmer-clif-backend 0.6.0",
"wasmer-dev-utils 0.6.0",
"wasmer-llvm-backend 0.6.0",
"wasmer-runtime-core 0.6.0",
"wasmer-singlepass-backend 0.6.0",
"wasmer-wasi 0.6.0",
]
[[package]]
name = "wasmer-win-exception-handler"
version = "0.5.7"
version = "0.6.0"
dependencies = [
"bindgen 0.46.0 (registry+https://github.com/rust-lang/crates.io-index)",
"cmake 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.57 (registry+https://github.com/rust-lang/crates.io-index)",
"regex 1.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
"wasmer-runtime-core 0.5.7",
"wasmer-runtime-core 0.6.0",
"winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "wasmparser"
version = "0.34.0"
version = "0.35.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
@ -1895,9 +1895,9 @@ dependencies = [
"checksum wabt 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d07edd40d190ddcbd0113c2150ccb214f47a02ff36958630ba0e5b8138ece1c1"
"checksum wabt-sys 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b064c81821100adb4b71923cecfc67fef083db21c3bbd454b0162c7ffe63eeaa"
"checksum walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "9d9d7ed3431229a144296213105a390676cc49c9b6a72bd19f3176c98e129fa1"
"checksum wasmer-clif-fork-frontend 0.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "be2e38b16377f93ac485b6045fdc135dd3f165d25d4992e7b67c5cbc3ca8c760"
"checksum wasmer-clif-fork-wasm 0.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "88becfcf874d7587750e1a1c30c47a16ed220f28c433c4b81db4c4626455a6a1"
"checksum wasmparser 0.34.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8030ec5a7c242a91941947fdb752e9a7c0929aced954ea23c54dad1cd2611850"
"checksum wasmer-clif-fork-frontend 0.33.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3bd6bec1587a3b11222f4ff129fd119785713c41de413f54f99d3c03743812f4"
"checksum wasmer-clif-fork-wasm 0.33.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a8f323e612fe2549391255a09f89c927d7feb0ec4bf0c2cad9e3c089bdca42fc"
"checksum wasmparser 0.35.1 (registry+https://github.com/rust-lang/crates.io-index)" = "29f51d6103c622680dc4e17fb8173371efda8e529d97a2ba10ddf847d07705f8"
"checksum which 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b57acb10231b9493c8472b20cb57317d0679a49e0bdbee44b3b803a6473af164"
"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
"checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770"

View File

@ -13,11 +13,11 @@ wasmer-runtime-core = { path = "../runtime-core", version = "0.6.0" }
cranelift-native = { version = "0.31" }
cranelift-codegen = { version = "0.31" }
cranelift-entity = { version = "0.31" }
cranelift-frontend = { package = "wasmer-clif-fork-frontend", version = "0.32" }
cranelift-wasm = { package = "wasmer-clif-fork-wasm", version = "0.32" }
cranelift-frontend = { package = "wasmer-clif-fork-frontend", version = "0.33" }
cranelift-wasm = { package = "wasmer-clif-fork-wasm", version = "0.33" }
hashbrown = "0.1"
target-lexicon = "0.4.0"
wasmparser = "0.34.0"
wasmparser = "0.35.1"
byteorder = "1"
nix = "0.14.0"
libc = "0.2.49"

View File

@ -7,7 +7,7 @@ readme = "README.md"
[dependencies]
wasmer-runtime-core = { path = "../runtime-core", version = "0.6.0" }
wasmparser = "0.34.0"
wasmparser = "0.35.1"
hashbrown = "0.1.8"
smallvec = "0.6.8"
goblin = "0.0.20"

View File

@ -594,14 +594,6 @@ impl FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator {
}
fn feed_event(&mut self, event: Event, module_info: &ModuleInfo) -> Result<(), CodegenError> {
let op = match event {
Event::Wasm(x) => x,
Event::Internal(_x) => {
return Ok(());
}
Event::WasmOwned(ref x) => x,
};
let mut state = &mut self.state;
let builder = self.builder.as_ref().unwrap();
let context = self.context.as_ref().unwrap();
@ -612,6 +604,38 @@ impl FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator {
let signatures = &self.signatures;
let mut ctx = self.ctx.as_mut().unwrap();
let op = match event {
Event::Wasm(x) => x,
Event::WasmOwned(ref x) => x,
Event::Internal(x) => {
match x {
InternalEvent::FunctionBegin(_) | InternalEvent::FunctionEnd => {
return Ok(());
}
InternalEvent::Breakpoint(_callback) => {
return Ok(());
}
InternalEvent::GetInternal(idx) => {
if state.reachable {
let idx = idx as usize;
let field_ptr = ctx.internal_field(idx, intrinsics, builder);
let result = builder.build_load(field_ptr, "get_internal");
state.push1(result);
}
}
InternalEvent::SetInternal(idx) => {
if state.reachable {
let idx = idx as usize;
let field_ptr = ctx.internal_field(idx, intrinsics, builder);
let v = state.pop1()?;
builder.build_store(field_ptr, v);
}
}
}
return Ok(());
}
};
if !state.reachable {
match *op {
Operator::Block { ty: _ } | Operator::Loop { ty: _ } | Operator::If { ty: _ } => {

View File

@ -18,7 +18,7 @@ use wasmer_runtime_core::{
GlobalIndex, ImportedFuncIndex, LocalFuncIndex, LocalOrImport, MemoryIndex, SigIndex,
TableIndex, Type,
},
vm::Ctx,
vm::{Ctx, INTERNALS_SIZE},
};
fn type_to_llvm_ptr(intrinsics: &Intrinsics, ty: Type) -> PointerType {
@ -942,4 +942,31 @@ impl<'a> CtxType<'a> {
(imported_func_cache.func_ptr, imported_func_cache.ctx_ptr)
}
pub fn internal_field(
&mut self,
index: usize,
intrinsics: &Intrinsics,
builder: &Builder,
) -> PointerValue {
assert!(index < INTERNALS_SIZE);
let local_internals_ptr_ptr = unsafe {
builder.build_struct_gep(
self.ctx_ptr_value,
offset_to_index(Ctx::offset_internals()),
"local_internals_ptr_ptr",
)
};
let local_internals_ptr = builder
.build_load(local_internals_ptr_ptr, "local_internals_ptr")
.into_pointer_value();
unsafe {
builder.build_in_bounds_gep(
local_internals_ptr,
&[intrinsics.i32_ty.const_int(index as u64, false)],
"local_internal_field_ptr",
)
}
}
}

View File

@ -135,10 +135,9 @@ static WAT_GAS: &'static str = r#"
#[cfg(feature = "llvm")]
fn get_compiler(limit: u64, metering: bool) -> impl Compiler {
use wasmer_llvm_backend::code::LLVMModuleCodeGenerator;
use wasmer_llvm_backend::ModuleCodeGenerator;
use wasmer_runtime_core::codegen::{MiddlewareChain, StreamingCompiler};
let c: StreamingCompiler<LLVMModuleCodeGenerator, _, _, _, _> =
StreamingCompiler::new(move || {
let c: StreamingCompiler<ModuleCodeGenerator, _, _, _, _> = StreamingCompiler::new(move || {
let mut chain = MiddlewareChain::new();
if metering {
chain.push(Metering::new(limit));

View File

@ -11,7 +11,7 @@ thread_local! {
static LAST_ERROR: RefCell<Option<Box<Error>>> = RefCell::new(None);
}
pub(crate) fn update_last_error<E: Error + 'static>(err: E) {
pub fn update_last_error<E: Error + 'static>(err: E) {
LAST_ERROR.with(|prev| {
*prev.borrow_mut() = Some(Box::new(err));
});
@ -89,8 +89,8 @@ pub unsafe extern "C" fn wasmer_last_error_message(buffer: *mut c_char, length:
}
#[derive(Debug)]
pub(crate) struct CApiError {
pub(crate) msg: String,
pub struct CApiError {
pub msg: String,
}
impl Display for CApiError {

View File

@ -118,6 +118,6 @@ pub struct wasmer_limit_option_t {
#[repr(C)]
pub struct wasmer_byte_array {
bytes: *const u8,
bytes_len: u32,
pub bytes: *const u8,
pub bytes_len: u32,
}

View File

@ -10,7 +10,7 @@ edition = "2018"
[dependencies]
nix = "0.14.0"
page_size = "0.4.1"
wasmparser = "0.34.0"
wasmparser = "0.35.1"
parking_lot = "0.7.1"
lazy_static = "1.2.0"
indexmap = "1.0.2"

View File

@ -10,7 +10,7 @@ readme = "README.md"
[dependencies]
wasmer-runtime-core = { path = "../runtime-core", version = "0.6.0" }
wasmparser = "0.34.0"
wasmparser = "0.35.1"
dynasm = "0.3.2"
dynasmrt = "0.3.1"
lazy_static = "1.2.0"