From 3eaf5525d11d5d2c9b68fe99aa8589ffaef74cd2 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Wed, 13 Mar 2019 14:58:44 -0700 Subject: [PATCH 001/413] Add some better docs --- lib/runtime-core/src/backing.rs | 27 +++++++++++++++++---------- lib/runtime-core/src/sig_registry.rs | 12 ++++++++++++ lib/runtime-core/src/vm.rs | 23 +++++++++++++++++++++++ 3 files changed, 52 insertions(+), 10 deletions(-) diff --git a/lib/runtime-core/src/backing.rs b/lib/runtime-core/src/backing.rs index 48f2d2256..6afb7ddb2 100644 --- a/lib/runtime-core/src/backing.rs +++ b/lib/runtime-core/src/backing.rs @@ -17,30 +17,31 @@ use crate::{ }; use std::slice; +/// The `LocalBacking` "owns" the memory used by all the local resources. +/// That is, local memories, tables, and globals (as well as some additional +/// data for the virtual call machinery). #[derive(Debug)] pub struct LocalBacking { + /// This is a map from the local resource index to actual memory, + /// table, and globals. pub(crate) memories: BoxedMap, pub(crate) tables: BoxedMap, pub(crate) globals: BoxedMap, + /// This own the memory containing the pointers to the local memories. + /// While simplifying implementation, this adds indirection and may hurt + /// performance, especially on cache-starved systems. pub(crate) vm_memories: BoxedMap, pub(crate) vm_tables: BoxedMap, pub(crate) vm_globals: BoxedMap, + /// The dynamic sigindices are used to efficiently support caching and + /// the `call_indirect` wasm instruction. This field (and local_functions + /// as well) are subject to change. pub(crate) dynamic_sigindices: BoxedMap, pub(crate) local_functions: BoxedMap, } -// impl LocalBacking { -// pub fn memory(&mut self, local_memory_index: LocalMemoryIndex) -> &mut Memory { -// &mut self.memories[local_memory_index] -// } - -// pub fn table(&mut self, local_table_index: LocalTableIndex) -> &mut TableBacking { -// &mut self.tables[local_table_index] -// } -// } - impl LocalBacking { pub(crate) fn new(module: &ModuleInner, imports: &ImportBacking, vmctx: *mut vm::Ctx) -> Self { let mut memories = Self::generate_memories(module); @@ -102,6 +103,9 @@ impl LocalBacking { memories.into_boxed_map() } + /// Initialize each local memory. + /// + /// This involves copying in the data initializers. fn finalize_memories( module: &ModuleInner, imports: &ImportBacking, @@ -174,6 +178,9 @@ impl LocalBacking { tables.into_boxed_map() } + /// This initializes all of the local tables, e.g. + /// putting all the table elements (function pointers) + /// in the right places. #[allow(clippy::cast_ptr_alignment)] fn finalize_tables( module: &ModuleInner, diff --git a/lib/runtime-core/src/sig_registry.rs b/lib/runtime-core/src/sig_registry.rs index 1f6d87b4f..653294f32 100644 --- a/lib/runtime-core/src/sig_registry.rs +++ b/lib/runtime-core/src/sig_registry.rs @@ -23,10 +23,18 @@ struct GlobalSigRegistry { sig_assoc: Map>, } +/// The `SigRegistry` represents a process-global map of function signatures +/// to signature indexes and vice versa (the map goes both ways). +/// +/// This exists for two reasons: +/// 1. The `call_indirect` wasm instruction can compare two signature indices +/// to do signature validation very quickly. +/// 2. To intern function signatures, which may be expensive to create. #[derive(Debug)] pub struct SigRegistry; impl SigRegistry { + /// Map a `FuncSig` to a global `SigIndex`. pub fn lookup_sig_index(&self, func_sig: Sig) -> SigIndex where Sig: Into>, @@ -45,11 +53,15 @@ impl SigRegistry { sig_index } + /// Map a global `SigIndex` to an interned `FuncSig`. pub fn lookup_signature(&self, sig_index: SigIndex) -> Arc { let global = (*GLOBAL_SIG_REGISTRY).read(); Arc::clone(&global.sig_assoc[sig_index]) } + /// Register a function signature with the global signature registry. + /// + /// This will return an interned `FuncSig`. pub fn lookup_signature_ref(&self, func_sig: &FuncSig) -> Arc { let mut global = (*GLOBAL_SIG_REGISTRY).write(); let global = &mut *global; diff --git a/lib/runtime-core/src/vm.rs b/lib/runtime-core/src/vm.rs index 508ca031b..b9b6bbe27 100644 --- a/lib/runtime-core/src/vm.rs +++ b/lib/runtime-core/src/vm.rs @@ -9,7 +9,16 @@ use std::{ffi::c_void, mem, ptr}; /// The context of the currently running WebAssembly instance. /// +/// This is implicitly passed to every webassembly function. +/// Since this is per-module, each field has a statically +/// (as in after compiling the wasm) known size, so no +/// runtime checks are necessary. /// +/// While the runtime currently just passes this around +/// as the first, implicit parameter of every function, +/// it may someday be pinned to a register (especially +/// on arm, which has a ton of registers) to reduce +/// register shuffling. #[derive(Debug)] #[repr(C)] pub struct Ctx { @@ -42,11 +51,25 @@ pub struct Ctx { pub(crate) local_functions: *const *const Func, + /// These are pointers to things that are known to be owned + /// by the owning `Instance`. local_backing: *mut LocalBacking, import_backing: *mut ImportBacking, module: *const ModuleInner, + //// This is intended to be user-supplied, per-instance + /// contextual data. There are currently some issue with it, + /// notably that it cannot be set before running the `start` + /// function in a webassembly module. + /// + /// [#219](https://github.com/wasmerio/wasmer/pull/219) fixes that + /// issue, as well as allowing the user to have *per-function* + /// context, instead of just per-instance. pub data: *mut c_void, + + /// If there's a function set in this field, it gets called + /// when the context is destructed, e.g. when an `Instance` + /// is dropped. pub data_finalizer: Option, } From d9b2a2309db87931cfafe1c11480677c4406c211 Mon Sep 17 00:00:00 2001 From: losfair Date: Wed, 27 Mar 2019 00:23:10 +0800 Subject: [PATCH 002/413] Emitter API. --- lib/dynasm-backend/src/emitter_x64.rs | 309 ++++++++++++++++++++++++++ lib/dynasm-backend/src/lib.rs | 1 + 2 files changed, 310 insertions(+) create mode 100644 lib/dynasm-backend/src/emitter_x64.rs diff --git a/lib/dynasm-backend/src/emitter_x64.rs b/lib/dynasm-backend/src/emitter_x64.rs new file mode 100644 index 000000000..63cbe2b4a --- /dev/null +++ b/lib/dynasm-backend/src/emitter_x64.rs @@ -0,0 +1,309 @@ +use dynasmrt::{ + x64::Assembler, AssemblyOffset, DynamicLabel, DynasmApi, DynasmLabelApi, +}; + +#[repr(u8)] +#[derive(Copy, Clone, Debug, Eq, PartialEq)] +pub enum GPR { + RAX, + RCX, + RDX, + RBX, + RSP, + RBP, + RSI, + RDI, + R8, + R9, + R10, + R11, + R12, + R13, + R14, + R15, +} + +#[repr(u8)] +#[derive(Copy, Clone, Debug, Eq, PartialEq)] +pub enum XMM { + XMM0, + XMM1, + XMM2, + XMM3, + XMM4, + XMM5, + XMM6, + XMM7, +} + +#[derive(Copy, Clone, Debug, Eq, PartialEq)] +pub enum Location { + Imm32(u32), + Imm64(u64), + GPR(GPR), + XMM(XMM), + Memory(GPR, i32) +} + +#[derive(Copy, Clone, Debug, Eq, PartialEq)] +pub enum Condition { + None, + Above, + AboveEqual, + Below, + BelowEqual, + Greater, + GreaterEqual, + Less, + LessEqual, + Equal, + NotEqual, +} + +#[derive(Copy, Clone, Debug, Eq, PartialEq)] +pub enum Size { + S32, + S64, +} + +pub trait Emitter { + type Label; + type Offset; + + fn get_label(&mut self) -> Self::Label; + fn get_offset(&mut self) -> Self::Offset; + + fn emit_label(&mut self, label: Self::Label); + + fn emit_mov(&mut self, sz: Size, src: Location, dst: Location); + fn emit_xor(&mut self, sz: Size, src: Location, dst: Location); + fn emit_jmp(&mut self, condition: Condition, label: Self::Label); + fn emit_set(&mut self, condition: Condition, dst: GPR); + fn emit_push(&mut self, sz: Size, src: Location); + fn emit_pop(&mut self, sz: Size, dst: Location); + fn emit_cmp(&mut self, sz: Size, left: Location, right: Location); + fn emit_add(&mut self, sz: Size, src: Location, dst: Location); + fn emit_sub(&mut self, sz: Size, src: Location, dst: Location); + fn emit_imul(&mut self, sz: Size, src: Location, dst: Location); + fn emit_div(&mut self, sz: Size, divisor: Location); + fn emit_idiv(&mut self, sz: Size, divisor: Location); + fn emit_shl(&mut self, sz: Size, src: Location, dst: Location); + fn emit_shr(&mut self, sz: Size, src: Location, dst: Location); + fn emit_sar(&mut self, sz: Size, src: Location, dst: Location); +} + +macro_rules! binop_imm32_gpr { + ($ins:ident, $assembler:tt, $sz:expr, $src:expr, $dst:expr, $otherwise:block) => { + match ($sz, $src, $dst) { + (Size::S32, Location::Imm32(src), Location::GPR(dst)) => { + dynasm!($assembler ; $ins Rd(dst as u8), src as i32); // IMM32_2GPR + }, + (Size::S64, Location::Imm32(src), Location::GPR(dst)) => { + dynasm!($assembler ; $ins Rq(dst as u8), src as i32); // IMM32_2GPR + }, + _ => $otherwise + } + }; +} + +macro_rules! binop_imm64_gpr { + ($ins:ident, $assembler:tt, $sz:expr, $src:expr, $dst:expr, $otherwise:block) => { + match ($sz, $src, $dst) { + (Size::S64, Location::Imm64(src), Location::GPR(dst)) => { + dynasm!($assembler ; $ins Rq(dst as u8), QWORD src as i64); // IMM32_2GPR + }, + _ => $otherwise + } + }; +} + +macro_rules! binop_gpr_gpr { + ($ins:ident, $assembler:tt, $sz:expr, $src:expr, $dst:expr, $otherwise:block) => { + match ($sz, $src, $dst) { + (Size::S32, Location::GPR(src), Location::GPR(dst)) => { + dynasm!($assembler ; $ins Rd(dst as u8), Rd(src as u8)); // GPR2GPR + }, + (Size::S64, Location::GPR(src), Location::GPR(dst)) => { + dynasm!($assembler ; $ins Rq(dst as u8), Rq(src as u8)); // GPR2GPR + }, + _ => $otherwise + } + }; +} + +macro_rules! binop_gpr_mem { + ($ins:ident, $assembler:tt, $sz:expr, $src:expr, $dst:expr, $otherwise:block) => { + match ($sz, $src, $dst) { + (Size::S32, Location::GPR(src), Location::Memory(dst, disp)) => { + dynasm!($assembler ; $ins [Rq(dst as u8) + disp], Rd(src as u8)); // GPR2MEM + }, + (Size::S64, Location::GPR(src), Location::Memory(dst, disp)) => { + dynasm!($assembler ; $ins [Rq(dst as u8) + disp], Rq(src as u8)); // GPR2MEM + }, + _ => $otherwise + } + }; +} + +macro_rules! binop_mem_gpr { + ($ins:ident, $assembler:tt, $sz:expr, $src:expr, $dst:expr, $otherwise:block) => { + match ($sz, $src, $dst) { + (Size::S32, Location::Memory(src, disp), Location::GPR(dst)) => { + dynasm!($assembler ; $ins Rd(dst as u8), [Rq(src as u8) + disp]); // MEM2GPR + }, + (Size::S64, Location::Memory(src, disp), Location::GPR(dst)) => { + dynasm!($assembler ; $ins Rq(dst as u8), [Rq(src as u8) + disp]); // MEM2GPR + }, + _ => $otherwise + } + }; +} + +macro_rules! binop_all_nofp { + ($ins:ident, $assembler:tt, $sz:expr, $src:expr, $dst:expr, $otherwise:block) => { + binop_imm32_gpr!( + $ins, $assembler, $sz, $src, $dst, + {binop_gpr_gpr!( + $ins, $assembler, $sz, $src, $dst, + {binop_gpr_mem!( + $ins, $assembler, $sz, $src, $dst, + {binop_mem_gpr!( + $ins, $assembler, $sz, $src, $dst, + $otherwise + )} + )} + )} + ) + }; +} + +macro_rules! jmp_op { + ($ins:ident, $assembler:tt, $label:ident) => { + dynasm!($assembler ; $ins =>$label); + } +} + +impl Emitter for Assembler { + type Label = DynamicLabel; + type Offset = AssemblyOffset; + + fn get_label(&mut self) -> DynamicLabel { + self.new_dynamic_label() + } + + fn get_offset(&mut self) -> AssemblyOffset { + self.offset() + } + + fn emit_label(&mut self, label: Self::Label) { + dynasm!(self ; => label); + } + + fn emit_mov(&mut self, sz: Size, src: Location, dst: Location) { + binop_all_nofp!( + mov, self, sz, src, dst, + {binop_imm64_gpr!( + mov, self, sz, src, dst, + { + match (sz, src, dst) { + (Size::S32, Location::GPR(src), Location::XMM(dst)) => { + dynasm!(self ; movd Rx(dst as u8), Rd(src as u8)); + }, + (Size::S32, Location::XMM(src), Location::GPR(dst)) => { + dynasm!(self ; movd Rd(dst as u8), Rx(src as u8)); + }, + (Size::S32, Location::Memory(src, disp), Location::XMM(dst)) => { + dynasm!(self ; movd Rx(dst as u8), [Rq(src as u8) + disp]); + }, + (Size::S32, Location::XMM(src), Location::Memory(dst, disp)) => { + dynasm!(self ; movd [Rq(dst as u8) + disp], Rx(src as u8)); + }, + + (Size::S64, Location::GPR(src), Location::XMM(dst)) => { + dynasm!(self ; movq Rx(dst as u8), Rq(src as u8)); + }, + (Size::S64, Location::XMM(src), Location::GPR(dst)) => { + dynasm!(self ; movq Rq(dst as u8), Rx(src as u8)); + }, + (Size::S64, Location::Memory(src, disp), Location::XMM(dst)) => { + dynasm!(self ; movq Rx(dst as u8), [Rq(src as u8) + disp]); + }, + (Size::S64, Location::XMM(src), Location::Memory(dst, disp)) => { + dynasm!(self ; movq [Rq(dst as u8) + disp], Rx(src as u8)); + }, + + _ => unreachable!() + } + } + )} + ); + } + fn emit_xor(&mut self, sz: Size, src: Location, dst: Location) { + binop_all_nofp!(xor, self, sz, src, dst, {unreachable!()}); + } + fn emit_jmp(&mut self, condition: Condition, label: Self::Label) { + match condition { + Condition::None => jmp_op!(jmp, self, label), + Condition::Above => jmp_op!(ja, self, label), + Condition::AboveEqual => jmp_op!(jae, self, label), + Condition::Below => jmp_op!(jb, self, label), + Condition::BelowEqual => jmp_op!(jbe, self, label), + Condition::Greater => jmp_op!(jg, self, label), + Condition::GreaterEqual => jmp_op!(jge, self, label), + Condition::Less => jmp_op!(jl, self, label), + Condition::LessEqual => jmp_op!(jle, self, label), + Condition::Equal => jmp_op!(je, self, label), + Condition::NotEqual => jmp_op!(jne, self, label), + } + } + fn emit_set(&mut self, condition: Condition, dst: GPR) { + match condition { + Condition::Above => dynasm!(self ; seta Rb(dst as u8)), + Condition::AboveEqual => dynasm!(self ; setae Rb(dst as u8)), + Condition::Below => dynasm!(self ; setb Rb(dst as u8)), + Condition::BelowEqual => dynasm!(self ; setbe Rb(dst as u8)), + Condition::Greater => dynasm!(self ; setg Rb(dst as u8)), + Condition::GreaterEqual => dynasm!(self ; setge Rb(dst as u8)), + Condition::Less => dynasm!(self ; setl Rb(dst as u8)), + Condition::LessEqual => dynasm!(self ; setle Rb(dst as u8)), + Condition::Equal => dynasm!(self ; sete Rb(dst as u8)), + Condition::NotEqual => dynasm!(self ; setne Rb(dst as u8)), + _ => unreachable!() + } + } + fn emit_push(&mut self, sz: Size, src: Location) { + match (sz, src) { + (Size::S64, Location::Imm32(src)) => dynasm!(self ; push src as i32), + (Size::S64, Location::GPR(src)) => dynasm!(self ; push Rq(src as u8)), + (Size::S64, Location::Memory(src, disp)) => dynasm!(self ; push QWORD [Rq(src as u8) + disp]), + _ => unreachable!() + } + } + fn emit_pop(&mut self, sz: Size, dst: Location) { + match (sz, dst) { + (Size::S64, Location::GPR(dst)) => dynasm!(self ; pop Rq(dst as u8)), + (Size::S64, Location::Memory(dst, disp)) => dynasm!(self ; pop QWORD [Rq(dst as u8) + disp]), + _ => unreachable!() + } + } + fn emit_cmp(&mut self, sz: Size, left: Location, right: Location) { + binop_all_nofp!(cmp, self, sz, left, right, {unreachable!()}); + } + fn emit_add(&mut self, sz: Size, src: Location, dst: Location) { + binop_all_nofp!(add, self, sz, src, dst, {unreachable!()}); + } + fn emit_sub(&mut self, sz: Size, src: Location, dst: Location) { + binop_all_nofp!(sub, self, sz, src, dst, {unreachable!()}); + } + fn emit_imul(&mut self, sz: Size, src: Location, dst: Location) { + binop_gpr_gpr!(imul, self, sz, src, dst, { + binop_mem_gpr!(imul, self, sz, src, dst, {unreachable!()}) + }); + } + fn emit_div(&mut self, sz: Size, divisor: Location) { unimplemented!() } + fn emit_idiv(&mut self, sz: Size, divisor: Location) { unimplemented!() } + fn emit_shl(&mut self, sz: Size, src: Location, dst: Location) { unimplemented!() } + fn emit_shr(&mut self, sz: Size, src: Location, dst: Location) { unimplemented!() } + fn emit_sar(&mut self, sz: Size, src: Location, dst: Location) { unimplemented!() } + +} \ No newline at end of file diff --git a/lib/dynasm-backend/src/lib.rs b/lib/dynasm-backend/src/lib.rs index 1647611bb..841baa99d 100644 --- a/lib/dynasm-backend/src/lib.rs +++ b/lib/dynasm-backend/src/lib.rs @@ -21,6 +21,7 @@ mod codegen_x64; mod parse; mod protect_unix; mod stack; +mod emitter_x64; use crate::codegen::{CodegenError, ModuleCodeGenerator}; use crate::parse::LoadError; From eaa161fcb419cf6767979409bf60e61646314b65 Mon Sep 17 00:00:00 2001 From: losfair Date: Thu, 28 Mar 2019 09:03:36 +0800 Subject: [PATCH 003/413] More operations. --- lib/dynasm-backend/src/emitter_x64.rs | 93 +++++++++++++++++++++++++-- 1 file changed, 88 insertions(+), 5 deletions(-) diff --git a/lib/dynasm-backend/src/emitter_x64.rs b/lib/dynasm-backend/src/emitter_x64.rs index 63cbe2b4a..70d355a06 100644 --- a/lib/dynasm-backend/src/emitter_x64.rs +++ b/lib/dynasm-backend/src/emitter_x64.rs @@ -38,6 +38,7 @@ pub enum XMM { #[derive(Copy, Clone, Debug, Eq, PartialEq)] pub enum Location { + Imm8(u8), Imm32(u32), Imm64(u64), GPR(GPR), @@ -92,6 +93,46 @@ pub trait Emitter { fn emit_sar(&mut self, sz: Size, src: Location, dst: Location); } +macro_rules! unop_gpr { + ($ins:ident, $assembler:tt, $sz:expr, $loc:expr, $otherwise:block) => { + match ($sz, $loc) { + (Size::S32, Location::GPR(loc)) => { + dynasm!($assembler ; $ins Rd(loc as u8)); + }, + (Size::S64, Location::GPR(loc)) => { + dynasm!($assembler ; $ins Rq(loc as u8)); + }, + _ => $otherwise + } + }; +} + +macro_rules! unop_mem { + ($ins:ident, $assembler:tt, $sz:expr, $loc:expr, $otherwise:block) => { + match ($sz, $loc) { + (Size::S32, Location::Memory(loc, disp)) => { + dynasm!($assembler ; $ins DWORD [Rq(loc as u8) + disp] ); + }, + (Size::S64, Location::Memory(loc, disp)) => { + dynasm!($assembler ; $ins QWORD [Rq(loc as u8) + disp] ); + }, + _ => $otherwise + } + }; +} + +macro_rules! unop_gpr_or_mem { + ($ins:ident, $assembler:tt, $sz:expr, $loc:expr, $otherwise:block) => { + unop_gpr!( + $ins, $assembler, $sz, $loc, + {unop_mem!( + $ins, $assembler, $sz, $loc, + $otherwise + )} + ) + }; +} + macro_rules! binop_imm32_gpr { ($ins:ident, $assembler:tt, $sz:expr, $src:expr, $dst:expr, $otherwise:block) => { match ($sz, $src, $dst) { @@ -177,6 +218,38 @@ macro_rules! binop_all_nofp { }; } +macro_rules! binop_shift { + ($ins:ident, $assembler:tt, $sz:expr, $src:expr, $dst:expr, $otherwise:block) => { + match ($sz, $src, $dst) { + (Size::S32, Location::GPR(GPR::RCX), Location::GPR(dst)) => { + dynasm!($assembler ; $ins Rd(dst as u8), cl); + }, + (Size::S32, Location::GPR(GPR::RCX), Location::Memory(dst, disp)) => { + dynasm!($assembler ; $ins DWORD [Rq(dst as u8) + disp], cl); + }, + (Size::S32, Location::Imm8(imm), Location::GPR(dst)) => { + dynasm!($assembler ; $ins Rd(dst as u8), imm as i8); + }, + (Size::S32, Location::Imm8(imm), Location::Memory(dst, disp)) => { + dynasm!($assembler ; $ins DWORD [Rq(dst as u8) + disp], imm as i8); + }, + (Size::S64, Location::GPR(GPR::RCX), Location::GPR(dst)) => { + dynasm!($assembler ; $ins Rq(dst as u8), cl); + }, + (Size::S64, Location::GPR(GPR::RCX), Location::Memory(dst, disp)) => { + dynasm!($assembler ; $ins QWORD [Rq(dst as u8) + disp], cl); + }, + (Size::S64, Location::Imm8(imm), Location::GPR(dst)) => { + dynasm!($assembler ; $ins Rq(dst as u8), imm as i8); + }, + (Size::S64, Location::Imm8(imm), Location::Memory(dst, disp)) => { + dynasm!($assembler ; $ins QWORD [Rq(dst as u8) + disp], imm as i8); + }, + _ => $otherwise + } + } +} + macro_rules! jmp_op { ($ins:ident, $assembler:tt, $label:ident) => { dynasm!($assembler ; $ins =>$label); @@ -300,10 +373,20 @@ impl Emitter for Assembler { binop_mem_gpr!(imul, self, sz, src, dst, {unreachable!()}) }); } - fn emit_div(&mut self, sz: Size, divisor: Location) { unimplemented!() } - fn emit_idiv(&mut self, sz: Size, divisor: Location) { unimplemented!() } - fn emit_shl(&mut self, sz: Size, src: Location, dst: Location) { unimplemented!() } - fn emit_shr(&mut self, sz: Size, src: Location, dst: Location) { unimplemented!() } - fn emit_sar(&mut self, sz: Size, src: Location, dst: Location) { unimplemented!() } + fn emit_div(&mut self, sz: Size, divisor: Location) { + unop_gpr_or_mem!(div, self, sz, divisor, { unreachable!() }); + } + fn emit_idiv(&mut self, sz: Size, divisor: Location) { + unop_gpr_or_mem!(idiv, self, sz, divisor, { unreachable!() }); + } + fn emit_shl(&mut self, sz: Size, src: Location, dst: Location) { + binop_shift!(shl, self, sz, src, dst, { unreachable!() }); + } + fn emit_shr(&mut self, sz: Size, src: Location, dst: Location) { + binop_shift!(shr, self, sz, src, dst, { unreachable!() }); + } + fn emit_sar(&mut self, sz: Size, src: Location, dst: Location) { + binop_shift!(sar, self, sz, src, dst, { unreachable!() }); + } } \ No newline at end of file From e21def188e762eae09bcfea4812a2ed76d741c57 Mon Sep 17 00:00:00 2001 From: losfair Date: Thu, 28 Mar 2019 10:17:06 +0800 Subject: [PATCH 004/413] Machine state. --- lib/dynasm-backend/src/emitter_x64.rs | 6 +- lib/dynasm-backend/src/lib.rs | 1 + lib/dynasm-backend/src/machine.rs | 152 ++++++++++++++++++++++++++ 3 files changed, 156 insertions(+), 3 deletions(-) create mode 100644 lib/dynasm-backend/src/machine.rs diff --git a/lib/dynasm-backend/src/emitter_x64.rs b/lib/dynasm-backend/src/emitter_x64.rs index 70d355a06..91837c189 100644 --- a/lib/dynasm-backend/src/emitter_x64.rs +++ b/lib/dynasm-backend/src/emitter_x64.rs @@ -3,7 +3,7 @@ use dynasmrt::{ }; #[repr(u8)] -#[derive(Copy, Clone, Debug, Eq, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)] pub enum GPR { RAX, RCX, @@ -24,7 +24,7 @@ pub enum GPR { } #[repr(u8)] -#[derive(Copy, Clone, Debug, Eq, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)] pub enum XMM { XMM0, XMM1, @@ -36,7 +36,7 @@ pub enum XMM { XMM7, } -#[derive(Copy, Clone, Debug, Eq, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)] pub enum Location { Imm8(u8), Imm32(u32), diff --git a/lib/dynasm-backend/src/lib.rs b/lib/dynasm-backend/src/lib.rs index 841baa99d..dd36a8d71 100644 --- a/lib/dynasm-backend/src/lib.rs +++ b/lib/dynasm-backend/src/lib.rs @@ -22,6 +22,7 @@ mod parse; mod protect_unix; mod stack; mod emitter_x64; +mod machine; use crate::codegen::{CodegenError, ModuleCodeGenerator}; use crate::parse::LoadError; diff --git a/lib/dynasm-backend/src/machine.rs b/lib/dynasm-backend/src/machine.rs new file mode 100644 index 000000000..2c3181ccc --- /dev/null +++ b/lib/dynasm-backend/src/machine.rs @@ -0,0 +1,152 @@ +use crate::emitter_x64::*; +use std::collections::HashSet; +use wasmparser::Type as WpType; + +pub struct Machine { + used_gprs: HashSet, + used_xmms: HashSet, + control: Vec>, + stack_offset: usize, +} + +#[derive(Debug)] +pub struct ControlFrame { + pub label: E::Label, + pub loop_like: bool, + pub returns: Vec, + pub stack_offset_snapshot: usize, +} + +impl Machine { + /// Picks an unused general purpose register. + /// + /// This method does not mark the register as used. + pub fn pick_gpr(&self) -> Option { + use GPR::*; + static REGS: &'static [GPR] = &[ + //RAX, + RCX, + RDX, + RBX, + RSP, + RBP, + RSI, + RDI, + R8, + R9, + R10, + R11, + //R12, + //R13, + //R14, + //R15 + ]; + for r in REGS { + if !self.used_gprs.contains(r) { + return Some(*r) + } + } + None + } + + /// Picks an unused XMM register. + /// + /// This method does not mark the register as used. + pub fn pick_xmm(&self) -> Option { + use XMM::*; + static REGS: &'static [XMM] = &[ + //XMM0, + //XMM1, + //XMM2, + XMM3, + XMM4, + XMM5, + XMM6, + XMM7, + ]; + for r in REGS { + if !self.used_xmms.contains(r) { + return Some(*r) + } + } + None + } + + /// Acquires locations from the machine state. + /// + /// If the returned locations are used for stack value, `release_location` needs to be called on them; + /// Otherwise, if the returned locations are used for locals, `release_location` does not need to be called on them. + pub fn acquire_locations( + &mut self, + assembler: &mut E, + tys: &[WpType], + ) -> Vec { + let mut ret = vec![]; + let mut delta_stack_offset: usize = 0; + + for ty in tys { + let loc = match *ty { + WpType::F32 | WpType::F64 => { + self.pick_xmm().map(Location::XMM).or_else( + || self.pick_gpr().map(Location::GPR) + ) + }, + WpType::I32 | WpType::I64 => { + self.pick_gpr().map(Location::GPR) + }, + _ => unreachable!() + }; + + let loc = if let Some(x) = loc { + x + } else { + self.stack_offset += 8; + delta_stack_offset += 8; + Location::Memory(GPR::RBP, -(self.stack_offset as i32)) + }; + if let Location::GPR(x) = loc { + self.used_gprs.insert(x); + } else if let Location::XMM(x) = loc { + self.used_xmms.insert(x); + } + ret.push(loc); + } + + assembler.emit_sub(Size::S64, Location::Imm32(delta_stack_offset as u32), Location::GPR(GPR::RSP)); + ret + } + + /// Releases locations used for stack value. + pub fn release_locations( + &mut self, + assembler: &mut E, + locs: &[Location] + ) { + let mut delta_stack_offset: usize = 0; + + for loc in locs { + match *loc { + Location::GPR(ref x) => { + assert_eq!(self.used_gprs.remove(x), true); + }, + Location::XMM(ref x) => { + assert_eq!(self.used_xmms.remove(x), true); + }, + Location::Memory(GPR::RBP, x) => { + if x >= 0 { + unreachable!(); + } + let offset = (-x) as usize; + if offset != self.stack_offset { + unreachable!(); + } + self.stack_offset -= 8; + delta_stack_offset += 8; + }, + _ => {} + } + } + + assembler.emit_add(Size::S64, Location::Imm32(delta_stack_offset as u32), Location::GPR(GPR::RSP)); + } +} From be0815467084496be206259cdc4705a9321f765a Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Thu, 28 Mar 2019 11:23:08 -0700 Subject: [PATCH 005/413] Add wasi crate --- Cargo.toml | 2 +- lib/wasi/Cargo.toml | 7 +++++++ lib/wasi/src/lib.rs | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 lib/wasi/Cargo.toml create mode 100644 lib/wasi/src/lib.rs diff --git a/Cargo.toml b/Cargo.toml index a3b2066ed..06da98dc9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,7 +30,7 @@ wasmer-llvm-backend = { path = "lib/llvm-backend", optional = true } wasmer-dynasm-backend = { path = "lib/dynasm-backend", optional = true } [workspace] -members = ["lib/clif-backend", "lib/dynasm-backend", "lib/runtime", "lib/runtime-core", "lib/emscripten", "lib/spectests", "lib/win-exception-handler", "lib/runtime-c-api", "lib/llvm-backend"] +members = ["lib/clif-backend", "lib/dynasm-backend", "lib/runtime", "lib/runtime-core", "lib/emscripten", "lib/spectests", "lib/win-exception-handler", "lib/runtime-c-api", "lib/llvm-backend", "lib/wasi"] [build-dependencies] wabt = "0.7.2" diff --git a/lib/wasi/Cargo.toml b/lib/wasi/Cargo.toml new file mode 100644 index 000000000..d0a670c5d --- /dev/null +++ b/lib/wasi/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "wasmer-wasi" +version = "0.1.0" +authors = ["The Wasmer Engineering Team "] +edition = "2018" + +[dependencies] diff --git a/lib/wasi/src/lib.rs b/lib/wasi/src/lib.rs new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/lib/wasi/src/lib.rs @@ -0,0 +1 @@ + From 0787d001e36b4b61208c5e18bcc56b210b9ef5bc Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Thu, 28 Mar 2019 11:41:14 -0700 Subject: [PATCH 006/413] Add data support to import macro --- lib/runtime-core/src/import.rs | 14 ++++++++++++++ lib/runtime-core/src/macros.rs | 22 ++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/lib/runtime-core/src/import.rs b/lib/runtime-core/src/import.rs index 4c8401f06..32b089462 100644 --- a/lib/runtime-core/src/import.rs +++ b/lib/runtime-core/src/import.rs @@ -4,6 +4,7 @@ use std::collections::VecDeque; use std::{ cell::{Ref, RefCell}, rc::Rc, + ffi::c_void, }; pub trait LikeNamespace { @@ -45,6 +46,7 @@ impl IsExport for Export { /// ``` pub struct ImportObject { map: Rc>>>, + state_creator: Option (*mut c_void, fn(*mut c_void))>>, } impl ImportObject { @@ -52,6 +54,17 @@ impl ImportObject { pub fn new() -> Self { Self { map: Rc::new(RefCell::new(HashMap::new())), + state_creator: None, + } + } + + pub fn new_with_data(state_creator: F) -> Self + where + F: Fn() -> (*mut c_void, fn(*mut c_void)) + 'static, + { + Self { + map: Rc::new(RefCell::new(HashMap::new())), + state_creator: Some(Rc::new(state_creator)), } } @@ -98,6 +111,7 @@ impl ImportObject { pub fn clone_ref(&self) -> Self { Self { map: Rc::clone(&self.map), + state_creator: self.state_creator.clone(), } } diff --git a/lib/runtime-core/src/macros.rs b/lib/runtime-core/src/macros.rs index e23ce1185..6c608fc92 100644 --- a/lib/runtime-core/src/macros.rs +++ b/lib/runtime-core/src/macros.rs @@ -37,6 +37,13 @@ macro_rules! func { /// "foo" => func!(foo), /// }, /// }; +/// +/// let imports_with_state = imports! { +/// || (0 as _, |_a| {}), +/// "env" => { +/// "foo" => func!(foo), +/// }, +/// }; /// /// fn foo(_: &mut Ctx, n: i32) -> i32 { /// n @@ -57,6 +64,21 @@ macro_rules! imports { import_object.register($ns_name, ns); })* + import_object + }}; + ($state_gen:expr, $( $ns_name:expr => $ns:tt, )* ) => {{ + use $crate::{ + import::{ImportObject, Namespace}, + }; + + let mut import_object = ImportObject::new_with_data($state_gen); + + $({ + let ns = $crate::__imports_internal!($ns); + + import_object.register($ns_name, ns); + })* + import_object }}; } From e3a6b7c9d8ca9ded52b45a531bc098b415e762b2 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Thu, 28 Mar 2019 11:44:31 -0700 Subject: [PATCH 007/413] Add skeleton for wasi abi --- lib/wasi/Cargo.toml | 1 + lib/wasi/src/lib.rs | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/lib/wasi/Cargo.toml b/lib/wasi/Cargo.toml index d0a670c5d..17a2f14f4 100644 --- a/lib/wasi/Cargo.toml +++ b/lib/wasi/Cargo.toml @@ -5,3 +5,4 @@ authors = ["The Wasmer Engineering Team "] edition = "2018" [dependencies] +wasmer-runtime-core = { path = "../runtime-core", version = "0.2.1" } \ No newline at end of file diff --git a/lib/wasi/src/lib.rs b/lib/wasi/src/lib.rs index 8b1378917..bb402c46f 100644 --- a/lib/wasi/src/lib.rs +++ b/lib/wasi/src/lib.rs @@ -1 +1,18 @@ +use wasmer_runtime_core::{ + import::ImportObject, + imports, + func, +}; + +pub fn generate_import_object() -> ImportObject { + imports! { + // This generates the wasi state. + || { + // returns (pointer to state, function that can destruct the state). + }, + "wasi_unstable" => { + + }, + } +} \ No newline at end of file From b7254ce1f5a8c3e331c50aed15e6f7c08b590833 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Thu, 28 Mar 2019 11:54:22 -0700 Subject: [PATCH 008/413] add stubs and dispatch --- Cargo.lock | 7 ++ lib/wasi/src/lib.rs | 56 ++++++++++++-- lib/wasi/src/syscalls/mod.rs | 137 +++++++++++++++++++++++++++++++++++ 3 files changed, 193 insertions(+), 7 deletions(-) create mode 100644 lib/wasi/src/syscalls/mod.rs diff --git a/Cargo.lock b/Cargo.lock index 6e8811b53..af062dc86 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1477,6 +1477,13 @@ dependencies = [ "wasmer-runtime-core 0.2.1", ] +[[package]] +name = "wasmer-wasi" +version = "0.1.0" +dependencies = [ + "wasmer-runtime-core 0.2.1", +] + [[package]] name = "wasmer-win-exception-handler" version = "0.2.0" diff --git a/lib/wasi/src/lib.rs b/lib/wasi/src/lib.rs index bb402c46f..cade01332 100644 --- a/lib/wasi/src/lib.rs +++ b/lib/wasi/src/lib.rs @@ -1,9 +1,7 @@ +mod syscalls; +use syscalls::*; -use wasmer_runtime_core::{ - import::ImportObject, - imports, - func, -}; +use wasmer_runtime_core::{func, import::ImportObject, imports}; pub fn generate_import_object() -> ImportObject { imports! { @@ -12,7 +10,51 @@ pub fn generate_import_object() -> ImportObject { // returns (pointer to state, function that can destruct the state). }, "wasi_unstable" => { - + "__wasi_args_get" => func!(__wasi_args_get), + "__wasi_args_sizes_get" => func!(__wasi_args_sizes_get), + "__wasi_clock_res_get" => func!(__wasi_clock_res_get), + "__wasi_clock_time_get" => func!(__wasi_clock_time_get), + "__wasi_environ_get" => func!(__wasi_environ_get), + "__wasi_environ_sizes_get" => func!(__wasi_environ_sizes_get), + "__wasi_fd_advise" => func!(__wasi_fd_advise), + "__wasi_fd_allocate" => func!(__wasi_fd_allocate), + "__wasi_fd_close" => func!(__wasi_fd_close), + "__wasi_fd_datasync" => func!(__wasi_fd_datasync), + "__wasi_fd_fdstat_get" => func!(__wasi_fd_fdstat_get), + "__wasi_fd_fdstat_set_flags" => func!(__wasi_fd_fdstat_set_flags), + "__wasi_fd_fdstat_set_rights" => func!(__wasi_fd_fdstat_set_rights), + "__wasi_fd_filestat_get" => func!(__wasi_fd_filestat_get), + "__wasi_fd_filestat_set_size" => func!(__wasi_fd_filestat_set_size), + "__wasi_fd_filestat_set_times" => func!(__wasi_fd_filestat_set_times), + "__wasi_fd_pread" => func!(__wasi_fd_pread), + "__wasi_fd_prestat_get" => func!(__wasi_fd_prestat_get), + "__wasi_fd_prestat_dir_name" => func!(__wasi_fd_prestat_dir_name), + "__wasi_fd_pwrite" => func!(__wasi_fd_pwrite), + "__wasi_fd_read" => func!(__wasi_fd_read), + "__wasi_fd_readdir" => func!(__wasi_fd_readdir), + "__wasi_fd_renumber" => func!(__wasi_fd_renumber), + "__wasi_fd_seek" => func!(__wasi_fd_seek), + "__wasi_fd_sync" => func!(__wasi_fd_sync), + "__wasi_fd_tell" => func!(__wasi_fd_tell), + "__wasi_fd_write" => func!(__wasi_fd_write), + "__wasi_path_create_directory" => func!(__wasi_path_create_directory), + "__wasi_path_filestat_get" => func!(__wasi_path_filestat_get), + "__wasi_path_filestat_set_times" => func!(__wasi_path_filestat_set_times), + "__wasi_path_link" => func!(__wasi_path_link), + "__wasi_path_open" => func!(__wasi_path_open), + "__wasi_path_readlink" => func!(__wasi_path_readlink), + "__wasi_path_remove_directory" => func!(__wasi_path_remove_directory), + "__wasi_path_rename" => func!(__wasi_path_rename), + "__wasi_path_symlink" => func!(__wasi_path_symlink), + "__wasi_path_unlink_file" => func!(__wasi_path_unlink_file), + "__wasi_poll_oneoff" => func!(__wasi_poll_oneoff), + "__wasi_proc_exit" => func!(__wasi_proc_exit), + "__wasi_proc_raise" => func!(__wasi_proc_raise), + "__wasi_random_get" => func!(__wasi_random_get), + "__wasi_sched_yield" => func!(__wasi_sched_yield), + "__wasi_sock_recv" => func!(__wasi_sock_recv), + "__wasi_sock_send" => func!(__wasi_sock_send), + "__wasi_sock_shutdown" => func!(__wasi_sock_shutdown), }, } -} \ No newline at end of file +} diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs new file mode 100644 index 000000000..f765e9c87 --- /dev/null +++ b/lib/wasi/src/syscalls/mod.rs @@ -0,0 +1,137 @@ +use wasmer_runtime_core::vm::Ctx; + +pub fn __wasi_args_get(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_args_sizes_get(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_clock_res_get(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_clock_time_get(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_environ_get(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_environ_sizes_get(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_fd_advise(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_fd_allocate(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_fd_close(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_fd_datasync(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_fd_fdstat_get(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_fd_fdstat_set_flags(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_fd_fdstat_set_rights(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_fd_filestat_get(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_fd_filestat_set_size(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_fd_filestat_set_times(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_fd_pread(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_fd_prestat_get(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_fd_prestat_dir_name(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_fd_pwrite(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_fd_read(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_fd_readdir(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_fd_renumber(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_fd_seek(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_fd_sync(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_fd_tell(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_fd_write(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_path_create_directory(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_path_filestat_get(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_path_filestat_set_times(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_path_link(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_path_open(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_path_readlink(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_path_remove_directory(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_path_rename(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_path_symlink(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_path_unlink_file(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_poll_oneoff(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_proc_exit(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_proc_raise(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_random_get(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_sched_yield(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_sock_recv(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_sock_send(ctx: &mut Ctx) { + unimplemented!() +} +pub fn __wasi_sock_shutdown(ctx: &mut Ctx) { + unimplemented!() +} From 7b0992e44f21828a53c8ca8c06b234d24641c09f Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Thu, 28 Mar 2019 11:56:31 -0700 Subject: [PATCH 009/413] Instance now pulls state from the ImportObject --- lib/runtime-core/src/import.rs | 8 ++++++-- lib/runtime-core/src/instance.rs | 11 ++++++++++- lib/runtime-core/src/macros.rs | 2 +- lib/runtime-core/src/vm.rs | 4 ++-- 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/lib/runtime-core/src/import.rs b/lib/runtime-core/src/import.rs index 32b089462..14465deed 100644 --- a/lib/runtime-core/src/import.rs +++ b/lib/runtime-core/src/import.rs @@ -3,8 +3,8 @@ use hashbrown::{hash_map::Entry, HashMap}; use std::collections::VecDeque; use std::{ cell::{Ref, RefCell}, - rc::Rc, ffi::c_void, + rc::Rc, }; pub trait LikeNamespace { @@ -58,7 +58,7 @@ impl ImportObject { } } - pub fn new_with_data(state_creator: F) -> Self + pub fn new_with_data(state_creator: F) -> Self where F: Fn() -> (*mut c_void, fn(*mut c_void)) + 'static, { @@ -68,6 +68,10 @@ impl ImportObject { } } + pub(crate) fn call_state_creator(&self) -> Option<(*mut c_void, fn(*mut c_void))> { + self.state_creator.as_ref().map(|state_gen| state_gen()) + } + /// Register anything that implements `LikeNamespace` as a namespace. /// /// # Usage: diff --git a/lib/runtime-core/src/instance.rs b/lib/runtime-core/src/instance.rs index ba1dcba37..956b95d7b 100644 --- a/lib/runtime-core/src/instance.rs +++ b/lib/runtime-core/src/instance.rs @@ -63,7 +63,16 @@ impl Instance { // Initialize the vm::Ctx in-place after the backing // has been boxed. unsafe { - *inner.vmctx = vm::Ctx::new(&mut inner.backing, &mut inner.import_backing, &module) + *inner.vmctx = match imports.call_state_creator() { + Some((data, dtor)) => vm::Ctx::new_with_data( + &mut inner.backing, + &mut inner.import_backing, + &module, + data, + dtor, + ), + None => vm::Ctx::new(&mut inner.backing, &mut inner.import_backing, &module), + }; }; let instance = Instance { diff --git a/lib/runtime-core/src/macros.rs b/lib/runtime-core/src/macros.rs index 6c608fc92..0fb1c3fc9 100644 --- a/lib/runtime-core/src/macros.rs +++ b/lib/runtime-core/src/macros.rs @@ -37,7 +37,7 @@ macro_rules! func { /// "foo" => func!(foo), /// }, /// }; -/// +/// /// let imports_with_state = imports! { /// || (0 as _, |_a| {}), /// "env" => { diff --git a/lib/runtime-core/src/vm.rs b/lib/runtime-core/src/vm.rs index 8b970587e..90afbc408 100644 --- a/lib/runtime-core/src/vm.rs +++ b/lib/runtime-core/src/vm.rs @@ -25,7 +25,7 @@ pub struct Ctx { module: *const ModuleInner, pub data: *mut c_void, - pub data_finalizer: Option, + pub data_finalizer: Option, } /// The internal context of the currently running WebAssembly instance. @@ -100,7 +100,7 @@ impl Ctx { import_backing: &mut ImportBacking, module: &ModuleInner, data: *mut c_void, - data_finalizer: extern "C" fn(*mut c_void), + data_finalizer: fn(*mut c_void), ) -> Self { Self { internal: InternalCtx { From 94674e9d80d4e8e67f5b14ffcc87b4639ffa2434 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Thu, 28 Mar 2019 12:18:05 -0700 Subject: [PATCH 010/413] Add wasi state --- lib/wasi/src/lib.rs | 29 ++++++++++++++++++++++++----- lib/wasi/src/state.rs | 5 +++++ lib/wasi/src/syscalls/mod.rs | 5 +++++ 3 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 lib/wasi/src/state.rs diff --git a/lib/wasi/src/lib.rs b/lib/wasi/src/lib.rs index cade01332..29f2f3a4f 100644 --- a/lib/wasi/src/lib.rs +++ b/lib/wasi/src/lib.rs @@ -1,14 +1,33 @@ +mod state; mod syscalls; -use syscalls::*; +use self::state::WasiState; +use self::syscalls::*; + +use std::ffi::c_void; use wasmer_runtime_core::{func, import::ImportObject, imports}; -pub fn generate_import_object() -> ImportObject { +pub fn generate_import_object(args: Vec, envs: Vec) -> ImportObject { + let state_gen = move || { + fn state_dtor(data: *mut c_void) { + unsafe { + drop(Box::from_raw(data as *mut WasiState)); + } + } + + let state = Box::new(WasiState { + args: &args[..], + envs: &envs[..], + }); + + ( + Box::leak(state) as *mut WasiState as *mut c_void, + state_dtor as fn(*mut c_void), + ) + }; imports! { // This generates the wasi state. - || { - // returns (pointer to state, function that can destruct the state). - }, + state_gen, "wasi_unstable" => { "__wasi_args_get" => func!(__wasi_args_get), "__wasi_args_sizes_get" => func!(__wasi_args_sizes_get), diff --git a/lib/wasi/src/state.rs b/lib/wasi/src/state.rs new file mode 100644 index 000000000..df5a7ca1e --- /dev/null +++ b/lib/wasi/src/state.rs @@ -0,0 +1,5 @@ +pub struct WasiState<'a> { + // vfs: Vfs, + pub args: &'a [u8], + pub envs: &'a [u8], +} diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index f765e9c87..d4402e8c0 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -1,5 +1,10 @@ +use crate::state::WasiState; use wasmer_runtime_core::vm::Ctx; +fn get_wasi_state(ctx: &mut Ctx) -> &mut WasiState { + unsafe { &mut *(ctx.data as *mut WasiState) } +} + pub fn __wasi_args_get(ctx: &mut Ctx) { unimplemented!() } From bc863fcf0cf3cebf5b10255e0cfa283d80c7e7aa Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Thu, 28 Mar 2019 12:19:23 -0700 Subject: [PATCH 011/413] hook up wasi to wasmer --- Cargo.lock | 1 + Cargo.toml | 4 +++- lib/wasi/src/lib.rs | 4 ++++ lib/wasi/src/utils.rs | 8 ++++++++ src/bin/wasmer.rs | 16 ++++++++++++++++ src/webassembly.rs | 1 + 6 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 lib/wasi/src/utils.rs diff --git a/Cargo.lock b/Cargo.lock index af062dc86..18ac80db9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1339,6 +1339,7 @@ dependencies = [ "wasmer-llvm-backend 0.1.0", "wasmer-runtime 0.2.1", "wasmer-runtime-core 0.2.1", + "wasmer-wasi 0.1.0", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 06da98dc9..db2a2b5f3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,6 +28,7 @@ wasmer-runtime-core = { path = "lib/runtime-core" } wasmer-emscripten = { path = "lib/emscripten" } wasmer-llvm-backend = { path = "lib/llvm-backend", optional = true } wasmer-dynasm-backend = { path = "lib/dynasm-backend", optional = true } +wasmer-wasi = { path = "lib/wasi", optional = true } [workspace] members = ["lib/clif-backend", "lib/dynasm-backend", "lib/runtime", "lib/runtime-core", "lib/emscripten", "lib/spectests", "lib/win-exception-handler", "lib/runtime-c-api", "lib/llvm-backend", "lib/wasi"] @@ -42,4 +43,5 @@ default = ["fast-tests"] # This feature will allow cargo test to run much faster fast-tests = [] llvm = ["wasmer-llvm-backend"] -dynasm = ["wasmer-dynasm-backend"] \ No newline at end of file +dynasm = ["wasmer-dynasm-backend"] +wasi = ["wasmer-wasi"] \ No newline at end of file diff --git a/lib/wasi/src/lib.rs b/lib/wasi/src/lib.rs index cade01332..d6f72cbfc 100644 --- a/lib/wasi/src/lib.rs +++ b/lib/wasi/src/lib.rs @@ -1,6 +1,10 @@ mod syscalls; +mod utils; + use syscalls::*; +pub use self::utils::is_wasi_module; + use wasmer_runtime_core::{func, import::ImportObject, imports}; pub fn generate_import_object() -> ImportObject { diff --git a/lib/wasi/src/utils.rs b/lib/wasi/src/utils.rs new file mode 100644 index 000000000..c6fb3267d --- /dev/null +++ b/lib/wasi/src/utils.rs @@ -0,0 +1,8 @@ +use wasmer_runtime_core::{module::Module, vm::Ctx}; + +// Cargo culting this from our emscripten implementation for now, but it seems like a +// good thing to check; TODO: verify this is useful +pub fn is_wasi_module(module: &Module) -> bool { + true + // TODO: +} diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index 61bd50dac..b12465c99 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -15,6 +15,7 @@ use wasmer::*; use wasmer_emscripten; use wasmer_runtime::cache::{Cache as BaseCache, FileSystemCache, WasmHash, WASMER_VERSION_HASH}; use wasmer_runtime_core::backend::CompilerConfig; +use wasmer_wasi; #[derive(Debug, StructOpt)] #[structopt(name = "wasmer", about = "Wasm execution runtime.")] @@ -200,6 +201,8 @@ fn execute_wasm(options: &Run) -> Result<(), String> { .map_err(|e| format!("Can't compile module: {:?}", e))? }; + // TODO: refactor this + #[cfg(not(features = "wasi"))] let (_abi, import_object, _em_globals) = if wasmer_emscripten::is_emscripten_module(&module) { let mut emscripten_globals = wasmer_emscripten::EmscriptenGlobals::new(&module); ( @@ -215,6 +218,19 @@ fn execute_wasm(options: &Run) -> Result<(), String> { ) }; + #[cfg(features = "wasi")] + let (_abi, import_object) = if wasmer_wasi::is_wasi_module(&module) { + ( + InstanceABI::WASI, + wasmer_emscripten::generate_import_object(), + ) + } else { + ( + InstanceABI::None, + wasmer_runtime_core::import::ImportObject::new(), + ) + }; + let mut instance = module .instantiate(&import_object) .map_err(|e| format!("Can't instantiate module: {:?}", e))?; diff --git a/src/webassembly.rs b/src/webassembly.rs index d34966060..51f1e7a92 100644 --- a/src/webassembly.rs +++ b/src/webassembly.rs @@ -21,6 +21,7 @@ pub struct ResultObject { #[derive(PartialEq)] pub enum InstanceABI { Emscripten, + WASI, None, } From 72dd995522a684ac6ed2a99b782400f2391420d8 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Thu, 28 Mar 2019 12:21:44 -0700 Subject: [PATCH 012/413] fix typo --- src/bin/wasmer.rs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index b12465c99..59f3c8fab 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -220,10 +220,7 @@ fn execute_wasm(options: &Run) -> Result<(), String> { #[cfg(features = "wasi")] let (_abi, import_object) = if wasmer_wasi::is_wasi_module(&module) { - ( - InstanceABI::WASI, - wasmer_emscripten::generate_import_object(), - ) + (InstanceABI::WASI, wasmer_wasi::generate_import_object()) } else { ( InstanceABI::None, From dbc4176964fb7931b7b2f3665d712058e844eef4 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Thu, 28 Mar 2019 12:56:11 -0700 Subject: [PATCH 013/413] Add env and args syscalls --- lib/wasi/src/lib.rs | 2 +- lib/wasi/src/state.rs | 4 +- lib/wasi/src/syscalls/mod.rs | 95 ++++++++++++++++++++++++++++++++---- 3 files changed, 88 insertions(+), 13 deletions(-) diff --git a/lib/wasi/src/lib.rs b/lib/wasi/src/lib.rs index 29f2f3a4f..edbd54aeb 100644 --- a/lib/wasi/src/lib.rs +++ b/lib/wasi/src/lib.rs @@ -7,7 +7,7 @@ use std::ffi::c_void; use wasmer_runtime_core::{func, import::ImportObject, imports}; -pub fn generate_import_object(args: Vec, envs: Vec) -> ImportObject { +pub fn generate_import_object(args: Vec>, envs: Vec>) -> ImportObject { let state_gen = move || { fn state_dtor(data: *mut c_void) { unsafe { diff --git a/lib/wasi/src/state.rs b/lib/wasi/src/state.rs index df5a7ca1e..e7cafc1ba 100644 --- a/lib/wasi/src/state.rs +++ b/lib/wasi/src/state.rs @@ -1,5 +1,5 @@ pub struct WasiState<'a> { // vfs: Vfs, - pub args: &'a [u8], - pub envs: &'a [u8], + pub args: &'a [Vec], + pub envs: &'a [Vec], } diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index d4402e8c0..20e674b00 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -1,28 +1,103 @@ use crate::state::WasiState; -use wasmer_runtime_core::vm::Ctx; +use wasmer_runtime_core::{memory::Memory, vm::Ctx}; -fn get_wasi_state(ctx: &mut Ctx) -> &mut WasiState { +fn get_wasi_state(ctx: &Ctx) -> &mut WasiState { unsafe { &mut *(ctx.data as *mut WasiState) } } -pub fn __wasi_args_get(ctx: &mut Ctx) { - unimplemented!() +fn write_buffer_array( + memory: &Memory, + from: &[Vec], + ptr_buffer_offset: u32, + buffer_offset: u32, +) { + let mut current_buffer_offset = buffer_offset; + for (i, sub_buffer) in from.iter().enumerate() { + memory.view::()[(ptr_buffer_offset as usize)..][i].set(current_buffer_offset); + for (cell, &byte) in memory.view()[(current_buffer_offset as usize)..] + .iter() + .zip(sub_buffer.iter()) + { + cell.set(byte); + } + current_buffer_offset += sub_buffer.len() as u32; + } } -pub fn __wasi_args_sizes_get(ctx: &mut Ctx) { - unimplemented!() + +/// ### `__wasi_args_get()` +/// Read command-line argument data. +/// The sizes of the buffers should match that returned by [`__wasi_args_sizes_get()`](#args_sizes_get). +/// Inputs: +/// - `char **argv` +/// A pointer to a buffer to write the argument pointers. +/// - `char *argv_buf` +/// A pointer to a buffer to write the argument string data. +/// +pub fn __wasi_args_get(ctx: &mut Ctx, ptr_buffer_offset: u32, buffer_offset: u32) { + let state = get_wasi_state(ctx); + let memory = ctx.memory(0); + + write_buffer_array(memory, &*state.args, ptr_buffer_offset, buffer_offset); } + +/// ### `__wasi_args_sizes_get()` +/// Return command-line argument data sizes. +/// Outputs: +/// - `size_t *argc` +/// The number of arguments. +/// - `size_t *argv_buf_size` +/// The size of the argument string data. +pub fn __wasi_args_sizes_get(ctx: &mut Ctx, argc_out: u32, argv_buf_size_out: u32) { + let state = get_wasi_state(ctx); + let memory = ctx.memory(0); + + let arg_count = state.args.len(); + let total_arg_size: usize = state.args.iter().map(|v| v.len()).sum(); + + memory.view::()[(argc_out / 4) as usize].set(arg_count as u32); + memory.view::()[(argv_buf_size_out / 4) as usize].set(total_arg_size as u32); +} + pub fn __wasi_clock_res_get(ctx: &mut Ctx) { unimplemented!() } pub fn __wasi_clock_time_get(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_environ_get(ctx: &mut Ctx) { - unimplemented!() + +/// ### `__wasi_environ_get()` +/// Read environment variable data. +/// The sizes of the buffers should match that returned by [`__wasi_environ_sizes_get()`](#environ_sizes_get). +/// Inputs: +/// - `char **environ` +/// A pointer to a buffer to write the environment variable pointers. +/// - `char *environ_buf` +/// A pointer to a buffer to write the environment variable string data. +pub fn __wasi_environ_get(ctx: &mut Ctx, environ: u32, environ_buf: u32) { + let state = get_wasi_state(ctx); + let memory = ctx.memory(0); + + write_buffer_array(memory, &*state.args, environ, environ_buf); } -pub fn __wasi_environ_sizes_get(ctx: &mut Ctx) { - unimplemented!() + +/// ### `__wasi_environ_sizes_get()` +/// Return command-line argument data sizes. +/// Outputs: +/// - `size_t *environ_count` +/// The number of environment variables. +/// - `size_t *environ_buf_size` +/// The size of the environment variable string data. +pub fn __wasi_environ_sizes_get(ctx: &mut Ctx, environ_count_out: u32, environ_buf_size_out: u32) { + let state = get_wasi_state(ctx); + let memory = ctx.memory(0); + + let env_count = state.envs.len(); + let total_env_size: usize = state.envs.iter().map(|v| v.len()).sum(); + + memory.view::()[(environ_count_out / 4) as usize].set(env_count as u32); + memory.view::()[(environ_buf_size_out / 4) as usize].set(total_env_size as u32); } + pub fn __wasi_fd_advise(ctx: &mut Ctx) { unimplemented!() } From 256253a1d5349540670dbed4ec814e4d6692b277 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Thu, 28 Mar 2019 13:10:22 -0700 Subject: [PATCH 014/413] Fix clippy lint --- lib/wasi/src/syscalls/mod.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 20e674b00..a05c41cea 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -1,6 +1,7 @@ use crate::state::WasiState; use wasmer_runtime_core::{memory::Memory, vm::Ctx}; +#[allow(clippy::mut_from_ref)] fn get_wasi_state(ctx: &Ctx) -> &mut WasiState { unsafe { &mut *(ctx.data as *mut WasiState) } } From 3c01c11f0168501743486afea94244cdc7b83323 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Thu, 28 Mar 2019 13:24:15 -0700 Subject: [PATCH 015/413] pass args and env vars to wasi --- src/bin/wasmer.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index 59f3c8fab..0c493c92e 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -220,7 +220,16 @@ fn execute_wasm(options: &Run) -> Result<(), String> { #[cfg(features = "wasi")] let (_abi, import_object) = if wasmer_wasi::is_wasi_module(&module) { - (InstanceABI::WASI, wasmer_wasi::generate_import_object()) + ( + InstanceABI::WASI, + wasmer_wasi::generate_import_object( + options.args.iter().map(|arg| arg.into_bytes()).collect(), + env::vars() + .iter() + .map(|(k, v)| format!("{}={}", k, v).into_bytes()) + .collect(), + ), + ) } else { ( InstanceABI::None, From a69fdfef3850925d60d3a1224badffa3dac1c5e3 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Thu, 28 Mar 2019 13:46:30 -0700 Subject: [PATCH 016/413] implement wasi check --- lib/wasi/src/utils.rs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/lib/wasi/src/utils.rs b/lib/wasi/src/utils.rs index c6fb3267d..4c3680be2 100644 --- a/lib/wasi/src/utils.rs +++ b/lib/wasi/src/utils.rs @@ -1,8 +1,15 @@ -use wasmer_runtime_core::{module::Module, vm::Ctx}; +use wasmer_runtime_core::module::Module; -// Cargo culting this from our emscripten implementation for now, but it seems like a -// good thing to check; TODO: verify this is useful +/// Check if a provided module is compiled with WASI support pub fn is_wasi_module(module: &Module) -> bool { - true - // TODO: + for (_, import_name) in &module.info().imported_functions { + let namespace = module + .info() + .namespace_table + .get(import_name.namespace_index); + if namespace == "wasi_unstable" { + return true; + } + } + false } From 5c12fd0b49665ed712beaf0fef1f61bf3d2b9764 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Thu, 28 Mar 2019 13:55:38 -0700 Subject: [PATCH 017/413] fix test --- lib/runtime-core/src/vm.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/runtime-core/src/vm.rs b/lib/runtime-core/src/vm.rs index 90afbc408..44511bb82 100644 --- a/lib/runtime-core/src/vm.rs +++ b/lib/runtime-core/src/vm.rs @@ -481,7 +481,7 @@ mod vm_ctx_tests { str: String, } - extern "C" fn test_data_finalizer(data: *mut c_void) { + fn test_data_finalizer(data: *mut c_void) { let test_data: &mut TestData = unsafe { &mut *(data as *mut TestData) }; assert_eq!(test_data.x, 10); assert_eq!(test_data.y, true); From ce22818c35f0ed405114872bf88f9d43f9a33f16 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Thu, 28 Mar 2019 14:22:28 -0700 Subject: [PATCH 018/413] add feature gate on import --- src/bin/wasmer.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index 0c493c92e..29de018e2 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -15,6 +15,7 @@ use wasmer::*; use wasmer_emscripten; use wasmer_runtime::cache::{Cache as BaseCache, FileSystemCache, WasmHash, WASMER_VERSION_HASH}; use wasmer_runtime_core::backend::CompilerConfig; +#[cfg(feature = "wasi")] use wasmer_wasi; #[derive(Debug, StructOpt)] From bde6bdfd3ac3c8d0f1727effbc6967ffd035f38c Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Thu, 28 Mar 2019 14:33:15 -0700 Subject: [PATCH 019/413] Add all wasi types --- lib/wasi/src/syscalls/types.rs | 336 +++++++++++++++++++++++++++++++++ 1 file changed, 336 insertions(+) create mode 100644 lib/wasi/src/syscalls/types.rs diff --git a/lib/wasi/src/syscalls/types.rs b/lib/wasi/src/syscalls/types.rs new file mode 100644 index 000000000..6a927a301 --- /dev/null +++ b/lib/wasi/src/syscalls/types.rs @@ -0,0 +1,336 @@ +#![allow(non_camel_case_types)] + +pub type __wasi_advice_t = u8; +pub const __WASI_ADVICE_DONTNEED: u8 = 0; +pub const __WASI_ADVICE_NOREUSE: u8 = 1; +pub const __WASI_ADVICE_NORMAL: u8 = 2; +pub const __WASI_ADVICE_RANDOM: u8 = 3; +pub const __WASI_ADVICE_SEQUENTIAL: u8 = 4; +pub const __WASI_ADVICE_WILLNEED: u8 = 5; + +#[derive(Debug, Copy, Clone, PartialEq, Eq)] +#[repr(C)] +pub struct __wasi_ciovec_t { + pub buf: u32, + pub buf_len: u32, +} + +pub type __wasi_clockid_t = u32; +pub const __WASI_CLOCK_MONOTONIC: u32 = 0; +pub const __WASI_CLOCK_PROCESS_CPUTIME_ID: u32 = 1; +pub const __WASI_CLOCK_REALTIME: u32 = 2; +pub const __WASI_CLOCK_THREAD_CPUTIME_ID: u32 = 3; + +pub type __wasi_device_t = u64; + +pub type __wasi_dircookie_t = u64; +pub const __WASI_DIRCOOKIE_START: u64 = 0; + +#[derive(Debug, Copy, Clone, PartialEq, Eq)] +#[repr(C)] +pub struct __wasi_dirent_t { + pub d_next: __wasi_dircookie_t, + pub d_ino: __wasi_inode_t, + pub _namlen: u32, + pub d_type: __wasi_filetype_t, +} + +pub type __wasi_errno_t = u16; +pub const __WASI_ESUCCESS: u16 = 0; +pub const __WASI_E2BIG: u16 = 1; +pub const __WASI_EACCES: u16 = 2; +pub const __WASI_EADDRINUSE: u16 = 3; +pub const __WASI_EADDRNOTAVAIL: u16 = 4; +pub const __WASI_EAFNOSUPPORT: u16 = 5; +pub const __WASI_EAGAIN: u16 = 6; +pub const __WASI_EALREADY: u16 = 7; +pub const __WASI_EBADF: u16 = 8; +pub const __WASI_EBADMSG: u16 = 9; +pub const __WASI_EBUSY: u16 = 10; +pub const __WASI_ECANCELED: u16 = 11; +pub const __WASI_ECHILD: u16 = 12; +pub const __WASI_ECONNABORTED: u16 = 13; +pub const __WASI_ECONNREFUSED: u16 = 14; +pub const __WASI_ECONNRESET: u16 = 15; +pub const __WASI_EDEADLK: u16 = 16; +pub const __WASI_EDESTADDRREQ: u16 = 17; +pub const __WASI_EDOM: u16 = 18; +pub const __WASI_EDQUOT: u16 = 19; +pub const __WASI_EEXIST: u16 = 20; +pub const __WASI_EFAULT: u16 = 21; +pub const __WASI_EFBIG: u16 = 22; +pub const __WASI_EHOSTUNREACH: u16 = 23; +pub const __WASI_EIDRM: u16 = 24; +pub const __WASI_EILSEQ: u16 = 25; +pub const __WASI_EINPROGRESS: u16 = 26; +pub const __WASI_EINTR: u16 = 27; +pub const __WASI_EINVAL: u16 = 28; +pub const __WASI_EIO: u16 = 29; +pub const __WASI_EISCONN: u16 = 30; +pub const __WASI_EISDIR: u16 = 31; +pub const __WASI_ELOOP: u16 = 32; +pub const __WASI_EMFILE: u16 = 33; +pub const __WASI_EMLINK: u16 = 34; +pub const __WASI_EMSGSIZE: u16 = 35; +pub const __WASI_EMULTIHOP: u16 = 36; +pub const __WASI_ENAMETOOLONG: u16 = 37; +pub const __WASI_ENETDOWN: u16 = 38; +pub const __WASI_ENETRESET: u16 = 39; +pub const __WASI_ENETUNREACH: u16 = 40; +pub const __WASI_ENFILE: u16 = 41; +pub const __WASI_ENOBUFS: u16 = 42; +pub const __WASI_ENODEV: u16 = 43; +pub const __WASI_ENOENT: u16 = 44; +pub const __WASI_ENOEXEC: u16 = 45; +pub const __WASI_ENOLCK: u16 = 46; +pub const __WASI_ENOLINK: u16 = 47; +pub const __WASI_ENOMEM: u16 = 48; +pub const __WASI_ENOMSG: u16 = 49; +pub const __WASI_ENOPROTOOPT: u16 = 50; +pub const __WASI_ENOSPC: u16 = 51; +pub const __WASI_ENOSYS: u16 = 52; +pub const __WASI_ENOTCONN: u16 = 53; +pub const __WASI_ENOTDIR: u16 = 54; +pub const __WASI_ENOTEMPTY: u16 = 55; +pub const __WASI_ENOTRECOVERABLE: u16 = 56; +pub const __WASI_ENOTSOCK: u16 = 57; +pub const __WASI_ENOTSUP: u16 = 58; +pub const __WASI_ENOTTY: u16 = 59; +pub const __WASI_ENXIO: u16 = 60; +pub const __WASI_EOVERFLOW: u16 = 61; +pub const __WASI_EOWNERDEAD: u16 = 62; +pub const __WASI_EPERM: u16 = 63; +pub const __WASI_EPIPE: u16 = 64; +pub const __WASI_EPROTO: u16 = 65; +pub const __WASI_EPROTONOSUPPORT: u16 = 66; +pub const __WASI_EPROTOTYPE: u16 = 67; +pub const __WASI_ERANGE: u16 = 68; +pub const __WASI_EROFS: u16 = 69; +pub const __WASI_ESPIPE: u16 = 70; +pub const __WASI_ESRCH: u16 = 71; +pub const __WASI_ESTALE: u16 = 72; +pub const __WASI_ETIMEDOUT: u16 = 73; +pub const __WASI_ETXTBSY: u16 = 74; +pub const __WASI_EXDEV: u16 = 75; +pub const __WASI_ENOTCAPABLE: u16 = 76; + +#[derive(Debug, Copy, Clone, PartialEq, Eq)] +#[repr(C)] +pub struct __wasi_event_fd_readwrite_t { + pub nbytes: __wasi_filesize_t, + pub flags: __wasi_eventrwflags_t, +} + +#[derive(Copy, Clone)] +#[repr(C)] +pub union __wasi_event_u { + fd_readwrite: __wasi_event_fd_readwrite_t, +} + +#[derive(Copy, Clone)] +#[repr(C)] +pub struct __wasi_event_t { + pub userdata: __wasi_userdata_t, + pub error: __wasi_errno_t, + pub type_: __wasi_eventtype_t, + pub u: __wasi_event_u, +} + +pub type __wasi_eventrwflags_t = u16; +pub const __WASI_EVENT_FD_READWRITE_HANGUP: u16 = 1 << 0; + +pub type __wasi_eventtype_t = u8; +pub const __WASI_EVENTTYPE_CLOCK: u8 = 0; +pub const __WASI_EVENTTYPE_FD_READ: u8 = 1; +pub const __WASI_EVENTTYPE_FD_WRITE: u8 = 2; + +pub type __wasi_exitcode_t = u32; + +pub type __wasi_fd_t = u32; +pub const __WASI_STDIN_FILENO: u32 = 0; +pub const __WASI_STDOUT_FILENO: u32 = 1; +pub const __WASI_STDERR_FILENO: u32 = 2; + +pub type __wasi_fdflags_t = u16; +pub const __WASI_FDFLAG_APPEND: u16 = 1 << 0; +pub const __WASI_FDFLAG_DSYNC: u16 = 1 << 1; +pub const __WASI_FDFLAG_NONBLOCK: u16 = 1 << 2; +pub const __WASI_FDFLAG_RSYNC: u16 = 1 << 3; +pub const __WASI_FDFLAG_SYNC: u16 = 1 << 4; + +#[derive(Debug, Copy, Clone, PartialEq, Eq)] +#[repr(C)] +pub struct __wasi_fdstat_t { + pub fs_filetype: __wasi_filetype_t, + pub fs_flags: __wasi_fdflags_t, + pub fs_rights_base: __wasi_rights_t, + pub fs_rights_inheriting: __wasi_rights_t, +} + +pub type __wasi_filedelta_t = i64; + +pub type __wasi_filesize_t = u64; + +#[derive(Debug, Copy, Clone, PartialEq, Eq)] +#[repr(C)] +pub struct __wasi_filestat_t { + pub st_dev: __wasi_device_t, + pub st_ino: __wasi_inode_t, + pub st_filetype: __wasi_filetype_t, + pub st_nlink: __wasi_linkcount_t, + pub st_size: __wasi_filesize_t, + pub st_atim: __wasi_timestamp_t, + pub st_mtim: __wasi_timestamp_t, + pub st_ctim: __wasi_timestamp_t, +} + +pub type __wasi_filetype_t = u8; +pub const __WASI_FILETYPE_UNKNOWN: u8 = 0; +pub const __WASI_FILETYPE_BLOCK_DEVICE: u8 = 1; +pub const __WASI_FILETYPE_CHARACTER_DEVICE: u8 = 2; +pub const __WASI_FILETYPE_DIRECTORY: u8 = 3; +pub const __WASI_FILETYPE_REGULAR_FILE: u8 = 4; +pub const __WASI_FILETYPE_SOCKET_DGRAM: u8 = 5; +pub const __WASI_FILETYPE_SOCKET_STREAM: u8 = 6; +pub const __WASI_FILETYPE_SYMBOLIC_LINK: u8 = 7; + +pub type __wasi_fstflags_t = u16; +pub const __WASI_FILESTAT_SET_ATIM: u16 = 1 << 0; +pub const __WASI_FILESTAT_SET_ATIM_NOW: u16 = 1 << 1; +pub const __WASI_FILESTAT_SET_MTIM: u16 = 1 << 2; +pub const __WASI_FILESTAT_SET_MTIM_NOW: u16 = 1 << 3; + +pub type __wasi_inode_t = u64; + +#[derive(Debug, Copy, Clone, PartialEq, Eq)] +#[repr(C)] +pub struct __wasi_iovec_t { + pub buf: u32, + pub buf_len: u32, +} + +pub type __wasi_linkcount_t = u32; + +pub type __wasi_lookupflags_t = u32; +pub const __WASI_LOOKUP_SYMLINK_FOLLOW: u32 = 1 << 0; + +pub type __wasi_oflags_t = u16; +pub const __WASI_O_CREAT: u16 = 1 << 0; +pub const __WASI_O_DIRECTORY: u16 = 1 << 1; +pub const __WASI_O_EXCL: u16 = 1 << 2; +pub const __WASI_O_TRUNC: u16 = 1 << 3; + +pub type __wasi_riflags = u16; +pub const __WASI_SOCK_RECV_PEEK: u16 = 1 << 0; +pub const __WASI_SOCK_RECV_WAITALL: u16 = 1 << 1; + +pub type __wasi_rights_t = u64; +pub const __WASI_RIGHT_FD_DATASYNC: u64 = 1 << 0; +pub const __WASI_RIGHT_FD_READ: u64 = 1 << 1; +pub const __WASI_RIGHT_FD_SEEK: u64 = 1 << 2; +pub const __WASI_RIGHT_FD_FDSTAT_SET_FLAGS: u64 = 1 << 3; +pub const __WASI_RIGHT_FD_SYNC: u64 = 1 << 4; +pub const __WASI_RIGHT_FD_TELL: u64 = 1 << 5; +pub const __WASI_RIGHT_FD_WRITE: u64 = 1 << 6; +pub const __WASI_RIGHT_FD_ADVISE: u64 = 1 << 7; +pub const __WASI_RIGHT_FD_ALLOCATE: u64 = 1 << 8; +pub const __WASI_RIGHT_PATH_CREATE_DIRECTORY: u64 = 1 << 9; +pub const __WASI_RIGHT_PATH_CREATE_FILE: u64 = 1 << 10; +pub const __WASI_RIGHT_PATH_LINK_SOURCE: u64 = 1 << 11; +pub const __WASI_RIGHT_PATH_LINK_TARGET: u64 = 1 << 12; +pub const __WASI_RIGHT_PATH_OPEN: u64 = 1 << 13; +pub const __WASI_RIGHT_FD_READDIR: u64 = 1 << 14; +pub const __WASI_RIGHT_PATH_READLINK: u64 = 1 << 15; +pub const __WASI_RIGHT_PATH_RENAME_SOURCE: u64 = 1 << 16; +pub const __WASI_RIGHT_PATH_RENAME_TARGET: u64 = 1 << 17; +pub const __WASI_RIGHT_PATH_FILESTAT_GET: u64 = 1 << 18; +pub const __WASI_RIGHT_PATH_FILESTAT_SET_SIZE: u64 = 1 << 19; +pub const __WASI_RIGHT_PATH_FILESTAT_SET_TIMES: u64 = 1 << 20; +pub const __WASI_RIGHT_FD_FILESTAT_GET: u64 = 1 << 21; +pub const __WASI_RIGHT_FD_FILESTAT_SET_SIZE: u64 = 1 << 22; +pub const __WASI_RIGHT_FD_FILESTAT_SET_TIMES: u64 = 1 << 23; +pub const __WASI_RIGHT_PATH_SYMLINK: u64 = 1 << 24; +pub const __WASI_RIGHT_PATH_UNLINK_FILE: u64 = 1 << 25; +pub const __WASI_RIGHT_PATH_REMOVE_DIRECTORY: u64 = 1 << 26; +pub const __WASI_RIGHT_POLL_FD_READWRITE: u64 = 1 << 27; +pub const __WASI_RIGHT_SOCK_SHUTDOWN: u64 = 1 << 28; + +pub type __wasi_roflags_t = u16; +pub const __WASI_SOCK_RECV_DATA_TRUNCATED: u16 = 1 << 0; + +pub type __wasi_sdflags_t = u8; +pub const __WASI_SHUT_RD: u8 = 1 << 0; +pub const __WASI_SHUT_WR: u8 = 1 << 1; + +pub type __wasi_siflags_t = u16; + +pub type __wasi_signal_t = u8; +pub const __WASI_SIGABRT: u8 = 0; +pub const __WASI_SIGALRM: u8 = 1; +pub const __WASI_SIGBUS: u8 = 2; +pub const __WASI_SIGCHLD: u8 = 3; +pub const __WASI_SIGCONT: u8 = 4; +pub const __WASI_SIGFPE: u8 = 5; +pub const __WASI_SIGHUP: u8 = 6; +pub const __WASI_SIGILL: u8 = 7; +pub const __WASI_SIGINT: u8 = 8; +pub const __WASI_SIGKILL: u8 = 9; +pub const __WASI_SIGPIPE: u8 = 10; +pub const __WASI_SIGQUIT: u8 = 11; +pub const __WASI_SIGSEGV: u8 = 12; +pub const __WASI_SIGSTOP: u8 = 13; +pub const __WASI_SIGSYS: u8 = 14; +pub const __WASI_SIGTERM: u8 = 15; +pub const __WASI_SIGTRAP: u8 = 16; +pub const __WASI_SIGTSTP: u8 = 17; +pub const __WASI_SIGTTIN: u8 = 18; +pub const __WASI_SIGTTOU: u8 = 19; +pub const __WASI_SIGURG: u8 = 20; +pub const __WASI_SIGUSR1: u8 = 21; +pub const __WASI_SIGUSR2: u8 = 22; +pub const __WASI_SIGVTALRM: u8 = 23; +pub const __WASI_SIGXCPU: u8 = 24; +pub const __WASI_SIGXFSZ: u8 = 25; + +pub type __wasi_subclockflags_t = u16; +pub const __WASI_SUBSCRIPTION_CLOCK_ABSTIME: u16 = 1 << 0; + +#[derive(Debug, Copy, Clone, PartialEq, Eq)] +#[repr(C)] +pub struct __wasi_subscription_clock_t { + pub userdata: __wasi_userdata_t, + pub clock_id: __wasi_clockid_t, + pub timeout: __wasi_timestamp_t, + pub precision: __wasi_timestamp_t, + pub flags: __wasi_subclockflags_t, +} + +#[derive(Debug, Copy, Clone, PartialEq, Eq)] +#[repr(C)] +pub struct __wasi_subscription_fs_readwrite_t { + pub fd: __wasi_fd_t, +} + +#[derive(Copy, Clone)] +#[repr(C)] +pub union __wasi_subscription_u { + clock: __wasi_subscription_clock_t, + fd_readwrite: __wasi_subscription_fs_readwrite_t, +} + +#[derive(Copy, Clone)] +#[repr(C)] +pub struct __wasi_subscription_t { + pub userdata: __wasi_userdata_t, + pub type_: __wasi_eventtype_t, + pub u: __wasi_subscription_u, +} + +pub type __wasi_timestamp_t = u64; + +pub type __wasi_userdata_t = u64; + +pub type __wasi_whence_t = u8; +pub const __WASI_WHENCE_CUR: u8 = 0; +pub const __WASI_WHENCE_END: u8 = 1; +pub const __WASI_WHENCE_SET: u8 = 2; From aed9d3b9b7a07a35cf5b885f990dfe89907ccaac Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Thu, 28 Mar 2019 15:17:52 -0700 Subject: [PATCH 020/413] remove __wasi_ prefix --- lib/wasi/src/lib.rs | 90 +++++++++++++++---------------- lib/wasi/src/syscalls/mod.rs | 102 +++++++++++++++++------------------ 2 files changed, 96 insertions(+), 96 deletions(-) diff --git a/lib/wasi/src/lib.rs b/lib/wasi/src/lib.rs index 64c2750cb..b62f84dfb 100644 --- a/lib/wasi/src/lib.rs +++ b/lib/wasi/src/lib.rs @@ -33,51 +33,51 @@ pub fn generate_import_object(args: Vec>, envs: Vec>) -> ImportO // This generates the wasi state. state_gen, "wasi_unstable" => { - "__wasi_args_get" => func!(__wasi_args_get), - "__wasi_args_sizes_get" => func!(__wasi_args_sizes_get), - "__wasi_clock_res_get" => func!(__wasi_clock_res_get), - "__wasi_clock_time_get" => func!(__wasi_clock_time_get), - "__wasi_environ_get" => func!(__wasi_environ_get), - "__wasi_environ_sizes_get" => func!(__wasi_environ_sizes_get), - "__wasi_fd_advise" => func!(__wasi_fd_advise), - "__wasi_fd_allocate" => func!(__wasi_fd_allocate), - "__wasi_fd_close" => func!(__wasi_fd_close), - "__wasi_fd_datasync" => func!(__wasi_fd_datasync), - "__wasi_fd_fdstat_get" => func!(__wasi_fd_fdstat_get), - "__wasi_fd_fdstat_set_flags" => func!(__wasi_fd_fdstat_set_flags), - "__wasi_fd_fdstat_set_rights" => func!(__wasi_fd_fdstat_set_rights), - "__wasi_fd_filestat_get" => func!(__wasi_fd_filestat_get), - "__wasi_fd_filestat_set_size" => func!(__wasi_fd_filestat_set_size), - "__wasi_fd_filestat_set_times" => func!(__wasi_fd_filestat_set_times), - "__wasi_fd_pread" => func!(__wasi_fd_pread), - "__wasi_fd_prestat_get" => func!(__wasi_fd_prestat_get), - "__wasi_fd_prestat_dir_name" => func!(__wasi_fd_prestat_dir_name), - "__wasi_fd_pwrite" => func!(__wasi_fd_pwrite), - "__wasi_fd_read" => func!(__wasi_fd_read), - "__wasi_fd_readdir" => func!(__wasi_fd_readdir), - "__wasi_fd_renumber" => func!(__wasi_fd_renumber), - "__wasi_fd_seek" => func!(__wasi_fd_seek), - "__wasi_fd_sync" => func!(__wasi_fd_sync), - "__wasi_fd_tell" => func!(__wasi_fd_tell), - "__wasi_fd_write" => func!(__wasi_fd_write), - "__wasi_path_create_directory" => func!(__wasi_path_create_directory), - "__wasi_path_filestat_get" => func!(__wasi_path_filestat_get), - "__wasi_path_filestat_set_times" => func!(__wasi_path_filestat_set_times), - "__wasi_path_link" => func!(__wasi_path_link), - "__wasi_path_open" => func!(__wasi_path_open), - "__wasi_path_readlink" => func!(__wasi_path_readlink), - "__wasi_path_remove_directory" => func!(__wasi_path_remove_directory), - "__wasi_path_rename" => func!(__wasi_path_rename), - "__wasi_path_symlink" => func!(__wasi_path_symlink), - "__wasi_path_unlink_file" => func!(__wasi_path_unlink_file), - "__wasi_poll_oneoff" => func!(__wasi_poll_oneoff), - "__wasi_proc_exit" => func!(__wasi_proc_exit), - "__wasi_proc_raise" => func!(__wasi_proc_raise), - "__wasi_random_get" => func!(__wasi_random_get), - "__wasi_sched_yield" => func!(__wasi_sched_yield), - "__wasi_sock_recv" => func!(__wasi_sock_recv), - "__wasi_sock_send" => func!(__wasi_sock_send), - "__wasi_sock_shutdown" => func!(__wasi_sock_shutdown), + "args_get" => func!(args_get), + "args_sizes_get" => func!(args_sizes_get), + "clock_res_get" => func!(clock_res_get), + "clock_time_get" => func!(clock_time_get), + "environ_get" => func!(environ_get), + "environ_sizes_get" => func!(environ_sizes_get), + "fd_advise" => func!(fd_advise), + "fd_allocate" => func!(fd_allocate), + "fd_close" => func!(fd_close), + "fd_datasync" => func!(fd_datasync), + "fd_fdstat_get" => func!(fd_fdstat_get), + "fd_fdstat_set_flags" => func!(fd_fdstat_set_flags), + "fd_fdstat_set_rights" => func!(fd_fdstat_set_rights), + "fd_filestat_get" => func!(fd_filestat_get), + "fd_filestat_set_size" => func!(fd_filestat_set_size), + "fd_filestat_set_times" => func!(fd_filestat_set_times), + "fd_pread" => func!(fd_pread), + "fd_prestat_get" => func!(fd_prestat_get), + "fd_prestat_dir_name" => func!(fd_prestat_dir_name), + "fd_pwrite" => func!(fd_pwrite), + "fd_read" => func!(fd_read), + "fd_readdir" => func!(fd_readdir), + "fd_renumber" => func!(fd_renumber), + "fd_seek" => func!(fd_seek), + "fd_sync" => func!(fd_sync), + "fd_tell" => func!(fd_tell), + "fd_write" => func!(fd_write), + "path_create_directory" => func!(path_create_directory), + "path_filestat_get" => func!(path_filestat_get), + "path_filestat_set_times" => func!(path_filestat_set_times), + "path_link" => func!(path_link), + "path_open" => func!(path_open), + "path_readlink" => func!(path_readlink), + "path_remove_directory" => func!(path_remove_directory), + "path_rename" => func!(path_rename), + "path_symlink" => func!(path_symlink), + "path_unlink_file" => func!(path_unlink_file), + "poll_oneoff" => func!(poll_oneoff), + "proc_exit" => func!(proc_exit), + "proc_raise" => func!(proc_raise), + "random_get" => func!(random_get), + "sched_yield" => func!(sched_yield), + "sock_recv" => func!(sock_recv), + "sock_send" => func!(sock_send), + "sock_shutdown" => func!(sock_shutdown), }, } } diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index a05c41cea..0c5f2f9b0 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -25,30 +25,30 @@ fn write_buffer_array( } } -/// ### `__wasi_args_get()` +/// ### `args_get()` /// Read command-line argument data. -/// The sizes of the buffers should match that returned by [`__wasi_args_sizes_get()`](#args_sizes_get). +/// The sizes of the buffers should match that returned by [`args_sizes_get()`](#args_sizes_get). /// Inputs: /// - `char **argv` /// A pointer to a buffer to write the argument pointers. /// - `char *argv_buf` /// A pointer to a buffer to write the argument string data. /// -pub fn __wasi_args_get(ctx: &mut Ctx, ptr_buffer_offset: u32, buffer_offset: u32) { +pub fn args_get(ctx: &mut Ctx, ptr_buffer_offset: u32, buffer_offset: u32) { let state = get_wasi_state(ctx); let memory = ctx.memory(0); write_buffer_array(memory, &*state.args, ptr_buffer_offset, buffer_offset); } -/// ### `__wasi_args_sizes_get()` +/// ### `args_sizes_get()` /// Return command-line argument data sizes. /// Outputs: /// - `size_t *argc` /// The number of arguments. /// - `size_t *argv_buf_size` /// The size of the argument string data. -pub fn __wasi_args_sizes_get(ctx: &mut Ctx, argc_out: u32, argv_buf_size_out: u32) { +pub fn args_sizes_get(ctx: &mut Ctx, argc_out: u32, argv_buf_size_out: u32) { let state = get_wasi_state(ctx); let memory = ctx.memory(0); @@ -59,36 +59,36 @@ pub fn __wasi_args_sizes_get(ctx: &mut Ctx, argc_out: u32, argv_buf_size_out: u3 memory.view::()[(argv_buf_size_out / 4) as usize].set(total_arg_size as u32); } -pub fn __wasi_clock_res_get(ctx: &mut Ctx) { +pub fn clock_res_get(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_clock_time_get(ctx: &mut Ctx) { +pub fn clock_time_get(ctx: &mut Ctx) { unimplemented!() } -/// ### `__wasi_environ_get()` +/// ### `environ_get()` /// Read environment variable data. -/// The sizes of the buffers should match that returned by [`__wasi_environ_sizes_get()`](#environ_sizes_get). +/// The sizes of the buffers should match that returned by [`environ_sizes_get()`](#environ_sizes_get). /// Inputs: /// - `char **environ` /// A pointer to a buffer to write the environment variable pointers. /// - `char *environ_buf` /// A pointer to a buffer to write the environment variable string data. -pub fn __wasi_environ_get(ctx: &mut Ctx, environ: u32, environ_buf: u32) { +pub fn environ_get(ctx: &mut Ctx, environ: u32, environ_buf: u32) { let state = get_wasi_state(ctx); let memory = ctx.memory(0); write_buffer_array(memory, &*state.args, environ, environ_buf); } -/// ### `__wasi_environ_sizes_get()` +/// ### `environ_sizes_get()` /// Return command-line argument data sizes. /// Outputs: /// - `size_t *environ_count` /// The number of environment variables. /// - `size_t *environ_buf_size` /// The size of the environment variable string data. -pub fn __wasi_environ_sizes_get(ctx: &mut Ctx, environ_count_out: u32, environ_buf_size_out: u32) { +pub fn environ_sizes_get(ctx: &mut Ctx, environ_count_out: u32, environ_buf_size_out: u32) { let state = get_wasi_state(ctx); let memory = ctx.memory(0); @@ -99,120 +99,120 @@ pub fn __wasi_environ_sizes_get(ctx: &mut Ctx, environ_count_out: u32, environ_b memory.view::()[(environ_buf_size_out / 4) as usize].set(total_env_size as u32); } -pub fn __wasi_fd_advise(ctx: &mut Ctx) { +pub fn fd_advise(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_fd_allocate(ctx: &mut Ctx) { +pub fn fd_allocate(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_fd_close(ctx: &mut Ctx) { +pub fn fd_close(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_fd_datasync(ctx: &mut Ctx) { +pub fn fd_datasync(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_fd_fdstat_get(ctx: &mut Ctx) { +pub fn fd_fdstat_get(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_fd_fdstat_set_flags(ctx: &mut Ctx) { +pub fn fd_fdstat_set_flags(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_fd_fdstat_set_rights(ctx: &mut Ctx) { +pub fn fd_fdstat_set_rights(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_fd_filestat_get(ctx: &mut Ctx) { +pub fn fd_filestat_get(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_fd_filestat_set_size(ctx: &mut Ctx) { +pub fn fd_filestat_set_size(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_fd_filestat_set_times(ctx: &mut Ctx) { +pub fn fd_filestat_set_times(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_fd_pread(ctx: &mut Ctx) { +pub fn fd_pread(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_fd_prestat_get(ctx: &mut Ctx) { +pub fn fd_prestat_get(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_fd_prestat_dir_name(ctx: &mut Ctx) { +pub fn fd_prestat_dir_name(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_fd_pwrite(ctx: &mut Ctx) { +pub fn fd_pwrite(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_fd_read(ctx: &mut Ctx) { +pub fn fd_read(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_fd_readdir(ctx: &mut Ctx) { +pub fn fd_readdir(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_fd_renumber(ctx: &mut Ctx) { +pub fn fd_renumber(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_fd_seek(ctx: &mut Ctx) { +pub fn fd_seek(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_fd_sync(ctx: &mut Ctx) { +pub fn fd_sync(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_fd_tell(ctx: &mut Ctx) { +pub fn fd_tell(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_fd_write(ctx: &mut Ctx) { +pub fn fd_write(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_path_create_directory(ctx: &mut Ctx) { +pub fn path_create_directory(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_path_filestat_get(ctx: &mut Ctx) { +pub fn path_filestat_get(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_path_filestat_set_times(ctx: &mut Ctx) { +pub fn path_filestat_set_times(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_path_link(ctx: &mut Ctx) { +pub fn path_link(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_path_open(ctx: &mut Ctx) { +pub fn path_open(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_path_readlink(ctx: &mut Ctx) { +pub fn path_readlink(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_path_remove_directory(ctx: &mut Ctx) { +pub fn path_remove_directory(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_path_rename(ctx: &mut Ctx) { +pub fn path_rename(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_path_symlink(ctx: &mut Ctx) { +pub fn path_symlink(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_path_unlink_file(ctx: &mut Ctx) { +pub fn path_unlink_file(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_poll_oneoff(ctx: &mut Ctx) { +pub fn poll_oneoff(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_proc_exit(ctx: &mut Ctx) { +pub fn proc_exit(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_proc_raise(ctx: &mut Ctx) { +pub fn proc_raise(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_random_get(ctx: &mut Ctx) { +pub fn random_get(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_sched_yield(ctx: &mut Ctx) { +pub fn sched_yield(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_sock_recv(ctx: &mut Ctx) { +pub fn sock_recv(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_sock_send(ctx: &mut Ctx) { +pub fn sock_send(ctx: &mut Ctx) { unimplemented!() } -pub fn __wasi_sock_shutdown(ctx: &mut Ctx) { +pub fn sock_shutdown(ctx: &mut Ctx) { unimplemented!() } From 46f90d3415bb95ccd98f92ad95ceffda17a314c2 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Thu, 28 Mar 2019 15:42:34 -0700 Subject: [PATCH 021/413] fix conditional compliation --- src/bin/wasmer.rs | 70 +++++++++++++++++++++++++---------------------- 1 file changed, 38 insertions(+), 32 deletions(-) diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index 29de018e2..9b9183189 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -203,39 +203,45 @@ fn execute_wasm(options: &Run) -> Result<(), String> { }; // TODO: refactor this - #[cfg(not(features = "wasi"))] - let (_abi, import_object, _em_globals) = if wasmer_emscripten::is_emscripten_module(&module) { - let mut emscripten_globals = wasmer_emscripten::EmscriptenGlobals::new(&module); - ( - InstanceABI::Emscripten, - wasmer_emscripten::generate_emscripten_env(&mut emscripten_globals), - Some(emscripten_globals), // TODO Em Globals is here to extend, lifetime, find better solution - ) + let (_abi, import_object, _em_globals) = if cfg!(feature = "wasi") { + if wasmer_wasi::is_wasi_module(&module) { + ( + InstanceABI::WASI, + wasmer_wasi::generate_import_object( + options + .args + .iter() + .cloned() + .map(|arg| arg.into_bytes()) + .collect(), + env::vars() + .map(|(k, v)| format!("{}={}", k, v).into_bytes()) + .collect(), + ), + None, + ) + } else { + ( + InstanceABI::None, + wasmer_runtime_core::import::ImportObject::new(), + None, + ) + } } else { - ( - InstanceABI::None, - wasmer_runtime_core::import::ImportObject::new(), - None, - ) - }; - - #[cfg(features = "wasi")] - let (_abi, import_object) = if wasmer_wasi::is_wasi_module(&module) { - ( - InstanceABI::WASI, - wasmer_wasi::generate_import_object( - options.args.iter().map(|arg| arg.into_bytes()).collect(), - env::vars() - .iter() - .map(|(k, v)| format!("{}={}", k, v).into_bytes()) - .collect(), - ), - ) - } else { - ( - InstanceABI::None, - wasmer_runtime_core::import::ImportObject::new(), - ) + if wasmer_emscripten::is_emscripten_module(&module) { + let mut emscripten_globals = wasmer_emscripten::EmscriptenGlobals::new(&module); + ( + InstanceABI::Emscripten, + wasmer_emscripten::generate_emscripten_env(&mut emscripten_globals), + Some(emscripten_globals), // TODO Em Globals is here to extend, lifetime, find better solution + ) + } else { + ( + InstanceABI::None, + wasmer_runtime_core::import::ImportObject::new(), + None, + ) + } }; let mut instance = module From 9478ba71af7d0df5d7c73c09120a1911bf39606a Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Thu, 28 Mar 2019 15:47:00 -0700 Subject: [PATCH 022/413] actually fix it --- src/bin/wasmer.rs | 74 +++++++++++++++++++++++------------------------ 1 file changed, 36 insertions(+), 38 deletions(-) diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index 9b9183189..5f80c2640 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -203,45 +203,43 @@ fn execute_wasm(options: &Run) -> Result<(), String> { }; // TODO: refactor this - let (_abi, import_object, _em_globals) = if cfg!(feature = "wasi") { - if wasmer_wasi::is_wasi_module(&module) { - ( - InstanceABI::WASI, - wasmer_wasi::generate_import_object( - options - .args - .iter() - .cloned() - .map(|arg| arg.into_bytes()) - .collect(), - env::vars() - .map(|(k, v)| format!("{}={}", k, v).into_bytes()) - .collect(), - ), - None, - ) - } else { - ( - InstanceABI::None, - wasmer_runtime_core::import::ImportObject::new(), - None, - ) - } + #[cfg(not(feature = "wasi"))] + let (_abi, import_object, _em_globals) = if wasmer_emscripten::is_emscripten_module(&module) { + let mut emscripten_globals = wasmer_emscripten::EmscriptenGlobals::new(&module); + ( + InstanceABI::Emscripten, + wasmer_emscripten::generate_emscripten_env(&mut emscripten_globals), + Some(emscripten_globals), // TODO Em Globals is here to extend, lifetime, find better solution + ) } else { - if wasmer_emscripten::is_emscripten_module(&module) { - let mut emscripten_globals = wasmer_emscripten::EmscriptenGlobals::new(&module); - ( - InstanceABI::Emscripten, - wasmer_emscripten::generate_emscripten_env(&mut emscripten_globals), - Some(emscripten_globals), // TODO Em Globals is here to extend, lifetime, find better solution - ) - } else { - ( - InstanceABI::None, - wasmer_runtime_core::import::ImportObject::new(), - None, - ) - } + ( + InstanceABI::None, + wasmer_runtime_core::import::ImportObject::new(), + None, + ) + }; + + #[cfg(feature = "wasi")] + let (_abi, import_object) = if wasmer_wasi::is_wasi_module(&module) { + ( + InstanceABI::WASI, + wasmer_wasi::generate_import_object( + options + .args + .iter() + .cloned() + .map(|arg| arg.into_bytes()) + .collect(), + env::vars() + .map(|(k, v)| format!("{}={}", k, v).into_bytes()) + .collect(), + ), + ) + } else { + ( + InstanceABI::None, + wasmer_runtime_core::import::ImportObject::new(), + ) }; let mut instance = module From c45de2207ee85e729f0accb31713d9711c526ff1 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Thu, 28 Mar 2019 17:00:10 -0700 Subject: [PATCH 023/413] Add helper types and half-ish of the wasi signatures --- lib/runtime-core/src/types.rs | 13 +++ lib/wasi/src/lib.rs | 1 + lib/wasi/src/ptr.rs | 89 ++++++++++++++++ lib/wasi/src/syscalls/mod.rs | 180 ++++++++++++++++++++++++--------- lib/wasi/src/syscalls/types.rs | 7 +- 5 files changed, 243 insertions(+), 47 deletions(-) create mode 100644 lib/wasi/src/ptr.rs diff --git a/lib/runtime-core/src/types.rs b/lib/runtime-core/src/types.rs index 9ee5270dd..d9e983f34 100644 --- a/lib/runtime-core/src/types.rs +++ b/lib/runtime-core/src/types.rs @@ -77,6 +77,19 @@ where { const TYPE: Type; } + +unsafe impl WasmExternType for i8 { + const TYPE: Type = Type::I32; +} +unsafe impl WasmExternType for u8 { + const TYPE: Type = Type::I32; +} +unsafe impl WasmExternType for i16 { + const TYPE: Type = Type::I32; +} +unsafe impl WasmExternType for u16 { + const TYPE: Type = Type::I32; +} unsafe impl WasmExternType for i32 { const TYPE: Type = Type::I32; } diff --git a/lib/wasi/src/lib.rs b/lib/wasi/src/lib.rs index b62f84dfb..3dcb2f7cb 100644 --- a/lib/wasi/src/lib.rs +++ b/lib/wasi/src/lib.rs @@ -1,3 +1,4 @@ +mod ptr; mod state; mod syscalls; mod utils; diff --git a/lib/wasi/src/ptr.rs b/lib/wasi/src/ptr.rs new file mode 100644 index 000000000..efc851858 --- /dev/null +++ b/lib/wasi/src/ptr.rs @@ -0,0 +1,89 @@ +use std::{cell::Cell, fmt, marker::PhantomData, mem}; +use wasmer_runtime_core::{ + memory::Memory, + types::{Type, ValueType, WasmExternType}, +}; + +pub struct Array; +pub struct Item; + +#[repr(transparent)] +pub struct WasmPtr { + offset: u32, + _phantom: PhantomData<(T, Ty)>, +} + +impl WasmPtr { + pub fn new(offset: u32) -> Self { + Self { + offset, + _phantom: PhantomData, + } + } + + pub fn offset(self) -> u32 { + self.offset + } +} + +impl WasmPtr { + pub fn deref<'a>(self, memory: &'a Memory) -> Option<&'a Cell> { + if (self.offset as usize) + mem::size_of::() >= memory.size().bytes().0 { + return None; + } + unsafe { + let cell_ptr = memory + .view::() + .get_unchecked((self.offset() as usize) / mem::size_of::()) + as *const _; + Some(&*cell_ptr) + } + } +} + +impl WasmPtr { + pub fn deref<'a>(self, memory: &'a Memory, length: u32) -> Option<&'a [Cell]> { + if (self.offset as usize) + (mem::size_of::() * (length as usize)) + >= memory.size().bytes().0 + { + return None; + } + + unsafe { + let cell_ptrs = memory.view::().get_unchecked( + ((self.offset() as usize) / mem::size_of::()) + ..((self.offset() as usize) / mem::size_of::()) + (length as usize), + ) as *const _; + Some(&*cell_ptrs) + } + } +} + +unsafe impl WasmExternType for WasmPtr { + const TYPE: Type = Type::I32; +} + +impl Clone for WasmPtr { + fn clone(&self) -> Self { + Self { + offset: self.offset, + _phantom: PhantomData, + } + } +} + +impl Copy for WasmPtr {} + +impl PartialEq for WasmPtr { + fn eq(&self, other: &Self) -> bool { + self.offset == other.offset + } +} + +impl Eq for WasmPtr {} + +impl fmt::Debug for WasmPtr { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "WasmPtr({:#x})", self.offset) + } +} diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 0c5f2f9b0..606c877a2 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -1,4 +1,12 @@ -use crate::state::WasiState; +#![allow(unused)] + +mod types; + +use self::types::*; +use crate::{ + ptr::{Array, WasmPtr}, + state::WasiState, +}; use wasmer_runtime_core::{memory::Memory, vm::Ctx}; #[allow(clippy::mut_from_ref)] @@ -34,11 +42,13 @@ fn write_buffer_array( /// - `char *argv_buf` /// A pointer to a buffer to write the argument string data. /// -pub fn args_get(ctx: &mut Ctx, ptr_buffer_offset: u32, buffer_offset: u32) { +pub fn args_get(ctx: &mut Ctx, ptr_buffer_offset: u32, buffer_offset: u32) -> __wasi_errno_t { let state = get_wasi_state(ctx); let memory = ctx.memory(0); write_buffer_array(memory, &*state.args, ptr_buffer_offset, buffer_offset); + + __WASI_ESUCCESS } /// ### `args_sizes_get()` @@ -48,7 +58,7 @@ pub fn args_get(ctx: &mut Ctx, ptr_buffer_offset: u32, buffer_offset: u32) { /// The number of arguments. /// - `size_t *argv_buf_size` /// The size of the argument string data. -pub fn args_sizes_get(ctx: &mut Ctx, argc_out: u32, argv_buf_size_out: u32) { +pub fn args_sizes_get(ctx: &mut Ctx, argc_out: u32, argv_buf_size_out: u32) -> __wasi_errno_t { let state = get_wasi_state(ctx); let memory = ctx.memory(0); @@ -57,12 +67,23 @@ pub fn args_sizes_get(ctx: &mut Ctx, argc_out: u32, argv_buf_size_out: u32) { memory.view::()[(argc_out / 4) as usize].set(arg_count as u32); memory.view::()[(argv_buf_size_out / 4) as usize].set(total_arg_size as u32); + + __WASI_ESUCCESS } -pub fn clock_res_get(ctx: &mut Ctx) { +pub fn clock_res_get( + ctx: &mut Ctx, + clock_id: __wasi_clockid_t, + resolution: WasmPtr<__wasi_timestamp_t>, +) -> __wasi_errno_t { unimplemented!() } -pub fn clock_time_get(ctx: &mut Ctx) { +pub fn clock_time_get( + ctx: &mut Ctx, + clock_id: __wasi_clockid_t, + precision: __wasi_timestamp_t, + time: WasmPtr<__wasi_timestamp_t>, +) -> __wasi_errno_t { unimplemented!() } @@ -74,11 +95,13 @@ pub fn clock_time_get(ctx: &mut Ctx) { /// A pointer to a buffer to write the environment variable pointers. /// - `char *environ_buf` /// A pointer to a buffer to write the environment variable string data. -pub fn environ_get(ctx: &mut Ctx, environ: u32, environ_buf: u32) { +pub fn environ_get(ctx: &mut Ctx, environ: u32, environ_buf: u32) -> __wasi_errno_t { let state = get_wasi_state(ctx); let memory = ctx.memory(0); write_buffer_array(memory, &*state.args, environ, environ_buf); + + __WASI_ESUCCESS } /// ### `environ_sizes_get()` @@ -88,7 +111,11 @@ pub fn environ_get(ctx: &mut Ctx, environ: u32, environ_buf: u32) { /// The number of environment variables. /// - `size_t *environ_buf_size` /// The size of the environment variable string data. -pub fn environ_sizes_get(ctx: &mut Ctx, environ_count_out: u32, environ_buf_size_out: u32) { +pub fn environ_sizes_get( + ctx: &mut Ctx, + environ_count_out: u32, + environ_buf_size_out: u32, +) -> __wasi_errno_t { let state = get_wasi_state(ctx); let memory = ctx.memory(0); @@ -97,122 +124,185 @@ pub fn environ_sizes_get(ctx: &mut Ctx, environ_count_out: u32, environ_buf_size memory.view::()[(environ_count_out / 4) as usize].set(env_count as u32); memory.view::()[(environ_buf_size_out / 4) as usize].set(total_env_size as u32); + + __WASI_ESUCCESS } -pub fn fd_advise(ctx: &mut Ctx) { +pub fn fd_advise( + ctx: &mut Ctx, + fd: __wasi_fd_t, + offset: __wasi_filesize_t, + len: __wasi_filesize_t, + advice: __wasi_advice_t, +) -> __wasi_errno_t { unimplemented!() } -pub fn fd_allocate(ctx: &mut Ctx) { +pub fn fd_allocate( + ctx: &mut Ctx, + fd: __wasi_fd_t, + offset: __wasi_filesize_t, + len: __wasi_filesize_t, +) -> __wasi_errno_t { unimplemented!() } -pub fn fd_close(ctx: &mut Ctx) { +pub fn fd_close(ctx: &mut Ctx, fd: __wasi_fd_t) -> __wasi_errno_t { unimplemented!() } -pub fn fd_datasync(ctx: &mut Ctx) { +pub fn fd_datasync(ctx: &mut Ctx, fd: __wasi_fd_t) -> __wasi_errno_t { unimplemented!() } -pub fn fd_fdstat_get(ctx: &mut Ctx) { +pub fn fd_fdstat_get( + ctx: &mut Ctx, + fd: __wasi_fd_t, + buf: WasmPtr<__wasi_fdstat_t>, +) -> __wasi_errno_t { unimplemented!() } -pub fn fd_fdstat_set_flags(ctx: &mut Ctx) { +pub fn fd_fdstat_set_flags( + ctx: &mut Ctx, + fd: __wasi_fd_t, + flags: __wasi_fdflags_t, +) -> __wasi_errno_t { unimplemented!() } -pub fn fd_fdstat_set_rights(ctx: &mut Ctx) { +pub fn fd_fdstat_set_rights( + ctx: &mut Ctx, + fd: __wasi_fd_t, + fs_rights_base: __wasi_rights_t, + fs_rights_inheriting: __wasi_rights_t, +) -> __wasi_errno_t { unimplemented!() } -pub fn fd_filestat_get(ctx: &mut Ctx) { +pub fn fd_filestat_get( + ctx: &mut Ctx, + fd: __wasi_fd_t, + buf: WasmPtr<__wasi_filestat_t>, +) -> __wasi_errno_t { unimplemented!() } -pub fn fd_filestat_set_size(ctx: &mut Ctx) { +pub fn fd_filestat_set_size( + ctx: &mut Ctx, + fd: __wasi_fd_t, + st_size: __wasi_filesize_t, +) -> __wasi_errno_t { unimplemented!() } -pub fn fd_filestat_set_times(ctx: &mut Ctx) { +pub fn fd_filestat_set_times( + ctx: &mut Ctx, + fd: __wasi_fd_t, + st_atim: __wasi_timestamp_t, + st_mtim: __wasi_timestamp_t, + fst_flags: __wasi_fstflags_t, +) -> __wasi_errno_t { unimplemented!() } -pub fn fd_pread(ctx: &mut Ctx) { +pub fn fd_pread( + ctx: &mut Ctx, + fd: __wasi_fd_t, + iovs: WasmPtr<__wasi_iovec_t, Array>, + iovs_len: u32, + offset: __wasi_filesize_t, + nread: WasmPtr, +) -> __wasi_errno_t { unimplemented!() } -pub fn fd_prestat_get(ctx: &mut Ctx) { +pub fn fd_prestat_get( + ctx: &mut Ctx, + fd: __wasi_fd_t, + buf: WasmPtr<__wasi_fdstat_t>, +) -> __wasi_errno_t { unimplemented!() } -pub fn fd_prestat_dir_name(ctx: &mut Ctx) { +pub fn fd_prestat_dir_name( + ctx: &mut Ctx, + fd: __wasi_fd_t, + path: WasmPtr, + path_len: u32, +) -> __wasi_errno_t { unimplemented!() } -pub fn fd_pwrite(ctx: &mut Ctx) { +pub fn fd_pwrite( + ctx: &mut Ctx, + fd: __wasi_fd_t, + iovs: WasmPtr<__wasi_ciovec_t, Array>, + iovs_len: u32, + offset: __wasi_filesize_t, + nwritten: WasmPtr, +) -> __wasi_errno_t { unimplemented!() } -pub fn fd_read(ctx: &mut Ctx) { +pub fn fd_read(ctx: &mut Ctx) -> __wasi_errno_t { unimplemented!() } -pub fn fd_readdir(ctx: &mut Ctx) { +pub fn fd_readdir(ctx: &mut Ctx) -> __wasi_errno_t { unimplemented!() } -pub fn fd_renumber(ctx: &mut Ctx) { +pub fn fd_renumber(ctx: &mut Ctx) -> __wasi_errno_t { unimplemented!() } -pub fn fd_seek(ctx: &mut Ctx) { +pub fn fd_seek(ctx: &mut Ctx) -> __wasi_errno_t { unimplemented!() } -pub fn fd_sync(ctx: &mut Ctx) { +pub fn fd_sync(ctx: &mut Ctx) -> __wasi_errno_t { unimplemented!() } -pub fn fd_tell(ctx: &mut Ctx) { +pub fn fd_tell(ctx: &mut Ctx) -> __wasi_errno_t { unimplemented!() } -pub fn fd_write(ctx: &mut Ctx) { +pub fn fd_write(ctx: &mut Ctx) -> __wasi_errno_t { unimplemented!() } -pub fn path_create_directory(ctx: &mut Ctx) { +pub fn path_create_directory(ctx: &mut Ctx) -> __wasi_errno_t { unimplemented!() } -pub fn path_filestat_get(ctx: &mut Ctx) { +pub fn path_filestat_get(ctx: &mut Ctx) -> __wasi_errno_t { unimplemented!() } -pub fn path_filestat_set_times(ctx: &mut Ctx) { +pub fn path_filestat_set_times(ctx: &mut Ctx) -> __wasi_errno_t { unimplemented!() } -pub fn path_link(ctx: &mut Ctx) { +pub fn path_link(ctx: &mut Ctx) -> __wasi_errno_t { unimplemented!() } -pub fn path_open(ctx: &mut Ctx) { +pub fn path_open(ctx: &mut Ctx) -> __wasi_errno_t { unimplemented!() } -pub fn path_readlink(ctx: &mut Ctx) { +pub fn path_readlink(ctx: &mut Ctx) -> __wasi_errno_t { unimplemented!() } -pub fn path_remove_directory(ctx: &mut Ctx) { +pub fn path_remove_directory(ctx: &mut Ctx) -> __wasi_errno_t { unimplemented!() } -pub fn path_rename(ctx: &mut Ctx) { +pub fn path_rename(ctx: &mut Ctx) -> __wasi_errno_t { unimplemented!() } -pub fn path_symlink(ctx: &mut Ctx) { +pub fn path_symlink(ctx: &mut Ctx) -> __wasi_errno_t { unimplemented!() } -pub fn path_unlink_file(ctx: &mut Ctx) { +pub fn path_unlink_file(ctx: &mut Ctx) -> __wasi_errno_t { unimplemented!() } -pub fn poll_oneoff(ctx: &mut Ctx) { +pub fn poll_oneoff(ctx: &mut Ctx) -> __wasi_errno_t { unimplemented!() } pub fn proc_exit(ctx: &mut Ctx) { unimplemented!() } -pub fn proc_raise(ctx: &mut Ctx) { +pub fn proc_raise(ctx: &mut Ctx) -> __wasi_errno_t { unimplemented!() } -pub fn random_get(ctx: &mut Ctx) { +pub fn random_get(ctx: &mut Ctx) -> __wasi_errno_t { unimplemented!() } -pub fn sched_yield(ctx: &mut Ctx) { +pub fn sched_yield(ctx: &mut Ctx) -> __wasi_errno_t { unimplemented!() } -pub fn sock_recv(ctx: &mut Ctx) { +pub fn sock_recv(ctx: &mut Ctx) -> __wasi_errno_t { unimplemented!() } -pub fn sock_send(ctx: &mut Ctx) { +pub fn sock_send(ctx: &mut Ctx) -> __wasi_errno_t { unimplemented!() } -pub fn sock_shutdown(ctx: &mut Ctx) { +pub fn sock_shutdown(ctx: &mut Ctx) -> __wasi_errno_t { unimplemented!() } diff --git a/lib/wasi/src/syscalls/types.rs b/lib/wasi/src/syscalls/types.rs index 6a927a301..bda4bd1b5 100644 --- a/lib/wasi/src/syscalls/types.rs +++ b/lib/wasi/src/syscalls/types.rs @@ -1,5 +1,8 @@ #![allow(non_camel_case_types)] +use crate::ptr::{Array, WasmPtr}; +use wasmer_runtime_core::types::{ValueError, ValueType}; + pub type __wasi_advice_t = u8; pub const __WASI_ADVICE_DONTNEED: u8 = 0; pub const __WASI_ADVICE_NOREUSE: u8 = 1; @@ -11,7 +14,7 @@ pub const __WASI_ADVICE_WILLNEED: u8 = 5; #[derive(Debug, Copy, Clone, PartialEq, Eq)] #[repr(C)] pub struct __wasi_ciovec_t { - pub buf: u32, + pub buf: WasmPtr, pub buf_len: u32, } @@ -205,7 +208,7 @@ pub type __wasi_inode_t = u64; #[derive(Debug, Copy, Clone, PartialEq, Eq)] #[repr(C)] pub struct __wasi_iovec_t { - pub buf: u32, + pub buf: WasmPtr, pub buf_len: u32, } From bd09343fcad694128b559da0ce4c6e383eb29d93 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Thu, 28 Mar 2019 17:09:39 -0700 Subject: [PATCH 024/413] add structure for cross-platform wasi syscall implementations --- lib/wasi/src/syscalls/mod.rs | 20 +++++++++++++------- lib/wasi/src/syscalls/unix/linux.rs | 19 +++++++++++++++++++ lib/wasi/src/syscalls/unix/macos.rs | 19 +++++++++++++++++++ lib/wasi/src/syscalls/unix/mod.rs | 11 +++++++++++ lib/wasi/src/syscalls/windows.rs | 19 +++++++++++++++++++ 5 files changed, 81 insertions(+), 7 deletions(-) create mode 100644 lib/wasi/src/syscalls/unix/linux.rs create mode 100644 lib/wasi/src/syscalls/unix/macos.rs create mode 100644 lib/wasi/src/syscalls/unix/mod.rs create mode 100644 lib/wasi/src/syscalls/windows.rs diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 0c5f2f9b0..077a61155 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -1,6 +1,19 @@ +pub mod types; +#[cfg(any(target_os = "linux", target_os = "macos"))] +pub mod unix; +#[cfg(any(target_os = "windows"))] +pub mod windows; + use crate::state::WasiState; +use types::*; use wasmer_runtime_core::{memory::Memory, vm::Ctx}; +#[cfg(any(target_os = "linux", target_os = "macos"))] +pub use unix::*; + +#[cfg(any(target_os = "windows"))] +pub use windows::*; + #[allow(clippy::mut_from_ref)] fn get_wasi_state(ctx: &Ctx) -> &mut WasiState { unsafe { &mut *(ctx.data as *mut WasiState) } @@ -59,13 +72,6 @@ pub fn args_sizes_get(ctx: &mut Ctx, argc_out: u32, argv_buf_size_out: u32) { memory.view::()[(argv_buf_size_out / 4) as usize].set(total_arg_size as u32); } -pub fn clock_res_get(ctx: &mut Ctx) { - unimplemented!() -} -pub fn clock_time_get(ctx: &mut Ctx) { - unimplemented!() -} - /// ### `environ_get()` /// Read environment variable data. /// The sizes of the buffers should match that returned by [`environ_sizes_get()`](#environ_sizes_get). diff --git a/lib/wasi/src/syscalls/unix/linux.rs b/lib/wasi/src/syscalls/unix/linux.rs new file mode 100644 index 000000000..c3556faba --- /dev/null +++ b/lib/wasi/src/syscalls/unix/linux.rs @@ -0,0 +1,19 @@ +use crate::syscalls::types::*; +use wasmer_runtime_core::{memory::Memory, vm::Ctx}; + +pub fn clock_res_get( + ctx: &mut Ctx, + clock_id: __wasi_clockid_t, + resolution: WasmPtr<__wasi_timestamp_t>, +) -> __wasi_errno_t { + __WASI_EINVAL +} + +pub fn clock_time_get( + ctx: &mut Ctx, + clock_id: __wasi_clockid_t, + precision: __wasi_timestamp_t, + time: WasmPtr<__wasi_timestamp_t>, +) -> __wasi_errno_t { + unimplemented!() +} diff --git a/lib/wasi/src/syscalls/unix/macos.rs b/lib/wasi/src/syscalls/unix/macos.rs new file mode 100644 index 000000000..c3556faba --- /dev/null +++ b/lib/wasi/src/syscalls/unix/macos.rs @@ -0,0 +1,19 @@ +use crate::syscalls::types::*; +use wasmer_runtime_core::{memory::Memory, vm::Ctx}; + +pub fn clock_res_get( + ctx: &mut Ctx, + clock_id: __wasi_clockid_t, + resolution: WasmPtr<__wasi_timestamp_t>, +) -> __wasi_errno_t { + __WASI_EINVAL +} + +pub fn clock_time_get( + ctx: &mut Ctx, + clock_id: __wasi_clockid_t, + precision: __wasi_timestamp_t, + time: WasmPtr<__wasi_timestamp_t>, +) -> __wasi_errno_t { + unimplemented!() +} diff --git a/lib/wasi/src/syscalls/unix/mod.rs b/lib/wasi/src/syscalls/unix/mod.rs new file mode 100644 index 000000000..8fab04668 --- /dev/null +++ b/lib/wasi/src/syscalls/unix/mod.rs @@ -0,0 +1,11 @@ +#[cfg(target_os = "linux")] +pub mod linux; + +#[cfg(target_os = "macos")] +pub mod macos; + +#[cfg(target_os = "linux")] +pub use linux::*; + +#[cfg(target_os = "macos")] +pub use macos::*; diff --git a/lib/wasi/src/syscalls/windows.rs b/lib/wasi/src/syscalls/windows.rs new file mode 100644 index 000000000..c3556faba --- /dev/null +++ b/lib/wasi/src/syscalls/windows.rs @@ -0,0 +1,19 @@ +use crate::syscalls::types::*; +use wasmer_runtime_core::{memory::Memory, vm::Ctx}; + +pub fn clock_res_get( + ctx: &mut Ctx, + clock_id: __wasi_clockid_t, + resolution: WasmPtr<__wasi_timestamp_t>, +) -> __wasi_errno_t { + __WASI_EINVAL +} + +pub fn clock_time_get( + ctx: &mut Ctx, + clock_id: __wasi_clockid_t, + precision: __wasi_timestamp_t, + time: WasmPtr<__wasi_timestamp_t>, +) -> __wasi_errno_t { + unimplemented!() +} From a2f86c3c52f103bdf4e2e76e8aa5b1be6b3cd57e Mon Sep 17 00:00:00 2001 From: losfair Date: Fri, 29 Mar 2019 12:06:28 +0800 Subject: [PATCH 025/413] Improve machine state abstraction. --- lib/dynasm-backend/src/machine.rs | 119 +++++++++++++++++++++++------- 1 file changed, 91 insertions(+), 28 deletions(-) diff --git a/lib/dynasm-backend/src/machine.rs b/lib/dynasm-backend/src/machine.rs index 2c3181ccc..0de50dee9 100644 --- a/lib/dynasm-backend/src/machine.rs +++ b/lib/dynasm-backend/src/machine.rs @@ -2,44 +2,38 @@ use crate::emitter_x64::*; use std::collections::HashSet; use wasmparser::Type as WpType; -pub struct Machine { +struct MachineStackOffset(usize); + +pub struct Machine { used_gprs: HashSet, used_xmms: HashSet, - control: Vec>, - stack_offset: usize, + stack_offset: MachineStackOffset } -#[derive(Debug)] -pub struct ControlFrame { - pub label: E::Label, - pub loop_like: bool, - pub returns: Vec, - pub stack_offset_snapshot: usize, -} +impl Machine { + pub fn new() -> Self { + Machine { + used_gprs: HashSet::new(), + used_xmms: HashSet::new(), + stack_offset: MachineStackOffset(0), + } + } -impl Machine { - /// Picks an unused general purpose register. + /// Picks an unused general purpose register for local/stack/argument use. /// /// This method does not mark the register as used. pub fn pick_gpr(&self) -> Option { use GPR::*; static REGS: &'static [GPR] = &[ - //RAX, RCX, RDX, RBX, - RSP, - RBP, RSI, RDI, R8, R9, R10, R11, - //R12, - //R13, - //R14, - //R15 ]; for r in REGS { if !self.used_gprs.contains(r) { @@ -49,15 +43,46 @@ impl Machine { None } + /// Picks an unused general purpose register for internal temporary use. + /// + /// This method does not mark the register as used. + pub fn pick_temp_gpr(&self) -> Option { + use GPR::*; + static REGS: &'static [GPR] = &[ + RAX, + R12, + R13, + R14, + R15 + ]; + for r in REGS { + if !self.used_gprs.contains(r) { + return Some(*r) + } + } + None + } + + /// Acquires a temporary GPR. + pub fn acquire_temp_gpr(&mut self) -> Option { + let gpr = self.pick_temp_gpr(); + if let Some(x) = gpr { + self.used_gprs.insert(x); + } + gpr + } + + /// Releases a temporary GPR. + pub fn release_temp_gpr(&mut self, gpr: GPR) { + assert_eq!(self.used_gprs.remove(&gpr), true); + } + /// Picks an unused XMM register. /// /// This method does not mark the register as used. pub fn pick_xmm(&self) -> Option { use XMM::*; static REGS: &'static [XMM] = &[ - //XMM0, - //XMM1, - //XMM2, XMM3, XMM4, XMM5, @@ -72,14 +97,47 @@ impl Machine { None } + /// Picks an unused XMM register for internal temporary use. + /// + /// This method does not mark the register as used. + pub fn pick_temp_xmm(&self) -> Option { + use XMM::*; + static REGS: &'static [XMM] = &[ + XMM0, + XMM1, + XMM2, + ]; + for r in REGS { + if !self.used_xmms.contains(r) { + return Some(*r) + } + } + None + } + + /// Acquires a temporary XMM register. + pub fn acquire_temp_xmm(&mut self) -> Option { + let xmm = self.pick_temp_xmm(); + if let Some(x) = xmm { + self.used_xmms.insert(x); + } + xmm + } + + /// Releases a temporary XMM register. + pub fn release_temp_xmm(&mut self, xmm: XMM) { + assert_eq!(self.used_xmms.remove(&xmm), true); + } + /// Acquires locations from the machine state. /// /// If the returned locations are used for stack value, `release_location` needs to be called on them; /// Otherwise, if the returned locations are used for locals, `release_location` does not need to be called on them. - pub fn acquire_locations( + pub fn acquire_locations( &mut self, assembler: &mut E, tys: &[WpType], + zeroed: bool, ) -> Vec { let mut ret = vec![]; let mut delta_stack_offset: usize = 0; @@ -100,9 +158,9 @@ impl Machine { let loc = if let Some(x) = loc { x } else { - self.stack_offset += 8; + self.stack_offset.0 += 8; delta_stack_offset += 8; - Location::Memory(GPR::RBP, -(self.stack_offset as i32)) + Location::Memory(GPR::RBP, -(self.stack_offset.0 as i32)) }; if let Location::GPR(x) = loc { self.used_gprs.insert(x); @@ -113,11 +171,16 @@ impl Machine { } assembler.emit_sub(Size::S64, Location::Imm32(delta_stack_offset as u32), Location::GPR(GPR::RSP)); + if zeroed { + for i in 0..tys.len() { + assembler.emit_mov(Size::S64, Location::Imm32(0), Location::Memory(GPR::RSP, (i * 8) as i32)); + } + } ret } /// Releases locations used for stack value. - pub fn release_locations( + pub fn release_locations( &mut self, assembler: &mut E, locs: &[Location] @@ -137,10 +200,10 @@ impl Machine { unreachable!(); } let offset = (-x) as usize; - if offset != self.stack_offset { + if offset != self.stack_offset.0 { unreachable!(); } - self.stack_offset -= 8; + self.stack_offset.0 -= 8; delta_stack_offset += 8; }, _ => {} From 0f26ee40dedf1f27bd262b2db5674e8ccdc16973 Mon Sep 17 00:00:00 2001 From: losfair Date: Fri, 29 Mar 2019 12:06:47 +0800 Subject: [PATCH 026/413] Codegen v2. --- lib/dynasm-backend/src/codegen_x64_v2.rs | 439 +++++++++++++++++++++++ lib/dynasm-backend/src/emitter_x64.rs | 5 + lib/dynasm-backend/src/lib.rs | 1 + 3 files changed, 445 insertions(+) create mode 100644 lib/dynasm-backend/src/codegen_x64_v2.rs diff --git a/lib/dynasm-backend/src/codegen_x64_v2.rs b/lib/dynasm-backend/src/codegen_x64_v2.rs new file mode 100644 index 000000000..6cab89843 --- /dev/null +++ b/lib/dynasm-backend/src/codegen_x64_v2.rs @@ -0,0 +1,439 @@ +#![allow(clippy::forget_copy)] // Used by dynasm. + +use super::codegen::*; +use crate::protect_unix; +use byteorder::{ByteOrder, LittleEndian}; +use dynasmrt::{ + x64::Assembler, AssemblyOffset, DynamicLabel, DynasmApi, DynasmLabelApi, ExecutableBuffer, +}; +use std::cell::RefCell; +use std::ptr::NonNull; +use std::{any::Any, collections::HashMap, sync::Arc}; +use wasmer_runtime_core::{ + backend::{FuncResolver, ProtectedCaller, Token, UserTrapper}, + error::{RuntimeError, RuntimeResult}, + memory::MemoryType, + module::{ModuleInfo, ModuleInner}, + structures::{Map, TypedIndex}, + types::{ + FuncIndex, FuncSig, ImportedMemoryIndex, LocalFuncIndex, LocalGlobalIndex, + LocalMemoryIndex, LocalOrImport, MemoryIndex, SigIndex, Type, Value, + }, + units::Pages, + vm::{self, ImportBacking, LocalGlobal, LocalMemory, LocalTable}, +}; +use wasmparser::{Operator, Type as WpType}; +use crate::machine::*; +use crate::emitter_x64::*; + +pub struct X64ModuleCodeGenerator { + functions: Vec, + signatures: Option>>, + function_signatures: Option>>, + function_labels: Option)>>, + assembler: Option, + func_import_count: usize, +} + +pub struct X64FunctionCode { + signatures: Arc>, + function_signatures: Arc>, + + begin_offset: AssemblyOffset, + assembler: Option, + function_labels: Option)>>, + br_table_data: Option>>, + returns: Vec, + locals: Vec, + num_params: usize, + value_stack: Vec, + control_stack: Vec, + machine: Machine, + unreachable_depth: usize, +} + +enum FuncPtrInner {} +#[repr(transparent)] +#[derive(Copy, Clone, Debug)] +struct FuncPtr(*const FuncPtrInner); +unsafe impl Send for FuncPtr {} +unsafe impl Sync for FuncPtr {} + +pub struct X64ExecutionContext { + code: ExecutableBuffer, + functions: Vec, + signatures: Arc>, + function_signatures: Arc>, + function_pointers: Vec, + _br_table_data: Vec>, + func_import_count: usize, +} + +pub struct X64RuntimeResolver { + function_pointers: Vec, +} + +#[derive(Debug)] +pub struct ControlFrame { + pub label: DynamicLabel, + pub loop_like: bool, + pub if_else: IfElseState, + pub returns: Vec, + pub value_stack_depth: usize, +} + +#[derive(Debug, Copy, Clone)] +pub enum IfElseState { + None, + If(DynamicLabel), + Else, +} + +impl X64ExecutionContext { + fn get_runtime_resolver( + &self, + module_info: &ModuleInfo, + ) -> Result { + Ok(X64RuntimeResolver { + function_pointers: self.function_pointers.clone(), + }) + } +} + +impl FuncResolver for X64RuntimeResolver { + fn get( + &self, + _module: &ModuleInner, + _local_func_index: LocalFuncIndex, + ) -> Option> { + NonNull::new(self.function_pointers[_local_func_index.index() as usize].0 as *mut vm::Func) + } +} + +impl ProtectedCaller for X64ExecutionContext { + fn call( + &self, + _module: &ModuleInner, + _func_index: FuncIndex, + _params: &[Value], + _import_backing: &ImportBacking, + _vmctx: *mut vm::Ctx, + _: Token, + ) -> RuntimeResult> { + unimplemented!() + } + + fn get_early_trapper(&self) -> Box { + pub struct Trapper; + + impl UserTrapper for Trapper { + unsafe fn do_early_trap(&self, _data: Box) -> ! { + panic!("do_early_trap"); + } + } + + Box::new(Trapper) + } +} + +impl X64ModuleCodeGenerator { + pub fn new() -> X64ModuleCodeGenerator { + let mut assembler = Assembler::new().unwrap(); + + X64ModuleCodeGenerator { + functions: vec![], + signatures: None, + function_signatures: None, + function_labels: Some(HashMap::new()), + assembler: Some(assembler), + func_import_count: 0, + } + } +} + +impl ModuleCodeGenerator + for X64ModuleCodeGenerator +{ + fn check_precondition(&mut self, _module_info: &ModuleInfo) -> Result<(), CodegenError> { + Ok(()) + } + + fn next_function(&mut self) -> Result<&mut X64FunctionCode, CodegenError> { + let (mut assembler, mut function_labels, br_table_data) = match self.functions.last_mut() { + Some(x) => ( + x.assembler.take().unwrap(), + x.function_labels.take().unwrap(), + x.br_table_data.take().unwrap(), + ), + None => ( + self.assembler.take().unwrap(), + self.function_labels.take().unwrap(), + vec![], + ), + }; + let begin_offset = assembler.offset(); + let begin_label_info = function_labels + .entry(self.functions.len() + self.func_import_count) + .or_insert_with(|| (assembler.new_dynamic_label(), None)); + + begin_label_info.1 = Some(begin_offset); + let begin_label = begin_label_info.0; + + dynasm!( + assembler + ; => begin_label + //; int 3 + ); + let code = X64FunctionCode { + signatures: self.signatures.as_ref().unwrap().clone(), + function_signatures: self.function_signatures.as_ref().unwrap().clone(), + + begin_offset: begin_offset, + assembler: Some(assembler), + function_labels: Some(function_labels), + br_table_data: Some(br_table_data), + returns: vec![], + locals: vec![], + num_params: 0, + value_stack: vec! [], + control_stack: vec! [], + machine: Machine::new(), + unreachable_depth: 0, + }; + self.functions.push(code); + Ok(self.functions.last_mut().unwrap()) + } + + fn finalize( + mut self, + module_info: &ModuleInfo, + ) -> Result<(X64ExecutionContext, X64RuntimeResolver), CodegenError> { + let (assembler, mut br_table_data) = match self.functions.last_mut() { + Some(x) => (x.assembler.take().unwrap(), x.br_table_data.take().unwrap()), + None => { + return Err(CodegenError { + message: "no function", + }); + } + }; + let output = assembler.finalize().unwrap(); + + for table in &mut br_table_data { + for entry in table { + *entry = output.ptr(AssemblyOffset(*entry)) as usize; + } + } + + let function_labels = if let Some(x) = self.functions.last() { + x.function_labels.as_ref().unwrap() + } else { + self.function_labels.as_ref().unwrap() + }; + let mut out_labels: Vec = vec![]; + + for i in 0..function_labels.len() { + let (_, offset) = match function_labels.get(&i) { + Some(x) => x, + None => { + return Err(CodegenError { + message: "label not found", + }); + } + }; + let offset = match offset { + Some(x) => x, + None => { + return Err(CodegenError { + message: "offset is none", + }); + } + }; + out_labels.push(FuncPtr(output.ptr(*offset) as _)); + } + + let ctx = X64ExecutionContext { + code: output, + functions: self.functions, + _br_table_data: br_table_data, + func_import_count: self.func_import_count, + signatures: match self.signatures { + Some(x) => x, + None => { + return Err(CodegenError { + message: "no signatures", + }); + } + }, + function_pointers: out_labels, + function_signatures: match self.function_signatures { + Some(x) => x, + None => { + return Err(CodegenError { + message: "no function signatures", + }); + } + }, + }; + let resolver = ctx.get_runtime_resolver(module_info)?; + + Ok((ctx, resolver)) + } + + fn feed_signatures(&mut self, signatures: Map) -> Result<(), CodegenError> { + self.signatures = Some(Arc::new(signatures)); + Ok(()) + } + + fn feed_function_signatures( + &mut self, + assoc: Map, + ) -> Result<(), CodegenError> { + self.function_signatures = Some(Arc::new(assoc)); + Ok(()) + } + + fn feed_import_function(&mut self) -> Result<(), CodegenError> { + /* + let labels = match self.function_labels.as_mut() { + Some(x) => x, + None => { + return Err(CodegenError { + message: "got function import after code", + }); + } + }; + let id = labels.len(); + + let assembler = self.assembler.as_mut().unwrap(); + + let offset = assembler.offset(); + + let label = X64FunctionCode::emit_native_call( + self.assembler.as_mut().unwrap(), + invoke_import, + 0, + id, + ); + labels.insert(id, (label, Some(offset))); + + self.func_import_count += 1; + + Ok(()) + */ + unimplemented!() + } +} + +impl X64FunctionCode { + fn emit_relaxed_binop ( + a: &mut Assembler, + m: &mut Machine, + op: F, + sz: Size, + src: Location, + dst: Location, + ) { + match (src, dst) { + (Location::Memory(_, _), Location::Memory(_, _)) => { + let temp = m.acquire_temp_gpr().unwrap(); + a.emit_mov(sz, src, Location::GPR(temp)); + op(a, sz, Location::GPR(temp), dst); + m.release_temp_gpr(temp); + }, + _ => { + op(a, sz, src, dst); + } + } + } + + fn get_param_location( + idx: usize + ) -> Location { + match idx { + 0 => Location::GPR(GPR::RDI), + 1 => Location::GPR(GPR::RSI), + 2 => Location::GPR(GPR::RDX), + 3 => Location::GPR(GPR::RCX), + 4 => Location::GPR(GPR::R8), + 5 => Location::GPR(GPR::R9), + _ => Location::Memory(GPR::RBP, (16 + (idx - 6) * 8) as i32), + } + } +} + +impl FunctionCodeGenerator for X64FunctionCode { + fn feed_return(&mut self, ty: WpType) -> Result<(), CodegenError> { + self.returns.push(ty); + Ok(()) + } + + fn feed_param(&mut self, ty: WpType) -> Result<(), CodegenError> { + // The first parameter location is reserved for vmctx. + self.locals.push(Self::get_param_location( + self.num_params + 1 + )); + Ok(()) + } + + fn feed_local(&mut self, ty: WpType, n: usize) -> Result<(), CodegenError> { + let a = self.assembler.as_mut().unwrap(); + let types: Vec<_> = ::std::iter::repeat(ty).take(n).collect(); + self.machine.acquire_locations(a, &types, true); + Ok(()) + } + + fn begin_body(&mut self) -> Result<(), CodegenError> { + let a = self.assembler.as_mut().unwrap(); + self.control_stack.push(ControlFrame { + label: a.get_label(), + loop_like: false, + if_else: IfElseState::None, + returns: self.returns.clone(), + value_stack_depth: 0, + }); + Ok(()) + } + + fn finalize(&mut self) -> Result<(), CodegenError> { + let a = self.assembler.as_mut().unwrap(); + a.emit_ud2(); + Ok(()) + } + + fn feed_opcode(&mut self, op: Operator, module_info: &ModuleInfo) -> Result<(), CodegenError> { + let was_unreachable; + + if self.unreachable_depth > 0 { + was_unreachable = true; + match op { + Operator::Block { .. } | Operator::Loop { .. } | Operator::If { .. } => { + self.unreachable_depth += 1; + } + Operator::End => { + self.unreachable_depth -= 1; + } + Operator::Else => { + // We are in a reachable true branch + if self.unreachable_depth == 1 { + if let Some(IfElseState::If(_)) = self + .control_stack + .last() + .map(|x| x.if_else) + { + self.unreachable_depth -= 1; + } + } + } + _ => {} + } + if self.unreachable_depth > 0 { + return Ok(()); + } + } else { + was_unreachable = false; + } + + let a = self.assembler.as_mut().unwrap(); + unimplemented!(); + } +} \ No newline at end of file diff --git a/lib/dynasm-backend/src/emitter_x64.rs b/lib/dynasm-backend/src/emitter_x64.rs index 91837c189..e3d18b6f0 100644 --- a/lib/dynasm-backend/src/emitter_x64.rs +++ b/lib/dynasm-backend/src/emitter_x64.rs @@ -91,6 +91,8 @@ pub trait Emitter { fn emit_shl(&mut self, sz: Size, src: Location, dst: Location); fn emit_shr(&mut self, sz: Size, src: Location, dst: Location); fn emit_sar(&mut self, sz: Size, src: Location, dst: Location); + + fn emit_ud2(&mut self); } macro_rules! unop_gpr { @@ -389,4 +391,7 @@ impl Emitter for Assembler { binop_shift!(sar, self, sz, src, dst, { unreachable!() }); } + fn emit_ud2(&mut self) { + dynasm!(self ; ud2); + } } \ No newline at end of file diff --git a/lib/dynasm-backend/src/lib.rs b/lib/dynasm-backend/src/lib.rs index dd36a8d71..b2c8aaf5a 100644 --- a/lib/dynasm-backend/src/lib.rs +++ b/lib/dynasm-backend/src/lib.rs @@ -23,6 +23,7 @@ mod protect_unix; mod stack; mod emitter_x64; mod machine; +mod codegen_x64_v2; use crate::codegen::{CodegenError, ModuleCodeGenerator}; use crate::parse::LoadError; From 90db12e59a659636e6e7bc00cc89329341b19f41 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Thu, 28 Mar 2019 22:10:11 -0700 Subject: [PATCH 027/413] Finish up signatures and converting function types --- lib/wasi/src/ptr.rs | 28 +++- lib/wasi/src/syscalls/mod.rs | 265 ++++++++++++++++++++++++++------- lib/wasi/src/syscalls/types.rs | 2 +- 3 files changed, 235 insertions(+), 60 deletions(-) diff --git a/lib/wasi/src/ptr.rs b/lib/wasi/src/ptr.rs index efc851858..486ba808c 100644 --- a/lib/wasi/src/ptr.rs +++ b/lib/wasi/src/ptr.rs @@ -1,7 +1,7 @@ use std::{cell::Cell, fmt, marker::PhantomData, mem}; use wasmer_runtime_core::{ memory::Memory, - types::{Type, ValueType, WasmExternType}, + types::{Type, ValueError, ValueType, WasmExternType}, }; pub struct Array; @@ -14,6 +14,7 @@ pub struct WasmPtr { } impl WasmPtr { + #[inline] pub fn new(offset: u32) -> Self { Self { offset, @@ -21,12 +22,14 @@ impl WasmPtr { } } + #[inline] pub fn offset(self) -> u32 { self.offset } } impl WasmPtr { + #[inline] pub fn deref<'a>(self, memory: &'a Memory) -> Option<&'a Cell> { if (self.offset as usize) + mem::size_of::() >= memory.size().bytes().0 { return None; @@ -42,8 +45,9 @@ impl WasmPtr { } impl WasmPtr { - pub fn deref<'a>(self, memory: &'a Memory, length: u32) -> Option<&'a [Cell]> { - if (self.offset as usize) + (mem::size_of::() * (length as usize)) + #[inline] + pub fn deref<'a>(self, memory: &'a Memory, index: u32, length: u32) -> Option<&'a [Cell]> { + if (self.offset as usize) + (mem::size_of::() * ((index + length) as usize)) >= memory.size().bytes().0 { return None; @@ -63,6 +67,24 @@ unsafe impl WasmExternType for WasmPtr { const TYPE: Type = Type::I32; } +impl ValueType for WasmPtr { + fn into_le(self, buffer: &mut [u8]) { + buffer[..mem::size_of::()].copy_from_slice(&self.offset.to_le_bytes()); + } + fn from_le(buffer: &[u8]) -> Result { + if buffer.len() >= mem::size_of::() { + let mut array = [0u8; mem::size_of::()]; + array.copy_from_slice(&buffer[..mem::size_of::()]); + Ok(Self { + offset: u32::from_le_bytes(array), + _phantom: PhantomData, + }) + } else { + Err(ValueError::BufferTooSmall) + } + } +} + impl Clone for WasmPtr { fn clone(&self) -> Self { Self { diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 606c877a2..0c0298383 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -14,23 +14,38 @@ fn get_wasi_state(ctx: &Ctx) -> &mut WasiState { unsafe { &mut *(ctx.data as *mut WasiState) } } +#[must_use] fn write_buffer_array( memory: &Memory, from: &[Vec], - ptr_buffer_offset: u32, - buffer_offset: u32, -) { - let mut current_buffer_offset = buffer_offset; - for (i, sub_buffer) in from.iter().enumerate() { - memory.view::()[(ptr_buffer_offset as usize)..][i].set(current_buffer_offset); - for (cell, &byte) in memory.view()[(current_buffer_offset as usize)..] - .iter() - .zip(sub_buffer.iter()) + ptr_buffer: WasmPtr, Array>, + buffer: WasmPtr, +) -> __wasi_errno_t { + let ptrs = if let Some(cells) = ptr_buffer.deref(memory, 0, from.len() as u32) { + cells + } else { + return __WASI_EOVERFLOW; + }; + + let mut current_buffer_offset = 0; + for ((i, sub_buffer), ptr) in from.iter().enumerate().zip(ptrs.iter()) { + ptr.set(WasmPtr::new(buffer.offset() + current_buffer_offset)); + + let cells = if let Some(cells) = + buffer.deref(memory, current_buffer_offset, sub_buffer.len() as u32) { + cells + } else { + return __WASI_EOVERFLOW; + }; + + for (cell, &byte) in cells.iter().zip(sub_buffer.iter()) { cell.set(byte); } current_buffer_offset += sub_buffer.len() as u32; } + + __WASI_ESUCCESS } /// ### `args_get()` @@ -42,13 +57,15 @@ fn write_buffer_array( /// - `char *argv_buf` /// A pointer to a buffer to write the argument string data. /// -pub fn args_get(ctx: &mut Ctx, ptr_buffer_offset: u32, buffer_offset: u32) -> __wasi_errno_t { +pub fn args_get( + ctx: &mut Ctx, + argv: WasmPtr, Array>, + argv_buf: WasmPtr, +) -> __wasi_errno_t { let state = get_wasi_state(ctx); let memory = ctx.memory(0); - write_buffer_array(memory, &*state.args, ptr_buffer_offset, buffer_offset); - - __WASI_ESUCCESS + write_buffer_array(memory, &*state.args, argv, argv_buf) } /// ### `args_sizes_get()` @@ -58,17 +75,23 @@ pub fn args_get(ctx: &mut Ctx, ptr_buffer_offset: u32, buffer_offset: u32) -> __ /// The number of arguments. /// - `size_t *argv_buf_size` /// The size of the argument string data. -pub fn args_sizes_get(ctx: &mut Ctx, argc_out: u32, argv_buf_size_out: u32) -> __wasi_errno_t { - let state = get_wasi_state(ctx); +pub fn args_sizes_get( + ctx: &mut Ctx, + argc: WasmPtr, + argv_buf_size: WasmPtr, +) -> __wasi_errno_t { let memory = ctx.memory(0); - let arg_count = state.args.len(); - let total_arg_size: usize = state.args.iter().map(|v| v.len()).sum(); + if let (Some(argc), Some(argv_buf_size)) = (argc.deref(memory), argv_buf_size.deref(memory)) { + let state = get_wasi_state(ctx); - memory.view::()[(argc_out / 4) as usize].set(arg_count as u32); - memory.view::()[(argv_buf_size_out / 4) as usize].set(total_arg_size as u32); + argc.set(state.args.len() as u32); + argv_buf_size.set(state.args.iter().map(|v| v.len() as u32).sum()); - __WASI_ESUCCESS + __WASI_ESUCCESS + } else { + __WASI_EOVERFLOW + } } pub fn clock_res_get( @@ -95,13 +118,15 @@ pub fn clock_time_get( /// A pointer to a buffer to write the environment variable pointers. /// - `char *environ_buf` /// A pointer to a buffer to write the environment variable string data. -pub fn environ_get(ctx: &mut Ctx, environ: u32, environ_buf: u32) -> __wasi_errno_t { +pub fn environ_get( + ctx: &mut Ctx, + environ: WasmPtr, Array>, + environ_buf: WasmPtr, +) -> __wasi_errno_t { let state = get_wasi_state(ctx); let memory = ctx.memory(0); - write_buffer_array(memory, &*state.args, environ, environ_buf); - - __WASI_ESUCCESS + write_buffer_array(memory, &*state.args, environ, environ_buf) } /// ### `environ_sizes_get()` @@ -113,19 +138,23 @@ pub fn environ_get(ctx: &mut Ctx, environ: u32, environ_buf: u32) -> __wasi_errn /// The size of the environment variable string data. pub fn environ_sizes_get( ctx: &mut Ctx, - environ_count_out: u32, - environ_buf_size_out: u32, + environ_count: WasmPtr, + environ_buf_size: WasmPtr, ) -> __wasi_errno_t { - let state = get_wasi_state(ctx); let memory = ctx.memory(0); - let env_count = state.envs.len(); - let total_env_size: usize = state.envs.iter().map(|v| v.len()).sum(); + if let (Some(environ_count), Some(environ_buf_size)) = + (environ_count.deref(memory), environ_buf_size.deref(memory)) + { + let state = get_wasi_state(ctx); - memory.view::()[(environ_count_out / 4) as usize].set(env_count as u32); - memory.view::()[(environ_buf_size_out / 4) as usize].set(total_env_size as u32); + environ_count.set(state.envs.len() as u32); + environ_buf_size.set(state.envs.iter().map(|v| v.len() as u32).sum()); - __WASI_ESUCCESS + __WASI_ESUCCESS + } else { + __WASI_EOVERFLOW + } } pub fn fd_advise( @@ -231,78 +260,202 @@ pub fn fd_pwrite( ) -> __wasi_errno_t { unimplemented!() } -pub fn fd_read(ctx: &mut Ctx) -> __wasi_errno_t { +pub fn fd_read( + ctx: &mut Ctx, + fd: __wasi_fd_t, + iovs: WasmPtr<__wasi_iovec_t, Array>, + iovs_len: u32, + nread: WasmPtr, +) -> __wasi_errno_t { unimplemented!() } -pub fn fd_readdir(ctx: &mut Ctx) -> __wasi_errno_t { +pub fn fd_readdir( + ctx: &mut Ctx, + fd: __wasi_fd_t, + buf: WasmPtr, + buf_len: u32, + cookie: __wasi_dircookie_t, + bufused: WasmPtr, +) -> __wasi_errno_t { unimplemented!() } -pub fn fd_renumber(ctx: &mut Ctx) -> __wasi_errno_t { +pub fn fd_renumber(ctx: &mut Ctx, from: __wasi_fd_t, to: __wasi_fd_t) -> __wasi_errno_t { unimplemented!() } -pub fn fd_seek(ctx: &mut Ctx) -> __wasi_errno_t { +pub fn fd_seek( + ctx: &mut Ctx, + fd: __wasi_fd_t, + offset: __wasi_filedelta_t, + whence: __wasi_whence_t, + newoffset: WasmPtr<__wasi_filesize_t>, +) -> __wasi_errno_t { unimplemented!() } -pub fn fd_sync(ctx: &mut Ctx) -> __wasi_errno_t { +pub fn fd_sync(ctx: &mut Ctx, fd: __wasi_fd_t) -> __wasi_errno_t { unimplemented!() } -pub fn fd_tell(ctx: &mut Ctx) -> __wasi_errno_t { +pub fn fd_tell( + ctx: &mut Ctx, + fd: __wasi_fd_t, + offset: WasmPtr<__wasi_filesize_t>, +) -> __wasi_errno_t { unimplemented!() } -pub fn fd_write(ctx: &mut Ctx) -> __wasi_errno_t { +pub fn fd_write( + ctx: &mut Ctx, + fd: __wasi_fd_t, + iovs: WasmPtr<__wasi_ciovec_t, Array>, + iovs_len: u32, + nwritten: WasmPtr, +) -> __wasi_errno_t { unimplemented!() } -pub fn path_create_directory(ctx: &mut Ctx) -> __wasi_errno_t { +pub fn path_create_directory( + ctx: &mut Ctx, + fd: __wasi_fd_t, + path: WasmPtr, + path_len: u32, +) -> __wasi_errno_t { unimplemented!() } -pub fn path_filestat_get(ctx: &mut Ctx) -> __wasi_errno_t { +pub fn path_filestat_get( + ctx: &mut Ctx, + fd: __wasi_fd_t, + flags: __wasi_lookupflags_t, + path: WasmPtr, + path_len: u32, + buf: WasmPtr<__wasi_filestat_t>, +) -> __wasi_errno_t { unimplemented!() } -pub fn path_filestat_set_times(ctx: &mut Ctx) -> __wasi_errno_t { +pub fn path_filestat_set_times( + ctx: &mut Ctx, + fd: __wasi_fd_t, + flags: __wasi_lookupflags_t, + path: WasmPtr, + path_len: u32, + st_atim: __wasi_timestamp_t, + st_mtim: __wasi_timestamp_t, + fst_flags: __wasi_fstflags_t, +) -> __wasi_errno_t { unimplemented!() } -pub fn path_link(ctx: &mut Ctx) -> __wasi_errno_t { +pub fn path_link( + ctx: &mut Ctx, + old_fd: __wasi_fd_t, + old_flags: __wasi_lookupflags_t, + old_path: WasmPtr, + old_path_len: u32, + new_fd: __wasi_fd_t, + new_path: WasmPtr, + new_path_len: u32, +) -> __wasi_errno_t { unimplemented!() } -pub fn path_open(ctx: &mut Ctx) -> __wasi_errno_t { +pub fn path_open( + ctx: &mut Ctx, + dirfd: __wasi_fd_t, + dirflags: __wasi_lookupflags_t, + path: WasmPtr, + path_len: u32, + o_flags: __wasi_oflags_t, + fs_rights_base: __wasi_rights_t, + fs_rights_inheriting: __wasi_rights_t, + fs_flags: __wasi_fdflags_t, + fd: WasmPtr<__wasi_fd_t>, +) -> __wasi_errno_t { unimplemented!() } -pub fn path_readlink(ctx: &mut Ctx) -> __wasi_errno_t { +pub fn path_readlink( + ctx: &mut Ctx, + fd: __wasi_fd_t, + path: WasmPtr, + path_len: u32, + buf: WasmPtr, + buf_len: u32, + bufused: WasmPtr, +) -> __wasi_errno_t { unimplemented!() } -pub fn path_remove_directory(ctx: &mut Ctx) -> __wasi_errno_t { +pub fn path_remove_directory( + ctx: &mut Ctx, + fd: __wasi_fd_t, + path: WasmPtr, + path_len: u32, +) -> __wasi_errno_t { unimplemented!() } -pub fn path_rename(ctx: &mut Ctx) -> __wasi_errno_t { +pub fn path_rename( + ctx: &mut Ctx, + old_fd: __wasi_fd_t, + old_path: WasmPtr, + old_path_len: u32, + new_fd: __wasi_fd_t, + new_path: WasmPtr, + new_path_len: u32, +) -> __wasi_errno_t { unimplemented!() } -pub fn path_symlink(ctx: &mut Ctx) -> __wasi_errno_t { +pub fn path_symlink( + ctx: &mut Ctx, + old_path: WasmPtr, + old_path_len: u32, + fd: __wasi_fd_t, + new_path: WasmPtr, + new_path_len: u32, +) -> __wasi_errno_t { unimplemented!() } -pub fn path_unlink_file(ctx: &mut Ctx) -> __wasi_errno_t { +pub fn path_unlink_file( + ctx: &mut Ctx, + fd: __wasi_fd_t, + path: WasmPtr, + path_len: u32, +) -> __wasi_errno_t { unimplemented!() } -pub fn poll_oneoff(ctx: &mut Ctx) -> __wasi_errno_t { +pub fn poll_oneoff( + ctx: &mut Ctx, + in_: WasmPtr<__wasi_subscription_t, Array>, + out_: WasmPtr<__wasi_event_t, Array>, + nsubscriptions: u32, + nevents: WasmPtr, +) -> __wasi_errno_t { unimplemented!() } -pub fn proc_exit(ctx: &mut Ctx) { +pub fn proc_exit(ctx: &mut Ctx, rval: __wasi_exitcode_t) { unimplemented!() } -pub fn proc_raise(ctx: &mut Ctx) -> __wasi_errno_t { +pub fn proc_raise(ctx: &mut Ctx, sig: __wasi_signal_t) -> __wasi_errno_t { unimplemented!() } -pub fn random_get(ctx: &mut Ctx) -> __wasi_errno_t { +pub fn random_get(ctx: &mut Ctx, buf: WasmPtr, buf_len: u32) -> __wasi_errno_t { unimplemented!() } pub fn sched_yield(ctx: &mut Ctx) -> __wasi_errno_t { unimplemented!() } -pub fn sock_recv(ctx: &mut Ctx) -> __wasi_errno_t { +pub fn sock_recv( + ctx: &mut Ctx, + sock: __wasi_fd_t, + ri_data: WasmPtr<__wasi_iovec_t, Array>, + ri_data_len: u32, + ri_flags: __wasi_riflags_t, + ro_datalen: WasmPtr, + ro_flags: WasmPtr<__wasi_roflags_t>, +) -> __wasi_errno_t { unimplemented!() } -pub fn sock_send(ctx: &mut Ctx) -> __wasi_errno_t { +pub fn sock_send( + ctx: &mut Ctx, + sock: __wasi_fd_t, + si_data: WasmPtr<__wasi_ciovec_t, Array>, + si_data_len: u32, + si_flags: __wasi_siflags_t, + so_datalen: WasmPtr, +) -> __wasi_errno_t { unimplemented!() } -pub fn sock_shutdown(ctx: &mut Ctx) -> __wasi_errno_t { +pub fn sock_shutdown(ctx: &mut Ctx, sock: __wasi_fd_t, how: __wasi_sdflags_t) -> __wasi_errno_t { unimplemented!() } diff --git a/lib/wasi/src/syscalls/types.rs b/lib/wasi/src/syscalls/types.rs index bda4bd1b5..7995e86be 100644 --- a/lib/wasi/src/syscalls/types.rs +++ b/lib/wasi/src/syscalls/types.rs @@ -223,7 +223,7 @@ pub const __WASI_O_DIRECTORY: u16 = 1 << 1; pub const __WASI_O_EXCL: u16 = 1 << 2; pub const __WASI_O_TRUNC: u16 = 1 << 3; -pub type __wasi_riflags = u16; +pub type __wasi_riflags_t = u16; pub const __WASI_SOCK_RECV_PEEK: u16 = 1 << 0; pub const __WASI_SOCK_RECV_WAITALL: u16 = 1 << 1; From d9b89b46ee982e5d9c9b802a6baf291e852fff21 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Thu, 28 Mar 2019 22:22:46 -0700 Subject: [PATCH 028/413] Fix bug in deref of WasmPtr --- lib/wasi/src/ptr.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/wasi/src/ptr.rs b/lib/wasi/src/ptr.rs index 486ba808c..f6d1c4ce4 100644 --- a/lib/wasi/src/ptr.rs +++ b/lib/wasi/src/ptr.rs @@ -55,8 +55,9 @@ impl WasmPtr { unsafe { let cell_ptrs = memory.view::().get_unchecked( - ((self.offset() as usize) / mem::size_of::()) - ..((self.offset() as usize) / mem::size_of::()) + (length as usize), + ((self.offset as usize) / mem::size_of::()) + (index as usize) + ..((self.offset() as usize) / mem::size_of::()) + + ((index + length) as usize), ) as *const _; Some(&*cell_ptrs) } From ddf532ddb5ddb7f63c5176aa1d7f0fd7d63b384f Mon Sep 17 00:00:00 2001 From: Ivan Enderlin Date: Fri, 29 Mar 2019 09:43:21 +0100 Subject: [PATCH 029/413] fix(llvm-backend) Remove an `example.rs` file. --- lib/llvm-backend/src/example.rs | 61 --------------------------------- 1 file changed, 61 deletions(-) delete mode 100644 lib/llvm-backend/src/example.rs diff --git a/lib/llvm-backend/src/example.rs b/lib/llvm-backend/src/example.rs deleted file mode 100644 index 5ce3c9a5f..000000000 --- a/lib/llvm-backend/src/example.rs +++ /dev/null @@ -1,61 +0,0 @@ -use inkwell::OptimizationLevel; -use inkwell::builder::Builder; -use inkwell::context::Context; -use inkwell::execution_engine::{ExecutionEngine, JitFunction}; -use inkwell::module::Module; -use inkwell::targets::{InitializationConfig, Target}; -use std::error::Error; - -/// Convenience type alias for the `sum` function. -/// -/// Calling this is innately `unsafe` because there's no guarantee it doesn't -/// do `unsafe` operations internally. -type SumFunc = unsafe extern "C" fn(u64, u64, u64) -> u64; - -#[test] -fn test_sum() -> Result<(), Box> { - let context = Context::create(); - let module = context.create_module("sum"); - let builder = context.create_builder(); - let execution_engine = module.create_jit_execution_engine(OptimizationLevel::Aggressive)?; - - let sum = jit_compile_sum(&context, &module, &builder, &execution_engine) - .ok_or("Unable to JIT compile `sum`")?; - - let x = 1u64; - let y = 2u64; - let z = 3u64; - - unsafe { - println!("{} + {} + {} = {}", x, y, z, sum.call(x, y, z)); - assert_eq!(sum.call(x, y, z), x + y + z); - } - - Ok(()) -} - -fn jit_compile_sum( - context: &Context, - module: &Module, - builder: &Builder, - execution_engine: &ExecutionEngine, -) -> Option> { - let i64_type = context.i64_type(); - let fn_type = i64_type.fn_type(&[i64_type.into(), i64_type.into(), i64_type.into()], false); - - let function = module.add_function("sum", fn_type, None); - let basic_block = context.append_basic_block(&function, "entry"); - - builder.position_at_end(&basic_block); - - let x = function.get_nth_param(0)?.into_int_value(); - let y = function.get_nth_param(1)?.into_int_value(); - let z = function.get_nth_param(2)?.into_int_value(); - - let sum = builder.build_int_add(x, y, "sum"); - let sum = builder.build_int_add(sum, z, "sum"); - - builder.build_return(Some(&sum)); - - unsafe { execution_engine.get_function("sum").ok() } -} From a1ca7069afda1f71aa6ace1b9d777a4027245e15 Mon Sep 17 00:00:00 2001 From: Ivan Enderlin Date: Fri, 29 Mar 2019 10:03:40 +0100 Subject: [PATCH 030/413] fix(llvm-backend) Remove unused imports. --- lib/llvm-backend/src/backend.rs | 5 +---- lib/llvm-backend/src/code.rs | 4 ++-- lib/llvm-backend/src/intrinsics.rs | 5 +---- lib/llvm-backend/src/lib.rs | 13 ++----------- lib/llvm-backend/src/platform/unix.rs | 4 +--- lib/llvm-backend/src/trampolines.rs | 7 +++---- 6 files changed, 10 insertions(+), 28 deletions(-) diff --git a/lib/llvm-backend/src/backend.rs b/lib/llvm-backend/src/backend.rs index 742069d48..8831f6aa7 100644 --- a/lib/llvm-backend/src/backend.rs +++ b/lib/llvm-backend/src/backend.rs @@ -23,10 +23,7 @@ use wasmer_runtime_core::{ export::Context, module::{ModuleInfo, ModuleInner}, structures::TypedIndex, - types::{ - FuncIndex, FuncSig, LocalFuncIndex, LocalOrImport, MemoryIndex, SigIndex, TableIndex, Type, - Value, - }, + types::{FuncIndex, FuncSig, LocalFuncIndex, LocalOrImport, SigIndex, Type, Value}, vm::{self, ImportBacking}, vmcalls, }; diff --git a/lib/llvm-backend/src/code.rs b/lib/llvm-backend/src/code.rs index 173262b67..284e2aa36 100644 --- a/lib/llvm-backend/src/code.rs +++ b/lib/llvm-backend/src/code.rs @@ -3,14 +3,14 @@ use inkwell::{ context::Context, module::{Linkage, Module}, passes::PassManager, - types::{BasicType, BasicTypeEnum, FunctionType, IntType, PointerType}, + types::{BasicType, BasicTypeEnum, FunctionType, PointerType}, values::{BasicValue, FloatValue, FunctionValue, IntValue, PhiValue, PointerValue}, AddressSpace, FloatPredicate, IntPredicate, }; use smallvec::SmallVec; use wasmer_runtime_core::{ memory::MemoryType, - module::{ExportIndex, ModuleInfo}, + module::ModuleInfo, structures::{Map, SliceMap, TypedIndex}, types::{ FuncIndex, FuncSig, GlobalIndex, LocalFuncIndex, LocalOrImport, MemoryIndex, SigIndex, diff --git a/lib/llvm-backend/src/intrinsics.rs b/lib/llvm-backend/src/intrinsics.rs index ba1e3abd3..1ddbe743f 100644 --- a/lib/llvm-backend/src/intrinsics.rs +++ b/lib/llvm-backend/src/intrinsics.rs @@ -4,10 +4,7 @@ use inkwell::{ context::Context, module::Module, types::{BasicType, FloatType, FunctionType, IntType, PointerType, StructType, VoidType}, - values::{ - BasicValue, BasicValueEnum, FloatValue, FunctionValue, InstructionValue, IntValue, - PointerValue, - }, + values::{BasicValue, BasicValueEnum, FloatValue, FunctionValue, IntValue, PointerValue}, AddressSpace, }; use std::marker::PhantomData; diff --git a/lib/llvm-backend/src/lib.rs b/lib/llvm-backend/src/lib.rs index ee4e02bbc..5029c7cf7 100644 --- a/lib/llvm-backend/src/lib.rs +++ b/lib/llvm-backend/src/lib.rs @@ -1,10 +1,5 @@ #![cfg_attr(nightly, feature(unwind_attributes))] -use inkwell::{ - execution_engine::JitFunction, - targets::{CodeModel, FileType, InitializationConfig, RelocMode, Target, TargetMachine}, - OptimizationLevel, -}; use wasmer_runtime_core::{ backend::{Compiler, CompilerConfig, Token}, cache::{Artifact, Error as CacheError}, @@ -47,14 +42,10 @@ impl Compiler for LLVMCompiler { // Create placeholder values here. let cache_gen = { - use wasmer_runtime_core::backend::{ - sys::Memory, CacheGen, ProtectedCaller, UserTrapper, - }; + use wasmer_runtime_core::backend::{sys::Memory, CacheGen}; use wasmer_runtime_core::cache::Error as CacheError; - use wasmer_runtime_core::error::RuntimeResult; use wasmer_runtime_core::module::ModuleInfo; - use wasmer_runtime_core::types::{FuncIndex, Value}; - use wasmer_runtime_core::vm; + struct Placeholder; impl CacheGen for Placeholder { fn generate_cache( diff --git a/lib/llvm-backend/src/platform/unix.rs b/lib/llvm-backend/src/platform/unix.rs index 2267ab129..266426303 100644 --- a/lib/llvm-backend/src/platform/unix.rs +++ b/lib/llvm-backend/src/platform/unix.rs @@ -1,7 +1,5 @@ use libc::{c_void, siginfo_t}; -use nix::sys::signal::{ - sigaction, SaFlags, SigAction, SigHandler, SigSet, Signal, SIGBUS, SIGFPE, SIGILL, SIGSEGV, -}; +use nix::sys::signal::{sigaction, SaFlags, SigAction, SigHandler, SigSet, SIGBUS, SIGSEGV}; /// `__register_frame` and `__deregister_frame` on macos take a single fde as an /// argument, so we need to parse the fde table here. diff --git a/lib/llvm-backend/src/trampolines.rs b/lib/llvm-backend/src/trampolines.rs index 4619cb990..425418050 100644 --- a/lib/llvm-backend/src/trampolines.rs +++ b/lib/llvm-backend/src/trampolines.rs @@ -3,10 +3,9 @@ use inkwell::{ builder::Builder, context::Context, module::{Linkage, Module}, - passes::PassManager, - types::{BasicType, BasicTypeEnum, FunctionType, PointerType}, - values::{BasicValue, FunctionValue, PhiValue, PointerValue}, - AddressSpace, FloatPredicate, IntPredicate, + types::{BasicType, FunctionType}, + values::FunctionValue, + AddressSpace, }; use wasmer_runtime_core::{ module::ModuleInfo, From 91f40639b7524ad86925cac59092aadba8709f56 Mon Sep 17 00:00:00 2001 From: Ivan Enderlin Date: Fri, 29 Mar 2019 10:04:09 +0100 Subject: [PATCH 031/413] fix(llvm-back) Mark `WasmTrapType` as deadcode. This enum is not used directly by Rust, but used externally. --- lib/llvm-backend/src/backend.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/llvm-backend/src/backend.rs b/lib/llvm-backend/src/backend.rs index 8831f6aa7..2ee3877c5 100644 --- a/lib/llvm-backend/src/backend.rs +++ b/lib/llvm-backend/src/backend.rs @@ -54,6 +54,7 @@ enum LLVMResult { OBJECT_LOAD_FAILURE, } +#[allow(dead_code)] #[repr(C)] enum WasmTrapType { Unreachable = 0, From dea4705dcbf4f2c929ffc927281bc8b16a142715 Mon Sep 17 00:00:00 2001 From: Ivan Enderlin Date: Fri, 29 Mar 2019 10:04:56 +0100 Subject: [PATCH 032/413] fix(llvm-backend) `LLVMBackend::new` doesn't use instrinsics yet. --- lib/llvm-backend/src/backend.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/llvm-backend/src/backend.rs b/lib/llvm-backend/src/backend.rs index 2ee3877c5..5a692c40e 100644 --- a/lib/llvm-backend/src/backend.rs +++ b/lib/llvm-backend/src/backend.rs @@ -218,7 +218,7 @@ pub struct LLVMBackend { } impl LLVMBackend { - pub fn new(module: Module, intrinsics: Intrinsics) -> (Self, LLVMProtectedCaller) { + pub fn new(module: Module, _intrinsics: Intrinsics) -> (Self, LLVMProtectedCaller) { Target::initialize_x86(&InitializationConfig { asm_parser: true, asm_printer: true, From e3f39fc1278cb27a04844f58f205908946d55e44 Mon Sep 17 00:00:00 2001 From: Ivan Enderlin Date: Fri, 29 Mar 2019 10:05:39 +0100 Subject: [PATCH 033/413] fix(llvm-backend) `parse_function` doesn't need a `Module`. --- lib/llvm-backend/src/code.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/llvm-backend/src/code.rs b/lib/llvm-backend/src/code.rs index 284e2aa36..14c3ced2d 100644 --- a/lib/llvm-backend/src/code.rs +++ b/lib/llvm-backend/src/code.rs @@ -102,7 +102,6 @@ pub fn parse_function_bodies( parse_function( &context, - &module, &builder, &intrinsics, info, @@ -143,7 +142,6 @@ pub fn parse_function_bodies( fn parse_function( context: &Context, - module: &Module, builder: &Builder, intrinsics: &Intrinsics, info: &ModuleInfo, From 20378de0e7d6fdce7a991d62782ff13f2596cf5d Mon Sep 17 00:00:00 2001 From: Ivan Enderlin Date: Fri, 29 Mar 2019 10:06:11 +0100 Subject: [PATCH 034/413] fix(llvm-backend) `llvm_sig` variable is not used here. --- lib/llvm-backend/src/code.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/llvm-backend/src/code.rs b/lib/llvm-backend/src/code.rs index 14c3ced2d..601d117d9 100644 --- a/lib/llvm-backend/src/code.rs +++ b/lib/llvm-backend/src/code.rs @@ -153,7 +153,6 @@ fn parse_function( ) -> Result<(), BinaryReaderError> { let sig_index = info.func_assoc[func_index.convert_up(info)]; let func_sig = &info.signatures[sig_index]; - let llvm_sig = &signatures[sig_index]; let function = functions[func_index]; let mut state = State::new(); From 00e4b2511149c9421177ca5d968bf9fbb7975d38 Mon Sep 17 00:00:00 2001 From: Ivan Enderlin Date: Fri, 29 Mar 2019 10:06:31 +0100 Subject: [PATCH 035/413] fix(llvm-backend) No need to enumerate items in this iterator. --- lib/llvm-backend/src/code.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/llvm-backend/src/code.rs b/lib/llvm-backend/src/code.rs index 601d117d9..20324bac9 100644 --- a/lib/llvm-backend/src/code.rs +++ b/lib/llvm-backend/src/code.rs @@ -190,7 +190,7 @@ fn parse_function( let param_len = locals.len(); let mut local_idx = 0; - for (index, local) in locals_reader.into_iter().enumerate() { + for local in locals_reader.into_iter() { let (count, ty) = local?; let wasmer_ty = type_to_type(ty)?; let ty = type_to_llvm(intrinsics, wasmer_ty); From 7645a812d98eebd32cad41c16d8b4db6d01656ac Mon Sep 17 00:00:00 2001 From: Ivan Enderlin Date: Fri, 29 Mar 2019 10:07:08 +0100 Subject: [PATCH 036/413] fix(llvm-backend) Remove unused variables. --- lib/llvm-backend/src/code.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/llvm-backend/src/code.rs b/lib/llvm-backend/src/code.rs index 20324bac9..05cde0694 100644 --- a/lib/llvm-backend/src/code.rs +++ b/lib/llvm-backend/src/code.rs @@ -487,7 +487,6 @@ fn parse_function( if let ControlFrame::IfElse { if_else, next, - phis, if_else_state, .. } = &frame @@ -863,7 +862,7 @@ fn parse_function( let value = call_site.try_as_basic_value().left().unwrap(); state.push1(value); } - returns @ _ => unimplemented!("multi-value returns"), + _ => unimplemented!("multi-value returns"), } } @@ -2155,7 +2154,7 @@ fn parse_function( [one_value] => { builder.build_return(Some(one_value)); } - returns @ _ => { + _ => { // let struct_ty = llvm_sig.get_return_type().as_struct_type(); // let ret_struct = struct_ty.const_zero(); unimplemented!("multi-value returns not yet implemented") @@ -2208,7 +2207,7 @@ fn trap_if_not_representatable_as_int( ), }; - let masked = builder.build_and( + builder.build_and( float_bits, int_ty.const_int(exponent_mask, false), "masked_bits", From 76d26d97ac5bcb1850ba7dacba0253f69f011131 Mon Sep 17 00:00:00 2001 From: Ivan Enderlin Date: Fri, 29 Mar 2019 10:07:38 +0100 Subject: [PATCH 037/413] fix(llvm-backend) Remove `Intrinsics.ctx_ty`, `CtxType.ctx_ty, and `.ctx_ptr_ty`. --- lib/llvm-backend/src/intrinsics.rs | 8 -------- 1 file changed, 8 deletions(-) diff --git a/lib/llvm-backend/src/intrinsics.rs b/lib/llvm-backend/src/intrinsics.rs index 1ddbe743f..cd683981e 100644 --- a/lib/llvm-backend/src/intrinsics.rs +++ b/lib/llvm-backend/src/intrinsics.rs @@ -114,7 +114,6 @@ pub struct Intrinsics { pub throw_trap: FunctionValue, - ctx_ty: StructType, pub ctx_ptr_ty: PointerType, } @@ -367,7 +366,6 @@ impl Intrinsics { void_ty.fn_type(&[i32_ty_basic], false), None, ), - ctx_ty, ctx_ptr_ty, } } @@ -380,9 +378,6 @@ impl Intrinsics { cache_builder: Builder, ) -> CtxType<'a> { CtxType { - ctx_ty: self.ctx_ty, - ctx_ptr_ty: self.ctx_ptr_ty, - ctx_ptr_value: func_value.get_nth_param(0).unwrap().into_pointer_value(), builder, @@ -432,9 +427,6 @@ struct ImportedFuncCache { } pub struct CtxType<'a> { - ctx_ty: StructType, - ctx_ptr_ty: PointerType, - ctx_ptr_value: PointerValue, builder: &'a Builder, From b03980f8c92b70df64c1fc14d4f1e0ea898deff4 Mon Sep 17 00:00:00 2001 From: Ivan Enderlin Date: Fri, 29 Mar 2019 10:08:43 +0100 Subject: [PATCH 038/413] fix(llvm-backend) Remove unused variables or functions. --- lib/llvm-backend/src/intrinsics.rs | 47 +++--------------------------- 1 file changed, 4 insertions(+), 43 deletions(-) diff --git a/lib/llvm-backend/src/intrinsics.rs b/lib/llvm-backend/src/intrinsics.rs index cd683981e..1b367f5d4 100644 --- a/lib/llvm-backend/src/intrinsics.rs +++ b/lib/llvm-backend/src/intrinsics.rs @@ -449,9 +449,8 @@ impl<'a> CtxType<'a> { } pub fn memory(&mut self, index: MemoryIndex) -> MemoryCache { - let (cached_memories, builder, info, ctx_ptr_value, intrinsics, cache_builder) = ( + let (cached_memories, info, ctx_ptr_value, intrinsics, cache_builder) = ( &mut self.cached_memories, - self.builder, self.info, self.ctx_ptr_value, self.intrinsics, @@ -607,10 +606,8 @@ impl<'a> CtxType<'a> { } pub fn dynamic_sigindex(&mut self, index: SigIndex) -> IntValue { - let (cached_sigindices, builder, info, ctx_ptr_value, intrinsics, cache_builder) = ( + let (cached_sigindices, ctx_ptr_value, intrinsics, cache_builder) = ( &mut self.cached_sigindices, - self.builder, - self.info, self.ctx_ptr_value, self.intrinsics, &self.cache_builder, @@ -640,9 +637,8 @@ impl<'a> CtxType<'a> { } pub fn global_cache(&mut self, index: GlobalIndex) -> GlobalCache { - let (cached_globals, builder, ctx_ptr_value, info, intrinsics, cache_builder) = ( + let (cached_globals, ctx_ptr_value, info, intrinsics, cache_builder) = ( &mut self.cached_globals, - self.builder, self.ctx_ptr_value, self.info, self.intrinsics, @@ -717,9 +713,8 @@ impl<'a> CtxType<'a> { } pub fn imported_func(&mut self, index: ImportedFuncIndex) -> (PointerValue, PointerValue) { - let (cached_imported_functions, builder, ctx_ptr_value, intrinsics, cache_builder) = ( + let (cached_imported_functions, ctx_ptr_value, intrinsics, cache_builder) = ( &mut self.cached_imported_functions, - self.builder, self.ctx_ptr_value, self.intrinsics, &self.cache_builder, @@ -759,38 +754,4 @@ impl<'a> CtxType<'a> { (imported_func_cache.func_ptr, imported_func_cache.ctx_ptr) } - - pub fn build_trap(&self) { - self.builder.build_call(self.intrinsics.trap, &[], "trap"); - } } - -// pub struct Ctx { -// /// A pointer to an array of locally-defined memories, indexed by `MemoryIndex`. -// pub(crate) memories: *mut *mut LocalMemory, - -// /// A pointer to an array of locally-defined tables, indexed by `TableIndex`. -// pub(crate) tables: *mut *mut LocalTable, - -// /// A pointer to an array of locally-defined globals, indexed by `GlobalIndex`. -// pub(crate) globals: *mut *mut LocalGlobal, - -// /// A pointer to an array of imported memories, indexed by `MemoryIndex, -// pub(crate) imported_memories: *mut *mut LocalMemory, - -// /// A pointer to an array of imported tables, indexed by `TableIndex`. -// pub(crate) imported_tables: *mut *mut LocalTable, - -// /// A pointer to an array of imported globals, indexed by `GlobalIndex`. -// pub(crate) imported_globals: *mut *mut LocalGlobal, - -// /// A pointer to an array of imported functions, indexed by `FuncIndex`. -// pub(crate) imported_funcs: *mut ImportedFunc, - -// local_backing: *mut LocalBacking, -// import_backing: *mut ImportBacking, -// module: *const ModuleInner, - -// pub data: *mut c_void, -// pub data_finalizer: Option, -// } From 5cd45cbc28132a65942a883f2b4011d610b4e91d Mon Sep 17 00:00:00 2001 From: Ivan Enderlin Date: Fri, 29 Mar 2019 10:09:10 +0100 Subject: [PATCH 039/413] fix(llvm-backend) Mark a variable as unused. --- lib/llvm-backend/src/lib.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/llvm-backend/src/lib.rs b/lib/llvm-backend/src/lib.rs index 5029c7cf7..50b061731 100644 --- a/lib/llvm-backend/src/lib.rs +++ b/lib/llvm-backend/src/lib.rs @@ -47,10 +47,11 @@ impl Compiler for LLVMCompiler { use wasmer_runtime_core::module::ModuleInfo; struct Placeholder; + impl CacheGen for Placeholder { fn generate_cache( &self, - module: &ModuleInner, + _module: &ModuleInner, ) -> Result<(Box, Box<[u8]>, Memory), CacheError> { unimplemented!() } From 34b4f2fb1139e3cffb0e91c02fc924914cde30a6 Mon Sep 17 00:00:00 2001 From: Ivan Enderlin Date: Fri, 29 Mar 2019 10:09:39 +0100 Subject: [PATCH 040/413] fix(llvm-backend) Mark some variables as unused. --- lib/llvm-backend/src/platform/unix.rs | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/lib/llvm-backend/src/platform/unix.rs b/lib/llvm-backend/src/platform/unix.rs index 266426303..12894f6bc 100644 --- a/lib/llvm-backend/src/platform/unix.rs +++ b/lib/llvm-backend/src/platform/unix.rs @@ -49,24 +49,22 @@ pub unsafe fn install_signal_handler() { SaFlags::SA_ONSTACK | SaFlags::SA_SIGINFO, SigSet::empty(), ); - // sigaction(SIGFPE, &sa).unwrap(); - // sigaction(SIGILL, &sa).unwrap(); sigaction(SIGSEGV, &sa).unwrap(); sigaction(SIGBUS, &sa).unwrap(); } #[cfg_attr(nightly, unwind(allowed))] extern "C" fn signal_trap_handler( - signum: ::nix::libc::c_int, - siginfo: *mut siginfo_t, - ucontext: *mut c_void, + _signum: ::nix::libc::c_int, + _siginfo: *mut siginfo_t, + _ucontext: *mut c_void, ) { unsafe { - /// Apparently, we can unwind from arbitary instructions, as long - /// as we don't need to catch the exception inside the function that - /// was interrupted. - /// - /// This works on macos, not sure about linux. + // Apparently, we can unwind from arbitary instructions, as long + // as we don't need to catch the exception inside the function that + // was interrupted. + // + // This works on macos, not sure about linux. throw_trap(2); } } From 8179dd6f96938131ed3f3fe0638a2bed2ebf62a3 Mon Sep 17 00:00:00 2001 From: Ivan Enderlin Date: Fri, 29 Mar 2019 10:09:56 +0100 Subject: [PATCH 041/413] fix(llvm-backend) Remove `sign_type` from `generate_trampoline`. --- lib/llvm-backend/src/trampolines.rs | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/lib/llvm-backend/src/trampolines.rs b/lib/llvm-backend/src/trampolines.rs index 425418050..23677618b 100644 --- a/lib/llvm-backend/src/trampolines.rs +++ b/lib/llvm-backend/src/trampolines.rs @@ -42,20 +42,12 @@ pub fn generate_trampolines( Some(Linkage::External), ); - generate_trampoline( - trampoline_func, - func_type, - sig, - context, - builder, - intrinsics, - ); + generate_trampoline(trampoline_func, sig, context, builder, intrinsics); } } fn generate_trampoline( trampoline_func: FunctionValue, - sig_type: FunctionType, func_sig: &FuncSig, context: &Context, builder: &Builder, From 316cbc54ab494559df95139152bb63e0d48d1d7a Mon Sep 17 00:00:00 2001 From: Ivan Enderlin Date: Fri, 29 Mar 2019 10:17:24 +0100 Subject: [PATCH 042/413] doc(lib) Add basic `README.md`. --- lib/clif-backend/README.md | 31 +++++++++++++++++ lib/dynasm-backend/README.md | 31 +++++++++++++++++ lib/llvm-backend/README.md | 31 +++++++++++++++++ lib/runtime-core/README.md | 31 +++++++++++++++++ lib/runtime/README.md | 54 ++++++++++++++++++++++------- lib/spectests/README.md | 32 +++++++++++++++++ lib/win-exception-handler/README.md | 31 +++++++++++++++++ 7 files changed, 229 insertions(+), 12 deletions(-) create mode 100644 lib/clif-backend/README.md create mode 100644 lib/dynasm-backend/README.md create mode 100644 lib/llvm-backend/README.md create mode 100644 lib/runtime-core/README.md create mode 100644 lib/spectests/README.md create mode 100644 lib/win-exception-handler/README.md diff --git a/lib/clif-backend/README.md b/lib/clif-backend/README.md new file mode 100644 index 000000000..eb0c17e8c --- /dev/null +++ b/lib/clif-backend/README.md @@ -0,0 +1,31 @@ +

+ + Wasmer logo + +

+ +

+ + Build Status + + + License + + + Join the Wasmer Community + + + Number of downloads from crates.io + + + Read our API documentation + +

+ +# Wasmer Cranelift backend + +Wasmer is a standalone JIT WebAssembly runtime, aiming to be fully +compatible with Emscripten, Rust and Go. [Learn +more](https://github.com/wasmerio/wasmer). + +This crate represents the Cranelift backend. diff --git a/lib/dynasm-backend/README.md b/lib/dynasm-backend/README.md new file mode 100644 index 000000000..a525cbfac --- /dev/null +++ b/lib/dynasm-backend/README.md @@ -0,0 +1,31 @@ +

+ + Wasmer logo + +

+ +

+ + Build Status + + + License + + + Join the Wasmer Community + + + Number of downloads from crates.io + + + Read our API documentation + +

+ +# Wasmer dynasm backend + +Wasmer is a standalone JIT WebAssembly runtime, aiming to be fully +compatible with Emscripten, Rust and Go. [Learn +more](https://github.com/wasmerio/wasmer). + +This crate represents the dynasm backend. diff --git a/lib/llvm-backend/README.md b/lib/llvm-backend/README.md new file mode 100644 index 000000000..f53a0cb31 --- /dev/null +++ b/lib/llvm-backend/README.md @@ -0,0 +1,31 @@ +

+ + Wasmer logo + +

+ +

+ + Build Status + + + License + + + Join the Wasmer Community + + + Number of downloads from crates.io + + + Read our API documentation + +

+ +# Wasmer LLVM backend + +Wasmer is a standalone JIT WebAssembly runtime, aiming to be fully +compatible with Emscripten, Rust and Go. [Learn +more](https://github.com/wasmerio/wasmer). + +This crate represents the LLVM backend. diff --git a/lib/runtime-core/README.md b/lib/runtime-core/README.md new file mode 100644 index 000000000..0bbb74379 --- /dev/null +++ b/lib/runtime-core/README.md @@ -0,0 +1,31 @@ +

+ + Wasmer logo + +

+ +

+ + Build Status + + + License + + + Join the Wasmer Community + + + Number of downloads from crates.io + + + Read our API documentation + +

+ +# Wasmer Runtime Core + +Wasmer is a standalone JIT WebAssembly runtime, aiming to be fully +compatible with Emscripten, Rust and Go. [Learn +more](https://github.com/wasmerio/wasmer). + +This crate represents the core of the runtime. diff --git a/lib/runtime/README.md b/lib/runtime/README.md index 5e5542c8d..cbb6388aa 100644 --- a/lib/runtime/README.md +++ b/lib/runtime/README.md @@ -1,12 +1,41 @@ -# Wasmer-Runtime +

+ + Wasmer logo + +

-Wasmer-runtime is a library that makes embedding WebAssembly -in your application easy, efficient, and safe. +

+ + Build Status + + + License + + + Join the Wasmer Community + + + Number of downloads from crates.io + + + Read our API documentation + +

-# How to use Wasmer-Runtime +# Wasmer Runtime -The easiest way is to use the [`instantiate`] function to create an [`Instance`]. -Then you can use [`call`] or [`func`] and then [`call`][func.call] to call an exported function safely. +Wasmer is a standalone JIT WebAssembly runtime, aiming to be fully +compatible with Emscripten, Rust and Go. [Learn +more](https://github.com/wasmerio/wasmer). + +This crate represents the high-level runtime API, making embedding +WebAssembly in your application easy, efficient, and safe. + +## How to use Wasmer Runtime + +The easiest way is to use the [`instantiate`] function to create an +[`Instance`]. Then you can use [`call`] or [`func`] and then +[`call`][func.call] to call an exported function safely. [`instantiate`]: https://docs.rs/wasmer-runtime/*/wasmer_runtime/fn.instantiate.html [`Instance`]: https://docs.rs/wasmer-runtime/*/wasmer_runtime/struct.Instance.html @@ -14,7 +43,7 @@ Then you can use [`call`] or [`func`] and then [`call`][func.call] to call an ex [`func`]: https://docs.rs/wasmer-runtime/*/wasmer_runtime/struct.Instance.html#method.func [func.call]: https://docs.rs/wasmer-runtime/*/wasmer_runtime/struct.Function.html#method.call -## Here's an example: +## Example Given this WebAssembly: @@ -27,7 +56,7 @@ Given this WebAssembly: i32.add)) ``` -compiled into wasm bytecode, we can call the exported "add_one" function: +compiled into Wasm bytecode, we can call the exported `add_one` function: ```rust static WASM: &'static [u8] = &[ @@ -63,13 +92,14 @@ fn main() -> error::Result<()> { } ``` -# Additional Notes: +## Additional Notes -The `wasmer-runtime` is build to support compiler multiple backends. -Currently, we support the [Cranelift] compiler with the [`wasmer-clif-backend`] crate. +The `wasmer-runtime` crate is build to support multiple compiler +backends. Currently, we support the [Cranelift] compiler with the +[`wasmer-clif-backend`] crate by default. You can specify the compiler you wish to use with the [`compile_with`] function. [Cranelift]: https://github.com/CraneStation/cranelift [`wasmer-clif-backend`]: https://crates.io/crates/wasmer-clif-backend -[`compile_with`]: https://docs.rs/wasmer-runtime/*/wasmer_runtime/fn.compile_with.html \ No newline at end of file +[`compile_with`]: https://docs.rs/wasmer-runtime/*/wasmer_runtime/fn.compile_with.html diff --git a/lib/spectests/README.md b/lib/spectests/README.md new file mode 100644 index 000000000..8f9cee65b --- /dev/null +++ b/lib/spectests/README.md @@ -0,0 +1,32 @@ +

+ + Wasmer logo + +

+ +

+ + Build Status + + + License + + + Join the Wasmer Community + + + Number of downloads from crates.io + + + Read our API documentation + +

+ +# Wasmer Spectests + +Wasmer is a standalone JIT WebAssembly runtime, aiming to be fully +compatible with Emscripten, Rust and Go. [Learn +more](https://github.com/wasmerio/wasmer). + +This crate allows to test the Wasmer runtime against the official +specification test suite. diff --git a/lib/win-exception-handler/README.md b/lib/win-exception-handler/README.md new file mode 100644 index 000000000..9a32e1753 --- /dev/null +++ b/lib/win-exception-handler/README.md @@ -0,0 +1,31 @@ +

+ + Wasmer logo + +

+ +

+ + Build Status + + + License + + + Join the Wasmer Community + + + Number of downloads from crates.io + + + Read our API documentation + +

+ +# Wasmer Windows Exception Handler + +Wasmer is a standalone JIT WebAssembly runtime, aiming to be fully +compatible with Emscripten, Rust and Go. [Learn +more](https://github.com/wasmerio/wasmer). + +This crate provides an API for exception handling on Windows. From ea27effdb3d95907c3d8d34e4442b9cdf2ced20c Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 29 Mar 2019 10:20:08 -0700 Subject: [PATCH 043/413] keeep top level wasi calls that call out to platform-specific impls --- lib/wasi/src/syscalls/mod.rs | 17 +++++++++++++++++ lib/wasi/src/syscalls/unix/linux.rs | 4 ++-- lib/wasi/src/syscalls/unix/macos.rs | 4 ++-- lib/wasi/src/syscalls/windows.rs | 4 ++-- 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 077a61155..380adc68b 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -72,6 +72,23 @@ pub fn args_sizes_get(ctx: &mut Ctx, argc_out: u32, argv_buf_size_out: u32) { memory.view::()[(argv_buf_size_out / 4) as usize].set(total_arg_size as u32); } +pub fn clock_res_get( + ctx: &mut Ctx, + clock_id: __wasi_clockid_t, + resolution: WasmPtr<__wasi_timestamp_t>, +) -> __wasi_errno_t { + platform_clock_res_get(ctx, clock_id, resolution) +} + +pub fn clock_time_get( + ctx: &mut Ctx, + clock_id: __wasi_clockid_t, + precision: __wasi_timestamp_t, + time: WasmPtr<__wasi_timestamp_t>, +) -> __wasi_errno_t { + platform_clock_time_get(ctx, clock_id, precision, time) +} + /// ### `environ_get()` /// Read environment variable data. /// The sizes of the buffers should match that returned by [`environ_sizes_get()`](#environ_sizes_get). diff --git a/lib/wasi/src/syscalls/unix/linux.rs b/lib/wasi/src/syscalls/unix/linux.rs index c3556faba..43ca2cb6d 100644 --- a/lib/wasi/src/syscalls/unix/linux.rs +++ b/lib/wasi/src/syscalls/unix/linux.rs @@ -1,7 +1,7 @@ use crate::syscalls::types::*; use wasmer_runtime_core::{memory::Memory, vm::Ctx}; -pub fn clock_res_get( +pub fn platform_clock_res_get( ctx: &mut Ctx, clock_id: __wasi_clockid_t, resolution: WasmPtr<__wasi_timestamp_t>, @@ -9,7 +9,7 @@ pub fn clock_res_get( __WASI_EINVAL } -pub fn clock_time_get( +pub fn platform_clock_time_get( ctx: &mut Ctx, clock_id: __wasi_clockid_t, precision: __wasi_timestamp_t, diff --git a/lib/wasi/src/syscalls/unix/macos.rs b/lib/wasi/src/syscalls/unix/macos.rs index c3556faba..43ca2cb6d 100644 --- a/lib/wasi/src/syscalls/unix/macos.rs +++ b/lib/wasi/src/syscalls/unix/macos.rs @@ -1,7 +1,7 @@ use crate::syscalls::types::*; use wasmer_runtime_core::{memory::Memory, vm::Ctx}; -pub fn clock_res_get( +pub fn platform_clock_res_get( ctx: &mut Ctx, clock_id: __wasi_clockid_t, resolution: WasmPtr<__wasi_timestamp_t>, @@ -9,7 +9,7 @@ pub fn clock_res_get( __WASI_EINVAL } -pub fn clock_time_get( +pub fn platform_clock_time_get( ctx: &mut Ctx, clock_id: __wasi_clockid_t, precision: __wasi_timestamp_t, diff --git a/lib/wasi/src/syscalls/windows.rs b/lib/wasi/src/syscalls/windows.rs index c3556faba..43ca2cb6d 100644 --- a/lib/wasi/src/syscalls/windows.rs +++ b/lib/wasi/src/syscalls/windows.rs @@ -1,7 +1,7 @@ use crate::syscalls::types::*; use wasmer_runtime_core::{memory::Memory, vm::Ctx}; -pub fn clock_res_get( +pub fn platform_clock_res_get( ctx: &mut Ctx, clock_id: __wasi_clockid_t, resolution: WasmPtr<__wasi_timestamp_t>, @@ -9,7 +9,7 @@ pub fn clock_res_get( __WASI_EINVAL } -pub fn clock_time_get( +pub fn platform_clock_time_get( ctx: &mut Ctx, clock_id: __wasi_clockid_t, precision: __wasi_timestamp_t, From 514432c05aa0ec567aada36d8edaacbe0f5b8c74 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 29 Mar 2019 10:58:56 -0700 Subject: [PATCH 044/413] call wasi files correctly --- src/bin/wasmer.rs | 5 +++-- src/webassembly.rs | 28 +++++++++++++++++----------- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index 5f80c2640..ceb6604d6 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -204,7 +204,7 @@ fn execute_wasm(options: &Run) -> Result<(), String> { // TODO: refactor this #[cfg(not(feature = "wasi"))] - let (_abi, import_object, _em_globals) = if wasmer_emscripten::is_emscripten_module(&module) { + let (abi, import_object, _em_globals) = if wasmer_emscripten::is_emscripten_module(&module) { let mut emscripten_globals = wasmer_emscripten::EmscriptenGlobals::new(&module); ( InstanceABI::Emscripten, @@ -220,7 +220,7 @@ fn execute_wasm(options: &Run) -> Result<(), String> { }; #[cfg(feature = "wasi")] - let (_abi, import_object) = if wasmer_wasi::is_wasi_module(&module) { + let (abi, import_object) = if wasmer_wasi::is_wasi_module(&module) { ( InstanceABI::WASI, wasmer_wasi::generate_import_object( @@ -249,6 +249,7 @@ fn execute_wasm(options: &Run) -> Result<(), String> { webassembly::run_instance( &module, &mut instance, + abi, options.path.to_str().unwrap(), options.args.iter().map(|arg| arg.as_str()).collect(), ) diff --git a/src/webassembly.rs b/src/webassembly.rs index 51f1e7a92..01367795a 100644 --- a/src/webassembly.rs +++ b/src/webassembly.rs @@ -7,7 +7,7 @@ use wasmer_runtime::{ use wasmer_runtime_core::backend::CompilerConfig; use wasmer_runtime_core::types::Value; -use wasmer_emscripten::{is_emscripten_module, run_emscripten_instance}; +use wasmer_emscripten::run_emscripten_instance; pub struct ResultObject { /// A webassembly::Module object representing the compiled WebAssembly module. @@ -93,18 +93,24 @@ pub fn compile_with_config( pub fn run_instance( module: &Module, instance: &mut Instance, + abi: InstanceABI, path: &str, args: Vec<&str>, ) -> CallResult<()> { - if is_emscripten_module(module) { - run_emscripten_instance(module, instance, path, args)?; - } else { - let args: Vec = args - .into_iter() - .map(|x| Value::I32(x.parse().unwrap())) - .collect(); - instance.call("main", &args)?; - }; - + match abi { + InstanceABI::Emscripten => { + run_emscripten_instance(module, instance, path, args)?; + } + InstanceABI::WASI => { + instance.call("_start", &[])?; + } + InstanceABI::None => { + let args: Vec = args + .into_iter() + .map(|x| Value::I32(x.parse().unwrap())) + .collect(); + instance.call("main", &args)?; + } + } Ok(()) } From b1030d31814f85e8c6619ce1e0246ee214905446 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Fri, 29 Mar 2019 11:03:21 -0700 Subject: [PATCH 045/413] Add prestat_t --- lib/wasi/src/syscalls/mod.rs | 2 +- lib/wasi/src/syscalls/types.rs | 24 +++++++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 0c0298383..d72cbf466 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -238,7 +238,7 @@ pub fn fd_pread( pub fn fd_prestat_get( ctx: &mut Ctx, fd: __wasi_fd_t, - buf: WasmPtr<__wasi_fdstat_t>, + buf: WasmPtr<__wasi_prestat_t>, ) -> __wasi_errno_t { unimplemented!() } diff --git a/lib/wasi/src/syscalls/types.rs b/lib/wasi/src/syscalls/types.rs index 7995e86be..0221b1690 100644 --- a/lib/wasi/src/syscalls/types.rs +++ b/lib/wasi/src/syscalls/types.rs @@ -34,7 +34,7 @@ pub const __WASI_DIRCOOKIE_START: u64 = 0; pub struct __wasi_dirent_t { pub d_next: __wasi_dircookie_t, pub d_ino: __wasi_inode_t, - pub _namlen: u32, + pub d_namlen: u32, pub d_type: __wasi_filetype_t, } @@ -161,6 +161,28 @@ pub const __WASI_FDFLAG_NONBLOCK: u16 = 1 << 2; pub const __WASI_FDFLAG_RSYNC: u16 = 1 << 3; pub const __WASI_FDFLAG_SYNC: u16 = 1 << 4; +pub type __wasi_preopentype_t = u8; +pub const __WASI_PREOPENTYPE_DIR: u8 = 0; + +#[derive(Debug, Copy, Clone, PartialEq, Eq)] +#[repr(C)] +pub struct __wasi_prestat_u_dir_t { + pr_name_len: u32, +} + +#[derive(Copy, Clone)] +#[repr(C)] +pub union __wasi_prestat_u { + dir: __wasi_prestat_u_dir_t, +} + +#[derive(Copy, Clone)] +#[repr(C)] +pub struct __wasi_prestat_t { + pr_type: __wasi_preopentype_t, + u: __wasi_prestat_u, +} + #[derive(Debug, Copy, Clone, PartialEq, Eq)] #[repr(C)] pub struct __wasi_fdstat_t { From 23c09ac0429f78fdf4e82c255b85beda541241ed Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 29 Mar 2019 11:04:38 -0700 Subject: [PATCH 046/413] add imports --- lib/wasi/src/syscalls/unix/linux.rs | 1 + lib/wasi/src/syscalls/unix/macos.rs | 1 + lib/wasi/src/syscalls/windows.rs | 1 + 3 files changed, 3 insertions(+) diff --git a/lib/wasi/src/syscalls/unix/linux.rs b/lib/wasi/src/syscalls/unix/linux.rs index 43ca2cb6d..78ee51c9a 100644 --- a/lib/wasi/src/syscalls/unix/linux.rs +++ b/lib/wasi/src/syscalls/unix/linux.rs @@ -1,4 +1,5 @@ use crate::syscalls::types::*; +use crate::ptr::{Array, WasmPtr}, use wasmer_runtime_core::{memory::Memory, vm::Ctx}; pub fn platform_clock_res_get( diff --git a/lib/wasi/src/syscalls/unix/macos.rs b/lib/wasi/src/syscalls/unix/macos.rs index 43ca2cb6d..78ee51c9a 100644 --- a/lib/wasi/src/syscalls/unix/macos.rs +++ b/lib/wasi/src/syscalls/unix/macos.rs @@ -1,4 +1,5 @@ use crate::syscalls::types::*; +use crate::ptr::{Array, WasmPtr}, use wasmer_runtime_core::{memory::Memory, vm::Ctx}; pub fn platform_clock_res_get( diff --git a/lib/wasi/src/syscalls/windows.rs b/lib/wasi/src/syscalls/windows.rs index 43ca2cb6d..78ee51c9a 100644 --- a/lib/wasi/src/syscalls/windows.rs +++ b/lib/wasi/src/syscalls/windows.rs @@ -1,4 +1,5 @@ use crate::syscalls::types::*; +use crate::ptr::{Array, WasmPtr}, use wasmer_runtime_core::{memory::Memory, vm::Ctx}; pub fn platform_clock_res_get( From 48d34d9522e0fbeba3b2001dec649117c00675c6 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 29 Mar 2019 11:38:48 -0700 Subject: [PATCH 047/413] improve calling of platform-specific code and impl linux clock calls --- Cargo.lock | 1 + lib/wasi/Cargo.toml | 3 +- lib/wasi/src/syscalls/mod.rs | 16 +++++++-- lib/wasi/src/syscalls/unix/linux.rs | 50 ++++++++++++++++++++++++----- lib/wasi/src/syscalls/unix/macos.rs | 9 ++---- lib/wasi/src/syscalls/windows.rs | 9 ++---- 6 files changed, 65 insertions(+), 23 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 18ac80db9..53f1b1d5f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1482,6 +1482,7 @@ dependencies = [ name = "wasmer-wasi" version = "0.1.0" dependencies = [ + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "wasmer-runtime-core 0.2.1", ] diff --git a/lib/wasi/Cargo.toml b/lib/wasi/Cargo.toml index 17a2f14f4..3d2151d3e 100644 --- a/lib/wasi/Cargo.toml +++ b/lib/wasi/Cargo.toml @@ -5,4 +5,5 @@ authors = ["The Wasmer Engineering Team "] edition = "2018" [dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.2.1" } \ No newline at end of file +wasmer-runtime-core = { path = "../runtime-core", version = "0.2.1" } +libc = "0.2.50" \ No newline at end of file diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 0ccc7bd64..95d5f5240 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -108,7 +108,13 @@ pub fn clock_res_get( clock_id: __wasi_clockid_t, resolution: WasmPtr<__wasi_timestamp_t>, ) -> __wasi_errno_t { - platform_clock_res_get(ctx, clock_id, resolution) + let memory = ctx.memory(0); + + if let Some(out_addr) = resolution.deref(memory) { + platform_clock_res_get(clock_id, out_addr) + } else { + __WASI_EFAULT + } } pub fn clock_time_get( @@ -117,7 +123,13 @@ pub fn clock_time_get( precision: __wasi_timestamp_t, time: WasmPtr<__wasi_timestamp_t>, ) -> __wasi_errno_t { - platform_clock_time_get(ctx, clock_id, precision, time) + let memory = ctx.memory(0); + + if let Some(out_addr) = time.deref(memory) { + platform_clock_time_get(clock_id, precision, out_addr) + } else { + __WASI_EFAULT + } } /// ### `environ_get()` diff --git a/lib/wasi/src/syscalls/unix/linux.rs b/lib/wasi/src/syscalls/unix/linux.rs index 78ee51c9a..e68d470fa 100644 --- a/lib/wasi/src/syscalls/unix/linux.rs +++ b/lib/wasi/src/syscalls/unix/linux.rs @@ -1,20 +1,54 @@ use crate::syscalls::types::*; -use crate::ptr::{Array, WasmPtr}, -use wasmer_runtime_core::{memory::Memory, vm::Ctx}; +use libc::{ + clock_getres, clock_gettime, timespec, CLOCK_MONOTONIC, CLOCK_PROCESS_CPUTIME_ID, + CLOCK_REALTIME, CLOCK_THREAD_CPUTIME_ID, +}; +use std::cell::Cell; +use std::mem; pub fn platform_clock_res_get( - ctx: &mut Ctx, clock_id: __wasi_clockid_t, - resolution: WasmPtr<__wasi_timestamp_t>, + resolution: &Cell<__wasi_timestamp_t>, ) -> __wasi_errno_t { - __WASI_EINVAL + let linux_clock_id = match clock_id { + __WASI_CLOCK_MONOTONIC => CLOCK_MONOTONIC, + __WASI_CLOCK_PROCESS_CPUTIME_ID => CLOCK_PROCESS_CPUTIME_ID, + __WASI_CLOCK_REALTIME => CLOCK_REALTIME, + __WASI_CLOCK_THREAD_CPUTIME_ID => CLOCK_THREAD_CPUTIME_ID, + _ => return __WASI_EINVAL, + }; + + let output = unsafe { + let mut timespec_out: timespec = mem::uninitialized(); + clock_getres(linux_clock_id, &mut timespec_out); + }; + + resolution.set(timespec_out.tv_nsec as __wasi_timestamp_t); + + // TODO: map output of clock_getres to __wasi_errno_t + __WASI_ESUCCESS } pub fn platform_clock_time_get( - ctx: &mut Ctx, clock_id: __wasi_clockid_t, precision: __wasi_timestamp_t, - time: WasmPtr<__wasi_timestamp_t>, + time: &Cell<__wasi_timestamp_t>, ) -> __wasi_errno_t { - unimplemented!() + let linux_clock_id = match clock_id { + __WASI_CLOCK_MONOTONIC => CLOCK_MONOTONIC, + __WASI_CLOCK_PROCESS_CPUTIME_ID => CLOCK_PROCESS_CPUTIME_ID, + __WASI_CLOCK_REALTIME => CLOCK_REALTIME, + __WASI_CLOCK_THREAD_CPUTIME_ID => CLOCK_THREAD_CPUTIME_ID, + _ => return __WASI_EINVAL, + }; + + let output = unsafe { + let mut timespec_out: timespec = mem::uninitialized(); + clock_gettime(linux_clock_id, precision, &mut timespec_out); + }; + + resolution.set(timespec_out.tv_nsec as __wasi_timestamp_t); + + // TODO: map output of clock_gettime to __wasi_errno_t + __WASI_ESUCCESS } diff --git a/lib/wasi/src/syscalls/unix/macos.rs b/lib/wasi/src/syscalls/unix/macos.rs index 78ee51c9a..6273695d3 100644 --- a/lib/wasi/src/syscalls/unix/macos.rs +++ b/lib/wasi/src/syscalls/unix/macos.rs @@ -1,20 +1,17 @@ use crate::syscalls::types::*; -use crate::ptr::{Array, WasmPtr}, -use wasmer_runtime_core::{memory::Memory, vm::Ctx}; +use std::cell::Cell; pub fn platform_clock_res_get( - ctx: &mut Ctx, clock_id: __wasi_clockid_t, - resolution: WasmPtr<__wasi_timestamp_t>, + resolution: &Cell<__wasi_timestamp_t>, ) -> __wasi_errno_t { __WASI_EINVAL } pub fn platform_clock_time_get( - ctx: &mut Ctx, clock_id: __wasi_clockid_t, precision: __wasi_timestamp_t, - time: WasmPtr<__wasi_timestamp_t>, + time: &Cell<__wasi_timestamp_t>, ) -> __wasi_errno_t { unimplemented!() } diff --git a/lib/wasi/src/syscalls/windows.rs b/lib/wasi/src/syscalls/windows.rs index 78ee51c9a..6273695d3 100644 --- a/lib/wasi/src/syscalls/windows.rs +++ b/lib/wasi/src/syscalls/windows.rs @@ -1,20 +1,17 @@ use crate::syscalls::types::*; -use crate::ptr::{Array, WasmPtr}, -use wasmer_runtime_core::{memory::Memory, vm::Ctx}; +use std::cell::Cell; pub fn platform_clock_res_get( - ctx: &mut Ctx, clock_id: __wasi_clockid_t, - resolution: WasmPtr<__wasi_timestamp_t>, + resolution: &Cell<__wasi_timestamp_t>, ) -> __wasi_errno_t { __WASI_EINVAL } pub fn platform_clock_time_get( - ctx: &mut Ctx, clock_id: __wasi_clockid_t, precision: __wasi_timestamp_t, - time: WasmPtr<__wasi_timestamp_t>, + time: &Cell<__wasi_timestamp_t>, ) -> __wasi_errno_t { unimplemented!() } From de241a03f9bed9cef6b197f92e47b64a435a3871 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 29 Mar 2019 11:43:32 -0700 Subject: [PATCH 048/413] fix linux impl bugs --- lib/wasi/src/syscalls/unix/linux.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/wasi/src/syscalls/unix/linux.rs b/lib/wasi/src/syscalls/unix/linux.rs index e68d470fa..80a079b9b 100644 --- a/lib/wasi/src/syscalls/unix/linux.rs +++ b/lib/wasi/src/syscalls/unix/linux.rs @@ -42,12 +42,17 @@ pub fn platform_clock_time_get( _ => return __WASI_EINVAL, }; - let output = unsafe { + let (output, timespec_out) = unsafe { let mut timespec_out: timespec = mem::uninitialized(); - clock_gettime(linux_clock_id, precision, &mut timespec_out); + ( + clock_gettime(linux_clock_id, &mut timespec_out), + timespec_out, + ) }; - resolution.set(timespec_out.tv_nsec as __wasi_timestamp_t); + // TODO: adjust output by precision... + + time.set(timespec_out.tv_nsec as __wasi_timestamp_t); // TODO: map output of clock_gettime to __wasi_errno_t __WASI_ESUCCESS From 1f8b90b57eb802b792e6b1042373d1e73454e21c Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 29 Mar 2019 12:33:32 -0700 Subject: [PATCH 049/413] probably actually fix linux for real though --- lib/wasi/src/syscalls/unix/linux.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/wasi/src/syscalls/unix/linux.rs b/lib/wasi/src/syscalls/unix/linux.rs index 80a079b9b..8cc6320c6 100644 --- a/lib/wasi/src/syscalls/unix/linux.rs +++ b/lib/wasi/src/syscalls/unix/linux.rs @@ -18,9 +18,12 @@ pub fn platform_clock_res_get( _ => return __WASI_EINVAL, }; - let output = unsafe { + let (output, timespec_out) = unsafe { let mut timespec_out: timespec = mem::uninitialized(); - clock_getres(linux_clock_id, &mut timespec_out); + ( + clock_getres(linux_clock_id, &mut timespec_out), + timespec_out, + ) }; resolution.set(timespec_out.tv_nsec as __wasi_timestamp_t); From 28d9d1fe8784b23dae13b6104721a35abe126f49 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 29 Mar 2019 12:39:48 -0700 Subject: [PATCH 050/413] move linux impl to unix (it works on osx too!) --- lib/wasi/src/syscalls/unix/linux.rs | 61 ----------------------------- lib/wasi/src/syscalls/unix/macos.rs | 16 -------- lib/wasi/src/syscalls/unix/mod.rs | 60 ++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+), 77 deletions(-) diff --git a/lib/wasi/src/syscalls/unix/linux.rs b/lib/wasi/src/syscalls/unix/linux.rs index 8cc6320c6..8b1378917 100644 --- a/lib/wasi/src/syscalls/unix/linux.rs +++ b/lib/wasi/src/syscalls/unix/linux.rs @@ -1,62 +1 @@ -use crate::syscalls::types::*; -use libc::{ - clock_getres, clock_gettime, timespec, CLOCK_MONOTONIC, CLOCK_PROCESS_CPUTIME_ID, - CLOCK_REALTIME, CLOCK_THREAD_CPUTIME_ID, -}; -use std::cell::Cell; -use std::mem; -pub fn platform_clock_res_get( - clock_id: __wasi_clockid_t, - resolution: &Cell<__wasi_timestamp_t>, -) -> __wasi_errno_t { - let linux_clock_id = match clock_id { - __WASI_CLOCK_MONOTONIC => CLOCK_MONOTONIC, - __WASI_CLOCK_PROCESS_CPUTIME_ID => CLOCK_PROCESS_CPUTIME_ID, - __WASI_CLOCK_REALTIME => CLOCK_REALTIME, - __WASI_CLOCK_THREAD_CPUTIME_ID => CLOCK_THREAD_CPUTIME_ID, - _ => return __WASI_EINVAL, - }; - - let (output, timespec_out) = unsafe { - let mut timespec_out: timespec = mem::uninitialized(); - ( - clock_getres(linux_clock_id, &mut timespec_out), - timespec_out, - ) - }; - - resolution.set(timespec_out.tv_nsec as __wasi_timestamp_t); - - // TODO: map output of clock_getres to __wasi_errno_t - __WASI_ESUCCESS -} - -pub fn platform_clock_time_get( - clock_id: __wasi_clockid_t, - precision: __wasi_timestamp_t, - time: &Cell<__wasi_timestamp_t>, -) -> __wasi_errno_t { - let linux_clock_id = match clock_id { - __WASI_CLOCK_MONOTONIC => CLOCK_MONOTONIC, - __WASI_CLOCK_PROCESS_CPUTIME_ID => CLOCK_PROCESS_CPUTIME_ID, - __WASI_CLOCK_REALTIME => CLOCK_REALTIME, - __WASI_CLOCK_THREAD_CPUTIME_ID => CLOCK_THREAD_CPUTIME_ID, - _ => return __WASI_EINVAL, - }; - - let (output, timespec_out) = unsafe { - let mut timespec_out: timespec = mem::uninitialized(); - ( - clock_gettime(linux_clock_id, &mut timespec_out), - timespec_out, - ) - }; - - // TODO: adjust output by precision... - - time.set(timespec_out.tv_nsec as __wasi_timestamp_t); - - // TODO: map output of clock_gettime to __wasi_errno_t - __WASI_ESUCCESS -} diff --git a/lib/wasi/src/syscalls/unix/macos.rs b/lib/wasi/src/syscalls/unix/macos.rs index 6273695d3..8b1378917 100644 --- a/lib/wasi/src/syscalls/unix/macos.rs +++ b/lib/wasi/src/syscalls/unix/macos.rs @@ -1,17 +1 @@ -use crate::syscalls::types::*; -use std::cell::Cell; -pub fn platform_clock_res_get( - clock_id: __wasi_clockid_t, - resolution: &Cell<__wasi_timestamp_t>, -) -> __wasi_errno_t { - __WASI_EINVAL -} - -pub fn platform_clock_time_get( - clock_id: __wasi_clockid_t, - precision: __wasi_timestamp_t, - time: &Cell<__wasi_timestamp_t>, -) -> __wasi_errno_t { - unimplemented!() -} diff --git a/lib/wasi/src/syscalls/unix/mod.rs b/lib/wasi/src/syscalls/unix/mod.rs index 8fab04668..915699c24 100644 --- a/lib/wasi/src/syscalls/unix/mod.rs +++ b/lib/wasi/src/syscalls/unix/mod.rs @@ -9,3 +9,63 @@ pub use linux::*; #[cfg(target_os = "macos")] pub use macos::*; + +use crate::syscalls::types::*; +use libc::{ + clock_getres, clock_gettime, timespec, CLOCK_MONOTONIC, CLOCK_PROCESS_CPUTIME_ID, + CLOCK_REALTIME, CLOCK_THREAD_CPUTIME_ID, +}; +use std::cell::Cell; +use std::mem; + +pub fn platform_clock_res_get( + clock_id: __wasi_clockid_t, + resolution: &Cell<__wasi_timestamp_t>, +) -> __wasi_errno_t { + let unix_clock_id = match clock_id { + __WASI_CLOCK_MONOTONIC => CLOCK_MONOTONIC, + __WASI_CLOCK_PROCESS_CPUTIME_ID => CLOCK_PROCESS_CPUTIME_ID, + __WASI_CLOCK_REALTIME => CLOCK_REALTIME, + __WASI_CLOCK_THREAD_CPUTIME_ID => CLOCK_THREAD_CPUTIME_ID, + _ => return __WASI_EINVAL, + }; + + let (output, timespec_out) = unsafe { + let mut timespec_out: timespec = mem::uninitialized(); + (clock_getres(unix_clock_id, &mut timespec_out), timespec_out) + }; + + resolution.set(timespec_out.tv_nsec as __wasi_timestamp_t); + + // TODO: map output of clock_getres to __wasi_errno_t + __WASI_ESUCCESS +} + +pub fn platform_clock_time_get( + clock_id: __wasi_clockid_t, + precision: __wasi_timestamp_t, + time: &Cell<__wasi_timestamp_t>, +) -> __wasi_errno_t { + let unix_clock_id = match clock_id { + __WASI_CLOCK_MONOTONIC => CLOCK_MONOTONIC, + __WASI_CLOCK_PROCESS_CPUTIME_ID => CLOCK_PROCESS_CPUTIME_ID, + __WASI_CLOCK_REALTIME => CLOCK_REALTIME, + __WASI_CLOCK_THREAD_CPUTIME_ID => CLOCK_THREAD_CPUTIME_ID, + _ => return __WASI_EINVAL, + }; + + let (output, timespec_out) = unsafe { + let mut timespec_out: timespec = mem::uninitialized(); + ( + clock_gettime(unix_clock_id, &mut timespec_out), + timespec_out, + ) + }; + + // TODO: adjust output by precision... + + time.set(timespec_out.tv_nsec as __wasi_timestamp_t); + + // TODO: map output of clock_gettime to __wasi_errno_t + __WASI_ESUCCESS +} From 88212d356fe07b8e69c53db5a41bf7e6f15902fa Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 29 Mar 2019 13:06:06 -0700 Subject: [PATCH 051/413] implement random_get() --- Cargo.lock | 1 + lib/wasi/Cargo.toml | 3 ++- lib/wasi/src/syscalls/mod.rs | 29 +++++++++++++++++++++++++++-- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 53f1b1d5f..f15fd5275 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1483,6 +1483,7 @@ name = "wasmer-wasi" version = "0.1.0" dependencies = [ "libc 0.2.50 (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.2.1", ] diff --git a/lib/wasi/Cargo.toml b/lib/wasi/Cargo.toml index 3d2151d3e..2b3efd25b 100644 --- a/lib/wasi/Cargo.toml +++ b/lib/wasi/Cargo.toml @@ -6,4 +6,5 @@ edition = "2018" [dependencies] wasmer-runtime-core = { path = "../runtime-core", version = "0.2.1" } -libc = "0.2.50" \ No newline at end of file +libc = "0.2.50" +rand = "0.6.5" \ No newline at end of file diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 95d5f5240..48a8c3067 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -10,6 +10,7 @@ use crate::{ ptr::{Array, WasmPtr}, state::WasiState, }; +use rand::{thread_rng, Rng}; use wasmer_runtime_core::{memory::Memory, vm::Ctx}; #[cfg(any(target_os = "linux", target_os = "macos"))] @@ -451,12 +452,36 @@ pub fn proc_exit(ctx: &mut Ctx, rval: __wasi_exitcode_t) { pub fn proc_raise(ctx: &mut Ctx, sig: __wasi_signal_t) -> __wasi_errno_t { unimplemented!() } + +/// ### `random_get()` +/// Fill buffer with high-quality random data. This function may be slow and block +/// Inputs: +/// - `void *buf` +/// A pointer to a buffer where the random bytes will be written +/// - `size_t buf_len` +/// The number of bytes that will be written pub fn random_get(ctx: &mut Ctx, buf: WasmPtr, buf_len: u32) -> __wasi_errno_t { - unimplemented!() + let mut rng = thread_rng(); + let memory = ctx.memory(0); + + if let Some(buf) = buf.deref(memory, 0, buf_len) { + for i in 0..(buf_len as usize) { + let random_byte = rng.gen::(); + buf[i].set(random_byte); + } + } else { + return __WASI_EFAULT; + } + + __WASI_ESUCCESS } + +/// ### `sched_yield()` +/// Yields execution of the thread pub fn sched_yield(ctx: &mut Ctx) -> __wasi_errno_t { - unimplemented!() + __WASI_ESUCCESS } + pub fn sock_recv( ctx: &mut Ctx, sock: __wasi_fd_t, From accbe52dd67efd76e29534e09c71572248a97317 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 29 Mar 2019 13:42:13 -0700 Subject: [PATCH 052/413] add more stubs for pthreading, exceptions, and some invokes --- lib/emscripten/src/emscripten_target.rs | 49 +++++++++++++++++++++++++ lib/emscripten/src/exception.rs | 9 +++++ lib/emscripten/src/lib.rs | 17 +++++++++ lib/emscripten/src/process.rs | 5 +++ 4 files changed, 80 insertions(+) diff --git a/lib/emscripten/src/emscripten_target.rs b/lib/emscripten/src/emscripten_target.rs index 5e6b927e8..1877cbff1 100644 --- a/lib/emscripten/src/emscripten_target.rs +++ b/lib/emscripten/src/emscripten_target.rs @@ -118,6 +118,22 @@ pub fn _pthread_cond_destroy(_ctx: &mut Ctx, _a: i32) -> i32 { debug!("emscripten::_pthread_cond_destroy"); 0 } +pub fn _pthread_getspecific(_ctx: &mut Ctx, _a: i32) -> i32 { + debug!("emscripten::_pthread_getspecific"); + 0 +} +pub fn _pthread_setspecific(_ctx: &mut Ctx, _a: i32, _b: i32) -> i32 { + debug!("emscripten::_pthread_setspecific"); + 0 +} +pub fn _pthread_once(_ctx: &mut Ctx, _a: i32, _b: i32) -> i32 { + debug!("emscripten::_pthread_once"); + 0 +} +pub fn _pthread_key_create(_ctx: &mut Ctx, _a: i32, _b: i32) -> i32 { + debug!("emscripten::_pthread_key_create"); + 0 +} pub fn _pthread_create(_ctx: &mut Ctx, _a: i32, _b: i32, _c: i32, _d: i32) -> i32 { debug!("emscripten::_pthread_create"); 0 @@ -424,6 +440,30 @@ pub fn invoke_viiiiiiiii( panic!("dyn_call_viiiiiiiii is set to None"); } } +pub fn invoke_viiiiiiiiii( + ctx: &mut Ctx, + index: i32, + a1: i32, + a2: i32, + a3: i32, + a4: i32, + a5: i32, + a6: i32, + a7: i32, + a8: i32, + a9: i32, + a10: i32, +) { + debug!("emscripten::invoke_viiiiiiiiii"); + if let Some(dyn_call_viiiiiiiiii) = &get_emscripten_data(ctx).dyn_call_viiiiiiiiii { + dyn_call_viiiiiiiiii + .call(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) + .unwrap(); + } else { + panic!("dyn_call_viiiiiiiiii is set to None"); + } +} + pub fn invoke_iiji(ctx: &mut Ctx, index: i32, a1: i32, a2: i32, a3: i32, a4: i32) -> i32 { debug!("emscripten::invoke_iiji"); if let Some(dyn_call_iiji) = &get_emscripten_data(ctx).dyn_call_iiji { @@ -448,6 +488,15 @@ pub fn invoke_ji(ctx: &mut Ctx, index: i32, a1: i32) -> i32 { panic!("dyn_call_ji is set to None"); } } +pub fn invoke_jii(ctx: &mut Ctx, index: i32, a1: i32, a2: i32) -> i32 { + debug!("emscripten::invoke_jii"); + if let Some(dyn_call_jii) = &get_emscripten_data(ctx).dyn_call_jii { + dyn_call_jii.call(index, a1, a2).unwrap() + } else { + panic!("dyn_call_jii is set to None"); + } +} + pub fn invoke_jij(ctx: &mut Ctx, index: i32, a1: i32, a2: i32, a3: i32) -> i32 { debug!("emscripten::invoke_jij"); if let Some(dyn_call_jij) = &get_emscripten_data(ctx).dyn_call_jij { diff --git a/lib/emscripten/src/exception.rs b/lib/emscripten/src/exception.rs index b0aab78dd..9044aff2a 100644 --- a/lib/emscripten/src/exception.rs +++ b/lib/emscripten/src/exception.rs @@ -14,3 +14,12 @@ pub fn ___cxa_throw(ctx: &mut Ctx, _ptr: u32, _ty: u32, _destructor: u32) { debug!("emscripten::___cxa_throw"); _abort(ctx); } + +pub fn ___cxa_begin_catch(_ctx: &mut Ctx, _exception_object_ptr: u32) -> i32 { + debug!("emscripten::___cxa_begin_catch"); + -1 +} + +pub fn ___cxa_end_catch(_ctx: &mut Ctx) { + debug!("emscripten::___cxa_end_catch"); +} diff --git a/lib/emscripten/src/lib.rs b/lib/emscripten/src/lib.rs index 4d41cc40d..b544bdc11 100644 --- a/lib/emscripten/src/lib.rs +++ b/lib/emscripten/src/lib.rs @@ -104,9 +104,12 @@ pub struct EmscriptenData<'a> { pub dyn_call_viiiiiii: Option>, pub dyn_call_viiiiiiii: Option>, pub dyn_call_viiiiiiiii: Option>, + pub dyn_call_viiiiiiiiii: + Option>, pub dyn_call_iiji: Option>, pub dyn_call_j: Option>, pub dyn_call_ji: Option>, + pub dyn_call_jii: Option>, pub dyn_call_jij: Option>, pub dyn_call_jjj: Option>, pub dyn_call_viiij: Option>, @@ -160,9 +163,11 @@ impl<'a> EmscriptenData<'a> { let dyn_call_viiiiiii = instance.func("dynCall_viiiiiii").ok(); let dyn_call_viiiiiiii = instance.func("dynCall_viiiiiiii").ok(); let dyn_call_viiiiiiiii = instance.func("dynCall_viiiiiiiii").ok(); + let dyn_call_viiiiiiiiii = instance.func("dynCall_viiiiiiiiii").ok(); let dyn_call_iiji = instance.func("dynCall_iiji").ok(); let dyn_call_j = instance.func("dynCall_j").ok(); let dyn_call_ji = instance.func("dynCall_ji").ok(); + let dyn_call_jii = instance.func("dynCall_jii").ok(); let dyn_call_jij = instance.func("dynCall_jij").ok(); let dyn_call_jjj = instance.func("dynCall_jjj").ok(); let dyn_call_viiij = instance.func("dynCall_viiij").ok(); @@ -209,9 +214,11 @@ impl<'a> EmscriptenData<'a> { dyn_call_viiiiiii, dyn_call_viiiiiiii, dyn_call_viiiiiiiii, + dyn_call_viiiiiiiiii, dyn_call_iiji, dyn_call_j, dyn_call_ji, + dyn_call_jii, dyn_call_jij, dyn_call_jjj, dyn_call_viiij, @@ -562,6 +569,7 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject "_kill" => func!(crate::process::_kill), "_llvm_stackrestore" => func!(crate::process::_llvm_stackrestore), "_llvm_stacksave" => func!(crate::process::_llvm_stacksave), + "_llvm_eh_typeid_for" => func!(crate::process::_llvm_eh_typeid_for), "_raise" => func!(crate::process::_raise), "_sem_init" => func!(crate::process::_sem_init), "_sem_post" => func!(crate::process::_sem_post), @@ -597,6 +605,8 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject // Exception "___cxa_allocate_exception" => func!(crate::exception::___cxa_allocate_exception), "___cxa_throw" => func!(crate::exception::___cxa_throw), + "___cxa_begin_catch" => func!(crate::exception::___cxa_begin_catch), + "___cxa_end_catch" => func!(crate::exception::___cxa_end_catch), // Time "_gettimeofday" => func!(crate::time::_gettimeofday), @@ -675,6 +685,10 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject "_pthread_rwlock_rdlock" => func!(crate::emscripten_target::_pthread_rwlock_rdlock), "_pthread_rwlock_unlock" => func!(crate::emscripten_target::_pthread_rwlock_unlock), "_pthread_setcancelstate" => func!(crate::emscripten_target::_pthread_setcancelstate), + "_pthread_getspecific" => func!(crate::emscripten_target::_pthread_getspecific), + "_pthread_setspecific" => func!(crate::emscripten_target::_pthread_setspecific), + "_pthread_once" => func!(crate::emscripten_target::_pthread_once), + "_pthread_key_create" => func!(crate::emscripten_target::_pthread_key_create), "___gxx_personality_v0" => func!(crate::emscripten_target::___gxx_personality_v0), "_getdtablesize" => func!(crate::emscripten_target::_getdtablesize), "_gethostbyaddr" => func!(crate::emscripten_target::_gethostbyaddr), @@ -693,9 +707,12 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject "invoke_viiiiiii" => func!(crate::emscripten_target::invoke_viiiiiii), "invoke_viiiiiiii" => func!(crate::emscripten_target::invoke_viiiiiiii), "invoke_viiiiiiiii" => func!(crate::emscripten_target::invoke_viiiiiiiii), + "invoke_viiiiiiiii" => func!(crate::emscripten_target::invoke_viiiiiiiii), + "invoke_viiiiiiiiii" => func!(crate::emscripten_target::invoke_viiiiiiiiii), "invoke_iiji" => func!(crate::emscripten_target::invoke_iiji), "invoke_j" => func!(crate::emscripten_target::invoke_j), "invoke_ji" => func!(crate::emscripten_target::invoke_ji), + "invoke_jii" => func!(crate::emscripten_target::invoke_jii), "invoke_jij" => func!(crate::emscripten_target::invoke_jij), "invoke_jjj" => func!(crate::emscripten_target::invoke_jjj), "invoke_viiij" => func!(crate::emscripten_target::invoke_viiij), diff --git a/lib/emscripten/src/process.rs b/lib/emscripten/src/process.rs index ce47502e7..4c6e33e70 100644 --- a/lib/emscripten/src/process.rs +++ b/lib/emscripten/src/process.rs @@ -150,6 +150,11 @@ pub fn _llvm_trap(ctx: &mut Ctx) { abort_with_message(ctx, "abort!"); } +pub fn _llvm_eh_typeid_for(_ctx: &mut Ctx, _type_info_addr: u32) -> i32 { + debug!("emscripten::_llvm_eh_typeid_for"); + -1 +} + pub fn _system(_ctx: &mut Ctx, _one: i32) -> c_int { debug!("emscripten::_system"); // TODO: May need to change this Em impl to a working version From 35fbf573c92098ab4cc95880ac78ff94bd6d56c8 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 29 Mar 2019 15:10:46 -0700 Subject: [PATCH 053/413] add pread on linux --- lib/wasi/src/syscalls/mod.rs | 12 +++++++++++- lib/wasi/src/syscalls/types.rs | 20 ++++++++++++++++++++ lib/wasi/src/syscalls/unix/linux.rs | 26 ++++++++++++++++++++++++++ lib/wasi/src/syscalls/unix/macos.rs | 11 +++++++++++ lib/wasi/src/syscalls/windows.rs | 10 ++++++++++ 5 files changed, 78 insertions(+), 1 deletion(-) diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 48a8c3067..a7bbecb4e 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -248,6 +248,7 @@ pub fn fd_filestat_set_times( ) -> __wasi_errno_t { unimplemented!() } + pub fn fd_pread( ctx: &mut Ctx, fd: __wasi_fd_t, @@ -256,8 +257,17 @@ pub fn fd_pread( offset: __wasi_filesize_t, nread: WasmPtr, ) -> __wasi_errno_t { - unimplemented!() + let memory = ctx.memory(0); + + if let ((Some(iov_cells), Some(nread_cell))) = + (iovs.deref(memory, 0, iovs_len), nread.deref(memory)) + { + platform_fd_pread(fd, iov_cells, iovs_len, offset, nread_cell) + } else { + __WASI_EFAULT + } } + pub fn fd_prestat_get( ctx: &mut Ctx, fd: __wasi_fd_t, diff --git a/lib/wasi/src/syscalls/types.rs b/lib/wasi/src/syscalls/types.rs index 7995e86be..7f4cba575 100644 --- a/lib/wasi/src/syscalls/types.rs +++ b/lib/wasi/src/syscalls/types.rs @@ -1,6 +1,7 @@ #![allow(non_camel_case_types)] use crate::ptr::{Array, WasmPtr}; +use std::mem; use wasmer_runtime_core::types::{ValueError, ValueType}; pub type __wasi_advice_t = u8; @@ -212,6 +213,25 @@ pub struct __wasi_iovec_t { pub buf_len: u32, } +impl ValueType for __wasi_iovec_t { + fn into_le(self, buffer: &mut [u8]) { + self.buf + .into_le(&mut buffer[..mem::size_of::>()]); + self.buf_len + .into_le(&mut buffer[mem::size_of::>()..]); + } + + fn from_le(buffer: &[u8]) -> Result { + if buffer.len() >= mem::size_of::<__wasi_iovec_t>() { + let buf = ValueType::from_le(&buffer[..mem::size_of::>()])?; + let buf_len = ValueType::from_le(&buffer[mem::size_of::>()..])?; + Ok(Self { buf, buf_len }) + } else { + Err(ValueError::BufferTooSmall) + } + } +} + pub type __wasi_linkcount_t = u32; pub type __wasi_lookupflags_t = u32; diff --git a/lib/wasi/src/syscalls/unix/linux.rs b/lib/wasi/src/syscalls/unix/linux.rs index 8b1378917..cf62cc380 100644 --- a/lib/wasi/src/syscalls/unix/linux.rs +++ b/lib/wasi/src/syscalls/unix/linux.rs @@ -1 +1,27 @@ +use crate::syscalls::types::*; +use std::cell::Cell; +use libc::preadv; + +pub fn platform_fd_pread( + fd: __wasi_fd_t, + iovs: &[Cell<__wasi_iovec_t>], + iovs_len: u32, + offset: __wasi_filesize_t, + nread: &Cell, +) -> __wasi_errno_t { + let (result, iovec) = unsafe { + let mut iovec = vec![mem::uninitialized(); iovs_len as usize]; + (preadv(fd, &mut iovec, iovs_len, offset), iovec) + }; + nread.set(result); + for (arr_cell, i) in iov_arr.iter().enumerate() { + let wasi_iovec = __wasi_iovec_t { + buf: iovec[i] as _, + buf_len: iovec[i].iov_len as u32, + }; + arr_cell.set(wasi_iovec); + } + + __WASI_ESUCCESS +} diff --git a/lib/wasi/src/syscalls/unix/macos.rs b/lib/wasi/src/syscalls/unix/macos.rs index 8b1378917..748a58fb3 100644 --- a/lib/wasi/src/syscalls/unix/macos.rs +++ b/lib/wasi/src/syscalls/unix/macos.rs @@ -1 +1,12 @@ +use crate::syscalls::types::*; +use std::cell::Cell; +pub fn platform_fd_pread( + fd: __wasi_fd_t, + iovs: &[Cell<__wasi_iovec_t>], + iovs_len: u32, + offset: __wasi_filesize_t, + nread: &Cell, +) -> __wasi_errno_t { + unimplemented!() +} diff --git a/lib/wasi/src/syscalls/windows.rs b/lib/wasi/src/syscalls/windows.rs index 6273695d3..5ea255f0a 100644 --- a/lib/wasi/src/syscalls/windows.rs +++ b/lib/wasi/src/syscalls/windows.rs @@ -15,3 +15,13 @@ pub fn platform_clock_time_get( ) -> __wasi_errno_t { unimplemented!() } + +pub fn platform_fd_pread( + fd: __wasi_fd_t, + iovs: &[Cell<__wasi_iovec_t>], + iovs_len: u32, + offset: __wasi_filesize_t, + nread: &Cell, +) -> __wasi_errno_t { + unimplemented!() +} From 5dcb95dd7a344c0e9256657b515ae562155df78f Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 29 Mar 2019 15:17:42 -0700 Subject: [PATCH 054/413] fix basic errors in linux impl --- lib/wasi/src/syscalls/unix/linux.rs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/wasi/src/syscalls/unix/linux.rs b/lib/wasi/src/syscalls/unix/linux.rs index cf62cc380..1454bea55 100644 --- a/lib/wasi/src/syscalls/unix/linux.rs +++ b/lib/wasi/src/syscalls/unix/linux.rs @@ -1,5 +1,6 @@ use crate::syscalls::types::*; use std::cell::Cell; +use std::mem; use libc::preadv; @@ -12,10 +13,18 @@ pub fn platform_fd_pread( ) -> __wasi_errno_t { let (result, iovec) = unsafe { let mut iovec = vec![mem::uninitialized(); iovs_len as usize]; - (preadv(fd, &mut iovec, iovs_len, offset), iovec) + ( + preadv( + fd as i32, + iovec.as_mut_ptr(), + iovs_len as i32, + offset as i64, + ), + iovec, + ) }; - nread.set(result); - for (arr_cell, i) in iov_arr.iter().enumerate() { + nread.set(result as u32); + for (arr_cell, i) in iovs.iter().enumerate() { let wasi_iovec = __wasi_iovec_t { buf: iovec[i] as _, buf_len: iovec[i].iov_len as u32, From e7a5c01ef8dba3676d2c783c15c0003d1981af45 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 29 Mar 2019 15:21:54 -0700 Subject: [PATCH 055/413] fix backward enumerate --- lib/wasi/src/syscalls/unix/linux.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/wasi/src/syscalls/unix/linux.rs b/lib/wasi/src/syscalls/unix/linux.rs index 1454bea55..601c49075 100644 --- a/lib/wasi/src/syscalls/unix/linux.rs +++ b/lib/wasi/src/syscalls/unix/linux.rs @@ -24,7 +24,7 @@ pub fn platform_fd_pread( ) }; nread.set(result as u32); - for (arr_cell, i) in iovs.iter().enumerate() { + for (i, arr_cell) in iovs.iter().enumerate() { let wasi_iovec = __wasi_iovec_t { buf: iovec[i] as _, buf_len: iovec[i].iov_len as u32, From 147d71a32c5e9f53865ac1eb827f18c9a4e06e79 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 29 Mar 2019 15:39:36 -0700 Subject: [PATCH 056/413] implement ValueType for prestat_t --- lib/wasi/src/syscalls/types.rs | 52 ++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/lib/wasi/src/syscalls/types.rs b/lib/wasi/src/syscalls/types.rs index 0221b1690..19c825057 100644 --- a/lib/wasi/src/syscalls/types.rs +++ b/lib/wasi/src/syscalls/types.rs @@ -2,6 +2,7 @@ use crate::ptr::{Array, WasmPtr}; use wasmer_runtime_core::types::{ValueError, ValueType}; +use std::mem; pub type __wasi_advice_t = u8; pub const __WASI_ADVICE_DONTNEED: u8 = 0; @@ -170,12 +171,44 @@ pub struct __wasi_prestat_u_dir_t { pr_name_len: u32, } +impl ValueType for __wasi_prestat_u_dir_t { + fn into_le(self, buffer: &mut [u8]) { + self.pr_name_len + .into_le(&mut buffer[..mem::size_of::()]); + } + + fn from_le(buffer: &[u8]) -> Result { + if buffer.len() >= mem::size_of::<__wasi_iovec_t>() { + let pr_name_len = ValueType::from_le(&buffer[..mem::size_of::()])?; + Ok(Self { pr_name_len }) + } else { + Err(ValueError::BufferTooSmall) + } + } +} + #[derive(Copy, Clone)] #[repr(C)] pub union __wasi_prestat_u { dir: __wasi_prestat_u_dir_t, } +impl ValueType for __wasi_prestat_u { + fn into_le(self, buffer: &mut [u8]) { + unsafe {self.dir + .into_le(&mut buffer[..mem::size_of::<__wasi_prestat_u_dir_t>()])}; + } + + fn from_le(buffer: &[u8]) -> Result { + if buffer.len() >= mem::size_of::<__wasi_iovec_t>() { + let dir = ValueType::from_le(&buffer[..mem::size_of::<__wasi_prestat_u_dir_t>()])?; + Ok(Self { dir }) + } else { + Err(ValueError::BufferTooSmall) + } + } +} + #[derive(Copy, Clone)] #[repr(C)] pub struct __wasi_prestat_t { @@ -183,6 +216,25 @@ pub struct __wasi_prestat_t { u: __wasi_prestat_u, } +impl ValueType for __wasi_prestat_t { + fn into_le(self, buffer: &mut [u8]) { + self.pr_type + .into_le(&mut buffer[..mem::size_of::<__wasi_preopentype_t>()]); + self.u + .into_le(&mut buffer[mem::size_of::<__wasi_preopentype_t>()..]); + } + + fn from_le(buffer: &[u8]) -> Result { + if buffer.len() >= mem::size_of::<__wasi_iovec_t>() { + let pr_type = ValueType::from_le(&buffer[..mem::size_of::<__wasi_preopentype_t>()])?; + let u = ValueType::from_le(&buffer[mem::size_of::<__wasi_preopentype_t>()..])?; + Ok(Self { pr_type, u }) + } else { + Err(ValueError::BufferTooSmall) + } + } +} + #[derive(Debug, Copy, Clone, PartialEq, Eq)] #[repr(C)] pub struct __wasi_fdstat_t { From 42e8523c0b0bc4a8aeeffe94a1b33bdc6acaadf4 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 29 Mar 2019 15:49:42 -0700 Subject: [PATCH 057/413] impl ValueType for fdstat_t --- lib/wasi/src/syscalls/types.rs | 59 ++++++++++++++++++++++++++++++---- 1 file changed, 53 insertions(+), 6 deletions(-) diff --git a/lib/wasi/src/syscalls/types.rs b/lib/wasi/src/syscalls/types.rs index 19c825057..378098bcb 100644 --- a/lib/wasi/src/syscalls/types.rs +++ b/lib/wasi/src/syscalls/types.rs @@ -1,8 +1,8 @@ #![allow(non_camel_case_types)] use crate::ptr::{Array, WasmPtr}; -use wasmer_runtime_core::types::{ValueError, ValueType}; use std::mem; +use wasmer_runtime_core::types::{ValueError, ValueType}; pub type __wasi_advice_t = u8; pub const __WASI_ADVICE_DONTNEED: u8 = 0; @@ -178,7 +178,7 @@ impl ValueType for __wasi_prestat_u_dir_t { } fn from_le(buffer: &[u8]) -> Result { - if buffer.len() >= mem::size_of::<__wasi_iovec_t>() { + if buffer.len() >= mem::size_of::<__wasi_prestat_u_dir_t>() { let pr_name_len = ValueType::from_le(&buffer[..mem::size_of::()])?; Ok(Self { pr_name_len }) } else { @@ -195,12 +195,14 @@ pub union __wasi_prestat_u { impl ValueType for __wasi_prestat_u { fn into_le(self, buffer: &mut [u8]) { - unsafe {self.dir - .into_le(&mut buffer[..mem::size_of::<__wasi_prestat_u_dir_t>()])}; + unsafe { + self.dir + .into_le(&mut buffer[..mem::size_of::<__wasi_prestat_u_dir_t>()]) + }; } fn from_le(buffer: &[u8]) -> Result { - if buffer.len() >= mem::size_of::<__wasi_iovec_t>() { + if buffer.len() >= mem::size_of::<__wasi_prestat_u>() { let dir = ValueType::from_le(&buffer[..mem::size_of::<__wasi_prestat_u_dir_t>()])?; Ok(Self { dir }) } else { @@ -225,7 +227,7 @@ impl ValueType for __wasi_prestat_t { } fn from_le(buffer: &[u8]) -> Result { - if buffer.len() >= mem::size_of::<__wasi_iovec_t>() { + if buffer.len() >= mem::size_of::<__wasi_prestat_t>() { let pr_type = ValueType::from_le(&buffer[..mem::size_of::<__wasi_preopentype_t>()])?; let u = ValueType::from_le(&buffer[mem::size_of::<__wasi_preopentype_t>()..])?; Ok(Self { pr_type, u }) @@ -244,6 +246,51 @@ pub struct __wasi_fdstat_t { pub fs_rights_inheriting: __wasi_rights_t, } +impl ValueType for __wasi_fdstat_t { + fn into_le(self, buffer: &mut [u8]) { + self.fs_filetype + .into_le(&mut buffer[..mem::size_of::<__wasi_filetype_t>()]); + self.fs_flags.into_le( + &mut buffer[mem::size_of::<__wasi_filetype_t>()..mem::size_of::<__wasi_fdflags_t>()], + ); + self.fs_rights_base.into_le( + &mut buffer[(mem::size_of::<__wasi_filetype_t>() + mem::size_of::<__wasi_fdflags_t>()) + ..mem::size_of::<__wasi_rights_t>()], + ); + self.fs_rights_inheriting.into_le( + &mut buffer[(mem::size_of::<__wasi_filetype_t>() + + mem::size_of::<__wasi_fdflags_t>() + + mem::size_of::<__wasi_rights_t>())..], + ); + } + + fn from_le(buffer: &[u8]) -> Result { + if buffer.len() >= mem::size_of::<__wasi_fdstat_t>() { + let fs_filetype = ValueType::from_le(&buffer[..mem::size_of::<__wasi_filetype_t>()])?; + let fs_flags = ValueType::from_le( + &buffer[mem::size_of::<__wasi_filetype_t>()..mem::size_of::<__wasi_fdflags_t>()], + )?; + let fs_rights_base = ValueType::from_le( + &buffer[(mem::size_of::<__wasi_filetype_t>() + mem::size_of::<__wasi_fdflags_t>()) + ..mem::size_of::<__wasi_rights_t>()], + )?; + let fs_rights_inheriting = ValueType::from_le( + &buffer[(mem::size_of::<__wasi_filetype_t>() + + mem::size_of::<__wasi_fdflags_t>() + + mem::size_of::<__wasi_rights_t>())..], + )?; + Ok(Self { + fs_filetype, + fs_flags, + fs_rights_base, + fs_rights_inheriting, + }) + } else { + Err(ValueError::BufferTooSmall) + } + } +} + pub type __wasi_filedelta_t = i64; pub type __wasi_filesize_t = u64; From 5cee576b7b0ed577d0e6a064de29eae46f9977a0 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 29 Mar 2019 17:00:58 -0700 Subject: [PATCH 058/413] add some syscall skeletons; context switching --- lib/wasi/src/syscalls/mod.rs | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index d72cbf466..227dd4647 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -240,16 +240,39 @@ pub fn fd_prestat_get( fd: __wasi_fd_t, buf: WasmPtr<__wasi_prestat_t>, ) -> __wasi_errno_t { - unimplemented!() + let memory = ctx.memory(0); + + if let Some(prestat_ptr) = buf.deref(memory) { + // open fd + // write info to prestat_ptr + __WASI_ESUCCESS + } else { + __WASI_EFAULT + } } + pub fn fd_prestat_dir_name( ctx: &mut Ctx, fd: __wasi_fd_t, path: WasmPtr, path_len: u32, ) -> __wasi_errno_t { - unimplemented!() + let memory = ctx.memory(0); + + if let Some(path_chars) = path.deref(memory, 0, path_len) { + if true /* check if dir */ { + // get name + // write name + // if overflow __WASI_EOVERFLOW + __WASI_ESUCCESS + } else { + __WASI_ENOTDIR + } + } else { + __WASI_EFAULT + } } + pub fn fd_pwrite( ctx: &mut Ctx, fd: __wasi_fd_t, From e156ea2509582348dc20d3ce672d6a348be6b585 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 29 Mar 2019 17:02:58 -0700 Subject: [PATCH 059/413] comment out write logic in linux fd_pread until design discussion --- lib/wasi/src/syscalls/unix/linux.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/wasi/src/syscalls/unix/linux.rs b/lib/wasi/src/syscalls/unix/linux.rs index 601c49075..627f95bf1 100644 --- a/lib/wasi/src/syscalls/unix/linux.rs +++ b/lib/wasi/src/syscalls/unix/linux.rs @@ -24,13 +24,13 @@ pub fn platform_fd_pread( ) }; nread.set(result as u32); - for (i, arr_cell) in iovs.iter().enumerate() { + /*for (i, arr_cell) in iovs.iter().enumerate() { let wasi_iovec = __wasi_iovec_t { buf: iovec[i] as _, buf_len: iovec[i].iov_len as u32, }; arr_cell.set(wasi_iovec); - } + }*/ __WASI_ESUCCESS } From 6ac81a3c84c835727743ba3de223fd1034a6fe18 Mon Sep 17 00:00:00 2001 From: losfair Date: Sun, 31 Mar 2019 00:44:02 +0800 Subject: [PATCH 060/413] Implement more instructions. --- lib/dynasm-backend/src/codegen_x64_v2.rs | 269 ++++++++++++++++++++++- lib/dynasm-backend/src/emitter_x64.rs | 26 +++ lib/dynasm-backend/src/machine.rs | 38 +++- 3 files changed, 323 insertions(+), 10 deletions(-) diff --git a/lib/dynasm-backend/src/codegen_x64_v2.rs b/lib/dynasm-backend/src/codegen_x64_v2.rs index 6cab89843..2a0b673b8 100644 --- a/lib/dynasm-backend/src/codegen_x64_v2.rs +++ b/lib/dynasm-backend/src/codegen_x64_v2.rs @@ -35,6 +35,12 @@ pub struct X64ModuleCodeGenerator { func_import_count: usize, } +#[derive(Copy, Clone, Debug, Eq, PartialEq)] +enum LocalOrTemp { + Local, + Temp +} + pub struct X64FunctionCode { signatures: Arc>, function_signatures: Arc>, @@ -46,7 +52,7 @@ pub struct X64FunctionCode { returns: Vec, locals: Vec, num_params: usize, - value_stack: Vec, + value_stack: Vec<(Location, LocalOrTemp)>, control_stack: Vec, machine: Machine, unreachable_depth: usize, @@ -346,6 +352,99 @@ impl X64FunctionCode { } } + fn emit_binop_i32( + a: &mut Assembler, + m: &mut Machine, + value_stack: &mut Vec<(Location, LocalOrTemp)>, + f: F, + ) { + // Using Red Zone here. + let loc_b = get_location_released(a, m, value_stack.pop().unwrap()); + let loc_a = get_location_released(a, m, value_stack.pop().unwrap()); + let ret = m.acquire_locations(a, &[WpType::I32], false)[0]; + assert_eq!(loc_a, ret); + Self::emit_relaxed_binop( + a, m, f, + Size::S32, loc_b, ret, + ); + } + + fn emit_cmpop_i32_dynamic_b( + a: &mut Assembler, + m: &mut Machine, + value_stack: &mut Vec<(Location, LocalOrTemp)>, + c: Condition, + loc_b: Location, + ) { + // Using Red Zone here. + let loc_a = get_location_released(a, m, value_stack.pop().unwrap()); + let ret = m.acquire_locations(a, &[WpType::I32], false)[0]; + match ret { + Location::GPR(x) => { + a.emit_xor(Size::S32, Location::GPR(x), Location::GPR(x)); + Self::emit_relaxed_binop( + a, m, Assembler::emit_cmp, + Size::S32, loc_b, loc_a, + ); + a.emit_set(c, x); + }, + Location::Memory(_, _) => { + let tmp = m.acquire_temp_gpr().unwrap(); + a.emit_xor(Size::S32, Location::GPR(tmp), Location::GPR(tmp)); + Self::emit_relaxed_binop( + a, m, Assembler::emit_cmp, + Size::S32, loc_b, loc_a, + ); + a.emit_set(c, tmp); + a.emit_mov(Size::S32, Location::GPR(tmp), ret); + m.release_temp_gpr(tmp); + }, + _ => unreachable!() + } + } + + fn emit_cmpop_i32( + a: &mut Assembler, + m: &mut Machine, + value_stack: &mut Vec<(Location, LocalOrTemp)>, + c: Condition, + ) { + let loc_b = get_location_released(a, m, value_stack.pop().unwrap()); + Self::emit_cmpop_i32_dynamic_b(a, m, value_stack, c, loc_b); + } + + fn emit_xcnt_i32( + a: &mut Assembler, + m: &mut Machine, + value_stack: &mut Vec<(Location, LocalOrTemp)>, + f: F, + ) { + let loc = get_location_released(a, m, value_stack.pop().unwrap()); + let ret = m.acquire_locations(a, &[WpType::I32], false)[0]; + if let Location::Imm32(x) = loc { + let tmp = m.acquire_temp_gpr().unwrap(); + a.emit_mov(Size::S32, loc, Location::GPR(tmp)); + if let Location::Memory(_, _) = ret { + let out_tmp = m.acquire_temp_gpr().unwrap(); + f(a, Size::S32, Location::GPR(tmp), Location::GPR(out_tmp)); + a.emit_mov(Size::S32, Location::GPR(out_tmp), ret); + m.release_temp_gpr(out_tmp); + } else { + f(a, Size::S32, Location::GPR(tmp), ret); + } + m.release_temp_gpr(tmp); + } else { + if let Location::Memory(_, _) = ret { + let out_tmp = m.acquire_temp_gpr().unwrap(); + f(a, Size::S32, loc, Location::GPR(out_tmp)); + a.emit_mov(Size::S32, Location::GPR(out_tmp), ret); + m.release_temp_gpr(out_tmp); + } else { + f(a, Size::S32, loc, ret); + } + } + } + fn get_param_location( idx: usize ) -> Location { @@ -372,13 +471,13 @@ impl FunctionCodeGenerator for X64FunctionCode { self.locals.push(Self::get_param_location( self.num_params + 1 )); + self.num_params += 1; Ok(()) } fn feed_local(&mut self, ty: WpType, n: usize) -> Result<(), CodegenError> { let a = self.assembler.as_mut().unwrap(); - let types: Vec<_> = ::std::iter::repeat(ty).take(n).collect(); - self.machine.acquire_locations(a, &types, true); + self.machine.acquire_stack_locations(a, n, true); Ok(()) } @@ -434,6 +533,166 @@ impl FunctionCodeGenerator for X64FunctionCode { } let a = self.assembler.as_mut().unwrap(); - unimplemented!(); + match op { + Operator::GetGlobal { global_index } => { + let mut global_index = global_index as usize; + let loc = self.machine.acquire_locations( + a, + &[type_to_wp_type( + module_info.globals[LocalGlobalIndex::new(global_index)] + .desc + .ty, + )], + false + )[0]; + self.value_stack.push((loc, LocalOrTemp::Temp)); + + let tmp = self.machine.acquire_temp_gpr().unwrap(); + + if global_index < module_info.imported_globals.len() { + a.emit_mov(Size::S64, Location::Memory(GPR::RDI, vm::Ctx::offset_imported_globals() as i32), Location::GPR(tmp)); + } else { + global_index -= module_info.imported_globals.len(); + assert!(global_index < module_info.globals.len()); + a.emit_mov(Size::S64, Location::Memory(GPR::RDI, vm::Ctx::offset_globals() as i32), Location::GPR(tmp)); + } + a.emit_mov(Size::S64, Location::Memory(tmp, (global_index as i32) * 8), Location::GPR(tmp)); + Self::emit_relaxed_binop( + a, &mut self.machine, Assembler::emit_mov, + Size::S64, Location::Memory(tmp, LocalGlobal::offset_data() as i32), loc + ); + + self.machine.release_temp_gpr(tmp); + } + Operator::SetGlobal { global_index } => { + let mut global_index = global_index as usize; + let (loc, local_or_temp) = self.value_stack.pop().unwrap(); + + let tmp = self.machine.acquire_temp_gpr().unwrap(); + + if global_index < module_info.imported_globals.len() { + a.emit_mov(Size::S64, Location::Memory(GPR::RDI, vm::Ctx::offset_imported_globals() as i32), Location::GPR(tmp)); + } else { + global_index -= module_info.imported_globals.len(); + assert!(global_index < module_info.globals.len()); + a.emit_mov(Size::S64, Location::Memory(GPR::RDI, vm::Ctx::offset_globals() as i32), Location::GPR(tmp)); + } + a.emit_mov(Size::S64, Location::Memory(tmp, (global_index as i32) * 8), Location::GPR(tmp)); + Self::emit_relaxed_binop( + a, &mut self.machine, Assembler::emit_mov, + Size::S64, loc, Location::Memory(tmp, LocalGlobal::offset_data() as i32) + ); + + self.machine.release_temp_gpr(tmp); + if local_or_temp == LocalOrTemp::Temp { + self.machine.release_locations(a, &[loc]); + } + } + Operator::GetLocal { local_index } => { + let local_index = local_index as usize; + self.value_stack.push((self.locals[local_index], LocalOrTemp::Local)); + } + Operator::SetLocal { local_index } => { + let local_index = local_index as usize; + let (loc, local_or_temp) = self.value_stack.pop().unwrap(); + + Self::emit_relaxed_binop( + a, &mut self.machine, Assembler::emit_mov, + Size::S64, loc, self.locals[local_index], + ); + if local_or_temp == LocalOrTemp::Temp { + self.machine.release_locations(a, &[loc]); + } + } + Operator::TeeLocal { local_index } => { + let local_index = local_index as usize; + let (loc, _) = *self.value_stack.last().unwrap(); + + Self::emit_relaxed_binop( + a, &mut self.machine, Assembler::emit_mov, + Size::S64, loc, self.locals[local_index], + ); + } + Operator::I32Const { value } => self.value_stack.push((Location::Imm32(value as u32), LocalOrTemp::Temp)), + Operator::I32Add => Self::emit_binop_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_add), + Operator::I32Sub => Self::emit_binop_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_sub), + Operator::I32Mul => Self::emit_binop_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_imul), + Operator::I32DivU => { + // We assume that RAX and RDX are temporary registers here. + let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; + a.emit_mov(Size::S32, loc_a, Location::GPR(GPR::RAX)); + a.emit_xor(Size::S32, Location::GPR(GPR::RDX), Location::GPR(GPR::RDX)); + a.emit_div(Size::S32, loc_b); + a.emit_mov(Size::S32, Location::GPR(GPR::RAX), ret); + } + Operator::I32DivS => { + // We assume that RAX and RDX are temporary registers here. + let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; + a.emit_mov(Size::S32, loc_a, Location::GPR(GPR::RAX)); + a.emit_xor(Size::S32, Location::GPR(GPR::RDX), Location::GPR(GPR::RDX)); + a.emit_idiv(Size::S32, loc_b); + a.emit_mov(Size::S32, Location::GPR(GPR::RAX), ret); + } + Operator::I32RemU => { + // We assume that RAX and RDX are temporary registers here. + let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; + a.emit_mov(Size::S32, loc_a, Location::GPR(GPR::RAX)); + a.emit_xor(Size::S32, Location::GPR(GPR::RDX), Location::GPR(GPR::RDX)); + a.emit_div(Size::S32, loc_b); + a.emit_mov(Size::S32, Location::GPR(GPR::RDX), ret); + } + Operator::I32RemS => { + // We assume that RAX and RDX are temporary registers here. + let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; + a.emit_mov(Size::S32, loc_a, Location::GPR(GPR::RAX)); + a.emit_xor(Size::S32, Location::GPR(GPR::RDX), Location::GPR(GPR::RDX)); + a.emit_idiv(Size::S32, loc_b); + a.emit_mov(Size::S32, Location::GPR(GPR::RDX), ret); + } + Operator::I32And => Self::emit_binop_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_and), + Operator::I32Or => Self::emit_binop_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_or), + Operator::I32Xor => Self::emit_binop_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_xor), + Operator::I32Eq => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::Equal), + Operator::I32Ne => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::NotEqual), + Operator::I32LtU => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::Below), + Operator::I32LeU => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::BelowEqual), + Operator::I32GtU => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::Above), + Operator::I32GeU => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::AboveEqual), + Operator::I32LtS => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::Less), + Operator::I32LeS => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::LessEqual), + Operator::I32GtS => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::Greater), + Operator::I32GeS => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::GreaterEqual), + Operator::I32Eqz => Self::emit_cmpop_i32_dynamic_b(a, &mut self.machine, &mut self.value_stack, Condition::Equal, Location::Imm32(0)), + Operator::I32Clz => Self::emit_xcnt_i32(a, &mut self.machine, &mut self.value_stack, Emitter::emit_lzcnt), + Operator::I32Ctz => Self::emit_xcnt_i32(a, &mut self.machine, &mut self.value_stack, Emitter::emit_tzcnt), + Operator::I32Popcnt => Self::emit_xcnt_i32(a, &mut self.machine, &mut self.value_stack, Emitter::emit_popcnt), + _ => unimplemented!() + } + + Ok(()) } -} \ No newline at end of file +} + +fn type_to_wp_type(ty: Type) -> WpType { + match ty { + Type::I32 => WpType::I32, + Type::I64 => WpType::I64, + Type::F32 => WpType::F32, + Type::F64 => WpType::F64, + } +} + +fn get_location_released(a: &mut Assembler, m: &mut Machine, (loc, lot): (Location, LocalOrTemp)) -> Location { + if lot == LocalOrTemp::Temp { + m.release_locations(a, &[loc]); + } + loc +} diff --git a/lib/dynasm-backend/src/emitter_x64.rs b/lib/dynasm-backend/src/emitter_x64.rs index e3d18b6f0..adb05d8d5 100644 --- a/lib/dynasm-backend/src/emitter_x64.rs +++ b/lib/dynasm-backend/src/emitter_x64.rs @@ -91,6 +91,11 @@ pub trait Emitter { fn emit_shl(&mut self, sz: Size, src: Location, dst: Location); fn emit_shr(&mut self, sz: Size, src: Location, dst: Location); fn emit_sar(&mut self, sz: Size, src: Location, dst: Location); + fn emit_and(&mut self, sz: Size, src: Location, dst: Location); + fn emit_or(&mut self, sz: Size, src: Location, dst: Location); + fn emit_lzcnt(&mut self, sz: Size, src: Location, dst: Location); + fn emit_tzcnt(&mut self, sz: Size, src: Location, dst: Location); + fn emit_popcnt(&mut self, sz: Size, src: Location, dst: Location); fn emit_ud2(&mut self); } @@ -390,6 +395,27 @@ impl Emitter for Assembler { fn emit_sar(&mut self, sz: Size, src: Location, dst: Location) { binop_shift!(sar, self, sz, src, dst, { unreachable!() }); } + fn emit_and(&mut self, sz: Size, src: Location, dst: Location) { + binop_all_nofp!(and, self, sz, src, dst, {unreachable!()}); + } + fn emit_or(&mut self, sz: Size, src: Location, dst: Location) { + binop_all_nofp!(or, self, sz, src, dst, {unreachable!()}); + } + fn emit_lzcnt(&mut self, sz: Size, src: Location, dst: Location) { + binop_gpr_gpr!(lzcnt, self, sz, src, dst, { + binop_mem_gpr!(lzcnt, self, sz, src, dst, {unreachable!()}) + }); + } + fn emit_tzcnt(&mut self, sz: Size, src: Location, dst: Location) { + binop_gpr_gpr!(tzcnt, self, sz, src, dst, { + binop_mem_gpr!(tzcnt, self, sz, src, dst, {unreachable!()}) + }); + } + fn emit_popcnt(&mut self, sz: Size, src: Location, dst: Location) { + binop_gpr_gpr!(popcnt, self, sz, src, dst, { + binop_mem_gpr!(popcnt, self, sz, src, dst, {unreachable!()}) + }); + } fn emit_ud2(&mut self) { dynasm!(self ; ud2); diff --git a/lib/dynasm-backend/src/machine.rs b/lib/dynasm-backend/src/machine.rs index 0de50dee9..ce6ae4907 100644 --- a/lib/dynasm-backend/src/machine.rs +++ b/lib/dynasm-backend/src/machine.rs @@ -25,8 +25,6 @@ impl Machine { pub fn pick_gpr(&self) -> Option { use GPR::*; static REGS: &'static [GPR] = &[ - RCX, - RDX, RBX, RSI, RDI, @@ -34,6 +32,8 @@ impl Machine { R9, R10, R11, + R12, + R13, ]; for r in REGS { if !self.used_gprs.contains(r) { @@ -50,8 +50,8 @@ impl Machine { use GPR::*; static REGS: &'static [GPR] = &[ RAX, - R12, - R13, + RCX, + RDX, R14, R15 ]; @@ -129,6 +129,34 @@ impl Machine { assert_eq!(self.used_xmms.remove(&xmm), true); } + /// Acquires stack locations from the machine state. + pub fn acquire_stack_locations( + &mut self, + assembler: &mut E, + n: usize, + zeroed: bool, + ) -> Vec { + let mut ret = vec![]; + let mut delta_stack_offset: usize = 0; + + for _ in 0..n { + let loc = { + self.stack_offset.0 += 8; + delta_stack_offset += 8; + Location::Memory(GPR::RBP, -(self.stack_offset.0 as i32)) + }; + ret.push(loc); + } + + assembler.emit_sub(Size::S64, Location::Imm32(delta_stack_offset as u32), Location::GPR(GPR::RSP)); + if zeroed { + for i in 0..n { + assembler.emit_mov(Size::S64, Location::Imm32(0), ret[i]); + } + } + ret + } + /// Acquires locations from the machine state. /// /// If the returned locations are used for stack value, `release_location` needs to be called on them; @@ -173,7 +201,7 @@ impl Machine { assembler.emit_sub(Size::S64, Location::Imm32(delta_stack_offset as u32), Location::GPR(GPR::RSP)); if zeroed { for i in 0..tys.len() { - assembler.emit_mov(Size::S64, Location::Imm32(0), Location::Memory(GPR::RSP, (i * 8) as i32)); + assembler.emit_mov(Size::S64, Location::Imm32(0), ret[i]); } } ret From ee60d47f5cd8d330319ba27da7408cbd5b6902f5 Mon Sep 17 00:00:00 2001 From: Mateusz Piotrowski <0mp@FreeBSD.org> Date: Mon, 1 Apr 2019 09:48:32 +0200 Subject: [PATCH 061/413] Add FreeBSD installation instructions for CMake --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 2a97592ed..35838e4f1 100644 --- a/README.md +++ b/README.md @@ -70,6 +70,7 @@ Please select your operating system: - [macOS](#macos) - [Debian-based Linuxes](#debian-based-linuxes) +- [FreeBSD](#freebsd) - [Microsoft Windows](#windows-msvc) #### macOS @@ -92,6 +93,12 @@ sudo port install cmake sudo apt install cmake ``` +#### FreeBSD + +```sh +pkg install cmake +``` + #### Windows (MSVC) Windows support is _highly experimental_. Only simple Wasm programs may be run, and no syscalls are allowed. This means From 6762c2d5866f642c8a41531826be3a000e771f7e Mon Sep 17 00:00:00 2001 From: losfair Date: Mon, 1 Apr 2019 20:33:33 +0800 Subject: [PATCH 062/413] More opcodes for codegen v2. --- lib/dynasm-backend/src/codegen_x64.rs | 5226 +++------------------ lib/dynasm-backend/src/codegen_x64_v1.rs | 5261 ++++++++++++++++++++++ lib/dynasm-backend/src/codegen_x64_v2.rs | 698 --- lib/dynasm-backend/src/emitter_x64.rs | 41 +- lib/dynasm-backend/src/lib.rs | 2 +- lib/dynasm-backend/src/machine.rs | 47 +- 6 files changed, 5853 insertions(+), 5422 deletions(-) create mode 100644 lib/dynasm-backend/src/codegen_x64_v1.rs delete mode 100644 lib/dynasm-backend/src/codegen_x64_v2.rs diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index ef056a695..1214530ef 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -1,9 +1,6 @@ #![allow(clippy::forget_copy)] // Used by dynasm. use super::codegen::*; -use super::stack::{ - ControlFrame, ControlStack, IfElseState, ScratchRegister, ValueInfo, ValueLocation, ValueStack, -}; use crate::protect_unix; use byteorder::{ByteOrder, LittleEndian}; use dynasmrt::{ @@ -26,72 +23,11 @@ use wasmer_runtime_core::{ vm::{self, ImportBacking, LocalGlobal, LocalMemory, LocalTable}, }; use wasmparser::{Operator, Type as WpType}; - -thread_local! { - static CURRENT_EXECUTION_CONTEXT: RefCell> = RefCell::new(Vec::new()); -} +use crate::machine::*; +use crate::emitter_x64::*; lazy_static! { - static ref CALL_WASM: unsafe extern "C" fn( - params: *const u8, - params_len: usize, - target: *const u8, - memory_base: *mut u8, - memory_size_pages: usize, - vmctx: *mut vm::Ctx - ) -> i64 = { - let mut assembler = Assembler::new().unwrap(); - let offset = assembler.offset(); - dynasm!( - assembler - ; push rbx - ; push r12 - ; push r13 - ; push r14 - ; push r15 - - ; mov r15, rcx // memory_base - - // Use the upper 16 bits of r15 to store memory size (in pages). This can support memory size up to 4GB. - // Wasmer currently only runs in usermode so here we assume the upper 17 bits of memory base address are all zero. - // FIXME: Change this if want to use this backend in kernel mode. - ; shl r8, 48 - ; or r15, r8 - - ; mov r14, r9 // vmctx - ; lea rax, [>after_call] - ; push rax - ; push rbp - ; mov rbp, rsp - ; sub rsp, rsi // params_len - ; mov rcx, 0 - ; mov r8, rsp - ; _loop: - ; cmp rsi, 0 - ; je >_loop_end - ; mov rax, [rdi] - ; mov [r8], rax - ; add r8, 8 - ; add rdi, 8 - ; sub rsi, 8 - ; jmp <_loop - ; _loop_end: - ; jmp rdx - ; after_call: - ; pop r15 - ; pop r14 - ; pop r13 - ; pop r12 - ; pop rbx - ; ret - ); - let buf = assembler.finalize().unwrap(); - let ret = unsafe { ::std::mem::transmute(buf.ptr(offset)) }; - ::std::mem::forget(buf); - ret - }; - - static ref CONSTRUCT_STACK_AND_CALL_NATIVE: unsafe extern "C" fn (stack_top: *mut u8, stack_base: *mut u8, ctx: *mut vm::Ctx, target: *const vm::Func) -> u64 = { + static ref CONSTRUCT_STACK_AND_CALL_WASM: unsafe extern "C" fn (stack_top: *const u8, stack_base: *const u8, ctx: *mut vm::Ctx, target: *const vm::Func) -> u64 = { let mut assembler = Assembler::new().unwrap(); let offset = assembler.offset(); dynasm!( @@ -177,106 +113,37 @@ lazy_static! { }; } -#[repr(u8)] -#[derive(Copy, Clone, Debug, Eq, PartialEq)] -#[allow(dead_code)] -pub enum Register { - RAX, - RCX, - RDX, - RBX, - RSP, - RBP, - RSI, - RDI, - R8, - R9, - R10, - R11, - R12, - R13, - R14, - R15, -} - -impl Register { - pub fn from_scratch_reg(sr: ScratchRegister) -> Register { - use self::Register::*; - match sr.raw_id() { - 0 => RDI, - 1 => RSI, - 2 => RDX, - 3 => RCX, - 4 => R8, - 5 => R9, - 6 => R10, - 7 => R11, - 8 => RBX, - 9 => R12, - // 10 => R13, // R13 is reserved as temporary register. - // 11 => R14, // R14 is reserved for vmctx. - // 12 => R15, // R15 is reserved for memory base pointer. - _ => unreachable!(), - } - } - - pub fn is_used(&self, stack: &ValueStack) -> bool { - for val in &stack.values { - match val.location { - ValueLocation::Register(x) => { - if Register::from_scratch_reg(x) == *self { - return true; - } - } - ValueLocation::Stack => break, - } - } - - false - } -} - -#[allow(dead_code)] -pub struct NativeTrampolines { - memory_size_dynamic_local: DynamicLabel, - memory_size_static_local: DynamicLabel, - memory_size_shared_local: DynamicLabel, - memory_size_dynamic_import: DynamicLabel, - memory_size_static_import: DynamicLabel, - memory_size_shared_import: DynamicLabel, - memory_grow_dynamic_local: DynamicLabel, - memory_grow_static_local: DynamicLabel, - memory_grow_shared_local: DynamicLabel, - memory_grow_dynamic_import: DynamicLabel, - memory_grow_static_import: DynamicLabel, - memory_grow_shared_import: DynamicLabel, -} - pub struct X64ModuleCodeGenerator { functions: Vec, signatures: Option>>, function_signatures: Option>>, function_labels: Option)>>, assembler: Option, - native_trampolines: Arc, func_import_count: usize, } +#[derive(Copy, Clone, Debug, Eq, PartialEq)] +enum LocalOrTemp { + Local, + Temp +} + pub struct X64FunctionCode { signatures: Arc>, function_signatures: Arc>, - native_trampolines: Arc, begin_offset: AssemblyOffset, assembler: Option, function_labels: Option)>>, br_table_data: Option>>, returns: Vec, - locals: Vec, + locals: Vec, + vmctx_location: Option, num_params: usize, - current_stack_offset: usize, - value_stack: ValueStack, - control_stack: Option, + num_locals: usize, + value_stack: Vec<(Location, LocalOrTemp)>, + control_stack: Vec, + machine: Machine, unreachable_depth: usize, } @@ -298,8 +165,23 @@ pub struct X64ExecutionContext { } pub struct X64RuntimeResolver { - _code: ExecutableBuffer, - local_pointers: Vec, + function_pointers: Vec, +} + +#[derive(Debug)] +pub struct ControlFrame { + pub label: DynamicLabel, + pub loop_like: bool, + pub if_else: IfElseState, + pub returns: Vec, + pub value_stack_depth: usize, +} + +#[derive(Debug, Copy, Clone)] +pub enum IfElseState { + None, + If(DynamicLabel), + Else, } impl X64ExecutionContext { @@ -307,28 +189,8 @@ impl X64ExecutionContext { &self, module_info: &ModuleInfo, ) -> Result { - let mut assembler = Assembler::new().unwrap(); - let mut offsets: Vec = vec![]; - - for i in self.func_import_count..self.function_pointers.len() { - offsets.push(assembler.offset()); - X64FunctionCode::emit_managed_call_trampoline( - &mut assembler, - module_info, - self.function_pointers[i], - self.signatures[self.function_signatures[FuncIndex::new(i)]] - .params() - .len(), - )?; - } - - let code = assembler.finalize().unwrap(); - let local_pointers: Vec = - offsets.iter().map(|x| FuncPtr(code.ptr(*x) as _)).collect(); - Ok(X64RuntimeResolver { - _code: code, - local_pointers: local_pointers, + function_pointers: self.function_pointers.clone(), }) } } @@ -339,7 +201,7 @@ impl FuncResolver for X64RuntimeResolver { _module: &ModuleInner, _local_func_index: LocalFuncIndex, ) -> Option> { - NonNull::new(self.local_pointers[_local_func_index.index() as usize].0 as *mut vm::Func) + NonNull::new(self.function_pointers[_local_func_index.index() as usize].0 as *mut vm::Func) } } @@ -356,101 +218,27 @@ impl ProtectedCaller for X64ExecutionContext { let index = _func_index.index() - self.func_import_count; let ptr = self.code.ptr(self.functions[index].begin_offset); let return_ty = self.functions[index].returns.last().cloned(); - - if self.functions[index].num_params != _params.len() { - return Err(RuntimeError::Trap { - msg: "param count mismatch".into(), - }); - } - - let f = &self.functions[index]; - let total_size = f.num_params * 8; - - if f.num_params > 0 && f.locals[f.num_params - 1].stack_offset != total_size { - panic!("internal error: inconsistent stack layout"); - } - - let mut param_buf: Vec = vec![0; total_size]; - for i in 0..f.num_params { - let local = &f.locals[i]; - let buf = &mut param_buf[total_size - local.stack_offset..]; - let size = get_size_of_type(&local.ty).unwrap(); - - if is_dword(size) { - match _params[i] { - Value::I32(x) => LittleEndian::write_u32(buf, x as u32), - Value::F32(x) => LittleEndian::write_u32(buf, f32::to_bits(x)), - _ => { - return Err(RuntimeError::Trap { - msg: "signature mismatch".into(), - }); - } - } - } else { - match _params[i] { - Value::I64(x) => LittleEndian::write_u64(buf, x as u64), - Value::F64(x) => LittleEndian::write_u64(buf, f64::to_bits(x)), - _ => { - return Err(RuntimeError::Trap { - msg: "signature mismatch".into(), - }); - } - } + let buffer: Vec = _params.iter().rev().map(|x| { + match *x { + Value::I32(x) => x as u32 as u64, + Value::I64(x) => x as u64, + Value::F32(x) => f32::to_bits(x) as u64, + Value::F64(x) => f64::to_bits(x), } - } - - let (memory_base, memory_size): (*mut u8, usize) = if _module.info.memories.len() > 0 { - if _module.info.memories.len() != 1 || _module.info.imported_memories.len() != 0 { - return Err(RuntimeError::Trap { - msg: "only one linear memory is supported".into(), - }); - } - unsafe { - let vmctx = _vmctx as *mut vm::InternalCtx; - ((**(*vmctx).memories).base, (**(*vmctx).memories).bound) - } - } else if _module.info.imported_memories.len() > 0 { - if _module.info.memories.len() != 0 || _module.info.imported_memories.len() != 1 { - return Err(RuntimeError::Trap { - msg: "only one linear memory is supported".into(), - }); - } - unsafe { - let vmctx = _vmctx as *mut vm::InternalCtx; - ( - (**(*vmctx).imported_memories).base, - (**(*vmctx).imported_memories).bound, - ) - } - } else { - (::std::ptr::null_mut(), 0) - }; - //println!("MEMORY = {:?}", memory_base); - - CURRENT_EXECUTION_CONTEXT.with(|x| x.borrow_mut().push(self)); - + }).collect(); let ret = unsafe { - protect_unix::call_protected(|| { - CALL_WASM( - param_buf.as_ptr(), - param_buf.len(), - ptr, - memory_base, - memory_size.wrapping_shr(16), - _vmctx, - ) - }) + CONSTRUCT_STACK_AND_CALL_WASM( + buffer.as_ptr() as *const u8, + buffer.as_ptr().offset(buffer.len() as isize) as *const u8, + _vmctx, + ptr as _, + ) }; - - CURRENT_EXECUTION_CONTEXT.with(|x| x.borrow_mut().pop().unwrap()); - - let ret = ret?; - Ok(if let Some(ty) = return_ty { vec![match ty { WpType::I32 => Value::I32(ret as i32), - WpType::I64 => Value::I64(ret), - WpType::F32 => Value::F32(f32::from_bits(ret as i32 as u32)), + WpType::I64 => Value::I64(ret as i64), + WpType::F32 => Value::F32(f32::from_bits(ret as u32)), WpType::F64 => Value::F64(f64::from_bits(ret as u64)), _ => unreachable!(), }] @@ -472,89 +260,9 @@ impl ProtectedCaller for X64ExecutionContext { } } -#[derive(Copy, Clone, Debug)] -struct Local { - ty: WpType, - stack_offset: usize, -} - impl X64ModuleCodeGenerator { pub fn new() -> X64ModuleCodeGenerator { let mut assembler = Assembler::new().unwrap(); - let nt = NativeTrampolines { - memory_size_dynamic_local: X64FunctionCode::emit_native_call_trampoline( - &mut assembler, - _memory_size, - MemoryKind::DynamicLocal, - 0usize, - ), - memory_size_static_local: X64FunctionCode::emit_native_call_trampoline( - &mut assembler, - _memory_size, - MemoryKind::StaticLocal, - 0usize, - ), - memory_size_shared_local: X64FunctionCode::emit_native_call_trampoline( - &mut assembler, - _memory_size, - MemoryKind::SharedLocal, - 0usize, - ), - memory_size_dynamic_import: X64FunctionCode::emit_native_call_trampoline( - &mut assembler, - _memory_size, - MemoryKind::DynamicImport, - 0usize, - ), - memory_size_static_import: X64FunctionCode::emit_native_call_trampoline( - &mut assembler, - _memory_size, - MemoryKind::StaticImport, - 0usize, - ), - memory_size_shared_import: X64FunctionCode::emit_native_call_trampoline( - &mut assembler, - _memory_size, - MemoryKind::SharedImport, - 0usize, - ), - memory_grow_dynamic_local: X64FunctionCode::emit_native_call_trampoline( - &mut assembler, - _memory_grow, - MemoryKind::DynamicLocal, - 0usize, - ), - memory_grow_static_local: X64FunctionCode::emit_native_call_trampoline( - &mut assembler, - _memory_grow, - MemoryKind::StaticLocal, - 0usize, - ), - memory_grow_shared_local: X64FunctionCode::emit_native_call_trampoline( - &mut assembler, - _memory_grow, - MemoryKind::SharedLocal, - 0usize, - ), - memory_grow_dynamic_import: X64FunctionCode::emit_native_call_trampoline( - &mut assembler, - _memory_grow, - MemoryKind::DynamicImport, - 0usize, - ), - memory_grow_static_import: X64FunctionCode::emit_native_call_trampoline( - &mut assembler, - _memory_grow, - MemoryKind::StaticImport, - 0usize, - ), - memory_grow_shared_import: X64FunctionCode::emit_native_call_trampoline( - &mut assembler, - _memory_grow, - MemoryKind::SharedImport, - 0usize, - ), - }; X64ModuleCodeGenerator { functions: vec![], @@ -562,7 +270,6 @@ impl X64ModuleCodeGenerator { function_signatures: None, function_labels: Some(HashMap::new()), assembler: Some(assembler), - native_trampolines: Arc::new(nt), func_import_count: 0, } } @@ -604,7 +311,6 @@ impl ModuleCodeGenerator Result<(), CodegenError> { + /* let labels = match self.function_labels.as_mut() { Some(x) => x, None => { @@ -721,9 +430,11 @@ impl ModuleCodeGenerator Result<(), CodegenError> { - match info.location { - ValueLocation::Register(_) => {} - ValueLocation::Stack => { - dynasm!( - assembler - ; add rsp, 8 - ); - } - } - Ok(()) - } - - fn emit_reinterpret( - value_stack: &mut ValueStack, - in_ty: WpType, - out_ty: WpType, - ) -> Result<(), CodegenError> { - let val = value_stack.pop()?; - if val.ty != in_ty { - return Err(CodegenError { - message: "reinterpret type mismatch", - }); - } - value_stack.push(out_ty); - Ok(()) - } - - /// Emits a unary operator. - fn emit_unop( - assembler: &mut Assembler, - value_stack: &mut ValueStack, - f: F, - in_ty: WpType, - out_ty: WpType, - ) -> Result<(), CodegenError> { - let a = value_stack.pop()?; - if a.ty != in_ty { - return Err(CodegenError { - message: "unop(i32) type mismatch", - }); - } - value_stack.push(out_ty); - - match a.location { - ValueLocation::Register(x) => { - let reg = Register::from_scratch_reg(x); - f(assembler, value_stack, reg); - } - ValueLocation::Stack => { - dynasm!( - assembler - ; mov rax, [rsp] - ); - f(assembler, value_stack, Register::RAX); - dynasm!( - assembler - ; mov [rsp], rax - ); - } - } - - Ok(()) - } - - fn emit_unop_i32( - assembler: &mut Assembler, - value_stack: &mut ValueStack, - f: F, - ) -> Result<(), CodegenError> { - Self::emit_unop(assembler, value_stack, f, WpType::I32, WpType::I32) - } - - fn emit_unop_i64( - assembler: &mut Assembler, - value_stack: &mut ValueStack, - f: F, - ) -> Result<(), CodegenError> { - Self::emit_unop(assembler, value_stack, f, WpType::I64, WpType::I64) - } - - /// Emits a binary operator. - /// - /// Guarantees that the first Register parameter to callback `f` will never be `Register::RAX`. - fn emit_binop( - assembler: &mut Assembler, - value_stack: &mut ValueStack, - f: F, - in_ty: WpType, - out_ty: WpType, - ) -> Result<(), CodegenError> { - let (a, b) = value_stack.pop2()?; - if a.ty != in_ty || b.ty != in_ty { - return Err(CodegenError { - message: "binop(i32) type mismatch", - }); - } - value_stack.push(out_ty); - - if a.location.is_register() && b.location.is_register() { - // output is in a_reg. - f( - assembler, - value_stack, - Register::from_scratch_reg(a.location.get_register()?), - Register::from_scratch_reg(b.location.get_register()?), - ); - } else if a.location.is_register() { - dynasm!( - assembler - ; pop rax - ); - f( - assembler, - value_stack, - Register::from_scratch_reg(a.location.get_register()?), - Register::RAX, - ); - } else if b.location.is_register() { - unreachable!(); - } else { - dynasm!( - assembler - ; push rcx - ; mov rcx, [rsp + 16] - ; mov rax, [rsp + 8] - ); - f(assembler, value_stack, Register::RCX, Register::RAX); - dynasm!( - assembler - ; mov [rsp + 16], rcx - ; pop rcx - ; add rsp, 8 - ); - } - - Ok(()) - } - - fn emit_binop_i32( - assembler: &mut Assembler, - value_stack: &mut ValueStack, - f: F, - ) -> Result<(), CodegenError> { - Self::emit_binop(assembler, value_stack, f, WpType::I32, WpType::I32) - } - - fn emit_binop_i64( - assembler: &mut Assembler, - value_stack: &mut ValueStack, - f: F, - ) -> Result<(), CodegenError> { - Self::emit_binop(assembler, value_stack, f, WpType::I64, WpType::I64) - } - - fn emit_shift( - assembler: &mut Assembler, - value_stack: &ValueStack, - left: Register, - right: Register, - f: F, + fn emit_relaxed_binop ( + a: &mut Assembler, + m: &mut Machine, + op: F, + sz: Size, + src: Location, + dst: Location, ) { - let rcx_used = Register::RCX.is_used(value_stack); - if rcx_used { - dynasm!( - assembler - ; push rcx - ); - } - dynasm!( - assembler - ; mov rcx, Rq(right as u8) - ); - f(assembler, left); - if rcx_used { - dynasm!( - assembler - ; pop rcx - ); - } - } - - fn emit_div_i32( - assembler: &mut Assembler, - value_stack: &ValueStack, - left: Register, - right: Register, - signed: bool, - out: Register, - ) { - let dx_save = - Register::RDX.is_used(value_stack) && left != Register::RDX && right != Register::RDX; - if dx_save { - dynasm!( - assembler - ; push rdx - ); - } - - dynasm!( - assembler - ; push r15 - ; mov r15d, Rd(right as u8) - ; mov eax, Rd(left as u8) - ); - if signed { - dynasm!( - assembler - ; cdq - ; idiv r15d - ); - } else { - dynasm!( - assembler - ; xor edx, edx - ; div r15d - ); - } - dynasm!( - assembler - ; mov Rd(left as u8), Rd(out as u8) - ; pop r15 - ); - - if dx_save { - dynasm!( - assembler - ; pop rdx - ); - } - } - - fn emit_div_i64( - assembler: &mut Assembler, - value_stack: &ValueStack, - left: Register, - right: Register, - signed: bool, - out: Register, - ) { - let dx_save = - Register::RDX.is_used(value_stack) && left != Register::RDX && right != Register::RDX; - if dx_save { - dynasm!( - assembler - ; push rdx - ); - } - - dynasm!( - assembler - ; push r15 - ; mov r15, Rq(right as u8) - ; mov rax, Rq(left as u8) - ); - if signed { - dynasm!( - assembler - ; cqo - ; idiv r15 - ); - } else { - dynasm!( - assembler - ; xor rdx, rdx - ; div r15 - ); - } - dynasm!( - assembler - ; mov Rq(left as u8), Rq(out as u8) - ; pop r15 - ); - - if dx_save { - dynasm!( - assembler - ; pop rdx - ); - } - } - - fn emit_cmp_i32( - assembler: &mut Assembler, - left: Register, - right: Register, - f: F, - ) { - dynasm!( - assembler - ; cmp Rd(left as u8), Rd(right as u8) - ); - f(assembler); - dynasm!( - assembler - ; xor Rd(left as u8), Rd(left as u8) - ; jmp >label_end - ; label_true: - ; mov Rd(left as u8), 1 - ; label_end: - ); - } - - fn emit_cmp_i64( - assembler: &mut Assembler, - left: Register, - right: Register, - f: F, - ) { - dynasm!( - assembler - ; cmp Rq(left as u8), Rq(right as u8) - ); - f(assembler); - dynasm!( - assembler - ; xor Rq(left as u8), Rq(left as u8) - ; jmp >label_end - ; label_true: - ; mov Rq(left as u8), 1 - ; label_end: - ); - } - - fn emit_peek_into_ax( - assembler: &mut Assembler, - value_stack: &ValueStack, - ) -> Result { - let val = match value_stack.values.last() { - Some(x) => *x, - None => { - return Err(CodegenError { - message: "no value", - }); + match (src, dst) { + (Location::Memory(_, _), Location::Memory(_, _)) => { + let temp = m.acquire_temp_gpr().unwrap(); + a.emit_mov(sz, src, Location::GPR(temp)); + op(a, sz, Location::GPR(temp), dst); + m.release_temp_gpr(temp); + }, + (_, Location::Imm32(_)) => { + let temp = m.acquire_temp_gpr().unwrap(); + a.emit_mov(sz, dst, Location::GPR(temp)); + op(a, sz, src, Location::GPR(temp)); + m.release_temp_gpr(temp); } - }; - match val.location { - ValueLocation::Register(x) => { - let reg = Register::from_scratch_reg(x); - dynasm!( - assembler - ; mov rax, Rq(reg as u8) - ); - } - ValueLocation::Stack => { - dynasm!( - assembler - ; mov rax, [rsp] - ); - } - } - - Ok(val.ty) - } - - fn emit_pop_into_reg( - assembler: &mut Assembler, - value_stack: &mut ValueStack, - target: Register, - ) -> Result { - let val = value_stack.pop()?; - match val.location { - ValueLocation::Register(x) => { - let reg = Register::from_scratch_reg(x); - dynasm!( - assembler - ; mov Rq(target as u8), Rq(reg as u8) - ); - } - ValueLocation::Stack => { - dynasm!( - assembler - ; pop Rq(target as u8) - ); - } - } - - Ok(val.ty) - } - - fn emit_pop_into_ax( - assembler: &mut Assembler, - value_stack: &mut ValueStack, - ) -> Result { - Self::emit_pop_into_reg(assembler, value_stack, Register::RAX) - } - - fn emit_push_from_reg( - assembler: &mut Assembler, - value_stack: &mut ValueStack, - ty: WpType, - source: Register, - ) -> Result<(), CodegenError> { - let loc = value_stack.push(ty); - match loc { - ValueLocation::Register(x) => { - let reg = Register::from_scratch_reg(x); - dynasm!( - assembler - ; mov Rq(reg as u8), Rq(source as u8) - ); - } - ValueLocation::Stack => { - dynasm!( - assembler - ; push Rq(source as u8) - ); - } - } - - Ok(()) - } - - fn emit_push_from_ax( - assembler: &mut Assembler, - value_stack: &mut ValueStack, - ty: WpType, - ) -> Result<(), CodegenError> { - Self::emit_push_from_reg(assembler, value_stack, ty, Register::RAX) - } - - fn emit_leave_frame( - assembler: &mut Assembler, - frame: &ControlFrame, - value_stack: &mut ValueStack, - peek: bool, - ) -> Result<(), CodegenError> { - let ret_ty = match frame.returns.len() { - 1 => Some(frame.returns[0]), - 0 => None, _ => { - return Err(CodegenError { - message: "more than one block returns are not yet supported", - }); + op(a, sz, src, dst); } - }; + } + } - if value_stack.values.len() < frame.value_stack_depth_before + frame.returns.len() { - return Err(CodegenError { - message: "value stack underflow", - }); + fn emit_binop_i32( + a: &mut Assembler, + m: &mut Machine, + value_stack: &mut Vec<(Location, LocalOrTemp)>, + f: F, + ) { + // Using Red Zone here. + let loc_b = get_location_released(a, m, value_stack.pop().unwrap()); + let loc_a = get_location_released(a, m, value_stack.pop().unwrap()); + let ret = m.acquire_locations(a, &[WpType::I32], false)[0]; + + if loc_a != ret { + let tmp = m.acquire_temp_gpr().unwrap(); + Self::emit_relaxed_binop( + a, m, Assembler::emit_mov, + Size::S32, loc_a, Location::GPR(tmp), + ); + Self::emit_relaxed_binop( + a, m, f, + Size::S32, loc_b, Location::GPR(tmp), + ); + Self::emit_relaxed_binop( + a, m, Assembler::emit_mov, + Size::S32, Location::GPR(tmp), ret, + ); + m.release_temp_gpr(tmp); + } else { + Self::emit_relaxed_binop( + a, m, f, + Size::S32, loc_b, ret, + ); } - if let Some(_) = ret_ty { - if value_stack.values.iter().last().map(|x| x.ty) != ret_ty { - return Err(CodegenError { - message: "value type != return type", - }); - } - if peek { - Self::emit_peek_into_ax(assembler, value_stack)?; + value_stack.push((ret, LocalOrTemp::Temp)); + } + + fn emit_cmpop_i32_dynamic_b( + a: &mut Assembler, + m: &mut Machine, + value_stack: &mut Vec<(Location, LocalOrTemp)>, + c: Condition, + loc_b: Location, + ) { + // Using Red Zone here. + let loc_a = get_location_released(a, m, value_stack.pop().unwrap()); + + let ret = m.acquire_locations(a, &[WpType::I32], false)[0]; + match ret { + Location::GPR(x) => { + Self::emit_relaxed_binop( + a, m, Assembler::emit_cmp, + Size::S32, loc_b, loc_a, + ); + a.emit_set(c, x); + a.emit_and(Size::S32, Location::Imm32(0xff), Location::GPR(x)); + }, + Location::Memory(_, _) => { + let tmp = m.acquire_temp_gpr().unwrap(); + Self::emit_relaxed_binop( + a, m, Assembler::emit_cmp, + Size::S32, loc_b, loc_a, + ); + a.emit_set(c, tmp); + a.emit_and(Size::S32, Location::Imm32(0xff), Location::GPR(tmp)); + a.emit_mov(Size::S32, Location::GPR(tmp), ret); + m.release_temp_gpr(tmp); + }, + _ => unreachable!() + } + value_stack.push((ret, LocalOrTemp::Temp)); + } + + fn emit_cmpop_i32( + a: &mut Assembler, + m: &mut Machine, + value_stack: &mut Vec<(Location, LocalOrTemp)>, + c: Condition, + ) { + let loc_b = get_location_released(a, m, value_stack.pop().unwrap()); + Self::emit_cmpop_i32_dynamic_b(a, m, value_stack, c, loc_b); + } + + fn emit_xcnt_i32( + a: &mut Assembler, + m: &mut Machine, + value_stack: &mut Vec<(Location, LocalOrTemp)>, + f: F, + ) { + let loc = get_location_released(a, m, value_stack.pop().unwrap()); + let ret = m.acquire_locations(a, &[WpType::I32], false)[0]; + if let Location::Imm32(x) = loc { + let tmp = m.acquire_temp_gpr().unwrap(); + a.emit_mov(Size::S32, loc, Location::GPR(tmp)); + if let Location::Memory(_, _) = ret { + let out_tmp = m.acquire_temp_gpr().unwrap(); + f(a, Size::S32, Location::GPR(tmp), Location::GPR(out_tmp)); + a.emit_mov(Size::S32, Location::GPR(out_tmp), ret); + m.release_temp_gpr(out_tmp); } else { - Self::emit_pop_into_ax(assembler, value_stack)?; - } - } - - Ok(()) - } - - fn emit_else( - assembler: &mut Assembler, - control_stack: &mut ControlStack, - value_stack: &mut ValueStack, - was_unreachable: bool, - ) -> Result<(), CodegenError> { - let frame = match control_stack.frames.last_mut() { - Some(x) => x, - None => { - return Err(CodegenError { - message: "no frame (else)", - }); - } - }; - - if !was_unreachable { - Self::emit_leave_frame(assembler, frame, value_stack, false)?; - if value_stack.values.len() != frame.value_stack_depth_before { - return Err(CodegenError { - message: "value_stack.values.len() != frame.value_stack_depth_before", - }); + f(a, Size::S32, Location::GPR(tmp), ret); } + m.release_temp_gpr(tmp); } else { - // No need to actually unwind the stack here. - value_stack.reset_depth(frame.value_stack_depth_before); - } - - match frame.if_else { - IfElseState::If(label) => { - dynasm!( - assembler - ; jmp =>frame.label - ; => label - ); - frame.if_else = IfElseState::Else; - } - _ => { - return Err(CodegenError { - message: "unexpected if else state", - }); - } - } - - Ok(()) - } - - fn emit_block_end( - assembler: &mut Assembler, - control_stack: &mut ControlStack, - value_stack: &mut ValueStack, - was_unreachable: bool, - ) -> Result<(), CodegenError> { - let frame = match control_stack.frames.pop() { - Some(x) => x, - None => { - return Err(CodegenError { - message: "no frame (block end)", - }); - } - }; - - if !was_unreachable { - Self::emit_leave_frame(assembler, &frame, value_stack, false)?; - if value_stack.values.len() != frame.value_stack_depth_before { - return Err(CodegenError { - message: "value_stack.values.len() != frame.value_stack_depth_before", - }); - } - } else { - // No need to actually unwind the stack here. - value_stack.reset_depth(frame.value_stack_depth_before); - } - - if !frame.loop_like { - match frame.if_else { - IfElseState::None | IfElseState::Else => { - dynasm!( - assembler - ; => frame.label - ); - } - IfElseState::If(label) => { - dynasm!( - assembler - ; => frame.label - ; => label - ); - - if frame.returns.len() != 0 { - return Err(CodegenError { - message: "if without else, with non-empty returns", - }); - } - } - } - } - - if frame.returns.len() == 1 { - let loc = value_stack.push(frame.returns[0]); - match loc { - ValueLocation::Register(x) => { - let reg = Register::from_scratch_reg(x); - dynasm!( - assembler - ; mov Rq(reg as u8), rax - ); - } - ValueLocation::Stack => { - dynasm!( - assembler - ; push rax - ); - } - } - } - - Ok(()) - } - - fn emit_jmp( - assembler: &mut Assembler, - control_stack: &ControlStack, - value_stack: &mut ValueStack, - relative_frame_offset: usize, - ) -> Result<(), CodegenError> { - let frame = if relative_frame_offset >= control_stack.frames.len() { - return Err(CodegenError { - message: "jmp offset out of bounds", - }); - } else { - &control_stack.frames[control_stack.frames.len() - 1 - relative_frame_offset] - }; - - if !frame.loop_like { - Self::emit_leave_frame(assembler, frame, value_stack, true)?; - } - - let mut sp_diff: usize = 0; - - for i in 0..value_stack.values.len() - frame.value_stack_depth_before { - let vi = value_stack.values[value_stack.values.len() - 1 - i]; - if vi.location == ValueLocation::Stack { - sp_diff += 8 + if let Location::Memory(_, _) = ret { + let out_tmp = m.acquire_temp_gpr().unwrap(); + f(a, Size::S32, loc, Location::GPR(out_tmp)); + a.emit_mov(Size::S32, Location::GPR(out_tmp), ret); + m.release_temp_gpr(out_tmp); } else { - break; + f(a, Size::S32, loc, ret); } } - - dynasm!( - assembler - ; add rsp, sp_diff as i32 - ; jmp =>frame.label - ); - - Ok(()) + value_stack.push((ret, LocalOrTemp::Temp)); } - fn emit_return( - assembler: &mut Assembler, - value_stack: &mut ValueStack, - returns: &Vec, - ) -> Result<(), CodegenError> { - match returns.len() { - 0 => {} - 1 => { - if value_stack.values.iter().last().map(|x| x.ty) != Some(returns[0]) { - return Err(CodegenError { - message: "self.value_stack.last().cloned() != Some(self.returns[0])", - }); - } - Self::emit_pop_into_ax(assembler, value_stack)?; - } - _ => { - return Err(CodegenError { - message: "multiple return values is not yet supported", - }); - } - } - - dynasm!( - assembler - ; mov rsp, rbp - ; pop rbp - ; ret - ); - - Ok(()) - } - - fn emit_update_memory_from_ctx( - assembler: &mut Assembler, - info: &ModuleInfo, - ) -> Result<(), CodegenError> { - if info.memories.len() > 0 { - if info.memories.len() != 1 || info.imported_memories.len() != 0 { - return Err(CodegenError { - message: "only one linear memory is supported", - }); - } - dynasm!( - assembler - ; mov r15, r14 => vm::InternalCtx.memories - ); - } else if info.imported_memories.len() > 0 { - if info.memories.len() != 0 || info.imported_memories.len() != 1 { - return Err(CodegenError { - message: "only one linear memory is supported", - }); - } - dynasm!( - assembler - ; mov r15, r14 => vm::InternalCtx.imported_memories - ); - } else { - return Ok(()); - }; - - dynasm!( - assembler - ; mov r15, [r15] - ; mov r13, r15 => LocalMemory.bound - ; shr r13, 16 // 65536 bytes per page - ; shl r13, 48 - ; mov r15, r15 => LocalMemory.base - ; or r15, r13 - ); - Ok(()) - } - - fn emit_managed_call_trampoline( - assembler: &mut Assembler, - info: &ModuleInfo, - target: FuncPtr, - num_params: usize, - ) -> Result<(), CodegenError> { - dynasm!( - assembler - ; push rbp - ; mov rbp, rsp - ); - - for i in 0..num_params { - match i { - i if i < 5 => { - let reg = match i { - 0 => Register::RSI, - 1 => Register::RDX, - 2 => Register::RCX, - 3 => Register::R8, - 4 => Register::R9, - _ => unreachable!(), - }; - dynasm!( - assembler - ; push Rq(reg as u8) - ); - } - i => { - let offset = (i - 5) * 8; - dynasm!( - assembler - ; mov rax, [rbp + (16 + offset) as i32] - ; push rax - ); - } - } - } - - dynasm!( - assembler - ; mov r9, rdi // vmctx - ; mov rdx, QWORD target.0 as usize as i64 - ; mov rsi, QWORD (num_params * 8) as i64 - ; mov rdi, rsp - ); - - let has_memory = if info.memories.len() > 0 { - if info.memories.len() != 1 || info.imported_memories.len() != 0 { - return Err(CodegenError { - message: "only one linear memory is supported", - }); - } - dynasm!( - assembler - ; mov rcx, r9 => vm::InternalCtx.memories - ); - true - } else if info.imported_memories.len() > 0 { - if info.memories.len() != 0 || info.imported_memories.len() != 1 { - return Err(CodegenError { - message: "only one linear memory is supported", - }); - } - dynasm!( - assembler - ; mov rcx, r9 => vm::InternalCtx.imported_memories - ); - true - } else { - false - }; - - if has_memory { - dynasm!( - assembler - ; mov rcx, [rcx] - ; mov r8, rcx => LocalMemory.bound - ; shr r8, 16 // 65536 bytes per page - ; mov rcx, rcx => LocalMemory.base - ); - } else { - dynasm!( - assembler - ; mov rcx, 0 - ); - } - - dynasm!( - assembler - ; mov rax, QWORD *CALL_WASM as usize as i64 - ; call rax - ; mov rsp, rbp - ; pop rbp - ; ret - ); - - Ok(()) - } - - fn emit_f32_int_conv_check( - assembler: &mut Assembler, - reg: Register, - lower_bound: f32, - upper_bound: f32, - ) { - let lower_bound = f32::to_bits(lower_bound); - let upper_bound = f32::to_bits(upper_bound); - - dynasm!( - assembler - ; movq xmm5, r15 - - // underflow - ; movd xmm1, Rd(reg as u8) - ; mov r15d, lower_bound as i32 - ; movd xmm2, r15d - ; vcmpltss xmm0, xmm1, xmm2 - ; movd r15d, xmm0 - ; cmp r15d, 1 - ; je >trap - - // overflow - ; mov r15d, upper_bound as i32 - ; movd xmm2, r15d - ; vcmpgtss xmm0, xmm1, xmm2 - ; movd r15d, xmm0 - ; cmp r15d, 1 - ; je >trap - - // NaN - ; vcmpeqss xmm0, xmm1, xmm1 - ; movd r15d, xmm0 - ; cmp r15d, 0 - ; je >trap - - ; movq r15, xmm5 - ; jmp >ok - - ; trap: - ; ud2 - - ; ok: - ); - } - - fn emit_f64_int_conv_check( - assembler: &mut Assembler, - reg: Register, - lower_bound: f64, - upper_bound: f64, - ) { - let lower_bound = f64::to_bits(lower_bound); - let upper_bound = f64::to_bits(upper_bound); - - dynasm!( - assembler - ; movq xmm5, r15 - - // underflow - ; movq xmm1, Rq(reg as u8) - ; mov r15, QWORD lower_bound as i64 - ; movq xmm2, r15 - ; vcmpltsd xmm0, xmm1, xmm2 - ; movd r15d, xmm0 - ; cmp r15d, 1 - ; je >trap - - // overflow - ; mov r15, QWORD upper_bound as i64 - ; movq xmm2, r15 - ; vcmpgtsd xmm0, xmm1, xmm2 - ; movd r15d, xmm0 - ; cmp r15d, 1 - ; je >trap - - // NaN - ; vcmpeqsd xmm0, xmm1, xmm1 - ; movd r15d, xmm0 - ; cmp r15d, 0 - ; je >trap - - ; movq r15, xmm5 - ; jmp >ok - - ; trap: - ; ud2 - - ; ok: - ); - } - - fn emit_native_call_trampoline( - assembler: &mut Assembler, - target: unsafe extern "C" fn( - ctx1: A, - ctx2: B, - stack_top: *mut u8, - stack_base: *mut u8, - vmctx: *mut vm::Ctx, - memory_base: *mut u8, - ) -> u64, - ctx1: A, - ctx2: B, - ) -> DynamicLabel { - let label = assembler.new_dynamic_label(); - - dynasm!( - assembler - ; =>label - ); - - // FIXME: Check at compile time. - assert_eq!(::std::mem::size_of::(), ::std::mem::size_of::()); - assert_eq!(::std::mem::size_of::(), ::std::mem::size_of::()); - - dynasm!( - assembler - ; mov rdi, QWORD unsafe { ::std::mem::transmute_copy::(&ctx1) } - ; mov rsi, QWORD unsafe { ::std::mem::transmute_copy::(&ctx2) } - ; mov rdx, rsp - ; mov rcx, rbp - ; mov r8, r14 // vmctx - ; mov r9, r15 // memory_base - ; mov rax, QWORD 0xfffffffffffffff0u64 as i64 - ; and rsp, rax - ; mov rax, QWORD target as i64 - ; call rax - ; mov rsp, rbp - ; pop rbp - ; ret - ); - - label - } - - fn emit_call_raw( - assembler: &mut Assembler, - value_stack: &mut ValueStack, - target: DynamicLabel, - params: &[WpType], - returns: &[WpType], - ) -> Result<(), CodegenError> { - let total_size: usize = params.len() * 8; - - if params.len() > value_stack.values.len() { - return Err(CodegenError { - message: "value stack underflow in call", - }); - } - - let mut saved_regs: Vec = Vec::new(); - - for v in &value_stack.values[0..value_stack.values.len() - params.len()] { - match v.location { - ValueLocation::Register(x) => { - let reg = Register::from_scratch_reg(x); - dynasm!( - assembler - ; push Rq(reg as u8) - ); - saved_regs.push(reg); - } - ValueLocation::Stack => break, - } - } - - dynasm!( - assembler - ; lea rax, [>after_call] // TODO: Is this correct? - ; push rax - ; push rbp - ); - - if total_size != 0 { - dynasm!( - assembler - ; sub rsp, total_size as i32 - ); - } - - let mut offset: usize = 0; - let mut caller_stack_offset: usize = 0; - for ty in params.iter().rev() { - let val = value_stack.pop()?; - if val.ty != *ty { - return Err(CodegenError { - message: "value type mismatch in call", - }); - } - - match val.location { - ValueLocation::Register(x) => { - let reg = Register::from_scratch_reg(x); - dynasm!( - assembler - ; mov [rsp + offset as i32], Rq(reg as u8) - ); - } - ValueLocation::Stack => { - dynasm!( - assembler - ; mov rax, [rsp + (total_size + 16 + saved_regs.len() * 8 + caller_stack_offset) as i32] - ; mov [rsp + offset as i32], rax - ); - caller_stack_offset += 8; - } - } - - offset += 8; - } - - assert_eq!(offset, total_size); - - dynasm!( - assembler - ; mov rbp, rsp - ); - if total_size != 0 { - dynasm!( - assembler - ; add rbp, total_size as i32 - ); - } - dynasm!( - assembler - ; jmp =>target - ; after_call: - ); - - for reg in saved_regs.iter().rev() { - dynasm!( - assembler - ; pop Rq(*reg as u8) - ); - } - - if caller_stack_offset != 0 { - dynasm!( - assembler - ; add rsp, caller_stack_offset as i32 - ); - } - - match returns.len() { - 0 => {} - 1 => { - Self::emit_push_from_ax(assembler, value_stack, returns[0])?; - } - _ => { - return Err(CodegenError { - message: "more than 1 function returns are not supported", - }); - } - } - - Ok(()) - } - - fn emit_memory_bound_check_if_needed( - assembler: &mut Assembler, - module_info: &ModuleInfo, - offset_reg: Register, - value_size: usize, - ) { - let mem_desc = match MemoryIndex::new(0).local_or_import(module_info) { - LocalOrImport::Local(local_mem_index) => &module_info.memories[local_mem_index], - LocalOrImport::Import(import_mem_index) => { - &module_info.imported_memories[import_mem_index].1 - } - }; - let need_check = match mem_desc.memory_type() { - MemoryType::Dynamic => true, - MemoryType::Static | MemoryType::SharedStatic => false, - }; - if need_check { - dynasm!( - assembler - ; movq xmm5, r14 - ; lea r14, [Rq(offset_reg as u8) + value_size as i32] // overflow isn't possible since offset_reg contains a 32-bit value. - - ; mov r13, r15 - ; shr r13, 48 - ; shl r13, 16 - ; cmp r14, r13 - ; ja >out_of_bounds - ; jmp >ok - - ; out_of_bounds: - ; ud2 - ; ok: - ; movq r14, xmm5 - ); - } - } - - fn emit_memory_load( - assembler: &mut Assembler, - value_stack: &mut ValueStack, + fn emit_shift_i32( + a: &mut Assembler, + m: &mut Machine, + value_stack: &mut Vec<(Location, LocalOrTemp)>, f: F, - out_ty: WpType, - module_info: &ModuleInfo, - read_size: usize, - ) -> Result<(), CodegenError> { - let addr_info = value_stack.pop()?; - let out_loc = value_stack.push(out_ty); + ) { + let loc_b = get_location_released(a, m, value_stack.pop().unwrap()); + let loc_a = get_location_released(a, m, value_stack.pop().unwrap()); + let ret = m.acquire_locations(a, &[WpType::I32], false)[0]; - if addr_info.ty != WpType::I32 { - return Err(CodegenError { - message: "memory address must be i32", - }); + a.emit_mov(Size::S32, loc_b, Location::GPR(GPR::RCX)); + + if loc_a != ret { + Self::emit_relaxed_binop( + a, m, Assembler::emit_mov, + Size::S32, loc_a, ret + ); } - assert_eq!(out_loc, addr_info.location); - - match addr_info.location { - ValueLocation::Register(x) => { - let reg = Register::from_scratch_reg(x); - dynasm!( - assembler - ; mov Rd(reg as u8), Rd(reg as u8) - ); - Self::emit_memory_bound_check_if_needed(assembler, module_info, reg, read_size); - dynasm!( - assembler - ; add Rq(reg as u8), r15 - ; shl Rq(reg as u8), 16 - ; shr Rq(reg as u8), 16 - ); - f(assembler, reg); - } - ValueLocation::Stack => { - dynasm!( - assembler - ; pop rax - ; mov eax, eax - ); - Self::emit_memory_bound_check_if_needed( - assembler, - module_info, - Register::RAX, - read_size, - ); - dynasm!( - assembler - ; add rax, r15 - ; shl rax, 16 - ; shr rax, 16 - ); - f(assembler, Register::RAX); - dynasm!( - assembler - ; push rax - ) - } - } - Ok(()) + f(a, Size::S32, Location::GPR(GPR::RCX), ret); + value_stack.push((ret, LocalOrTemp::Temp)); } - fn emit_memory_store( - assembler: &mut Assembler, - value_stack: &mut ValueStack, - f: F, - value_ty: WpType, - module_info: &ModuleInfo, - write_size: usize, - ) -> Result<(), CodegenError> { - let value_info = value_stack.pop()?; - let addr_info = value_stack.pop()?; - - if addr_info.ty != WpType::I32 { - return Err(CodegenError { - message: "memory address must be i32", - }); + fn get_param_location( + idx: usize + ) -> Location { + match idx { + 0 => Location::GPR(GPR::RDI), + 1 => Location::GPR(GPR::RSI), + 2 => Location::GPR(GPR::RDX), + 3 => Location::GPR(GPR::RCX), + 4 => Location::GPR(GPR::R8), + 5 => Location::GPR(GPR::R9), + _ => Location::Memory(GPR::RBP, (16 + (idx - 6) * 8) as i32), } - - if value_info.ty != value_ty { - return Err(CodegenError { - message: "value type mismatch in memory store", - }); - } - - match value_info.location { - ValueLocation::Register(x) => { - let value_reg = Register::from_scratch_reg(x); - let addr_reg = - Register::from_scratch_reg(addr_info.location.get_register().unwrap()); // must be a register - dynasm!( - assembler - ; mov Rd(addr_reg as u8), Rd(addr_reg as u8) - ); - Self::emit_memory_bound_check_if_needed( - assembler, - module_info, - addr_reg, - write_size, - ); - dynasm!( - assembler - ; add Rq(addr_reg as u8), r15 - ; shl Rq(addr_reg as u8), 16 - ; shr Rq(addr_reg as u8), 16 - ); - f(assembler, addr_reg, value_reg); - } - ValueLocation::Stack => { - match addr_info.location { - ValueLocation::Register(x) => { - let addr_reg = Register::from_scratch_reg(x); - dynasm!( - assembler - ; mov Rd(addr_reg as u8), Rd(addr_reg as u8) - ); - Self::emit_memory_bound_check_if_needed( - assembler, - module_info, - addr_reg, - write_size, - ); - dynasm!( - assembler - ; add Rq(addr_reg as u8), r15 - ; shl Rq(addr_reg as u8), 16 - ; shr Rq(addr_reg as u8), 16 - ; pop rax - ); - f(assembler, addr_reg, Register::RAX); - } - ValueLocation::Stack => { - dynasm!( - assembler - ; mov [rsp - 8], rcx // red zone - ; pop rax // value - ; pop rcx // address - ); - dynasm!( - assembler - ; mov ecx, ecx - ); - Self::emit_memory_bound_check_if_needed( - assembler, - module_info, - Register::RCX, - write_size, - ); - dynasm!( - assembler - ; add rcx, r15 - ; shl rcx, 16 - ; shr rcx, 16 - ); - f(assembler, Register::RCX, Register::RAX); - dynasm!( - assembler - ; mov rcx, [rsp - 24] - ); - } - } - } - } - Ok(()) } } @@ -1996,71 +637,51 @@ impl FunctionCodeGenerator for X64FunctionCode { Ok(()) } - /// Stack layout of a call frame: - /// - Return address - /// - Old RBP - /// - Params in reversed order, caller initialized - /// - Locals in reversed order, callee initialized fn feed_param(&mut self, ty: WpType) -> Result<(), CodegenError> { - self.current_stack_offset += 8; - self.locals.push(Local { - ty: ty, - stack_offset: self.current_stack_offset, - }); - self.num_params += 1; - + self.num_locals += 1; Ok(()) } fn feed_local(&mut self, ty: WpType, n: usize) -> Result<(), CodegenError> { - let assembler = self.assembler.as_mut().unwrap(); - let size = get_size_of_type(&ty)?; + self.num_locals += n; + Ok(()) + } - if is_dword(size) { - for _ in 0..n { - // FIXME: check range of n - self.current_stack_offset += 4; - self.locals.push(Local { - ty: ty, - stack_offset: self.current_stack_offset, - }); - dynasm!( - assembler - ; sub rsp, 4 - ; mov DWORD [rsp], 0 - ); - } - if n % 2 == 1 { - self.current_stack_offset += 4; - dynasm!( - assembler - ; sub rsp, 4 - ); - } - } else { - for _ in 0..n { - // FIXME: check range of n - self.current_stack_offset += 8; - self.locals.push(Local { - ty: ty, - stack_offset: self.current_stack_offset, - }); - dynasm!( - assembler - ; push 0 - ); - } - } - Ok(()) - } fn begin_body(&mut self) -> Result<(), CodegenError> { - self.control_stack = Some(ControlStack::new( - self.assembler.as_mut().unwrap().new_dynamic_label(), - self.returns.clone(), - )); + let a = self.assembler.as_mut().unwrap(); + a.emit_push(Size::S64, Location::GPR(GPR::RBP)); + a.emit_mov(Size::S64, Location::GPR(GPR::RSP), Location::GPR(GPR::RBP)); + + let locations = self.machine.acquire_stack_locations(a, 1 + self.num_locals, false); + self.vmctx_location = Some(locations[0]); + self.locals = locations[1..].to_vec(); + + a.emit_mov(Size::S64, Self::get_param_location(0), self.vmctx_location.unwrap()); + + for i in 0..self.num_params { + a.emit_mov(Size::S64, Self::get_param_location(i + 1), self.locals[i]); + } + for i in self.num_params..self.num_locals { + a.emit_mov(Size::S32, Location::Imm32(0), self.locals[i]); + } + + self.control_stack.push(ControlFrame { + label: a.get_label(), + loop_like: false, + if_else: IfElseState::None, + returns: self.returns.clone(), + value_stack_depth: 0, + }); Ok(()) } + + fn finalize(&mut self) -> Result<(), CodegenError> { + let a = self.assembler.as_mut().unwrap(); + a.emit_ud2(); + Ok(()) + } + fn feed_opcode(&mut self, op: Operator, module_info: &ModuleInfo) -> Result<(), CodegenError> { let was_unreachable; @@ -2078,9 +699,6 @@ impl FunctionCodeGenerator for X64FunctionCode { if self.unreachable_depth == 1 { if let Some(IfElseState::If(_)) = self .control_stack - .as_ref() - .unwrap() - .frames .last() .map(|x| x.if_else) { @@ -2097,1289 +715,158 @@ impl FunctionCodeGenerator for X64FunctionCode { was_unreachable = false; } - let assembler = self.assembler.as_mut().unwrap(); - + let a = self.assembler.as_mut().unwrap(); match op { Operator::GetGlobal { global_index } => { let mut global_index = global_index as usize; - if global_index < module_info.imported_globals.len() { - dynasm!( - assembler - ; mov rax, r14 => vm::InternalCtx.imported_globals - ); - } else { - global_index -= module_info.imported_globals.len(); - if global_index >= module_info.globals.len() { - return Err(CodegenError { - message: "global out of bounds", - }); - } - dynasm!( - assembler - ; mov rax, r14 => vm::InternalCtx.globals - ); - } - - dynasm!( - assembler - ; mov rax, [rax + (global_index as i32) * 8] - ; mov rax, rax => LocalGlobal.data - ); - Self::emit_push_from_ax( - assembler, - &mut self.value_stack, - type_to_wp_type( + let loc = self.machine.acquire_locations( + a, + &[type_to_wp_type( module_info.globals[LocalGlobalIndex::new(global_index)] .desc .ty, - ), - )?; + )], + false + )[0]; + self.value_stack.push((loc, LocalOrTemp::Temp)); + + let tmp = self.machine.acquire_temp_gpr().unwrap(); + + if global_index < module_info.imported_globals.len() { + a.emit_mov(Size::S64, Location::Memory(GPR::RDI, vm::Ctx::offset_imported_globals() as i32), Location::GPR(tmp)); + } else { + global_index -= module_info.imported_globals.len(); + assert!(global_index < module_info.globals.len()); + a.emit_mov(Size::S64, Location::Memory(GPR::RDI, vm::Ctx::offset_globals() as i32), Location::GPR(tmp)); + } + a.emit_mov(Size::S64, Location::Memory(tmp, (global_index as i32) * 8), Location::GPR(tmp)); + Self::emit_relaxed_binop( + a, &mut self.machine, Assembler::emit_mov, + Size::S64, Location::Memory(tmp, LocalGlobal::offset_data() as i32), loc + ); + + self.machine.release_temp_gpr(tmp); } Operator::SetGlobal { global_index } => { - let ty = Self::emit_pop_into_ax(assembler, &mut self.value_stack)?; - let mut global_index = global_index as usize; + let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + + let tmp = self.machine.acquire_temp_gpr().unwrap(); + if global_index < module_info.imported_globals.len() { - dynasm!( - assembler - ; push rbx - ; mov rbx, r14 => vm::InternalCtx.imported_globals - ); + a.emit_mov(Size::S64, Location::Memory(GPR::RDI, vm::Ctx::offset_imported_globals() as i32), Location::GPR(tmp)); } else { global_index -= module_info.imported_globals.len(); - if global_index >= module_info.globals.len() { - return Err(CodegenError { - message: "global out of bounds", - }); - } - dynasm!( - assembler - ; push rbx - ; mov rbx, r14 => vm::InternalCtx.globals - ); + assert!(global_index < module_info.globals.len()); + a.emit_mov(Size::S64, Location::Memory(GPR::RDI, vm::Ctx::offset_globals() as i32), Location::GPR(tmp)); } - - if ty - != type_to_wp_type( - module_info.globals[LocalGlobalIndex::new(global_index)] - .desc - .ty, - ) - { - return Err(CodegenError { - message: "type mismatch in SetGlobal", - }); - } - dynasm!( - assembler - ; mov rbx, [rbx + (global_index as i32) * 8] - ; mov rbx => LocalGlobal.data, rax - ; pop rbx + a.emit_mov(Size::S64, Location::Memory(tmp, (global_index as i32) * 8), Location::GPR(tmp)); + Self::emit_relaxed_binop( + a, &mut self.machine, Assembler::emit_mov, + Size::S64, loc, Location::Memory(tmp, LocalGlobal::offset_data() as i32) ); + + self.machine.release_temp_gpr(tmp); } Operator::GetLocal { local_index } => { let local_index = local_index as usize; - if local_index >= self.locals.len() { - return Err(CodegenError { - message: "local out of bounds", - }); - } - let local = self.locals[local_index]; - let location = self.value_stack.push(local.ty); - let size = get_size_of_type(&local.ty)?; - - match location { - ValueLocation::Register(id) => { - if is_dword(size) { - dynasm!( - assembler - ; mov Rd(Register::from_scratch_reg(id) as u8), [rbp - (local.stack_offset as i32)] - ); - } else { - dynasm!( - assembler - ; mov Rq(Register::from_scratch_reg(id) as u8), [rbp - (local.stack_offset as i32)] - ); - } - } - ValueLocation::Stack => { - if is_dword(size) { - dynasm!( - assembler - ; mov eax, [rbp - (local.stack_offset as i32)] - ; push rax - ); - } else { - dynasm!( - assembler - ; mov rax, [rbp - (local.stack_offset as i32)] - ; push rax - ); - } - } - } + self.value_stack.push((self.locals[local_index], LocalOrTemp::Local)); } Operator::SetLocal { local_index } => { let local_index = local_index as usize; - if local_index >= self.locals.len() { - return Err(CodegenError { - message: "local out of bounds", - }); - } - let local = self.locals[local_index]; - let ty = Self::emit_pop_into_ax(assembler, &mut self.value_stack)?; - if ty != local.ty { - return Err(CodegenError { - message: "SetLocal type mismatch", - }); - } + let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - if is_dword(get_size_of_type(&ty)?) { - dynasm!( - assembler - ; mov [rbp - (local.stack_offset as i32)], eax - ); - } else { - dynasm!( - assembler - ; mov [rbp - (local.stack_offset as i32)], rax - ); - } + Self::emit_relaxed_binop( + a, &mut self.machine, Assembler::emit_mov, + Size::S64, loc, self.locals[local_index], + ); } Operator::TeeLocal { local_index } => { let local_index = local_index as usize; - if local_index >= self.locals.len() { - return Err(CodegenError { - message: "local out of bounds", - }); - } - let local = self.locals[local_index]; - let ty = Self::emit_peek_into_ax(assembler, &self.value_stack)?; - if ty != local.ty { - return Err(CodegenError { - message: "TeeLocal type mismatch", - }); - } + let (loc, _) = *self.value_stack.last().unwrap(); - if is_dword(get_size_of_type(&ty)?) { - dynasm!( - assembler - ; mov [rbp - (local.stack_offset as i32)], eax - ); - } else { - dynasm!( - assembler - ; mov [rbp - (local.stack_offset as i32)], rax - ); - } - } - Operator::I32Const { value } => { - let location = self.value_stack.push(WpType::I32); - match location { - ValueLocation::Register(x) => { - let reg = Register::from_scratch_reg(x); - dynasm!( - assembler - ; mov Rd(reg as u8), value - ); - } - ValueLocation::Stack => { - dynasm!( - assembler - ; push value - ); - } - } - } - Operator::I32Add => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; add Rd(left as u8), Rd(right as u8) - ) - }, - )?; - } - Operator::I32Sub => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; sub Rd(left as u8), Rd(right as u8) - ) - }, - )?; - } - Operator::I32Mul => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; imul Rd(left as u8), Rd(right as u8) - ) - }, - )?; + Self::emit_relaxed_binop( + a, &mut self.machine, Assembler::emit_mov, + Size::S64, loc, self.locals[local_index], + ); } + Operator::I32Const { value } => self.value_stack.push((Location::Imm32(value as u32), LocalOrTemp::Temp)), + Operator::I32Add => Self::emit_binop_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_add), + Operator::I32Sub => Self::emit_binop_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_sub), + Operator::I32Mul => Self::emit_binop_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_imul), Operator::I32DivU => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_div_i32( - assembler, - value_stack, - left, - right, - false, - Register::RAX, - ); - }, - )?; + // We assume that RAX and RDX are temporary registers here. + let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; + a.emit_mov(Size::S32, loc_a, Location::GPR(GPR::RAX)); + a.emit_xor(Size::S32, Location::GPR(GPR::RDX), Location::GPR(GPR::RDX)); + a.emit_div(Size::S32, loc_b); + a.emit_mov(Size::S32, Location::GPR(GPR::RAX), ret); + self.value_stack.push((ret, LocalOrTemp::Temp)); } Operator::I32DivS => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_div_i32( - assembler, - value_stack, - left, - right, - true, - Register::RAX, - ); - }, - )?; + // We assume that RAX and RDX are temporary registers here. + let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; + a.emit_mov(Size::S32, loc_a, Location::GPR(GPR::RAX)); + a.emit_xor(Size::S32, Location::GPR(GPR::RDX), Location::GPR(GPR::RDX)); + a.emit_idiv(Size::S32, loc_b); + a.emit_mov(Size::S32, Location::GPR(GPR::RAX), ret); + self.value_stack.push((ret, LocalOrTemp::Temp)); } Operator::I32RemU => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_div_i32( - assembler, - value_stack, - left, - right, - false, - Register::RDX, - ); - }, - )?; + // We assume that RAX and RDX are temporary registers here. + let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; + a.emit_mov(Size::S32, loc_a, Location::GPR(GPR::RAX)); + a.emit_xor(Size::S32, Location::GPR(GPR::RDX), Location::GPR(GPR::RDX)); + a.emit_div(Size::S32, loc_b); + a.emit_mov(Size::S32, Location::GPR(GPR::RDX), ret); + self.value_stack.push((ret, LocalOrTemp::Temp)); } Operator::I32RemS => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_div_i32( - assembler, - value_stack, - left, - right, - true, - Register::RDX, - ); - }, - )?; - } - Operator::I32And => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; and Rd(left as u8), Rd(right as u8) - ); - }, - )?; - } - Operator::I32Or => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; or Rd(left as u8), Rd(right as u8) - ); - }, - )?; - } - Operator::I32Xor => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; xor Rd(left as u8), Rd(right as u8) - ); - }, - )?; - } - Operator::I32Eq => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; cmp Rd(left as u8), Rd(right as u8) - ; lahf - ; shr ax, 14 - ; and eax, 1 - ; mov Rd(left as u8), eax - ); - }, - )?; - } - Operator::I32Ne => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; cmp Rd(left as u8), Rd(right as u8) - ; lahf - ; shr ax, 14 - ; and eax, 1 - ; xor eax, 1 - ; mov Rd(left as u8), eax - ); - }, - )?; - } - Operator::I32Eqz => { - Self::emit_unop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; cmp Rd(reg as u8), 0 - ; lahf - ; shr ax, 14 - ; and eax, 1 - ); - if reg != Register::RAX { - dynasm!( - assembler - ; mov Rd(reg as u8), eax - ); - } - }, - )?; - } - Operator::I32Clz => { - Self::emit_unop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; lzcnt Rd(reg as u8), Rd(reg as u8) - ); - }, - )?; - } - Operator::I32Ctz => { - Self::emit_unop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; tzcnt Rd(reg as u8), Rd(reg as u8) - ); - }, - )?; - } - Operator::I32Popcnt => { - Self::emit_unop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; popcnt Rd(reg as u8), Rd(reg as u8) - ); - }, - )?; - } - Operator::I32Shl => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_shift(assembler, value_stack, left, right, |assembler, left| { - dynasm!( - assembler - ; shl Rd(left as u8), cl - ) - }); - }, - )?; - } - Operator::I32ShrU => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_shift(assembler, value_stack, left, right, |assembler, left| { - dynasm!( - assembler - ; shr Rd(left as u8), cl - ) - }); - }, - )?; - } - Operator::I32ShrS => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_shift(assembler, value_stack, left, right, |assembler, left| { - dynasm!( - assembler - ; sar Rd(left as u8), cl - ) - }); - }, - )?; - } - Operator::I32Rotl => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_shift(assembler, value_stack, left, right, |assembler, left| { - dynasm!( - assembler - ; rol Rd(left as u8), cl - ) - }); - }, - )?; - } - Operator::I32Rotr => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_shift(assembler, value_stack, left, right, |assembler, left| { - dynasm!( - assembler - ; ror Rd(left as u8), cl - ) - }); - }, - )?; - } - // Comparison operators. - // https://en.wikibooks.org/wiki/X86_Assembly/Control_Flow - // TODO: Is reading flag register directly faster? - Operator::I32LtS => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i32(assembler, left, right, |assembler| { - dynasm!( - assembler - ; jl >label_true - ); - }); - }, - )?; - } - Operator::I32LeS => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i32(assembler, left, right, |assembler| { - dynasm!( - assembler - ; jle >label_true - ); - }); - }, - )?; - } - Operator::I32GtS => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i32(assembler, left, right, |assembler| { - dynasm!( - assembler - ; jg >label_true - ); - }); - }, - )?; - } - Operator::I32GeS => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i32(assembler, left, right, |assembler| { - dynasm!( - assembler - ; jge >label_true - ); - }); - }, - )?; - } - Operator::I32LtU => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i32(assembler, left, right, |assembler| { - dynasm!( - assembler - ; jb >label_true - ); - }); - }, - )?; - } - Operator::I32LeU => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i32(assembler, left, right, |assembler| { - dynasm!( - assembler - ; jbe >label_true - ); - }); - }, - )?; - } - Operator::I32GtU => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i32(assembler, left, right, |assembler| { - dynasm!( - assembler - ; ja >label_true - ); - }); - }, - )?; - } - Operator::I32GeU => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i32(assembler, left, right, |assembler| { - dynasm!( - assembler - ; jae >label_true - ); - }); - }, - )?; - } - Operator::I64Const { value } => { - let location = self.value_stack.push(WpType::I64); - match location { - ValueLocation::Register(x) => { - let reg = Register::from_scratch_reg(x); - dynasm!( - assembler - ; mov Rq(reg as u8), QWORD value - ); - } - ValueLocation::Stack => { - dynasm!( - assembler - ; mov rax, QWORD value - ; push rax - ); - } - } - } - Operator::I64Add => { - Self::emit_binop_i64( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; add Rq(left as u8), Rq(right as u8) - ) - }, - )?; - } - Operator::I64Sub => { - Self::emit_binop_i64( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; sub Rq(left as u8), Rq(right as u8) - ) - }, - )?; - } - Operator::I64Mul => { - Self::emit_binop_i64( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; imul Rq(left as u8), Rq(right as u8) - ) - }, - )?; - } - Operator::I64DivU => { - Self::emit_binop_i64( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_div_i64( - assembler, - value_stack, - left, - right, - false, - Register::RAX, - ); - }, - )?; - } - Operator::I64DivS => { - Self::emit_binop_i64( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_div_i64( - assembler, - value_stack, - left, - right, - true, - Register::RAX, - ); - }, - )?; - } - Operator::I64RemU => { - Self::emit_binop_i64( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_div_i64( - assembler, - value_stack, - left, - right, - false, - Register::RDX, - ); - }, - )?; - } - Operator::I64RemS => { - Self::emit_binop_i64( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_div_i64( - assembler, - value_stack, - left, - right, - true, - Register::RDX, - ); - }, - )?; - } - Operator::I64And => { - Self::emit_binop_i64( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; and Rq(left as u8), Rq(right as u8) - ); - }, - )?; - } - Operator::I64Or => { - Self::emit_binop_i64( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; or Rq(left as u8), Rq(right as u8) - ); - }, - )?; - } - Operator::I64Xor => { - Self::emit_binop_i64( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; xor Rq(left as u8), Rq(right as u8) - ); - }, - )?; - } - Operator::I64Eq => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; cmp Rq(left as u8), Rq(right as u8) - ; lahf - ; shr ax, 14 - ; and eax, 1 - ; mov Rd(left as u8), eax - ); - }, - WpType::I64, - WpType::I32, - )?; - } - Operator::I64Ne => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; cmp Rq(left as u8), Rq(right as u8) - ; lahf - ; shr ax, 14 - ; and eax, 1 - ; xor eax, 1 - ; mov Rd(left as u8), eax - ); - }, - WpType::I64, - WpType::I32, - )?; - } - Operator::I64Eqz => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; cmp Rq(reg as u8), 0 - ; lahf - ; shr ax, 14 - ; and eax, 1 - ); - if reg != Register::RAX { - dynasm!( - assembler - ; mov Rd(reg as u8), eax - ); - } - }, - WpType::I64, - WpType::I32, - )?; - } - Operator::I64Clz => { - Self::emit_unop_i64( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; lzcnt Rq(reg as u8), Rq(reg as u8) - ); - }, - )?; - } - Operator::I64Ctz => { - Self::emit_unop_i64( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; tzcnt Rq(reg as u8), Rq(reg as u8) - ); - }, - )?; - } - Operator::I64Popcnt => { - Self::emit_unop_i64( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; popcnt Rq(reg as u8), Rq(reg as u8) - ); - }, - )?; - } - Operator::I64Shl => { - Self::emit_binop_i64( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_shift(assembler, value_stack, left, right, |assembler, left| { - dynasm!( - assembler - ; shl Rq(left as u8), cl - ) - }); - }, - )?; - } - Operator::I64ShrU => { - Self::emit_binop_i64( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_shift(assembler, value_stack, left, right, |assembler, left| { - dynasm!( - assembler - ; shr Rq(left as u8), cl - ) - }); - }, - )?; - } - Operator::I64ShrS => { - Self::emit_binop_i64( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_shift(assembler, value_stack, left, right, |assembler, left| { - dynasm!( - assembler - ; sar Rq(left as u8), cl - ) - }); - }, - )?; - } - Operator::I64Rotl => { - Self::emit_binop_i64( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_shift(assembler, value_stack, left, right, |assembler, left| { - dynasm!( - assembler - ; rol Rq(left as u8), cl - ) - }); - }, - )?; - } - Operator::I64Rotr => { - Self::emit_binop_i64( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_shift(assembler, value_stack, left, right, |assembler, left| { - dynasm!( - assembler - ; ror Rq(left as u8), cl - ) - }); - }, - )?; - } - // Comparison operators. - // https://en.wikibooks.org/wiki/X86_Assembly/Control_Flow - // TODO: Is reading flag register directly faster? - Operator::I64LtS => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i64(assembler, left, right, |assembler| { - dynasm!( - assembler - ; jl >label_true - ); - }); - }, - WpType::I64, - WpType::I32, - )?; - } - Operator::I64LeS => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i64(assembler, left, right, |assembler| { - dynasm!( - assembler - ; jle >label_true - ); - }); - }, - WpType::I64, - WpType::I32, - )?; - } - Operator::I64GtS => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i64(assembler, left, right, |assembler| { - dynasm!( - assembler - ; jg >label_true - ); - }); - }, - WpType::I64, - WpType::I32, - )?; - } - Operator::I64GeS => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i64(assembler, left, right, |assembler| { - dynasm!( - assembler - ; jge >label_true - ); - }); - }, - WpType::I64, - WpType::I32, - )?; - } - Operator::I64LtU => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i64(assembler, left, right, |assembler| { - dynasm!( - assembler - ; jb >label_true - ); - }); - }, - WpType::I64, - WpType::I32, - )?; - } - Operator::I64LeU => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i64(assembler, left, right, |assembler| { - dynasm!( - assembler - ; jbe >label_true - ); - }); - }, - WpType::I64, - WpType::I32, - )?; - } - Operator::I64GtU => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i64(assembler, left, right, |assembler| { - dynasm!( - assembler - ; ja >label_true - ); - }); - }, - WpType::I64, - WpType::I32, - )?; - } - Operator::I64GeU => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i64(assembler, left, right, |assembler| { - dynasm!( - assembler - ; jae >label_true - ); - }); - }, - WpType::I64, - WpType::I32, - )?; - } - Operator::I64ExtendSI32 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; movsx Rq(reg as u8), Rd(reg as u8) - ); - }, - WpType::I32, - WpType::I64, - )?; - } - Operator::I64ExtendUI32 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |_assembler, _value_stack, _reg| { - // FIXME: Is it correct to do nothing here? - }, - WpType::I32, - WpType::I64, - )?; - } - Operator::I32WrapI64 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; mov Rd(reg as u8), Rd(reg as u8) // clear upper 32 bits - ); - }, - WpType::I64, - WpType::I32, - )?; - } - Operator::Block { ty } => { - self.control_stack - .as_mut() - .unwrap() - .frames - .push(ControlFrame { - label: assembler.new_dynamic_label(), - loop_like: false, - if_else: IfElseState::None, - returns: match ty { - WpType::EmptyBlockType => vec![], - _ => vec![ty], - }, - value_stack_depth_before: self.value_stack.values.len(), - }); - } - Operator::Unreachable => { - dynasm!( - assembler - ; ud2 - ); - self.unreachable_depth = 1; - } - Operator::Drop => { - let info = self.value_stack.pop()?; - Self::gen_rt_pop(assembler, &info)?; - } - Operator::Return => { - Self::emit_return(assembler, &mut self.value_stack, &self.returns)?; - self.unreachable_depth = 1; - } - Operator::Call { function_index } => { - let function_index = function_index as usize; - let label = self - .function_labels - .as_mut() - .unwrap() - .entry(function_index) - .or_insert_with(|| (assembler.new_dynamic_label(), None)) - .0; - let sig_index = match self.function_signatures.get(FuncIndex::new(function_index)) { - Some(x) => *x, - None => { - return Err(CodegenError { - message: "signature not found", - }); - } - }; - let sig = match self.signatures.get(sig_index) { - Some(x) => x, - None => { - return Err(CodegenError { - message: "signature does not exist", - }); - } - }; - let param_types: Vec = - sig.params().iter().cloned().map(type_to_wp_type).collect(); - let return_types: Vec = - sig.returns().iter().cloned().map(type_to_wp_type).collect(); - Self::emit_call_raw( - assembler, - &mut self.value_stack, - label, - ¶m_types, - &return_types, - )?; - } - Operator::CallIndirect { index, table_index } => { - if table_index != 0 { - return Err(CodegenError { - message: "only one table is supported", - }); - } - let local_or_import = if module_info.tables.len() > 0 { - if module_info.tables.len() != 1 || module_info.imported_tables.len() != 0 { - return Err(CodegenError { - message: "only one table is supported", - }); - } - CallIndirectLocalOrImport::Local - } else if module_info.imported_tables.len() > 0 { - if module_info.tables.len() != 0 || module_info.imported_tables.len() != 1 { - return Err(CodegenError { - message: "only one table is supported", - }); - } - CallIndirectLocalOrImport::Import - } else { - return Err(CodegenError { - message: "no tables", - }); - }; - let sig_index = SigIndex::new(index as usize); - let sig = match self.signatures.get(sig_index) { - Some(x) => x, - None => { - return Err(CodegenError { - message: "signature does not exist", - }); - } - }; - let mut param_types: Vec = - sig.params().iter().cloned().map(type_to_wp_type).collect(); - let return_types: Vec = - sig.returns().iter().cloned().map(type_to_wp_type).collect(); - param_types.push(WpType::I32); // element index - - dynasm!( - assembler - ; jmp >after_trampoline - ); - - let trampoline_label = Self::emit_native_call_trampoline( - assembler, - call_indirect, - index as usize, - local_or_import, - ); - - dynasm!( - assembler - ; after_trampoline: - ); - - Self::emit_call_raw( - assembler, - &mut self.value_stack, - trampoline_label, - ¶m_types, - &return_types, - )?; - } - Operator::End => { - if self.control_stack.as_ref().unwrap().frames.len() == 1 { - let frame = self.control_stack.as_mut().unwrap().frames.pop().unwrap(); - - if !was_unreachable { - Self::emit_leave_frame(assembler, &frame, &mut self.value_stack, false)?; - } else { - self.value_stack.reset_depth(0); - } - - dynasm!( - assembler - ; =>frame.label - ); - } else { - Self::emit_block_end( - assembler, - self.control_stack.as_mut().unwrap(), - &mut self.value_stack, - was_unreachable, - )?; - } - } - Operator::Loop { ty } => { - let label = assembler.new_dynamic_label(); - self.control_stack - .as_mut() - .unwrap() - .frames - .push(ControlFrame { - label: label, - loop_like: true, - if_else: IfElseState::None, - returns: match ty { - WpType::EmptyBlockType => vec![], - _ => vec![ty], - }, - value_stack_depth_before: self.value_stack.values.len(), - }); - dynasm!( - assembler - ; =>label - ); + // We assume that RAX and RDX are temporary registers here. + let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; + a.emit_mov(Size::S32, loc_a, Location::GPR(GPR::RAX)); + a.emit_xor(Size::S32, Location::GPR(GPR::RDX), Location::GPR(GPR::RDX)); + a.emit_idiv(Size::S32, loc_b); + a.emit_mov(Size::S32, Location::GPR(GPR::RDX), ret); + self.value_stack.push((ret, LocalOrTemp::Temp)); } + Operator::I32And => Self::emit_binop_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_and), + Operator::I32Or => Self::emit_binop_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_or), + Operator::I32Xor => Self::emit_binop_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_xor), + Operator::I32Eq => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::Equal), + Operator::I32Ne => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::NotEqual), + Operator::I32Eqz => Self::emit_cmpop_i32_dynamic_b(a, &mut self.machine, &mut self.value_stack, Condition::Equal, Location::Imm32(0)), + Operator::I32Clz => Self::emit_xcnt_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_lzcnt), + Operator::I32Ctz => Self::emit_xcnt_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_tzcnt), + Operator::I32Popcnt => Self::emit_xcnt_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_popcnt), + Operator::I32Shl => Self::emit_shift_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_shl), + Operator::I32ShrU => Self::emit_shift_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_sar), + Operator::I32ShrS => Self::emit_shift_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_shr), + Operator::I32Rotl => Self::emit_shift_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_rol), + Operator::I32Rotr => Self::emit_shift_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_ror), + Operator::I32LtU => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::Below), + Operator::I32LeU => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::BelowEqual), + Operator::I32GtU => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::Above), + Operator::I32GeU => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::AboveEqual), + Operator::I32LtS => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::Less), + Operator::I32LeS => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::LessEqual), + Operator::I32GtS => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::Greater), + Operator::I32GeS => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::GreaterEqual), Operator::If { ty } => { - let label_end = assembler.new_dynamic_label(); - let label_else = assembler.new_dynamic_label(); + let label_end = a.get_label(); + let label_else = a.get_label(); - Self::emit_pop_into_ax(assembler, &mut self.value_stack)?; // TODO: typeck? + let cond = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); self.control_stack - .as_mut() - .unwrap() - .frames .push(ControlFrame { label: label_end, loop_like: false, @@ -3388,1733 +875,185 @@ impl FunctionCodeGenerator for X64FunctionCode { WpType::EmptyBlockType => vec![], _ => vec![ty], }, - value_stack_depth_before: self.value_stack.values.len(), + value_stack_depth: self.value_stack.len(), }); - dynasm!( - assembler - ; cmp eax, 0 - ; je =>label_else + Self::emit_relaxed_binop( + a, &mut self.machine, Assembler::emit_cmp, + Size::S32, Location::Imm32(0), cond, ); + a.emit_jmp(Condition::Equal, label_else); } Operator::Else => { - Self::emit_else( - assembler, - self.control_stack.as_mut().unwrap(), - &mut self.value_stack, - was_unreachable, - )?; + let mut frame = self.control_stack.last_mut().unwrap(); + let released: Vec = self.value_stack.drain(..frame.value_stack_depth) + .filter(|&(_, lot)| lot == LocalOrTemp::Temp) + .map(|(x, _)| x) + .collect(); + self.machine.release_locations(a, &released); + + match frame.if_else { + IfElseState::If(label) => { + a.emit_jmp(Condition::None, frame.label); + a.emit_label(label); + frame.if_else = IfElseState::Else; + } + _ => unreachable!() + } } Operator::Select => { - Self::emit_pop_into_ax(assembler, &mut self.value_stack)?; - let v_b = self.value_stack.pop()?; - let v_a = self.value_stack.pop()?; + let cond = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let v_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let v_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); - if v_b.ty != v_a.ty { - return Err(CodegenError { - message: "select: type mismatch", - }); - } + let end_label = a.get_label(); + let zero_label = a.get_label(); - dynasm!( - assembler - ; cmp eax, 0 + Self::emit_relaxed_binop( + a, &mut self.machine, Assembler::emit_cmp, + Size::S32, Location::Imm32(0), cond, ); - match v_b.location { - ValueLocation::Stack => { - dynasm!( - assembler - ; cmove rax, [rsp] - ; add rsp, 8 - ); - } - ValueLocation::Register(x) => { - let reg = Register::from_scratch_reg(x); - dynasm!( - assembler - ; cmove rax, Rq(reg as u8) - ); - } + a.emit_jmp(Condition::Equal, zero_label); + if v_a != ret { + Self::emit_relaxed_binop( + a, &mut self.machine, Assembler::emit_mov, + Size::S64, v_a, ret, + ); } - match v_a.location { - ValueLocation::Stack => { - dynasm!( - assembler - ; cmovne rax, [rsp] - ; add rsp, 8 - ); - } - ValueLocation::Register(x) => { - let reg = Register::from_scratch_reg(x); - dynasm!( - assembler - ; cmovne rax, Rq(reg as u8) - ); - } + a.emit_jmp(Condition::None, end_label); + a.emit_label(zero_label); + if v_b != ret { + Self::emit_relaxed_binop( + a, &mut self.machine, Assembler::emit_mov, + Size::S64, v_b, ret, + ); } - - Self::emit_push_from_ax(assembler, &mut self.value_stack, v_a.ty)?; + a.emit_label(end_label); + } + Operator::Block { ty } => { + self.control_stack + .push(ControlFrame { + label: a.get_label(), + loop_like: false, + if_else: IfElseState::None, + returns: match ty { + WpType::EmptyBlockType => vec![], + _ => vec![ty], + }, + value_stack_depth: self.value_stack.len(), + }); + } + Operator::Unreachable => { + a.emit_ud2(); + self.unreachable_depth = 1; + } + Operator::Return => { + let frame = &self.control_stack[0]; + let has_return = if frame.returns.len() > 0 { + assert_eq!(frame.returns.len(), 1); + let (loc, _) = *self.value_stack.last().unwrap(); + a.emit_mov(Size::S64, loc, Location::GPR(GPR::RAX)); + true + } else { + false + }; + let released: Vec = self.value_stack.drain(..frame.value_stack_depth) + .filter(|&(_, lot)| lot == LocalOrTemp::Temp) + .map(|(x, _)| x) + .collect(); + self.machine.release_locations(a, &released); + a.emit_jmp(Condition::None, frame.label); + self.unreachable_depth = 1; } Operator::Br { relative_depth } => { - Self::emit_jmp( - assembler, - self.control_stack.as_ref().unwrap(), - &mut self.value_stack, - relative_depth as usize, - )?; + let frame = &self.control_stack[self.control_stack.len() - 1 - (relative_depth as usize)]; + let has_return = if frame.returns.len() > 0 { + assert_eq!(frame.returns.len(), 1); + let (loc, _) = *self.value_stack.last().unwrap(); + a.emit_mov(Size::S64, loc, Location::GPR(GPR::RAX)); + true + } else { + false + }; + let released: Vec = self.value_stack.drain(..frame.value_stack_depth) + .filter(|&(_, lot)| lot == LocalOrTemp::Temp) + .map(|(x, _)| x) + .collect(); + self.machine.release_locations(a, &released); + a.emit_jmp(Condition::None, frame.label); self.unreachable_depth = 1; } - Operator::BrIf { relative_depth } => { - let no_br_label = assembler.new_dynamic_label(); - Self::emit_pop_into_ax(assembler, &mut self.value_stack)?; // TODO: typeck? - dynasm!( - assembler - ; cmp eax, 0 - ; je =>no_br_label - ); - Self::emit_jmp( - assembler, - self.control_stack.as_ref().unwrap(), - &mut self.value_stack, - relative_depth as usize, - )?; - dynasm!( - assembler - ; =>no_br_label - ); - } - Operator::BrTable { table } => { - let (targets, default_target) = match table.read_table() { - Ok(x) => x, - Err(_) => { - return Err(CodegenError { - message: "cannot read br table", - }); - } + Operator::BrIf { relative_depth }=> { + let after = a.get_label(); + let cond = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + a.emit_cmp(Size::S32, Location::Imm32(0), cond); + a.emit_jmp(Condition::Equal, after); + + let frame = &self.control_stack[self.control_stack.len() - 1 - (relative_depth as usize)]; + let has_return = if frame.returns.len() > 0 { + assert_eq!(frame.returns.len(), 1); + let (loc, _) = *self.value_stack.last().unwrap(); + a.emit_mov(Size::S64, loc, Location::GPR(GPR::RAX)); + true + } else { + false }; - let cond_ty = Self::emit_pop_into_ax(assembler, &mut self.value_stack)?; - if cond_ty != WpType::I32 { - return Err(CodegenError { - message: "expecting i32 for BrTable condition", - }); - } - let mut table = vec![0usize; targets.len()]; - dynasm!( - assembler - ; cmp eax, targets.len() as i32 - ; jae >default_br - ; shl rax, 3 - ; push rcx - ; mov rcx, QWORD table.as_ptr() as usize as i64 - ; add rax, rcx - ; pop rcx - ; mov rax, [rax] // assuming upper 32 bits of rax are zeroed - ; jmp rax - ); - for (i, target) in targets.iter().enumerate() { - let AssemblyOffset(offset) = assembler.offset(); - table[i] = offset; - Self::emit_jmp( - assembler, - self.control_stack.as_ref().unwrap(), - &mut self.value_stack, - *target as usize, - )?; // This does not actually modify value_stack. - } - dynasm!( - assembler - ; default_br: - ); - Self::emit_jmp( - assembler, - self.control_stack.as_ref().unwrap(), - &mut self.value_stack, - default_target as usize, - )?; - self.br_table_data.as_mut().unwrap().push(table); - self.unreachable_depth = 1; + let released: Vec = self.value_stack[frame.value_stack_depth..].iter() + .filter(|&&(_, lot)| lot == LocalOrTemp::Temp) + .map(|&(x, _)| x) + .collect(); + self.machine.release_locations_keep_state(a, &released); + a.emit_jmp(Condition::None, frame.label); + + a.emit_label(after); } - Operator::I32Load { memarg } => { - Self::emit_memory_load( - assembler, - &mut self.value_stack, - |assembler, reg| { - dynasm!( - assembler - ; mov Rd(reg as u8), [Rq(reg as u8) + memarg.offset as i32] - ); - }, - WpType::I32, - module_info, - 4, - )?; + Operator::Drop => { + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); } - Operator::I32Load8U { memarg } => { - Self::emit_memory_load( - assembler, - &mut self.value_stack, - |assembler, reg| { - dynasm!( - assembler - ; movzx Rd(reg as u8), BYTE [Rq(reg as u8) + memarg.offset as i32] - ); - }, - WpType::I32, - module_info, - 1, - )?; - } - Operator::I32Load8S { memarg } => { - Self::emit_memory_load( - assembler, - &mut self.value_stack, - |assembler, reg| { - dynasm!( - assembler - ; movsx Rd(reg as u8), BYTE [Rq(reg as u8) + memarg.offset as i32] - ); - }, - WpType::I32, - module_info, - 1, - )?; - } - Operator::I32Load16U { memarg } => { - Self::emit_memory_load( - assembler, - &mut self.value_stack, - |assembler, reg| { - dynasm!( - assembler - ; movzx Rd(reg as u8), WORD [Rq(reg as u8) + memarg.offset as i32] - ); - }, - WpType::I32, - module_info, - 2, - )?; - } - Operator::I32Load16S { memarg } => { - Self::emit_memory_load( - assembler, - &mut self.value_stack, - |assembler, reg| { - dynasm!( - assembler - ; movsx Rd(reg as u8), WORD [Rq(reg as u8) + memarg.offset as i32] - ); - }, - WpType::I32, - module_info, - 2, - )?; - } - Operator::I32Store { memarg } => { - Self::emit_memory_store( - assembler, - &mut self.value_stack, - |assembler, addr_reg, value_reg| { - dynasm!( - assembler - ; mov [Rq(addr_reg as u8) + memarg.offset as i32], Rd(value_reg as u8) - ); - }, - WpType::I32, - module_info, - 4, - )?; - } - Operator::I32Store8 { memarg } => { - Self::emit_memory_store( - assembler, - &mut self.value_stack, - |assembler, addr_reg, value_reg| { - dynasm!( - assembler - ; mov [Rq(addr_reg as u8) + memarg.offset as i32], Rb(value_reg as u8) - ); - }, - WpType::I32, - module_info, - 1, - )?; - } - Operator::I32Store16 { memarg } => { - Self::emit_memory_store( - assembler, - &mut self.value_stack, - |assembler, addr_reg, value_reg| { - dynasm!( - assembler - ; mov [Rq(addr_reg as u8) + memarg.offset as i32], Rw(value_reg as u8) - ); - }, - WpType::I32, - module_info, - 2, - )?; - } - Operator::I64Load { memarg } => { - Self::emit_memory_load( - assembler, - &mut self.value_stack, - |assembler, reg| { - dynasm!( - assembler - ; mov Rq(reg as u8), [Rq(reg as u8) + memarg.offset as i32] - ); - }, - WpType::I64, - module_info, - 8, - )?; - } - Operator::I64Load8U { memarg } => { - Self::emit_memory_load( - assembler, - &mut self.value_stack, - |assembler, reg| { - dynasm!( - assembler - ; movzx Rq(reg as u8), BYTE [Rq(reg as u8) + memarg.offset as i32] - ); - }, - WpType::I64, - module_info, - 1, - )?; - } - Operator::I64Load8S { memarg } => { - Self::emit_memory_load( - assembler, - &mut self.value_stack, - |assembler, reg| { - dynasm!( - assembler - ; movsx Rq(reg as u8), BYTE [Rq(reg as u8) + memarg.offset as i32] - ); - }, - WpType::I64, - module_info, - 1, - )?; - } - Operator::I64Load16U { memarg } => { - Self::emit_memory_load( - assembler, - &mut self.value_stack, - |assembler, reg| { - dynasm!( - assembler - ; movzx Rq(reg as u8), WORD [Rq(reg as u8) + memarg.offset as i32] - ); - }, - WpType::I64, - module_info, - 2, - )?; - } - Operator::I64Load16S { memarg } => { - Self::emit_memory_load( - assembler, - &mut self.value_stack, - |assembler, reg| { - dynasm!( - assembler - ; movsx Rq(reg as u8), WORD [Rq(reg as u8) + memarg.offset as i32] - ); - }, - WpType::I64, - module_info, - 2, - )?; - } - Operator::I64Load32U { memarg } => { - Self::emit_memory_load( - assembler, - &mut self.value_stack, - |assembler, reg| { - dynasm!( - assembler - ; mov Rd(reg as u8), DWORD [Rq(reg as u8) + memarg.offset as i32] - ); - }, - WpType::I64, - module_info, - 4, - )?; - } - Operator::I64Load32S { memarg } => { - Self::emit_memory_load( - assembler, - &mut self.value_stack, - |assembler, reg| { - dynasm!( - assembler - ; movsx Rq(reg as u8), DWORD [Rq(reg as u8) + memarg.offset as i32] - ); - }, - WpType::I64, - module_info, - 4, - )?; - } - Operator::I64Store { memarg } => { - Self::emit_memory_store( - assembler, - &mut self.value_stack, - |assembler, addr_reg, value_reg| { - dynasm!( - assembler - ; mov [Rq(addr_reg as u8) + memarg.offset as i32], Rq(value_reg as u8) - ); - }, - WpType::I64, - module_info, - 8, - )?; - } - Operator::I64Store8 { memarg } => { - Self::emit_memory_store( - assembler, - &mut self.value_stack, - |assembler, addr_reg, value_reg| { - dynasm!( - assembler - ; mov [Rq(addr_reg as u8) + memarg.offset as i32], Rb(value_reg as u8) - ); - }, - WpType::I64, - module_info, - 1, - )?; - } - Operator::I64Store16 { memarg } => { - Self::emit_memory_store( - assembler, - &mut self.value_stack, - |assembler, addr_reg, value_reg| { - dynasm!( - assembler - ; mov [Rq(addr_reg as u8) + memarg.offset as i32], Rw(value_reg as u8) - ); - }, - WpType::I64, - module_info, - 2, - )?; - } - Operator::I64Store32 { memarg } => { - Self::emit_memory_store( - assembler, - &mut self.value_stack, - |assembler, addr_reg, value_reg| { - dynasm!( - assembler - ; mov [Rq(addr_reg as u8) + memarg.offset as i32], Rd(value_reg as u8) - ); - }, - WpType::I64, - module_info, - 4, - )?; - } - Operator::F32Const { value } => { - let location = self.value_stack.push(WpType::F32); - match location { - ValueLocation::Register(x) => { - let reg = Register::from_scratch_reg(x); - dynasm!( - assembler - ; mov Rd(reg as u8), value.bits() as i32 - ); + Operator::End => { + let frame = self.control_stack.pop().unwrap(); + if self.control_stack.len() == 0 { + if !was_unreachable && self.returns.len() > 0 { + let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + a.emit_mov(Size::S64, loc, Location::GPR(GPR::RAX)); } - ValueLocation::Stack => { - dynasm!( - assembler - ; push value.bits() as i32 - ); + a.emit_label(frame.label); + a.emit_mov(Size::S64, Location::GPR(GPR::RBP), Location::GPR(GPR::RSP)); + a.emit_pop(Size::S64, Location::GPR(GPR::RBP)); + a.emit_ret(); + } else { + let released: Vec = self.value_stack.drain(..frame.value_stack_depth) + .filter(|&(_, lot)| lot == LocalOrTemp::Temp) + .map(|(x, _)| x) + .collect(); + self.machine.release_locations(a, &released); + + if !frame.loop_like { + a.emit_label(frame.label); + } + + if let IfElseState::If(label) = frame.if_else { + a.emit_label(label); + } + + if frame.returns.len() > 0 { + assert_eq!(frame.returns.len(), 1); + let loc = self.machine.acquire_locations(a, &frame.returns, false)[0]; + a.emit_mov(Size::S64, Location::GPR(GPR::RAX), loc); + self.value_stack.push((loc, LocalOrTemp::Temp)); } } } - Operator::F64Const { value } => { - let location = self.value_stack.push(WpType::F64); - match location { - ValueLocation::Register(x) => { - let reg = Register::from_scratch_reg(x); - dynasm!( - assembler - ; mov Rq(reg as u8), QWORD value.bits() as i64 - ); - } - ValueLocation::Stack => { - dynasm!( - assembler - ; mov rax, QWORD value.bits() as i64 - ; push rax - ); - } - } - } - Operator::F32Load { memarg } => { - Self::emit_memory_load( - assembler, - &mut self.value_stack, - |assembler, reg| { - dynasm!( - assembler - ; mov Rd(reg as u8), [Rq(reg as u8) + memarg.offset as i32] - ); - }, - WpType::F32, - module_info, - 4, - )?; - } - Operator::F32Store { memarg } => { - Self::emit_memory_store( - assembler, - &mut self.value_stack, - |assembler, addr_reg, value_reg| { - dynasm!( - assembler - ; mov [Rq(addr_reg as u8) + memarg.offset as i32], Rd(value_reg as u8) - ); - }, - WpType::F32, - module_info, - 4, - )?; - } - Operator::F64Load { memarg } => { - Self::emit_memory_load( - assembler, - &mut self.value_stack, - |assembler, reg| { - dynasm!( - assembler - ; mov Rq(reg as u8), [Rq(reg as u8) + memarg.offset as i32] - ); - }, - WpType::F64, - module_info, - 8, - )?; - } - Operator::F64Store { memarg } => { - Self::emit_memory_store( - assembler, - &mut self.value_stack, - |assembler, addr_reg, value_reg| { - dynasm!( - assembler - ; mov [Rq(addr_reg as u8) + memarg.offset as i32], Rq(value_reg as u8) - ); - }, - WpType::F64, - module_info, - 8, - )?; - } - Operator::I32ReinterpretF32 => { - Self::emit_reinterpret(&mut self.value_stack, WpType::F32, WpType::I32)?; - } - Operator::F32ReinterpretI32 => { - Self::emit_reinterpret(&mut self.value_stack, WpType::I32, WpType::F32)?; - } - Operator::I64ReinterpretF64 => { - Self::emit_reinterpret(&mut self.value_stack, WpType::F64, WpType::I64)?; - } - Operator::F64ReinterpretI64 => { - Self::emit_reinterpret(&mut self.value_stack, WpType::I64, WpType::F64)?; - } - Operator::F32ConvertSI32 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; cvtsi2ss xmm1, Rd(reg as u8) - ; movd Rd(reg as u8), xmm1 - ); - }, - WpType::I32, - WpType::F32, - )?; - } - Operator::F32ConvertUI32 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; mov Rd(reg as u8), Rd(reg as u8) // clear upper 32 bits - ; cvtsi2ss xmm1, Rq(reg as u8) - ; movd Rd(reg as u8), xmm1 - ); - }, - WpType::I32, - WpType::F32, - )?; - } - Operator::F32ConvertSI64 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; cvtsi2ss xmm1, Rq(reg as u8) - ; movd Rd(reg as u8), xmm1 - ); - }, - WpType::I64, - WpType::F32, - )?; - } - /* - 0: 48 85 ff test %rdi,%rdi - 3: 78 0b js 10 - 5: c4 e1 fb 2a c7 vcvtsi2sd %rdi,%xmm0,%xmm0 - a: c3 retq - b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) - 10: 48 89 f8 mov %rdi,%rax - 13: 83 e7 01 and $0x1,%edi - 16: 48 d1 e8 shr %rax - 19: 48 09 f8 or %rdi,%rax - 1c: c4 e1 fb 2a c0 vcvtsi2sd %rax,%xmm0,%xmm0 - 21: c5 fb 58 c0 vaddsd %xmm0,%xmm0,%xmm0 - 25: c3 retq - */ - Operator::F32ConvertUI64 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; test Rq(reg as u8), Rq(reg as u8) - ; js >do_convert - ; cvtsi2ss xmm1, Rq(reg as u8) - ; movd Rd(reg as u8), xmm1 - ; jmp >end_convert - ; do_convert: - ; movq xmm5, r15 - ; mov r15, Rq(reg as u8) - ; and r15, 1 - ; shr Rq(reg as u8), 1 - ; or Rq(reg as u8), r15 - ; cvtsi2ss xmm1, Rq(reg as u8) - ; addss xmm1, xmm1 - ; movq r15, xmm5 - ; movd Rd(reg as u8), xmm1 - ; end_convert: - ); - }, - WpType::I64, - WpType::F32, - )?; - } - Operator::F64ConvertSI32 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; cvtsi2sd xmm1, Rd(reg as u8) - ; movq Rq(reg as u8), xmm1 - ); - }, - WpType::I32, - WpType::F64, - )?; - } - Operator::F64ConvertUI32 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; mov Rd(reg as u8), Rd(reg as u8) // clear upper 32 bits - ; cvtsi2sd xmm1, Rq(reg as u8) - ; movq Rq(reg as u8), xmm1 - ); - }, - WpType::I32, - WpType::F64, - )?; - } - Operator::F64ConvertSI64 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; cvtsi2sd xmm1, Rq(reg as u8) - ; movq Rq(reg as u8), xmm1 - ); - }, - WpType::I64, - WpType::F64, - )?; - } - Operator::F64ConvertUI64 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; test Rq(reg as u8), Rq(reg as u8) - ; js >do_convert - ; cvtsi2sd xmm1, Rq(reg as u8) - ; movq Rq(reg as u8), xmm1 - ; jmp >end_convert - ; do_convert: - ; movq xmm5, r15 - ; mov r15, Rq(reg as u8) - ; and r15, 1 - ; shr Rq(reg as u8), 1 - ; or Rq(reg as u8), r15 - ; cvtsi2sd xmm1, Rq(reg as u8) - ; addsd xmm1, xmm1 - ; movq r15, xmm5 - ; movq Rq(reg as u8), xmm1 - ; end_convert: - ); - }, - WpType::I64, - WpType::F64, - )?; - } - Operator::F64PromoteF32 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; movd xmm1, Rd(reg as u8) - ; cvtss2sd xmm1, xmm1 - ; movq Rq(reg as u8), xmm1 - ); - }, - WpType::F32, - WpType::F64, - )?; - } - Operator::F32DemoteF64 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; movq xmm1, Rq(reg as u8) - ; cvtsd2ss xmm1, xmm1 - ; movd Rd(reg as u8), xmm1 - ); - }, - WpType::F64, - WpType::F32, - )?; - } - Operator::F32Add => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movd xmm1, Rd(left as u8) - ; movd xmm2, Rd(right as u8) - ; addss xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ); - }, - WpType::F32, - WpType::F32, - )?; - } - Operator::F32Sub => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movd xmm1, Rd(left as u8) - ; movd xmm2, Rd(right as u8) - ; subss xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ); - }, - WpType::F32, - WpType::F32, - )?; - } - Operator::F32Mul => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movd xmm1, Rd(left as u8) - ; movd xmm2, Rd(right as u8) - ; mulss xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ); - }, - WpType::F32, - WpType::F32, - )?; - } - Operator::F32Div => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movd xmm1, Rd(left as u8) - ; movd xmm2, Rd(right as u8) - ; divss xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ); - }, - WpType::F32, - WpType::F32, - )?; - } - Operator::F32Max => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movd xmm1, Rd(left as u8) - ; movd xmm2, Rd(right as u8) - ; maxss xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ); - }, - WpType::F32, - WpType::F32, - )?; - } - Operator::F32Min => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movd xmm1, Rd(left as u8) - ; movd xmm2, Rd(right as u8) - ; minss xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ); - }, - WpType::F32, - WpType::F32, - )?; - } - Operator::F32Eq => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movd xmm1, Rd(left as u8) - ; movd xmm2, Rd(right as u8) - ; cmpeqss xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ; and Rd(left as u8), 1 - ); - }, - WpType::F32, - WpType::I32, - )?; - } - Operator::F32Ne => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movd xmm1, Rd(left as u8) - ; movd xmm2, Rd(right as u8) - ; cmpneqss xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ; and Rd(left as u8), 1 - ); - }, - WpType::F32, - WpType::I32, - )?; - } - Operator::F32Gt => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movd xmm1, Rd(left as u8) - ; movd xmm2, Rd(right as u8) - ; vcmpgtss xmm1, xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ; and Rd(left as u8), 1 - ); - }, - WpType::F32, - WpType::I32, - )?; - } - Operator::F32Ge => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movd xmm1, Rd(left as u8) - ; movd xmm2, Rd(right as u8) - ; vcmpgess xmm1, xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ; and Rd(left as u8), 1 - ); - }, - WpType::F32, - WpType::I32, - )?; - } - Operator::F32Lt => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movd xmm1, Rd(left as u8) - ; movd xmm2, Rd(right as u8) - ; cmpltss xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ; and Rd(left as u8), 1 - ); - }, - WpType::F32, - WpType::I32, - )?; - } - Operator::F32Le => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movd xmm1, Rd(left as u8) - ; movd xmm2, Rd(right as u8) - ; cmpless xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ; and Rd(left as u8), 1 - ); - }, - WpType::F32, - WpType::I32, - )?; - } - Operator::F32Copysign => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movd xmm1, Rd(left as u8) - ; movd xmm2, Rd(right as u8) - ; mov eax, 0x7fffffffu32 as i32 - ; movd xmm3, eax - ; pand xmm1, xmm3 - ; mov eax, 0x80000000u32 as i32 - ; movd xmm3, eax - ; pand xmm2, xmm3 - ; por xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ); - }, - WpType::F32, - WpType::F32, - )?; - } - Operator::F32Sqrt => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; movd xmm1, Rd(reg as u8) - ; sqrtss xmm1, xmm1 - ; movd Rd(reg as u8), xmm1 - ); - }, - WpType::F32, - WpType::F32, - )?; - } - Operator::F32Abs => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; and Rd(reg as u8), 0x7fffffffu32 as i32 - ); - }, - WpType::F32, - WpType::F32, - )?; - } - Operator::F32Neg => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; btc Rd(reg as u8), 31 - ); - }, - WpType::F32, - WpType::F32, - )?; - } - Operator::F32Nearest => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; movd xmm1, Rd(reg as u8) - ; roundss xmm1, xmm1, 0 - ; movd Rd(reg as u8), xmm1 - ); - }, - WpType::F32, - WpType::F32, - )?; - } - Operator::F32Floor => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; movd xmm1, Rd(reg as u8) - ; roundss xmm1, xmm1, 1 - ; movd Rd(reg as u8), xmm1 - ); - }, - WpType::F32, - WpType::F32, - )?; - } - Operator::F32Ceil => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; movd xmm1, Rd(reg as u8) - ; roundss xmm1, xmm1, 2 - ; movd Rd(reg as u8), xmm1 - ); - }, - WpType::F32, - WpType::F32, - )?; - } - Operator::F32Trunc => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; movd xmm1, Rd(reg as u8) - ; roundss xmm1, xmm1, 3 - ; movd Rd(reg as u8), xmm1 - ); - }, - WpType::F32, - WpType::F32, - )?; - } - Operator::I32TruncUF32 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - Self::emit_f32_int_conv_check(assembler, reg, -1.0, 4294967296.0); - dynasm!( - assembler - ; movd xmm1, Rd(reg as u8) - ; cvttss2si Rq(reg as u8), xmm1 - ; mov Rd(reg as u8), Rd(reg as u8) - ); - }, - WpType::F32, - WpType::I32, - )?; - } - Operator::I32TruncSF32 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - Self::emit_f32_int_conv_check(assembler, reg, -2147483904.0, 2147483648.0); - dynasm!( - assembler - ; movd xmm1, Rd(reg as u8) - ; cvttss2si Rd(reg as u8), xmm1 - ); - }, - WpType::F32, - WpType::I32, - )?; - } - Operator::I64TruncUF32 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - Self::emit_f32_int_conv_check(assembler, reg, -1.0, 18446744073709551616.0); - /* - LCPI0_0: - .long 1593835520 ## float 9.22337203E+18 - - movss LCPI0_0(%rip), %xmm1 ## xmm1 = mem[0],zero,zero,zero - movaps %xmm0, %xmm2 - subss %xmm1, %xmm2 - cvttss2si %xmm2, %rax - movabsq $-9223372036854775808, %rcx ## imm = 0x8000000000000000 - xorq %rax, %rcx - cvttss2si %xmm0, %rax - ucomiss %xmm1, %xmm0 - cmovaeq %rcx, %rax - */ - dynasm!( - assembler - ; movq xmm5, r15 - ; mov r15d, 1593835520u32 as i32 //float 9.22337203E+18 - ; movd xmm1, r15d - ; movd xmm2, Rd(reg as u8) - ; movd xmm3, Rd(reg as u8) - ; subss xmm2, xmm1 - ; cvttss2si Rq(reg as u8), xmm2 - ; mov r15, QWORD 0x8000000000000000u64 as i64 - ; xor r15, Rq(reg as u8) - ; cvttss2si Rq(reg as u8), xmm3 - ; ucomiss xmm3, xmm1 - ; cmovae Rq(reg as u8), r15 - ; movq r15, xmm5 - ); - }, - WpType::F32, - WpType::I64, - )?; - } - Operator::I64TruncSF32 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - Self::emit_f32_int_conv_check( - assembler, - reg, - -9223373136366403584.0, - 9223372036854775808.0, - ); - dynasm!( - assembler - ; movd xmm1, Rd(reg as u8) - ; cvttss2si Rq(reg as u8), xmm1 - ); - }, - WpType::F32, - WpType::I64, - )?; - } - Operator::F64Add => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movq xmm1, Rq(left as u8) - ; movq xmm2, Rq(right as u8) - ; addsd xmm1, xmm2 - ; movq Rq(left as u8), xmm1 - ); - }, - WpType::F64, - WpType::F64, - )?; - } - Operator::F64Sub => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movq xmm1, Rq(left as u8) - ; movq xmm2, Rq(right as u8) - ; subsd xmm1, xmm2 - ; movq Rq(left as u8), xmm1 - ); - }, - WpType::F64, - WpType::F64, - )?; - } - Operator::F64Mul => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movq xmm1, Rq(left as u8) - ; movq xmm2, Rq(right as u8) - ; mulsd xmm1, xmm2 - ; movq Rq(left as u8), xmm1 - ); - }, - WpType::F64, - WpType::F64, - )?; - } - Operator::F64Div => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movq xmm1, Rq(left as u8) - ; movq xmm2, Rq(right as u8) - ; divsd xmm1, xmm2 - ; movq Rq(left as u8), xmm1 - ); - }, - WpType::F64, - WpType::F64, - )?; - } - Operator::F64Max => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movq xmm1, Rq(left as u8) - ; movq xmm2, Rq(right as u8) - ; maxsd xmm1, xmm2 - ; movq Rq(left as u8), xmm1 - ); - }, - WpType::F64, - WpType::F64, - )?; - } - Operator::F64Min => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movq xmm1, Rq(left as u8) - ; movq xmm2, Rq(right as u8) - ; minsd xmm1, xmm2 - ; movq Rq(left as u8), xmm1 - ); - }, - WpType::F64, - WpType::F64, - )?; - } - Operator::F64Eq => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movq xmm1, Rq(left as u8) - ; movq xmm2, Rq(right as u8) - ; cmpeqsd xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ; and Rd(left as u8), 1 - ); - }, - WpType::F64, - WpType::I32, - )?; - } - Operator::F64Ne => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movq xmm1, Rq(left as u8) - ; movq xmm2, Rq(right as u8) - ; cmpneqsd xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ; and Rd(left as u8), 1 - ); - }, - WpType::F64, - WpType::I32, - )?; - } - Operator::F64Gt => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movq xmm1, Rq(left as u8) - ; movq xmm2, Rq(right as u8) - ; vcmpgtsd xmm1, xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ; and Rd(left as u8), 1 - ); - }, - WpType::F64, - WpType::I32, - )?; - } - Operator::F64Ge => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movq xmm1, Rq(left as u8) - ; movq xmm2, Rq(right as u8) - ; vcmpgesd xmm1, xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ; and Rd(left as u8), 1 - ); - }, - WpType::F64, - WpType::I32, - )?; - } - Operator::F64Lt => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movq xmm1, Rq(left as u8) - ; movq xmm2, Rq(right as u8) - ; cmpltsd xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ; and Rd(left as u8), 1 - ); - }, - WpType::F64, - WpType::I32, - )?; - } - Operator::F64Le => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movq xmm1, Rq(left as u8) - ; movq xmm2, Rq(right as u8) - ; cmplesd xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ; and Rd(left as u8), 1 - ); - }, - WpType::F64, - WpType::I32, - )?; - } - Operator::F64Copysign => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movq xmm1, Rq(left as u8) - ; movq xmm2, Rq(right as u8) - ; mov rax, QWORD 0x7fffffffffffffffu64 as i64 - ; movq xmm3, rax - ; pand xmm1, xmm3 - ; mov rax, QWORD 0x8000000000000000u64 as i64 - ; movq xmm3, rax - ; pand xmm2, xmm3 - ; por xmm1, xmm2 - ; movq Rq(left as u8), xmm1 - ); - }, - WpType::F64, - WpType::F64, - )?; - } - Operator::F64Sqrt => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; movq xmm1, Rq(reg as u8) - ; sqrtsd xmm1, xmm1 - ; movq Rq(reg as u8), xmm1 - ); - }, - WpType::F64, - WpType::F64, - )?; - } - Operator::F64Abs => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; movq xmm1, Rq(reg as u8) - ; mov rax, QWORD 0x7fffffffffffffff - ; movq xmm2, rax - ; pand xmm1, xmm2 - ; movq Rq(reg as u8), xmm1 - ); - }, - WpType::F64, - WpType::F64, - )?; - } - Operator::F64Neg => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; btc Rq(reg as u8), 63 - ); - }, - WpType::F64, - WpType::F64, - )?; - } - Operator::F64Nearest => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; movq xmm1, Rq(reg as u8) - ; roundsd xmm1, xmm1, 0 - ; movq Rq(reg as u8), xmm1 - ); - }, - WpType::F64, - WpType::F64, - )?; - } - Operator::F64Floor => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; movq xmm1, Rq(reg as u8) - ; roundsd xmm1, xmm1, 1 - ; movq Rq(reg as u8), xmm1 - ); - }, - WpType::F64, - WpType::F64, - )?; - } - Operator::F64Ceil => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; movq xmm1, Rq(reg as u8) - ; roundsd xmm1, xmm1, 2 - ; movq Rq(reg as u8), xmm1 - ); - }, - WpType::F64, - WpType::F64, - )?; - } - Operator::F64Trunc => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; movq xmm1, Rq(reg as u8) - ; roundsd xmm1, xmm1, 3 - ; movq Rq(reg as u8), xmm1 - ); - }, - WpType::F64, - WpType::F64, - )?; - } - Operator::I32TruncUF64 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - Self::emit_f64_int_conv_check(assembler, reg, -1.0, 4294967296.0); - - dynasm!( - assembler - ; movq xmm1, Rq(reg as u8) - ; cvttsd2si Rq(reg as u8), xmm1 - ; mov Rd(reg as u8), Rd(reg as u8) - ); - }, - WpType::F64, - WpType::I32, - )?; - } - Operator::I32TruncSF64 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - Self::emit_f64_int_conv_check(assembler, reg, -2147483649.0, 2147483648.0); - - dynasm!( - assembler - ; movq xmm1, Rq(reg as u8) - ; cvttsd2si Rd(reg as u8), xmm1 - ); - }, - WpType::F64, - WpType::I32, - )?; - } - Operator::I64TruncUF64 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - Self::emit_f64_int_conv_check(assembler, reg, -1.0, 18446744073709551616.0); - - /* - LCPI0_0: - .quad 4890909195324358656 ## double 9.2233720368547758E+18 - - movsd LCPI0_0(%rip), %xmm1 ## xmm1 = mem[0],zero - movapd %xmm0, %xmm2 - subsd %xmm1, %xmm2 - cvttsd2si %xmm2, %rax - movabsq $-9223372036854775808, %rcx ## imm = 0x8000000000000000 - xorq %rax, %rcx - cvttsd2si %xmm0, %rax - ucomisd %xmm1, %xmm0 - cmovaeq %rcx, %rax - */ - - dynasm!( - assembler - ; movq xmm5, r15 - ; mov r15, QWORD 4890909195324358656u64 as i64 //double 9.2233720368547758E+18 - ; movq xmm1, r15 - ; movq xmm2, Rq(reg as u8) - ; movq xmm3, Rq(reg as u8) - ; subsd xmm2, xmm1 - ; cvttsd2si Rq(reg as u8), xmm2 - ; mov r15, QWORD 0x8000000000000000u64 as i64 - ; xor r15, Rq(reg as u8) - ; cvttsd2si Rq(reg as u8), xmm3 - ; ucomisd xmm3, xmm1 - ; cmovae Rq(reg as u8), r15 - ; movq r15, xmm5 - ); - }, - WpType::F64, - WpType::I64, - )?; - } - Operator::I64TruncSF64 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - Self::emit_f64_int_conv_check( - assembler, - reg, - -9223372036854777856.0, - 9223372036854775808.0, - ); - - dynasm!( - assembler - ; movq xmm1, Rq(reg as u8) - ; cvttsd2si Rq(reg as u8), xmm1 - ); - }, - WpType::F64, - WpType::I64, - )?; - } - Operator::Nop => {} - Operator::MemorySize { reserved } => { - let memory_index = MemoryIndex::new(reserved as usize); - let label = match memory_index.local_or_import(module_info) { - LocalOrImport::Local(local_mem_index) => { - let mem_desc = &module_info.memories[local_mem_index]; - match mem_desc.memory_type() { - MemoryType::Dynamic => { - self.native_trampolines.memory_size_dynamic_local - } - MemoryType::Static => self.native_trampolines.memory_size_static_local, - MemoryType::SharedStatic => { - self.native_trampolines.memory_size_shared_local - } - } - } - LocalOrImport::Import(import_mem_index) => { - let mem_desc = &module_info.imported_memories[import_mem_index].1; - match mem_desc.memory_type() { - MemoryType::Dynamic => { - self.native_trampolines.memory_size_dynamic_import - } - MemoryType::Static => self.native_trampolines.memory_size_static_import, - MemoryType::SharedStatic => { - self.native_trampolines.memory_size_shared_import - } - } - } - }; - Self::emit_call_raw(assembler, &mut self.value_stack, label, &[], &[WpType::I32])?; - } - Operator::MemoryGrow { reserved } => { - let memory_index = MemoryIndex::new(reserved as usize); - let label = match memory_index.local_or_import(module_info) { - LocalOrImport::Local(local_mem_index) => { - let mem_desc = &module_info.memories[local_mem_index]; - match mem_desc.memory_type() { - MemoryType::Dynamic => { - self.native_trampolines.memory_grow_dynamic_local - } - MemoryType::Static => self.native_trampolines.memory_grow_static_local, - MemoryType::SharedStatic => { - self.native_trampolines.memory_grow_shared_local - } - } - } - LocalOrImport::Import(import_mem_index) => { - let mem_desc = &module_info.imported_memories[import_mem_index].1; - match mem_desc.memory_type() { - MemoryType::Dynamic => { - self.native_trampolines.memory_grow_dynamic_import - } - MemoryType::Static => self.native_trampolines.memory_grow_static_import, - MemoryType::SharedStatic => { - self.native_trampolines.memory_grow_shared_import - } - } - } - }; - Self::emit_call_raw( - assembler, - &mut self.value_stack, - label, - &[WpType::I32], - &[WpType::I32], - )?; - Self::emit_update_memory_from_ctx(assembler, module_info)?; - } _ => { - panic!("{:?}", op); + panic!("not yet implemented: {:?}", op); } } - Ok(()) - } - - fn finalize(&mut self) -> Result<(), CodegenError> { - let assembler = self.assembler.as_mut().unwrap(); - - dynasm!( - assembler - ; mov rsp, rbp - ; pop rbp - ; ret - ); - - if self.value_stack.values.len() != 0 - || self.control_stack.as_ref().unwrap().frames.len() != 0 - { - return Err(CodegenError { - message: "control/value stack not empty at end of function", - }); - } Ok(()) } } -fn get_size_of_type(ty: &WpType) -> Result { - match *ty { - WpType::I32 | WpType::F32 => Ok(4), - WpType::I64 | WpType::F64 => Ok(8), - _ => Err(CodegenError { - message: "unknown type", - }), - } -} - -fn is_dword(n: usize) -> bool { - n == 4 -} - fn type_to_wp_type(ty: Type) -> WpType { match ty { Type::I32 => WpType::I32, @@ -5124,138 +1063,9 @@ fn type_to_wp_type(ty: Type) -> WpType { } } -unsafe extern "C" fn invoke_import( - _unused: usize, - import_id: usize, - stack_top: *mut u8, - stack_base: *mut u8, - _vmctx: *mut vm::Ctx, - _memory_base: *mut u8, -) -> u64 { - let vmctx: &mut vm::InternalCtx = &mut *(_vmctx as *mut vm::InternalCtx); - let import = (*vmctx.imported_funcs.offset(import_id as isize)).func; - - CONSTRUCT_STACK_AND_CALL_NATIVE(stack_top, stack_base, _vmctx, import) -} - -#[repr(u64)] -#[derive(Copy, Clone, Debug)] -enum CallIndirectLocalOrImport { - Local, - Import, -} - -#[allow(clippy::cast_ptr_alignment)] -unsafe extern "C" fn call_indirect( - sig_index: usize, - local_or_import: CallIndirectLocalOrImport, - mut stack_top: *mut u8, - stack_base: *mut u8, - vmctx: *mut vm::Ctx, - _memory_base: *mut u8, -) -> u64 { - let elem_index = *(stack_top as *mut u32) as usize; - stack_top = stack_top.offset(8); - assert!(stack_top as usize <= stack_base as usize); - - let table: &LocalTable = match local_or_import { - CallIndirectLocalOrImport::Local => &*(*(*(vmctx as *mut vm::InternalCtx)).tables), - CallIndirectLocalOrImport::Import => { - &*(*(*(vmctx as *mut vm::InternalCtx)).imported_tables) - } - }; - if elem_index >= table.count as usize { - eprintln!("element index out of bounds"); - protect_unix::trigger_trap(); +fn get_location_released(a: &mut Assembler, m: &mut Machine, (loc, lot): (Location, LocalOrTemp)) -> Location { + if lot == LocalOrTemp::Temp { + m.release_locations(a, &[loc]); } - let anyfunc = &*(table.base as *mut vm::Anyfunc).offset(elem_index as isize); - let dynamic_sigindex = *(*(vmctx as *mut vm::InternalCtx)) - .dynamic_sigindices - .offset(sig_index as isize); - - if anyfunc.func.is_null() { - eprintln!("null anyfunc"); - protect_unix::trigger_trap(); - } - - if anyfunc.sig_id.0 != dynamic_sigindex.0 { - eprintln!("signature mismatch"); - protect_unix::trigger_trap(); - } - - CONSTRUCT_STACK_AND_CALL_NATIVE(stack_top, stack_base, anyfunc.ctx, anyfunc.func) -} - -#[repr(u64)] -#[derive(Copy, Clone, Debug)] -enum MemoryKind { - DynamicLocal, - StaticLocal, - SharedLocal, - DynamicImport, - StaticImport, - SharedImport, -} - -unsafe extern "C" fn _memory_size( - op: MemoryKind, - index: usize, - _stack_top: *mut u8, - _stack_base: *mut u8, - vmctx: *mut vm::Ctx, - _memory_base: *mut u8, -) -> u64 { - use wasmer_runtime_core::vmcalls; - let ret = match op { - MemoryKind::DynamicLocal => { - vmcalls::local_dynamic_memory_size(&*vmctx, LocalMemoryIndex::new(index)) - } - MemoryKind::StaticLocal => { - vmcalls::local_static_memory_size(&*vmctx, LocalMemoryIndex::new(index)) - } - MemoryKind::SharedLocal => unreachable!(), - MemoryKind::DynamicImport => { - vmcalls::imported_dynamic_memory_size(&*vmctx, ImportedMemoryIndex::new(index)) - } - MemoryKind::StaticImport => { - vmcalls::imported_static_memory_size(&*vmctx, ImportedMemoryIndex::new(index)) - } - MemoryKind::SharedImport => unreachable!(), - }; - ret.0 as u32 as u64 -} - -#[allow(clippy::cast_ptr_alignment)] -unsafe extern "C" fn _memory_grow( - op: MemoryKind, - index: usize, - stack_top: *mut u8, - stack_base: *mut u8, - vmctx: *mut vm::Ctx, - _memory_base: *mut u8, -) -> u64 { - use wasmer_runtime_core::vmcalls; - assert_eq!(stack_base as usize - stack_top as usize, 8); - let pages = Pages(*(stack_top as *mut u32)); - let ret = match op { - MemoryKind::DynamicLocal => { - vmcalls::local_dynamic_memory_grow(&mut *vmctx, LocalMemoryIndex::new(index), pages) - } - MemoryKind::StaticLocal => { - vmcalls::local_static_memory_grow(&mut *vmctx, LocalMemoryIndex::new(index), pages) - } - MemoryKind::SharedLocal => unreachable!(), - MemoryKind::DynamicImport => vmcalls::imported_dynamic_memory_grow( - &mut *vmctx, - ImportedMemoryIndex::new(index), - pages, - ), - MemoryKind::StaticImport => vmcalls::imported_static_memory_grow( - &mut *vmctx, - ImportedMemoryIndex::new(index), - pages, - ), - MemoryKind::SharedImport => unreachable!(), - }; - ret as u32 as u64 + loc } diff --git a/lib/dynasm-backend/src/codegen_x64_v1.rs b/lib/dynasm-backend/src/codegen_x64_v1.rs new file mode 100644 index 000000000..ef056a695 --- /dev/null +++ b/lib/dynasm-backend/src/codegen_x64_v1.rs @@ -0,0 +1,5261 @@ +#![allow(clippy::forget_copy)] // Used by dynasm. + +use super::codegen::*; +use super::stack::{ + ControlFrame, ControlStack, IfElseState, ScratchRegister, ValueInfo, ValueLocation, ValueStack, +}; +use crate::protect_unix; +use byteorder::{ByteOrder, LittleEndian}; +use dynasmrt::{ + x64::Assembler, AssemblyOffset, DynamicLabel, DynasmApi, DynasmLabelApi, ExecutableBuffer, +}; +use std::cell::RefCell; +use std::ptr::NonNull; +use std::{any::Any, collections::HashMap, sync::Arc}; +use wasmer_runtime_core::{ + backend::{FuncResolver, ProtectedCaller, Token, UserTrapper}, + error::{RuntimeError, RuntimeResult}, + memory::MemoryType, + module::{ModuleInfo, ModuleInner}, + structures::{Map, TypedIndex}, + types::{ + FuncIndex, FuncSig, ImportedMemoryIndex, LocalFuncIndex, LocalGlobalIndex, + LocalMemoryIndex, LocalOrImport, MemoryIndex, SigIndex, Type, Value, + }, + units::Pages, + vm::{self, ImportBacking, LocalGlobal, LocalMemory, LocalTable}, +}; +use wasmparser::{Operator, Type as WpType}; + +thread_local! { + static CURRENT_EXECUTION_CONTEXT: RefCell> = RefCell::new(Vec::new()); +} + +lazy_static! { + static ref CALL_WASM: unsafe extern "C" fn( + params: *const u8, + params_len: usize, + target: *const u8, + memory_base: *mut u8, + memory_size_pages: usize, + vmctx: *mut vm::Ctx + ) -> i64 = { + let mut assembler = Assembler::new().unwrap(); + let offset = assembler.offset(); + dynasm!( + assembler + ; push rbx + ; push r12 + ; push r13 + ; push r14 + ; push r15 + + ; mov r15, rcx // memory_base + + // Use the upper 16 bits of r15 to store memory size (in pages). This can support memory size up to 4GB. + // Wasmer currently only runs in usermode so here we assume the upper 17 bits of memory base address are all zero. + // FIXME: Change this if want to use this backend in kernel mode. + ; shl r8, 48 + ; or r15, r8 + + ; mov r14, r9 // vmctx + ; lea rax, [>after_call] + ; push rax + ; push rbp + ; mov rbp, rsp + ; sub rsp, rsi // params_len + ; mov rcx, 0 + ; mov r8, rsp + ; _loop: + ; cmp rsi, 0 + ; je >_loop_end + ; mov rax, [rdi] + ; mov [r8], rax + ; add r8, 8 + ; add rdi, 8 + ; sub rsi, 8 + ; jmp <_loop + ; _loop_end: + ; jmp rdx + ; after_call: + ; pop r15 + ; pop r14 + ; pop r13 + ; pop r12 + ; pop rbx + ; ret + ); + let buf = assembler.finalize().unwrap(); + let ret = unsafe { ::std::mem::transmute(buf.ptr(offset)) }; + ::std::mem::forget(buf); + ret + }; + + static ref CONSTRUCT_STACK_AND_CALL_NATIVE: unsafe extern "C" fn (stack_top: *mut u8, stack_base: *mut u8, ctx: *mut vm::Ctx, target: *const vm::Func) -> u64 = { + let mut assembler = Assembler::new().unwrap(); + let offset = assembler.offset(); + dynasm!( + assembler + ; push r15 + ; push r14 + ; push r13 + ; push r12 + ; push r11 + ; push rbp + ; mov rbp, rsp + + ; mov r15, rdi + ; mov r14, rsi + ; mov r13, rdx + ; mov r12, rcx + + ; mov rdi, r13 // ctx + + ; sub r14, 8 + ; cmp r14, r15 + ; jb >stack_ready + + ; mov rsi, [r14] + ; sub r14, 8 + ; cmp r14, r15 + ; jb >stack_ready + + ; mov rdx, [r14] + ; sub r14, 8 + ; cmp r14, r15 + ; jb >stack_ready + + ; mov rcx, [r14] + ; sub r14, 8 + ; cmp r14, r15 + ; jb >stack_ready + + ; mov r8, [r14] + ; sub r14, 8 + ; cmp r14, r15 + ; jb >stack_ready + + ; mov r9, [r14] + ; sub r14, 8 + ; cmp r14, r15 + ; jb >stack_ready + + ; mov rax, r14 + ; sub rax, r15 + ; sub rsp, rax + ; sub rsp, 8 + ; mov rax, QWORD 0xfffffffffffffff0u64 as i64 + ; and rsp, rax + ; mov rax, rsp + ; loop_begin: + ; mov r11, [r14] + ; mov [rax], r11 + ; sub r14, 8 + ; add rax, 8 + ; cmp r14, r15 + ; jb >stack_ready + ; jmp Register { + use self::Register::*; + match sr.raw_id() { + 0 => RDI, + 1 => RSI, + 2 => RDX, + 3 => RCX, + 4 => R8, + 5 => R9, + 6 => R10, + 7 => R11, + 8 => RBX, + 9 => R12, + // 10 => R13, // R13 is reserved as temporary register. + // 11 => R14, // R14 is reserved for vmctx. + // 12 => R15, // R15 is reserved for memory base pointer. + _ => unreachable!(), + } + } + + pub fn is_used(&self, stack: &ValueStack) -> bool { + for val in &stack.values { + match val.location { + ValueLocation::Register(x) => { + if Register::from_scratch_reg(x) == *self { + return true; + } + } + ValueLocation::Stack => break, + } + } + + false + } +} + +#[allow(dead_code)] +pub struct NativeTrampolines { + memory_size_dynamic_local: DynamicLabel, + memory_size_static_local: DynamicLabel, + memory_size_shared_local: DynamicLabel, + memory_size_dynamic_import: DynamicLabel, + memory_size_static_import: DynamicLabel, + memory_size_shared_import: DynamicLabel, + memory_grow_dynamic_local: DynamicLabel, + memory_grow_static_local: DynamicLabel, + memory_grow_shared_local: DynamicLabel, + memory_grow_dynamic_import: DynamicLabel, + memory_grow_static_import: DynamicLabel, + memory_grow_shared_import: DynamicLabel, +} + +pub struct X64ModuleCodeGenerator { + functions: Vec, + signatures: Option>>, + function_signatures: Option>>, + function_labels: Option)>>, + assembler: Option, + native_trampolines: Arc, + func_import_count: usize, +} + +pub struct X64FunctionCode { + signatures: Arc>, + function_signatures: Arc>, + native_trampolines: Arc, + + begin_offset: AssemblyOffset, + assembler: Option, + function_labels: Option)>>, + br_table_data: Option>>, + returns: Vec, + locals: Vec, + num_params: usize, + current_stack_offset: usize, + value_stack: ValueStack, + control_stack: Option, + unreachable_depth: usize, +} + +enum FuncPtrInner {} +#[repr(transparent)] +#[derive(Copy, Clone, Debug)] +struct FuncPtr(*const FuncPtrInner); +unsafe impl Send for FuncPtr {} +unsafe impl Sync for FuncPtr {} + +pub struct X64ExecutionContext { + code: ExecutableBuffer, + functions: Vec, + signatures: Arc>, + function_signatures: Arc>, + function_pointers: Vec, + _br_table_data: Vec>, + func_import_count: usize, +} + +pub struct X64RuntimeResolver { + _code: ExecutableBuffer, + local_pointers: Vec, +} + +impl X64ExecutionContext { + fn get_runtime_resolver( + &self, + module_info: &ModuleInfo, + ) -> Result { + let mut assembler = Assembler::new().unwrap(); + let mut offsets: Vec = vec![]; + + for i in self.func_import_count..self.function_pointers.len() { + offsets.push(assembler.offset()); + X64FunctionCode::emit_managed_call_trampoline( + &mut assembler, + module_info, + self.function_pointers[i], + self.signatures[self.function_signatures[FuncIndex::new(i)]] + .params() + .len(), + )?; + } + + let code = assembler.finalize().unwrap(); + let local_pointers: Vec = + offsets.iter().map(|x| FuncPtr(code.ptr(*x) as _)).collect(); + + Ok(X64RuntimeResolver { + _code: code, + local_pointers: local_pointers, + }) + } +} + +impl FuncResolver for X64RuntimeResolver { + fn get( + &self, + _module: &ModuleInner, + _local_func_index: LocalFuncIndex, + ) -> Option> { + NonNull::new(self.local_pointers[_local_func_index.index() as usize].0 as *mut vm::Func) + } +} + +impl ProtectedCaller for X64ExecutionContext { + fn call( + &self, + _module: &ModuleInner, + _func_index: FuncIndex, + _params: &[Value], + _import_backing: &ImportBacking, + _vmctx: *mut vm::Ctx, + _: Token, + ) -> RuntimeResult> { + let index = _func_index.index() - self.func_import_count; + let ptr = self.code.ptr(self.functions[index].begin_offset); + let return_ty = self.functions[index].returns.last().cloned(); + + if self.functions[index].num_params != _params.len() { + return Err(RuntimeError::Trap { + msg: "param count mismatch".into(), + }); + } + + let f = &self.functions[index]; + let total_size = f.num_params * 8; + + if f.num_params > 0 && f.locals[f.num_params - 1].stack_offset != total_size { + panic!("internal error: inconsistent stack layout"); + } + + let mut param_buf: Vec = vec![0; total_size]; + for i in 0..f.num_params { + let local = &f.locals[i]; + let buf = &mut param_buf[total_size - local.stack_offset..]; + let size = get_size_of_type(&local.ty).unwrap(); + + if is_dword(size) { + match _params[i] { + Value::I32(x) => LittleEndian::write_u32(buf, x as u32), + Value::F32(x) => LittleEndian::write_u32(buf, f32::to_bits(x)), + _ => { + return Err(RuntimeError::Trap { + msg: "signature mismatch".into(), + }); + } + } + } else { + match _params[i] { + Value::I64(x) => LittleEndian::write_u64(buf, x as u64), + Value::F64(x) => LittleEndian::write_u64(buf, f64::to_bits(x)), + _ => { + return Err(RuntimeError::Trap { + msg: "signature mismatch".into(), + }); + } + } + } + } + + let (memory_base, memory_size): (*mut u8, usize) = if _module.info.memories.len() > 0 { + if _module.info.memories.len() != 1 || _module.info.imported_memories.len() != 0 { + return Err(RuntimeError::Trap { + msg: "only one linear memory is supported".into(), + }); + } + unsafe { + let vmctx = _vmctx as *mut vm::InternalCtx; + ((**(*vmctx).memories).base, (**(*vmctx).memories).bound) + } + } else if _module.info.imported_memories.len() > 0 { + if _module.info.memories.len() != 0 || _module.info.imported_memories.len() != 1 { + return Err(RuntimeError::Trap { + msg: "only one linear memory is supported".into(), + }); + } + unsafe { + let vmctx = _vmctx as *mut vm::InternalCtx; + ( + (**(*vmctx).imported_memories).base, + (**(*vmctx).imported_memories).bound, + ) + } + } else { + (::std::ptr::null_mut(), 0) + }; + //println!("MEMORY = {:?}", memory_base); + + CURRENT_EXECUTION_CONTEXT.with(|x| x.borrow_mut().push(self)); + + let ret = unsafe { + protect_unix::call_protected(|| { + CALL_WASM( + param_buf.as_ptr(), + param_buf.len(), + ptr, + memory_base, + memory_size.wrapping_shr(16), + _vmctx, + ) + }) + }; + + CURRENT_EXECUTION_CONTEXT.with(|x| x.borrow_mut().pop().unwrap()); + + let ret = ret?; + + Ok(if let Some(ty) = return_ty { + vec![match ty { + WpType::I32 => Value::I32(ret as i32), + WpType::I64 => Value::I64(ret), + WpType::F32 => Value::F32(f32::from_bits(ret as i32 as u32)), + WpType::F64 => Value::F64(f64::from_bits(ret as u64)), + _ => unreachable!(), + }] + } else { + vec![] + }) + } + + fn get_early_trapper(&self) -> Box { + pub struct Trapper; + + impl UserTrapper for Trapper { + unsafe fn do_early_trap(&self, _data: Box) -> ! { + panic!("do_early_trap"); + } + } + + Box::new(Trapper) + } +} + +#[derive(Copy, Clone, Debug)] +struct Local { + ty: WpType, + stack_offset: usize, +} + +impl X64ModuleCodeGenerator { + pub fn new() -> X64ModuleCodeGenerator { + let mut assembler = Assembler::new().unwrap(); + let nt = NativeTrampolines { + memory_size_dynamic_local: X64FunctionCode::emit_native_call_trampoline( + &mut assembler, + _memory_size, + MemoryKind::DynamicLocal, + 0usize, + ), + memory_size_static_local: X64FunctionCode::emit_native_call_trampoline( + &mut assembler, + _memory_size, + MemoryKind::StaticLocal, + 0usize, + ), + memory_size_shared_local: X64FunctionCode::emit_native_call_trampoline( + &mut assembler, + _memory_size, + MemoryKind::SharedLocal, + 0usize, + ), + memory_size_dynamic_import: X64FunctionCode::emit_native_call_trampoline( + &mut assembler, + _memory_size, + MemoryKind::DynamicImport, + 0usize, + ), + memory_size_static_import: X64FunctionCode::emit_native_call_trampoline( + &mut assembler, + _memory_size, + MemoryKind::StaticImport, + 0usize, + ), + memory_size_shared_import: X64FunctionCode::emit_native_call_trampoline( + &mut assembler, + _memory_size, + MemoryKind::SharedImport, + 0usize, + ), + memory_grow_dynamic_local: X64FunctionCode::emit_native_call_trampoline( + &mut assembler, + _memory_grow, + MemoryKind::DynamicLocal, + 0usize, + ), + memory_grow_static_local: X64FunctionCode::emit_native_call_trampoline( + &mut assembler, + _memory_grow, + MemoryKind::StaticLocal, + 0usize, + ), + memory_grow_shared_local: X64FunctionCode::emit_native_call_trampoline( + &mut assembler, + _memory_grow, + MemoryKind::SharedLocal, + 0usize, + ), + memory_grow_dynamic_import: X64FunctionCode::emit_native_call_trampoline( + &mut assembler, + _memory_grow, + MemoryKind::DynamicImport, + 0usize, + ), + memory_grow_static_import: X64FunctionCode::emit_native_call_trampoline( + &mut assembler, + _memory_grow, + MemoryKind::StaticImport, + 0usize, + ), + memory_grow_shared_import: X64FunctionCode::emit_native_call_trampoline( + &mut assembler, + _memory_grow, + MemoryKind::SharedImport, + 0usize, + ), + }; + + X64ModuleCodeGenerator { + functions: vec![], + signatures: None, + function_signatures: None, + function_labels: Some(HashMap::new()), + assembler: Some(assembler), + native_trampolines: Arc::new(nt), + func_import_count: 0, + } + } +} + +impl ModuleCodeGenerator + for X64ModuleCodeGenerator +{ + fn check_precondition(&mut self, _module_info: &ModuleInfo) -> Result<(), CodegenError> { + Ok(()) + } + + fn next_function(&mut self) -> Result<&mut X64FunctionCode, CodegenError> { + let (mut assembler, mut function_labels, br_table_data) = match self.functions.last_mut() { + Some(x) => ( + x.assembler.take().unwrap(), + x.function_labels.take().unwrap(), + x.br_table_data.take().unwrap(), + ), + None => ( + self.assembler.take().unwrap(), + self.function_labels.take().unwrap(), + vec![], + ), + }; + let begin_offset = assembler.offset(); + let begin_label_info = function_labels + .entry(self.functions.len() + self.func_import_count) + .or_insert_with(|| (assembler.new_dynamic_label(), None)); + + begin_label_info.1 = Some(begin_offset); + let begin_label = begin_label_info.0; + + dynasm!( + assembler + ; => begin_label + //; int 3 + ); + let code = X64FunctionCode { + signatures: self.signatures.as_ref().unwrap().clone(), + function_signatures: self.function_signatures.as_ref().unwrap().clone(), + native_trampolines: self.native_trampolines.clone(), + + begin_offset: begin_offset, + assembler: Some(assembler), + function_labels: Some(function_labels), + br_table_data: Some(br_table_data), + returns: vec![], + locals: vec![], + num_params: 0, + current_stack_offset: 0, + value_stack: ValueStack::new(4), // FIXME: Use of R8 and above registers generates incorrect assembly. + control_stack: None, + unreachable_depth: 0, + }; + self.functions.push(code); + Ok(self.functions.last_mut().unwrap()) + } + + fn finalize( + mut self, + module_info: &ModuleInfo, + ) -> Result<(X64ExecutionContext, X64RuntimeResolver), CodegenError> { + let (assembler, mut br_table_data) = match self.functions.last_mut() { + Some(x) => (x.assembler.take().unwrap(), x.br_table_data.take().unwrap()), + None => { + return Err(CodegenError { + message: "no function", + }); + } + }; + let output = assembler.finalize().unwrap(); + + for table in &mut br_table_data { + for entry in table { + *entry = output.ptr(AssemblyOffset(*entry)) as usize; + } + } + + let function_labels = if let Some(x) = self.functions.last() { + x.function_labels.as_ref().unwrap() + } else { + self.function_labels.as_ref().unwrap() + }; + let mut out_labels: Vec = vec![]; + + for i in 0..function_labels.len() { + let (_, offset) = match function_labels.get(&i) { + Some(x) => x, + None => { + return Err(CodegenError { + message: "label not found", + }); + } + }; + let offset = match offset { + Some(x) => x, + None => { + return Err(CodegenError { + message: "offset is none", + }); + } + }; + out_labels.push(FuncPtr(output.ptr(*offset) as _)); + } + + let ctx = X64ExecutionContext { + code: output, + functions: self.functions, + _br_table_data: br_table_data, + func_import_count: self.func_import_count, + signatures: match self.signatures { + Some(x) => x, + None => { + return Err(CodegenError { + message: "no signatures", + }); + } + }, + function_pointers: out_labels, + function_signatures: match self.function_signatures { + Some(x) => x, + None => { + return Err(CodegenError { + message: "no function signatures", + }); + } + }, + }; + let resolver = ctx.get_runtime_resolver(module_info)?; + + Ok((ctx, resolver)) + } + + fn feed_signatures(&mut self, signatures: Map) -> Result<(), CodegenError> { + self.signatures = Some(Arc::new(signatures)); + Ok(()) + } + + fn feed_function_signatures( + &mut self, + assoc: Map, + ) -> Result<(), CodegenError> { + self.function_signatures = Some(Arc::new(assoc)); + Ok(()) + } + + fn feed_import_function(&mut self) -> Result<(), CodegenError> { + let labels = match self.function_labels.as_mut() { + Some(x) => x, + None => { + return Err(CodegenError { + message: "got function import after code", + }); + } + }; + let id = labels.len(); + + let offset = self.assembler.as_mut().unwrap().offset(); + + let label = X64FunctionCode::emit_native_call_trampoline( + self.assembler.as_mut().unwrap(), + invoke_import, + 0, + id, + ); + labels.insert(id, (label, Some(offset))); + + self.func_import_count += 1; + + Ok(()) + } +} + +impl X64FunctionCode { + fn gen_rt_pop(assembler: &mut Assembler, info: &ValueInfo) -> Result<(), CodegenError> { + match info.location { + ValueLocation::Register(_) => {} + ValueLocation::Stack => { + dynasm!( + assembler + ; add rsp, 8 + ); + } + } + Ok(()) + } + + fn emit_reinterpret( + value_stack: &mut ValueStack, + in_ty: WpType, + out_ty: WpType, + ) -> Result<(), CodegenError> { + let val = value_stack.pop()?; + if val.ty != in_ty { + return Err(CodegenError { + message: "reinterpret type mismatch", + }); + } + value_stack.push(out_ty); + Ok(()) + } + + /// Emits a unary operator. + fn emit_unop( + assembler: &mut Assembler, + value_stack: &mut ValueStack, + f: F, + in_ty: WpType, + out_ty: WpType, + ) -> Result<(), CodegenError> { + let a = value_stack.pop()?; + if a.ty != in_ty { + return Err(CodegenError { + message: "unop(i32) type mismatch", + }); + } + value_stack.push(out_ty); + + match a.location { + ValueLocation::Register(x) => { + let reg = Register::from_scratch_reg(x); + f(assembler, value_stack, reg); + } + ValueLocation::Stack => { + dynasm!( + assembler + ; mov rax, [rsp] + ); + f(assembler, value_stack, Register::RAX); + dynasm!( + assembler + ; mov [rsp], rax + ); + } + } + + Ok(()) + } + + fn emit_unop_i32( + assembler: &mut Assembler, + value_stack: &mut ValueStack, + f: F, + ) -> Result<(), CodegenError> { + Self::emit_unop(assembler, value_stack, f, WpType::I32, WpType::I32) + } + + fn emit_unop_i64( + assembler: &mut Assembler, + value_stack: &mut ValueStack, + f: F, + ) -> Result<(), CodegenError> { + Self::emit_unop(assembler, value_stack, f, WpType::I64, WpType::I64) + } + + /// Emits a binary operator. + /// + /// Guarantees that the first Register parameter to callback `f` will never be `Register::RAX`. + fn emit_binop( + assembler: &mut Assembler, + value_stack: &mut ValueStack, + f: F, + in_ty: WpType, + out_ty: WpType, + ) -> Result<(), CodegenError> { + let (a, b) = value_stack.pop2()?; + if a.ty != in_ty || b.ty != in_ty { + return Err(CodegenError { + message: "binop(i32) type mismatch", + }); + } + value_stack.push(out_ty); + + if a.location.is_register() && b.location.is_register() { + // output is in a_reg. + f( + assembler, + value_stack, + Register::from_scratch_reg(a.location.get_register()?), + Register::from_scratch_reg(b.location.get_register()?), + ); + } else if a.location.is_register() { + dynasm!( + assembler + ; pop rax + ); + f( + assembler, + value_stack, + Register::from_scratch_reg(a.location.get_register()?), + Register::RAX, + ); + } else if b.location.is_register() { + unreachable!(); + } else { + dynasm!( + assembler + ; push rcx + ; mov rcx, [rsp + 16] + ; mov rax, [rsp + 8] + ); + f(assembler, value_stack, Register::RCX, Register::RAX); + dynasm!( + assembler + ; mov [rsp + 16], rcx + ; pop rcx + ; add rsp, 8 + ); + } + + Ok(()) + } + + fn emit_binop_i32( + assembler: &mut Assembler, + value_stack: &mut ValueStack, + f: F, + ) -> Result<(), CodegenError> { + Self::emit_binop(assembler, value_stack, f, WpType::I32, WpType::I32) + } + + fn emit_binop_i64( + assembler: &mut Assembler, + value_stack: &mut ValueStack, + f: F, + ) -> Result<(), CodegenError> { + Self::emit_binop(assembler, value_stack, f, WpType::I64, WpType::I64) + } + + fn emit_shift( + assembler: &mut Assembler, + value_stack: &ValueStack, + left: Register, + right: Register, + f: F, + ) { + let rcx_used = Register::RCX.is_used(value_stack); + if rcx_used { + dynasm!( + assembler + ; push rcx + ); + } + dynasm!( + assembler + ; mov rcx, Rq(right as u8) + ); + f(assembler, left); + if rcx_used { + dynasm!( + assembler + ; pop rcx + ); + } + } + + fn emit_div_i32( + assembler: &mut Assembler, + value_stack: &ValueStack, + left: Register, + right: Register, + signed: bool, + out: Register, + ) { + let dx_save = + Register::RDX.is_used(value_stack) && left != Register::RDX && right != Register::RDX; + if dx_save { + dynasm!( + assembler + ; push rdx + ); + } + + dynasm!( + assembler + ; push r15 + ; mov r15d, Rd(right as u8) + ; mov eax, Rd(left as u8) + ); + if signed { + dynasm!( + assembler + ; cdq + ; idiv r15d + ); + } else { + dynasm!( + assembler + ; xor edx, edx + ; div r15d + ); + } + dynasm!( + assembler + ; mov Rd(left as u8), Rd(out as u8) + ; pop r15 + ); + + if dx_save { + dynasm!( + assembler + ; pop rdx + ); + } + } + + fn emit_div_i64( + assembler: &mut Assembler, + value_stack: &ValueStack, + left: Register, + right: Register, + signed: bool, + out: Register, + ) { + let dx_save = + Register::RDX.is_used(value_stack) && left != Register::RDX && right != Register::RDX; + if dx_save { + dynasm!( + assembler + ; push rdx + ); + } + + dynasm!( + assembler + ; push r15 + ; mov r15, Rq(right as u8) + ; mov rax, Rq(left as u8) + ); + if signed { + dynasm!( + assembler + ; cqo + ; idiv r15 + ); + } else { + dynasm!( + assembler + ; xor rdx, rdx + ; div r15 + ); + } + dynasm!( + assembler + ; mov Rq(left as u8), Rq(out as u8) + ; pop r15 + ); + + if dx_save { + dynasm!( + assembler + ; pop rdx + ); + } + } + + fn emit_cmp_i32( + assembler: &mut Assembler, + left: Register, + right: Register, + f: F, + ) { + dynasm!( + assembler + ; cmp Rd(left as u8), Rd(right as u8) + ); + f(assembler); + dynasm!( + assembler + ; xor Rd(left as u8), Rd(left as u8) + ; jmp >label_end + ; label_true: + ; mov Rd(left as u8), 1 + ; label_end: + ); + } + + fn emit_cmp_i64( + assembler: &mut Assembler, + left: Register, + right: Register, + f: F, + ) { + dynasm!( + assembler + ; cmp Rq(left as u8), Rq(right as u8) + ); + f(assembler); + dynasm!( + assembler + ; xor Rq(left as u8), Rq(left as u8) + ; jmp >label_end + ; label_true: + ; mov Rq(left as u8), 1 + ; label_end: + ); + } + + fn emit_peek_into_ax( + assembler: &mut Assembler, + value_stack: &ValueStack, + ) -> Result { + let val = match value_stack.values.last() { + Some(x) => *x, + None => { + return Err(CodegenError { + message: "no value", + }); + } + }; + match val.location { + ValueLocation::Register(x) => { + let reg = Register::from_scratch_reg(x); + dynasm!( + assembler + ; mov rax, Rq(reg as u8) + ); + } + ValueLocation::Stack => { + dynasm!( + assembler + ; mov rax, [rsp] + ); + } + } + + Ok(val.ty) + } + + fn emit_pop_into_reg( + assembler: &mut Assembler, + value_stack: &mut ValueStack, + target: Register, + ) -> Result { + let val = value_stack.pop()?; + match val.location { + ValueLocation::Register(x) => { + let reg = Register::from_scratch_reg(x); + dynasm!( + assembler + ; mov Rq(target as u8), Rq(reg as u8) + ); + } + ValueLocation::Stack => { + dynasm!( + assembler + ; pop Rq(target as u8) + ); + } + } + + Ok(val.ty) + } + + fn emit_pop_into_ax( + assembler: &mut Assembler, + value_stack: &mut ValueStack, + ) -> Result { + Self::emit_pop_into_reg(assembler, value_stack, Register::RAX) + } + + fn emit_push_from_reg( + assembler: &mut Assembler, + value_stack: &mut ValueStack, + ty: WpType, + source: Register, + ) -> Result<(), CodegenError> { + let loc = value_stack.push(ty); + match loc { + ValueLocation::Register(x) => { + let reg = Register::from_scratch_reg(x); + dynasm!( + assembler + ; mov Rq(reg as u8), Rq(source as u8) + ); + } + ValueLocation::Stack => { + dynasm!( + assembler + ; push Rq(source as u8) + ); + } + } + + Ok(()) + } + + fn emit_push_from_ax( + assembler: &mut Assembler, + value_stack: &mut ValueStack, + ty: WpType, + ) -> Result<(), CodegenError> { + Self::emit_push_from_reg(assembler, value_stack, ty, Register::RAX) + } + + fn emit_leave_frame( + assembler: &mut Assembler, + frame: &ControlFrame, + value_stack: &mut ValueStack, + peek: bool, + ) -> Result<(), CodegenError> { + let ret_ty = match frame.returns.len() { + 1 => Some(frame.returns[0]), + 0 => None, + _ => { + return Err(CodegenError { + message: "more than one block returns are not yet supported", + }); + } + }; + + if value_stack.values.len() < frame.value_stack_depth_before + frame.returns.len() { + return Err(CodegenError { + message: "value stack underflow", + }); + } + + if let Some(_) = ret_ty { + if value_stack.values.iter().last().map(|x| x.ty) != ret_ty { + return Err(CodegenError { + message: "value type != return type", + }); + } + if peek { + Self::emit_peek_into_ax(assembler, value_stack)?; + } else { + Self::emit_pop_into_ax(assembler, value_stack)?; + } + } + + Ok(()) + } + + fn emit_else( + assembler: &mut Assembler, + control_stack: &mut ControlStack, + value_stack: &mut ValueStack, + was_unreachable: bool, + ) -> Result<(), CodegenError> { + let frame = match control_stack.frames.last_mut() { + Some(x) => x, + None => { + return Err(CodegenError { + message: "no frame (else)", + }); + } + }; + + if !was_unreachable { + Self::emit_leave_frame(assembler, frame, value_stack, false)?; + if value_stack.values.len() != frame.value_stack_depth_before { + return Err(CodegenError { + message: "value_stack.values.len() != frame.value_stack_depth_before", + }); + } + } else { + // No need to actually unwind the stack here. + value_stack.reset_depth(frame.value_stack_depth_before); + } + + match frame.if_else { + IfElseState::If(label) => { + dynasm!( + assembler + ; jmp =>frame.label + ; => label + ); + frame.if_else = IfElseState::Else; + } + _ => { + return Err(CodegenError { + message: "unexpected if else state", + }); + } + } + + Ok(()) + } + + fn emit_block_end( + assembler: &mut Assembler, + control_stack: &mut ControlStack, + value_stack: &mut ValueStack, + was_unreachable: bool, + ) -> Result<(), CodegenError> { + let frame = match control_stack.frames.pop() { + Some(x) => x, + None => { + return Err(CodegenError { + message: "no frame (block end)", + }); + } + }; + + if !was_unreachable { + Self::emit_leave_frame(assembler, &frame, value_stack, false)?; + if value_stack.values.len() != frame.value_stack_depth_before { + return Err(CodegenError { + message: "value_stack.values.len() != frame.value_stack_depth_before", + }); + } + } else { + // No need to actually unwind the stack here. + value_stack.reset_depth(frame.value_stack_depth_before); + } + + if !frame.loop_like { + match frame.if_else { + IfElseState::None | IfElseState::Else => { + dynasm!( + assembler + ; => frame.label + ); + } + IfElseState::If(label) => { + dynasm!( + assembler + ; => frame.label + ; => label + ); + + if frame.returns.len() != 0 { + return Err(CodegenError { + message: "if without else, with non-empty returns", + }); + } + } + } + } + + if frame.returns.len() == 1 { + let loc = value_stack.push(frame.returns[0]); + match loc { + ValueLocation::Register(x) => { + let reg = Register::from_scratch_reg(x); + dynasm!( + assembler + ; mov Rq(reg as u8), rax + ); + } + ValueLocation::Stack => { + dynasm!( + assembler + ; push rax + ); + } + } + } + + Ok(()) + } + + fn emit_jmp( + assembler: &mut Assembler, + control_stack: &ControlStack, + value_stack: &mut ValueStack, + relative_frame_offset: usize, + ) -> Result<(), CodegenError> { + let frame = if relative_frame_offset >= control_stack.frames.len() { + return Err(CodegenError { + message: "jmp offset out of bounds", + }); + } else { + &control_stack.frames[control_stack.frames.len() - 1 - relative_frame_offset] + }; + + if !frame.loop_like { + Self::emit_leave_frame(assembler, frame, value_stack, true)?; + } + + let mut sp_diff: usize = 0; + + for i in 0..value_stack.values.len() - frame.value_stack_depth_before { + let vi = value_stack.values[value_stack.values.len() - 1 - i]; + if vi.location == ValueLocation::Stack { + sp_diff += 8 + } else { + break; + } + } + + dynasm!( + assembler + ; add rsp, sp_diff as i32 + ; jmp =>frame.label + ); + + Ok(()) + } + + fn emit_return( + assembler: &mut Assembler, + value_stack: &mut ValueStack, + returns: &Vec, + ) -> Result<(), CodegenError> { + match returns.len() { + 0 => {} + 1 => { + if value_stack.values.iter().last().map(|x| x.ty) != Some(returns[0]) { + return Err(CodegenError { + message: "self.value_stack.last().cloned() != Some(self.returns[0])", + }); + } + Self::emit_pop_into_ax(assembler, value_stack)?; + } + _ => { + return Err(CodegenError { + message: "multiple return values is not yet supported", + }); + } + } + + dynasm!( + assembler + ; mov rsp, rbp + ; pop rbp + ; ret + ); + + Ok(()) + } + + fn emit_update_memory_from_ctx( + assembler: &mut Assembler, + info: &ModuleInfo, + ) -> Result<(), CodegenError> { + if info.memories.len() > 0 { + if info.memories.len() != 1 || info.imported_memories.len() != 0 { + return Err(CodegenError { + message: "only one linear memory is supported", + }); + } + dynasm!( + assembler + ; mov r15, r14 => vm::InternalCtx.memories + ); + } else if info.imported_memories.len() > 0 { + if info.memories.len() != 0 || info.imported_memories.len() != 1 { + return Err(CodegenError { + message: "only one linear memory is supported", + }); + } + dynasm!( + assembler + ; mov r15, r14 => vm::InternalCtx.imported_memories + ); + } else { + return Ok(()); + }; + + dynasm!( + assembler + ; mov r15, [r15] + ; mov r13, r15 => LocalMemory.bound + ; shr r13, 16 // 65536 bytes per page + ; shl r13, 48 + ; mov r15, r15 => LocalMemory.base + ; or r15, r13 + ); + Ok(()) + } + + fn emit_managed_call_trampoline( + assembler: &mut Assembler, + info: &ModuleInfo, + target: FuncPtr, + num_params: usize, + ) -> Result<(), CodegenError> { + dynasm!( + assembler + ; push rbp + ; mov rbp, rsp + ); + + for i in 0..num_params { + match i { + i if i < 5 => { + let reg = match i { + 0 => Register::RSI, + 1 => Register::RDX, + 2 => Register::RCX, + 3 => Register::R8, + 4 => Register::R9, + _ => unreachable!(), + }; + dynasm!( + assembler + ; push Rq(reg as u8) + ); + } + i => { + let offset = (i - 5) * 8; + dynasm!( + assembler + ; mov rax, [rbp + (16 + offset) as i32] + ; push rax + ); + } + } + } + + dynasm!( + assembler + ; mov r9, rdi // vmctx + ; mov rdx, QWORD target.0 as usize as i64 + ; mov rsi, QWORD (num_params * 8) as i64 + ; mov rdi, rsp + ); + + let has_memory = if info.memories.len() > 0 { + if info.memories.len() != 1 || info.imported_memories.len() != 0 { + return Err(CodegenError { + message: "only one linear memory is supported", + }); + } + dynasm!( + assembler + ; mov rcx, r9 => vm::InternalCtx.memories + ); + true + } else if info.imported_memories.len() > 0 { + if info.memories.len() != 0 || info.imported_memories.len() != 1 { + return Err(CodegenError { + message: "only one linear memory is supported", + }); + } + dynasm!( + assembler + ; mov rcx, r9 => vm::InternalCtx.imported_memories + ); + true + } else { + false + }; + + if has_memory { + dynasm!( + assembler + ; mov rcx, [rcx] + ; mov r8, rcx => LocalMemory.bound + ; shr r8, 16 // 65536 bytes per page + ; mov rcx, rcx => LocalMemory.base + ); + } else { + dynasm!( + assembler + ; mov rcx, 0 + ); + } + + dynasm!( + assembler + ; mov rax, QWORD *CALL_WASM as usize as i64 + ; call rax + ; mov rsp, rbp + ; pop rbp + ; ret + ); + + Ok(()) + } + + fn emit_f32_int_conv_check( + assembler: &mut Assembler, + reg: Register, + lower_bound: f32, + upper_bound: f32, + ) { + let lower_bound = f32::to_bits(lower_bound); + let upper_bound = f32::to_bits(upper_bound); + + dynasm!( + assembler + ; movq xmm5, r15 + + // underflow + ; movd xmm1, Rd(reg as u8) + ; mov r15d, lower_bound as i32 + ; movd xmm2, r15d + ; vcmpltss xmm0, xmm1, xmm2 + ; movd r15d, xmm0 + ; cmp r15d, 1 + ; je >trap + + // overflow + ; mov r15d, upper_bound as i32 + ; movd xmm2, r15d + ; vcmpgtss xmm0, xmm1, xmm2 + ; movd r15d, xmm0 + ; cmp r15d, 1 + ; je >trap + + // NaN + ; vcmpeqss xmm0, xmm1, xmm1 + ; movd r15d, xmm0 + ; cmp r15d, 0 + ; je >trap + + ; movq r15, xmm5 + ; jmp >ok + + ; trap: + ; ud2 + + ; ok: + ); + } + + fn emit_f64_int_conv_check( + assembler: &mut Assembler, + reg: Register, + lower_bound: f64, + upper_bound: f64, + ) { + let lower_bound = f64::to_bits(lower_bound); + let upper_bound = f64::to_bits(upper_bound); + + dynasm!( + assembler + ; movq xmm5, r15 + + // underflow + ; movq xmm1, Rq(reg as u8) + ; mov r15, QWORD lower_bound as i64 + ; movq xmm2, r15 + ; vcmpltsd xmm0, xmm1, xmm2 + ; movd r15d, xmm0 + ; cmp r15d, 1 + ; je >trap + + // overflow + ; mov r15, QWORD upper_bound as i64 + ; movq xmm2, r15 + ; vcmpgtsd xmm0, xmm1, xmm2 + ; movd r15d, xmm0 + ; cmp r15d, 1 + ; je >trap + + // NaN + ; vcmpeqsd xmm0, xmm1, xmm1 + ; movd r15d, xmm0 + ; cmp r15d, 0 + ; je >trap + + ; movq r15, xmm5 + ; jmp >ok + + ; trap: + ; ud2 + + ; ok: + ); + } + + fn emit_native_call_trampoline( + assembler: &mut Assembler, + target: unsafe extern "C" fn( + ctx1: A, + ctx2: B, + stack_top: *mut u8, + stack_base: *mut u8, + vmctx: *mut vm::Ctx, + memory_base: *mut u8, + ) -> u64, + ctx1: A, + ctx2: B, + ) -> DynamicLabel { + let label = assembler.new_dynamic_label(); + + dynasm!( + assembler + ; =>label + ); + + // FIXME: Check at compile time. + assert_eq!(::std::mem::size_of::(), ::std::mem::size_of::()); + assert_eq!(::std::mem::size_of::(), ::std::mem::size_of::()); + + dynasm!( + assembler + ; mov rdi, QWORD unsafe { ::std::mem::transmute_copy::(&ctx1) } + ; mov rsi, QWORD unsafe { ::std::mem::transmute_copy::(&ctx2) } + ; mov rdx, rsp + ; mov rcx, rbp + ; mov r8, r14 // vmctx + ; mov r9, r15 // memory_base + ; mov rax, QWORD 0xfffffffffffffff0u64 as i64 + ; and rsp, rax + ; mov rax, QWORD target as i64 + ; call rax + ; mov rsp, rbp + ; pop rbp + ; ret + ); + + label + } + + fn emit_call_raw( + assembler: &mut Assembler, + value_stack: &mut ValueStack, + target: DynamicLabel, + params: &[WpType], + returns: &[WpType], + ) -> Result<(), CodegenError> { + let total_size: usize = params.len() * 8; + + if params.len() > value_stack.values.len() { + return Err(CodegenError { + message: "value stack underflow in call", + }); + } + + let mut saved_regs: Vec = Vec::new(); + + for v in &value_stack.values[0..value_stack.values.len() - params.len()] { + match v.location { + ValueLocation::Register(x) => { + let reg = Register::from_scratch_reg(x); + dynasm!( + assembler + ; push Rq(reg as u8) + ); + saved_regs.push(reg); + } + ValueLocation::Stack => break, + } + } + + dynasm!( + assembler + ; lea rax, [>after_call] // TODO: Is this correct? + ; push rax + ; push rbp + ); + + if total_size != 0 { + dynasm!( + assembler + ; sub rsp, total_size as i32 + ); + } + + let mut offset: usize = 0; + let mut caller_stack_offset: usize = 0; + for ty in params.iter().rev() { + let val = value_stack.pop()?; + if val.ty != *ty { + return Err(CodegenError { + message: "value type mismatch in call", + }); + } + + match val.location { + ValueLocation::Register(x) => { + let reg = Register::from_scratch_reg(x); + dynasm!( + assembler + ; mov [rsp + offset as i32], Rq(reg as u8) + ); + } + ValueLocation::Stack => { + dynasm!( + assembler + ; mov rax, [rsp + (total_size + 16 + saved_regs.len() * 8 + caller_stack_offset) as i32] + ; mov [rsp + offset as i32], rax + ); + caller_stack_offset += 8; + } + } + + offset += 8; + } + + assert_eq!(offset, total_size); + + dynasm!( + assembler + ; mov rbp, rsp + ); + if total_size != 0 { + dynasm!( + assembler + ; add rbp, total_size as i32 + ); + } + dynasm!( + assembler + ; jmp =>target + ; after_call: + ); + + for reg in saved_regs.iter().rev() { + dynasm!( + assembler + ; pop Rq(*reg as u8) + ); + } + + if caller_stack_offset != 0 { + dynasm!( + assembler + ; add rsp, caller_stack_offset as i32 + ); + } + + match returns.len() { + 0 => {} + 1 => { + Self::emit_push_from_ax(assembler, value_stack, returns[0])?; + } + _ => { + return Err(CodegenError { + message: "more than 1 function returns are not supported", + }); + } + } + + Ok(()) + } + + fn emit_memory_bound_check_if_needed( + assembler: &mut Assembler, + module_info: &ModuleInfo, + offset_reg: Register, + value_size: usize, + ) { + let mem_desc = match MemoryIndex::new(0).local_or_import(module_info) { + LocalOrImport::Local(local_mem_index) => &module_info.memories[local_mem_index], + LocalOrImport::Import(import_mem_index) => { + &module_info.imported_memories[import_mem_index].1 + } + }; + let need_check = match mem_desc.memory_type() { + MemoryType::Dynamic => true, + MemoryType::Static | MemoryType::SharedStatic => false, + }; + if need_check { + dynasm!( + assembler + ; movq xmm5, r14 + ; lea r14, [Rq(offset_reg as u8) + value_size as i32] // overflow isn't possible since offset_reg contains a 32-bit value. + + ; mov r13, r15 + ; shr r13, 48 + ; shl r13, 16 + ; cmp r14, r13 + ; ja >out_of_bounds + ; jmp >ok + + ; out_of_bounds: + ; ud2 + ; ok: + ; movq r14, xmm5 + ); + } + } + + fn emit_memory_load( + assembler: &mut Assembler, + value_stack: &mut ValueStack, + f: F, + out_ty: WpType, + module_info: &ModuleInfo, + read_size: usize, + ) -> Result<(), CodegenError> { + let addr_info = value_stack.pop()?; + let out_loc = value_stack.push(out_ty); + + if addr_info.ty != WpType::I32 { + return Err(CodegenError { + message: "memory address must be i32", + }); + } + + assert_eq!(out_loc, addr_info.location); + + match addr_info.location { + ValueLocation::Register(x) => { + let reg = Register::from_scratch_reg(x); + dynasm!( + assembler + ; mov Rd(reg as u8), Rd(reg as u8) + ); + Self::emit_memory_bound_check_if_needed(assembler, module_info, reg, read_size); + dynasm!( + assembler + ; add Rq(reg as u8), r15 + ; shl Rq(reg as u8), 16 + ; shr Rq(reg as u8), 16 + ); + f(assembler, reg); + } + ValueLocation::Stack => { + dynasm!( + assembler + ; pop rax + ; mov eax, eax + ); + Self::emit_memory_bound_check_if_needed( + assembler, + module_info, + Register::RAX, + read_size, + ); + dynasm!( + assembler + ; add rax, r15 + ; shl rax, 16 + ; shr rax, 16 + ); + f(assembler, Register::RAX); + dynasm!( + assembler + ; push rax + ) + } + } + Ok(()) + } + + fn emit_memory_store( + assembler: &mut Assembler, + value_stack: &mut ValueStack, + f: F, + value_ty: WpType, + module_info: &ModuleInfo, + write_size: usize, + ) -> Result<(), CodegenError> { + let value_info = value_stack.pop()?; + let addr_info = value_stack.pop()?; + + if addr_info.ty != WpType::I32 { + return Err(CodegenError { + message: "memory address must be i32", + }); + } + + if value_info.ty != value_ty { + return Err(CodegenError { + message: "value type mismatch in memory store", + }); + } + + match value_info.location { + ValueLocation::Register(x) => { + let value_reg = Register::from_scratch_reg(x); + let addr_reg = + Register::from_scratch_reg(addr_info.location.get_register().unwrap()); // must be a register + dynasm!( + assembler + ; mov Rd(addr_reg as u8), Rd(addr_reg as u8) + ); + Self::emit_memory_bound_check_if_needed( + assembler, + module_info, + addr_reg, + write_size, + ); + dynasm!( + assembler + ; add Rq(addr_reg as u8), r15 + ; shl Rq(addr_reg as u8), 16 + ; shr Rq(addr_reg as u8), 16 + ); + f(assembler, addr_reg, value_reg); + } + ValueLocation::Stack => { + match addr_info.location { + ValueLocation::Register(x) => { + let addr_reg = Register::from_scratch_reg(x); + dynasm!( + assembler + ; mov Rd(addr_reg as u8), Rd(addr_reg as u8) + ); + Self::emit_memory_bound_check_if_needed( + assembler, + module_info, + addr_reg, + write_size, + ); + dynasm!( + assembler + ; add Rq(addr_reg as u8), r15 + ; shl Rq(addr_reg as u8), 16 + ; shr Rq(addr_reg as u8), 16 + ; pop rax + ); + f(assembler, addr_reg, Register::RAX); + } + ValueLocation::Stack => { + dynasm!( + assembler + ; mov [rsp - 8], rcx // red zone + ; pop rax // value + ; pop rcx // address + ); + dynasm!( + assembler + ; mov ecx, ecx + ); + Self::emit_memory_bound_check_if_needed( + assembler, + module_info, + Register::RCX, + write_size, + ); + dynasm!( + assembler + ; add rcx, r15 + ; shl rcx, 16 + ; shr rcx, 16 + ); + f(assembler, Register::RCX, Register::RAX); + dynasm!( + assembler + ; mov rcx, [rsp - 24] + ); + } + } + } + } + Ok(()) + } +} + +impl FunctionCodeGenerator for X64FunctionCode { + fn feed_return(&mut self, ty: WpType) -> Result<(), CodegenError> { + self.returns.push(ty); + Ok(()) + } + + /// Stack layout of a call frame: + /// - Return address + /// - Old RBP + /// - Params in reversed order, caller initialized + /// - Locals in reversed order, callee initialized + fn feed_param(&mut self, ty: WpType) -> Result<(), CodegenError> { + self.current_stack_offset += 8; + self.locals.push(Local { + ty: ty, + stack_offset: self.current_stack_offset, + }); + + self.num_params += 1; + + Ok(()) + } + + fn feed_local(&mut self, ty: WpType, n: usize) -> Result<(), CodegenError> { + let assembler = self.assembler.as_mut().unwrap(); + let size = get_size_of_type(&ty)?; + + if is_dword(size) { + for _ in 0..n { + // FIXME: check range of n + self.current_stack_offset += 4; + self.locals.push(Local { + ty: ty, + stack_offset: self.current_stack_offset, + }); + dynasm!( + assembler + ; sub rsp, 4 + ; mov DWORD [rsp], 0 + ); + } + if n % 2 == 1 { + self.current_stack_offset += 4; + dynasm!( + assembler + ; sub rsp, 4 + ); + } + } else { + for _ in 0..n { + // FIXME: check range of n + self.current_stack_offset += 8; + self.locals.push(Local { + ty: ty, + stack_offset: self.current_stack_offset, + }); + dynasm!( + assembler + ; push 0 + ); + } + } + Ok(()) + } + fn begin_body(&mut self) -> Result<(), CodegenError> { + self.control_stack = Some(ControlStack::new( + self.assembler.as_mut().unwrap().new_dynamic_label(), + self.returns.clone(), + )); + Ok(()) + } + fn feed_opcode(&mut self, op: Operator, module_info: &ModuleInfo) -> Result<(), CodegenError> { + let was_unreachable; + + if self.unreachable_depth > 0 { + was_unreachable = true; + match op { + Operator::Block { .. } | Operator::Loop { .. } | Operator::If { .. } => { + self.unreachable_depth += 1; + } + Operator::End => { + self.unreachable_depth -= 1; + } + Operator::Else => { + // We are in a reachable true branch + if self.unreachable_depth == 1 { + if let Some(IfElseState::If(_)) = self + .control_stack + .as_ref() + .unwrap() + .frames + .last() + .map(|x| x.if_else) + { + self.unreachable_depth -= 1; + } + } + } + _ => {} + } + if self.unreachable_depth > 0 { + return Ok(()); + } + } else { + was_unreachable = false; + } + + let assembler = self.assembler.as_mut().unwrap(); + + match op { + Operator::GetGlobal { global_index } => { + let mut global_index = global_index as usize; + if global_index < module_info.imported_globals.len() { + dynasm!( + assembler + ; mov rax, r14 => vm::InternalCtx.imported_globals + ); + } else { + global_index -= module_info.imported_globals.len(); + if global_index >= module_info.globals.len() { + return Err(CodegenError { + message: "global out of bounds", + }); + } + dynasm!( + assembler + ; mov rax, r14 => vm::InternalCtx.globals + ); + } + + dynasm!( + assembler + ; mov rax, [rax + (global_index as i32) * 8] + ; mov rax, rax => LocalGlobal.data + ); + Self::emit_push_from_ax( + assembler, + &mut self.value_stack, + type_to_wp_type( + module_info.globals[LocalGlobalIndex::new(global_index)] + .desc + .ty, + ), + )?; + } + Operator::SetGlobal { global_index } => { + let ty = Self::emit_pop_into_ax(assembler, &mut self.value_stack)?; + + let mut global_index = global_index as usize; + if global_index < module_info.imported_globals.len() { + dynasm!( + assembler + ; push rbx + ; mov rbx, r14 => vm::InternalCtx.imported_globals + ); + } else { + global_index -= module_info.imported_globals.len(); + if global_index >= module_info.globals.len() { + return Err(CodegenError { + message: "global out of bounds", + }); + } + dynasm!( + assembler + ; push rbx + ; mov rbx, r14 => vm::InternalCtx.globals + ); + } + + if ty + != type_to_wp_type( + module_info.globals[LocalGlobalIndex::new(global_index)] + .desc + .ty, + ) + { + return Err(CodegenError { + message: "type mismatch in SetGlobal", + }); + } + dynasm!( + assembler + ; mov rbx, [rbx + (global_index as i32) * 8] + ; mov rbx => LocalGlobal.data, rax + ; pop rbx + ); + } + Operator::GetLocal { local_index } => { + let local_index = local_index as usize; + if local_index >= self.locals.len() { + return Err(CodegenError { + message: "local out of bounds", + }); + } + let local = self.locals[local_index]; + let location = self.value_stack.push(local.ty); + let size = get_size_of_type(&local.ty)?; + + match location { + ValueLocation::Register(id) => { + if is_dword(size) { + dynasm!( + assembler + ; mov Rd(Register::from_scratch_reg(id) as u8), [rbp - (local.stack_offset as i32)] + ); + } else { + dynasm!( + assembler + ; mov Rq(Register::from_scratch_reg(id) as u8), [rbp - (local.stack_offset as i32)] + ); + } + } + ValueLocation::Stack => { + if is_dword(size) { + dynasm!( + assembler + ; mov eax, [rbp - (local.stack_offset as i32)] + ; push rax + ); + } else { + dynasm!( + assembler + ; mov rax, [rbp - (local.stack_offset as i32)] + ; push rax + ); + } + } + } + } + Operator::SetLocal { local_index } => { + let local_index = local_index as usize; + if local_index >= self.locals.len() { + return Err(CodegenError { + message: "local out of bounds", + }); + } + let local = self.locals[local_index]; + let ty = Self::emit_pop_into_ax(assembler, &mut self.value_stack)?; + if ty != local.ty { + return Err(CodegenError { + message: "SetLocal type mismatch", + }); + } + + if is_dword(get_size_of_type(&ty)?) { + dynasm!( + assembler + ; mov [rbp - (local.stack_offset as i32)], eax + ); + } else { + dynasm!( + assembler + ; mov [rbp - (local.stack_offset as i32)], rax + ); + } + } + Operator::TeeLocal { local_index } => { + let local_index = local_index as usize; + if local_index >= self.locals.len() { + return Err(CodegenError { + message: "local out of bounds", + }); + } + let local = self.locals[local_index]; + let ty = Self::emit_peek_into_ax(assembler, &self.value_stack)?; + if ty != local.ty { + return Err(CodegenError { + message: "TeeLocal type mismatch", + }); + } + + if is_dword(get_size_of_type(&ty)?) { + dynasm!( + assembler + ; mov [rbp - (local.stack_offset as i32)], eax + ); + } else { + dynasm!( + assembler + ; mov [rbp - (local.stack_offset as i32)], rax + ); + } + } + Operator::I32Const { value } => { + let location = self.value_stack.push(WpType::I32); + match location { + ValueLocation::Register(x) => { + let reg = Register::from_scratch_reg(x); + dynasm!( + assembler + ; mov Rd(reg as u8), value + ); + } + ValueLocation::Stack => { + dynasm!( + assembler + ; push value + ); + } + } + } + Operator::I32Add => { + Self::emit_binop_i32( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; add Rd(left as u8), Rd(right as u8) + ) + }, + )?; + } + Operator::I32Sub => { + Self::emit_binop_i32( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; sub Rd(left as u8), Rd(right as u8) + ) + }, + )?; + } + Operator::I32Mul => { + Self::emit_binop_i32( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; imul Rd(left as u8), Rd(right as u8) + ) + }, + )?; + } + Operator::I32DivU => { + Self::emit_binop_i32( + assembler, + &mut self.value_stack, + |assembler, value_stack, left, right| { + Self::emit_div_i32( + assembler, + value_stack, + left, + right, + false, + Register::RAX, + ); + }, + )?; + } + Operator::I32DivS => { + Self::emit_binop_i32( + assembler, + &mut self.value_stack, + |assembler, value_stack, left, right| { + Self::emit_div_i32( + assembler, + value_stack, + left, + right, + true, + Register::RAX, + ); + }, + )?; + } + Operator::I32RemU => { + Self::emit_binop_i32( + assembler, + &mut self.value_stack, + |assembler, value_stack, left, right| { + Self::emit_div_i32( + assembler, + value_stack, + left, + right, + false, + Register::RDX, + ); + }, + )?; + } + Operator::I32RemS => { + Self::emit_binop_i32( + assembler, + &mut self.value_stack, + |assembler, value_stack, left, right| { + Self::emit_div_i32( + assembler, + value_stack, + left, + right, + true, + Register::RDX, + ); + }, + )?; + } + Operator::I32And => { + Self::emit_binop_i32( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; and Rd(left as u8), Rd(right as u8) + ); + }, + )?; + } + Operator::I32Or => { + Self::emit_binop_i32( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; or Rd(left as u8), Rd(right as u8) + ); + }, + )?; + } + Operator::I32Xor => { + Self::emit_binop_i32( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; xor Rd(left as u8), Rd(right as u8) + ); + }, + )?; + } + Operator::I32Eq => { + Self::emit_binop_i32( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; cmp Rd(left as u8), Rd(right as u8) + ; lahf + ; shr ax, 14 + ; and eax, 1 + ; mov Rd(left as u8), eax + ); + }, + )?; + } + Operator::I32Ne => { + Self::emit_binop_i32( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; cmp Rd(left as u8), Rd(right as u8) + ; lahf + ; shr ax, 14 + ; and eax, 1 + ; xor eax, 1 + ; mov Rd(left as u8), eax + ); + }, + )?; + } + Operator::I32Eqz => { + Self::emit_unop_i32( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; cmp Rd(reg as u8), 0 + ; lahf + ; shr ax, 14 + ; and eax, 1 + ); + if reg != Register::RAX { + dynasm!( + assembler + ; mov Rd(reg as u8), eax + ); + } + }, + )?; + } + Operator::I32Clz => { + Self::emit_unop_i32( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; lzcnt Rd(reg as u8), Rd(reg as u8) + ); + }, + )?; + } + Operator::I32Ctz => { + Self::emit_unop_i32( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; tzcnt Rd(reg as u8), Rd(reg as u8) + ); + }, + )?; + } + Operator::I32Popcnt => { + Self::emit_unop_i32( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; popcnt Rd(reg as u8), Rd(reg as u8) + ); + }, + )?; + } + Operator::I32Shl => { + Self::emit_binop_i32( + assembler, + &mut self.value_stack, + |assembler, value_stack, left, right| { + Self::emit_shift(assembler, value_stack, left, right, |assembler, left| { + dynasm!( + assembler + ; shl Rd(left as u8), cl + ) + }); + }, + )?; + } + Operator::I32ShrU => { + Self::emit_binop_i32( + assembler, + &mut self.value_stack, + |assembler, value_stack, left, right| { + Self::emit_shift(assembler, value_stack, left, right, |assembler, left| { + dynasm!( + assembler + ; shr Rd(left as u8), cl + ) + }); + }, + )?; + } + Operator::I32ShrS => { + Self::emit_binop_i32( + assembler, + &mut self.value_stack, + |assembler, value_stack, left, right| { + Self::emit_shift(assembler, value_stack, left, right, |assembler, left| { + dynasm!( + assembler + ; sar Rd(left as u8), cl + ) + }); + }, + )?; + } + Operator::I32Rotl => { + Self::emit_binop_i32( + assembler, + &mut self.value_stack, + |assembler, value_stack, left, right| { + Self::emit_shift(assembler, value_stack, left, right, |assembler, left| { + dynasm!( + assembler + ; rol Rd(left as u8), cl + ) + }); + }, + )?; + } + Operator::I32Rotr => { + Self::emit_binop_i32( + assembler, + &mut self.value_stack, + |assembler, value_stack, left, right| { + Self::emit_shift(assembler, value_stack, left, right, |assembler, left| { + dynasm!( + assembler + ; ror Rd(left as u8), cl + ) + }); + }, + )?; + } + // Comparison operators. + // https://en.wikibooks.org/wiki/X86_Assembly/Control_Flow + // TODO: Is reading flag register directly faster? + Operator::I32LtS => { + Self::emit_binop_i32( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + Self::emit_cmp_i32(assembler, left, right, |assembler| { + dynasm!( + assembler + ; jl >label_true + ); + }); + }, + )?; + } + Operator::I32LeS => { + Self::emit_binop_i32( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + Self::emit_cmp_i32(assembler, left, right, |assembler| { + dynasm!( + assembler + ; jle >label_true + ); + }); + }, + )?; + } + Operator::I32GtS => { + Self::emit_binop_i32( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + Self::emit_cmp_i32(assembler, left, right, |assembler| { + dynasm!( + assembler + ; jg >label_true + ); + }); + }, + )?; + } + Operator::I32GeS => { + Self::emit_binop_i32( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + Self::emit_cmp_i32(assembler, left, right, |assembler| { + dynasm!( + assembler + ; jge >label_true + ); + }); + }, + )?; + } + Operator::I32LtU => { + Self::emit_binop_i32( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + Self::emit_cmp_i32(assembler, left, right, |assembler| { + dynasm!( + assembler + ; jb >label_true + ); + }); + }, + )?; + } + Operator::I32LeU => { + Self::emit_binop_i32( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + Self::emit_cmp_i32(assembler, left, right, |assembler| { + dynasm!( + assembler + ; jbe >label_true + ); + }); + }, + )?; + } + Operator::I32GtU => { + Self::emit_binop_i32( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + Self::emit_cmp_i32(assembler, left, right, |assembler| { + dynasm!( + assembler + ; ja >label_true + ); + }); + }, + )?; + } + Operator::I32GeU => { + Self::emit_binop_i32( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + Self::emit_cmp_i32(assembler, left, right, |assembler| { + dynasm!( + assembler + ; jae >label_true + ); + }); + }, + )?; + } + Operator::I64Const { value } => { + let location = self.value_stack.push(WpType::I64); + match location { + ValueLocation::Register(x) => { + let reg = Register::from_scratch_reg(x); + dynasm!( + assembler + ; mov Rq(reg as u8), QWORD value + ); + } + ValueLocation::Stack => { + dynasm!( + assembler + ; mov rax, QWORD value + ; push rax + ); + } + } + } + Operator::I64Add => { + Self::emit_binop_i64( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; add Rq(left as u8), Rq(right as u8) + ) + }, + )?; + } + Operator::I64Sub => { + Self::emit_binop_i64( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; sub Rq(left as u8), Rq(right as u8) + ) + }, + )?; + } + Operator::I64Mul => { + Self::emit_binop_i64( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; imul Rq(left as u8), Rq(right as u8) + ) + }, + )?; + } + Operator::I64DivU => { + Self::emit_binop_i64( + assembler, + &mut self.value_stack, + |assembler, value_stack, left, right| { + Self::emit_div_i64( + assembler, + value_stack, + left, + right, + false, + Register::RAX, + ); + }, + )?; + } + Operator::I64DivS => { + Self::emit_binop_i64( + assembler, + &mut self.value_stack, + |assembler, value_stack, left, right| { + Self::emit_div_i64( + assembler, + value_stack, + left, + right, + true, + Register::RAX, + ); + }, + )?; + } + Operator::I64RemU => { + Self::emit_binop_i64( + assembler, + &mut self.value_stack, + |assembler, value_stack, left, right| { + Self::emit_div_i64( + assembler, + value_stack, + left, + right, + false, + Register::RDX, + ); + }, + )?; + } + Operator::I64RemS => { + Self::emit_binop_i64( + assembler, + &mut self.value_stack, + |assembler, value_stack, left, right| { + Self::emit_div_i64( + assembler, + value_stack, + left, + right, + true, + Register::RDX, + ); + }, + )?; + } + Operator::I64And => { + Self::emit_binop_i64( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; and Rq(left as u8), Rq(right as u8) + ); + }, + )?; + } + Operator::I64Or => { + Self::emit_binop_i64( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; or Rq(left as u8), Rq(right as u8) + ); + }, + )?; + } + Operator::I64Xor => { + Self::emit_binop_i64( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; xor Rq(left as u8), Rq(right as u8) + ); + }, + )?; + } + Operator::I64Eq => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; cmp Rq(left as u8), Rq(right as u8) + ; lahf + ; shr ax, 14 + ; and eax, 1 + ; mov Rd(left as u8), eax + ); + }, + WpType::I64, + WpType::I32, + )?; + } + Operator::I64Ne => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; cmp Rq(left as u8), Rq(right as u8) + ; lahf + ; shr ax, 14 + ; and eax, 1 + ; xor eax, 1 + ; mov Rd(left as u8), eax + ); + }, + WpType::I64, + WpType::I32, + )?; + } + Operator::I64Eqz => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; cmp Rq(reg as u8), 0 + ; lahf + ; shr ax, 14 + ; and eax, 1 + ); + if reg != Register::RAX { + dynasm!( + assembler + ; mov Rd(reg as u8), eax + ); + } + }, + WpType::I64, + WpType::I32, + )?; + } + Operator::I64Clz => { + Self::emit_unop_i64( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; lzcnt Rq(reg as u8), Rq(reg as u8) + ); + }, + )?; + } + Operator::I64Ctz => { + Self::emit_unop_i64( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; tzcnt Rq(reg as u8), Rq(reg as u8) + ); + }, + )?; + } + Operator::I64Popcnt => { + Self::emit_unop_i64( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; popcnt Rq(reg as u8), Rq(reg as u8) + ); + }, + )?; + } + Operator::I64Shl => { + Self::emit_binop_i64( + assembler, + &mut self.value_stack, + |assembler, value_stack, left, right| { + Self::emit_shift(assembler, value_stack, left, right, |assembler, left| { + dynasm!( + assembler + ; shl Rq(left as u8), cl + ) + }); + }, + )?; + } + Operator::I64ShrU => { + Self::emit_binop_i64( + assembler, + &mut self.value_stack, + |assembler, value_stack, left, right| { + Self::emit_shift(assembler, value_stack, left, right, |assembler, left| { + dynasm!( + assembler + ; shr Rq(left as u8), cl + ) + }); + }, + )?; + } + Operator::I64ShrS => { + Self::emit_binop_i64( + assembler, + &mut self.value_stack, + |assembler, value_stack, left, right| { + Self::emit_shift(assembler, value_stack, left, right, |assembler, left| { + dynasm!( + assembler + ; sar Rq(left as u8), cl + ) + }); + }, + )?; + } + Operator::I64Rotl => { + Self::emit_binop_i64( + assembler, + &mut self.value_stack, + |assembler, value_stack, left, right| { + Self::emit_shift(assembler, value_stack, left, right, |assembler, left| { + dynasm!( + assembler + ; rol Rq(left as u8), cl + ) + }); + }, + )?; + } + Operator::I64Rotr => { + Self::emit_binop_i64( + assembler, + &mut self.value_stack, + |assembler, value_stack, left, right| { + Self::emit_shift(assembler, value_stack, left, right, |assembler, left| { + dynasm!( + assembler + ; ror Rq(left as u8), cl + ) + }); + }, + )?; + } + // Comparison operators. + // https://en.wikibooks.org/wiki/X86_Assembly/Control_Flow + // TODO: Is reading flag register directly faster? + Operator::I64LtS => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + Self::emit_cmp_i64(assembler, left, right, |assembler| { + dynasm!( + assembler + ; jl >label_true + ); + }); + }, + WpType::I64, + WpType::I32, + )?; + } + Operator::I64LeS => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + Self::emit_cmp_i64(assembler, left, right, |assembler| { + dynasm!( + assembler + ; jle >label_true + ); + }); + }, + WpType::I64, + WpType::I32, + )?; + } + Operator::I64GtS => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + Self::emit_cmp_i64(assembler, left, right, |assembler| { + dynasm!( + assembler + ; jg >label_true + ); + }); + }, + WpType::I64, + WpType::I32, + )?; + } + Operator::I64GeS => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + Self::emit_cmp_i64(assembler, left, right, |assembler| { + dynasm!( + assembler + ; jge >label_true + ); + }); + }, + WpType::I64, + WpType::I32, + )?; + } + Operator::I64LtU => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + Self::emit_cmp_i64(assembler, left, right, |assembler| { + dynasm!( + assembler + ; jb >label_true + ); + }); + }, + WpType::I64, + WpType::I32, + )?; + } + Operator::I64LeU => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + Self::emit_cmp_i64(assembler, left, right, |assembler| { + dynasm!( + assembler + ; jbe >label_true + ); + }); + }, + WpType::I64, + WpType::I32, + )?; + } + Operator::I64GtU => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + Self::emit_cmp_i64(assembler, left, right, |assembler| { + dynasm!( + assembler + ; ja >label_true + ); + }); + }, + WpType::I64, + WpType::I32, + )?; + } + Operator::I64GeU => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + Self::emit_cmp_i64(assembler, left, right, |assembler| { + dynasm!( + assembler + ; jae >label_true + ); + }); + }, + WpType::I64, + WpType::I32, + )?; + } + Operator::I64ExtendSI32 => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; movsx Rq(reg as u8), Rd(reg as u8) + ); + }, + WpType::I32, + WpType::I64, + )?; + } + Operator::I64ExtendUI32 => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |_assembler, _value_stack, _reg| { + // FIXME: Is it correct to do nothing here? + }, + WpType::I32, + WpType::I64, + )?; + } + Operator::I32WrapI64 => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; mov Rd(reg as u8), Rd(reg as u8) // clear upper 32 bits + ); + }, + WpType::I64, + WpType::I32, + )?; + } + Operator::Block { ty } => { + self.control_stack + .as_mut() + .unwrap() + .frames + .push(ControlFrame { + label: assembler.new_dynamic_label(), + loop_like: false, + if_else: IfElseState::None, + returns: match ty { + WpType::EmptyBlockType => vec![], + _ => vec![ty], + }, + value_stack_depth_before: self.value_stack.values.len(), + }); + } + Operator::Unreachable => { + dynasm!( + assembler + ; ud2 + ); + self.unreachable_depth = 1; + } + Operator::Drop => { + let info = self.value_stack.pop()?; + Self::gen_rt_pop(assembler, &info)?; + } + Operator::Return => { + Self::emit_return(assembler, &mut self.value_stack, &self.returns)?; + self.unreachable_depth = 1; + } + Operator::Call { function_index } => { + let function_index = function_index as usize; + let label = self + .function_labels + .as_mut() + .unwrap() + .entry(function_index) + .or_insert_with(|| (assembler.new_dynamic_label(), None)) + .0; + let sig_index = match self.function_signatures.get(FuncIndex::new(function_index)) { + Some(x) => *x, + None => { + return Err(CodegenError { + message: "signature not found", + }); + } + }; + let sig = match self.signatures.get(sig_index) { + Some(x) => x, + None => { + return Err(CodegenError { + message: "signature does not exist", + }); + } + }; + let param_types: Vec = + sig.params().iter().cloned().map(type_to_wp_type).collect(); + let return_types: Vec = + sig.returns().iter().cloned().map(type_to_wp_type).collect(); + Self::emit_call_raw( + assembler, + &mut self.value_stack, + label, + ¶m_types, + &return_types, + )?; + } + Operator::CallIndirect { index, table_index } => { + if table_index != 0 { + return Err(CodegenError { + message: "only one table is supported", + }); + } + let local_or_import = if module_info.tables.len() > 0 { + if module_info.tables.len() != 1 || module_info.imported_tables.len() != 0 { + return Err(CodegenError { + message: "only one table is supported", + }); + } + CallIndirectLocalOrImport::Local + } else if module_info.imported_tables.len() > 0 { + if module_info.tables.len() != 0 || module_info.imported_tables.len() != 1 { + return Err(CodegenError { + message: "only one table is supported", + }); + } + CallIndirectLocalOrImport::Import + } else { + return Err(CodegenError { + message: "no tables", + }); + }; + let sig_index = SigIndex::new(index as usize); + let sig = match self.signatures.get(sig_index) { + Some(x) => x, + None => { + return Err(CodegenError { + message: "signature does not exist", + }); + } + }; + let mut param_types: Vec = + sig.params().iter().cloned().map(type_to_wp_type).collect(); + let return_types: Vec = + sig.returns().iter().cloned().map(type_to_wp_type).collect(); + param_types.push(WpType::I32); // element index + + dynasm!( + assembler + ; jmp >after_trampoline + ); + + let trampoline_label = Self::emit_native_call_trampoline( + assembler, + call_indirect, + index as usize, + local_or_import, + ); + + dynasm!( + assembler + ; after_trampoline: + ); + + Self::emit_call_raw( + assembler, + &mut self.value_stack, + trampoline_label, + ¶m_types, + &return_types, + )?; + } + Operator::End => { + if self.control_stack.as_ref().unwrap().frames.len() == 1 { + let frame = self.control_stack.as_mut().unwrap().frames.pop().unwrap(); + + if !was_unreachable { + Self::emit_leave_frame(assembler, &frame, &mut self.value_stack, false)?; + } else { + self.value_stack.reset_depth(0); + } + + dynasm!( + assembler + ; =>frame.label + ); + } else { + Self::emit_block_end( + assembler, + self.control_stack.as_mut().unwrap(), + &mut self.value_stack, + was_unreachable, + )?; + } + } + Operator::Loop { ty } => { + let label = assembler.new_dynamic_label(); + self.control_stack + .as_mut() + .unwrap() + .frames + .push(ControlFrame { + label: label, + loop_like: true, + if_else: IfElseState::None, + returns: match ty { + WpType::EmptyBlockType => vec![], + _ => vec![ty], + }, + value_stack_depth_before: self.value_stack.values.len(), + }); + dynasm!( + assembler + ; =>label + ); + } + Operator::If { ty } => { + let label_end = assembler.new_dynamic_label(); + let label_else = assembler.new_dynamic_label(); + + Self::emit_pop_into_ax(assembler, &mut self.value_stack)?; // TODO: typeck? + + self.control_stack + .as_mut() + .unwrap() + .frames + .push(ControlFrame { + label: label_end, + loop_like: false, + if_else: IfElseState::If(label_else), + returns: match ty { + WpType::EmptyBlockType => vec![], + _ => vec![ty], + }, + value_stack_depth_before: self.value_stack.values.len(), + }); + dynasm!( + assembler + ; cmp eax, 0 + ; je =>label_else + ); + } + Operator::Else => { + Self::emit_else( + assembler, + self.control_stack.as_mut().unwrap(), + &mut self.value_stack, + was_unreachable, + )?; + } + Operator::Select => { + Self::emit_pop_into_ax(assembler, &mut self.value_stack)?; + let v_b = self.value_stack.pop()?; + let v_a = self.value_stack.pop()?; + + if v_b.ty != v_a.ty { + return Err(CodegenError { + message: "select: type mismatch", + }); + } + + dynasm!( + assembler + ; cmp eax, 0 + ); + match v_b.location { + ValueLocation::Stack => { + dynasm!( + assembler + ; cmove rax, [rsp] + ; add rsp, 8 + ); + } + ValueLocation::Register(x) => { + let reg = Register::from_scratch_reg(x); + dynasm!( + assembler + ; cmove rax, Rq(reg as u8) + ); + } + } + match v_a.location { + ValueLocation::Stack => { + dynasm!( + assembler + ; cmovne rax, [rsp] + ; add rsp, 8 + ); + } + ValueLocation::Register(x) => { + let reg = Register::from_scratch_reg(x); + dynasm!( + assembler + ; cmovne rax, Rq(reg as u8) + ); + } + } + + Self::emit_push_from_ax(assembler, &mut self.value_stack, v_a.ty)?; + } + Operator::Br { relative_depth } => { + Self::emit_jmp( + assembler, + self.control_stack.as_ref().unwrap(), + &mut self.value_stack, + relative_depth as usize, + )?; + self.unreachable_depth = 1; + } + Operator::BrIf { relative_depth } => { + let no_br_label = assembler.new_dynamic_label(); + Self::emit_pop_into_ax(assembler, &mut self.value_stack)?; // TODO: typeck? + dynasm!( + assembler + ; cmp eax, 0 + ; je =>no_br_label + ); + Self::emit_jmp( + assembler, + self.control_stack.as_ref().unwrap(), + &mut self.value_stack, + relative_depth as usize, + )?; + dynasm!( + assembler + ; =>no_br_label + ); + } + Operator::BrTable { table } => { + let (targets, default_target) = match table.read_table() { + Ok(x) => x, + Err(_) => { + return Err(CodegenError { + message: "cannot read br table", + }); + } + }; + let cond_ty = Self::emit_pop_into_ax(assembler, &mut self.value_stack)?; + if cond_ty != WpType::I32 { + return Err(CodegenError { + message: "expecting i32 for BrTable condition", + }); + } + let mut table = vec![0usize; targets.len()]; + dynasm!( + assembler + ; cmp eax, targets.len() as i32 + ; jae >default_br + ; shl rax, 3 + ; push rcx + ; mov rcx, QWORD table.as_ptr() as usize as i64 + ; add rax, rcx + ; pop rcx + ; mov rax, [rax] // assuming upper 32 bits of rax are zeroed + ; jmp rax + ); + for (i, target) in targets.iter().enumerate() { + let AssemblyOffset(offset) = assembler.offset(); + table[i] = offset; + Self::emit_jmp( + assembler, + self.control_stack.as_ref().unwrap(), + &mut self.value_stack, + *target as usize, + )?; // This does not actually modify value_stack. + } + dynasm!( + assembler + ; default_br: + ); + Self::emit_jmp( + assembler, + self.control_stack.as_ref().unwrap(), + &mut self.value_stack, + default_target as usize, + )?; + self.br_table_data.as_mut().unwrap().push(table); + self.unreachable_depth = 1; + } + Operator::I32Load { memarg } => { + Self::emit_memory_load( + assembler, + &mut self.value_stack, + |assembler, reg| { + dynasm!( + assembler + ; mov Rd(reg as u8), [Rq(reg as u8) + memarg.offset as i32] + ); + }, + WpType::I32, + module_info, + 4, + )?; + } + Operator::I32Load8U { memarg } => { + Self::emit_memory_load( + assembler, + &mut self.value_stack, + |assembler, reg| { + dynasm!( + assembler + ; movzx Rd(reg as u8), BYTE [Rq(reg as u8) + memarg.offset as i32] + ); + }, + WpType::I32, + module_info, + 1, + )?; + } + Operator::I32Load8S { memarg } => { + Self::emit_memory_load( + assembler, + &mut self.value_stack, + |assembler, reg| { + dynasm!( + assembler + ; movsx Rd(reg as u8), BYTE [Rq(reg as u8) + memarg.offset as i32] + ); + }, + WpType::I32, + module_info, + 1, + )?; + } + Operator::I32Load16U { memarg } => { + Self::emit_memory_load( + assembler, + &mut self.value_stack, + |assembler, reg| { + dynasm!( + assembler + ; movzx Rd(reg as u8), WORD [Rq(reg as u8) + memarg.offset as i32] + ); + }, + WpType::I32, + module_info, + 2, + )?; + } + Operator::I32Load16S { memarg } => { + Self::emit_memory_load( + assembler, + &mut self.value_stack, + |assembler, reg| { + dynasm!( + assembler + ; movsx Rd(reg as u8), WORD [Rq(reg as u8) + memarg.offset as i32] + ); + }, + WpType::I32, + module_info, + 2, + )?; + } + Operator::I32Store { memarg } => { + Self::emit_memory_store( + assembler, + &mut self.value_stack, + |assembler, addr_reg, value_reg| { + dynasm!( + assembler + ; mov [Rq(addr_reg as u8) + memarg.offset as i32], Rd(value_reg as u8) + ); + }, + WpType::I32, + module_info, + 4, + )?; + } + Operator::I32Store8 { memarg } => { + Self::emit_memory_store( + assembler, + &mut self.value_stack, + |assembler, addr_reg, value_reg| { + dynasm!( + assembler + ; mov [Rq(addr_reg as u8) + memarg.offset as i32], Rb(value_reg as u8) + ); + }, + WpType::I32, + module_info, + 1, + )?; + } + Operator::I32Store16 { memarg } => { + Self::emit_memory_store( + assembler, + &mut self.value_stack, + |assembler, addr_reg, value_reg| { + dynasm!( + assembler + ; mov [Rq(addr_reg as u8) + memarg.offset as i32], Rw(value_reg as u8) + ); + }, + WpType::I32, + module_info, + 2, + )?; + } + Operator::I64Load { memarg } => { + Self::emit_memory_load( + assembler, + &mut self.value_stack, + |assembler, reg| { + dynasm!( + assembler + ; mov Rq(reg as u8), [Rq(reg as u8) + memarg.offset as i32] + ); + }, + WpType::I64, + module_info, + 8, + )?; + } + Operator::I64Load8U { memarg } => { + Self::emit_memory_load( + assembler, + &mut self.value_stack, + |assembler, reg| { + dynasm!( + assembler + ; movzx Rq(reg as u8), BYTE [Rq(reg as u8) + memarg.offset as i32] + ); + }, + WpType::I64, + module_info, + 1, + )?; + } + Operator::I64Load8S { memarg } => { + Self::emit_memory_load( + assembler, + &mut self.value_stack, + |assembler, reg| { + dynasm!( + assembler + ; movsx Rq(reg as u8), BYTE [Rq(reg as u8) + memarg.offset as i32] + ); + }, + WpType::I64, + module_info, + 1, + )?; + } + Operator::I64Load16U { memarg } => { + Self::emit_memory_load( + assembler, + &mut self.value_stack, + |assembler, reg| { + dynasm!( + assembler + ; movzx Rq(reg as u8), WORD [Rq(reg as u8) + memarg.offset as i32] + ); + }, + WpType::I64, + module_info, + 2, + )?; + } + Operator::I64Load16S { memarg } => { + Self::emit_memory_load( + assembler, + &mut self.value_stack, + |assembler, reg| { + dynasm!( + assembler + ; movsx Rq(reg as u8), WORD [Rq(reg as u8) + memarg.offset as i32] + ); + }, + WpType::I64, + module_info, + 2, + )?; + } + Operator::I64Load32U { memarg } => { + Self::emit_memory_load( + assembler, + &mut self.value_stack, + |assembler, reg| { + dynasm!( + assembler + ; mov Rd(reg as u8), DWORD [Rq(reg as u8) + memarg.offset as i32] + ); + }, + WpType::I64, + module_info, + 4, + )?; + } + Operator::I64Load32S { memarg } => { + Self::emit_memory_load( + assembler, + &mut self.value_stack, + |assembler, reg| { + dynasm!( + assembler + ; movsx Rq(reg as u8), DWORD [Rq(reg as u8) + memarg.offset as i32] + ); + }, + WpType::I64, + module_info, + 4, + )?; + } + Operator::I64Store { memarg } => { + Self::emit_memory_store( + assembler, + &mut self.value_stack, + |assembler, addr_reg, value_reg| { + dynasm!( + assembler + ; mov [Rq(addr_reg as u8) + memarg.offset as i32], Rq(value_reg as u8) + ); + }, + WpType::I64, + module_info, + 8, + )?; + } + Operator::I64Store8 { memarg } => { + Self::emit_memory_store( + assembler, + &mut self.value_stack, + |assembler, addr_reg, value_reg| { + dynasm!( + assembler + ; mov [Rq(addr_reg as u8) + memarg.offset as i32], Rb(value_reg as u8) + ); + }, + WpType::I64, + module_info, + 1, + )?; + } + Operator::I64Store16 { memarg } => { + Self::emit_memory_store( + assembler, + &mut self.value_stack, + |assembler, addr_reg, value_reg| { + dynasm!( + assembler + ; mov [Rq(addr_reg as u8) + memarg.offset as i32], Rw(value_reg as u8) + ); + }, + WpType::I64, + module_info, + 2, + )?; + } + Operator::I64Store32 { memarg } => { + Self::emit_memory_store( + assembler, + &mut self.value_stack, + |assembler, addr_reg, value_reg| { + dynasm!( + assembler + ; mov [Rq(addr_reg as u8) + memarg.offset as i32], Rd(value_reg as u8) + ); + }, + WpType::I64, + module_info, + 4, + )?; + } + Operator::F32Const { value } => { + let location = self.value_stack.push(WpType::F32); + match location { + ValueLocation::Register(x) => { + let reg = Register::from_scratch_reg(x); + dynasm!( + assembler + ; mov Rd(reg as u8), value.bits() as i32 + ); + } + ValueLocation::Stack => { + dynasm!( + assembler + ; push value.bits() as i32 + ); + } + } + } + Operator::F64Const { value } => { + let location = self.value_stack.push(WpType::F64); + match location { + ValueLocation::Register(x) => { + let reg = Register::from_scratch_reg(x); + dynasm!( + assembler + ; mov Rq(reg as u8), QWORD value.bits() as i64 + ); + } + ValueLocation::Stack => { + dynasm!( + assembler + ; mov rax, QWORD value.bits() as i64 + ; push rax + ); + } + } + } + Operator::F32Load { memarg } => { + Self::emit_memory_load( + assembler, + &mut self.value_stack, + |assembler, reg| { + dynasm!( + assembler + ; mov Rd(reg as u8), [Rq(reg as u8) + memarg.offset as i32] + ); + }, + WpType::F32, + module_info, + 4, + )?; + } + Operator::F32Store { memarg } => { + Self::emit_memory_store( + assembler, + &mut self.value_stack, + |assembler, addr_reg, value_reg| { + dynasm!( + assembler + ; mov [Rq(addr_reg as u8) + memarg.offset as i32], Rd(value_reg as u8) + ); + }, + WpType::F32, + module_info, + 4, + )?; + } + Operator::F64Load { memarg } => { + Self::emit_memory_load( + assembler, + &mut self.value_stack, + |assembler, reg| { + dynasm!( + assembler + ; mov Rq(reg as u8), [Rq(reg as u8) + memarg.offset as i32] + ); + }, + WpType::F64, + module_info, + 8, + )?; + } + Operator::F64Store { memarg } => { + Self::emit_memory_store( + assembler, + &mut self.value_stack, + |assembler, addr_reg, value_reg| { + dynasm!( + assembler + ; mov [Rq(addr_reg as u8) + memarg.offset as i32], Rq(value_reg as u8) + ); + }, + WpType::F64, + module_info, + 8, + )?; + } + Operator::I32ReinterpretF32 => { + Self::emit_reinterpret(&mut self.value_stack, WpType::F32, WpType::I32)?; + } + Operator::F32ReinterpretI32 => { + Self::emit_reinterpret(&mut self.value_stack, WpType::I32, WpType::F32)?; + } + Operator::I64ReinterpretF64 => { + Self::emit_reinterpret(&mut self.value_stack, WpType::F64, WpType::I64)?; + } + Operator::F64ReinterpretI64 => { + Self::emit_reinterpret(&mut self.value_stack, WpType::I64, WpType::F64)?; + } + Operator::F32ConvertSI32 => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; cvtsi2ss xmm1, Rd(reg as u8) + ; movd Rd(reg as u8), xmm1 + ); + }, + WpType::I32, + WpType::F32, + )?; + } + Operator::F32ConvertUI32 => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; mov Rd(reg as u8), Rd(reg as u8) // clear upper 32 bits + ; cvtsi2ss xmm1, Rq(reg as u8) + ; movd Rd(reg as u8), xmm1 + ); + }, + WpType::I32, + WpType::F32, + )?; + } + Operator::F32ConvertSI64 => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; cvtsi2ss xmm1, Rq(reg as u8) + ; movd Rd(reg as u8), xmm1 + ); + }, + WpType::I64, + WpType::F32, + )?; + } + /* + 0: 48 85 ff test %rdi,%rdi + 3: 78 0b js 10 + 5: c4 e1 fb 2a c7 vcvtsi2sd %rdi,%xmm0,%xmm0 + a: c3 retq + b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) + 10: 48 89 f8 mov %rdi,%rax + 13: 83 e7 01 and $0x1,%edi + 16: 48 d1 e8 shr %rax + 19: 48 09 f8 or %rdi,%rax + 1c: c4 e1 fb 2a c0 vcvtsi2sd %rax,%xmm0,%xmm0 + 21: c5 fb 58 c0 vaddsd %xmm0,%xmm0,%xmm0 + 25: c3 retq + */ + Operator::F32ConvertUI64 => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; test Rq(reg as u8), Rq(reg as u8) + ; js >do_convert + ; cvtsi2ss xmm1, Rq(reg as u8) + ; movd Rd(reg as u8), xmm1 + ; jmp >end_convert + ; do_convert: + ; movq xmm5, r15 + ; mov r15, Rq(reg as u8) + ; and r15, 1 + ; shr Rq(reg as u8), 1 + ; or Rq(reg as u8), r15 + ; cvtsi2ss xmm1, Rq(reg as u8) + ; addss xmm1, xmm1 + ; movq r15, xmm5 + ; movd Rd(reg as u8), xmm1 + ; end_convert: + ); + }, + WpType::I64, + WpType::F32, + )?; + } + Operator::F64ConvertSI32 => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; cvtsi2sd xmm1, Rd(reg as u8) + ; movq Rq(reg as u8), xmm1 + ); + }, + WpType::I32, + WpType::F64, + )?; + } + Operator::F64ConvertUI32 => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; mov Rd(reg as u8), Rd(reg as u8) // clear upper 32 bits + ; cvtsi2sd xmm1, Rq(reg as u8) + ; movq Rq(reg as u8), xmm1 + ); + }, + WpType::I32, + WpType::F64, + )?; + } + Operator::F64ConvertSI64 => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; cvtsi2sd xmm1, Rq(reg as u8) + ; movq Rq(reg as u8), xmm1 + ); + }, + WpType::I64, + WpType::F64, + )?; + } + Operator::F64ConvertUI64 => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; test Rq(reg as u8), Rq(reg as u8) + ; js >do_convert + ; cvtsi2sd xmm1, Rq(reg as u8) + ; movq Rq(reg as u8), xmm1 + ; jmp >end_convert + ; do_convert: + ; movq xmm5, r15 + ; mov r15, Rq(reg as u8) + ; and r15, 1 + ; shr Rq(reg as u8), 1 + ; or Rq(reg as u8), r15 + ; cvtsi2sd xmm1, Rq(reg as u8) + ; addsd xmm1, xmm1 + ; movq r15, xmm5 + ; movq Rq(reg as u8), xmm1 + ; end_convert: + ); + }, + WpType::I64, + WpType::F64, + )?; + } + Operator::F64PromoteF32 => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; movd xmm1, Rd(reg as u8) + ; cvtss2sd xmm1, xmm1 + ; movq Rq(reg as u8), xmm1 + ); + }, + WpType::F32, + WpType::F64, + )?; + } + Operator::F32DemoteF64 => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; movq xmm1, Rq(reg as u8) + ; cvtsd2ss xmm1, xmm1 + ; movd Rd(reg as u8), xmm1 + ); + }, + WpType::F64, + WpType::F32, + )?; + } + Operator::F32Add => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; movd xmm1, Rd(left as u8) + ; movd xmm2, Rd(right as u8) + ; addss xmm1, xmm2 + ; movd Rd(left as u8), xmm1 + ); + }, + WpType::F32, + WpType::F32, + )?; + } + Operator::F32Sub => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; movd xmm1, Rd(left as u8) + ; movd xmm2, Rd(right as u8) + ; subss xmm1, xmm2 + ; movd Rd(left as u8), xmm1 + ); + }, + WpType::F32, + WpType::F32, + )?; + } + Operator::F32Mul => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; movd xmm1, Rd(left as u8) + ; movd xmm2, Rd(right as u8) + ; mulss xmm1, xmm2 + ; movd Rd(left as u8), xmm1 + ); + }, + WpType::F32, + WpType::F32, + )?; + } + Operator::F32Div => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; movd xmm1, Rd(left as u8) + ; movd xmm2, Rd(right as u8) + ; divss xmm1, xmm2 + ; movd Rd(left as u8), xmm1 + ); + }, + WpType::F32, + WpType::F32, + )?; + } + Operator::F32Max => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; movd xmm1, Rd(left as u8) + ; movd xmm2, Rd(right as u8) + ; maxss xmm1, xmm2 + ; movd Rd(left as u8), xmm1 + ); + }, + WpType::F32, + WpType::F32, + )?; + } + Operator::F32Min => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; movd xmm1, Rd(left as u8) + ; movd xmm2, Rd(right as u8) + ; minss xmm1, xmm2 + ; movd Rd(left as u8), xmm1 + ); + }, + WpType::F32, + WpType::F32, + )?; + } + Operator::F32Eq => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; movd xmm1, Rd(left as u8) + ; movd xmm2, Rd(right as u8) + ; cmpeqss xmm1, xmm2 + ; movd Rd(left as u8), xmm1 + ; and Rd(left as u8), 1 + ); + }, + WpType::F32, + WpType::I32, + )?; + } + Operator::F32Ne => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; movd xmm1, Rd(left as u8) + ; movd xmm2, Rd(right as u8) + ; cmpneqss xmm1, xmm2 + ; movd Rd(left as u8), xmm1 + ; and Rd(left as u8), 1 + ); + }, + WpType::F32, + WpType::I32, + )?; + } + Operator::F32Gt => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; movd xmm1, Rd(left as u8) + ; movd xmm2, Rd(right as u8) + ; vcmpgtss xmm1, xmm1, xmm2 + ; movd Rd(left as u8), xmm1 + ; and Rd(left as u8), 1 + ); + }, + WpType::F32, + WpType::I32, + )?; + } + Operator::F32Ge => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; movd xmm1, Rd(left as u8) + ; movd xmm2, Rd(right as u8) + ; vcmpgess xmm1, xmm1, xmm2 + ; movd Rd(left as u8), xmm1 + ; and Rd(left as u8), 1 + ); + }, + WpType::F32, + WpType::I32, + )?; + } + Operator::F32Lt => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; movd xmm1, Rd(left as u8) + ; movd xmm2, Rd(right as u8) + ; cmpltss xmm1, xmm2 + ; movd Rd(left as u8), xmm1 + ; and Rd(left as u8), 1 + ); + }, + WpType::F32, + WpType::I32, + )?; + } + Operator::F32Le => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; movd xmm1, Rd(left as u8) + ; movd xmm2, Rd(right as u8) + ; cmpless xmm1, xmm2 + ; movd Rd(left as u8), xmm1 + ; and Rd(left as u8), 1 + ); + }, + WpType::F32, + WpType::I32, + )?; + } + Operator::F32Copysign => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; movd xmm1, Rd(left as u8) + ; movd xmm2, Rd(right as u8) + ; mov eax, 0x7fffffffu32 as i32 + ; movd xmm3, eax + ; pand xmm1, xmm3 + ; mov eax, 0x80000000u32 as i32 + ; movd xmm3, eax + ; pand xmm2, xmm3 + ; por xmm1, xmm2 + ; movd Rd(left as u8), xmm1 + ); + }, + WpType::F32, + WpType::F32, + )?; + } + Operator::F32Sqrt => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; movd xmm1, Rd(reg as u8) + ; sqrtss xmm1, xmm1 + ; movd Rd(reg as u8), xmm1 + ); + }, + WpType::F32, + WpType::F32, + )?; + } + Operator::F32Abs => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; and Rd(reg as u8), 0x7fffffffu32 as i32 + ); + }, + WpType::F32, + WpType::F32, + )?; + } + Operator::F32Neg => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; btc Rd(reg as u8), 31 + ); + }, + WpType::F32, + WpType::F32, + )?; + } + Operator::F32Nearest => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; movd xmm1, Rd(reg as u8) + ; roundss xmm1, xmm1, 0 + ; movd Rd(reg as u8), xmm1 + ); + }, + WpType::F32, + WpType::F32, + )?; + } + Operator::F32Floor => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; movd xmm1, Rd(reg as u8) + ; roundss xmm1, xmm1, 1 + ; movd Rd(reg as u8), xmm1 + ); + }, + WpType::F32, + WpType::F32, + )?; + } + Operator::F32Ceil => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; movd xmm1, Rd(reg as u8) + ; roundss xmm1, xmm1, 2 + ; movd Rd(reg as u8), xmm1 + ); + }, + WpType::F32, + WpType::F32, + )?; + } + Operator::F32Trunc => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; movd xmm1, Rd(reg as u8) + ; roundss xmm1, xmm1, 3 + ; movd Rd(reg as u8), xmm1 + ); + }, + WpType::F32, + WpType::F32, + )?; + } + Operator::I32TruncUF32 => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + Self::emit_f32_int_conv_check(assembler, reg, -1.0, 4294967296.0); + dynasm!( + assembler + ; movd xmm1, Rd(reg as u8) + ; cvttss2si Rq(reg as u8), xmm1 + ; mov Rd(reg as u8), Rd(reg as u8) + ); + }, + WpType::F32, + WpType::I32, + )?; + } + Operator::I32TruncSF32 => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + Self::emit_f32_int_conv_check(assembler, reg, -2147483904.0, 2147483648.0); + dynasm!( + assembler + ; movd xmm1, Rd(reg as u8) + ; cvttss2si Rd(reg as u8), xmm1 + ); + }, + WpType::F32, + WpType::I32, + )?; + } + Operator::I64TruncUF32 => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + Self::emit_f32_int_conv_check(assembler, reg, -1.0, 18446744073709551616.0); + /* + LCPI0_0: + .long 1593835520 ## float 9.22337203E+18 + + movss LCPI0_0(%rip), %xmm1 ## xmm1 = mem[0],zero,zero,zero + movaps %xmm0, %xmm2 + subss %xmm1, %xmm2 + cvttss2si %xmm2, %rax + movabsq $-9223372036854775808, %rcx ## imm = 0x8000000000000000 + xorq %rax, %rcx + cvttss2si %xmm0, %rax + ucomiss %xmm1, %xmm0 + cmovaeq %rcx, %rax + */ + dynasm!( + assembler + ; movq xmm5, r15 + ; mov r15d, 1593835520u32 as i32 //float 9.22337203E+18 + ; movd xmm1, r15d + ; movd xmm2, Rd(reg as u8) + ; movd xmm3, Rd(reg as u8) + ; subss xmm2, xmm1 + ; cvttss2si Rq(reg as u8), xmm2 + ; mov r15, QWORD 0x8000000000000000u64 as i64 + ; xor r15, Rq(reg as u8) + ; cvttss2si Rq(reg as u8), xmm3 + ; ucomiss xmm3, xmm1 + ; cmovae Rq(reg as u8), r15 + ; movq r15, xmm5 + ); + }, + WpType::F32, + WpType::I64, + )?; + } + Operator::I64TruncSF32 => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + Self::emit_f32_int_conv_check( + assembler, + reg, + -9223373136366403584.0, + 9223372036854775808.0, + ); + dynasm!( + assembler + ; movd xmm1, Rd(reg as u8) + ; cvttss2si Rq(reg as u8), xmm1 + ); + }, + WpType::F32, + WpType::I64, + )?; + } + Operator::F64Add => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; movq xmm1, Rq(left as u8) + ; movq xmm2, Rq(right as u8) + ; addsd xmm1, xmm2 + ; movq Rq(left as u8), xmm1 + ); + }, + WpType::F64, + WpType::F64, + )?; + } + Operator::F64Sub => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; movq xmm1, Rq(left as u8) + ; movq xmm2, Rq(right as u8) + ; subsd xmm1, xmm2 + ; movq Rq(left as u8), xmm1 + ); + }, + WpType::F64, + WpType::F64, + )?; + } + Operator::F64Mul => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; movq xmm1, Rq(left as u8) + ; movq xmm2, Rq(right as u8) + ; mulsd xmm1, xmm2 + ; movq Rq(left as u8), xmm1 + ); + }, + WpType::F64, + WpType::F64, + )?; + } + Operator::F64Div => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; movq xmm1, Rq(left as u8) + ; movq xmm2, Rq(right as u8) + ; divsd xmm1, xmm2 + ; movq Rq(left as u8), xmm1 + ); + }, + WpType::F64, + WpType::F64, + )?; + } + Operator::F64Max => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; movq xmm1, Rq(left as u8) + ; movq xmm2, Rq(right as u8) + ; maxsd xmm1, xmm2 + ; movq Rq(left as u8), xmm1 + ); + }, + WpType::F64, + WpType::F64, + )?; + } + Operator::F64Min => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; movq xmm1, Rq(left as u8) + ; movq xmm2, Rq(right as u8) + ; minsd xmm1, xmm2 + ; movq Rq(left as u8), xmm1 + ); + }, + WpType::F64, + WpType::F64, + )?; + } + Operator::F64Eq => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; movq xmm1, Rq(left as u8) + ; movq xmm2, Rq(right as u8) + ; cmpeqsd xmm1, xmm2 + ; movd Rd(left as u8), xmm1 + ; and Rd(left as u8), 1 + ); + }, + WpType::F64, + WpType::I32, + )?; + } + Operator::F64Ne => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; movq xmm1, Rq(left as u8) + ; movq xmm2, Rq(right as u8) + ; cmpneqsd xmm1, xmm2 + ; movd Rd(left as u8), xmm1 + ; and Rd(left as u8), 1 + ); + }, + WpType::F64, + WpType::I32, + )?; + } + Operator::F64Gt => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; movq xmm1, Rq(left as u8) + ; movq xmm2, Rq(right as u8) + ; vcmpgtsd xmm1, xmm1, xmm2 + ; movd Rd(left as u8), xmm1 + ; and Rd(left as u8), 1 + ); + }, + WpType::F64, + WpType::I32, + )?; + } + Operator::F64Ge => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; movq xmm1, Rq(left as u8) + ; movq xmm2, Rq(right as u8) + ; vcmpgesd xmm1, xmm1, xmm2 + ; movd Rd(left as u8), xmm1 + ; and Rd(left as u8), 1 + ); + }, + WpType::F64, + WpType::I32, + )?; + } + Operator::F64Lt => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; movq xmm1, Rq(left as u8) + ; movq xmm2, Rq(right as u8) + ; cmpltsd xmm1, xmm2 + ; movd Rd(left as u8), xmm1 + ; and Rd(left as u8), 1 + ); + }, + WpType::F64, + WpType::I32, + )?; + } + Operator::F64Le => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; movq xmm1, Rq(left as u8) + ; movq xmm2, Rq(right as u8) + ; cmplesd xmm1, xmm2 + ; movd Rd(left as u8), xmm1 + ; and Rd(left as u8), 1 + ); + }, + WpType::F64, + WpType::I32, + )?; + } + Operator::F64Copysign => { + Self::emit_binop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, left, right| { + dynasm!( + assembler + ; movq xmm1, Rq(left as u8) + ; movq xmm2, Rq(right as u8) + ; mov rax, QWORD 0x7fffffffffffffffu64 as i64 + ; movq xmm3, rax + ; pand xmm1, xmm3 + ; mov rax, QWORD 0x8000000000000000u64 as i64 + ; movq xmm3, rax + ; pand xmm2, xmm3 + ; por xmm1, xmm2 + ; movq Rq(left as u8), xmm1 + ); + }, + WpType::F64, + WpType::F64, + )?; + } + Operator::F64Sqrt => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; movq xmm1, Rq(reg as u8) + ; sqrtsd xmm1, xmm1 + ; movq Rq(reg as u8), xmm1 + ); + }, + WpType::F64, + WpType::F64, + )?; + } + Operator::F64Abs => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; movq xmm1, Rq(reg as u8) + ; mov rax, QWORD 0x7fffffffffffffff + ; movq xmm2, rax + ; pand xmm1, xmm2 + ; movq Rq(reg as u8), xmm1 + ); + }, + WpType::F64, + WpType::F64, + )?; + } + Operator::F64Neg => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; btc Rq(reg as u8), 63 + ); + }, + WpType::F64, + WpType::F64, + )?; + } + Operator::F64Nearest => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; movq xmm1, Rq(reg as u8) + ; roundsd xmm1, xmm1, 0 + ; movq Rq(reg as u8), xmm1 + ); + }, + WpType::F64, + WpType::F64, + )?; + } + Operator::F64Floor => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; movq xmm1, Rq(reg as u8) + ; roundsd xmm1, xmm1, 1 + ; movq Rq(reg as u8), xmm1 + ); + }, + WpType::F64, + WpType::F64, + )?; + } + Operator::F64Ceil => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; movq xmm1, Rq(reg as u8) + ; roundsd xmm1, xmm1, 2 + ; movq Rq(reg as u8), xmm1 + ); + }, + WpType::F64, + WpType::F64, + )?; + } + Operator::F64Trunc => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + dynasm!( + assembler + ; movq xmm1, Rq(reg as u8) + ; roundsd xmm1, xmm1, 3 + ; movq Rq(reg as u8), xmm1 + ); + }, + WpType::F64, + WpType::F64, + )?; + } + Operator::I32TruncUF64 => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + Self::emit_f64_int_conv_check(assembler, reg, -1.0, 4294967296.0); + + dynasm!( + assembler + ; movq xmm1, Rq(reg as u8) + ; cvttsd2si Rq(reg as u8), xmm1 + ; mov Rd(reg as u8), Rd(reg as u8) + ); + }, + WpType::F64, + WpType::I32, + )?; + } + Operator::I32TruncSF64 => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + Self::emit_f64_int_conv_check(assembler, reg, -2147483649.0, 2147483648.0); + + dynasm!( + assembler + ; movq xmm1, Rq(reg as u8) + ; cvttsd2si Rd(reg as u8), xmm1 + ); + }, + WpType::F64, + WpType::I32, + )?; + } + Operator::I64TruncUF64 => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + Self::emit_f64_int_conv_check(assembler, reg, -1.0, 18446744073709551616.0); + + /* + LCPI0_0: + .quad 4890909195324358656 ## double 9.2233720368547758E+18 + + movsd LCPI0_0(%rip), %xmm1 ## xmm1 = mem[0],zero + movapd %xmm0, %xmm2 + subsd %xmm1, %xmm2 + cvttsd2si %xmm2, %rax + movabsq $-9223372036854775808, %rcx ## imm = 0x8000000000000000 + xorq %rax, %rcx + cvttsd2si %xmm0, %rax + ucomisd %xmm1, %xmm0 + cmovaeq %rcx, %rax + */ + + dynasm!( + assembler + ; movq xmm5, r15 + ; mov r15, QWORD 4890909195324358656u64 as i64 //double 9.2233720368547758E+18 + ; movq xmm1, r15 + ; movq xmm2, Rq(reg as u8) + ; movq xmm3, Rq(reg as u8) + ; subsd xmm2, xmm1 + ; cvttsd2si Rq(reg as u8), xmm2 + ; mov r15, QWORD 0x8000000000000000u64 as i64 + ; xor r15, Rq(reg as u8) + ; cvttsd2si Rq(reg as u8), xmm3 + ; ucomisd xmm3, xmm1 + ; cmovae Rq(reg as u8), r15 + ; movq r15, xmm5 + ); + }, + WpType::F64, + WpType::I64, + )?; + } + Operator::I64TruncSF64 => { + Self::emit_unop( + assembler, + &mut self.value_stack, + |assembler, _value_stack, reg| { + Self::emit_f64_int_conv_check( + assembler, + reg, + -9223372036854777856.0, + 9223372036854775808.0, + ); + + dynasm!( + assembler + ; movq xmm1, Rq(reg as u8) + ; cvttsd2si Rq(reg as u8), xmm1 + ); + }, + WpType::F64, + WpType::I64, + )?; + } + Operator::Nop => {} + Operator::MemorySize { reserved } => { + let memory_index = MemoryIndex::new(reserved as usize); + let label = match memory_index.local_or_import(module_info) { + LocalOrImport::Local(local_mem_index) => { + let mem_desc = &module_info.memories[local_mem_index]; + match mem_desc.memory_type() { + MemoryType::Dynamic => { + self.native_trampolines.memory_size_dynamic_local + } + MemoryType::Static => self.native_trampolines.memory_size_static_local, + MemoryType::SharedStatic => { + self.native_trampolines.memory_size_shared_local + } + } + } + LocalOrImport::Import(import_mem_index) => { + let mem_desc = &module_info.imported_memories[import_mem_index].1; + match mem_desc.memory_type() { + MemoryType::Dynamic => { + self.native_trampolines.memory_size_dynamic_import + } + MemoryType::Static => self.native_trampolines.memory_size_static_import, + MemoryType::SharedStatic => { + self.native_trampolines.memory_size_shared_import + } + } + } + }; + Self::emit_call_raw(assembler, &mut self.value_stack, label, &[], &[WpType::I32])?; + } + Operator::MemoryGrow { reserved } => { + let memory_index = MemoryIndex::new(reserved as usize); + let label = match memory_index.local_or_import(module_info) { + LocalOrImport::Local(local_mem_index) => { + let mem_desc = &module_info.memories[local_mem_index]; + match mem_desc.memory_type() { + MemoryType::Dynamic => { + self.native_trampolines.memory_grow_dynamic_local + } + MemoryType::Static => self.native_trampolines.memory_grow_static_local, + MemoryType::SharedStatic => { + self.native_trampolines.memory_grow_shared_local + } + } + } + LocalOrImport::Import(import_mem_index) => { + let mem_desc = &module_info.imported_memories[import_mem_index].1; + match mem_desc.memory_type() { + MemoryType::Dynamic => { + self.native_trampolines.memory_grow_dynamic_import + } + MemoryType::Static => self.native_trampolines.memory_grow_static_import, + MemoryType::SharedStatic => { + self.native_trampolines.memory_grow_shared_import + } + } + } + }; + Self::emit_call_raw( + assembler, + &mut self.value_stack, + label, + &[WpType::I32], + &[WpType::I32], + )?; + Self::emit_update_memory_from_ctx(assembler, module_info)?; + } + _ => { + panic!("{:?}", op); + } + } + Ok(()) + } + + fn finalize(&mut self) -> Result<(), CodegenError> { + let assembler = self.assembler.as_mut().unwrap(); + + dynasm!( + assembler + ; mov rsp, rbp + ; pop rbp + ; ret + ); + + if self.value_stack.values.len() != 0 + || self.control_stack.as_ref().unwrap().frames.len() != 0 + { + return Err(CodegenError { + message: "control/value stack not empty at end of function", + }); + } + + Ok(()) + } +} + +fn get_size_of_type(ty: &WpType) -> Result { + match *ty { + WpType::I32 | WpType::F32 => Ok(4), + WpType::I64 | WpType::F64 => Ok(8), + _ => Err(CodegenError { + message: "unknown type", + }), + } +} + +fn is_dword(n: usize) -> bool { + n == 4 +} + +fn type_to_wp_type(ty: Type) -> WpType { + match ty { + Type::I32 => WpType::I32, + Type::I64 => WpType::I64, + Type::F32 => WpType::F32, + Type::F64 => WpType::F64, + } +} + +unsafe extern "C" fn invoke_import( + _unused: usize, + import_id: usize, + stack_top: *mut u8, + stack_base: *mut u8, + _vmctx: *mut vm::Ctx, + _memory_base: *mut u8, +) -> u64 { + let vmctx: &mut vm::InternalCtx = &mut *(_vmctx as *mut vm::InternalCtx); + let import = (*vmctx.imported_funcs.offset(import_id as isize)).func; + + CONSTRUCT_STACK_AND_CALL_NATIVE(stack_top, stack_base, _vmctx, import) +} + +#[repr(u64)] +#[derive(Copy, Clone, Debug)] +enum CallIndirectLocalOrImport { + Local, + Import, +} + +#[allow(clippy::cast_ptr_alignment)] +unsafe extern "C" fn call_indirect( + sig_index: usize, + local_or_import: CallIndirectLocalOrImport, + mut stack_top: *mut u8, + stack_base: *mut u8, + vmctx: *mut vm::Ctx, + _memory_base: *mut u8, +) -> u64 { + let elem_index = *(stack_top as *mut u32) as usize; + stack_top = stack_top.offset(8); + assert!(stack_top as usize <= stack_base as usize); + + let table: &LocalTable = match local_or_import { + CallIndirectLocalOrImport::Local => &*(*(*(vmctx as *mut vm::InternalCtx)).tables), + CallIndirectLocalOrImport::Import => { + &*(*(*(vmctx as *mut vm::InternalCtx)).imported_tables) + } + }; + if elem_index >= table.count as usize { + eprintln!("element index out of bounds"); + protect_unix::trigger_trap(); + } + let anyfunc = &*(table.base as *mut vm::Anyfunc).offset(elem_index as isize); + let dynamic_sigindex = *(*(vmctx as *mut vm::InternalCtx)) + .dynamic_sigindices + .offset(sig_index as isize); + + if anyfunc.func.is_null() { + eprintln!("null anyfunc"); + protect_unix::trigger_trap(); + } + + if anyfunc.sig_id.0 != dynamic_sigindex.0 { + eprintln!("signature mismatch"); + protect_unix::trigger_trap(); + } + + CONSTRUCT_STACK_AND_CALL_NATIVE(stack_top, stack_base, anyfunc.ctx, anyfunc.func) +} + +#[repr(u64)] +#[derive(Copy, Clone, Debug)] +enum MemoryKind { + DynamicLocal, + StaticLocal, + SharedLocal, + DynamicImport, + StaticImport, + SharedImport, +} + +unsafe extern "C" fn _memory_size( + op: MemoryKind, + index: usize, + _stack_top: *mut u8, + _stack_base: *mut u8, + vmctx: *mut vm::Ctx, + _memory_base: *mut u8, +) -> u64 { + use wasmer_runtime_core::vmcalls; + let ret = match op { + MemoryKind::DynamicLocal => { + vmcalls::local_dynamic_memory_size(&*vmctx, LocalMemoryIndex::new(index)) + } + MemoryKind::StaticLocal => { + vmcalls::local_static_memory_size(&*vmctx, LocalMemoryIndex::new(index)) + } + MemoryKind::SharedLocal => unreachable!(), + MemoryKind::DynamicImport => { + vmcalls::imported_dynamic_memory_size(&*vmctx, ImportedMemoryIndex::new(index)) + } + MemoryKind::StaticImport => { + vmcalls::imported_static_memory_size(&*vmctx, ImportedMemoryIndex::new(index)) + } + MemoryKind::SharedImport => unreachable!(), + }; + ret.0 as u32 as u64 +} + +#[allow(clippy::cast_ptr_alignment)] +unsafe extern "C" fn _memory_grow( + op: MemoryKind, + index: usize, + stack_top: *mut u8, + stack_base: *mut u8, + vmctx: *mut vm::Ctx, + _memory_base: *mut u8, +) -> u64 { + use wasmer_runtime_core::vmcalls; + assert_eq!(stack_base as usize - stack_top as usize, 8); + let pages = Pages(*(stack_top as *mut u32)); + let ret = match op { + MemoryKind::DynamicLocal => { + vmcalls::local_dynamic_memory_grow(&mut *vmctx, LocalMemoryIndex::new(index), pages) + } + MemoryKind::StaticLocal => { + vmcalls::local_static_memory_grow(&mut *vmctx, LocalMemoryIndex::new(index), pages) + } + MemoryKind::SharedLocal => unreachable!(), + MemoryKind::DynamicImport => vmcalls::imported_dynamic_memory_grow( + &mut *vmctx, + ImportedMemoryIndex::new(index), + pages, + ), + MemoryKind::StaticImport => vmcalls::imported_static_memory_grow( + &mut *vmctx, + ImportedMemoryIndex::new(index), + pages, + ), + MemoryKind::SharedImport => unreachable!(), + }; + ret as u32 as u64 +} diff --git a/lib/dynasm-backend/src/codegen_x64_v2.rs b/lib/dynasm-backend/src/codegen_x64_v2.rs deleted file mode 100644 index 2a0b673b8..000000000 --- a/lib/dynasm-backend/src/codegen_x64_v2.rs +++ /dev/null @@ -1,698 +0,0 @@ -#![allow(clippy::forget_copy)] // Used by dynasm. - -use super::codegen::*; -use crate::protect_unix; -use byteorder::{ByteOrder, LittleEndian}; -use dynasmrt::{ - x64::Assembler, AssemblyOffset, DynamicLabel, DynasmApi, DynasmLabelApi, ExecutableBuffer, -}; -use std::cell::RefCell; -use std::ptr::NonNull; -use std::{any::Any, collections::HashMap, sync::Arc}; -use wasmer_runtime_core::{ - backend::{FuncResolver, ProtectedCaller, Token, UserTrapper}, - error::{RuntimeError, RuntimeResult}, - memory::MemoryType, - module::{ModuleInfo, ModuleInner}, - structures::{Map, TypedIndex}, - types::{ - FuncIndex, FuncSig, ImportedMemoryIndex, LocalFuncIndex, LocalGlobalIndex, - LocalMemoryIndex, LocalOrImport, MemoryIndex, SigIndex, Type, Value, - }, - units::Pages, - vm::{self, ImportBacking, LocalGlobal, LocalMemory, LocalTable}, -}; -use wasmparser::{Operator, Type as WpType}; -use crate::machine::*; -use crate::emitter_x64::*; - -pub struct X64ModuleCodeGenerator { - functions: Vec, - signatures: Option>>, - function_signatures: Option>>, - function_labels: Option)>>, - assembler: Option, - func_import_count: usize, -} - -#[derive(Copy, Clone, Debug, Eq, PartialEq)] -enum LocalOrTemp { - Local, - Temp -} - -pub struct X64FunctionCode { - signatures: Arc>, - function_signatures: Arc>, - - begin_offset: AssemblyOffset, - assembler: Option, - function_labels: Option)>>, - br_table_data: Option>>, - returns: Vec, - locals: Vec, - num_params: usize, - value_stack: Vec<(Location, LocalOrTemp)>, - control_stack: Vec, - machine: Machine, - unreachable_depth: usize, -} - -enum FuncPtrInner {} -#[repr(transparent)] -#[derive(Copy, Clone, Debug)] -struct FuncPtr(*const FuncPtrInner); -unsafe impl Send for FuncPtr {} -unsafe impl Sync for FuncPtr {} - -pub struct X64ExecutionContext { - code: ExecutableBuffer, - functions: Vec, - signatures: Arc>, - function_signatures: Arc>, - function_pointers: Vec, - _br_table_data: Vec>, - func_import_count: usize, -} - -pub struct X64RuntimeResolver { - function_pointers: Vec, -} - -#[derive(Debug)] -pub struct ControlFrame { - pub label: DynamicLabel, - pub loop_like: bool, - pub if_else: IfElseState, - pub returns: Vec, - pub value_stack_depth: usize, -} - -#[derive(Debug, Copy, Clone)] -pub enum IfElseState { - None, - If(DynamicLabel), - Else, -} - -impl X64ExecutionContext { - fn get_runtime_resolver( - &self, - module_info: &ModuleInfo, - ) -> Result { - Ok(X64RuntimeResolver { - function_pointers: self.function_pointers.clone(), - }) - } -} - -impl FuncResolver for X64RuntimeResolver { - fn get( - &self, - _module: &ModuleInner, - _local_func_index: LocalFuncIndex, - ) -> Option> { - NonNull::new(self.function_pointers[_local_func_index.index() as usize].0 as *mut vm::Func) - } -} - -impl ProtectedCaller for X64ExecutionContext { - fn call( - &self, - _module: &ModuleInner, - _func_index: FuncIndex, - _params: &[Value], - _import_backing: &ImportBacking, - _vmctx: *mut vm::Ctx, - _: Token, - ) -> RuntimeResult> { - unimplemented!() - } - - fn get_early_trapper(&self) -> Box { - pub struct Trapper; - - impl UserTrapper for Trapper { - unsafe fn do_early_trap(&self, _data: Box) -> ! { - panic!("do_early_trap"); - } - } - - Box::new(Trapper) - } -} - -impl X64ModuleCodeGenerator { - pub fn new() -> X64ModuleCodeGenerator { - let mut assembler = Assembler::new().unwrap(); - - X64ModuleCodeGenerator { - functions: vec![], - signatures: None, - function_signatures: None, - function_labels: Some(HashMap::new()), - assembler: Some(assembler), - func_import_count: 0, - } - } -} - -impl ModuleCodeGenerator - for X64ModuleCodeGenerator -{ - fn check_precondition(&mut self, _module_info: &ModuleInfo) -> Result<(), CodegenError> { - Ok(()) - } - - fn next_function(&mut self) -> Result<&mut X64FunctionCode, CodegenError> { - let (mut assembler, mut function_labels, br_table_data) = match self.functions.last_mut() { - Some(x) => ( - x.assembler.take().unwrap(), - x.function_labels.take().unwrap(), - x.br_table_data.take().unwrap(), - ), - None => ( - self.assembler.take().unwrap(), - self.function_labels.take().unwrap(), - vec![], - ), - }; - let begin_offset = assembler.offset(); - let begin_label_info = function_labels - .entry(self.functions.len() + self.func_import_count) - .or_insert_with(|| (assembler.new_dynamic_label(), None)); - - begin_label_info.1 = Some(begin_offset); - let begin_label = begin_label_info.0; - - dynasm!( - assembler - ; => begin_label - //; int 3 - ); - let code = X64FunctionCode { - signatures: self.signatures.as_ref().unwrap().clone(), - function_signatures: self.function_signatures.as_ref().unwrap().clone(), - - begin_offset: begin_offset, - assembler: Some(assembler), - function_labels: Some(function_labels), - br_table_data: Some(br_table_data), - returns: vec![], - locals: vec![], - num_params: 0, - value_stack: vec! [], - control_stack: vec! [], - machine: Machine::new(), - unreachable_depth: 0, - }; - self.functions.push(code); - Ok(self.functions.last_mut().unwrap()) - } - - fn finalize( - mut self, - module_info: &ModuleInfo, - ) -> Result<(X64ExecutionContext, X64RuntimeResolver), CodegenError> { - let (assembler, mut br_table_data) = match self.functions.last_mut() { - Some(x) => (x.assembler.take().unwrap(), x.br_table_data.take().unwrap()), - None => { - return Err(CodegenError { - message: "no function", - }); - } - }; - let output = assembler.finalize().unwrap(); - - for table in &mut br_table_data { - for entry in table { - *entry = output.ptr(AssemblyOffset(*entry)) as usize; - } - } - - let function_labels = if let Some(x) = self.functions.last() { - x.function_labels.as_ref().unwrap() - } else { - self.function_labels.as_ref().unwrap() - }; - let mut out_labels: Vec = vec![]; - - for i in 0..function_labels.len() { - let (_, offset) = match function_labels.get(&i) { - Some(x) => x, - None => { - return Err(CodegenError { - message: "label not found", - }); - } - }; - let offset = match offset { - Some(x) => x, - None => { - return Err(CodegenError { - message: "offset is none", - }); - } - }; - out_labels.push(FuncPtr(output.ptr(*offset) as _)); - } - - let ctx = X64ExecutionContext { - code: output, - functions: self.functions, - _br_table_data: br_table_data, - func_import_count: self.func_import_count, - signatures: match self.signatures { - Some(x) => x, - None => { - return Err(CodegenError { - message: "no signatures", - }); - } - }, - function_pointers: out_labels, - function_signatures: match self.function_signatures { - Some(x) => x, - None => { - return Err(CodegenError { - message: "no function signatures", - }); - } - }, - }; - let resolver = ctx.get_runtime_resolver(module_info)?; - - Ok((ctx, resolver)) - } - - fn feed_signatures(&mut self, signatures: Map) -> Result<(), CodegenError> { - self.signatures = Some(Arc::new(signatures)); - Ok(()) - } - - fn feed_function_signatures( - &mut self, - assoc: Map, - ) -> Result<(), CodegenError> { - self.function_signatures = Some(Arc::new(assoc)); - Ok(()) - } - - fn feed_import_function(&mut self) -> Result<(), CodegenError> { - /* - let labels = match self.function_labels.as_mut() { - Some(x) => x, - None => { - return Err(CodegenError { - message: "got function import after code", - }); - } - }; - let id = labels.len(); - - let assembler = self.assembler.as_mut().unwrap(); - - let offset = assembler.offset(); - - let label = X64FunctionCode::emit_native_call( - self.assembler.as_mut().unwrap(), - invoke_import, - 0, - id, - ); - labels.insert(id, (label, Some(offset))); - - self.func_import_count += 1; - - Ok(()) - */ - unimplemented!() - } -} - -impl X64FunctionCode { - fn emit_relaxed_binop ( - a: &mut Assembler, - m: &mut Machine, - op: F, - sz: Size, - src: Location, - dst: Location, - ) { - match (src, dst) { - (Location::Memory(_, _), Location::Memory(_, _)) => { - let temp = m.acquire_temp_gpr().unwrap(); - a.emit_mov(sz, src, Location::GPR(temp)); - op(a, sz, Location::GPR(temp), dst); - m.release_temp_gpr(temp); - }, - _ => { - op(a, sz, src, dst); - } - } - } - - fn emit_binop_i32( - a: &mut Assembler, - m: &mut Machine, - value_stack: &mut Vec<(Location, LocalOrTemp)>, - f: F, - ) { - // Using Red Zone here. - let loc_b = get_location_released(a, m, value_stack.pop().unwrap()); - let loc_a = get_location_released(a, m, value_stack.pop().unwrap()); - let ret = m.acquire_locations(a, &[WpType::I32], false)[0]; - assert_eq!(loc_a, ret); - Self::emit_relaxed_binop( - a, m, f, - Size::S32, loc_b, ret, - ); - } - - fn emit_cmpop_i32_dynamic_b( - a: &mut Assembler, - m: &mut Machine, - value_stack: &mut Vec<(Location, LocalOrTemp)>, - c: Condition, - loc_b: Location, - ) { - // Using Red Zone here. - let loc_a = get_location_released(a, m, value_stack.pop().unwrap()); - let ret = m.acquire_locations(a, &[WpType::I32], false)[0]; - match ret { - Location::GPR(x) => { - a.emit_xor(Size::S32, Location::GPR(x), Location::GPR(x)); - Self::emit_relaxed_binop( - a, m, Assembler::emit_cmp, - Size::S32, loc_b, loc_a, - ); - a.emit_set(c, x); - }, - Location::Memory(_, _) => { - let tmp = m.acquire_temp_gpr().unwrap(); - a.emit_xor(Size::S32, Location::GPR(tmp), Location::GPR(tmp)); - Self::emit_relaxed_binop( - a, m, Assembler::emit_cmp, - Size::S32, loc_b, loc_a, - ); - a.emit_set(c, tmp); - a.emit_mov(Size::S32, Location::GPR(tmp), ret); - m.release_temp_gpr(tmp); - }, - _ => unreachable!() - } - } - - fn emit_cmpop_i32( - a: &mut Assembler, - m: &mut Machine, - value_stack: &mut Vec<(Location, LocalOrTemp)>, - c: Condition, - ) { - let loc_b = get_location_released(a, m, value_stack.pop().unwrap()); - Self::emit_cmpop_i32_dynamic_b(a, m, value_stack, c, loc_b); - } - - fn emit_xcnt_i32( - a: &mut Assembler, - m: &mut Machine, - value_stack: &mut Vec<(Location, LocalOrTemp)>, - f: F, - ) { - let loc = get_location_released(a, m, value_stack.pop().unwrap()); - let ret = m.acquire_locations(a, &[WpType::I32], false)[0]; - if let Location::Imm32(x) = loc { - let tmp = m.acquire_temp_gpr().unwrap(); - a.emit_mov(Size::S32, loc, Location::GPR(tmp)); - if let Location::Memory(_, _) = ret { - let out_tmp = m.acquire_temp_gpr().unwrap(); - f(a, Size::S32, Location::GPR(tmp), Location::GPR(out_tmp)); - a.emit_mov(Size::S32, Location::GPR(out_tmp), ret); - m.release_temp_gpr(out_tmp); - } else { - f(a, Size::S32, Location::GPR(tmp), ret); - } - m.release_temp_gpr(tmp); - } else { - if let Location::Memory(_, _) = ret { - let out_tmp = m.acquire_temp_gpr().unwrap(); - f(a, Size::S32, loc, Location::GPR(out_tmp)); - a.emit_mov(Size::S32, Location::GPR(out_tmp), ret); - m.release_temp_gpr(out_tmp); - } else { - f(a, Size::S32, loc, ret); - } - } - } - - fn get_param_location( - idx: usize - ) -> Location { - match idx { - 0 => Location::GPR(GPR::RDI), - 1 => Location::GPR(GPR::RSI), - 2 => Location::GPR(GPR::RDX), - 3 => Location::GPR(GPR::RCX), - 4 => Location::GPR(GPR::R8), - 5 => Location::GPR(GPR::R9), - _ => Location::Memory(GPR::RBP, (16 + (idx - 6) * 8) as i32), - } - } -} - -impl FunctionCodeGenerator for X64FunctionCode { - fn feed_return(&mut self, ty: WpType) -> Result<(), CodegenError> { - self.returns.push(ty); - Ok(()) - } - - fn feed_param(&mut self, ty: WpType) -> Result<(), CodegenError> { - // The first parameter location is reserved for vmctx. - self.locals.push(Self::get_param_location( - self.num_params + 1 - )); - self.num_params += 1; - Ok(()) - } - - fn feed_local(&mut self, ty: WpType, n: usize) -> Result<(), CodegenError> { - let a = self.assembler.as_mut().unwrap(); - self.machine.acquire_stack_locations(a, n, true); - Ok(()) - } - - fn begin_body(&mut self) -> Result<(), CodegenError> { - let a = self.assembler.as_mut().unwrap(); - self.control_stack.push(ControlFrame { - label: a.get_label(), - loop_like: false, - if_else: IfElseState::None, - returns: self.returns.clone(), - value_stack_depth: 0, - }); - Ok(()) - } - - fn finalize(&mut self) -> Result<(), CodegenError> { - let a = self.assembler.as_mut().unwrap(); - a.emit_ud2(); - Ok(()) - } - - fn feed_opcode(&mut self, op: Operator, module_info: &ModuleInfo) -> Result<(), CodegenError> { - let was_unreachable; - - if self.unreachable_depth > 0 { - was_unreachable = true; - match op { - Operator::Block { .. } | Operator::Loop { .. } | Operator::If { .. } => { - self.unreachable_depth += 1; - } - Operator::End => { - self.unreachable_depth -= 1; - } - Operator::Else => { - // We are in a reachable true branch - if self.unreachable_depth == 1 { - if let Some(IfElseState::If(_)) = self - .control_stack - .last() - .map(|x| x.if_else) - { - self.unreachable_depth -= 1; - } - } - } - _ => {} - } - if self.unreachable_depth > 0 { - return Ok(()); - } - } else { - was_unreachable = false; - } - - let a = self.assembler.as_mut().unwrap(); - match op { - Operator::GetGlobal { global_index } => { - let mut global_index = global_index as usize; - let loc = self.machine.acquire_locations( - a, - &[type_to_wp_type( - module_info.globals[LocalGlobalIndex::new(global_index)] - .desc - .ty, - )], - false - )[0]; - self.value_stack.push((loc, LocalOrTemp::Temp)); - - let tmp = self.machine.acquire_temp_gpr().unwrap(); - - if global_index < module_info.imported_globals.len() { - a.emit_mov(Size::S64, Location::Memory(GPR::RDI, vm::Ctx::offset_imported_globals() as i32), Location::GPR(tmp)); - } else { - global_index -= module_info.imported_globals.len(); - assert!(global_index < module_info.globals.len()); - a.emit_mov(Size::S64, Location::Memory(GPR::RDI, vm::Ctx::offset_globals() as i32), Location::GPR(tmp)); - } - a.emit_mov(Size::S64, Location::Memory(tmp, (global_index as i32) * 8), Location::GPR(tmp)); - Self::emit_relaxed_binop( - a, &mut self.machine, Assembler::emit_mov, - Size::S64, Location::Memory(tmp, LocalGlobal::offset_data() as i32), loc - ); - - self.machine.release_temp_gpr(tmp); - } - Operator::SetGlobal { global_index } => { - let mut global_index = global_index as usize; - let (loc, local_or_temp) = self.value_stack.pop().unwrap(); - - let tmp = self.machine.acquire_temp_gpr().unwrap(); - - if global_index < module_info.imported_globals.len() { - a.emit_mov(Size::S64, Location::Memory(GPR::RDI, vm::Ctx::offset_imported_globals() as i32), Location::GPR(tmp)); - } else { - global_index -= module_info.imported_globals.len(); - assert!(global_index < module_info.globals.len()); - a.emit_mov(Size::S64, Location::Memory(GPR::RDI, vm::Ctx::offset_globals() as i32), Location::GPR(tmp)); - } - a.emit_mov(Size::S64, Location::Memory(tmp, (global_index as i32) * 8), Location::GPR(tmp)); - Self::emit_relaxed_binop( - a, &mut self.machine, Assembler::emit_mov, - Size::S64, loc, Location::Memory(tmp, LocalGlobal::offset_data() as i32) - ); - - self.machine.release_temp_gpr(tmp); - if local_or_temp == LocalOrTemp::Temp { - self.machine.release_locations(a, &[loc]); - } - } - Operator::GetLocal { local_index } => { - let local_index = local_index as usize; - self.value_stack.push((self.locals[local_index], LocalOrTemp::Local)); - } - Operator::SetLocal { local_index } => { - let local_index = local_index as usize; - let (loc, local_or_temp) = self.value_stack.pop().unwrap(); - - Self::emit_relaxed_binop( - a, &mut self.machine, Assembler::emit_mov, - Size::S64, loc, self.locals[local_index], - ); - if local_or_temp == LocalOrTemp::Temp { - self.machine.release_locations(a, &[loc]); - } - } - Operator::TeeLocal { local_index } => { - let local_index = local_index as usize; - let (loc, _) = *self.value_stack.last().unwrap(); - - Self::emit_relaxed_binop( - a, &mut self.machine, Assembler::emit_mov, - Size::S64, loc, self.locals[local_index], - ); - } - Operator::I32Const { value } => self.value_stack.push((Location::Imm32(value as u32), LocalOrTemp::Temp)), - Operator::I32Add => Self::emit_binop_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_add), - Operator::I32Sub => Self::emit_binop_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_sub), - Operator::I32Mul => Self::emit_binop_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_imul), - Operator::I32DivU => { - // We assume that RAX and RDX are temporary registers here. - let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; - a.emit_mov(Size::S32, loc_a, Location::GPR(GPR::RAX)); - a.emit_xor(Size::S32, Location::GPR(GPR::RDX), Location::GPR(GPR::RDX)); - a.emit_div(Size::S32, loc_b); - a.emit_mov(Size::S32, Location::GPR(GPR::RAX), ret); - } - Operator::I32DivS => { - // We assume that RAX and RDX are temporary registers here. - let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; - a.emit_mov(Size::S32, loc_a, Location::GPR(GPR::RAX)); - a.emit_xor(Size::S32, Location::GPR(GPR::RDX), Location::GPR(GPR::RDX)); - a.emit_idiv(Size::S32, loc_b); - a.emit_mov(Size::S32, Location::GPR(GPR::RAX), ret); - } - Operator::I32RemU => { - // We assume that RAX and RDX are temporary registers here. - let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; - a.emit_mov(Size::S32, loc_a, Location::GPR(GPR::RAX)); - a.emit_xor(Size::S32, Location::GPR(GPR::RDX), Location::GPR(GPR::RDX)); - a.emit_div(Size::S32, loc_b); - a.emit_mov(Size::S32, Location::GPR(GPR::RDX), ret); - } - Operator::I32RemS => { - // We assume that RAX and RDX are temporary registers here. - let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; - a.emit_mov(Size::S32, loc_a, Location::GPR(GPR::RAX)); - a.emit_xor(Size::S32, Location::GPR(GPR::RDX), Location::GPR(GPR::RDX)); - a.emit_idiv(Size::S32, loc_b); - a.emit_mov(Size::S32, Location::GPR(GPR::RDX), ret); - } - Operator::I32And => Self::emit_binop_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_and), - Operator::I32Or => Self::emit_binop_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_or), - Operator::I32Xor => Self::emit_binop_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_xor), - Operator::I32Eq => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::Equal), - Operator::I32Ne => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::NotEqual), - Operator::I32LtU => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::Below), - Operator::I32LeU => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::BelowEqual), - Operator::I32GtU => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::Above), - Operator::I32GeU => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::AboveEqual), - Operator::I32LtS => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::Less), - Operator::I32LeS => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::LessEqual), - Operator::I32GtS => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::Greater), - Operator::I32GeS => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::GreaterEqual), - Operator::I32Eqz => Self::emit_cmpop_i32_dynamic_b(a, &mut self.machine, &mut self.value_stack, Condition::Equal, Location::Imm32(0)), - Operator::I32Clz => Self::emit_xcnt_i32(a, &mut self.machine, &mut self.value_stack, Emitter::emit_lzcnt), - Operator::I32Ctz => Self::emit_xcnt_i32(a, &mut self.machine, &mut self.value_stack, Emitter::emit_tzcnt), - Operator::I32Popcnt => Self::emit_xcnt_i32(a, &mut self.machine, &mut self.value_stack, Emitter::emit_popcnt), - _ => unimplemented!() - } - - Ok(()) - } -} - -fn type_to_wp_type(ty: Type) -> WpType { - match ty { - Type::I32 => WpType::I32, - Type::I64 => WpType::I64, - Type::F32 => WpType::F32, - Type::F64 => WpType::F64, - } -} - -fn get_location_released(a: &mut Assembler, m: &mut Machine, (loc, lot): (Location, LocalOrTemp)) -> Location { - if lot == LocalOrTemp::Temp { - m.release_locations(a, &[loc]); - } - loc -} diff --git a/lib/dynasm-backend/src/emitter_x64.rs b/lib/dynasm-backend/src/emitter_x64.rs index adb05d8d5..9506597ec 100644 --- a/lib/dynasm-backend/src/emitter_x64.rs +++ b/lib/dynasm-backend/src/emitter_x64.rs @@ -91,6 +91,8 @@ pub trait Emitter { fn emit_shl(&mut self, sz: Size, src: Location, dst: Location); fn emit_shr(&mut self, sz: Size, src: Location, dst: Location); fn emit_sar(&mut self, sz: Size, src: Location, dst: Location); + fn emit_rol(&mut self, sz: Size, src: Location, dst: Location); + fn emit_ror(&mut self, sz: Size, src: Location, dst: Location); fn emit_and(&mut self, sz: Size, src: Location, dst: Location); fn emit_or(&mut self, sz: Size, src: Location, dst: Location); fn emit_lzcnt(&mut self, sz: Size, src: Location, dst: Location); @@ -98,6 +100,7 @@ pub trait Emitter { fn emit_popcnt(&mut self, sz: Size, src: Location, dst: Location); fn emit_ud2(&mut self); + fn emit_ret(&mut self); } macro_rules! unop_gpr { @@ -154,6 +157,20 @@ macro_rules! binop_imm32_gpr { }; } +macro_rules! binop_imm32_mem { + ($ins:ident, $assembler:tt, $sz:expr, $src:expr, $dst:expr, $otherwise:block) => { + match ($sz, $src, $dst) { + (Size::S32, Location::Imm32(src), Location::Memory(dst, disp)) => { + dynasm!($assembler ; $ins DWORD [Rq(dst as u8) + disp], src as i32); + }, + (Size::S64, Location::Imm32(src), Location::Memory(dst, disp)) => { + dynasm!($assembler ; $ins QWORD [Rq(dst as u8) + disp], src as i32); + }, + _ => $otherwise + } + }; +} + macro_rules! binop_imm64_gpr { ($ins:ident, $assembler:tt, $sz:expr, $src:expr, $dst:expr, $otherwise:block) => { match ($sz, $src, $dst) { @@ -211,13 +228,16 @@ macro_rules! binop_all_nofp { ($ins:ident, $assembler:tt, $sz:expr, $src:expr, $dst:expr, $otherwise:block) => { binop_imm32_gpr!( $ins, $assembler, $sz, $src, $dst, - {binop_gpr_gpr!( + {binop_imm32_mem!( $ins, $assembler, $sz, $src, $dst, - {binop_gpr_mem!( + {binop_gpr_gpr!( $ins, $assembler, $sz, $src, $dst, - {binop_mem_gpr!( + {binop_gpr_mem!( $ins, $assembler, $sz, $src, $dst, - $otherwise + {binop_mem_gpr!( + $ins, $assembler, $sz, $src, $dst, + $otherwise + )} )} )} )} @@ -367,7 +387,9 @@ impl Emitter for Assembler { } } fn emit_cmp(&mut self, sz: Size, left: Location, right: Location) { - binop_all_nofp!(cmp, self, sz, left, right, {unreachable!()}); + binop_all_nofp!(cmp, self, sz, left, right, { + panic!("{:?} {:?} {:?}", sz, left, right); + }); } fn emit_add(&mut self, sz: Size, src: Location, dst: Location) { binop_all_nofp!(add, self, sz, src, dst, {unreachable!()}); @@ -395,6 +417,12 @@ impl Emitter for Assembler { fn emit_sar(&mut self, sz: Size, src: Location, dst: Location) { binop_shift!(sar, self, sz, src, dst, { unreachable!() }); } + fn emit_rol(&mut self, sz: Size, src: Location, dst: Location) { + binop_shift!(rol, self, sz, src, dst, { unreachable!() }); + } + fn emit_ror(&mut self, sz: Size, src: Location, dst: Location) { + binop_shift!(ror, self, sz, src, dst, { unreachable!() }); + } fn emit_and(&mut self, sz: Size, src: Location, dst: Location) { binop_all_nofp!(and, self, sz, src, dst, {unreachable!()}); } @@ -420,4 +448,7 @@ impl Emitter for Assembler { fn emit_ud2(&mut self) { dynasm!(self ; ud2); } + fn emit_ret(&mut self) { + dynasm!(self ; ret); + } } \ No newline at end of file diff --git a/lib/dynasm-backend/src/lib.rs b/lib/dynasm-backend/src/lib.rs index b2c8aaf5a..22f5dc189 100644 --- a/lib/dynasm-backend/src/lib.rs +++ b/lib/dynasm-backend/src/lib.rs @@ -23,7 +23,7 @@ mod protect_unix; mod stack; mod emitter_x64; mod machine; -mod codegen_x64_v2; +mod codegen_x64_v1; use crate::codegen::{CodegenError, ModuleCodeGenerator}; use crate::parse::LoadError; diff --git a/lib/dynasm-backend/src/machine.rs b/lib/dynasm-backend/src/machine.rs index ce6ae4907..eaa90059a 100644 --- a/lib/dynasm-backend/src/machine.rs +++ b/lib/dynasm-backend/src/machine.rs @@ -25,15 +25,10 @@ impl Machine { pub fn pick_gpr(&self) -> Option { use GPR::*; static REGS: &'static [GPR] = &[ - RBX, RSI, RDI, R8, R9, - R10, - R11, - R12, - R13, ]; for r in REGS { if !self.used_gprs.contains(r) { @@ -52,8 +47,6 @@ impl Machine { RAX, RCX, RDX, - R14, - R15 ]; for r in REGS { if !self.used_gprs.contains(r) { @@ -148,7 +141,9 @@ impl Machine { ret.push(loc); } - assembler.emit_sub(Size::S64, Location::Imm32(delta_stack_offset as u32), Location::GPR(GPR::RSP)); + if delta_stack_offset != 0 { + assembler.emit_sub(Size::S64, Location::Imm32(delta_stack_offset as u32), Location::GPR(GPR::RSP)); + } if zeroed { for i in 0..n { assembler.emit_mov(Size::S64, Location::Imm32(0), ret[i]); @@ -198,7 +193,9 @@ impl Machine { ret.push(loc); } - assembler.emit_sub(Size::S64, Location::Imm32(delta_stack_offset as u32), Location::GPR(GPR::RSP)); + if delta_stack_offset != 0 { + assembler.emit_sub(Size::S64, Location::Imm32(delta_stack_offset as u32), Location::GPR(GPR::RSP)); + } if zeroed { for i in 0..tys.len() { assembler.emit_mov(Size::S64, Location::Imm32(0), ret[i]); @@ -238,6 +235,36 @@ impl Machine { } } - assembler.emit_add(Size::S64, Location::Imm32(delta_stack_offset as u32), Location::GPR(GPR::RSP)); + if delta_stack_offset != 0 { + assembler.emit_add(Size::S64, Location::Imm32(delta_stack_offset as u32), Location::GPR(GPR::RSP)); + } + } + + pub fn release_locations_keep_state( + &self, + assembler: &mut E, + locs: &[Location] + ) { + let mut delta_stack_offset: usize = 0; + + for loc in locs { + match *loc { + Location::Memory(GPR::RBP, x) => { + if x >= 0 { + unreachable!(); + } + let offset = (-x) as usize; + if offset != self.stack_offset.0 { + unreachable!(); + } + delta_stack_offset += 8; + }, + _ => {} + } + } + + if delta_stack_offset != 0 { + assembler.emit_add(Size::S64, Location::Imm32(delta_stack_offset as u32), Location::GPR(GPR::RSP)); + } } } From cf680e2a13477c34839080cd4e112fb102654f6d Mon Sep 17 00:00:00 2001 From: losfair Date: Mon, 1 Apr 2019 20:56:32 +0800 Subject: [PATCH 063/413] Relax 64-bit immediates. --- lib/dynasm-backend/src/codegen_x64.rs | 39 ++++++++++++++++++--------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index 1214530ef..dd7c08a17 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -451,38 +451,51 @@ impl ModuleCodeGenerator ( + fn emit_relaxed_binop( a: &mut Assembler, m: &mut Machine, - op: F, + op: fn(&mut Assembler, Size, Location, Location), sz: Size, src: Location, dst: Location, ) { - match (src, dst) { - (Location::Memory(_, _), Location::Memory(_, _)) => { + enum RelaxMode { + Direct, + SrcToGPR, + DstToGPR, + } + let mode = match (src, dst) { + (Location::Memory(_, _), Location::Memory(_, _)) => RelaxMode::SrcToGPR, + (_, Location::Imm32(_)) | (_, Location::Imm64(_)) => RelaxMode::DstToGPR, + (Location::Imm64(_), Location::Memory(_, _)) => RelaxMode::SrcToGPR, + (Location::Imm64(_), Location::GPR(_)) if (op as *const u8 != Assembler::emit_mov as *const u8) => RelaxMode::SrcToGPR, + _ => RelaxMode::Direct, + }; + + match mode { + RelaxMode::SrcToGPR => { let temp = m.acquire_temp_gpr().unwrap(); a.emit_mov(sz, src, Location::GPR(temp)); op(a, sz, Location::GPR(temp), dst); m.release_temp_gpr(temp); }, - (_, Location::Imm32(_)) => { + RelaxMode::DstToGPR => { let temp = m.acquire_temp_gpr().unwrap(); a.emit_mov(sz, dst, Location::GPR(temp)); op(a, sz, src, Location::GPR(temp)); m.release_temp_gpr(temp); - } - _ => { + }, + RelaxMode::Direct => { op(a, sz, src, dst); } } } - fn emit_binop_i32( + fn emit_binop_i32( a: &mut Assembler, m: &mut Machine, value_stack: &mut Vec<(Location, LocalOrTemp)>, - f: F, + f: fn(&mut Assembler, Size, Location, Location), ) { // Using Red Zone here. let loc_b = get_location_released(a, m, value_stack.pop().unwrap()); @@ -560,11 +573,11 @@ impl X64FunctionCode { Self::emit_cmpop_i32_dynamic_b(a, m, value_stack, c, loc_b); } - fn emit_xcnt_i32( + fn emit_xcnt_i32( a: &mut Assembler, m: &mut Machine, value_stack: &mut Vec<(Location, LocalOrTemp)>, - f: F, + f: fn(&mut Assembler, Size, Location, Location), ) { let loc = get_location_released(a, m, value_stack.pop().unwrap()); let ret = m.acquire_locations(a, &[WpType::I32], false)[0]; @@ -593,11 +606,11 @@ impl X64FunctionCode { value_stack.push((ret, LocalOrTemp::Temp)); } - fn emit_shift_i32( + fn emit_shift_i32( a: &mut Assembler, m: &mut Machine, value_stack: &mut Vec<(Location, LocalOrTemp)>, - f: F, + f: fn(&mut Assembler, Size, Location, Location), ) { let loc_b = get_location_released(a, m, value_stack.pop().unwrap()); let loc_a = get_location_released(a, m, value_stack.pop().unwrap()); From d2e12084a0abf5fe77f8e5682099b227a8e0cab0 Mon Sep 17 00:00:00 2001 From: losfair Date: Mon, 1 Apr 2019 23:49:46 +0800 Subject: [PATCH 064/413] 64-bit operators & bug fixes. --- lib/dynasm-backend/src/codegen_x64.rs | 326 +++++++++++++++++++++++--- lib/dynasm-backend/src/emitter_x64.rs | 68 ++++++ 2 files changed, 367 insertions(+), 27 deletions(-) diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index dd7c08a17..559f56723 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -451,6 +451,24 @@ impl ModuleCodeGenerator { + a.emit_mov(sz, loc, Location::GPR(GPR::RCX)); // must not be used during div (rax, rdx) + op(a, sz, Location::GPR(GPR::RCX)); + } + _ => { + op(a, sz, loc); + } + } + } + fn emit_relaxed_binop( a: &mut Assembler, m: &mut Machine, @@ -463,9 +481,11 @@ impl X64FunctionCode { Direct, SrcToGPR, DstToGPR, + BothToGPR, } let mode = match (src, dst) { (Location::Memory(_, _), Location::Memory(_, _)) => RelaxMode::SrcToGPR, + (Location::Imm64(_), Location::Imm64(_)) | (Location::Imm64(_), Location::Imm32(_)) => RelaxMode::BothToGPR, (_, Location::Imm32(_)) | (_, Location::Imm64(_)) => RelaxMode::DstToGPR, (Location::Imm64(_), Location::Memory(_, _)) => RelaxMode::SrcToGPR, (Location::Imm64(_), Location::GPR(_)) if (op as *const u8 != Assembler::emit_mov as *const u8) => RelaxMode::SrcToGPR, @@ -485,6 +505,15 @@ impl X64FunctionCode { op(a, sz, src, Location::GPR(temp)); m.release_temp_gpr(temp); }, + RelaxMode::BothToGPR => { + let temp_src = m.acquire_temp_gpr().unwrap(); + let temp_dst = m.acquire_temp_gpr().unwrap(); + a.emit_mov(sz, src, Location::GPR(temp_src)); + a.emit_mov(sz, dst, Location::GPR(temp_dst)); + op(a, sz, Location::GPR(temp_src), Location::GPR(temp_dst)); + m.release_temp_gpr(temp_dst); + m.release_temp_gpr(temp_src); + }, RelaxMode::Direct => { op(a, sz, src, dst); } @@ -527,6 +556,42 @@ impl X64FunctionCode { value_stack.push((ret, LocalOrTemp::Temp)); } + fn emit_binop_i64( + a: &mut Assembler, + m: &mut Machine, + value_stack: &mut Vec<(Location, LocalOrTemp)>, + f: fn(&mut Assembler, Size, Location, Location), + ) { + // Using Red Zone here. + let loc_b = get_location_released(a, m, value_stack.pop().unwrap()); + let loc_a = get_location_released(a, m, value_stack.pop().unwrap()); + let ret = m.acquire_locations(a, &[WpType::I64], false)[0]; + + if loc_a != ret { + let tmp = m.acquire_temp_gpr().unwrap(); + Self::emit_relaxed_binop( + a, m, Assembler::emit_mov, + Size::S64, loc_a, Location::GPR(tmp), + ); + Self::emit_relaxed_binop( + a, m, f, + Size::S64, loc_b, Location::GPR(tmp), + ); + Self::emit_relaxed_binop( + a, m, Assembler::emit_mov, + Size::S64, Location::GPR(tmp), ret, + ); + m.release_temp_gpr(tmp); + } else { + Self::emit_relaxed_binop( + a, m, f, + Size::S64, loc_b, ret, + ); + } + + value_stack.push((ret, LocalOrTemp::Temp)); + } + fn emit_cmpop_i32_dynamic_b( a: &mut Assembler, m: &mut Machine, @@ -573,6 +638,52 @@ impl X64FunctionCode { Self::emit_cmpop_i32_dynamic_b(a, m, value_stack, c, loc_b); } + fn emit_cmpop_i64_dynamic_b( + a: &mut Assembler, + m: &mut Machine, + value_stack: &mut Vec<(Location, LocalOrTemp)>, + c: Condition, + loc_b: Location, + ) { + // Using Red Zone here. + let loc_a = get_location_released(a, m, value_stack.pop().unwrap()); + + let ret = m.acquire_locations(a, &[WpType::I32], false)[0]; + match ret { + Location::GPR(x) => { + Self::emit_relaxed_binop( + a, m, Assembler::emit_cmp, + Size::S64, loc_b, loc_a, + ); + a.emit_set(c, x); + a.emit_and(Size::S32, Location::Imm32(0xff), Location::GPR(x)); + }, + Location::Memory(_, _) => { + let tmp = m.acquire_temp_gpr().unwrap(); + Self::emit_relaxed_binop( + a, m, Assembler::emit_cmp, + Size::S64, loc_b, loc_a, + ); + a.emit_set(c, tmp); + a.emit_and(Size::S32, Location::Imm32(0xff), Location::GPR(tmp)); + a.emit_mov(Size::S32, Location::GPR(tmp), ret); + m.release_temp_gpr(tmp); + }, + _ => unreachable!() + } + value_stack.push((ret, LocalOrTemp::Temp)); + } + + fn emit_cmpop_i64( + a: &mut Assembler, + m: &mut Machine, + value_stack: &mut Vec<(Location, LocalOrTemp)>, + c: Condition, + ) { + let loc_b = get_location_released(a, m, value_stack.pop().unwrap()); + Self::emit_cmpop_i64_dynamic_b(a, m, value_stack, c, loc_b); + } + fn emit_xcnt_i32( a: &mut Assembler, m: &mut Machine, @@ -581,27 +692,70 @@ impl X64FunctionCode { ) { let loc = get_location_released(a, m, value_stack.pop().unwrap()); let ret = m.acquire_locations(a, &[WpType::I32], false)[0]; - if let Location::Imm32(x) = loc { - let tmp = m.acquire_temp_gpr().unwrap(); - a.emit_mov(Size::S32, loc, Location::GPR(tmp)); - if let Location::Memory(_, _) = ret { - let out_tmp = m.acquire_temp_gpr().unwrap(); - f(a, Size::S32, Location::GPR(tmp), Location::GPR(out_tmp)); - a.emit_mov(Size::S32, Location::GPR(out_tmp), ret); - m.release_temp_gpr(out_tmp); - } else { - f(a, Size::S32, Location::GPR(tmp), ret); - } - m.release_temp_gpr(tmp); - } else { - if let Location::Memory(_, _) = ret { - let out_tmp = m.acquire_temp_gpr().unwrap(); - f(a, Size::S32, loc, Location::GPR(out_tmp)); - a.emit_mov(Size::S32, Location::GPR(out_tmp), ret); - m.release_temp_gpr(out_tmp); - } else { - f(a, Size::S32, loc, ret); - } + + match loc { + Location::Imm32(_) => { + let tmp = m.acquire_temp_gpr().unwrap(); + a.emit_mov(Size::S32, loc, Location::GPR(tmp)); + if let Location::Memory(_, _) = ret { + let out_tmp = m.acquire_temp_gpr().unwrap(); + f(a, Size::S32, Location::GPR(tmp), Location::GPR(out_tmp)); + a.emit_mov(Size::S32, Location::GPR(out_tmp), ret); + m.release_temp_gpr(out_tmp); + } else { + f(a, Size::S32, Location::GPR(tmp), ret); + } + m.release_temp_gpr(tmp); + }, + Location::Memory(_, _) | Location::GPR(_) => { + if let Location::Memory(_, _) = ret { + let out_tmp = m.acquire_temp_gpr().unwrap(); + f(a, Size::S32, loc, Location::GPR(out_tmp)); + a.emit_mov(Size::S32, Location::GPR(out_tmp), ret); + m.release_temp_gpr(out_tmp); + } else { + f(a, Size::S32, loc, ret); + } + }, + _ => unreachable!(), + } + value_stack.push((ret, LocalOrTemp::Temp)); + } + + fn emit_xcnt_i64( + a: &mut Assembler, + m: &mut Machine, + value_stack: &mut Vec<(Location, LocalOrTemp)>, + f: fn(&mut Assembler, Size, Location, Location), + ) { + let loc = get_location_released(a, m, value_stack.pop().unwrap()); + let ret = m.acquire_locations(a, &[WpType::I64], false)[0]; + + match loc { + Location::Imm64(_) | Location::Imm32(_) => { + let tmp = m.acquire_temp_gpr().unwrap(); + a.emit_mov(Size::S64, loc, Location::GPR(tmp)); + if let Location::Memory(_, _) = ret { + let out_tmp = m.acquire_temp_gpr().unwrap(); + f(a, Size::S64, Location::GPR(tmp), Location::GPR(out_tmp)); + a.emit_mov(Size::S64, Location::GPR(out_tmp), ret); + m.release_temp_gpr(out_tmp); + } else { + f(a, Size::S64, Location::GPR(tmp), ret); + } + m.release_temp_gpr(tmp); + }, + Location::Memory(_, _) | Location::GPR(_) => { + if let Location::Memory(_, _) = ret { + let out_tmp = m.acquire_temp_gpr().unwrap(); + f(a, Size::S64, loc, Location::GPR(out_tmp)); + a.emit_mov(Size::S64, Location::GPR(out_tmp), ret); + m.release_temp_gpr(out_tmp); + } else { + f(a, Size::S64, loc, ret); + } + }, + _ => unreachable!(), } value_stack.push((ret, LocalOrTemp::Temp)); } @@ -629,6 +783,29 @@ impl X64FunctionCode { value_stack.push((ret, LocalOrTemp::Temp)); } + fn emit_shift_i64( + a: &mut Assembler, + m: &mut Machine, + value_stack: &mut Vec<(Location, LocalOrTemp)>, + f: fn(&mut Assembler, Size, Location, Location), + ) { + let loc_b = get_location_released(a, m, value_stack.pop().unwrap()); + let loc_a = get_location_released(a, m, value_stack.pop().unwrap()); + let ret = m.acquire_locations(a, &[WpType::I64], false)[0]; + + a.emit_mov(Size::S32, loc_b, Location::GPR(GPR::RCX)); + + if loc_a != ret { + Self::emit_relaxed_binop( + a, m, Assembler::emit_mov, + Size::S64, loc_a, ret + ); + } + + f(a, Size::S64, Location::GPR(GPR::RCX), ret); + value_stack.push((ret, LocalOrTemp::Temp)); + } + fn get_param_location( idx: usize ) -> Location { @@ -814,7 +991,7 @@ impl FunctionCodeGenerator for X64FunctionCode { let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; a.emit_mov(Size::S32, loc_a, Location::GPR(GPR::RAX)); a.emit_xor(Size::S32, Location::GPR(GPR::RDX), Location::GPR(GPR::RDX)); - a.emit_div(Size::S32, loc_b); + Self::emit_relaxed_xdiv(a, &mut self.machine, Assembler::emit_div, Size::S32, loc_b); a.emit_mov(Size::S32, Location::GPR(GPR::RAX), ret); self.value_stack.push((ret, LocalOrTemp::Temp)); } @@ -825,7 +1002,7 @@ impl FunctionCodeGenerator for X64FunctionCode { let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; a.emit_mov(Size::S32, loc_a, Location::GPR(GPR::RAX)); a.emit_xor(Size::S32, Location::GPR(GPR::RDX), Location::GPR(GPR::RDX)); - a.emit_idiv(Size::S32, loc_b); + Self::emit_relaxed_xdiv(a, &mut self.machine, Assembler::emit_idiv, Size::S32, loc_b); a.emit_mov(Size::S32, Location::GPR(GPR::RAX), ret); self.value_stack.push((ret, LocalOrTemp::Temp)); } @@ -873,6 +1050,101 @@ impl FunctionCodeGenerator for X64FunctionCode { Operator::I32LeS => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::LessEqual), Operator::I32GtS => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::Greater), Operator::I32GeS => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::GreaterEqual), + Operator::I64Const { value } => { + let value = value as u64; + if value <= ::std::u32::MAX as u64 { + self.value_stack.push((Location::Imm32(value as u32), LocalOrTemp::Temp)) + } else { + self.value_stack.push((Location::Imm64(value), LocalOrTemp::Temp)) + } + }, + Operator::I64Add => Self::emit_binop_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_add), + Operator::I64Sub => Self::emit_binop_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_sub), + Operator::I64Mul => Self::emit_binop_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_imul), + Operator::I64DivU => { + // We assume that RAX and RDX are temporary registers here. + let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; + a.emit_mov(Size::S64, loc_a, Location::GPR(GPR::RAX)); + a.emit_xor(Size::S64, Location::GPR(GPR::RDX), Location::GPR(GPR::RDX)); + Self::emit_relaxed_xdiv(a, &mut self.machine, Assembler::emit_div, Size::S64, loc_b); + a.emit_mov(Size::S64, Location::GPR(GPR::RAX), ret); + self.value_stack.push((ret, LocalOrTemp::Temp)); + } + Operator::I64DivS => { + // We assume that RAX and RDX are temporary registers here. + let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; + a.emit_mov(Size::S64, loc_a, Location::GPR(GPR::RAX)); + a.emit_xor(Size::S64, Location::GPR(GPR::RDX), Location::GPR(GPR::RDX)); + Self::emit_relaxed_xdiv(a, &mut self.machine, Assembler::emit_idiv, Size::S64, loc_b); + a.emit_mov(Size::S64, Location::GPR(GPR::RAX), ret); + self.value_stack.push((ret, LocalOrTemp::Temp)); + } + Operator::I64RemU => { + // We assume that RAX and RDX are temporary registers here. + let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; + a.emit_mov(Size::S64, loc_a, Location::GPR(GPR::RAX)); + a.emit_xor(Size::S64, Location::GPR(GPR::RDX), Location::GPR(GPR::RDX)); + a.emit_div(Size::S64, loc_b); + a.emit_mov(Size::S64, Location::GPR(GPR::RDX), ret); + self.value_stack.push((ret, LocalOrTemp::Temp)); + } + Operator::I64RemS => { + // We assume that RAX and RDX are temporary registers here. + let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; + a.emit_mov(Size::S64, loc_a, Location::GPR(GPR::RAX)); + a.emit_xor(Size::S64, Location::GPR(GPR::RDX), Location::GPR(GPR::RDX)); + a.emit_idiv(Size::S64, loc_b); + a.emit_mov(Size::S64, Location::GPR(GPR::RDX), ret); + self.value_stack.push((ret, LocalOrTemp::Temp)); + } + Operator::I64And => Self::emit_binop_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_and), + Operator::I64Or => Self::emit_binop_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_or), + Operator::I64Xor => Self::emit_binop_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_xor), + Operator::I64Eq => Self::emit_cmpop_i64(a, &mut self.machine, &mut self.value_stack, Condition::Equal), + Operator::I64Ne => Self::emit_cmpop_i64(a, &mut self.machine, &mut self.value_stack, Condition::NotEqual), + Operator::I64Eqz => Self::emit_cmpop_i64_dynamic_b(a, &mut self.machine, &mut self.value_stack, Condition::Equal, Location::Imm64(0)), + Operator::I64Clz => Self::emit_xcnt_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_lzcnt), + Operator::I64Ctz => Self::emit_xcnt_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_tzcnt), + Operator::I64Popcnt => Self::emit_xcnt_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_popcnt), + Operator::I64Shl => Self::emit_shift_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_shl), + Operator::I64ShrU => Self::emit_shift_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_sar), + Operator::I64ShrS => Self::emit_shift_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_shr), + Operator::I64Rotl => Self::emit_shift_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_rol), + Operator::I64Rotr => Self::emit_shift_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_ror), + Operator::I64LtU => Self::emit_cmpop_i64(a, &mut self.machine, &mut self.value_stack, Condition::Below), + Operator::I64LeU => Self::emit_cmpop_i64(a, &mut self.machine, &mut self.value_stack, Condition::BelowEqual), + Operator::I64GtU => Self::emit_cmpop_i64(a, &mut self.machine, &mut self.value_stack, Condition::Above), + Operator::I64GeU => Self::emit_cmpop_i64(a, &mut self.machine, &mut self.value_stack, Condition::AboveEqual), + Operator::I64LtS => Self::emit_cmpop_i64(a, &mut self.machine, &mut self.value_stack, Condition::Less), + Operator::I64LeS => Self::emit_cmpop_i64(a, &mut self.machine, &mut self.value_stack, Condition::LessEqual), + Operator::I64GtS => Self::emit_cmpop_i64(a, &mut self.machine, &mut self.value_stack, Condition::Greater), + Operator::I64GeS => Self::emit_cmpop_i64(a, &mut self.machine, &mut self.value_stack, Condition::GreaterEqual), + Operator::I64ExtendUI32 => { + let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + Self::emit_relaxed_binop( + a, &mut self.machine, Assembler::emit_mov, + Size::S32, loc, ret, + ); + } + Operator::I32WrapI64 => { + let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + Self::emit_relaxed_binop( + a, &mut self.machine, Assembler::emit_mov, + Size::S32, loc, ret, + ); + } Operator::If { ty } => { let label_end = a.get_label(); let label_else = a.get_label(); @@ -898,7 +1170,7 @@ impl FunctionCodeGenerator for X64FunctionCode { } Operator::Else => { let mut frame = self.control_stack.last_mut().unwrap(); - let released: Vec = self.value_stack.drain(..frame.value_stack_depth) + let released: Vec = self.value_stack.drain(frame.value_stack_depth..) .filter(|&(_, lot)| lot == LocalOrTemp::Temp) .map(|(x, _)| x) .collect(); @@ -971,7 +1243,7 @@ impl FunctionCodeGenerator for X64FunctionCode { } else { false }; - let released: Vec = self.value_stack.drain(..frame.value_stack_depth) + let released: Vec = self.value_stack.drain(frame.value_stack_depth..) .filter(|&(_, lot)| lot == LocalOrTemp::Temp) .map(|(x, _)| x) .collect(); @@ -989,7 +1261,7 @@ impl FunctionCodeGenerator for X64FunctionCode { } else { false }; - let released: Vec = self.value_stack.drain(..frame.value_stack_depth) + let released: Vec = self.value_stack.drain(frame.value_stack_depth..) .filter(|&(_, lot)| lot == LocalOrTemp::Temp) .map(|(x, _)| x) .collect(); @@ -1036,7 +1308,7 @@ impl FunctionCodeGenerator for X64FunctionCode { a.emit_pop(Size::S64, Location::GPR(GPR::RBP)); a.emit_ret(); } else { - let released: Vec = self.value_stack.drain(..frame.value_stack_depth) + let released: Vec = self.value_stack.drain(frame.value_stack_depth..) .filter(|&(_, lot)| lot == LocalOrTemp::Temp) .map(|(x, _)| x) .collect(); diff --git a/lib/dynasm-backend/src/emitter_x64.rs b/lib/dynasm-backend/src/emitter_x64.rs index 9506597ec..54081c84f 100644 --- a/lib/dynasm-backend/src/emitter_x64.rs +++ b/lib/dynasm-backend/src/emitter_x64.rs @@ -63,6 +63,8 @@ pub enum Condition { #[derive(Copy, Clone, Debug, Eq, PartialEq)] pub enum Size { + S8, + S16, S32, S64, } @@ -98,6 +100,8 @@ pub trait Emitter { fn emit_lzcnt(&mut self, sz: Size, src: Location, dst: Location); fn emit_tzcnt(&mut self, sz: Size, src: Location, dst: Location); fn emit_popcnt(&mut self, sz: Size, src: Location, dst: Location); + fn emit_movzx(&mut self, sz_src: Size, src: Location, sz_dst: Size, dst: Location); + fn emit_movsx(&mut self, sz_src: Size, src: Location, sz_dst: Size, dst: Location); fn emit_ud2(&mut self); fn emit_ret(&mut self); @@ -444,6 +448,70 @@ impl Emitter for Assembler { binop_mem_gpr!(popcnt, self, sz, src, dst, {unreachable!()}) }); } + fn emit_movzx(&mut self, sz_src: Size, src: Location, sz_dst: Size, dst: Location) { + match (sz_src, src, sz_dst, dst) { + (Size::S8, Location::GPR(src), Size::S32, Location::GPR(dst)) => { + dynasm!(self ; movzx Rd(dst as u8), Rb(src as u8)); + }, + (Size::S16, Location::GPR(src), Size::S32, Location::GPR(dst)) => { + dynasm!(self ; movzx Rd(dst as u8), Rw(src as u8)); + }, + (Size::S8, Location::Memory(src, disp), Size::S32, Location::GPR(dst)) => { + dynasm!(self ; movzx Rd(dst as u8), BYTE [Rq(src as u8) + disp]); + }, + (Size::S16, Location::Memory(src, disp), Size::S32, Location::GPR(dst)) => { + dynasm!(self ; movzx Rd(dst as u8), WORD [Rq(src as u8) + disp]); + }, + (Size::S8, Location::GPR(src), Size::S64, Location::GPR(dst)) => { + dynasm!(self ; movzx Rq(dst as u8), Rb(src as u8)); + }, + (Size::S16, Location::GPR(src), Size::S64, Location::GPR(dst)) => { + dynasm!(self ; movzx Rq(dst as u8), Rw(src as u8)); + }, + (Size::S8, Location::Memory(src, disp), Size::S64, Location::GPR(dst)) => { + dynasm!(self ; movzx Rq(dst as u8), BYTE [Rq(src as u8) + disp]); + }, + (Size::S16, Location::Memory(src, disp), Size::S64, Location::GPR(dst)) => { + dynasm!(self ; movzx Rq(dst as u8), WORD [Rq(src as u8) + disp]); + }, + _ => unreachable!(), + } + } + fn emit_movsx(&mut self, sz_src: Size, src: Location, sz_dst: Size, dst: Location) { + match (sz_src, src, sz_dst, dst) { + (Size::S8, Location::GPR(src), Size::S32, Location::GPR(dst)) => { + dynasm!(self ; movsx Rd(dst as u8), Rb(src as u8)); + }, + (Size::S16, Location::GPR(src), Size::S32, Location::GPR(dst)) => { + dynasm!(self ; movsx Rd(dst as u8), Rw(src as u8)); + }, + (Size::S8, Location::Memory(src, disp), Size::S32, Location::GPR(dst)) => { + dynasm!(self ; movsx Rd(dst as u8), BYTE [Rq(src as u8) + disp]); + }, + (Size::S16, Location::Memory(src, disp), Size::S32, Location::GPR(dst)) => { + dynasm!(self ; movsx Rd(dst as u8), WORD [Rq(src as u8) + disp]); + }, + (Size::S8, Location::GPR(src), Size::S64, Location::GPR(dst)) => { + dynasm!(self ; movsx Rq(dst as u8), Rb(src as u8)); + }, + (Size::S16, Location::GPR(src), Size::S64, Location::GPR(dst)) => { + dynasm!(self ; movsx Rq(dst as u8), Rw(src as u8)); + }, + (Size::S32, Location::GPR(src), Size::S64, Location::GPR(dst)) => { + dynasm!(self ; movsx Rq(dst as u8), Rd(src as u8)); + }, + (Size::S8, Location::Memory(src, disp), Size::S64, Location::GPR(dst)) => { + dynasm!(self ; movsx Rq(dst as u8), BYTE [Rq(src as u8) + disp]); + }, + (Size::S16, Location::Memory(src, disp), Size::S64, Location::GPR(dst)) => { + dynasm!(self ; movsx Rq(dst as u8), WORD [Rq(src as u8) + disp]); + }, + (Size::S32, Location::Memory(src, disp), Size::S64, Location::GPR(dst)) => { + dynasm!(self ; movsx Rq(dst as u8), DWORD [Rq(src as u8) + disp]); + }, + _ => unreachable!(), + } + } fn emit_ud2(&mut self) { dynasm!(self ; ud2); From 13c5446c5567fbb790842962ea91087639e3af7a Mon Sep 17 00:00:00 2001 From: losfair Date: Tue, 2 Apr 2019 00:11:01 +0800 Subject: [PATCH 065/413] Loop & bug fixes --- lib/dynasm-backend/src/codegen_x64.rs | 37 ++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index 559f56723..1cd7a75d4 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -1229,6 +1229,21 @@ impl FunctionCodeGenerator for X64FunctionCode { value_stack_depth: self.value_stack.len(), }); } + Operator::Loop { ty } => { + let label = a.get_label(); + self.control_stack + .push(ControlFrame { + label: label, + loop_like: true, + if_else: IfElseState::None, + returns: match ty { + WpType::EmptyBlockType => vec![], + _ => vec![ty], + }, + value_stack_depth: self.value_stack.len(), + }); + a.emit_label(label); + } Operator::Unreachable => { a.emit_ud2(); self.unreachable_depth = 1; @@ -1253,7 +1268,7 @@ impl FunctionCodeGenerator for X64FunctionCode { } Operator::Br { relative_depth } => { let frame = &self.control_stack[self.control_stack.len() - 1 - (relative_depth as usize)]; - let has_return = if frame.returns.len() > 0 { + let has_return = if !frame.loop_like && frame.returns.len() > 0 { assert_eq!(frame.returns.len(), 1); let (loc, _) = *self.value_stack.last().unwrap(); a.emit_mov(Size::S64, loc, Location::GPR(GPR::RAX)); @@ -1276,10 +1291,13 @@ impl FunctionCodeGenerator for X64FunctionCode { a.emit_jmp(Condition::Equal, after); let frame = &self.control_stack[self.control_stack.len() - 1 - (relative_depth as usize)]; - let has_return = if frame.returns.len() > 0 { + let has_return = if !frame.loop_like && frame.returns.len() > 0 { assert_eq!(frame.returns.len(), 1); let (loc, _) = *self.value_stack.last().unwrap(); - a.emit_mov(Size::S64, loc, Location::GPR(GPR::RAX)); + Self::emit_relaxed_binop( + a, &mut self.machine, Assembler::emit_mov, + Size::S64, loc, Location::GPR(GPR::RAX), + ); true } else { false @@ -1298,11 +1316,16 @@ impl FunctionCodeGenerator for X64FunctionCode { } Operator::End => { let frame = self.control_stack.pop().unwrap(); + + if !was_unreachable && frame.returns.len() > 0 { + let (loc, _) = *self.value_stack.last().unwrap(); + Self::emit_relaxed_binop( + a, &mut self.machine, Assembler::emit_mov, + Size::S64, loc, Location::GPR(GPR::RAX), + ); + } + if self.control_stack.len() == 0 { - if !was_unreachable && self.returns.len() > 0 { - let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - a.emit_mov(Size::S64, loc, Location::GPR(GPR::RAX)); - } a.emit_label(frame.label); a.emit_mov(Size::S64, Location::GPR(GPR::RBP), Location::GPR(GPR::RSP)); a.emit_pop(Size::S64, Location::GPR(GPR::RBP)); From 4451a0f35c167cbd20433dbae950515bac9b680f Mon Sep 17 00:00:00 2001 From: losfair Date: Tue, 2 Apr 2019 00:17:38 +0800 Subject: [PATCH 066/413] Update single_pass_tests/loop to check output value. --- examples/single_pass_tests/loop.wat | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/examples/single_pass_tests/loop.wat b/examples/single_pass_tests/loop.wat index dfdc1b1d5..4d7c7eac8 100644 --- a/examples/single_pass_tests/loop.wat +++ b/examples/single_pass_tests/loop.wat @@ -1,5 +1,5 @@ (module - (func $main (export "main") (result i32) + (func $main (export "main") (local $count i32) (local $sum i32) (loop (result i32) @@ -7,10 +7,11 @@ (set_local $sum (i32.add (get_local $sum) (get_local $count))) (i32.sub (i32.const 1) (i32.eq (get_local $count) - (i32.const 100000) + (i32.const 50000) )) (br_if 0) (get_local $sum) ) + (if (i32.ne (i32.const 1250025000)) (unreachable)) ) ) From 1179b8a20f952612ad05915f9153333639d4dfc1 Mon Sep 17 00:00:00 2001 From: losfair Date: Tue, 2 Apr 2019 00:17:52 +0800 Subject: [PATCH 067/413] Fix Operator::Br. --- lib/dynasm-backend/src/codegen_x64.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index 1cd7a75d4..479b3dd6d 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -1276,11 +1276,11 @@ impl FunctionCodeGenerator for X64FunctionCode { } else { false }; - let released: Vec = self.value_stack.drain(frame.value_stack_depth..) - .filter(|&(_, lot)| lot == LocalOrTemp::Temp) - .map(|(x, _)| x) + let released: Vec = self.value_stack[frame.value_stack_depth..].iter() + .filter(|&&(_, lot)| lot == LocalOrTemp::Temp) + .map(|&(x, _)| x) .collect(); - self.machine.release_locations(a, &released); + self.machine.release_locations_keep_state(a, &released); a.emit_jmp(Condition::None, frame.label); self.unreachable_depth = 1; } From 84e5a0c8eb635d5cc64c4e8541f02b55f67fe045 Mon Sep 17 00:00:00 2001 From: losfair Date: Tue, 2 Apr 2019 01:16:37 +0800 Subject: [PATCH 068/413] Call --- lib/dynasm-backend/src/codegen_x64.rs | 81 ++++++++++++++++++++++++++- lib/dynasm-backend/src/emitter_x64.rs | 5 ++ lib/dynasm-backend/src/machine.rs | 8 +++ 3 files changed, 92 insertions(+), 2 deletions(-) diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index 479b3dd6d..56138987f 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -1145,6 +1145,68 @@ impl FunctionCodeGenerator for X64FunctionCode { Size::S32, loc, ret, ); } + Operator::Call { function_index } => { + let function_index = function_index as usize; + let label = self + .function_labels + .as_mut() + .unwrap() + .entry(function_index) + .or_insert_with(|| (a.get_label(), None)) + .0; + let sig_index = *self.function_signatures.get(FuncIndex::new(function_index)).unwrap(); + let sig = self.signatures.get(sig_index).unwrap(); + let param_types: Vec = + sig.params().iter().cloned().map(type_to_wp_type).collect(); + let return_types: Vec = + sig.returns().iter().cloned().map(type_to_wp_type).collect(); + + let params = &self.value_stack[self.value_stack.len() - param_types.len()..]; + + let used_gprs = self.machine.get_used_gprs(); + for r in used_gprs.iter() { + a.emit_push(Size::S64, Location::GPR(*r)); + } + + let mut stack_offset: usize = 0; + + for i in (0..param_types.len()).rev() { + a.emit_push(Size::S64, params[i].0); + stack_offset += 8; + } + + for i in 0..param_types.len() { + let loc = Self::get_param_location(1 + i); + match loc { + Location::GPR(_) => { + a.emit_pop(Size::S64, loc); + stack_offset -= 8; + }, + _ => break + } + } + + a.emit_mov(Size::S64, Location::Memory(GPR::RBP, -8), Self::get_param_location(0)); // vmctx + a.emit_call_label(label); + + if stack_offset > 0 { + a.emit_add(Size::S64, Location::Imm32(stack_offset as u32), Location::GPR(GPR::RSP)); + } + + for r in used_gprs.iter().rev() { + a.emit_pop(Size::S64, Location::GPR(*r)); + } + + let released: Vec = self.value_stack.drain(self.value_stack.len() - param_types.len()..) + .filter(|&(_, lot)| lot == LocalOrTemp::Temp) + .map(|(x, _)| x) + .collect(); + self.machine.release_locations(a, &released); + + let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + a.emit_mov(Size::S64, Location::GPR(GPR::RAX), ret); + } Operator::If { ty } => { let label_end = a.get_label(); let label_else = a.get_label(); @@ -1170,6 +1232,15 @@ impl FunctionCodeGenerator for X64FunctionCode { } Operator::Else => { let mut frame = self.control_stack.last_mut().unwrap(); + + if frame.returns.len() > 0 { + let (loc, _) = *self.value_stack.last().unwrap(); + Self::emit_relaxed_binop( + a, &mut self.machine, Assembler::emit_mov, + Size::S64, loc, Location::GPR(GPR::RAX), + ); + } + let released: Vec = self.value_stack.drain(frame.value_stack_depth..) .filter(|&(_, lot)| lot == LocalOrTemp::Temp) .map(|(x, _)| x) @@ -1253,7 +1324,10 @@ impl FunctionCodeGenerator for X64FunctionCode { let has_return = if frame.returns.len() > 0 { assert_eq!(frame.returns.len(), 1); let (loc, _) = *self.value_stack.last().unwrap(); - a.emit_mov(Size::S64, loc, Location::GPR(GPR::RAX)); + Self::emit_relaxed_binop( + a, &mut self.machine, Assembler::emit_mov, + Size::S64, loc, Location::GPR(GPR::RAX), + ); true } else { false @@ -1271,7 +1345,10 @@ impl FunctionCodeGenerator for X64FunctionCode { let has_return = if !frame.loop_like && frame.returns.len() > 0 { assert_eq!(frame.returns.len(), 1); let (loc, _) = *self.value_stack.last().unwrap(); - a.emit_mov(Size::S64, loc, Location::GPR(GPR::RAX)); + Self::emit_relaxed_binop( + a, &mut self.machine, Assembler::emit_mov, + Size::S64, loc, Location::GPR(GPR::RAX), + ); true } else { false diff --git a/lib/dynasm-backend/src/emitter_x64.rs b/lib/dynasm-backend/src/emitter_x64.rs index 54081c84f..39bc264f6 100644 --- a/lib/dynasm-backend/src/emitter_x64.rs +++ b/lib/dynasm-backend/src/emitter_x64.rs @@ -105,6 +105,7 @@ pub trait Emitter { fn emit_ud2(&mut self); fn emit_ret(&mut self); + fn emit_call_label(&mut self, label: Self::Label); } macro_rules! unop_gpr { @@ -519,4 +520,8 @@ impl Emitter for Assembler { fn emit_ret(&mut self) { dynasm!(self ; ret); } + + fn emit_call_label(&mut self, label: Self::Label) { + dynasm!(self ; call =>label); + } } \ No newline at end of file diff --git a/lib/dynasm-backend/src/machine.rs b/lib/dynasm-backend/src/machine.rs index eaa90059a..be4275775 100644 --- a/lib/dynasm-backend/src/machine.rs +++ b/lib/dynasm-backend/src/machine.rs @@ -19,6 +19,14 @@ impl Machine { } } + pub fn get_used_gprs(&self) -> Vec { + self.used_gprs.iter().cloned().collect() + } + + pub fn get_used_xmms(&self) -> Vec { + self.used_xmms.iter().cloned().collect() + } + /// Picks an unused general purpose register for local/stack/argument use. /// /// This method does not mark the register as used. From 7addd920dff8b30be48e4708546a9a0af320529e Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 1 Apr 2019 12:11:11 -0700 Subject: [PATCH 069/413] add more stubs for fs calls --- lib/wasi/src/syscalls/mod.rs | 102 +++++++++++++++++++++++++++++++-- lib/wasi/src/syscalls/types.rs | 19 ++++++ 2 files changed, 117 insertions(+), 4 deletions(-) diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 3e3dd3e8b..a0bb8d780 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -197,9 +197,27 @@ pub fn fd_allocate( ) -> __wasi_errno_t { unimplemented!() } + +/// ### `fd_close()` +/// Close an open file descriptor +/// Inputs: +/// - `__wasi_fd_t fd` +/// A file descriptor mapping to an open file to close +/// Errors: +/// - `__WASI_EISDIR` +/// If `fd` is a directory +/// - `__WASI_EBADF` +/// If `fd` is invalid or not open (TODO: consider __WASI_EINVAL) pub fn fd_close(ctx: &mut Ctx, fd: __wasi_fd_t) -> __wasi_errno_t { - unimplemented!() + // FD is too large + return __WASI_EMFILE; + // FD is a directory (due to user input) + return __WASI_EISDIR; + // FD is invalid + return __WASI_EBADF; + __WASI_ESUCCESS } + pub fn fd_datasync(ctx: &mut Ctx, fd: __wasi_fd_t) -> __wasi_errno_t { unimplemented!() } @@ -293,7 +311,9 @@ pub fn fd_prestat_dir_name( let memory = ctx.memory(0); if let Some(path_chars) = path.deref(memory, 0, path_len) { - if true /* check if dir */ { + if true + /* check if dir */ + { // get name // write name // if overflow __WASI_EOVERFLOW @@ -357,6 +377,21 @@ pub fn fd_tell( ) -> __wasi_errno_t { unimplemented!() } + +/// ### `fd_write()` +/// Write data to the file descriptor +/// Inputs: +/// - `__wasi_fd_t` +/// File descriptor (opened with writing) to write to +/// - `const __wasi_ciovec_t *iovs` +/// List of vectors to read data from +/// - `u32 iovs_len` +/// Length of data in `iovs` +/// Output: +/// - `u32 *nwritten` +/// Number of bytes written +/// Errors: +/// pub fn fd_write( ctx: &mut Ctx, fd: __wasi_fd_t, @@ -364,8 +399,18 @@ pub fn fd_write( iovs_len: u32, nwritten: WasmPtr, ) -> __wasi_errno_t { - unimplemented!() + let memory = ctx.memory(0); + // TODO: check __WASI_RIGHT_FD_WRITE + // return __WASI_EISDIR if dir (probably) + if let (Some(iovs_arr_cell), Some(nwritten_cell)) = + (iovs.deref(memory, 0, iovs_len), nwritten.deref(memory)) + { + unimplemented!() + } else { + __WASI_EFAULT + } } + pub fn path_create_directory( ctx: &mut Ctx, fd: __wasi_fd_t, @@ -408,6 +453,31 @@ pub fn path_link( ) -> __wasi_errno_t { unimplemented!() } + +/// ### `path_open()` +/// Open file located at the given path +/// Inputs: +/// - `__wasi_fd_t dirfd` +/// The fd corresponding to the directory that the file is in +/// - `__wasi_lookupflags_t dirflags` +/// Flags specifying how the path will be resolved +/// - `char *path` +/// The path of the file or directory to open +/// - `u32 path_len` +/// The length of the `path` string +/// - `__wasi_oflags_t o_flags` +/// How the file will be opened +/// - `__wasi_rights_t fs_rights_base` +/// The rights of the created file descriptor +/// - `__wasi_rights_t fs_rightsinheriting` +/// The rights of file descriptors derived from the created file descriptor +/// - `__wasi_fdflags_t fs_flags` +/// The flags of the file descriptor +/// Output: +/// - `__wasi_fd_t* fd` +/// The new file descriptor +/// Possible Errors: +/// - `__WASI_EACCES`, `__WASI_EBADF`, `__WASI_EFAULT`, `__WASI_EFBIG?`, `__WASI_EINVAL`, `__WASI_EIO`, `__WASI_ELOOP`, `__WASI_EMFILE`, `__WASI_ENAMETOOLONG?`, `__WASI_ENFILE`, `__WASI_ENOENT`, `__WASI_ENOTDIR`, `__WASI_EROFS`, and `__WASI_ENOTCAPABLE` pub fn path_open( ctx: &mut Ctx, dirfd: __wasi_fd_t, @@ -420,8 +490,32 @@ pub fn path_open( fs_flags: __wasi_fdflags_t, fd: WasmPtr<__wasi_fd_t>, ) -> __wasi_errno_t { - unimplemented!() + let memory = ctx.memory(0); + if path_len > 1024 + /* TODO: find actual upper bound on name size (also this is a path, not a name :think-fish:) */ + { + return __WASI_ENAMETOOLONG; + } + + // check for __WASI_RIGHT_PATH_OPEN somewhere, probably via dirfd + + if let (Some(fd_cell), Some(path_cell)) = (fd.deref(memory), path.deref(memory, 0, path_len)) { + // o_flags: + // - __WASI_O_FLAG_CREAT (create if it does not exist) + // - __WASI_O_DIRECTORY (fail if not dir) + // - __WASI_O_EXCL (fail if file exists) + // - __WASI_O_TRUNC (truncate size to 0) + if (o_flags & __WASI_O_DIRECTORY) != 0 { + // fail if fd is not a dir + // need to check and be able to clean up + } + + unimplemented!(); + } else { + __WASI_EFAULT + } } + pub fn path_readlink( ctx: &mut Ctx, fd: __wasi_fd_t, diff --git a/lib/wasi/src/syscalls/types.rs b/lib/wasi/src/syscalls/types.rs index 368b2fe49..20d9d95fb 100644 --- a/lib/wasi/src/syscalls/types.rs +++ b/lib/wasi/src/syscalls/types.rs @@ -19,6 +19,25 @@ pub struct __wasi_ciovec_t { pub buf_len: u32, } +impl ValueType for __wasi_ciovec_t { + fn into_le(self, buffer: &mut [u8]) { + self.buf + .into_le(&mut buffer[..mem::size_of::>()]); + self.buf_len + .into_le(&mut buffer[mem::size_of::>()..]); + } + + fn from_le(buffer: &[u8]) -> Result { + if buffer.len() >= mem::size_of::<__wasi_ciovec_t>() { + let buf = ValueType::from_le(&buffer[..mem::size_of::>()])?; + let buf_len = ValueType::from_le(&buffer[mem::size_of::>()..])?; + Ok(Self { buf, buf_len }) + } else { + Err(ValueError::BufferTooSmall) + } + } +} + pub type __wasi_clockid_t = u32; pub const __WASI_CLOCK_MONOTONIC: u32 = 0; pub const __WASI_CLOCK_PROCESS_CPUTIME_ID: u32 = 1; From 5b6856df6b9a22ba949a6c15cdc37407ed6e5202 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 1 Apr 2019 14:04:58 -0700 Subject: [PATCH 070/413] add lots of doc comments --- lib/wasi/src/syscalls/mod.rs | 168 ++++++++++++++++++++++++++++++++++- 1 file changed, 165 insertions(+), 3 deletions(-) diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index a0bb8d780..18ee35606 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -336,6 +336,19 @@ pub fn fd_pwrite( ) -> __wasi_errno_t { unimplemented!() } + +/// ### `fd_read()` +/// Read data from file descriptor +/// Inputs: +/// - `__wasi_fd_t fd` +/// File descriptor from which data will be read +/// - `const __wasi_iovec_t *iovs` +/// Vectors where data will be stored +/// - `u32 iovs_len` +/// Length of data in `iovs` +/// Output: +/// - `u32 *nread` +/// Number of bytes read pub fn fd_read( ctx: &mut Ctx, fd: __wasi_fd_t, @@ -343,8 +356,34 @@ pub fn fd_read( iovs_len: u32, nread: WasmPtr, ) -> __wasi_errno_t { - unimplemented!() + let memory = ctx.memory(0); + + // check __WASI_RIGHT_FD_READ + + if let (Some(iovs_arr_cell), Some(nwritten_cell)) = + (iovs.deref(memory, 0, iovs_len), nread.deref(memory)) + { + unimplemented!() + } else { + __WASI_EFAULT + } } + +/// ### `fd_readdir()` +/// Read data from directory specified by file descriptor +/// Inputs: +/// - `__wasi_fd_t fd` +/// File descriptor from which directory data will be read +/// - `void *buf` +/// Buffer where directory entries are stored +/// - `u32 buf_len` +/// Length of data in `buf` +/// - `__wasi_dircookie_t cookie` +/// Where the directory reading should start from +/// Output: +/// - `u32 *bufused` +/// The Number of bytes stored in `buf`; if less than `buf_len` then entire +/// directory has been read pub fn fd_readdir( ctx: &mut Ctx, fd: __wasi_fd_t, @@ -353,11 +392,40 @@ pub fn fd_readdir( cookie: __wasi_dircookie_t, bufused: WasmPtr, ) -> __wasi_errno_t { - unimplemented!() + let memory = ctx.memory(0); + + if let (Some(buf_arr_cell), Some(bufused_cell)) = + (buf.deref(memory, 0, buf_len), bufused.deref(memory)) + { + unimplemented!() + } else { + __WASI_EFAULT + } } + +/// ### `fd_renumber()` +/// Atomically copy file descriptor +/// Inputs: +/// - `__wasi_fd_t from` +/// File descriptor to copy +/// - `__wasi_fd_t to` +/// Location to copy file descriptor to pub fn fd_renumber(ctx: &mut Ctx, from: __wasi_fd_t, to: __wasi_fd_t) -> __wasi_errno_t { unimplemented!() } + +/// ### `fd_seek()` +/// Update file descriptor offset +/// Inputs: +/// - `__wasi_fd_t fd` +/// File descriptor to mutate +/// - `__wasi_filedelta_t offset` +/// Number of bytes to adjust offset by +/// - `__wasi_whence_t whence` +/// What the offset is relative to +/// Output: +/// - `__wasi_filesize_t *fd` +/// The new offset relative to the start of the file pub fn fd_seek( ctx: &mut Ctx, fd: __wasi_fd_t, @@ -365,16 +433,44 @@ pub fn fd_seek( whence: __wasi_whence_t, newoffset: WasmPtr<__wasi_filesize_t>, ) -> __wasi_errno_t { - unimplemented!() + let memory = ctx.memory(0); + // TODO: check __WASI_RIGHT_FD_SEEK + // TODO: handle directory input + if let Some(new_offset_cell) = newoffset.deref(memory) { + unimplemented!() + } else { + __WASI_EFAULT + } } + +/// ### `fd_sync()` +/// Synchronize file and metadata to disk (TODO: expand upon what this means in our system) +/// Inputs: +/// - `__wasi_fd_t fd` +/// The file descriptor to sync +/// Errors: +/// TODO: figure out which errors this should return +/// - `__WASI_EPERM` +/// - `__WAIS_ENOTCAPABLE` pub fn fd_sync(ctx: &mut Ctx, fd: __wasi_fd_t) -> __wasi_errno_t { + // TODO: check __WASI_RIGHT_FD_SYNC unimplemented!() } + +/// ### `fd_tell()` +/// Get the offset of the file descriptor +/// Inputs: +/// - `__wasi_fd_t fd` +/// The file descriptor to access +/// Output: +/// - `__wasi_filesize_t *offset` +/// The offset of `fd` relative to the start of the file pub fn fd_tell( ctx: &mut Ctx, fd: __wasi_fd_t, offset: WasmPtr<__wasi_filesize_t>, ) -> __wasi_errno_t { + // TODO: check __WASI_RIGHT_FD_TELL unimplemented!() } @@ -411,14 +507,43 @@ pub fn fd_write( } } +/// ### `path_create_directory()` +/// Create directory at a path +/// Inputs: +/// - `__wasi_fd_t fd` +/// The directory that the path is relative to +/// - `const char *path` +/// String containing path data +/// - `u32 path_len` +/// The length of `path` +/// Errors: +/// Required Rights: +/// - __WASI_RIGHT_PATH_CREATE_DIRECTORY +/// This right must be set on the directory that the file is created in (TODO: verify that this is true) pub fn path_create_directory( ctx: &mut Ctx, fd: __wasi_fd_t, path: WasmPtr, path_len: u32, ) -> __wasi_errno_t { + // check __WASI_RIGHT_PATH_CREATE_DIRECTORY unimplemented!() } + +/// ### `path_filestat_get()` +/// Access metadata about a file or directory +/// Inputs: +/// - `__wasi_fd_t fd` +/// The file to acces +/// - `__wasi_lookupflags_t flags` +/// Flags to control how the path is understood +/// - `const char *path` +/// String containing the file path +/// - `u32 path_len` +/// The length of the `path` string +/// Output: +/// - `__wasi_file_stat_t *buf` +/// The location where the metadata will be stored pub fn path_filestat_get( ctx: &mut Ctx, fd: __wasi_fd_t, @@ -427,8 +552,27 @@ pub fn path_filestat_get( path_len: u32, buf: WasmPtr<__wasi_filestat_t>, ) -> __wasi_errno_t { + // check __WASI_RIGHT_PATH_FILESTAT_GET unimplemented!() } + +/// ### `path_filestat_set_times()` +/// Update time metadata on a file or directory +/// Inputs: +/// - `__wasi_fd_t fd` +/// The directory relative to which the path is resolved +/// - `__wasi_lookupflags_t flags` +/// Flags to control how the path is understood +/// - `const char *path` +/// String containing the file path +/// - `u32 path_len` +/// The length of the `path` string +/// - `__wasi_timestamp_t st_atim` +/// The timestamp that the last accessed time attribute is set to +/// - `__wasi_timestamp_t st_mtim` +/// The timestamp that the last modified time attribute is set to +/// - `__wasi_fstflags_t fst_flags` +/// A bitmask controlling which attributes are set pub fn path_filestat_set_times( ctx: &mut Ctx, fd: __wasi_fd_t, @@ -441,6 +585,24 @@ pub fn path_filestat_set_times( ) -> __wasi_errno_t { unimplemented!() } + +/// ### `path_link()` +/// Create a hard link +/// Inputs: +/// - `__wasi_fd_t old_fd` +/// The directory relative to which the `old_path` is +/// - `__wasi_lookupflags_t old_flags` +/// Flags to control how `old_path` is understood +/// - `const char *old_path` +/// String containing the old file path +/// - `u32 old_path_len` +/// Length of the `old_path` string +/// - `__wasi_fd_t new_fd` +/// The directory relative to which the `new_path` is +/// - `const char *new_path` +/// String containing the new file path +/// - `u32 old_path_len` +/// Length of the `new_path` string pub fn path_link( ctx: &mut Ctx, old_fd: __wasi_fd_t, From 68f1123ad6fc70e2a4f28fb0b28dcebbfbaad82e Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Mon, 1 Apr 2019 15:15:20 -0700 Subject: [PATCH 071/413] Add start of wasi fs --- lib/wasi/Cargo.toml | 7 +- lib/wasi/src/lib.rs | 7 +- lib/wasi/src/state.rs | 179 ++++++++++++++++++++++++++++++++++- lib/wasi/src/syscalls/mod.rs | 17 +++- 4 files changed, 205 insertions(+), 5 deletions(-) diff --git a/lib/wasi/Cargo.toml b/lib/wasi/Cargo.toml index 17a2f14f4..8657fa92d 100644 --- a/lib/wasi/Cargo.toml +++ b/lib/wasi/Cargo.toml @@ -5,4 +5,9 @@ authors = ["The Wasmer Engineering Team "] edition = "2018" [dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.2.1" } \ No newline at end of file +wasmer-runtime-core = { path = "../runtime-core", version = "0.2.1" } +# wasmer-runtime-abi = { path = "../runtime-abi" } +hashbrown = "0.1.8" +generational-arena = "0.2.2" +zbox = "0.6.1" +log = "0.4.6" \ No newline at end of file diff --git a/lib/wasi/src/lib.rs b/lib/wasi/src/lib.rs index 3dcb2f7cb..27e945502 100644 --- a/lib/wasi/src/lib.rs +++ b/lib/wasi/src/lib.rs @@ -1,9 +1,13 @@ + +#[macro_use] +extern crate log; + mod ptr; mod state; mod syscalls; mod utils; -use self::state::WasiState; +use self::state::{WasiState, WasiFs}; use self::syscalls::*; use std::ffi::c_void; @@ -21,6 +25,7 @@ pub fn generate_import_object(args: Vec>, envs: Vec>) -> ImportO } let state = Box::new(WasiState { + fs: WasiFs::new().unwrap(), args: &args[..], envs: &envs[..], }); diff --git a/lib/wasi/src/state.rs b/lib/wasi/src/state.rs index e7cafc1ba..3dd97b39b 100644 --- a/lib/wasi/src/state.rs +++ b/lib/wasi/src/state.rs @@ -1,5 +1,182 @@ +// use wasmer_runtime_abi::vfs::{ +// vfs::Vfs, +// file_like::{FileLike, Metadata}; +// }; +use std::{ + cell::{Cell, RefCell}, + ops::{Index, IndexMut}, + rc::Rc, + time::SystemTime, +}; +use generational_arena::{Arena, Index as Inode}; +use hashbrown::hash_map::{HashMap, Entry}; +use zbox::{ + RepoOpener, + Repo, + File, + FileType, + OpenOptions, +}; +use crate::syscalls::types::*; + +pub const MAX_SYMLINKS: usize = 100; + +pub struct InodeVal { + stat: __wasi_filestat_t, + is_preopened: bool, + name: String, + kind: Kind, +} + +pub enum Kind { + File { + handle: File, + }, + Dir { + handle: File, + /// The entries of a directory are lazily filled. + entries: Vec, + }, + Symlink { + forwarded: Inode, + }, + Buffer { + buffer: Vec, + }, +} + +pub struct Fd { + rights: __wasi_rights_t, + flags: __wasi_fdflags_t, + offset: u64, + inode: Inode, +} + +pub struct WasiFs { + repo: Repo, + name_map: HashMap, + inodes: Arena, + fd_map: HashMap, + next_fd: Cell, + inode_counter: Cell, +} + +impl WasiFs { + pub fn new() -> Result { + Ok(Self { + repo: RepoOpener::new().create(true).open("mem://📂", "very unsafe pwd").map_err(|e| e.to_string())?, + name_map: HashMap::new(), + inodes: Arena::new(), + fd_map: HashMap::new(), + next_fd: Cell::new(3), + inode_counter: Cell::new(1000), + }) + } + + fn get_inode(&mut self, path: &str) -> Option { + Some(match self.name_map.entry(path.to_string()) { + Entry::Occupied(o) => *o.get(), + Entry::Vacant(v) => { + let file = if let Ok(file) = OpenOptions::new().read(true).write(true).create(false).open(&mut self.repo, path) { + file + } else { + return None; + }; + + let metadata = file.metadata().unwrap(); + let inode_index = { + let index = self.inode_counter.get(); + self.inode_counter.replace(index + 1) + }; + + let systime_to_nanos = |systime: SystemTime| { + let duration = systime.duration_since(SystemTime::UNIX_EPOCH).expect("should always be after unix epoch"); + duration.as_nanos() as u64 + }; + + let inode = self.inodes.insert(InodeVal { + stat: __wasi_filestat_t { + st_dev: 0, + st_ino: inode_index, + st_filetype: match metadata.file_type() { + FileType::File => __WASI_FILETYPE_REGULAR_FILE, + FileType::Dir => __WASI_FILETYPE_DIRECTORY, + }, + st_nlink: 0, + st_size: metadata.len() as u64, + st_atim: systime_to_nanos(SystemTime::now()), + st_mtim: systime_to_nanos(metadata.modified()), + st_ctim: systime_to_nanos(metadata.created()), + }, + is_preopened: false, + name: path.to_string(), + kind: match metadata.file_type() { + FileType::File => Kind::File { + handle: file, + }, + FileType::Dir => Kind::Dir { + handle: file, + entries: Vec::new(), + }, + }, + }); + v.insert(inode); + inode + }, + }) + } + + fn filestat_inode(&self, inode: Inode, flags: __wasi_lookupflags_t) -> Result<__wasi_filestat_t, __wasi_errno_t> { + let inode_val = &self.inodes[inode]; + if let (true, Kind::Symlink { mut forwarded }) = (flags & __WASI_LOOKUP_SYMLINK_FOLLOW != 0, &inode_val.kind) { + // Time to follow the symlink. + let mut counter = 0; + + while counter <= MAX_SYMLINKS { + let inode_val = &self.inodes[forwarded]; + if let &Kind::Symlink { forwarded: new_forwarded } = &inode_val.kind { + counter += 1; + forwarded = new_forwarded; + } else { + return Ok(inode_val.stat); + } + } + + Err(__WASI_EMLINK) + } else { + Ok(inode_val.stat) + } + } + + pub fn filestat_path( + &mut self, + preopened_fd: __wasi_fd_t, + flags: __wasi_lookupflags_t, + path: &str, + ) -> Result<__wasi_filestat_t, __wasi_errno_t> { + warn!("Should use preopned_fd: {}", preopened_fd); + let inode = if let Some(inode) = self.get_inode(path) { + inode + } else { + return Err(__WASI_EINVAL); + }; + + self.filestat_inode(inode, flags) + } + + pub fn filestat_fd(&self, fd: __wasi_fd_t) -> Result<__wasi_filestat_t, __wasi_errno_t> { + let fd = if let Some(fd) = self.fd_map.get(&fd) { + fd + } else { + return Err(__WASI_EBADF); + }; + + self.filestat_inode(fd.inode, 0) + } +} + pub struct WasiState<'a> { - // vfs: Vfs, + pub fs: WasiFs, pub args: &'a [Vec], pub envs: &'a [Vec], } diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index d72cbf466..3e5442b32 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -1,6 +1,6 @@ #![allow(unused)] -mod types; +pub mod types; use self::types::*; use crate::{ @@ -185,7 +185,20 @@ pub fn fd_fdstat_get( fd: __wasi_fd_t, buf: WasmPtr<__wasi_fdstat_t>, ) -> __wasi_errno_t { - unimplemented!() + let mut state = get_wasi_state(ctx); + let memory = ctx.memory(0); + + let stat = match state.fs.filestat_fd(fd) { + Ok(stat) => stat, + Err(errno) => return errno, + }; + + if let Some(buf) = buf.deref(memory) { + buf.set(stat); + __WASI_ESUCCESS + } else { + __WASI_EFAULT + } } pub fn fd_fdstat_set_flags( ctx: &mut Ctx, From 61dd2e1df93d825aaf54b60628e9d73fa9b93f15 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 1 Apr 2019 15:22:30 -0700 Subject: [PATCH 072/413] add more doc comments --- lib/wasi/src/syscalls/mod.rs | 81 ++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 18ee35606..efb22831a 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -104,6 +104,14 @@ pub fn args_sizes_get( } } +/// ### `clock_res_get()` +/// Get the resolution of the specified clock +/// Input: +/// - `__wasi_clockid_t clock_id` +/// The ID of the clock to get the resolution of +/// Output: +/// - `__wasi_timestamp_t *resolution` +/// The resolution of the clock in nanoseconds pub fn clock_res_get( ctx: &mut Ctx, clock_id: __wasi_clockid_t, @@ -118,6 +126,16 @@ pub fn clock_res_get( } } +/// ### `clock_time_get()` +/// Get the time of the specified clock +/// Inputs: +/// - `__wasi_clockid_t clock_id` +/// The ID of the clock to query +/// - `__wasi_timestamp_t precision` +/// The maximum amount of error the reading may have +/// Output: +/// - `__wasi_timestamp_t *time` +/// The value of the clock in nanoseconds pub fn clock_time_get( ctx: &mut Ctx, clock_id: __wasi_clockid_t, @@ -180,6 +198,17 @@ pub fn environ_sizes_get( } } +/// ### `fd_advise()` +/// Advise the system about how a file will be used +/// Inputs: +/// - `__wasi_fd_t fd` +/// The file descriptor the advice applies to +/// - `__wasi_filesize_t offset` +/// The offset from which the advice applies +/// - `__wasi_filesize_t len` +/// The length from the offset to which the advice applies +/// - `__wasi_advice_t advice` +/// The advice to give pub fn fd_advise( ctx: &mut Ctx, fd: __wasi_fd_t, @@ -189,6 +218,16 @@ pub fn fd_advise( ) -> __wasi_errno_t { unimplemented!() } + +/// ### `fd_allocate` +/// Allocate extra space for a file descriptor +/// Inputs: +/// - `__wasi_fd_t fd` +/// The file descriptor to allocate for +/// - `__wasi_filesize_t offset` +/// The offset from the start marking the beginning of the allocation +/// - `__wasi_filesize_t len` +/// The length from the offset marking the end of the allocation pub fn fd_allocate( ctx: &mut Ctx, fd: __wasi_fd_t, @@ -218,9 +257,23 @@ pub fn fd_close(ctx: &mut Ctx, fd: __wasi_fd_t) -> __wasi_errno_t { __WASI_ESUCCESS } +/// ### `fd_datasync()` +/// Synchronize the file data to disk +/// Inputs: +/// - `__wasi_fd_t fd` +/// The file descriptor to sync pub fn fd_datasync(ctx: &mut Ctx, fd: __wasi_fd_t) -> __wasi_errno_t { unimplemented!() } + +/// ### `fd_fdstat_get()` +/// Get metadata of a file descriptor +/// Input: +/// - `__wasi_fd_t fd` +/// The file descriptor whose metadata will be accessed +/// Output: +/// - `__wasi_fdstat_t *buf` +/// The location where the metadata will be written pub fn fd_fdstat_get( ctx: &mut Ctx, fd: __wasi_fd_t, @@ -228,6 +281,14 @@ pub fn fd_fdstat_get( ) -> __wasi_errno_t { unimplemented!() } + +/// ### `fd_fdstat_set_flags()` +/// Set file descriptor flags for a file descriptor +/// Inputs: +/// - `__wasi_fd_t fd` +/// The file descriptor to apply the new flags to +/// - `__wasi_fdflags_t flags` +/// The flags to apply to `fd` pub fn fd_fdstat_set_flags( ctx: &mut Ctx, fd: __wasi_fd_t, @@ -235,6 +296,16 @@ pub fn fd_fdstat_set_flags( ) -> __wasi_errno_t { unimplemented!() } + +/// ### `fd_fdstat_set_rights()` +/// Set the rights of a file descriptor +/// Inputs: +/// - `__wasi_fd_t fd` +/// The file descriptor to apply the new rights to +/// - `__wasi_rights_t fs_rights_base` +/// The rights to apply to `fd` +/// - `__wasi_rights_t fs_rights_inheriting` +/// The inheriting rights to apply to `fd` pub fn fd_fdstat_set_rights( ctx: &mut Ctx, fd: __wasi_fd_t, @@ -243,6 +314,15 @@ pub fn fd_fdstat_set_rights( ) -> __wasi_errno_t { unimplemented!() } + +/// ### `fd_filestat_get()` +/// Get the metadata of an open file +/// Input: +/// - `__wasi_fd_t fd` +/// The open file descriptor whose metadata will be read +/// Output: +/// - `__wasi_filestat_t *buf` +/// Where the metadata from `fd` will be written pub fn fd_filestat_get( ctx: &mut Ctx, fd: __wasi_fd_t, @@ -250,6 +330,7 @@ pub fn fd_filestat_get( ) -> __wasi_errno_t { unimplemented!() } + pub fn fd_filestat_set_size( ctx: &mut Ctx, fd: __wasi_fd_t, From ce35e5794f71db5652ec9b19c5ccd5537e6ffb93 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Mon, 1 Apr 2019 15:52:35 -0700 Subject: [PATCH 073/413] Change ValueType trait and add basic fs --- Cargo.lock | 100 +++++++++++++++++++++++ lib/runtime-core/src/types.rs | 46 +---------- lib/wasi/Cargo.toml | 1 + lib/wasi/src/lib.rs | 3 +- lib/wasi/src/ptr.rs | 20 +---- lib/wasi/src/state.rs | 75 +++++++++++++----- lib/wasi/src/syscalls/mod.rs | 17 +++- lib/wasi/src/syscalls/types.rs | 141 +++------------------------------ 8 files changed, 186 insertions(+), 217 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 35d9b9aea..d34da510d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -121,6 +121,11 @@ dependencies = [ "which 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "bitflags" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "bitflags" version = "1.0.4" @@ -552,6 +557,18 @@ dependencies = [ "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "env_logger" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "env_logger" version = "0.6.1" @@ -684,6 +701,14 @@ name = "gcc" version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "generational-arena" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "generic-array" version = "0.12.0" @@ -692,6 +717,14 @@ dependencies = [ "typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "getopts" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "glob" version = "0.2.11" @@ -948,6 +981,16 @@ dependencies = [ "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "lz4" +version = "1.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "lz4-sys 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "skeptic 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "lz4" version = "1.23.1" @@ -957,6 +1000,15 @@ dependencies = [ "lz4-sys 1.8.3 (git+https://github.com/zboxfs/lz4-rs.git)", ] +[[package]] +name = "lz4-sys" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "lz4-sys" version = "1.8.3" @@ -1295,6 +1347,15 @@ dependencies = [ "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "pulldown-cmark" +version = "0.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "getopts 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "quick-error" version = "1.2.2" @@ -1720,6 +1781,15 @@ name = "siphasher" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "skeptic" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "pulldown-cmark 0.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "slab" version = "0.4.2" @@ -2360,9 +2430,14 @@ dependencies = [ name = "wasmer-wasi" version = "0.1.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)", + "hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.50 (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.2.1", + "zbox 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2485,6 +2560,22 @@ dependencies = [ "tar 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "zbox" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)", + "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lz4 1.22.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "rmp-serde 0.13.7 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "zstd" version = "0.4.22+zstd.1.3.8" @@ -2528,6 +2619,7 @@ dependencies = [ "checksum backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "797c830ac25ccc92a7f8a7b9862bde440715531514594a6154e3d4a54dd769b6" "checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" "checksum bindgen 0.46.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8f7f7f0701772b17de73e4f5cbcb1dd6926f4706cba4c1ab62c5367f8bdc94e1" +"checksum bitflags 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4f67931368edf3a9a51d29886d245f1c3db2f1ef0dcc9e35ff70341b78c10d23" "checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" "checksum blake2b_simd 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce2571a6cd634670daa2977cc894c1cc2ba57c563c498e5a82c35446f34d056e" "checksum blob 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "19803aa44ff8b43123bbe369efaddcb638ea7dc332e543972dd95ac7cb148b92" @@ -2575,6 +2667,7 @@ dependencies = [ "checksum either 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c67353c641dc847124ea1902d69bd753dee9bb3beff9aa3662ecf86c971d1fac" "checksum encoding_rs 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)" = "4155785c79f2f6701f185eb2e6b4caf0555ec03477cb4c70db67b465311620ed" "checksum enum-methods 0.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7798e7da2d4cb0d6d6fc467e8d6b5bf247e9e989f786dde1732d79899c32bb10" +"checksum env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)" = "15b0a4d2e39f8420210be8b27eeda28029729e2fd4291019455016c348240c38" "checksum env_logger 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b61fa891024a945da30a9581546e8cfaf5602c7b3f4c137a2805cf388f92075a" "checksum errno 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c2a071601ed01b988f896ab14b95e67335d1eeb50190932a1320f7fe3cadc84e" "checksum errno-dragonfly 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "14ca354e36190500e1e1fb267c647932382b54053c50b14970856c0b00a35067" @@ -2592,7 +2685,9 @@ dependencies = [ "checksum futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)" = "49e7653e374fe0d0c12de4250f0bdb60680b8c80eed558c5c7538eec9c89e21b" "checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" "checksum gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)" = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" +"checksum generational-arena 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4024f96ffa0ebaaf36aa589cd41f2fd69f3a5e6fd02c86e11e12cdf41d5b46a3" "checksum generic-array 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3c0f28c2f5bfb5960175af447a2da7c18900693738343dc896ffbcabd9839592" +"checksum getopts 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "0a7292d30132fb5424b354f5dc02512a86e4c516fe544bb7a25e7f266951b797" "checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb" "checksum goblin 0.0.20 (registry+https://github.com/rust-lang/crates.io-index)" = "84473a5302fa5094d3d9911c2f312f522f9a37462a777f195f63fae1bf7faf4d" "checksum h2 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "910a5e7be6283a9c91b3982fa5188368c8719cce2a3cf3b86048673bf9d9c36b" @@ -2621,7 +2716,9 @@ dependencies = [ "checksum llvm-sys 70.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60a9ee82fe0fa72ae6ef6d018b407296085863836451c7a97384f84ed7e26b9f" "checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" "checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6" +"checksum lz4 1.22.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fe55d2ebbc2e4fc987e6fbfc13f416d97b06d06e50bc1124d613aa790842f80c" "checksum lz4 1.23.1 (git+https://github.com/zboxfs/lz4-rs.git)" = "" +"checksum lz4-sys 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a59044c3ba3994f3d2aa2270ddd6c5947922219501e67efde5604d36aad462b5" "checksum lz4-sys 1.8.3 (git+https://github.com/zboxfs/lz4-rs.git)" = "" "checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" "checksum memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2efc7bc57c883d4a4d6e3246905283d8dae951bb3bd32f49d6ef297f546e1c39" @@ -2660,6 +2757,7 @@ dependencies = [ "checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c" "checksum plain 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" "checksum proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)" = "4d317f9caece796be1980837fd5cb3dfec5613ebdb04ad0956deea83ce168915" +"checksum pulldown-cmark 0.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "1058d7bb927ca067656537eec4e02c2b4b70eaaa129664c5b90c111e20326f41" "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" "checksum quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a" "checksum quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "cdd8e04bd9c52e0342b406469d494fcb033be4bdbe5c606016defbb1681411e1" @@ -2707,6 +2805,7 @@ dependencies = [ "checksum serde_test 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)" = "70807e147558b5253cb70f55d343db1d07204d773087c96d0f35fced295dba82" "checksum serde_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d48f9f99cd749a2de71d29da5f948de7f2764cc5a9d7f3c97e3514d4ee6eabf2" "checksum siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" +"checksum skeptic 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "dd7d8dc1315094150052d0ab767840376335a98ac66ef313ff911cdf439a5b69" "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" "checksum smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c4488ae950c49d403731982257768f48fada354a5203fe81f9bb6f43ca9002be" "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" @@ -2776,6 +2875,7 @@ dependencies = [ "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" "checksum xattr 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c" "checksum zbox 0.6.1 (git+https://github.com/wasmerio/zbox?branch=bundle-libsodium)" = "" +"checksum zbox 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4a969b504de4ee47ac68bbd035b0c5a53818edb1edd6737131de001de2a09e64" "checksum zstd 0.4.22+zstd.1.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6f042dd18d52854d302d3d92f66d0a63c2d520d7b7034a9d43cde7441d1b4ddd" "checksum zstd-safe 1.4.7+zstd.1.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "63febf0b0dcd076db81e6b3110ed254cfb8ed54378a4c3cfbb68956e839d4f59" "checksum zstd-sys 1.4.8+zstd.1.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "4cb187d624025a7d9878ecf13437491869423426183ded2fa40d4651b85f7ae7" diff --git a/lib/runtime-core/src/types.rs b/lib/runtime-core/src/types.rs index d9e983f34..7a51c1c6f 100644 --- a/lib/runtime-core/src/types.rs +++ b/lib/runtime-core/src/types.rs @@ -126,34 +126,14 @@ unsafe impl WasmExternType for f64 { // fn swap(&self, other: Self::Primitive) -> Self::Primitive; // } -pub enum ValueError { - BufferTooSmall, -} - -pub trait ValueType: Copy +pub unsafe trait ValueType: Copy where Self: Sized, -{ - fn into_le(self, buffer: &mut [u8]); - fn from_le(buffer: &[u8]) -> Result; -} +{} macro_rules! convert_value_impl { ($t:ty) => { - impl ValueType for $t { - fn into_le(self, buffer: &mut [u8]) { - buffer[..mem::size_of::()].copy_from_slice(&self.to_le_bytes()); - } - fn from_le(buffer: &[u8]) -> Result { - if buffer.len() >= mem::size_of::() { - let mut array = [0u8; mem::size_of::()]; - array.copy_from_slice(&buffer[..mem::size_of::()]); - Ok(Self::from_le_bytes(array)) - } else { - Err(ValueError::BufferTooSmall) - } - } - } + unsafe impl ValueType for $t {} }; ( $($t:ty),* ) => { $( @@ -162,25 +142,7 @@ macro_rules! convert_value_impl { }; } -convert_value_impl!(u8, i8, u16, i16, u32, i32, u64, i64); - -impl ValueType for f32 { - fn into_le(self, buffer: &mut [u8]) { - self.to_bits().into_le(buffer); - } - fn from_le(buffer: &[u8]) -> Result { - Ok(f32::from_bits(::from_le(buffer)?)) - } -} - -impl ValueType for f64 { - fn into_le(self, buffer: &mut [u8]) { - self.to_bits().into_le(buffer); - } - fn from_le(buffer: &[u8]) -> Result { - Ok(f64::from_bits(::from_le(buffer)?)) - } -} +convert_value_impl!(u8, i8, u16, i16, u32, i32, u64, i64, f32, f64); #[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq)] pub enum ElementType { diff --git a/lib/wasi/Cargo.toml b/lib/wasi/Cargo.toml index 0352ce1e1..da4119559 100644 --- a/lib/wasi/Cargo.toml +++ b/lib/wasi/Cargo.toml @@ -13,3 +13,4 @@ hashbrown = "0.1.8" generational-arena = "0.2.2" zbox = "0.6.1" log = "0.4.6" +byteorder = "1.3.1" diff --git a/lib/wasi/src/lib.rs b/lib/wasi/src/lib.rs index 27e945502..ba91b2aa6 100644 --- a/lib/wasi/src/lib.rs +++ b/lib/wasi/src/lib.rs @@ -1,4 +1,3 @@ - #[macro_use] extern crate log; @@ -7,7 +6,7 @@ mod state; mod syscalls; mod utils; -use self::state::{WasiState, WasiFs}; +use self::state::{WasiFs, WasiState}; use self::syscalls::*; use std::ffi::c_void; diff --git a/lib/wasi/src/ptr.rs b/lib/wasi/src/ptr.rs index f6d1c4ce4..b4fc7a9a5 100644 --- a/lib/wasi/src/ptr.rs +++ b/lib/wasi/src/ptr.rs @@ -1,7 +1,7 @@ use std::{cell::Cell, fmt, marker::PhantomData, mem}; use wasmer_runtime_core::{ memory::Memory, - types::{Type, ValueError, ValueType, WasmExternType}, + types::{Type, ValueType, WasmExternType}, }; pub struct Array; @@ -68,23 +68,7 @@ unsafe impl WasmExternType for WasmPtr { const TYPE: Type = Type::I32; } -impl ValueType for WasmPtr { - fn into_le(self, buffer: &mut [u8]) { - buffer[..mem::size_of::()].copy_from_slice(&self.offset.to_le_bytes()); - } - fn from_le(buffer: &[u8]) -> Result { - if buffer.len() >= mem::size_of::() { - let mut array = [0u8; mem::size_of::()]; - array.copy_from_slice(&buffer[..mem::size_of::()]); - Ok(Self { - offset: u32::from_le_bytes(array), - _phantom: PhantomData, - }) - } else { - Err(ValueError::BufferTooSmall) - } - } -} +unsafe impl ValueType for WasmPtr {} impl Clone for WasmPtr { fn clone(&self) -> Self { diff --git a/lib/wasi/src/state.rs b/lib/wasi/src/state.rs index 3dd97b39b..3a243860b 100644 --- a/lib/wasi/src/state.rs +++ b/lib/wasi/src/state.rs @@ -2,22 +2,16 @@ // vfs::Vfs, // file_like::{FileLike, Metadata}; // }; +use crate::syscalls::types::*; +use generational_arena::{Arena, Index as Inode}; +use hashbrown::hash_map::{Entry, HashMap}; use std::{ cell::{Cell, RefCell}, ops::{Index, IndexMut}, rc::Rc, time::SystemTime, }; -use generational_arena::{Arena, Index as Inode}; -use hashbrown::hash_map::{HashMap, Entry}; -use zbox::{ - RepoOpener, - Repo, - File, - FileType, - OpenOptions, -}; -use crate::syscalls::types::*; +use zbox::{File, FileType, OpenOptions, Repo, RepoOpener}; pub const MAX_SYMLINKS: usize = 100; @@ -64,7 +58,10 @@ pub struct WasiFs { impl WasiFs { pub fn new() -> Result { Ok(Self { - repo: RepoOpener::new().create(true).open("mem://📂", "very unsafe pwd").map_err(|e| e.to_string())?, + repo: RepoOpener::new() + .create(true) + .open("mem://📂", "very unsafe pwd") + .map_err(|e| e.to_string())?, name_map: HashMap::new(), inodes: Arena::new(), fd_map: HashMap::new(), @@ -77,12 +74,17 @@ impl WasiFs { Some(match self.name_map.entry(path.to_string()) { Entry::Occupied(o) => *o.get(), Entry::Vacant(v) => { - let file = if let Ok(file) = OpenOptions::new().read(true).write(true).create(false).open(&mut self.repo, path) { + let file = if let Ok(file) = OpenOptions::new() + .read(true) + .write(true) + .create(false) + .open(&mut self.repo, path) + { file } else { return None; }; - + let metadata = file.metadata().unwrap(); let inode_index = { let index = self.inode_counter.get(); @@ -90,7 +92,9 @@ impl WasiFs { }; let systime_to_nanos = |systime: SystemTime| { - let duration = systime.duration_since(SystemTime::UNIX_EPOCH).expect("should always be after unix epoch"); + let duration = systime + .duration_since(SystemTime::UNIX_EPOCH) + .expect("should always be after unix epoch"); duration.as_nanos() as u64 }; @@ -111,9 +115,7 @@ impl WasiFs { is_preopened: false, name: path.to_string(), kind: match metadata.file_type() { - FileType::File => Kind::File { - handle: file, - }, + FileType::File => Kind::File { handle: file }, FileType::Dir => Kind::Dir { handle: file, entries: Vec::new(), @@ -122,19 +124,28 @@ impl WasiFs { }); v.insert(inode); inode - }, + } }) } - fn filestat_inode(&self, inode: Inode, flags: __wasi_lookupflags_t) -> Result<__wasi_filestat_t, __wasi_errno_t> { + fn filestat_inode( + &self, + inode: Inode, + flags: __wasi_lookupflags_t, + ) -> Result<__wasi_filestat_t, __wasi_errno_t> { let inode_val = &self.inodes[inode]; - if let (true, Kind::Symlink { mut forwarded }) = (flags & __WASI_LOOKUP_SYMLINK_FOLLOW != 0, &inode_val.kind) { + if let (true, Kind::Symlink { mut forwarded }) = + (flags & __WASI_LOOKUP_SYMLINK_FOLLOW != 0, &inode_val.kind) + { // Time to follow the symlink. let mut counter = 0; while counter <= MAX_SYMLINKS { let inode_val = &self.inodes[forwarded]; - if let &Kind::Symlink { forwarded: new_forwarded } = &inode_val.kind { + if let &Kind::Symlink { + forwarded: new_forwarded, + } = &inode_val.kind + { counter += 1; forwarded = new_forwarded; } else { @@ -171,7 +182,27 @@ impl WasiFs { return Err(__WASI_EBADF); }; - self.filestat_inode(fd.inode, 0) + Ok(self.inodes[fd.inode].stat) + } + + pub fn fdstat(&self, fd: __wasi_fd_t) -> Result<__wasi_fdstat_t, __wasi_errno_t> { + let fd = if let Some(fd) = self.fd_map.get(&fd) { + fd + } else { + return Err(__WASI_EBADF); + }; + + Ok(__wasi_fdstat_t { + fs_filetype: match self.inodes[fd.inode].kind { + Kind::File { .. } => __WASI_FILETYPE_REGULAR_FILE, + Kind::Dir { .. } => __WASI_FILETYPE_DIRECTORY, + Kind::Symlink { .. } => __WASI_FILETYPE_SYMBOLIC_LINK, + _ => __WASI_FILETYPE_UNKNOWN, + }, + fs_flags: fd.flags, + fs_rights_base: fd.rights, + fs_rights_inheriting: fd.rights, // TODO(lachlan): Is this right? + }) } } diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index c3b827a39..3b1824e01 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -229,7 +229,7 @@ pub fn fd_fdstat_get( let mut state = get_wasi_state(ctx); let memory = ctx.memory(0); - let stat = match state.fs.filestat_fd(fd) { + let stat = match state.fs.fdstat(fd) { Ok(stat) => stat, Err(errno) => return errno, }; @@ -261,7 +261,20 @@ pub fn fd_filestat_get( fd: __wasi_fd_t, buf: WasmPtr<__wasi_filestat_t>, ) -> __wasi_errno_t { - unimplemented!() + let mut state = get_wasi_state(ctx); + let memory = ctx.memory(0); + + let stat = match state.fs.filestat_fd(fd) { + Ok(stat) => stat, + Err(errno) => return errno, + }; + + if let Some(buf) = buf.deref(memory) { + buf.set(stat); + __WASI_ESUCCESS + } else { + __WASI_EFAULT + } } pub fn fd_filestat_set_size( ctx: &mut Ctx, diff --git a/lib/wasi/src/syscalls/types.rs b/lib/wasi/src/syscalls/types.rs index 20d9d95fb..17098aacf 100644 --- a/lib/wasi/src/syscalls/types.rs +++ b/lib/wasi/src/syscalls/types.rs @@ -1,8 +1,9 @@ #![allow(non_camel_case_types)] use crate::ptr::{Array, WasmPtr}; +use byteorder::{ReadBytesExt, WriteBytesExt, LE}; use std::mem; -use wasmer_runtime_core::types::{ValueError, ValueType}; +use wasmer_runtime_core::types::ValueType; pub type __wasi_advice_t = u8; pub const __WASI_ADVICE_DONTNEED: u8 = 0; @@ -19,24 +20,7 @@ pub struct __wasi_ciovec_t { pub buf_len: u32, } -impl ValueType for __wasi_ciovec_t { - fn into_le(self, buffer: &mut [u8]) { - self.buf - .into_le(&mut buffer[..mem::size_of::>()]); - self.buf_len - .into_le(&mut buffer[mem::size_of::>()..]); - } - - fn from_le(buffer: &[u8]) -> Result { - if buffer.len() >= mem::size_of::<__wasi_ciovec_t>() { - let buf = ValueType::from_le(&buffer[..mem::size_of::>()])?; - let buf_len = ValueType::from_le(&buffer[mem::size_of::>()..])?; - Ok(Self { buf, buf_len }) - } else { - Err(ValueError::BufferTooSmall) - } - } -} +unsafe impl ValueType for __wasi_ciovec_t {} pub type __wasi_clockid_t = u32; pub const __WASI_CLOCK_MONOTONIC: u32 = 0; @@ -190,21 +174,7 @@ pub struct __wasi_prestat_u_dir_t { pr_name_len: u32, } -impl ValueType for __wasi_prestat_u_dir_t { - fn into_le(self, buffer: &mut [u8]) { - self.pr_name_len - .into_le(&mut buffer[..mem::size_of::()]); - } - - fn from_le(buffer: &[u8]) -> Result { - if buffer.len() >= mem::size_of::<__wasi_prestat_u_dir_t>() { - let pr_name_len = ValueType::from_le(&buffer[..mem::size_of::()])?; - Ok(Self { pr_name_len }) - } else { - Err(ValueError::BufferTooSmall) - } - } -} +unsafe impl ValueType for __wasi_prestat_u_dir_t {} #[derive(Copy, Clone)] #[repr(C)] @@ -212,23 +182,7 @@ pub union __wasi_prestat_u { dir: __wasi_prestat_u_dir_t, } -impl ValueType for __wasi_prestat_u { - fn into_le(self, buffer: &mut [u8]) { - unsafe { - self.dir - .into_le(&mut buffer[..mem::size_of::<__wasi_prestat_u_dir_t>()]) - }; - } - - fn from_le(buffer: &[u8]) -> Result { - if buffer.len() >= mem::size_of::<__wasi_prestat_u>() { - let dir = ValueType::from_le(&buffer[..mem::size_of::<__wasi_prestat_u_dir_t>()])?; - Ok(Self { dir }) - } else { - Err(ValueError::BufferTooSmall) - } - } -} +unsafe impl ValueType for __wasi_prestat_u {} #[derive(Copy, Clone)] #[repr(C)] @@ -237,24 +191,7 @@ pub struct __wasi_prestat_t { u: __wasi_prestat_u, } -impl ValueType for __wasi_prestat_t { - fn into_le(self, buffer: &mut [u8]) { - self.pr_type - .into_le(&mut buffer[..mem::size_of::<__wasi_preopentype_t>()]); - self.u - .into_le(&mut buffer[mem::size_of::<__wasi_preopentype_t>()..]); - } - - fn from_le(buffer: &[u8]) -> Result { - if buffer.len() >= mem::size_of::<__wasi_prestat_t>() { - let pr_type = ValueType::from_le(&buffer[..mem::size_of::<__wasi_preopentype_t>()])?; - let u = ValueType::from_le(&buffer[mem::size_of::<__wasi_preopentype_t>()..])?; - Ok(Self { pr_type, u }) - } else { - Err(ValueError::BufferTooSmall) - } - } -} +unsafe impl ValueType for __wasi_prestat_t {} #[derive(Debug, Copy, Clone, PartialEq, Eq)] #[repr(C)] @@ -265,50 +202,7 @@ pub struct __wasi_fdstat_t { pub fs_rights_inheriting: __wasi_rights_t, } -impl ValueType for __wasi_fdstat_t { - fn into_le(self, buffer: &mut [u8]) { - self.fs_filetype - .into_le(&mut buffer[..mem::size_of::<__wasi_filetype_t>()]); - self.fs_flags.into_le( - &mut buffer[mem::size_of::<__wasi_filetype_t>()..mem::size_of::<__wasi_fdflags_t>()], - ); - self.fs_rights_base.into_le( - &mut buffer[(mem::size_of::<__wasi_filetype_t>() + mem::size_of::<__wasi_fdflags_t>()) - ..mem::size_of::<__wasi_rights_t>()], - ); - self.fs_rights_inheriting.into_le( - &mut buffer[(mem::size_of::<__wasi_filetype_t>() - + mem::size_of::<__wasi_fdflags_t>() - + mem::size_of::<__wasi_rights_t>())..], - ); - } - - fn from_le(buffer: &[u8]) -> Result { - if buffer.len() >= mem::size_of::<__wasi_fdstat_t>() { - let fs_filetype = ValueType::from_le(&buffer[..mem::size_of::<__wasi_filetype_t>()])?; - let fs_flags = ValueType::from_le( - &buffer[mem::size_of::<__wasi_filetype_t>()..mem::size_of::<__wasi_fdflags_t>()], - )?; - let fs_rights_base = ValueType::from_le( - &buffer[(mem::size_of::<__wasi_filetype_t>() + mem::size_of::<__wasi_fdflags_t>()) - ..mem::size_of::<__wasi_rights_t>()], - )?; - let fs_rights_inheriting = ValueType::from_le( - &buffer[(mem::size_of::<__wasi_filetype_t>() - + mem::size_of::<__wasi_fdflags_t>() - + mem::size_of::<__wasi_rights_t>())..], - )?; - Ok(Self { - fs_filetype, - fs_flags, - fs_rights_base, - fs_rights_inheriting, - }) - } else { - Err(ValueError::BufferTooSmall) - } - } -} +unsafe impl ValueType for __wasi_fdstat_t {} pub type __wasi_filedelta_t = i64; @@ -327,6 +221,8 @@ pub struct __wasi_filestat_t { pub st_ctim: __wasi_timestamp_t, } +unsafe impl ValueType for __wasi_filestat_t {} + pub type __wasi_filetype_t = u8; pub const __WASI_FILETYPE_UNKNOWN: u8 = 0; pub const __WASI_FILETYPE_BLOCK_DEVICE: u8 = 1; @@ -352,24 +248,7 @@ pub struct __wasi_iovec_t { pub buf_len: u32, } -impl ValueType for __wasi_iovec_t { - fn into_le(self, buffer: &mut [u8]) { - self.buf - .into_le(&mut buffer[..mem::size_of::>()]); - self.buf_len - .into_le(&mut buffer[mem::size_of::>()..]); - } - - fn from_le(buffer: &[u8]) -> Result { - if buffer.len() >= mem::size_of::<__wasi_iovec_t>() { - let buf = ValueType::from_le(&buffer[..mem::size_of::>()])?; - let buf_len = ValueType::from_le(&buffer[mem::size_of::>()..])?; - Ok(Self { buf, buf_len }) - } else { - Err(ValueError::BufferTooSmall) - } - } -} +unsafe impl ValueType for __wasi_iovec_t {} pub type __wasi_linkcount_t = u32; From 92ec71974bbc8278359cb472a172c86e6f69db41 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Mon, 1 Apr 2019 16:34:18 -0700 Subject: [PATCH 074/413] Add wasi_try macro --- lib/wasi/src/lib.rs | 2 + lib/wasi/src/macros.rs | 13 ++++ lib/wasi/src/ptr.rs | 18 ++++-- lib/wasi/src/state.rs | 18 +----- lib/wasi/src/syscalls/mod.rs | 111 +++++++++++++---------------------- 5 files changed, 72 insertions(+), 90 deletions(-) create mode 100644 lib/wasi/src/macros.rs diff --git a/lib/wasi/src/lib.rs b/lib/wasi/src/lib.rs index ba91b2aa6..c6908988c 100644 --- a/lib/wasi/src/lib.rs +++ b/lib/wasi/src/lib.rs @@ -1,6 +1,8 @@ #[macro_use] extern crate log; +#[macro_use] +mod macros; mod ptr; mod state; mod syscalls; diff --git a/lib/wasi/src/macros.rs b/lib/wasi/src/macros.rs new file mode 100644 index 000000000..0e00e77b3 --- /dev/null +++ b/lib/wasi/src/macros.rs @@ -0,0 +1,13 @@ +macro_rules! wasi_try { + ($expr:expr) => {{ + let res: Result<_, crate::syscalls::types::__wasi_errno_t> = $expr; + match res { + Ok(val) => val, + Err(err) => return err, + } + }}; + ($expr:expr; $e:expr) => {{ + let opt: Option<_> = $expr; + wasi_try!(opt.ok_or($e)) + }}; +} diff --git a/lib/wasi/src/ptr.rs b/lib/wasi/src/ptr.rs index b4fc7a9a5..56abb3b2d 100644 --- a/lib/wasi/src/ptr.rs +++ b/lib/wasi/src/ptr.rs @@ -1,3 +1,4 @@ +use crate::syscalls::types::{__wasi_errno_t, __WASI_EFAULT}; use std::{cell::Cell, fmt, marker::PhantomData, mem}; use wasmer_runtime_core::{ memory::Memory, @@ -30,27 +31,32 @@ impl WasmPtr { impl WasmPtr { #[inline] - pub fn deref<'a>(self, memory: &'a Memory) -> Option<&'a Cell> { + pub fn deref<'a>(self, memory: &'a Memory) -> Result<&'a Cell, __wasi_errno_t> { if (self.offset as usize) + mem::size_of::() >= memory.size().bytes().0 { - return None; + return Err(__WASI_EFAULT); } unsafe { let cell_ptr = memory .view::() .get_unchecked((self.offset() as usize) / mem::size_of::()) as *const _; - Some(&*cell_ptr) + Ok(&*cell_ptr) } } } impl WasmPtr { #[inline] - pub fn deref<'a>(self, memory: &'a Memory, index: u32, length: u32) -> Option<&'a [Cell]> { + pub fn deref<'a>( + self, + memory: &'a Memory, + index: u32, + length: u32, + ) -> Result<&'a [Cell], __wasi_errno_t> { if (self.offset as usize) + (mem::size_of::() * ((index + length) as usize)) >= memory.size().bytes().0 { - return None; + return Err(__WASI_EFAULT); } unsafe { @@ -59,7 +65,7 @@ impl WasmPtr { ..((self.offset() as usize) / mem::size_of::()) + ((index + length) as usize), ) as *const _; - Some(&*cell_ptrs) + Ok(&*cell_ptrs) } } } diff --git a/lib/wasi/src/state.rs b/lib/wasi/src/state.rs index 3a243860b..d02ff5693 100644 --- a/lib/wasi/src/state.rs +++ b/lib/wasi/src/state.rs @@ -166,31 +166,19 @@ impl WasiFs { path: &str, ) -> Result<__wasi_filestat_t, __wasi_errno_t> { warn!("Should use preopned_fd: {}", preopened_fd); - let inode = if let Some(inode) = self.get_inode(path) { - inode - } else { - return Err(__WASI_EINVAL); - }; + let inode = self.get_inode(path).ok_or(__WASI_EINVAL)?; self.filestat_inode(inode, flags) } pub fn filestat_fd(&self, fd: __wasi_fd_t) -> Result<__wasi_filestat_t, __wasi_errno_t> { - let fd = if let Some(fd) = self.fd_map.get(&fd) { - fd - } else { - return Err(__WASI_EBADF); - }; + let fd = self.fd_map.get(&fd).ok_or(__WASI_EBADF)?; Ok(self.inodes[fd.inode].stat) } pub fn fdstat(&self, fd: __wasi_fd_t) -> Result<__wasi_fdstat_t, __wasi_errno_t> { - let fd = if let Some(fd) = self.fd_map.get(&fd) { - fd - } else { - return Err(__WASI_EBADF); - }; + let fd = self.fd_map.get(&fd).ok_or(__WASI_EBADF)?; Ok(__wasi_fdstat_t { fs_filetype: match self.inodes[fd.inode].kind { diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index b04506c51..fcca2cf40 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -31,23 +31,13 @@ fn write_buffer_array( ptr_buffer: WasmPtr, Array>, buffer: WasmPtr, ) -> __wasi_errno_t { - let ptrs = if let Some(cells) = ptr_buffer.deref(memory, 0, from.len() as u32) { - cells - } else { - return __WASI_EOVERFLOW; - }; + let ptrs = wasi_try!(ptr_buffer.deref(memory, 0, from.len() as u32)); let mut current_buffer_offset = 0; for ((i, sub_buffer), ptr) in from.iter().enumerate().zip(ptrs.iter()) { ptr.set(WasmPtr::new(buffer.offset() + current_buffer_offset)); - let cells = if let Some(cells) = - buffer.deref(memory, current_buffer_offset, sub_buffer.len() as u32) - { - cells - } else { - return __WASI_EOVERFLOW; - }; + let cells = wasi_try!(buffer.deref(memory, current_buffer_offset, sub_buffer.len() as u32)); for (cell, &byte) in cells.iter().zip(sub_buffer.iter()) { cell.set(byte); @@ -92,16 +82,15 @@ pub fn args_sizes_get( ) -> __wasi_errno_t { let memory = ctx.memory(0); - if let (Some(argc), Some(argv_buf_size)) = (argc.deref(memory), argv_buf_size.deref(memory)) { - let state = get_wasi_state(ctx); + let argc = wasi_try!(argc.deref(memory)); + let argv_buf_size = wasi_try!(argv_buf_size.deref(memory)); - argc.set(state.args.len() as u32); - argv_buf_size.set(state.args.iter().map(|v| v.len() as u32).sum()); + let state = get_wasi_state(ctx); - __WASI_ESUCCESS - } else { - __WASI_EOVERFLOW - } + argc.set(state.args.len() as u32); + argv_buf_size.set(state.args.iter().map(|v| v.len() as u32).sum()); + + __WASI_ESUCCESS } /// ### `clock_res_get()` @@ -119,11 +108,8 @@ pub fn clock_res_get( ) -> __wasi_errno_t { let memory = ctx.memory(0); - if let Some(out_addr) = resolution.deref(memory) { - platform_clock_res_get(clock_id, out_addr) - } else { - __WASI_EFAULT - } + let out_addr = wasi_try!(resolution.deref(memory)); + platform_clock_res_get(clock_id, out_addr) } /// ### `clock_time_get()` @@ -144,11 +130,8 @@ pub fn clock_time_get( ) -> __wasi_errno_t { let memory = ctx.memory(0); - if let Some(out_addr) = time.deref(memory) { - platform_clock_time_get(clock_id, precision, out_addr) - } else { - __WASI_EFAULT - } + let out_addr = wasi_try!(time.deref(memory)); + platform_clock_time_get(clock_id, precision, out_addr) } /// ### `environ_get()` @@ -184,18 +167,15 @@ pub fn environ_sizes_get( ) -> __wasi_errno_t { let memory = ctx.memory(0); - if let (Some(environ_count), Some(environ_buf_size)) = - (environ_count.deref(memory), environ_buf_size.deref(memory)) - { - let state = get_wasi_state(ctx); + let environ_count = wasi_try!(environ_count.deref(memory)); + let environ_buf_size = wasi_try!(environ_buf_size.deref(memory)); - environ_count.set(state.envs.len() as u32); - environ_buf_size.set(state.envs.iter().map(|v| v.len() as u32).sum()); + let state = get_wasi_state(ctx); - __WASI_ESUCCESS - } else { - __WASI_EOVERFLOW - } + environ_count.set(state.envs.len() as u32); + environ_buf_size.set(state.envs.iter().map(|v| v.len() as u32).sum()); + + __WASI_EOVERFLOW } /// ### `fd_advise()` @@ -282,17 +262,12 @@ pub fn fd_fdstat_get( let mut state = get_wasi_state(ctx); let memory = ctx.memory(0); - let stat = match state.fs.fdstat(fd) { - Ok(stat) => stat, - Err(errno) => return errno, - }; + let stat = wasi_try!(state.fs.fdstat(fd)); - if let Some(buf) = buf.deref(memory) { - buf.set(stat); - __WASI_ESUCCESS - } else { - __WASI_EFAULT - } + let buf = wasi_try!(buf.deref(memory)); + buf.set(stat); + + __WASI_EFAULT } /// ### `fd_fdstat_set_flags()` @@ -344,17 +319,12 @@ pub fn fd_filestat_get( let mut state = get_wasi_state(ctx); let memory = ctx.memory(0); - let stat = match state.fs.filestat_fd(fd) { - Ok(stat) => stat, - Err(errno) => return errno, - }; + let stat = wasi_try!(state.fs.filestat_fd(fd)); - if let Some(buf) = buf.deref(memory) { - buf.set(stat); - __WASI_ESUCCESS - } else { - __WASI_EFAULT - } + let buf = wasi_try!(buf.deref(memory)); + buf.set(stat); + + __WASI_ESUCCESS } pub fn fd_filestat_set_size( @@ -384,7 +354,7 @@ pub fn fd_pread( ) -> __wasi_errno_t { let memory = ctx.memory(0); - if let ((Some(iov_cells), Some(nread_cell))) = + if let ((Ok(iov_cells), Ok(nread_cell))) = (iovs.deref(memory, 0, iovs_len), nread.deref(memory)) { platform_fd_pread(fd, iov_cells, iovs_len, offset, nread_cell) @@ -400,7 +370,7 @@ pub fn fd_prestat_get( ) -> __wasi_errno_t { let memory = ctx.memory(0); - if let Some(prestat_ptr) = buf.deref(memory) { + if let Ok(prestat_ptr) = buf.deref(memory) { // open fd // write info to prestat_ptr __WASI_ESUCCESS @@ -417,7 +387,7 @@ pub fn fd_prestat_dir_name( ) -> __wasi_errno_t { let memory = ctx.memory(0); - if let Some(path_chars) = path.deref(memory, 0, path_len) { + if let Ok(path_chars) = path.deref(memory, 0, path_len) { if true /* check if dir */ { @@ -467,7 +437,7 @@ pub fn fd_read( // check __WASI_RIGHT_FD_READ - if let (Some(iovs_arr_cell), Some(nwritten_cell)) = + if let (Ok(iovs_arr_cell), Ok(nwritten_cell)) = (iovs.deref(memory, 0, iovs_len), nread.deref(memory)) { unimplemented!() @@ -501,7 +471,7 @@ pub fn fd_readdir( ) -> __wasi_errno_t { let memory = ctx.memory(0); - if let (Some(buf_arr_cell), Some(bufused_cell)) = + if let (Ok(buf_arr_cell), Ok(bufused_cell)) = (buf.deref(memory, 0, buf_len), bufused.deref(memory)) { unimplemented!() @@ -543,7 +513,7 @@ pub fn fd_seek( let memory = ctx.memory(0); // TODO: check __WASI_RIGHT_FD_SEEK // TODO: handle directory input - if let Some(new_offset_cell) = newoffset.deref(memory) { + if let Ok(new_offset_cell) = newoffset.deref(memory) { unimplemented!() } else { __WASI_EFAULT @@ -605,7 +575,7 @@ pub fn fd_write( let memory = ctx.memory(0); // TODO: check __WASI_RIGHT_FD_WRITE // return __WASI_EISDIR if dir (probably) - if let (Some(iovs_arr_cell), Some(nwritten_cell)) = + if let (Ok(iovs_arr_cell), Ok(nwritten_cell)) = (iovs.deref(memory, 0, iovs_len), nwritten.deref(memory)) { unimplemented!() @@ -659,6 +629,9 @@ pub fn path_filestat_get( path_len: u32, buf: WasmPtr<__wasi_filestat_t>, ) -> __wasi_errno_t { + let mut state = get_wasi_state(ctx); + let memory = ctx.memory(0); + // check __WASI_RIGHT_PATH_FILESTAT_GET unimplemented!() } @@ -768,7 +741,7 @@ pub fn path_open( // check for __WASI_RIGHT_PATH_OPEN somewhere, probably via dirfd - if let (Some(fd_cell), Some(path_cell)) = (fd.deref(memory), path.deref(memory, 0, path_len)) { + if let (Ok(fd_cell), Ok(path_cell)) = (fd.deref(memory), path.deref(memory, 0, path_len)) { // o_flags: // - __WASI_O_FLAG_CREAT (create if it does not exist) // - __WASI_O_DIRECTORY (fail if not dir) @@ -860,7 +833,7 @@ pub fn random_get(ctx: &mut Ctx, buf: WasmPtr, buf_len: u32) -> __was let mut rng = thread_rng(); let memory = ctx.memory(0); - if let Some(buf) = buf.deref(memory, 0, buf_len) { + if let Ok(buf) = buf.deref(memory, 0, buf_len) { for i in 0..(buf_len as usize) { let random_byte = rng.gen::(); buf[i].set(random_byte); From 2dd7ec8b72212838791aff3a02e3597834b575a2 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 1 Apr 2019 16:36:41 -0700 Subject: [PATCH 075/413] fix it up --- Cargo.lock | 88 +----------------------------------- lib/wasi/Cargo.toml | 6 ++- lib/wasi/src/state.rs | 8 ++-- lib/wasi/src/syscalls/mod.rs | 1 + 4 files changed, 11 insertions(+), 92 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d34da510d..8883ae32c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -121,11 +121,6 @@ dependencies = [ "which 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "bitflags" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "bitflags" version = "1.0.4" @@ -557,18 +552,6 @@ dependencies = [ "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "env_logger" -version = "0.5.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "env_logger" version = "0.6.1" @@ -717,14 +700,6 @@ dependencies = [ "typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "getopts" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "glob" version = "0.2.11" @@ -981,16 +956,6 @@ dependencies = [ "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "lz4" -version = "1.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", - "lz4-sys 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "skeptic 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "lz4" version = "1.23.1" @@ -1000,15 +965,6 @@ dependencies = [ "lz4-sys 1.8.3 (git+https://github.com/zboxfs/lz4-rs.git)", ] -[[package]] -name = "lz4-sys" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "lz4-sys" version = "1.8.3" @@ -1347,15 +1303,6 @@ dependencies = [ "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "pulldown-cmark" -version = "0.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bitflags 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "getopts 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "quick-error" version = "1.2.2" @@ -1781,15 +1728,6 @@ name = "siphasher" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "skeptic" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "pulldown-cmark 0.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "slab" version = "0.4.2" @@ -2437,7 +2375,7 @@ dependencies = [ "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.2.1", - "zbox 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "zbox 0.6.1 (git+https://github.com/wasmerio/zbox?branch=bundle-libsodium)", ] [[package]] @@ -2560,22 +2498,6 @@ dependencies = [ "tar 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "zbox" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)", - "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "lz4 1.22.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", - "rmp-serde 0.13.7 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "zstd" version = "0.4.22+zstd.1.3.8" @@ -2619,7 +2541,6 @@ dependencies = [ "checksum backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "797c830ac25ccc92a7f8a7b9862bde440715531514594a6154e3d4a54dd769b6" "checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" "checksum bindgen 0.46.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8f7f7f0701772b17de73e4f5cbcb1dd6926f4706cba4c1ab62c5367f8bdc94e1" -"checksum bitflags 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4f67931368edf3a9a51d29886d245f1c3db2f1ef0dcc9e35ff70341b78c10d23" "checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" "checksum blake2b_simd 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce2571a6cd634670daa2977cc894c1cc2ba57c563c498e5a82c35446f34d056e" "checksum blob 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "19803aa44ff8b43123bbe369efaddcb638ea7dc332e543972dd95ac7cb148b92" @@ -2667,7 +2588,6 @@ dependencies = [ "checksum either 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c67353c641dc847124ea1902d69bd753dee9bb3beff9aa3662ecf86c971d1fac" "checksum encoding_rs 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)" = "4155785c79f2f6701f185eb2e6b4caf0555ec03477cb4c70db67b465311620ed" "checksum enum-methods 0.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7798e7da2d4cb0d6d6fc467e8d6b5bf247e9e989f786dde1732d79899c32bb10" -"checksum env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)" = "15b0a4d2e39f8420210be8b27eeda28029729e2fd4291019455016c348240c38" "checksum env_logger 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b61fa891024a945da30a9581546e8cfaf5602c7b3f4c137a2805cf388f92075a" "checksum errno 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c2a071601ed01b988f896ab14b95e67335d1eeb50190932a1320f7fe3cadc84e" "checksum errno-dragonfly 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "14ca354e36190500e1e1fb267c647932382b54053c50b14970856c0b00a35067" @@ -2687,7 +2607,6 @@ dependencies = [ "checksum gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)" = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" "checksum generational-arena 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4024f96ffa0ebaaf36aa589cd41f2fd69f3a5e6fd02c86e11e12cdf41d5b46a3" "checksum generic-array 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3c0f28c2f5bfb5960175af447a2da7c18900693738343dc896ffbcabd9839592" -"checksum getopts 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "0a7292d30132fb5424b354f5dc02512a86e4c516fe544bb7a25e7f266951b797" "checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb" "checksum goblin 0.0.20 (registry+https://github.com/rust-lang/crates.io-index)" = "84473a5302fa5094d3d9911c2f312f522f9a37462a777f195f63fae1bf7faf4d" "checksum h2 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "910a5e7be6283a9c91b3982fa5188368c8719cce2a3cf3b86048673bf9d9c36b" @@ -2716,9 +2635,7 @@ dependencies = [ "checksum llvm-sys 70.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60a9ee82fe0fa72ae6ef6d018b407296085863836451c7a97384f84ed7e26b9f" "checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" "checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6" -"checksum lz4 1.22.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fe55d2ebbc2e4fc987e6fbfc13f416d97b06d06e50bc1124d613aa790842f80c" "checksum lz4 1.23.1 (git+https://github.com/zboxfs/lz4-rs.git)" = "" -"checksum lz4-sys 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a59044c3ba3994f3d2aa2270ddd6c5947922219501e67efde5604d36aad462b5" "checksum lz4-sys 1.8.3 (git+https://github.com/zboxfs/lz4-rs.git)" = "" "checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" "checksum memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2efc7bc57c883d4a4d6e3246905283d8dae951bb3bd32f49d6ef297f546e1c39" @@ -2757,7 +2674,6 @@ dependencies = [ "checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c" "checksum plain 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" "checksum proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)" = "4d317f9caece796be1980837fd5cb3dfec5613ebdb04ad0956deea83ce168915" -"checksum pulldown-cmark 0.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "1058d7bb927ca067656537eec4e02c2b4b70eaaa129664c5b90c111e20326f41" "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" "checksum quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a" "checksum quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "cdd8e04bd9c52e0342b406469d494fcb033be4bdbe5c606016defbb1681411e1" @@ -2805,7 +2721,6 @@ dependencies = [ "checksum serde_test 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)" = "70807e147558b5253cb70f55d343db1d07204d773087c96d0f35fced295dba82" "checksum serde_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d48f9f99cd749a2de71d29da5f948de7f2764cc5a9d7f3c97e3514d4ee6eabf2" "checksum siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" -"checksum skeptic 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "dd7d8dc1315094150052d0ab767840376335a98ac66ef313ff911cdf439a5b69" "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" "checksum smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c4488ae950c49d403731982257768f48fada354a5203fe81f9bb6f43ca9002be" "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" @@ -2875,7 +2790,6 @@ dependencies = [ "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" "checksum xattr 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c" "checksum zbox 0.6.1 (git+https://github.com/wasmerio/zbox?branch=bundle-libsodium)" = "" -"checksum zbox 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4a969b504de4ee47ac68bbd035b0c5a53818edb1edd6737131de001de2a09e64" "checksum zstd 0.4.22+zstd.1.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6f042dd18d52854d302d3d92f66d0a63c2d520d7b7034a9d43cde7441d1b4ddd" "checksum zstd-safe 1.4.7+zstd.1.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "63febf0b0dcd076db81e6b3110ed254cfb8ed54378a4c3cfbb68956e839d4f59" "checksum zstd-sys 1.4.8+zstd.1.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "4cb187d624025a7d9878ecf13437491869423426183ded2fa40d4651b85f7ae7" diff --git a/lib/wasi/Cargo.toml b/lib/wasi/Cargo.toml index da4119559..c3b56c65c 100644 --- a/lib/wasi/Cargo.toml +++ b/lib/wasi/Cargo.toml @@ -11,6 +11,10 @@ rand = "0.6.5" # wasmer-runtime-abi = { path = "../runtime-abi" } hashbrown = "0.1.8" generational-arena = "0.2.2" -zbox = "0.6.1" log = "0.4.6" byteorder = "1.3.1" + +[target.'cfg(unix)'.dependencies.zbox] +git = "https://github.com/wasmerio/zbox" +branch = "bundle-libsodium" +features = ["libsodium-bundled"] \ No newline at end of file diff --git a/lib/wasi/src/state.rs b/lib/wasi/src/state.rs index 3a243860b..df1c751b4 100644 --- a/lib/wasi/src/state.rs +++ b/lib/wasi/src/state.rs @@ -60,7 +60,7 @@ impl WasiFs { Ok(Self { repo: RepoOpener::new() .create(true) - .open("mem://📂", "very unsafe pwd") + .open("mem://not-an-emoji", "very unsafe pwd") .map_err(|e| e.to_string())?, name_map: HashMap::new(), inodes: Arena::new(), @@ -107,10 +107,10 @@ impl WasiFs { FileType::Dir => __WASI_FILETYPE_DIRECTORY, }, st_nlink: 0, - st_size: metadata.len() as u64, + st_size: metadata.content_len() as u64, st_atim: systime_to_nanos(SystemTime::now()), - st_mtim: systime_to_nanos(metadata.modified()), - st_ctim: systime_to_nanos(metadata.created()), + st_mtim: systime_to_nanos(metadata.modified_at()), + st_ctim: systime_to_nanos(metadata.created_at()), }, is_preopened: false, name: path.to_string(), diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index b04506c51..551bc4d62 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -875,6 +875,7 @@ pub fn random_get(ctx: &mut Ctx, buf: WasmPtr, buf_len: u32) -> __was /// ### `sched_yield()` /// Yields execution of the thread pub fn sched_yield(ctx: &mut Ctx) -> __wasi_errno_t { + ::std::thread::yield_now(); __WASI_ESUCCESS } From d164c7a93b2016fdffee882072b2100451cc0d31 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 1 Apr 2019 17:21:48 -0700 Subject: [PATCH 076/413] update wasi Cargo.toml --- Cargo.lock | 4 ++-- lib/wasi/Cargo.toml | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8883ae32c..b44432dce 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2209,7 +2209,7 @@ dependencies = [ "wasmer-runtime 0.2.1", "wasmer-runtime-abi 0.2.1", "wasmer-runtime-core 0.2.1", - "wasmer-wasi 0.1.0", + "wasmer-wasi 0.2.1", ] [[package]] @@ -2366,7 +2366,7 @@ dependencies = [ [[package]] name = "wasmer-wasi" -version = "0.1.0" +version = "0.2.1" 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)", diff --git a/lib/wasi/Cargo.toml b/lib/wasi/Cargo.toml index c3b56c65c..cbb565286 100644 --- a/lib/wasi/Cargo.toml +++ b/lib/wasi/Cargo.toml @@ -1,7 +1,9 @@ [package] name = "wasmer-wasi" -version = "0.1.0" +version = "0.2.1" +license = "MIT" authors = ["The Wasmer Engineering Team "] +repository = "https://github.com/wasmerio/wasmer" edition = "2018" [dependencies] From 8bab9f1bea622532ab903591af41a40c4ad9d591 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Mon, 1 Apr 2019 17:25:45 -0700 Subject: [PATCH 077/413] init zbox first --- lib/wasi/src/state.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/wasi/src/state.rs b/lib/wasi/src/state.rs index ce4139e01..ae2ef12af 100644 --- a/lib/wasi/src/state.rs +++ b/lib/wasi/src/state.rs @@ -10,8 +10,9 @@ use std::{ ops::{Index, IndexMut}, rc::Rc, time::SystemTime, + path::PathBuf, }; -use zbox::{File, FileType, OpenOptions, Repo, RepoOpener}; +use zbox::{File, FileType, OpenOptions, Repo, RepoOpener, init_env as zbox_init_env}; pub const MAX_SYMLINKS: usize = 100; @@ -57,10 +58,11 @@ pub struct WasiFs { impl WasiFs { pub fn new() -> Result { + zbox_init_env(); Ok(Self { repo: RepoOpener::new() .create(true) - .open("mem://not-an-emoji", "very unsafe pwd") + .open("mem://foo", "") .map_err(|e| e.to_string())?, name_map: HashMap::new(), inodes: Arena::new(), From 287c81d7a51d8e06848a6f61af361b2a66a24dd6 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Mon, 1 Apr 2019 17:50:53 -0700 Subject: [PATCH 078/413] Misc fixes --- lib/runtime-core/src/error.rs | 29 ++++++++++++++++++++++++++--- lib/runtime-core/src/types.rs | 3 ++- lib/wasi/src/state.rs | 4 ++-- lib/wasi/src/syscalls/mod.rs | 16 +++++++--------- 4 files changed, 37 insertions(+), 15 deletions(-) diff --git a/lib/runtime-core/src/error.rs b/lib/runtime-core/src/error.rs index 46fae102e..090214834 100644 --- a/lib/runtime-core/src/error.rs +++ b/lib/runtime-core/src/error.rs @@ -119,7 +119,6 @@ impl std::error::Error for LinkError {} /// The main way to do this is `Instance.call`. /// /// Comparing two `RuntimeError`s always evaluates to false. -#[derive(Debug)] pub enum RuntimeError { Trap { msg: Box }, Exception { data: Box<[Value]> }, @@ -141,11 +140,27 @@ impl std::fmt::Display for RuntimeError { RuntimeError::Exception { ref data } => { write!(f, "Uncaught WebAssembly exception: {:?}", data) } - RuntimeError::Panic { data: _ } => write!(f, "User-defined \"panic\""), + RuntimeError::Panic { data } => { + let msg = if let Some(s) = data.downcast_ref::() { + s + } else if let Some(s) = data.downcast_ref::<&str>() { + s + } else { + "user-defined, opaque" + }; + + write!(f, "{}", msg) + } } } } +impl std::fmt::Debug for RuntimeError { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + write!(f, "{}", self) + } +} + impl std::error::Error for RuntimeError {} /// This error type is produced by resolving a wasm function @@ -197,7 +212,6 @@ impl std::error::Error for ResolveError {} /// be the `CallError::Runtime(RuntimeError)` variant. /// /// Comparing two `CallError`s always evaluates to false. -#[derive(Debug)] pub enum CallError { Resolve(ResolveError), Runtime(RuntimeError), @@ -218,6 +232,15 @@ impl std::fmt::Display for CallError { } } +impl std::fmt::Debug for CallError { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + match self { + CallError::Resolve(resolve_err) => write!(f, "ResolveError: {:?}", resolve_err), + CallError::Runtime(runtime_err) => write!(f, "RuntimeError: {:?}", runtime_err), + } + } +} + impl std::error::Error for CallError {} /// This error type is produced when creating something, diff --git a/lib/runtime-core/src/types.rs b/lib/runtime-core/src/types.rs index 7a51c1c6f..933a7a5bd 100644 --- a/lib/runtime-core/src/types.rs +++ b/lib/runtime-core/src/types.rs @@ -129,7 +129,8 @@ unsafe impl WasmExternType for f64 { pub unsafe trait ValueType: Copy where Self: Sized, -{} +{ +} macro_rules! convert_value_impl { ($t:ty) => { diff --git a/lib/wasi/src/state.rs b/lib/wasi/src/state.rs index ae2ef12af..49d8335b3 100644 --- a/lib/wasi/src/state.rs +++ b/lib/wasi/src/state.rs @@ -8,11 +8,11 @@ use hashbrown::hash_map::{Entry, HashMap}; use std::{ cell::{Cell, RefCell}, ops::{Index, IndexMut}, + path::PathBuf, rc::Rc, time::SystemTime, - path::PathBuf, }; -use zbox::{File, FileType, OpenOptions, Repo, RepoOpener, init_env as zbox_init_env}; +use zbox::{init_env as zbox_init_env, File, FileType, OpenOptions, Repo, RepoOpener}; pub const MAX_SYMLINKS: usize = 100; diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 184856358..76e77d818 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -815,8 +815,8 @@ pub fn poll_oneoff( ) -> __wasi_errno_t { unimplemented!() } -pub fn proc_exit(ctx: &mut Ctx, rval: __wasi_exitcode_t) { - unimplemented!() +pub fn proc_exit(ctx: &mut Ctx, rval: __wasi_exitcode_t) -> Result<(), &'static str> { + Err("Instance exited") } pub fn proc_raise(ctx: &mut Ctx, sig: __wasi_signal_t) -> __wasi_errno_t { unimplemented!() @@ -833,13 +833,11 @@ pub fn random_get(ctx: &mut Ctx, buf: WasmPtr, buf_len: u32) -> __was let mut rng = thread_rng(); let memory = ctx.memory(0); - if let Ok(buf) = buf.deref(memory, 0, buf_len) { - for i in 0..(buf_len as usize) { - let random_byte = rng.gen::(); - buf[i].set(random_byte); - } - } else { - return __WASI_EFAULT; + let buf = wasi_try!(buf.deref(memory, 0, buf_len)); + + unsafe { + let u8_buffer = &mut *(buf as *const [_] as *mut [_] as *mut [u8]); + thread_rng().fill(u8_buffer); } __WASI_ESUCCESS From 4d6bbed9058869ce78572513402ddbec42c09b26 Mon Sep 17 00:00:00 2001 From: losfair Date: Tue, 2 Apr 2019 11:11:45 +0800 Subject: [PATCH 079/413] Optimize call. --- lib/dynasm-backend/src/codegen_x64.rs | 57 +++++++++++++++++++-------- lib/dynasm-backend/src/machine.rs | 50 ++++++++++++++++++++++- 2 files changed, 88 insertions(+), 19 deletions(-) diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index 56138987f..caf2e9691 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -850,7 +850,10 @@ impl FunctionCodeGenerator for X64FunctionCode { a.emit_mov(Size::S64, Self::get_param_location(0), self.vmctx_location.unwrap()); for i in 0..self.num_params { - a.emit_mov(Size::S64, Self::get_param_location(i + 1), self.locals[i]); + Self::emit_relaxed_binop( + a, &mut self.machine, Assembler::emit_mov, + Size::S64, Self::get_param_location(i + 1), self.locals[i], + ); } for i in self.num_params..self.num_locals { a.emit_mov(Size::S32, Location::Imm32(0), self.locals[i]); @@ -1161,7 +1164,12 @@ impl FunctionCodeGenerator for X64FunctionCode { let return_types: Vec = sig.returns().iter().cloned().map(type_to_wp_type).collect(); - let params = &self.value_stack[self.value_stack.len() - param_types.len()..]; + let params: Vec<_> = self.value_stack.drain(self.value_stack.len() - param_types.len()..).collect(); + let released: Vec = params.iter() + .filter(|&&(_, lot)| lot == LocalOrTemp::Temp) + .map(|&(x, _)| x) + .collect(); + self.machine.release_locations_only_regs(&released); let used_gprs = self.machine.get_used_gprs(); for r in used_gprs.iter() { @@ -1170,19 +1178,26 @@ impl FunctionCodeGenerator for X64FunctionCode { let mut stack_offset: usize = 0; - for i in (0..param_types.len()).rev() { - a.emit_push(Size::S64, params[i].0); - stack_offset += 8; - } + let mut call_movs: Vec<(Location, GPR)> = vec![]; - for i in 0..param_types.len() { + for i in (0..param_types.len()).rev() { let loc = Self::get_param_location(1 + i); match loc { - Location::GPR(_) => { - a.emit_pop(Size::S64, loc); - stack_offset -= 8; - }, - _ => break + Location::GPR(x) => { + call_movs.push((params[i].0, x)); + } + Location::Memory(_, _) => { + a.emit_push(Size::S64, params[i].0); + stack_offset += 8; + } + _ => unreachable!() + } + } + + sort_call_movs(&mut call_movs); + for (loc, gpr) in call_movs { + if loc != Location::GPR(gpr) { + a.emit_mov(Size::S64, loc, Location::GPR(gpr)); } } @@ -1197,11 +1212,7 @@ impl FunctionCodeGenerator for X64FunctionCode { a.emit_pop(Size::S64, Location::GPR(*r)); } - let released: Vec = self.value_stack.drain(self.value_stack.len() - param_types.len()..) - .filter(|&(_, lot)| lot == LocalOrTemp::Temp) - .map(|(x, _)| x) - .collect(); - self.machine.release_locations(a, &released); + self.machine.release_locations_only_stack(a, &released); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); @@ -1454,3 +1465,15 @@ fn get_location_released(a: &mut Assembler, m: &mut Machine, (loc, lot): (Locati } loc } + +fn sort_call_movs(movs: &mut [(Location, GPR)]) { + for i in 0..movs.len() { + for j in (i + 1)..movs.len() { + if let Location::GPR(src_gpr) = movs[j].0 { + if src_gpr == movs[i].1 { + movs.swap(i, j); + } + } + } + } +} diff --git a/lib/dynasm-backend/src/machine.rs b/lib/dynasm-backend/src/machine.rs index be4275775..1eccf4719 100644 --- a/lib/dynasm-backend/src/machine.rs +++ b/lib/dynasm-backend/src/machine.rs @@ -220,7 +220,7 @@ impl Machine { ) { let mut delta_stack_offset: usize = 0; - for loc in locs { + for loc in locs.iter().rev() { match *loc { Location::GPR(ref x) => { assert_eq!(self.used_gprs.remove(x), true); @@ -248,6 +248,52 @@ impl Machine { } } + pub fn release_locations_only_regs( + &mut self, + locs: &[Location] + ) { + for loc in locs.iter().rev() { + match *loc { + Location::GPR(ref x) => { + assert_eq!(self.used_gprs.remove(x), true); + }, + Location::XMM(ref x) => { + assert_eq!(self.used_xmms.remove(x), true); + }, + _ => {} + } + } + } + + pub fn release_locations_only_stack( + &mut self, + assembler: &mut E, + locs: &[Location] + ) { + let mut delta_stack_offset: usize = 0; + + for loc in locs.iter().rev() { + match *loc { + Location::Memory(GPR::RBP, x) => { + if x >= 0 { + unreachable!(); + } + let offset = (-x) as usize; + if offset != self.stack_offset.0 { + unreachable!(); + } + self.stack_offset.0 -= 8; + delta_stack_offset += 8; + }, + _ => {} + } + } + + if delta_stack_offset != 0 { + assembler.emit_add(Size::S64, Location::Imm32(delta_stack_offset as u32), Location::GPR(GPR::RSP)); + } + } + pub fn release_locations_keep_state( &self, assembler: &mut E, @@ -255,7 +301,7 @@ impl Machine { ) { let mut delta_stack_offset: usize = 0; - for loc in locs { + for loc in locs.iter().rev() { match *loc { Location::Memory(GPR::RBP, x) => { if x >= 0 { From b74d8bc521836857ee9cd4bf3bd1838d73e551d6 Mon Sep 17 00:00:00 2001 From: losfair Date: Tue, 2 Apr 2019 20:50:56 +0800 Subject: [PATCH 080/413] Optimize locals. --- lib/dynasm-backend/src/codegen_x64.rs | 37 +------- lib/dynasm-backend/src/emitter_x64.rs | 12 +++ lib/dynasm-backend/src/machine.rs | 124 +++++++++++++++++++++++++- 3 files changed, 139 insertions(+), 34 deletions(-) diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index caf2e9691..2e4f2a913 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -138,7 +138,6 @@ pub struct X64FunctionCode { br_table_data: Option>>, returns: Vec, locals: Vec, - vmctx_location: Option, num_params: usize, num_locals: usize, value_stack: Vec<(Location, LocalOrTemp)>, @@ -320,7 +319,6 @@ impl ModuleCodeGenerator Location { - match idx { - 0 => Location::GPR(GPR::RDI), - 1 => Location::GPR(GPR::RSI), - 2 => Location::GPR(GPR::RDX), - 3 => Location::GPR(GPR::RCX), - 4 => Location::GPR(GPR::R8), - 5 => Location::GPR(GPR::R9), - _ => Location::Memory(GPR::RBP, (16 + (idx - 6) * 8) as i32), - } - } } impl FunctionCodeGenerator for X64FunctionCode { @@ -842,22 +826,8 @@ impl FunctionCodeGenerator for X64FunctionCode { let a = self.assembler.as_mut().unwrap(); a.emit_push(Size::S64, Location::GPR(GPR::RBP)); a.emit_mov(Size::S64, Location::GPR(GPR::RSP), Location::GPR(GPR::RBP)); - - let locations = self.machine.acquire_stack_locations(a, 1 + self.num_locals, false); - self.vmctx_location = Some(locations[0]); - self.locals = locations[1..].to_vec(); - a.emit_mov(Size::S64, Self::get_param_location(0), self.vmctx_location.unwrap()); - - for i in 0..self.num_params { - Self::emit_relaxed_binop( - a, &mut self.machine, Assembler::emit_mov, - Size::S64, Self::get_param_location(i + 1), self.locals[i], - ); - } - for i in self.num_params..self.num_locals { - a.emit_mov(Size::S32, Location::Imm32(0), self.locals[i]); - } + self.locals = self.machine.init_locals(a, self.num_locals, self.num_params); self.control_stack.push(ControlFrame { label: a.get_label(), @@ -1181,7 +1151,7 @@ impl FunctionCodeGenerator for X64FunctionCode { let mut call_movs: Vec<(Location, GPR)> = vec![]; for i in (0..param_types.len()).rev() { - let loc = Self::get_param_location(1 + i); + let loc = Machine::get_param_location(1 + i); match loc { Location::GPR(x) => { call_movs.push((params[i].0, x)); @@ -1201,7 +1171,7 @@ impl FunctionCodeGenerator for X64FunctionCode { } } - a.emit_mov(Size::S64, Location::Memory(GPR::RBP, -8), Self::get_param_location(0)); // vmctx + a.emit_mov(Size::S64, Location::GPR(Machine::get_vmctx_reg()), Machine::get_param_location(0)); // vmctx a.emit_call_label(label); if stack_offset > 0 { @@ -1415,6 +1385,7 @@ impl FunctionCodeGenerator for X64FunctionCode { if self.control_stack.len() == 0 { a.emit_label(frame.label); + self.machine.finalize_locals(a, &self.locals); a.emit_mov(Size::S64, Location::GPR(GPR::RBP), Location::GPR(GPR::RSP)); a.emit_pop(Size::S64, Location::GPR(GPR::RBP)); a.emit_ret(); diff --git a/lib/dynasm-backend/src/emitter_x64.rs b/lib/dynasm-backend/src/emitter_x64.rs index 39bc264f6..58ac233ba 100644 --- a/lib/dynasm-backend/src/emitter_x64.rs +++ b/lib/dynasm-backend/src/emitter_x64.rs @@ -79,6 +79,7 @@ pub trait Emitter { fn emit_label(&mut self, label: Self::Label); fn emit_mov(&mut self, sz: Size, src: Location, dst: Location); + fn emit_lea(&mut self, sz: Size, src: Location, dst: Location); fn emit_xor(&mut self, sz: Size, src: Location, dst: Location); fn emit_jmp(&mut self, condition: Condition, label: Self::Label); fn emit_set(&mut self, condition: Condition, dst: GPR); @@ -343,6 +344,17 @@ impl Emitter for Assembler { )} ); } + fn emit_lea(&mut self, sz: Size, src: Location, dst: Location) { + match (sz, src, dst) { + (Size::S32, Location::Memory(src, disp), Location::GPR(dst)) => { + dynasm!(self ; lea Rd(dst as u8), [Rq(src as u8) + disp]); + }, + (Size::S64, Location::Memory(src, disp), Location::GPR(dst)) => { + dynasm!(self ; lea Rq(dst as u8), [Rq(src as u8) + disp]); + }, + _ => unreachable!(), + } + } fn emit_xor(&mut self, sz: Size, src: Location, dst: Location) { binop_all_nofp!(xor, self, sz, src, dst, {unreachable!()}); } diff --git a/lib/dynasm-backend/src/machine.rs b/lib/dynasm-backend/src/machine.rs index 1eccf4719..037d15fdc 100644 --- a/lib/dynasm-backend/src/machine.rs +++ b/lib/dynasm-backend/src/machine.rs @@ -7,7 +7,8 @@ struct MachineStackOffset(usize); pub struct Machine { used_gprs: HashSet, used_xmms: HashSet, - stack_offset: MachineStackOffset + stack_offset: MachineStackOffset, + save_area_offset: Option, } impl Machine { @@ -16,6 +17,7 @@ impl Machine { used_gprs: HashSet::new(), used_xmms: HashSet::new(), stack_offset: MachineStackOffset(0), + save_area_offset: None, } } @@ -27,6 +29,10 @@ impl Machine { self.used_xmms.iter().cloned().collect() } + pub fn get_vmctx_reg() -> GPR { + GPR::R15 + } + /// Picks an unused general purpose register for local/stack/argument use. /// /// This method does not mark the register as used. @@ -321,4 +327,120 @@ impl Machine { assembler.emit_add(Size::S64, Location::Imm32(delta_stack_offset as u32), Location::GPR(GPR::RSP)); } } + + pub fn init_locals(&mut self, a: &mut E, n: usize, n_params: usize) -> Vec { + // Use callee-saved registers for locals. + fn get_local_location(idx: usize) -> Location { + match idx { + 0 => Location::GPR(GPR::R10), + 1 => Location::GPR(GPR::R11), + 2 => Location::GPR(GPR::R12), + 3 => Location::GPR(GPR::R13), + 4 => Location::GPR(GPR::R14), + _ => Location::Memory(GPR::RBP, -(((idx - 4) * 8) as i32)), + } + } + + let mut locations: Vec = vec! []; + let mut allocated: usize = 0; + + // Determine locations for parameters. + for i in 0..n_params { + let loc = Self::get_param_location(i + 1); + locations.push(match loc { + Location::GPR(x) => { + let old_idx = allocated; + allocated += 1; + get_local_location(old_idx) + }, + Location::Memory(_, _) => loc, + _ => unreachable!(), + }); + } + + // Determine locations for normal locals. + for i in n_params..n { + locations.push(get_local_location(allocated)); + allocated += 1; + } + + // How many machine stack slots did all the locals use? + let num_mem_slots = locations.iter().filter(|&&loc| { + match loc { + Location::Memory(_, _) => true, + _ => false, + } + }).count(); + + // Move RSP down to reserve space for machine stack slots. + if num_mem_slots > 0 { + a.emit_sub(Size::S64, Location::Imm32((num_mem_slots * 8) as u32), Location::GPR(GPR::RSP)); + self.stack_offset.0 += num_mem_slots * 8; + } + + // Save callee-saved registers. + for loc in locations.iter() { + if let Location::GPR(x) = *loc { + a.emit_push(Size::S64, *loc); + self.stack_offset.0 += 8; + } + } + + // Save R15 for vmctx use. + a.emit_push(Size::S64, Location::GPR(GPR::R15)); + self.stack_offset.0 += 8; + + // Save the offset of static area. + self.save_area_offset = Some(MachineStackOffset(self.stack_offset.0)); + + // Load in-register parameters into the allocated locations. + for i in 0..n_params { + let loc = Self::get_param_location(i + 1); + match loc { + Location::GPR(x) => { + a.emit_mov(Size::S64, loc, locations[i]); + }, + _ => break + } + } + + // Load vmctx. + a.emit_mov(Size::S64, Self::get_param_location(0), Location::GPR(GPR::R15)); + + // Initialize all normal locals to zero. + for i in n_params..n { + a.emit_mov(Size::S64, Location::Imm32(0), locations[i]); + } + + locations + } + + pub fn finalize_locals(&mut self, a: &mut E, locations: &[Location]) { + // Unwind stack to the "save area". + a.emit_lea(Size::S64, Location::Memory(GPR::RBP, -(self.save_area_offset.as_ref().unwrap().0 as i32)), Location::GPR(GPR::RSP)); + + // Restore R15 used by vmctx. + a.emit_pop(Size::S64, Location::GPR(GPR::R15)); + + // Restore callee-saved registers. + for loc in locations.iter().rev() { + if let Location::GPR(x) = *loc { + a.emit_pop(Size::S64, *loc); + } + } + } + + pub fn get_param_location( + idx: usize + ) -> Location { + match idx { + 0 => Location::GPR(GPR::RDI), + 1 => Location::GPR(GPR::RSI), + 2 => Location::GPR(GPR::RDX), + 3 => Location::GPR(GPR::RCX), + 4 => Location::GPR(GPR::R8), + 5 => Location::GPR(GPR::R9), + _ => Location::Memory(GPR::RBP, (16 + (idx - 6) * 8) as i32), + } + } } From 6cec356a742acf66247e278fb9731536b4864b58 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Tue, 2 Apr 2019 09:47:45 -0700 Subject: [PATCH 081/413] add debug lines to all wasi syscalls --- lib/wasi/src/syscalls/mod.rs | 45 ++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 76e77d818..3d2dc5ee3 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -62,6 +62,7 @@ pub fn args_get( argv: WasmPtr, Array>, argv_buf: WasmPtr, ) -> __wasi_errno_t { + debug!("wasi::args_get"); let state = get_wasi_state(ctx); let memory = ctx.memory(0); @@ -80,6 +81,7 @@ pub fn args_sizes_get( argc: WasmPtr, argv_buf_size: WasmPtr, ) -> __wasi_errno_t { + debug!("wasi::args_sizes_get"); let memory = ctx.memory(0); let argc = wasi_try!(argc.deref(memory)); @@ -106,6 +108,7 @@ pub fn clock_res_get( clock_id: __wasi_clockid_t, resolution: WasmPtr<__wasi_timestamp_t>, ) -> __wasi_errno_t { + debug!("wasi::clock_res_get"); let memory = ctx.memory(0); let out_addr = wasi_try!(resolution.deref(memory)); @@ -128,6 +131,7 @@ pub fn clock_time_get( precision: __wasi_timestamp_t, time: WasmPtr<__wasi_timestamp_t>, ) -> __wasi_errno_t { + debug!("wasi::clock_time_get"); let memory = ctx.memory(0); let out_addr = wasi_try!(time.deref(memory)); @@ -147,6 +151,7 @@ pub fn environ_get( environ: WasmPtr, Array>, environ_buf: WasmPtr, ) -> __wasi_errno_t { + debug!("wasi::environ_get"); let state = get_wasi_state(ctx); let memory = ctx.memory(0); @@ -165,6 +170,7 @@ pub fn environ_sizes_get( environ_count: WasmPtr, environ_buf_size: WasmPtr, ) -> __wasi_errno_t { + debug!("wasi::environ_sizes_get"); let memory = ctx.memory(0); let environ_count = wasi_try!(environ_count.deref(memory)); @@ -196,6 +202,7 @@ pub fn fd_advise( len: __wasi_filesize_t, advice: __wasi_advice_t, ) -> __wasi_errno_t { + debug!("wasi::fd_advise"); unimplemented!() } @@ -214,6 +221,7 @@ pub fn fd_allocate( offset: __wasi_filesize_t, len: __wasi_filesize_t, ) -> __wasi_errno_t { + debug!("wasi::fd_allocate"); unimplemented!() } @@ -228,6 +236,7 @@ pub fn fd_allocate( /// - `__WASI_EBADF` /// If `fd` is invalid or not open (TODO: consider __WASI_EINVAL) pub fn fd_close(ctx: &mut Ctx, fd: __wasi_fd_t) -> __wasi_errno_t { + debug!("wasi::fd_close"); // FD is too large return __WASI_EMFILE; // FD is a directory (due to user input) @@ -243,6 +252,7 @@ pub fn fd_close(ctx: &mut Ctx, fd: __wasi_fd_t) -> __wasi_errno_t { /// - `__wasi_fd_t fd` /// The file descriptor to sync pub fn fd_datasync(ctx: &mut Ctx, fd: __wasi_fd_t) -> __wasi_errno_t { + debug!("wasi::fd_datasync"); unimplemented!() } @@ -259,6 +269,7 @@ pub fn fd_fdstat_get( fd: __wasi_fd_t, buf: WasmPtr<__wasi_fdstat_t>, ) -> __wasi_errno_t { + debug!("wasi::fd_fdstat_get"); let mut state = get_wasi_state(ctx); let memory = ctx.memory(0); @@ -282,6 +293,7 @@ pub fn fd_fdstat_set_flags( fd: __wasi_fd_t, flags: __wasi_fdflags_t, ) -> __wasi_errno_t { + debug!("wasi::fd_fdstat_set_flags"); unimplemented!() } @@ -300,6 +312,7 @@ pub fn fd_fdstat_set_rights( fs_rights_base: __wasi_rights_t, fs_rights_inheriting: __wasi_rights_t, ) -> __wasi_errno_t { + debug!("wasi::fd_fdstat_set_rights"); unimplemented!() } @@ -316,6 +329,7 @@ pub fn fd_filestat_get( fd: __wasi_fd_t, buf: WasmPtr<__wasi_filestat_t>, ) -> __wasi_errno_t { + debug!("wasi::fd_filestat_get"); let mut state = get_wasi_state(ctx); let memory = ctx.memory(0); @@ -332,6 +346,7 @@ pub fn fd_filestat_set_size( fd: __wasi_fd_t, st_size: __wasi_filesize_t, ) -> __wasi_errno_t { + debug!("wasi::fd_filestat_set_size"); unimplemented!() } pub fn fd_filestat_set_times( @@ -341,6 +356,7 @@ pub fn fd_filestat_set_times( st_mtim: __wasi_timestamp_t, fst_flags: __wasi_fstflags_t, ) -> __wasi_errno_t { + debug!("wasi::fd_filestat_set_times"); unimplemented!() } @@ -352,6 +368,7 @@ pub fn fd_pread( offset: __wasi_filesize_t, nread: WasmPtr, ) -> __wasi_errno_t { + debug!("wasi::fd_pread"); let memory = ctx.memory(0); if let ((Ok(iov_cells), Ok(nread_cell))) = @@ -368,6 +385,7 @@ pub fn fd_prestat_get( fd: __wasi_fd_t, buf: WasmPtr<__wasi_prestat_t>, ) -> __wasi_errno_t { + debug!("wasi::fd_prestat_get"); let memory = ctx.memory(0); if let Ok(prestat_ptr) = buf.deref(memory) { @@ -385,6 +403,7 @@ pub fn fd_prestat_dir_name( path: WasmPtr, path_len: u32, ) -> __wasi_errno_t { + debug!("wasi::fd_prestat_dir_name"); let memory = ctx.memory(0); if let Ok(path_chars) = path.deref(memory, 0, path_len) { @@ -411,6 +430,7 @@ pub fn fd_pwrite( offset: __wasi_filesize_t, nwritten: WasmPtr, ) -> __wasi_errno_t { + debug!("wasi::fd_pwrite"); unimplemented!() } @@ -433,6 +453,7 @@ pub fn fd_read( iovs_len: u32, nread: WasmPtr, ) -> __wasi_errno_t { + debug!("wasi::fd_read"); let memory = ctx.memory(0); // check __WASI_RIGHT_FD_READ @@ -469,6 +490,7 @@ pub fn fd_readdir( cookie: __wasi_dircookie_t, bufused: WasmPtr, ) -> __wasi_errno_t { + debug!("wasi::fd_readdir"); let memory = ctx.memory(0); if let (Ok(buf_arr_cell), Ok(bufused_cell)) = @@ -488,6 +510,7 @@ pub fn fd_readdir( /// - `__wasi_fd_t to` /// Location to copy file descriptor to pub fn fd_renumber(ctx: &mut Ctx, from: __wasi_fd_t, to: __wasi_fd_t) -> __wasi_errno_t { + debug!("wasi::fd_renumber"); unimplemented!() } @@ -510,6 +533,7 @@ pub fn fd_seek( whence: __wasi_whence_t, newoffset: WasmPtr<__wasi_filesize_t>, ) -> __wasi_errno_t { + debug!("wasi::fd_seek"); let memory = ctx.memory(0); // TODO: check __WASI_RIGHT_FD_SEEK // TODO: handle directory input @@ -530,6 +554,7 @@ pub fn fd_seek( /// - `__WASI_EPERM` /// - `__WAIS_ENOTCAPABLE` pub fn fd_sync(ctx: &mut Ctx, fd: __wasi_fd_t) -> __wasi_errno_t { + debug!("wasi::fd_sync"); // TODO: check __WASI_RIGHT_FD_SYNC unimplemented!() } @@ -547,6 +572,7 @@ pub fn fd_tell( fd: __wasi_fd_t, offset: WasmPtr<__wasi_filesize_t>, ) -> __wasi_errno_t { + debug!("wasi::fd_tell"); // TODO: check __WASI_RIGHT_FD_TELL unimplemented!() } @@ -572,6 +598,7 @@ pub fn fd_write( iovs_len: u32, nwritten: WasmPtr, ) -> __wasi_errno_t { + debug!("wasi::fd_write"); let memory = ctx.memory(0); // TODO: check __WASI_RIGHT_FD_WRITE // return __WASI_EISDIR if dir (probably) @@ -603,6 +630,7 @@ pub fn path_create_directory( path: WasmPtr, path_len: u32, ) -> __wasi_errno_t { + debug!("wasi::path_create_directory"); // check __WASI_RIGHT_PATH_CREATE_DIRECTORY unimplemented!() } @@ -629,6 +657,7 @@ pub fn path_filestat_get( path_len: u32, buf: WasmPtr<__wasi_filestat_t>, ) -> __wasi_errno_t { + debug!("wasi::path_filestat_get"); let mut state = get_wasi_state(ctx); let memory = ctx.memory(0); @@ -663,6 +692,7 @@ pub fn path_filestat_set_times( st_mtim: __wasi_timestamp_t, fst_flags: __wasi_fstflags_t, ) -> __wasi_errno_t { + debug!("wasi::path_filestat_set_times"); unimplemented!() } @@ -693,6 +723,7 @@ pub fn path_link( new_path: WasmPtr, new_path_len: u32, ) -> __wasi_errno_t { + debug!("wasi::path_link"); unimplemented!() } @@ -732,6 +763,7 @@ pub fn path_open( fs_flags: __wasi_fdflags_t, fd: WasmPtr<__wasi_fd_t>, ) -> __wasi_errno_t { + debug!("wasi::path_open"); let memory = ctx.memory(0); if path_len > 1024 /* TODO: find actual upper bound on name size (also this is a path, not a name :think-fish:) */ @@ -767,6 +799,7 @@ pub fn path_readlink( buf_len: u32, bufused: WasmPtr, ) -> __wasi_errno_t { + debug!("wasi::path_readlink"); unimplemented!() } pub fn path_remove_directory( @@ -775,6 +808,7 @@ pub fn path_remove_directory( path: WasmPtr, path_len: u32, ) -> __wasi_errno_t { + debug!("wasi::path_remove_directory"); unimplemented!() } pub fn path_rename( @@ -786,6 +820,7 @@ pub fn path_rename( new_path: WasmPtr, new_path_len: u32, ) -> __wasi_errno_t { + debug!("wasi::path_rename"); unimplemented!() } pub fn path_symlink( @@ -796,6 +831,7 @@ pub fn path_symlink( new_path: WasmPtr, new_path_len: u32, ) -> __wasi_errno_t { + debug!("wasi::path_symlink"); unimplemented!() } pub fn path_unlink_file( @@ -804,6 +840,7 @@ pub fn path_unlink_file( path: WasmPtr, path_len: u32, ) -> __wasi_errno_t { + debug!("wasi::path_unlink_file"); unimplemented!() } pub fn poll_oneoff( @@ -813,12 +850,15 @@ pub fn poll_oneoff( nsubscriptions: u32, nevents: WasmPtr, ) -> __wasi_errno_t { + debug!("wasi::poll_oneoff"); unimplemented!() } pub fn proc_exit(ctx: &mut Ctx, rval: __wasi_exitcode_t) -> Result<(), &'static str> { + debug!("wasi::proc_exit"); Err("Instance exited") } pub fn proc_raise(ctx: &mut Ctx, sig: __wasi_signal_t) -> __wasi_errno_t { + debug!("wasi::proc_raise"); unimplemented!() } @@ -830,6 +870,7 @@ pub fn proc_raise(ctx: &mut Ctx, sig: __wasi_signal_t) -> __wasi_errno_t { /// - `size_t buf_len` /// The number of bytes that will be written pub fn random_get(ctx: &mut Ctx, buf: WasmPtr, buf_len: u32) -> __wasi_errno_t { + debug!("wasi::random_get"); let mut rng = thread_rng(); let memory = ctx.memory(0); @@ -846,6 +887,7 @@ pub fn random_get(ctx: &mut Ctx, buf: WasmPtr, buf_len: u32) -> __was /// ### `sched_yield()` /// Yields execution of the thread pub fn sched_yield(ctx: &mut Ctx) -> __wasi_errno_t { + debug!("wasi::sched_yield"); ::std::thread::yield_now(); __WASI_ESUCCESS } @@ -859,6 +901,7 @@ pub fn sock_recv( ro_datalen: WasmPtr, ro_flags: WasmPtr<__wasi_roflags_t>, ) -> __wasi_errno_t { + debug!("wasi::sock_recv"); unimplemented!() } pub fn sock_send( @@ -869,8 +912,10 @@ pub fn sock_send( si_flags: __wasi_siflags_t, so_datalen: WasmPtr, ) -> __wasi_errno_t { + debug!("wasi::sock_send"); unimplemented!() } pub fn sock_shutdown(ctx: &mut Ctx, sock: __wasi_fd_t, how: __wasi_sdflags_t) -> __wasi_errno_t { + debug!("wasi::sock_shutdown"); unimplemented!() } From 435629300ba7e047dd799b1b192bd17b2d59ed18 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Tue, 2 Apr 2019 10:22:45 -0700 Subject: [PATCH 082/413] get debug statements working; add some extra info --- lib/wasi/src/lib.rs | 2 +- lib/wasi/src/syscalls/mod.rs | 20 +++++++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/lib/wasi/src/lib.rs b/lib/wasi/src/lib.rs index c6908988c..5183dc511 100644 --- a/lib/wasi/src/lib.rs +++ b/lib/wasi/src/lib.rs @@ -15,7 +15,7 @@ use std::ffi::c_void; pub use self::utils::is_wasi_module; -use wasmer_runtime_core::{func, import::ImportObject, imports}; +use wasmer_runtime_core::{debug, func, import::ImportObject, imports}; pub fn generate_import_object(args: Vec>, envs: Vec>) -> ImportObject { let state_gen = move || { diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 3d2dc5ee3..1a6a1d45e 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -11,7 +11,7 @@ use crate::{ state::WasiState, }; use rand::{thread_rng, Rng}; -use wasmer_runtime_core::{memory::Memory, vm::Ctx}; +use wasmer_runtime_core::{debug, memory::Memory, vm::Ctx}; #[cfg(any(target_os = "linux", target_os = "macos"))] pub use unix::*; @@ -269,7 +269,7 @@ pub fn fd_fdstat_get( fd: __wasi_fd_t, buf: WasmPtr<__wasi_fdstat_t>, ) -> __wasi_errno_t { - debug!("wasi::fd_fdstat_get"); + debug!("wasi::fd_fdstat_get: fd={}", fd); let mut state = get_wasi_state(ctx); let memory = ctx.memory(0); @@ -385,7 +385,7 @@ pub fn fd_prestat_get( fd: __wasi_fd_t, buf: WasmPtr<__wasi_prestat_t>, ) -> __wasi_errno_t { - debug!("wasi::fd_prestat_get"); + debug!("wasi::fd_prestat_get: fd={}", fd); let memory = ctx.memory(0); if let Ok(prestat_ptr) = buf.deref(memory) { @@ -403,10 +403,20 @@ pub fn fd_prestat_dir_name( path: WasmPtr, path_len: u32, ) -> __wasi_errno_t { - debug!("wasi::fd_prestat_dir_name"); + debug!( + "wasi::fd_prestat_dir_name: fd={}, path_len={}", + fd, path_len + ); let memory = ctx.memory(0); if let Ok(path_chars) = path.deref(memory, 0, path_len) { + debug!( + "=> path: {}", + path_chars + .iter() + .map(|c| c.get() as char) + .collect::() + ); if true /* check if dir */ { @@ -854,7 +864,7 @@ pub fn poll_oneoff( unimplemented!() } pub fn proc_exit(ctx: &mut Ctx, rval: __wasi_exitcode_t) -> Result<(), &'static str> { - debug!("wasi::proc_exit"); + debug!("wasi::proc_exit, {}", rval); Err("Instance exited") } pub fn proc_raise(ctx: &mut Ctx, sig: __wasi_signal_t) -> __wasi_errno_t { From d421e91407270dcf2c0647ebd5e82456a77fc91a Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Tue, 2 Apr 2019 10:58:22 -0700 Subject: [PATCH 083/413] implement some of fd_prestat_get --- lib/wasi/src/lib.rs | 2 +- lib/wasi/src/state.rs | 15 +++++++++++++++ lib/wasi/src/syscalls/mod.rs | 21 ++++++++++++++------- lib/wasi/src/syscalls/types.rs | 31 +++++++++++++++++++++++++++++++ 4 files changed, 61 insertions(+), 8 deletions(-) diff --git a/lib/wasi/src/lib.rs b/lib/wasi/src/lib.rs index 5183dc511..c6908988c 100644 --- a/lib/wasi/src/lib.rs +++ b/lib/wasi/src/lib.rs @@ -15,7 +15,7 @@ use std::ffi::c_void; pub use self::utils::is_wasi_module; -use wasmer_runtime_core::{debug, func, import::ImportObject, imports}; +use wasmer_runtime_core::{func, import::ImportObject, imports}; pub fn generate_import_object(args: Vec>, envs: Vec>) -> ImportObject { let state_gen = move || { diff --git a/lib/wasi/src/state.rs b/lib/wasi/src/state.rs index 49d8335b3..2f7cb8ef5 100644 --- a/lib/wasi/src/state.rs +++ b/lib/wasi/src/state.rs @@ -194,6 +194,21 @@ impl WasiFs { fs_rights_inheriting: fd.rights, // TODO(lachlan): Is this right? }) } + + pub fn prestat_fd(&self, fd: __wasi_fd_t) -> Result<__wasi_prestat_t, __wasi_errno_t> { + let fd = self.fd_map.get(&fd).ok_or(__WASI_EBADF)?; + + let inode_val = &self.inodes[fd.inode]; + + if inode_val.is_preopened { + Ok(PrestatEnum::PreOpenDir { + pr_name_len: inode_val.name.len() as u32, + } + .get_untagged()) + } else { + Err(__WASI_EBADF) + } + } } pub struct WasiState<'a> { diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 1a6a1d45e..4e86d4d12 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -380,6 +380,14 @@ pub fn fd_pread( } } +/// ### `fd_prestat_get()` +/// Get metadata about a preopened file descriptor +/// Input: +/// - `__wasi_fd_t fd` +/// The preopened file descriptor to query +/// Output: +/// - `__wasi_prestat *buf` +/// Where the metadata will be written pub fn fd_prestat_get( ctx: &mut Ctx, fd: __wasi_fd_t, @@ -388,13 +396,12 @@ pub fn fd_prestat_get( debug!("wasi::fd_prestat_get: fd={}", fd); let memory = ctx.memory(0); - if let Ok(prestat_ptr) = buf.deref(memory) { - // open fd - // write info to prestat_ptr - __WASI_ESUCCESS - } else { - __WASI_EFAULT - } + let prestat_ptr = wasi_try!(buf.deref(memory)); + + let state = get_wasi_state(ctx); + prestat_ptr.set(wasi_try!(state.fs.prestat_fd(fd))); + + __WASI_ESUCCESS } pub fn fd_prestat_dir_name( diff --git a/lib/wasi/src/syscalls/types.rs b/lib/wasi/src/syscalls/types.rs index 17098aacf..157720675 100644 --- a/lib/wasi/src/syscalls/types.rs +++ b/lib/wasi/src/syscalls/types.rs @@ -191,6 +191,37 @@ pub struct __wasi_prestat_t { u: __wasi_prestat_u, } +#[derive(Copy, Clone)] +pub enum PrestatEnum { + PreOpenDir { pr_name_len: u32 }, +} + +impl __wasi_prestat_t { + pub fn get_tagged(&self) -> PrestatEnum { + match self.pr_type { + __WASI_PREOPENTYPE_DIR => PrestatEnum::PreOpenDir { + pr_name_len: unsafe { self.u.dir.pr_name_len }, + }, + _ => panic!("Invalid enum variant in __wasi_prestat_t: {}", self.pr_type), + } + } +} + +impl PrestatEnum { + pub fn get_untagged(&self) -> __wasi_prestat_t { + match self { + PrestatEnum::PreOpenDir { pr_name_len } => __wasi_prestat_t { + pr_type: __WASI_PREOPENTYPE_DIR, + u: __wasi_prestat_u { + dir: __wasi_prestat_u_dir_t { + pr_name_len: *pr_name_len, + }, + }, + }, + } + } +} + unsafe impl ValueType for __wasi_prestat_t {} #[derive(Debug, Copy, Clone, PartialEq, Eq)] From 242f9f679d8bf7e84f5d178bf3913e3f8f95bf81 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Tue, 2 Apr 2019 11:43:04 -0700 Subject: [PATCH 084/413] add hacked together impl of write for stdout and stderr --- lib/wasi/src/syscalls/mod.rs | 53 ++++++++++++++++++++++++++++++------ 1 file changed, 45 insertions(+), 8 deletions(-) diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 4e86d4d12..20586a924 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -11,6 +11,7 @@ use crate::{ state::WasiState, }; use rand::{thread_rng, Rng}; +use std::io::{self, Write}; use wasmer_runtime_core::{debug, memory::Memory, vm::Ctx}; #[cfg(any(target_os = "linux", target_os = "macos"))] @@ -181,7 +182,7 @@ pub fn environ_sizes_get( environ_count.set(state.envs.len() as u32); environ_buf_size.set(state.envs.iter().map(|v| v.len() as u32).sum()); - __WASI_EOVERFLOW + __WASI_ESUCCESS } /// ### `fd_advise()` @@ -615,17 +616,53 @@ pub fn fd_write( iovs_len: u32, nwritten: WasmPtr, ) -> __wasi_errno_t { - debug!("wasi::fd_write"); + debug!("wasi::fd_write: fd={}", fd); let memory = ctx.memory(0); // TODO: check __WASI_RIGHT_FD_WRITE // return __WASI_EISDIR if dir (probably) - if let (Ok(iovs_arr_cell), Ok(nwritten_cell)) = - (iovs.deref(memory, 0, iovs_len), nwritten.deref(memory)) - { - unimplemented!() - } else { - __WASI_EFAULT + let iovs_arr_cell = wasi_try!(iovs.deref(memory, 0, iovs_len)); + let nwritten_cell = wasi_try!(nwritten.deref(memory)); + let mut bytes_written = 0; + + match fd { + 0 => unimplemented!(), + 1 => { + let stdout = io::stdout(); + let mut handle = stdout.lock(); + + for iov in iovs_arr_cell { + let iov_inner = iov.get(); + let bytes = wasi_try!(iov_inner.buf.deref(memory, 0, iov_inner.buf_len)); + wasi_try!(handle + .write(&bytes.iter().map(|b_cell| b_cell.get()).collect::>()) + .map_err(|_| __WASI_EIO)); + + // TODO: handle failure more accurately + bytes_written += iov_inner.buf_len; + } + } + 2 => { + let stderr = io::stderr(); + let mut handle = stderr.lock(); + + // TODO: abstract this + for iov in iovs_arr_cell { + let iov_inner = iov.get(); + let bytes = wasi_try!(iov_inner.buf.deref(memory, 0, iov_inner.buf_len)); + wasi_try!(handle + .write(&bytes.iter().map(|b_cell| b_cell.get()).collect::>()) + .map_err(|_| __WASI_EIO)); + + // TODO: handle failure more accurately + bytes_written += iov_inner.buf_len; + } + } + other => unimplemented!(), } + + nwritten_cell.set(bytes_written); + + __WASI_ESUCCESS } /// ### `path_create_directory()` From 3a6e2c9c37fdc8cd06a314c399805daf968da6a8 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Tue, 2 Apr 2019 11:49:05 -0700 Subject: [PATCH 085/413] Change tagged and untagged methods --- lib/wasi/src/state.rs | 11 +++-- lib/wasi/src/syscalls/types.rs | 86 +++++++++++++++++++++++++--------- 2 files changed, 72 insertions(+), 25 deletions(-) diff --git a/lib/wasi/src/state.rs b/lib/wasi/src/state.rs index 2f7cb8ef5..6fda1b8a3 100644 --- a/lib/wasi/src/state.rs +++ b/lib/wasi/src/state.rs @@ -201,10 +201,13 @@ impl WasiFs { let inode_val = &self.inodes[fd.inode]; if inode_val.is_preopened { - Ok(PrestatEnum::PreOpenDir { - pr_name_len: inode_val.name.len() as u32, - } - .get_untagged()) + Ok(__wasi_prestat_t { + pr_type: __WASI_PREOPENTYPE_DIR, + u: PrestatEnum::Dir { + pr_name_len: inode_val.name.len() as u32, + } + .untagged(), + }) } else { Err(__WASI_EBADF) } diff --git a/lib/wasi/src/syscalls/types.rs b/lib/wasi/src/syscalls/types.rs index 157720675..b6f7bada2 100644 --- a/lib/wasi/src/syscalls/types.rs +++ b/lib/wasi/src/syscalls/types.rs @@ -134,6 +134,24 @@ pub union __wasi_event_u { fd_readwrite: __wasi_event_fd_readwrite_t, } +#[derive(Copy, Clone)] +pub enum EventEnum { + FdReadWrite { + nbytes: __wasi_filesize_t, + flags: __wasi_eventrwflags_t, + }, +} + +impl EventEnum { + pub fn untagged(self) -> __wasi_event_u { + match self { + EventEnum::FdReadWrite { nbytes, flags } => __wasi_event_u { + fd_readwrite: __wasi_event_fd_readwrite_t { nbytes, flags }, + }, + } + } +} + #[derive(Copy, Clone)] #[repr(C)] pub struct __wasi_event_t { @@ -143,6 +161,18 @@ pub struct __wasi_event_t { pub u: __wasi_event_u, } +impl __wasi_event_t { + pub fn tagged(&self) -> Option { + match self.type_ { + __WASI_EVENTTYPE_FD_READ | __WASI_EVENTTYPE_FD_WRITE => Some(EventEnum::FdReadWrite { + nbytes: unsafe { self.u.fd_readwrite.nbytes }, + flags: unsafe { self.u.fd_readwrite.flags }, + }), + _ => None, + } + } +} + pub type __wasi_eventrwflags_t = u16; pub const __WASI_EVENT_FD_READWRITE_HANGUP: u16 = 1 << 0; @@ -171,7 +201,7 @@ pub const __WASI_PREOPENTYPE_DIR: u8 = 0; #[derive(Debug, Copy, Clone, PartialEq, Eq)] #[repr(C)] pub struct __wasi_prestat_u_dir_t { - pr_name_len: u32, + pub pr_name_len: u32, } unsafe impl ValueType for __wasi_prestat_u_dir_t {} @@ -187,37 +217,32 @@ unsafe impl ValueType for __wasi_prestat_u {} #[derive(Copy, Clone)] #[repr(C)] pub struct __wasi_prestat_t { - pr_type: __wasi_preopentype_t, - u: __wasi_prestat_u, + pub pr_type: __wasi_preopentype_t, + pub u: __wasi_prestat_u, } #[derive(Copy, Clone)] pub enum PrestatEnum { - PreOpenDir { pr_name_len: u32 }, + Dir { pr_name_len: u32 }, } -impl __wasi_prestat_t { - pub fn get_tagged(&self) -> PrestatEnum { - match self.pr_type { - __WASI_PREOPENTYPE_DIR => PrestatEnum::PreOpenDir { - pr_name_len: unsafe { self.u.dir.pr_name_len }, +impl PrestatEnum { + pub fn untagged(self) -> __wasi_prestat_u { + match self { + PrestatEnum::Dir { pr_name_len } => __wasi_prestat_u { + dir: __wasi_prestat_u_dir_t { pr_name_len }, }, - _ => panic!("Invalid enum variant in __wasi_prestat_t: {}", self.pr_type), } } } -impl PrestatEnum { - pub fn get_untagged(&self) -> __wasi_prestat_t { - match self { - PrestatEnum::PreOpenDir { pr_name_len } => __wasi_prestat_t { - pr_type: __WASI_PREOPENTYPE_DIR, - u: __wasi_prestat_u { - dir: __wasi_prestat_u_dir_t { - pr_name_len: *pr_name_len, - }, - }, - }, +impl __wasi_prestat_t { + pub fn tagged(&self) -> Option { + match self.pr_type { + __WASI_PREOPENTYPE_DIR => Some(PrestatEnum::Dir { + pr_name_len: unsafe { self.u.dir.pr_name_len }, + }), + _ => None, } } } @@ -398,6 +423,25 @@ pub struct __wasi_subscription_t { pub u: __wasi_subscription_u, } +pub enum SubscriptionEnum { + Clock(__wasi_subscription_clock_t), + FdReadWrite(__wasi_subscription_fs_readwrite_t), +} + +impl __wasi_subscription_t { + pub fn tagged(&self) -> Option { + match self.type_ { + __WASI_EVENTTYPE_CLOCK => Some(SubscriptionEnum::Clock(unsafe { self.u.clock })), + __WASI_EVENTTYPE_FD_READ | __WASI_EVENTTYPE_FD_WRITE => { + Some(SubscriptionEnum::FdReadWrite(unsafe { + self.u.fd_readwrite + })) + } + _ => None, + } + } +} + pub type __wasi_timestamp_t = u64; pub type __wasi_userdata_t = u64; From 6278ced7fc596e66b07fc2836d9efb795e18cc31 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Tue, 2 Apr 2019 12:06:35 -0700 Subject: [PATCH 086/413] implement fd_write for files --- lib/wasi/src/state.rs | 28 +++++++------- lib/wasi/src/syscalls/mod.rs | 72 +++++++++++++++++++++++------------- 2 files changed, 60 insertions(+), 40 deletions(-) diff --git a/lib/wasi/src/state.rs b/lib/wasi/src/state.rs index 2f7cb8ef5..367c948f6 100644 --- a/lib/wasi/src/state.rs +++ b/lib/wasi/src/state.rs @@ -17,10 +17,10 @@ use zbox::{init_env as zbox_init_env, File, FileType, OpenOptions, Repo, RepoOpe pub const MAX_SYMLINKS: usize = 100; pub struct InodeVal { - stat: __wasi_filestat_t, - is_preopened: bool, - name: String, - kind: Kind, + pub stat: __wasi_filestat_t, + pub is_preopened: bool, + pub name: String, + pub kind: Kind, } pub enum Kind { @@ -41,19 +41,19 @@ pub enum Kind { } pub struct Fd { - rights: __wasi_rights_t, - flags: __wasi_fdflags_t, - offset: u64, - inode: Inode, + pub rights: __wasi_rights_t, + pub flags: __wasi_fdflags_t, + pub offset: u64, + pub inode: Inode, } pub struct WasiFs { - repo: Repo, - name_map: HashMap, - inodes: Arena, - fd_map: HashMap, - next_fd: Cell, - inode_counter: Cell, + pub repo: Repo, + pub name_map: HashMap, + pub inodes: Arena, + pub fd_map: HashMap, + pub next_fd: Cell, + pub inode_counter: Cell, } impl WasiFs { diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 20586a924..f347a85cb 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -8,9 +8,10 @@ pub mod windows; use self::types::*; use crate::{ ptr::{Array, WasmPtr}, - state::WasiState, + state::{Kind, WasiState}, }; use rand::{thread_rng, Rng}; +use std::cell::Cell; use std::io::{self, Write}; use wasmer_runtime_core::{debug, memory::Memory, vm::Ctx}; @@ -619,46 +620,65 @@ pub fn fd_write( debug!("wasi::fd_write: fd={}", fd); let memory = ctx.memory(0); // TODO: check __WASI_RIGHT_FD_WRITE - // return __WASI_EISDIR if dir (probably) let iovs_arr_cell = wasi_try!(iovs.deref(memory, 0, iovs_len)); let nwritten_cell = wasi_try!(nwritten.deref(memory)); - let mut bytes_written = 0; - match fd { - 0 => unimplemented!(), + fn write_bytes( + mut write_loc: T, + memory: &Memory, + iovs_arr_cell: &[Cell<__wasi_ciovec_t>], + ) -> Result { + let mut bytes_written = 0; + for iov in iovs_arr_cell { + let iov_inner = iov.get(); + let bytes = iov_inner.buf.deref(memory, 0, iov_inner.buf_len)?; + write_loc + .write(&bytes.iter().map(|b_cell| b_cell.get()).collect::>()) + .map_err(|_| __WASI_EIO)?; + + // TODO: handle failure more accurately + bytes_written += iov_inner.buf_len; + } + Ok(bytes_written) + } + + let bytes_written = match fd { + 0 => return __WASI_EINVAL, 1 => { let stdout = io::stdout(); let mut handle = stdout.lock(); - for iov in iovs_arr_cell { - let iov_inner = iov.get(); - let bytes = wasi_try!(iov_inner.buf.deref(memory, 0, iov_inner.buf_len)); - wasi_try!(handle - .write(&bytes.iter().map(|b_cell| b_cell.get()).collect::>()) - .map_err(|_| __WASI_EIO)); - - // TODO: handle failure more accurately - bytes_written += iov_inner.buf_len; - } + wasi_try!(write_bytes(handle, memory, iovs_arr_cell)) } + 2 => { let stderr = io::stderr(); let mut handle = stderr.lock(); - // TODO: abstract this - for iov in iovs_arr_cell { - let iov_inner = iov.get(); - let bytes = wasi_try!(iov_inner.buf.deref(memory, 0, iov_inner.buf_len)); - wasi_try!(handle - .write(&bytes.iter().map(|b_cell| b_cell.get()).collect::>()) - .map_err(|_| __WASI_EIO)); + wasi_try!(write_bytes(handle, memory, iovs_arr_cell)) + } + _ => { + let state = get_wasi_state(ctx); + let fd_entry = wasi_try!(state.fs.fd_map.get(&fd).ok_or(__WASI_EBADF)); - // TODO: handle failure more accurately - bytes_written += iov_inner.buf_len; + if fd_entry.rights & __WASI_RIGHT_FD_WRITE == 0 { + // TODO: figure out the error to return when lacking rights + return __WASI_EACCES; + } + + let inode = &mut state.fs.inodes[fd_entry.inode]; + + match &mut inode.kind { + Kind::File { handle } => wasi_try!(write_bytes(handle, memory, iovs_arr_cell)), + Kind::Dir { .. } => { + // TODO: verify + return __WASI_EISDIR; + } + Kind::Symlink { .. } => unimplemented!(), + Kind::Buffer { buffer } => wasi_try!(write_bytes(buffer, memory, iovs_arr_cell)), } } - other => unimplemented!(), - } + }; nwritten_cell.set(bytes_written); From a4547e36e29d43c66d301493f1f37a465f896587 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Tue, 2 Apr 2019 12:11:05 -0700 Subject: [PATCH 087/413] update cursor in file when writing to it --- lib/wasi/src/syscalls/mod.rs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index f347a85cb..76097436e 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -619,7 +619,6 @@ pub fn fd_write( ) -> __wasi_errno_t { debug!("wasi::fd_write: fd={}", fd); let memory = ctx.memory(0); - // TODO: check __WASI_RIGHT_FD_WRITE let iovs_arr_cell = wasi_try!(iovs.deref(memory, 0, iovs_len)); let nwritten_cell = wasi_try!(nwritten.deref(memory)); @@ -659,24 +658,31 @@ pub fn fd_write( } _ => { let state = get_wasi_state(ctx); - let fd_entry = wasi_try!(state.fs.fd_map.get(&fd).ok_or(__WASI_EBADF)); + let fd_entry = wasi_try!(state.fs.fd_map.get_mut(&fd).ok_or(__WASI_EBADF)); if fd_entry.rights & __WASI_RIGHT_FD_WRITE == 0 { // TODO: figure out the error to return when lacking rights return __WASI_EACCES; } + let offset = fd_entry.offset as usize; let inode = &mut state.fs.inodes[fd_entry.inode]; - match &mut inode.kind { + let bytes_written = match &mut inode.kind { Kind::File { handle } => wasi_try!(write_bytes(handle, memory, iovs_arr_cell)), Kind::Dir { .. } => { // TODO: verify return __WASI_EISDIR; } Kind::Symlink { .. } => unimplemented!(), - Kind::Buffer { buffer } => wasi_try!(write_bytes(buffer, memory, iovs_arr_cell)), - } + Kind::Buffer { buffer } => { + wasi_try!(write_bytes(&mut buffer[offset..], memory, iovs_arr_cell)) + } + }; + + fd_entry.offset += bytes_written as u64; + + bytes_written } }; From 0b9fc5ab457369320426859ed50992396315e464 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Tue, 2 Apr 2019 14:13:03 -0700 Subject: [PATCH 088/413] add null termination to args for wasi --- lib/wasi/src/syscalls/mod.rs | 39 +++++++++++++++++++++++++----------- src/bin/wasmer.rs | 4 ++-- 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 76097436e..c9ef0b552 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -39,12 +39,13 @@ fn write_buffer_array( for ((i, sub_buffer), ptr) in from.iter().enumerate().zip(ptrs.iter()) { ptr.set(WasmPtr::new(buffer.offset() + current_buffer_offset)); - let cells = wasi_try!(buffer.deref(memory, current_buffer_offset, sub_buffer.len() as u32)); + let cells = + wasi_try!(buffer.deref(memory, current_buffer_offset, sub_buffer.len() as u32 + 1)); - for (cell, &byte) in cells.iter().zip(sub_buffer.iter()) { + for (cell, &byte) in cells.iter().zip(sub_buffer.iter().chain([0].iter())) { cell.set(byte); } - current_buffer_offset += sub_buffer.len() as u32; + current_buffer_offset += sub_buffer.len() as u32 + 1; } __WASI_ESUCCESS @@ -92,7 +93,7 @@ pub fn args_sizes_get( let state = get_wasi_state(ctx); argc.set(state.args.len() as u32); - argv_buf_size.set(state.args.iter().map(|v| v.len() as u32).sum()); + argv_buf_size.set(state.args.iter().map(|v| v.len() as u32 + 1).sum()); __WASI_ESUCCESS } @@ -472,18 +473,32 @@ pub fn fd_read( iovs_len: u32, nread: WasmPtr, ) -> __wasi_errno_t { - debug!("wasi::fd_read"); + debug!("wasi::fd_read: fd={}", fd); let memory = ctx.memory(0); + let iovs_arr_cell = wasi_try!(iovs.deref(memory, 0, iovs_len)); + let nwritten_cell = wasi_try!(nread.deref(memory)); // check __WASI_RIGHT_FD_READ - if let (Ok(iovs_arr_cell), Ok(nwritten_cell)) = - (iovs.deref(memory, 0, iovs_len), nread.deref(memory)) - { - unimplemented!() - } else { - __WASI_EFAULT - } + /*fn read_bytes( + mut reader: T, + memory: &Memory, + iovs_arr_cell: &[Cell<__wasi_iovec_t>], + ) -> Result { + let mut bytes_read = 0; + + for iov in iovs_arr_cell { + let iov_inner = iov.get(); + let bytes = iov_inner.buf.deref(memory, 0, iov_inner.buf_len)?; + let raw_bytes = unsafe { bytes as &mut [u8]}; + reader.read(raw_bytes) + + // TODO: handle failure more accurately + bytes_written += iov_inner.buf_len; + } + Ok(bytes_written) + }*/ + __WASI_ESUCCESS } /// ### `fd_readdir()` diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index ceb6604d6..4b17f50ef 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -224,9 +224,9 @@ fn execute_wasm(options: &Run) -> Result<(), String> { ( InstanceABI::WASI, wasmer_wasi::generate_import_object( - options - .args + [options.path.to_str().unwrap().to_owned()] .iter() + .chain(options.args.iter()) .cloned() .map(|arg| arg.into_bytes()) .collect(), From e61c03a17648de70febe809c260d75f22418fe00 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Tue, 2 Apr 2019 15:14:19 -0700 Subject: [PATCH 089/413] impl fd_read (untested) --- lib/wasi/src/syscalls/mod.rs | 60 +++++++++++++++++++++++++++++------- 1 file changed, 49 insertions(+), 11 deletions(-) diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index c9ef0b552..7db140453 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -12,7 +12,7 @@ use crate::{ }; use rand::{thread_rng, Rng}; use std::cell::Cell; -use std::io::{self, Write}; +use std::io::{self, Read, Write}; use wasmer_runtime_core::{debug, memory::Memory, vm::Ctx}; #[cfg(any(target_os = "linux", target_os = "macos"))] @@ -477,10 +477,9 @@ pub fn fd_read( let memory = ctx.memory(0); let iovs_arr_cell = wasi_try!(iovs.deref(memory, 0, iovs_len)); - let nwritten_cell = wasi_try!(nread.deref(memory)); - // check __WASI_RIGHT_FD_READ + let nread_cell = wasi_try!(nread.deref(memory)); - /*fn read_bytes( + fn read_bytes( mut reader: T, memory: &Memory, iovs_arr_cell: &[Cell<__wasi_iovec_t>], @@ -490,14 +489,53 @@ pub fn fd_read( for iov in iovs_arr_cell { let iov_inner = iov.get(); let bytes = iov_inner.buf.deref(memory, 0, iov_inner.buf_len)?; - let raw_bytes = unsafe { bytes as &mut [u8]}; - reader.read(raw_bytes) - - // TODO: handle failure more accurately - bytes_written += iov_inner.buf_len; + let mut raw_bytes: &mut [u8] = + unsafe { &mut *(bytes as *const [_] as *mut [_] as *mut [u8]) }; + bytes_read += reader.read(raw_bytes).map_err(|_| __WASI_EIO)? as u32; } - Ok(bytes_written) - }*/ + Ok(bytes_read) + } + + let bytes_read = match fd { + 0 => { + let stdin = io::stdin(); + let mut handle = stdin.lock(); + + wasi_try!(read_bytes(handle, memory, iovs_arr_cell)) + } + 1 | 2 => return __WASI_EINVAL, + _ => { + let state = get_wasi_state(ctx); + let fd_entry = wasi_try!(state.fs.fd_map.get_mut(&fd).ok_or(__WASI_EBADF)); + + if fd_entry.rights & __WASI_RIGHT_FD_READ == 0 { + // TODO: figure out the error to return when lacking rights + return __WASI_EACCES; + } + + let offset = fd_entry.offset as usize; + let inode = &mut state.fs.inodes[fd_entry.inode]; + + let bytes_read = match &mut inode.kind { + Kind::File { handle } => wasi_try!(read_bytes(handle, memory, iovs_arr_cell)), + Kind::Dir { .. } => { + // TODO: verify + return __WASI_EISDIR; + } + Kind::Symlink { .. } => unimplemented!(), + Kind::Buffer { buffer } => { + wasi_try!(read_bytes(&buffer[offset..], memory, iovs_arr_cell)) + } + }; + + fd_entry.offset += bytes_read as u64; + + bytes_read + } + }; + + nread_cell.set(bytes_read); + __WASI_ESUCCESS } From 2de5a5da2ba00a4252be96d45a67662122f146ab Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Tue, 2 Apr 2019 15:29:32 -0700 Subject: [PATCH 090/413] implement datasync --- lib/wasi/src/state.rs | 26 ++++++++++++++++++++++++++ lib/wasi/src/syscalls/mod.rs | 8 +++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/lib/wasi/src/state.rs b/lib/wasi/src/state.rs index 556df8319..80ba38bd8 100644 --- a/lib/wasi/src/state.rs +++ b/lib/wasi/src/state.rs @@ -7,6 +7,7 @@ use generational_arena::{Arena, Index as Inode}; use hashbrown::hash_map::{Entry, HashMap}; use std::{ cell::{Cell, RefCell}, + io::{self, Write}, ops::{Index, IndexMut}, path::PathBuf, rc::Rc, @@ -212,6 +213,31 @@ impl WasiFs { Err(__WASI_EBADF) } } + + pub fn flush(&mut self, fd: __wasi_fd_t) -> Result<(), __wasi_errno_t> { + match fd { + 0 => (), + 1 => io::stdout().flush().map_err(|_| __WASI_EIO)?, + 2 => io::stderr().flush().map_err(|_| __WASI_EIO)?, + _ => { + let fd = self.fd_map.get(&fd).ok_or(__WASI_EBADF)?; + if fd.rights & __WASI_RIGHT_FD_DATASYNC == 0 { + return Err(__WASI_EACCES); + } + + let inode = &mut self.inodes[fd.inode]; + + match &mut inode.kind { + Kind::File { handle } => handle.flush().map_err(|_| __WASI_EIO)?, + // TODO: verify this behavior + Kind::Dir { .. } => return Err(__WASI_EISDIR), + Kind::Symlink { .. } => unimplemented!(), + Kind::Buffer { .. } => (), + } + } + } + Ok(()) + } } pub struct WasiState<'a> { diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 7db140453..f1845482e 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -256,7 +256,13 @@ pub fn fd_close(ctx: &mut Ctx, fd: __wasi_fd_t) -> __wasi_errno_t { /// The file descriptor to sync pub fn fd_datasync(ctx: &mut Ctx, fd: __wasi_fd_t) -> __wasi_errno_t { debug!("wasi::fd_datasync"); - unimplemented!() + let state = get_wasi_state(ctx); + + if let Err(e) = state.fs.flush(fd) { + e + } else { + __WASI_ESUCCESS + } } /// ### `fd_fdstat_get()` From e180fd1d1a6da7cbc621d1088ec55990873774fd Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Tue, 2 Apr 2019 15:40:46 -0700 Subject: [PATCH 091/413] add set_rights syscall --- lib/wasi/src/state.rs | 1 + lib/wasi/src/syscalls/mod.rs | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/lib/wasi/src/state.rs b/lib/wasi/src/state.rs index 80ba38bd8..dc994e92c 100644 --- a/lib/wasi/src/state.rs +++ b/lib/wasi/src/state.rs @@ -43,6 +43,7 @@ pub enum Kind { pub struct Fd { pub rights: __wasi_rights_t, + pub rights_inheriting: __wasi_rights_t, pub flags: __wasi_fdflags_t, pub offset: u64, pub inode: Inode, diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index f1845482e..79df807b5 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -307,7 +307,7 @@ pub fn fd_fdstat_set_flags( } /// ### `fd_fdstat_set_rights()` -/// Set the rights of a file descriptor +/// Set the rights of a file descriptor. This can only be used to remove rights /// Inputs: /// - `__wasi_fd_t fd` /// The file descriptor to apply the new rights to @@ -322,7 +322,20 @@ pub fn fd_fdstat_set_rights( fs_rights_inheriting: __wasi_rights_t, ) -> __wasi_errno_t { debug!("wasi::fd_fdstat_set_rights"); - unimplemented!() + let state = get_wasi_state(ctx); + let fd_entry = wasi_try!(state.fs.fd_map.get_mut(&fd).ok_or(__WASI_EBADF)); + + // ensure new rights are a subset of current rights + if fd_entry.rights | fs_rights_base != fd_entry.rights + || fd_entry.rights_inheriting | fs_rights_inheriting != fd_entry.rights_inheriting + { + return __WASI_ENOTCAPABLE; + } + + fd_entry.rights = fs_rights_base; + fd_entry.rights_inheriting = fs_rights_inheriting; + + __WASI_ESUCCESS } /// ### `fd_filestat_get()` From fe4195fff60b997c804feb8efc0f29e260949de5 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Tue, 2 Apr 2019 15:45:12 -0700 Subject: [PATCH 092/413] impl set_flags on fd --- lib/wasi/src/syscalls/mod.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 79df807b5..21bc1c57f 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -303,7 +303,15 @@ pub fn fd_fdstat_set_flags( flags: __wasi_fdflags_t, ) -> __wasi_errno_t { debug!("wasi::fd_fdstat_set_flags"); - unimplemented!() + let state = get_wasi_state(ctx); + let fd_entry = wasi_try!(state.fs.fd_map.get_mut(&fd).ok_or(__WASI_EBADF)); + + if fd_entry.rights & __WASI_RIGHT_FD_FDSTAT_SET_FLAGS == 0 { + return __WASI_EACCES; + } + + fd_entry.flags = flags; + __WASI_ESUCCESS } /// ### `fd_fdstat_set_rights()` From 697bdc7d46780013847696c53e61062a3f548c57 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Tue, 2 Apr 2019 15:51:49 -0700 Subject: [PATCH 093/413] add rights checking fn for future-proofing reasons --- lib/wasi/src/syscalls/mod.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 21bc1c57f..3235c5f82 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -26,6 +26,11 @@ fn get_wasi_state(ctx: &Ctx) -> &mut WasiState { unsafe { &mut *(ctx.data as *mut WasiState) } } +/// checks that `rights_check_set` is a subset of `rights_set` +fn has_rights(rights_set: __wasi_rights_t, rights_check_set: __wasi_rights_t) -> bool { + rights_set | rights_check_set == rights_set +} + #[must_use] fn write_buffer_array( memory: &Memory, @@ -306,7 +311,7 @@ pub fn fd_fdstat_set_flags( let state = get_wasi_state(ctx); let fd_entry = wasi_try!(state.fs.fd_map.get_mut(&fd).ok_or(__WASI_EBADF)); - if fd_entry.rights & __WASI_RIGHT_FD_FDSTAT_SET_FLAGS == 0 { + if !has_rights(fd_entry.rights, __WASI_RIGHT_FD_FDSTAT_SET_FLAGS) { return __WASI_EACCES; } @@ -535,7 +540,7 @@ pub fn fd_read( let state = get_wasi_state(ctx); let fd_entry = wasi_try!(state.fs.fd_map.get_mut(&fd).ok_or(__WASI_EBADF)); - if fd_entry.rights & __WASI_RIGHT_FD_READ == 0 { + if !has_rights(fd_entry.rights, __WASI_RIGHT_FD_READ) { // TODO: figure out the error to return when lacking rights return __WASI_EACCES; } @@ -740,7 +745,7 @@ pub fn fd_write( let state = get_wasi_state(ctx); let fd_entry = wasi_try!(state.fs.fd_map.get_mut(&fd).ok_or(__WASI_EBADF)); - if fd_entry.rights & __WASI_RIGHT_FD_WRITE == 0 { + if !has_rights(fd_entry.rights, __WASI_RIGHT_FD_WRITE) { // TODO: figure out the error to return when lacking rights return __WASI_EACCES; } From 37371eba6e84f60d62591e38208194b80c8e3135 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Tue, 2 Apr 2019 16:01:39 -0700 Subject: [PATCH 094/413] implement most of fd_filestat_set_times --- lib/wasi/src/syscalls/mod.rs | 42 +++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 3235c5f82..bae7325e1 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -384,6 +384,16 @@ pub fn fd_filestat_set_size( debug!("wasi::fd_filestat_set_size"); unimplemented!() } + +/// ### `fd_filestat_set_times()` +/// Set timestamp metadata on a file +/// Inputs: +/// - `__wasi_timestamp_t st_atim` +/// Last accessed time +/// - `__wasi_timestamp_t st_mtim` +/// Last modified time +/// - `__wasi_fstflags_t fst_flags` +/// Bit-vector for controlling which times get set pub fn fd_filestat_set_times( ctx: &mut Ctx, fd: __wasi_fd_t, @@ -392,7 +402,37 @@ pub fn fd_filestat_set_times( fst_flags: __wasi_fstflags_t, ) -> __wasi_errno_t { debug!("wasi::fd_filestat_set_times"); - unimplemented!() + let state = get_wasi_state(ctx); + let fd_entry = wasi_try!(state.fs.fd_map.get_mut(&fd).ok_or(__WASI_EBADF)); + + if !has_rights(fd_entry.rights, __WASI_RIGHT_FD_FILESTAT_SET_TIMES) { + return __WASI_EACCES; + } + + if (fst_flags & __WASI_FILESTAT_SET_ATIM != 0 && fst_flags & __WASI_FILESTAT_SET_ATIM_NOW != 0) + || (fst_flags & __WASI_FILESTAT_SET_MTIM != 0 + && fst_flags & __WASI_FILESTAT_SET_MTIM_NOW != 0) + { + return __WASI_EINVAL; + } + + let inode = &mut state.fs.inodes[fd_entry.inode]; + + if fst_flags & __WASI_FILESTAT_SET_ATIM != 0 { + inode.stat.st_atim = st_atim; + } else if fst_flags & __WASI_FILESTAT_SET_ATIM_NOW != 0 { + // set to current real time + unimplemented!(); + } + + if fst_flags & __WASI_FILESTAT_SET_MTIM != 0 { + inode.stat.st_mtim = st_mtim; + } else if fst_flags & __WASI_FILESTAT_SET_MTIM_NOW != 0 { + // set to current real time + unimplemented!(); + } + + __WASI_ESUCCESS } pub fn fd_pread( From 7d07b6f0b4afe5dd78017e22c3eaa60674aa3724 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Tue, 2 Apr 2019 16:16:06 -0700 Subject: [PATCH 095/413] impl fd_seek --- lib/wasi/src/syscalls/mod.rs | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index bae7325e1..be8cf1963 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -210,8 +210,11 @@ pub fn fd_advise( len: __wasi_filesize_t, advice: __wasi_advice_t, ) -> __wasi_errno_t { - debug!("wasi::fd_advise"); - unimplemented!() + debug!("wasi::fd_advise: fd={}", fd); + + // this is used for our own benefit, so just returning success is a valid + // implementation for now + __WASI_ESUCCESS } /// ### `fd_allocate` @@ -677,15 +680,26 @@ pub fn fd_seek( whence: __wasi_whence_t, newoffset: WasmPtr<__wasi_filesize_t>, ) -> __wasi_errno_t { - debug!("wasi::fd_seek"); + debug!("wasi::fd_seek: fd={}", fd); let memory = ctx.memory(0); - // TODO: check __WASI_RIGHT_FD_SEEK - // TODO: handle directory input - if let Ok(new_offset_cell) = newoffset.deref(memory) { - unimplemented!() - } else { - __WASI_EFAULT + let state = get_wasi_state(ctx); + let new_offset_cell = wasi_try!(newoffset.deref(memory)); + + let fd_entry = wasi_try!(state.fs.fd_map.get_mut(&fd).ok_or(__WASI_EBADF)); + + if !has_rights(fd_entry.rights, __WASI_RIGHT_FD_SEEK) { + return __WASI_EACCES; } + + // TODO: handle case if fd is a dir? + match whence { + __WASI_WHENCE_CUR => fd_entry.offset = (fd_entry.offset as i64 + offset) as u64, + __WASI_WHENCE_END => unimplemented!(), + __WASI_WHENCE_SET => fd_entry.offset = offset as u64, + _ => return __WASI_EINVAL, + } + + __WASI_ESUCCESS } /// ### `fd_sync()` From dd7cfac5058754305d371aeacb66114dec5646e5 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Tue, 2 Apr 2019 16:23:33 -0700 Subject: [PATCH 096/413] implement fd_tell --- lib/wasi/src/syscalls/mod.rs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index be8cf1963..bcb22b072 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -699,6 +699,8 @@ pub fn fd_seek( _ => return __WASI_EINVAL, } + new_offset_cell.set(fd_entry.offset); + __WASI_ESUCCESS } @@ -731,8 +733,19 @@ pub fn fd_tell( offset: WasmPtr<__wasi_filesize_t>, ) -> __wasi_errno_t { debug!("wasi::fd_tell"); - // TODO: check __WASI_RIGHT_FD_TELL - unimplemented!() + let memory = ctx.memory(0); + let state = get_wasi_state(ctx); + let offset_cell = wasi_try!(offset.deref(memory)); + + let fd_entry = wasi_try!(state.fs.fd_map.get_mut(&fd).ok_or(__WASI_EBADF)); + + if !has_rights(fd_entry.rights, __WASI_RIGHT_FD_TELL) { + return __WASI_EACCES; + } + + offset_cell.set(fd_entry.offset); + + __WASI_ESUCCESS } /// ### `fd_write()` From ce4676d46956561dff30041d7baef0d8283152de Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Tue, 2 Apr 2019 16:26:54 -0700 Subject: [PATCH 097/413] implement fd_renumber --- lib/wasi/src/state.rs | 1 + lib/wasi/src/syscalls/mod.rs | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/wasi/src/state.rs b/lib/wasi/src/state.rs index dc994e92c..1adc41970 100644 --- a/lib/wasi/src/state.rs +++ b/lib/wasi/src/state.rs @@ -41,6 +41,7 @@ pub enum Kind { }, } +#[derive(Clone)] pub struct Fd { pub rights: __wasi_rights_t, pub rights_inheriting: __wasi_rights_t, diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index bcb22b072..6bdead8fa 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -657,8 +657,12 @@ pub fn fd_readdir( /// - `__wasi_fd_t to` /// Location to copy file descriptor to pub fn fd_renumber(ctx: &mut Ctx, from: __wasi_fd_t, to: __wasi_fd_t) -> __wasi_errno_t { - debug!("wasi::fd_renumber"); - unimplemented!() + debug!("wasi::fd_renumber: from={}, to={}", from, to); + let state = get_wasi_state(ctx); + let fd_entry = wasi_try!(state.fs.fd_map.get(&from).ok_or(__WASI_EBADF)); + + state.fs.fd_map.insert(to, fd_entry.clone()); + __WASI_ESUCCESS } /// ### `fd_seek()` From f70b75e552c15ccad7e7c5bb83488cb4e00b97a7 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Tue, 2 Apr 2019 16:35:05 -0700 Subject: [PATCH 098/413] kind of implement fd_pwrite --- lib/wasi/src/syscalls/mod.rs | 108 ++++++++++++++++++++++++++++------- 1 file changed, 88 insertions(+), 20 deletions(-) diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 6bdead8fa..d650d9ea3 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -26,6 +26,25 @@ fn get_wasi_state(ctx: &Ctx) -> &mut WasiState { unsafe { &mut *(ctx.data as *mut WasiState) } } +fn write_bytes( + mut write_loc: T, + memory: &Memory, + iovs_arr_cell: &[Cell<__wasi_ciovec_t>], +) -> Result { + let mut bytes_written = 0; + for iov in iovs_arr_cell { + let iov_inner = iov.get(); + let bytes = iov_inner.buf.deref(memory, 0, iov_inner.buf_len)?; + write_loc + .write(&bytes.iter().map(|b_cell| b_cell.get()).collect::>()) + .map_err(|_| __WASI_EIO)?; + + // TODO: handle failure more accurately + bytes_written += iov_inner.buf_len; + } + Ok(bytes_written) +} + /// checks that `rights_check_set` is a subset of `rights_set` fn has_rights(rights_set: __wasi_rights_t, rights_check_set: __wasi_rights_t) -> bool { rights_set | rights_check_set == rights_set @@ -517,6 +536,20 @@ pub fn fd_prestat_dir_name( } } +/// ### `fd_pwrite()` +/// Write to a file without adjusting its offset +/// Inputs: +/// - `__wasi_fd_t` +/// File descriptor (opened with writing) to write to +/// - `const __wasi_ciovec_t *iovs` +/// List of vectors to read data from +/// - `u32 iovs_len` +/// Length of data in `iovs` +/// - `__wasi_filesize_t offset` +/// The offset to write at +/// Output: +/// - `u32 *nwritten` +/// Number of bytes written pub fn fd_pwrite( ctx: &mut Ctx, fd: __wasi_fd_t, @@ -526,7 +559,61 @@ pub fn fd_pwrite( nwritten: WasmPtr, ) -> __wasi_errno_t { debug!("wasi::fd_pwrite"); - unimplemented!() + // TODO: refactor, this is just copied from `fd_write`... + let memory = ctx.memory(0); + let iovs_arr_cell = wasi_try!(iovs.deref(memory, 0, iovs_len)); + let nwritten_cell = wasi_try!(nwritten.deref(memory)); + + let bytes_written = match fd { + 0 => return __WASI_EINVAL, + 1 => { + let stdout = io::stdout(); + let mut handle = stdout.lock(); + + wasi_try!(write_bytes(handle, memory, iovs_arr_cell)) + } + + 2 => { + let stderr = io::stderr(); + let mut handle = stderr.lock(); + + wasi_try!(write_bytes(handle, memory, iovs_arr_cell)) + } + _ => { + let state = get_wasi_state(ctx); + let fd_entry = wasi_try!(state.fs.fd_map.get_mut(&fd).ok_or(__WASI_EBADF)); + + if !has_rights(fd_entry.rights, __WASI_RIGHT_FD_WRITE) { + // TODO: figure out the error to return when lacking rights + return __WASI_EACCES; + } + + let inode = &mut state.fs.inodes[fd_entry.inode]; + + let bytes_written = match &mut inode.kind { + Kind::File { handle } => { + // TODO: adjust by offset + wasi_try!(write_bytes(handle, memory, iovs_arr_cell)) + } + Kind::Dir { .. } => { + // TODO: verify + return __WASI_EISDIR; + } + Kind::Symlink { .. } => unimplemented!(), + Kind::Buffer { buffer } => wasi_try!(write_bytes( + &mut buffer[(offset as usize)..], + memory, + iovs_arr_cell + )), + }; + + bytes_written + } + }; + + nwritten_cell.set(bytes_written); + + __WASI_ESUCCESS } /// ### `fd_read()` @@ -778,25 +865,6 @@ pub fn fd_write( let iovs_arr_cell = wasi_try!(iovs.deref(memory, 0, iovs_len)); let nwritten_cell = wasi_try!(nwritten.deref(memory)); - fn write_bytes( - mut write_loc: T, - memory: &Memory, - iovs_arr_cell: &[Cell<__wasi_ciovec_t>], - ) -> Result { - let mut bytes_written = 0; - for iov in iovs_arr_cell { - let iov_inner = iov.get(); - let bytes = iov_inner.buf.deref(memory, 0, iov_inner.buf_len)?; - write_loc - .write(&bytes.iter().map(|b_cell| b_cell.get()).collect::>()) - .map_err(|_| __WASI_EIO)?; - - // TODO: handle failure more accurately - bytes_written += iov_inner.buf_len; - } - Ok(bytes_written) - } - let bytes_written = match fd { 0 => return __WASI_EINVAL, 1 => { From 1ff6ed6d1bf002774a4311aaf3b6565d5561f36a Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Tue, 2 Apr 2019 22:10:49 -0500 Subject: [PATCH 099/413] Add Export and GlobalDescriptor to Runtime API --- lib/runtime-core/src/types.rs | 1 + lib/runtime/src/lib.rs | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/runtime-core/src/types.rs b/lib/runtime-core/src/types.rs index 9ee5270dd..53b4f0c06 100644 --- a/lib/runtime-core/src/types.rs +++ b/lib/runtime-core/src/types.rs @@ -207,6 +207,7 @@ pub enum Initializer { GetGlobal(ImportedGlobalIndex), } +/// Describes the mutability and type of a Global #[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq)] pub struct GlobalDescriptor { pub mutable: bool, diff --git a/lib/runtime/src/lib.rs b/lib/runtime/src/lib.rs index 66d9c6ace..a45faddc1 100644 --- a/lib/runtime/src/lib.rs +++ b/lib/runtime/src/lib.rs @@ -74,6 +74,7 @@ //! [`wasmer-clif-backend`]: https://crates.io/crates/wasmer-clif-backend //! [`compile_with`]: fn.compile_with.html +pub use wasmer_runtime_core::export::Export; pub use wasmer_runtime_core::global::Global; pub use wasmer_runtime_core::import::ImportObject; pub use wasmer_runtime_core::instance::{DynFunc, Instance}; @@ -95,7 +96,9 @@ pub mod wasm { //! Various types exposed by the Wasmer Runtime. pub use wasmer_runtime_core::global::Global; pub use wasmer_runtime_core::table::Table; - pub use wasmer_runtime_core::types::{FuncSig, MemoryDescriptor, TableDescriptor, Type, Value}; + pub use wasmer_runtime_core::types::{ + FuncSig, GlobalDescriptor, MemoryDescriptor, TableDescriptor, Type, Value, + }; } pub mod error { From 5627f805489e36f89010083978d3f70123c6552f Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Wed, 3 Apr 2019 00:13:40 -0500 Subject: [PATCH 100/413] Update to Cranelift 0.3.0 --- Cargo.lock | 84 +++++++++++++++--------------- lib/clif-backend/Cargo.toml | 10 ++-- lib/clif-backend/src/module.rs | 4 +- lib/clif-backend/src/module_env.rs | 50 ++++++++---------- lib/clif-backend/src/relocation.rs | 2 + 5 files changed, 74 insertions(+), 76 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 732daab18..dd67de9c9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,3 +1,5 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. [[package]] name = "MacTypes-sys" version = "2.1.0" @@ -288,72 +290,72 @@ dependencies = [ [[package]] name = "cranelift-bforest" -version = "0.26.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cranelift-entity 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-entity 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cranelift-codegen" -version = "0.26.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cranelift-bforest 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-codegen-meta 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-entity 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-bforest 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-codegen-meta 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-entity 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", "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)", - "target-lexicon 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "target-lexicon 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cranelift-codegen-meta" -version = "0.26.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cranelift-entity 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-entity 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cranelift-entity" -version = "0.26.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "cranelift-frontend" -version = "0.26.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cranelift-codegen 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-codegen 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "target-lexicon 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "target-lexicon 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cranelift-native" -version = "0.26.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cranelift-codegen 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-codegen 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", "raw-cpuid 6.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "target-lexicon 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "target-lexicon 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cranelift-wasm" -version = "0.26.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cast 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-codegen 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-entity 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-frontend 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-codegen 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-entity 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-frontend 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", "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)", - "wasmparser 0.22.1 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmparser 0.29.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1822,7 +1824,7 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2208,10 +2210,10 @@ name = "wasmer-clif-backend" version = "0.2.0" dependencies = [ "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-codegen 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-entity 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-native 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-wasm 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-codegen 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-entity 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-native 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-wasm 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", "hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "nix 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2220,7 +2222,7 @@ dependencies = [ "serde-bench 0.0.7 (registry+https://github.com/rust-lang/crates.io-index)", "serde_bytes 0.10.5 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "target-lexicon 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "target-lexicon 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "wasmer-runtime-core 0.2.1", "wasmer-win-exception-handler 0.2.0", "wasmparser 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2367,11 +2369,6 @@ dependencies = [ "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "wasmparser" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "wasmparser" version = "0.23.0" @@ -2382,6 +2379,11 @@ name = "wasmparser" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "wasmparser" +version = "0.29.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "which" version = "2.0.1" @@ -2538,13 +2540,13 @@ dependencies = [ "checksum constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff012e225ce166d4422e0e78419d901719760f62ae2b7969ca6b564d1b54a9e" "checksum core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "286e0b41c3a20da26536c6000a280585d519fd07b3956b43aed8a79e9edce980" "checksum core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "716c271e8613ace48344f723b60b900a93150271e5be206212d052bbc0883efa" -"checksum cranelift-bforest 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)" = "40f8ff24e9a6c89b8a846b14df9a34d2cac17cea7bdb5c81ed6b4744ee0e38bf" -"checksum cranelift-codegen 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)" = "42f5b809bd885c368e01aeec8fe04f21dcb07569834b907d75b4a7bed8d067eb" -"checksum cranelift-codegen-meta 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)" = "014c23ed3ebdc8377d41540af638245207dd169f421df042dfccc867465734ed" -"checksum cranelift-entity 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d4df40e26c0cf7b4d86919cb995bb412ee3001cc18e4f3c83a903f30b7007d8b" -"checksum cranelift-frontend 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)" = "789907218eeebebcea8122c2053d71affac91c96ce72cea35ebfdbbf547e82af" -"checksum cranelift-native 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)" = "474bee81d620a473bf43411a3d6f10ffbf7965141dc5e5b76d8d2151dde3285d" -"checksum cranelift-wasm 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49723365dab9a48b354bdc24cb6d9d5719bc1d3b858ffd2ea179d0d7d885804a" +"checksum cranelift-bforest 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e5a357d20666bf4a8c2d626a19f1b59dbca66cd844fb1e66c5612254fd0f7505" +"checksum cranelift-codegen 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ab00cb149a5bb0f7e6dd391357356a5d71c335a431e8eece94f32da2d5a043f7" +"checksum cranelift-codegen-meta 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e3797a2f450ac71297e083dd440d0cdd0d3bceabe4a3ca6bcb9e4077e9c0327d" +"checksum cranelift-entity 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5b66e28877b75b3d2b31250f780bb5db8f68ae3df681cd56add803b2567ac4fd" +"checksum cranelift-frontend 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b72d55fd732b1f7a99d043a36c54a5679b6ec8bc777c8d954fb97c4fa0fce7eb" +"checksum cranelift-native 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0239f34836621a127c2132980b2f5c32a1be1c40e2d1a9a1a9bd5af33c12aee" +"checksum cranelift-wasm 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)" = "740ebfba28c8433f06750f84819f1eb663ea9f5e4b9a81c01f4e52262d868b56" "checksum crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d663548de7f5cca343f1e0a48d14dcfb0e9eb4e079ec58883b7251539fa10aeb" "checksum crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" "checksum criterion 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "1c6e5ee5b9652d4f851418c448af105642e1f99e9a2741a8ff45c0d2c911b1e0" @@ -2710,7 +2712,7 @@ dependencies = [ "checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015" "checksum take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" "checksum tar 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)" = "c2167ff53da2a661702b3299f71a91b61b1dffef36b4b2884b1f9c67254c0133" -"checksum target-lexicon 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4af5e2227f0b887d591d3724b796a96eff04226104d872f5b3883fcd427d64b9" +"checksum target-lexicon 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d6923974ce4eb5bd28814756256d8ab71c28dd6e7483313fe7ab6614306bf633" "checksum tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8" "checksum tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "b86c784c88d98c801132806dadd3819ed29d8600836c4088e855cdf3e178ed8a" "checksum termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4096add70612622289f2fdcdbd5086dc81c1e2675e6ae58d6c4f62a16c6d7f2f" @@ -2752,9 +2754,9 @@ dependencies = [ "checksum wabt-sys 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a6265b25719e82598d104b3717375e37661d41753e2c84cde3f51050c7ed7e3c" "checksum walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "9d9d7ed3431229a144296213105a390676cc49c9b6a72bd19f3176c98e129fa1" "checksum want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "797464475f30ddb8830cc529aaaae648d581f99e2036a928877dfde027ddf6b3" -"checksum wasmparser 0.22.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f46e666ecb4a406483a59a49f9d0c17f327e70da53a128eccddae2eadb95865c" "checksum wasmparser 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b5e01c420bc7d36e778bd242e1167b079562ba8b34087122cc9057187026d060" "checksum wasmparser 0.28.0 (registry+https://github.com/rust-lang/crates.io-index)" = "40f426b1929bd26517fb10702e2a8e520d1845c49567aa4d244f426f10b206c1" +"checksum wasmparser 0.29.2 (registry+https://github.com/rust-lang/crates.io-index)" = "981a8797cf89762e0233ec45fae731cb79a4dfaee12d9f0fe6cee01e4ac58d00" "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.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0" diff --git a/lib/clif-backend/Cargo.toml b/lib/clif-backend/Cargo.toml index 1f08b8b1e..ff151a220 100644 --- a/lib/clif-backend/Cargo.toml +++ b/lib/clif-backend/Cargo.toml @@ -9,12 +9,12 @@ edition = "2018" [dependencies] wasmer-runtime-core = { path = "../runtime-core", version = "0.2.1" } -cranelift-native = "0.26.0" -cranelift-codegen = "0.26.0" -cranelift-entity = "0.26.0" -cranelift-wasm = "0.26.0" +cranelift-native = "0.30.0" +cranelift-codegen = "0.30.0" +cranelift-entity = "0.30.0" +cranelift-wasm = "0.30.0" hashbrown = "0.1" -target-lexicon = "0.2.0" +target-lexicon = "0.3.0" wasmparser = "0.23.0" byteorder = "1" nix = "0.13.0" diff --git a/lib/clif-backend/src/module.rs b/lib/clif-backend/src/module.rs index 521918185..514f9b350 100644 --- a/lib/clif-backend/src/module.rs +++ b/lib/clif-backend/src/module.rs @@ -151,8 +151,8 @@ convert_clif_to_runtime_index![ (SignatureIndex: SigIndex), ]; -impl<'a> From> for FuncSig { - fn from(signature: Converter<&'a ir::Signature>) -> Self { +impl<'a> From> for FuncSig { + fn from(signature: Converter) -> Self { FuncSig::new( signature .0 diff --git a/lib/clif-backend/src/module_env.rs b/lib/clif-backend/src/module_env.rs index 7c6cd6731..995647ee6 100644 --- a/lib/clif-backend/src/module_env.rs +++ b/lib/clif-backend/src/module_env.rs @@ -50,6 +50,20 @@ impl<'module, 'isa> ModuleEnv<'module, 'isa> { Ok(self.func_bodies) } + + /// Return the global for the given global index. + pub fn get_global(&self, global_index: cranelift_wasm::GlobalIndex) -> &cranelift_wasm::Global { + &self.globals[Converter(global_index).into()] + } + + /// Return the signature index for the given function index. + pub fn get_func_type( + &self, + func_index: cranelift_wasm::FuncIndex, + ) -> cranelift_wasm::SignatureIndex { + let sig_index: SigIndex = self.module.info.func_assoc[Converter(func_index).into()]; + Converter(sig_index).into() + } } impl<'module, 'isa, 'data> ModuleEnvironment<'data> for ModuleEnv<'module, 'isa> { @@ -59,16 +73,11 @@ impl<'module, 'isa, 'data> ModuleEnvironment<'data> for ModuleEnv<'module, 'isa> } /// Declares a function signature to the environment. - fn declare_signature(&mut self, sig: &ir::Signature) { + fn declare_signature(&mut self, sig: ir::Signature) { self.signatures.push(sig.clone()); self.module.info.signatures.push(Converter(sig).into()); } - /// Return the signature with the given index. - fn get_signature(&self, clif_sig_index: cranelift_wasm::SignatureIndex) -> &ir::Signature { - &self.signatures[Converter(clif_sig_index).into()] - } - /// Declares a function import to the environment. fn declare_func_import( &mut self, @@ -92,11 +101,6 @@ impl<'module, 'isa, 'data> ModuleEnvironment<'data> for ModuleEnv<'module, 'isa> }); } - /// Return the number of imported funcs. - fn get_num_func_imports(&self) -> usize { - self.module.info.imported_functions.len() - } - /// Declares the type (signature) of a local function in the module. fn declare_func_type(&mut self, clif_sig_index: cranelift_wasm::SignatureIndex) { // We convert the cranelift signature index to @@ -106,15 +110,6 @@ impl<'module, 'isa, 'data> ModuleEnvironment<'data> for ModuleEnv<'module, 'isa> self.module.info.func_assoc.push(sig_index); } - /// Return the signature index for the given function index. - fn get_func_type( - &self, - func_index: cranelift_wasm::FuncIndex, - ) -> cranelift_wasm::SignatureIndex { - let sig_index: SigIndex = self.module.info.func_assoc[Converter(func_index).into()]; - Converter(sig_index).into() - } - /// Declares a global to the environment. fn declare_global(&mut self, global: cranelift_wasm::Global) { let desc = GlobalDescriptor { @@ -180,11 +175,6 @@ impl<'module, 'isa, 'data> ModuleEnvironment<'data> for ModuleEnv<'module, 'isa> self.globals.push(global); } - /// Return the global for the given global index. - fn get_global(&self, global_index: cranelift_wasm::GlobalIndex) -> &cranelift_wasm::Global { - &self.globals[Converter(global_index).into()] - } - /// Declares a table to the environment. fn declare_table(&mut self, table: cranelift_wasm::Table) { use cranelift_wasm::TableElementType; @@ -238,7 +228,7 @@ impl<'module, 'isa, 'data> ModuleEnvironment<'data> for ModuleEnv<'module, 'isa> table_index: cranelift_wasm::TableIndex, base: Option, offset: usize, - elements: Vec, + elements: Box<[cranelift_wasm::FuncIndex]>, ) { // Convert Cranelift GlobalIndex to wamser GlobalIndex // let base = base.map(|index| WasmerGlobalIndex::new(index.index())); @@ -376,7 +366,11 @@ impl<'module, 'isa, 'data> ModuleEnvironment<'data> for ModuleEnv<'module, 'isa> } /// Provides the contents of a function body. - fn define_function_body(&mut self, body_bytes: &'data [u8]) -> cranelift_wasm::WasmResult<()> { + fn define_function_body( + &mut self, + body_bytes: &'data [u8], + body_offset: usize, + ) -> cranelift_wasm::WasmResult<()> { let mut func_translator = FuncTranslator::new(); let func_body = { @@ -390,7 +384,7 @@ impl<'module, 'isa, 'data> ModuleEnvironment<'data> for ModuleEnv<'module, 'isa> let mut func = ir::Function::with_name_signature(name, sig); - func_translator.translate(body_bytes, &mut func, &mut func_env)?; + func_translator.translate(body_bytes, body_offset, &mut func, &mut func_env)?; #[cfg(feature = "debug")] { diff --git a/lib/clif-backend/src/relocation.rs b/lib/clif-backend/src/relocation.rs index 92ef0485a..50a032095 100644 --- a/lib/clif-backend/src/relocation.rs +++ b/lib/clif-backend/src/relocation.rs @@ -224,6 +224,7 @@ pub enum TrapCode { IntegerDivisionByZero, BadConversionToInteger, Interrupt, + UnreachableCodeReached, User(u16), } @@ -297,6 +298,7 @@ impl binemit::TrapSink for LocalTrapSink { ir::TrapCode::IntegerDivisionByZero => TrapCode::IntegerDivisionByZero, ir::TrapCode::BadConversionToInteger => TrapCode::BadConversionToInteger, ir::TrapCode::Interrupt => TrapCode::Interrupt, + ir::TrapCode::UnreachableCodeReached => TrapCode::UnreachableCodeReached, ir::TrapCode::User(x) => TrapCode::User(x), }; From 4c39cb482f4e837b39af8c7e66b10effe56e03bd Mon Sep 17 00:00:00 2001 From: losfair Date: Wed, 3 Apr 2019 22:49:26 +0800 Subject: [PATCH 101/413] Cleanup calling & implement I64ExtendSI32. --- lib/dynasm-backend/src/codegen_x64.rs | 130 ++++++++++++++++++-------- 1 file changed, 90 insertions(+), 40 deletions(-) diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index 2e4f2a913..ee0c58cd8 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -467,6 +467,43 @@ impl X64FunctionCode { } } + fn emit_relaxed_zx_sx( + a: &mut Assembler, + m: &mut Machine, + op: fn(&mut Assembler, Size, Location, Size, Location), + sz_src: Size, + mut src: Location, + sz_dst: Size, + dst: Location, + ) { + let tmp_src = m.acquire_temp_gpr().unwrap(); + let tmp_dst = m.acquire_temp_gpr().unwrap(); + + match src { + Location::Imm32(_) | Location::Imm64(_) => { + a.emit_mov(Size::S64, src, Location::GPR(tmp_src)); + src = Location::GPR(tmp_src); + } + Location::Memory(_, _) | Location::GPR(_) => {} + _ => unreachable!() + } + + match dst { + Location::Imm32(_) | Location::Imm64(_) => unreachable!(), + Location::Memory(_, _) => { + op(a, sz_src, src, sz_dst, Location::GPR(tmp_dst)); + a.emit_mov(Size::S64, Location::GPR(tmp_dst), dst); + } + Location::GPR(_) => { + op(a, sz_src, src, sz_dst, dst); + } + _ => unreachable!() + } + + m.release_temp_gpr(tmp_dst); + m.release_temp_gpr(tmp_src); + } + fn emit_relaxed_binop( a: &mut Assembler, m: &mut Machine, @@ -803,6 +840,49 @@ impl X64FunctionCode { f(a, Size::S64, Location::GPR(GPR::RCX), ret); value_stack.push((ret, LocalOrTemp::Temp)); } + + fn emit_call_sysv>(a: &mut Assembler, m: &mut Machine, label: DynamicLabel, params: I) { + let used_gprs = m.get_used_gprs(); + for r in used_gprs.iter() { + a.emit_push(Size::S64, Location::GPR(*r)); + } + + let mut stack_offset: usize = 0; + + let mut call_movs: Vec<(Location, GPR)> = vec![]; + + for (i, param) in params.enumerate() { + let loc = Machine::get_param_location(1 + i); + match loc { + Location::GPR(x) => { + call_movs.push((param, x)); + } + Location::Memory(_, _) => { + a.emit_push(Size::S64, param); + stack_offset += 8; + } + _ => unreachable!() + } + } + + sort_call_movs(&mut call_movs); + for (loc, gpr) in call_movs { + if loc != Location::GPR(gpr) { + a.emit_mov(Size::S64, loc, Location::GPR(gpr)); + } + } + + a.emit_mov(Size::S64, Location::GPR(Machine::get_vmctx_reg()), Machine::get_param_location(0)); // vmctx + a.emit_call_label(label); + + if stack_offset > 0 { + a.emit_add(Size::S64, Location::Imm32(stack_offset as u32), Location::GPR(GPR::RSP)); + } + + for r in used_gprs.iter().rev() { + a.emit_pop(Size::S64, Location::GPR(*r)); + } + } } impl FunctionCodeGenerator for X64FunctionCode { @@ -1109,6 +1189,15 @@ impl FunctionCodeGenerator for X64FunctionCode { Size::S32, loc, ret, ); } + Operator::I64ExtendSI32 => { + let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + Self::emit_relaxed_zx_sx( + a, &mut self.machine, Assembler::emit_movsx, + Size::S32, loc, Size::S64, ret, + ); + } Operator::I32WrapI64 => { let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; @@ -1140,47 +1229,8 @@ impl FunctionCodeGenerator for X64FunctionCode { .map(|&(x, _)| x) .collect(); self.machine.release_locations_only_regs(&released); - - let used_gprs = self.machine.get_used_gprs(); - for r in used_gprs.iter() { - a.emit_push(Size::S64, Location::GPR(*r)); - } - let mut stack_offset: usize = 0; - - let mut call_movs: Vec<(Location, GPR)> = vec![]; - - for i in (0..param_types.len()).rev() { - let loc = Machine::get_param_location(1 + i); - match loc { - Location::GPR(x) => { - call_movs.push((params[i].0, x)); - } - Location::Memory(_, _) => { - a.emit_push(Size::S64, params[i].0); - stack_offset += 8; - } - _ => unreachable!() - } - } - - sort_call_movs(&mut call_movs); - for (loc, gpr) in call_movs { - if loc != Location::GPR(gpr) { - a.emit_mov(Size::S64, loc, Location::GPR(gpr)); - } - } - - a.emit_mov(Size::S64, Location::GPR(Machine::get_vmctx_reg()), Machine::get_param_location(0)); // vmctx - a.emit_call_label(label); - - if stack_offset > 0 { - a.emit_add(Size::S64, Location::Imm32(stack_offset as u32), Location::GPR(GPR::RSP)); - } - - for r in used_gprs.iter().rev() { - a.emit_pop(Size::S64, Location::GPR(*r)); - } + Self::emit_call_sysv(a, &mut self.machine, label, params.iter().map(|&(x, _)| x)); self.machine.release_locations_only_stack(a, &released); From 7ff51c3b9e036b203beb435eaed48be9591b209a Mon Sep 17 00:00:00 2001 From: Syrus Akbary Date: Wed, 3 Apr 2019 13:35:36 -0500 Subject: [PATCH 102/413] Update lib/clif-backend/src/module.rs Remove unnecessary `<'a>` from Converter Co-Authored-By: bjfish --- lib/clif-backend/src/module.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/clif-backend/src/module.rs b/lib/clif-backend/src/module.rs index 514f9b350..11f93342e 100644 --- a/lib/clif-backend/src/module.rs +++ b/lib/clif-backend/src/module.rs @@ -151,7 +151,7 @@ convert_clif_to_runtime_index![ (SignatureIndex: SigIndex), ]; -impl<'a> From> for FuncSig { +impl From> for FuncSig { fn from(signature: Converter) -> Self { FuncSig::new( signature From b80dd072a1e7ca04b2771b0488863ef7a00ac4ef Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Wed, 3 Apr 2019 11:56:45 -0700 Subject: [PATCH 103/413] implement happy path of fd_open --- lib/wasi/src/state.rs | 26 ++++++++- lib/wasi/src/syscalls/mod.rs | 106 ++++++++++++++++++++++++++++++----- 2 files changed, 117 insertions(+), 15 deletions(-) diff --git a/lib/wasi/src/state.rs b/lib/wasi/src/state.rs index 1adc41970..4f0102ccf 100644 --- a/lib/wasi/src/state.rs +++ b/lib/wasi/src/state.rs @@ -31,7 +31,7 @@ pub enum Kind { Dir { handle: File, /// The entries of a directory are lazily filled. - entries: Vec, + entries: HashMap, }, Symlink { forwarded: Inode, @@ -123,7 +123,7 @@ impl WasiFs { FileType::File => Kind::File { handle: file }, FileType::Dir => Kind::Dir { handle: file, - entries: Vec::new(), + entries: HashMap::new(), }, }, }); @@ -240,6 +240,28 @@ impl WasiFs { } Ok(()) } + + pub fn create_fd( + &mut self, + rights: __wasi_rights_t, + rights_inheriting: __wasi_rights_t, + flags: __wasi_fdflags_t, + inode: Inode, + ) -> Result { + let idx = self.next_fd.get(); + self.next_fd.set(idx + 1); + self.fd_map.insert( + idx, + Fd { + rights, + rights_inheriting, + flags, + offset: 0, + inode, + }, + ); + Ok(idx) + } } pub struct WasiState<'a> { diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index d650d9ea3..b6262d1f4 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -1076,22 +1076,102 @@ pub fn path_open( } // check for __WASI_RIGHT_PATH_OPEN somewhere, probably via dirfd + let fd_cell = wasi_try!(fd.deref(memory)); + let path_cells = wasi_try!(path.deref(memory, 0, path_len)); + let state = get_wasi_state(ctx); - if let (Ok(fd_cell), Ok(path_cell)) = (fd.deref(memory), path.deref(memory, 0, path_len)) { - // o_flags: - // - __WASI_O_FLAG_CREAT (create if it does not exist) - // - __WASI_O_DIRECTORY (fail if not dir) - // - __WASI_O_EXCL (fail if file exists) - // - __WASI_O_TRUNC (truncate size to 0) - if (o_flags & __WASI_O_DIRECTORY) != 0 { - // fail if fd is not a dir - // need to check and be able to clean up - } + // o_flags: + // - __WASI_O_FLAG_CREAT (create if it does not exist) + // - __WASI_O_DIRECTORY (fail if not dir) + // - __WASI_O_EXCL (fail if file exists) + // - __WASI_O_TRUNC (truncate size to 0) - unimplemented!(); - } else { - __WASI_EFAULT + let working_dir = wasi_try!(state.fs.fd_map.get(&dirfd).ok_or(__WASI_EBADF)); + + // ASSUMPTION: open rights cascade down + if !has_rights(working_dir.rights, __WASI_RIGHT_PATH_OPEN) { + return __WASI_EACCES; } + + let path_vec = + wasi_try!( + ::std::str::from_utf8(unsafe { &*(path_cells as *const [_] as *const [u8]) }) + .map_err(|_| __WASI_EINVAL) + ) + .split('/') + .map(|str| str.to_string()) + .collect::>(); + + if path_vec.is_empty() { + return __WASI_EINVAL; + } + + let working_dir_inode = &mut state.fs.inodes[working_dir.inode]; + + let mut cur_dir = working_dir; + + // TODO: refactor single path segment logic out and do traversing before + // as necessary + let out_fd = if path_vec.len() == 1 { + // just the file or dir + if let Kind::Dir { entries, .. } = &mut working_dir_inode.kind { + if let Some(child) = entries.get(&path_vec[0]).cloned() { + let child_inode_val = &state.fs.inodes[child]; + // early return based on flags + if o_flags & __WASI_O_EXCL != 0 { + return __WASI_EEXIST; + } + if o_flags & __WASI_O_DIRECTORY != 0 { + match &child_inode_val.kind { + Kind::Dir { .. } => (), + Kind::Symlink { .. } => unimplemented!(), + _ => return __WASI_ENOTDIR, + } + } + // do logic on child + wasi_try!(state + .fs + .create_fd(fs_rights_base, fs_rights_inheriting, fs_flags, child)) + } else { + // entry does not exist in parent directory + // check to see if we should create it + if o_flags & __WASI_O_CREAT != 0 { + // insert in to directory and set values + //entries.insert(path_segment[0], ) + unimplemented!() + } else { + // no entry and can't create it + return __WASI_ENOENT; + } + } + } else { + // working_dir is not a directory + return __WASI_ENOTDIR; + } + } else { + // traverse the pieces of the path + // TODO: lots of testing on this + for path_segment in &path_vec[..(path_vec.len() - 1)] { + match &working_dir_inode.kind { + Kind::Dir { entries, .. } => { + if let Some(child) = entries.get(path_segment) { + unimplemented!(); + } else { + // Is __WASI_O_FLAG_CREAT recursive? + // ASSUMPTION: it's not + return __WASI_EINVAL; + } + } + Kind::Symlink { .. } => unimplemented!(), + _ => return __WASI_ENOTDIR, + } + } + unimplemented!() + }; + + fd_cell.set(out_fd); + + __WASI_ESUCCESS } pub fn path_readlink( From 7d728fc4cc2bff0b8e7eb2e4c95ebab61d003fdc Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Wed, 3 Apr 2019 12:48:27 -0700 Subject: [PATCH 104/413] implement path_filestat_get --- lib/wasi/src/syscalls/mod.rs | 58 ++++++++++++++++++++++++++++++++---- 1 file changed, 52 insertions(+), 6 deletions(-) diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index b6262d1f4..9d6768da1 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -8,7 +8,7 @@ pub mod windows; use self::types::*; use crate::{ ptr::{Array, WasmPtr}, - state::{Kind, WasiState}, + state::{Kind, WasiState, MAX_SYMLINKS}, }; use rand::{thread_rng, Rng}; use std::cell::Cell; @@ -943,9 +943,9 @@ pub fn path_create_directory( /// Access metadata about a file or directory /// Inputs: /// - `__wasi_fd_t fd` -/// The file to acces +/// The directory that `path` is relative to /// - `__wasi_lookupflags_t flags` -/// Flags to control how the path is understood +/// Flags to control how `path` is understood /// - `const char *path` /// String containing the file path /// - `u32 path_len` @@ -962,11 +962,57 @@ pub fn path_filestat_get( buf: WasmPtr<__wasi_filestat_t>, ) -> __wasi_errno_t { debug!("wasi::path_filestat_get"); - let mut state = get_wasi_state(ctx); + let state = get_wasi_state(ctx); let memory = ctx.memory(0); - // check __WASI_RIGHT_PATH_FILESTAT_GET - unimplemented!() + let root_dir = wasi_try!(state.fs.fd_map.get(&fd).ok_or(__WASI_EBADF)); + + if !has_rights(root_dir.rights, __WASI_RIGHT_PATH_FILESTAT_GET) { + return __WASI_EACCES; + } + + let path_vec = wasi_try!(::std::str::from_utf8(unsafe { + &*(wasi_try!(path.deref(memory, 0, path_len)) as *const [_] as *const [u8]) + }) + .map_err(|_| __WASI_EINVAL)) + .split('/') + .map(|str| str.to_string()) + .collect::>(); + let buf_cell = wasi_try!(buf.deref(memory)); + + // find the inode by traversing the path + let mut inode = root_dir.inode; + 'outer: for segment in path_vec { + // loop to traverse symlinks + // TODO: proper cycle detection + let mut sym_count = 0; + loop { + match &state.fs.inodes[inode].kind { + Kind::Dir { entries, .. } => { + if let Some(entry) = entries.get(&segment) { + inode = entry.clone(); + continue 'outer; + } else { + return __WASI_ENOENT; + } + } + Kind::Symlink { forwarded } => { + sym_count += 1; + inode = forwarded.clone(); + if sym_count > MAX_SYMLINKS { + return __WASI_ELOOP; + } + } + _ => return __WASI_ENOTDIR, + } + } + } + + let stat = state.fs.inodes[inode].stat; + + buf_cell.set(stat); + + __WASI_ESUCCESS } /// ### `path_filestat_set_times()` From d04d1bf2a9b54eb89c1c7f76bed9590774fcfca3 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Wed, 3 Apr 2019 14:59:24 -0700 Subject: [PATCH 105/413] improve debug statements for arg syscalls --- lib/wasi/src/syscalls/mod.rs | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 9d6768da1..71b4cadae 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -93,7 +93,24 @@ pub fn args_get( let state = get_wasi_state(ctx); let memory = ctx.memory(0); - write_buffer_array(memory, &*state.args, argv, argv_buf) + let result = write_buffer_array(memory, &*state.args, argv, argv_buf); + + debug!( + "=> args:\n{}", + state + .args + .iter() + .enumerate() + .map(|(i, v)| format!( + "{:>20}: {}", + i, + ::std::str::from_utf8(v).unwrap().to_string() + )) + .collect::>() + .join("\n") + ); + + result } /// ### `args_sizes_get()` @@ -116,8 +133,12 @@ pub fn args_sizes_get( let state = get_wasi_state(ctx); - argc.set(state.args.len() as u32); - argv_buf_size.set(state.args.iter().map(|v| v.len() as u32 + 1).sum()); + let argc_val = state.args.len() as u32; + let argv_buf_size_val = state.args.iter().map(|v| v.len() as u32 + 1).sum(); + argc.set(argc_val); + argv_buf_size.set(argv_buf_size_val); + + debug!("=> argc={}, argv_buf_size={}", argc_val, argv_buf_size_val); __WASI_ESUCCESS } From 10696c484909cb8ae6034a027def8d03129a62d3 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Wed, 3 Apr 2019 16:21:26 -0700 Subject: [PATCH 106/413] clean up platform-specific syscall code --- lib/wasi/src/syscalls/mod.rs | 13 +++++------ lib/wasi/src/syscalls/unix/linux.rs | 36 ----------------------------- lib/wasi/src/syscalls/unix/macos.rs | 12 ---------- lib/wasi/src/syscalls/unix/mod.rs | 12 ---------- lib/wasi/src/syscalls/windows.rs | 10 -------- 5 files changed, 6 insertions(+), 77 deletions(-) delete mode 100644 lib/wasi/src/syscalls/unix/linux.rs delete mode 100644 lib/wasi/src/syscalls/unix/macos.rs diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 71b4cadae..068e4ed78 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -489,13 +489,12 @@ pub fn fd_pread( debug!("wasi::fd_pread"); let memory = ctx.memory(0); - if let ((Ok(iov_cells), Ok(nread_cell))) = - (iovs.deref(memory, 0, iovs_len), nread.deref(memory)) - { - platform_fd_pread(fd, iov_cells, iovs_len, offset, nread_cell) - } else { - __WASI_EFAULT - } + let iov_cells = wasi_try!(iovs.deref(memory, 0, iovs_len)); + let nread_cell = wasi_try!(nread.deref(memory)); + + unimplemented!(); + + __WASI_ESUCCESS } /// ### `fd_prestat_get()` diff --git a/lib/wasi/src/syscalls/unix/linux.rs b/lib/wasi/src/syscalls/unix/linux.rs deleted file mode 100644 index 627f95bf1..000000000 --- a/lib/wasi/src/syscalls/unix/linux.rs +++ /dev/null @@ -1,36 +0,0 @@ -use crate::syscalls::types::*; -use std::cell::Cell; -use std::mem; - -use libc::preadv; - -pub fn platform_fd_pread( - fd: __wasi_fd_t, - iovs: &[Cell<__wasi_iovec_t>], - iovs_len: u32, - offset: __wasi_filesize_t, - nread: &Cell, -) -> __wasi_errno_t { - let (result, iovec) = unsafe { - let mut iovec = vec![mem::uninitialized(); iovs_len as usize]; - ( - preadv( - fd as i32, - iovec.as_mut_ptr(), - iovs_len as i32, - offset as i64, - ), - iovec, - ) - }; - nread.set(result as u32); - /*for (i, arr_cell) in iovs.iter().enumerate() { - let wasi_iovec = __wasi_iovec_t { - buf: iovec[i] as _, - buf_len: iovec[i].iov_len as u32, - }; - arr_cell.set(wasi_iovec); - }*/ - - __WASI_ESUCCESS -} diff --git a/lib/wasi/src/syscalls/unix/macos.rs b/lib/wasi/src/syscalls/unix/macos.rs deleted file mode 100644 index 748a58fb3..000000000 --- a/lib/wasi/src/syscalls/unix/macos.rs +++ /dev/null @@ -1,12 +0,0 @@ -use crate::syscalls::types::*; -use std::cell::Cell; - -pub fn platform_fd_pread( - fd: __wasi_fd_t, - iovs: &[Cell<__wasi_iovec_t>], - iovs_len: u32, - offset: __wasi_filesize_t, - nread: &Cell, -) -> __wasi_errno_t { - unimplemented!() -} diff --git a/lib/wasi/src/syscalls/unix/mod.rs b/lib/wasi/src/syscalls/unix/mod.rs index 915699c24..4c9cfada3 100644 --- a/lib/wasi/src/syscalls/unix/mod.rs +++ b/lib/wasi/src/syscalls/unix/mod.rs @@ -1,15 +1,3 @@ -#[cfg(target_os = "linux")] -pub mod linux; - -#[cfg(target_os = "macos")] -pub mod macos; - -#[cfg(target_os = "linux")] -pub use linux::*; - -#[cfg(target_os = "macos")] -pub use macos::*; - use crate::syscalls::types::*; use libc::{ clock_getres, clock_gettime, timespec, CLOCK_MONOTONIC, CLOCK_PROCESS_CPUTIME_ID, diff --git a/lib/wasi/src/syscalls/windows.rs b/lib/wasi/src/syscalls/windows.rs index 5ea255f0a..6273695d3 100644 --- a/lib/wasi/src/syscalls/windows.rs +++ b/lib/wasi/src/syscalls/windows.rs @@ -15,13 +15,3 @@ pub fn platform_clock_time_get( ) -> __wasi_errno_t { unimplemented!() } - -pub fn platform_fd_pread( - fd: __wasi_fd_t, - iovs: &[Cell<__wasi_iovec_t>], - iovs_len: u32, - offset: __wasi_filesize_t, - nread: &Cell, -) -> __wasi_errno_t { - unimplemented!() -} From e9e7a33317378dde433b6cd015f71e5767438f0f Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Wed, 3 Apr 2019 16:50:15 -0700 Subject: [PATCH 107/413] fix warnings and let it build on windows --- Cargo.lock | 400 +++++++++++++++++++++--------------------- lib/wasi/Cargo.toml | 4 +- lib/wasi/src/state.rs | 9 +- src/bin/wasmer.rs | 1 - 4 files changed, 207 insertions(+), 207 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b44432dce..ec8c7cd4c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3,7 +3,7 @@ name = "MacTypes-sys" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -13,7 +13,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "aho-corasick" -version = "0.6.10" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -39,7 +39,7 @@ name = "ansi_term" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -60,9 +60,9 @@ name = "atty" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -72,15 +72,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "backtrace" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -88,8 +88,8 @@ name = "backtrace-sys" version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -117,7 +117,7 @@ dependencies = [ "peeking_take_while 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "which 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -143,7 +143,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -178,7 +178,7 @@ name = "capstone-sys" version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -188,24 +188,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "cbindgen" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.29 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cc" -version = "1.0.31" +version = "1.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -230,7 +230,7 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "libloading 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -258,10 +258,10 @@ dependencies = [ [[package]] name = "cmake" -version = "0.1.35" +version = "0.1.37" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -275,7 +275,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -283,7 +283,7 @@ name = "core-foundation-sys" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -389,8 +389,8 @@ dependencies = [ "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "rand_xoshiro 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", "tinytemplate 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -482,7 +482,7 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "csv-core 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -517,7 +517,7 @@ dependencies = [ "owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.29 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -532,7 +532,7 @@ dependencies = [ [[package]] name = "either" -version = "1.5.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -560,7 +560,7 @@ dependencies = [ "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -570,8 +570,8 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "errno-dragonfly 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -580,7 +580,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -588,7 +588,7 @@ name = "failure" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "backtrace 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -599,7 +599,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.29 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)", "synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -614,8 +614,8 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.52 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -624,7 +624,7 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "miniz_oxide_c_api 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -667,7 +667,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "futures" -version = "0.1.25" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -675,7 +675,7 @@ name = "futures-cpupool" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -723,7 +723,7 @@ dependencies = [ "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -739,7 +739,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -784,7 +784,7 @@ version = "0.12.25" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "h2 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", @@ -811,7 +811,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.12.25 (registry+https://github.com/rust-lang/crates.io-index)", "native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -837,10 +837,10 @@ name = "inkwell" version = "0.1.0" source = "git+https://github.com/wasmerio/inkwell?branch=llvm7-0#a14e62977504ef574dc2e933edc559cc79781ca7" dependencies = [ - "either 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "enum-methods 0.0.8 (registry+https://github.com/rust-lang/crates.io-index)", "inkwell_internal_macros 0.1.0 (git+https://github.com/wasmerio/inkwell?branch=llvm7-0)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "llvm-sys 70.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -850,7 +850,7 @@ version = "0.1.0" source = "git+https://github.com/wasmerio/inkwell?branch=llvm7-0#a14e62977504ef574dc2e933edc559cc79781ca7" dependencies = [ "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.29 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -858,7 +858,7 @@ name = "iovec" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -867,7 +867,7 @@ name = "itertools" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "either 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -896,7 +896,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "libc" -version = "0.2.50" +version = "0.2.51" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -914,8 +914,8 @@ name = "libloading" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -923,8 +923,8 @@ name = "linked-hash-map" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_test 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_test 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -932,10 +932,10 @@ name = "llvm-sys" version = "70.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -961,7 +961,7 @@ name = "lz4" version = "1.23.1" source = "git+https://github.com/zboxfs/lz4-rs.git#4704144553d827a96d4fedeb683dbde1360e06e3" dependencies = [ - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "lz4-sys 1.8.3 (git+https://github.com/zboxfs/lz4-rs.git)", ] @@ -970,8 +970,8 @@ name = "lz4-sys" version = "1.8.3" source = "git+https://github.com/zboxfs/lz4-rs.git#4704144553d827a96d4fedeb683dbde1360e06e3" dependencies = [ - "cc 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -984,7 +984,7 @@ name = "memchr" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -992,8 +992,8 @@ name = "memmap" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1001,8 +1001,8 @@ name = "memmap" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1042,9 +1042,9 @@ name = "miniz_oxide_c_api" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", "crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "miniz_oxide 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1058,7 +1058,7 @@ dependencies = [ "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1083,7 +1083,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "openssl 0.10.20 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1100,8 +1100,8 @@ version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1110,9 +1110,9 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1122,9 +1122,9 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1160,7 +1160,7 @@ name = "num_cpus" version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1172,7 +1172,7 @@ dependencies = [ "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-sys 0.9.43 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1186,8 +1186,8 @@ name = "openssl-sys" version = "0.9.43" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1215,7 +1215,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1233,11 +1233,11 @@ name = "parking_lot_core" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1327,10 +1327,10 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1339,7 +1339,7 @@ version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1348,7 +1348,7 @@ dependencies = [ "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1394,9 +1394,9 @@ name = "rand_jitter" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1406,10 +1406,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1444,7 +1444,7 @@ version = "6.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1454,7 +1454,7 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "either 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "rayon-core 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1465,7 +1465,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1479,7 +1479,7 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.1.51" +version = "0.1.52" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1487,24 +1487,24 @@ name = "redox_termios" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.52 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "regex" -version = "1.1.2" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "aho-corasick 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "aho-corasick 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "regex-syntax" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1515,19 +1515,19 @@ name = "remove_dir_all" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "reqwest" -version = "0.9.12" +version = "0.9.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "encoding_rs 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)", "flate2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.12.25 (registry+https://github.com/rust-lang/crates.io-index)", "hyper-tls 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1535,7 +1535,7 @@ dependencies = [ "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", "mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", "native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", "serde_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1544,7 +1544,7 @@ dependencies = [ "tokio-threadpool 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "uuid 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1563,7 +1563,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "rmp 0.8.7 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1598,7 +1598,7 @@ version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1622,7 +1622,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.29 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1632,7 +1632,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "security-framework-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1643,7 +1643,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "MacTypes-sys 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1661,10 +1661,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "serde" -version = "1.0.89" +version = "1.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1673,7 +1673,7 @@ version = "0.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1681,17 +1681,17 @@ name = "serde_bytes" version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_derive" -version = "1.0.89" +version = "1.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.29 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1701,15 +1701,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_test" -version = "1.0.89" +version = "1.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1719,7 +1719,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1770,7 +1770,7 @@ dependencies = [ "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.29 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1785,7 +1785,7 @@ dependencies = [ [[package]] name = "syn" -version = "0.15.29" +version = "0.15.30" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1808,7 +1808,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.29 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1823,8 +1823,8 @@ version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "filetime 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.52 (registry+https://github.com/rust-lang/crates.io-index)", "xattr 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1853,11 +1853,11 @@ version = "3.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.52 (registry+https://github.com/rust-lang/crates.io-index)", "remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1873,8 +1873,8 @@ name = "termion" version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.52 (registry+https://github.com/rust-lang/crates.io-index)", "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1899,9 +1899,9 @@ name = "time" version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.52 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1909,7 +1909,7 @@ name = "tinytemplate" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1919,7 +1919,7 @@ version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1936,7 +1936,7 @@ name = "tokio-current-thread" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1946,7 +1946,7 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1955,7 +1955,7 @@ version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1965,7 +1965,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1983,7 +1983,7 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1992,7 +1992,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2007,7 +2007,7 @@ dependencies = [ "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2021,7 +2021,7 @@ version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2039,7 +2039,7 @@ name = "toml" version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2126,7 +2126,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "uuid" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2157,8 +2157,8 @@ name = "wabt" version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", "wabt-sys 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2168,8 +2168,8 @@ name = "wabt-sys" version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)", - "cmake 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", + "cmake 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2179,7 +2179,7 @@ version = "2.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "same-file 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2188,7 +2188,7 @@ name = "want" version = "0.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2222,18 +2222,18 @@ dependencies = [ "cranelift-native 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)", "cranelift-wasm 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)", "hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "nix 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", "serde-bench 0.0.7 (registry+https://github.com/rust-lang/crates.io-index)", "serde_bytes 0.10.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", "target-lexicon 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "wasmer-runtime-core 0.2.1", "wasmer-win-exception-handler 0.2.0", "wasmparser 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2245,7 +2245,7 @@ dependencies = [ "dynasmrt 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "nix 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", "wasmer-runtime-core 0.2.1", "wasmparser 0.28.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2258,7 +2258,7 @@ dependencies = [ "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "glob 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)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (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)", "wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2273,14 +2273,14 @@ name = "wasmer-llvm-backend" version = "0.1.0" dependencies = [ "capstone 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", "goblin 0.0.20 (registry+https://github.com/rust-lang/crates.io-index)", "hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "inkwell 0.1.0 (git+https://github.com/wasmerio/inkwell?branch=llvm7-0)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "nix 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "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)", @@ -2310,7 +2310,7 @@ version = "0.2.1" dependencies = [ "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "tar 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", "wasmer-runtime-core 0.2.1", @@ -2323,8 +2323,8 @@ dependencies = [ name = "wasmer-runtime-c-api" version = "0.2.1" dependencies = [ - "cbindgen 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "cbindgen 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "wasmer-runtime 0.2.1", "wasmer-runtime-core 0.2.1", ] @@ -2341,16 +2341,16 @@ dependencies = [ "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "nix 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "page_size 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", "serde-bench 0.0.7 (registry+https://github.com/rust-lang/crates.io-index)", "serde_bytes 0.10.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", "wasmparser 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2371,7 +2371,7 @@ 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)", "hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (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.2.1", @@ -2383,11 +2383,11 @@ name = "wasmer-win-exception-handler" version = "0.2.0" dependencies = [ "bindgen 0.46.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cmake 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "cmake 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "wasmer-runtime-core 0.2.1", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2411,7 +2411,7 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2421,7 +2421,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "winapi" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2443,7 +2443,7 @@ name = "winapi-util" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2456,7 +2456,7 @@ name = "wincolor" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2474,13 +2474,13 @@ name = "xattr" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "zbox" version = "0.6.1" -source = "git+https://github.com/wasmerio/zbox?branch=bundle-libsodium#ada40126425cf4d1adb14ebbc08980d01a0d520b" +source = "git+https://github.com/wasmerio/zbox?branch=bundle-libsodium#c2a5a50317f587fd69585d1e8d9825daef24cc00" dependencies = [ "android_logger 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2491,10 +2491,10 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "lz4 1.23.1 (git+https://github.com/zboxfs/lz4-rs.git)", "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", - "reqwest 0.9.12 (registry+https://github.com/rust-lang/crates.io-index)", + "reqwest 0.9.13 (registry+https://github.com/rust-lang/crates.io-index)", "rmp-serde 0.13.7 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", "tar 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2511,7 +2511,7 @@ name = "zstd-safe" version = "1.4.7+zstd.1.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "zstd-sys 1.4.8+zstd.1.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2521,15 +2521,15 @@ version = "1.4.8+zstd.1.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "blob 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", ] [metadata] "checksum MacTypes-sys 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "eaf9f0d0b1cc33a4d2aee14fb4b2eac03462ef4db29c8ac4057327d8a71ad86f" "checksum adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7e522997b529f05601e05166c07ed17789691f562762c7f3b987263d2dedee5c" -"checksum aho-corasick 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "81ce3d38065e618af2d7b77e10c5ad9a069859b4be3c2250f674af3840d9c8a5" +"checksum aho-corasick 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e6f484ae0c99fec2e858eb6134949117399f222608d84cadb3f58c1f97c2364c" "checksum android_log-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b8052e2d8aabbb8d556d6abbcce2a22b9590996c5f849b9c7ce4544a2e3b984e" "checksum android_logger 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cf44378e81264148f08e58336674542f82d0021f685d0be0320c82e1653dbe0b" "checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" @@ -2537,7 +2537,7 @@ dependencies = [ "checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71" "checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652" "checksum autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a6d640bee2da49f60a4068a7fae53acde8982514ab7bae8b8cea9e88cbcfd799" -"checksum backtrace 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "cd5a90e2b463010cd0e0ce9a11d4a9d5d58d9f41d4a6ba3dcaf9e68b466e88b4" +"checksum backtrace 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "f106c02a3604afcdc0df5d36cc47b44b55917dbaf3d808f71c163a0ddba64637" "checksum backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "797c830ac25ccc92a7f8a7b9862bde440715531514594a6154e3d4a54dd769b6" "checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" "checksum bindgen 0.46.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8f7f7f0701772b17de73e4f5cbcb1dd6926f4706cba4c1ab62c5367f8bdc94e1" @@ -2550,14 +2550,14 @@ dependencies = [ "checksum capstone 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "00be9d203fa0e078b93b24603633fb081851dfe0c1086364431f52587a47157e" "checksum capstone-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2dc8d32bc5c1e6d0fcde10af411c98b07d93498d51654f678757f08fa2acd6a6" "checksum cast 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "926013f2860c46252efceabb19f4a6b308197505082c609025aa6706c011d427" -"checksum cbindgen 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f61c5411fe3ac196fae7ea397dd13959b1323edda046eec50d648a8e92015a53" -"checksum cc 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)" = "c9ce8bb087aacff865633f0bd5aeaed910fe2fe55b55f4739527f2e023a2e53d" +"checksum cbindgen 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)" = "31f70db109be74a3dfcb0af4d0d191e52230351477f14c2ed10707c2b0dcfa2e" +"checksum cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)" = "30f813bf45048a18eda9190fd3c6b78644146056740c43172a5a3699118588fd" "checksum cexpr 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "a7fa24eb00d5ffab90eaeaf1092ac85c04c64aaf358ea6f84505b8116d24c6af" "checksum cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "11d43355396e872eefb45ce6342e4374ed7bc2b3a502d1b28e36d6e23c05d1f4" "checksum clang-sys 0.26.4 (registry+https://github.com/rust-lang/crates.io-index)" = "6ef0c1bcf2e99c649104bd7a7012d8f8802684400e03db0ec0af48583c6fa0e4" "checksum clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e" "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -"checksum cmake 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)" = "6ec65ee4f9c9d16f335091d23693457ed4928657ba4982289d7fafee03bc614a" +"checksum cmake 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "c11b79fbf026d6ec02704f7248c6da99be02068bf57f624bb08af72ad29f2c06" "checksum constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff012e225ce166d4422e0e78419d901719760f62ae2b7969ca6b564d1b54a9e" "checksum core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "286e0b41c3a20da26536c6000a280585d519fd07b3956b43aed8a79e9edce980" "checksum core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "716c271e8613ace48344f723b60b900a93150271e5be206212d052bbc0883efa" @@ -2585,7 +2585,7 @@ dependencies = [ "checksum dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6d301140eb411af13d3115f9a562c85cc6b541ade9dfa314132244aaee7489dd" "checksum dynasm 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b77e128faecc4d16cff7cae96c0c9e809f687f748a0dbc4d017996e48240a991" "checksum dynasmrt 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a4c408a211e7f5762829f5e46bdff0c14bc3b1517a21a4bb781c716bf88b0c68" -"checksum either 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c67353c641dc847124ea1902d69bd753dee9bb3beff9aa3662ecf86c971d1fac" +"checksum either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5527cfe0d098f36e3f8839852688e63c8fff1c90b2b405aef730615f9a7bcf7b" "checksum encoding_rs 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)" = "4155785c79f2f6701f185eb2e6b4caf0555ec03477cb4c70db67b465311620ed" "checksum enum-methods 0.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7798e7da2d4cb0d6d6fc467e8d6b5bf247e9e989f786dde1732d79899c32bb10" "checksum env_logger 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b61fa891024a945da30a9581546e8cfaf5602c7b3f4c137a2805cf388f92075a" @@ -2602,7 +2602,7 @@ dependencies = [ "checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" -"checksum futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)" = "49e7653e374fe0d0c12de4250f0bdb60680b8c80eed558c5c7538eec9c89e21b" +"checksum futures 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)" = "62941eff9507c8177d448bd83a44d9b9760856e184081d8cd79ba9f03dd24981" "checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" "checksum gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)" = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" "checksum generational-arena 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4024f96ffa0ebaaf36aa589cd41f2fd69f3a5e6fd02c86e11e12cdf41d5b46a3" @@ -2628,7 +2628,7 @@ dependencies = [ "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" "checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14" "checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" -"checksum libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)" = "aab692d7759f5cd8c859e169db98ae5b52c924add2af5fbbca11d12fefb567c1" +"checksum libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)" = "bedcc7a809076656486ffe045abeeac163da1b558e963a31e29fbfbeba916917" "checksum libflate 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)" = "7346a83e8a2c3958d44d24225d905385dc31fc16e89dffb356c457b278914d20" "checksum libloading 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9c3ad660d7cb8c5822cd83d10897b0f1f1526792737a179e73896152f85b88c2" "checksum linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ae91b68aebc4ddb91978b11a1b02ddd8602a05ec19002801c5666000e05e0f83" @@ -2693,12 +2693,12 @@ dependencies = [ "checksum rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "373814f27745b2686b350dd261bfd24576a6fb0e2c5919b3a2b6005f820b0473" "checksum rayon-core 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b055d1e92aba6877574d8fe604a63c8b5df60f60e5982bf7ccbb1338ea527356" "checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" -"checksum redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)" = "423e376fffca3dfa06c9e9790a9ccd282fafb3cc6e6397d01dbf64f9bacc6b85" +"checksum redox_syscall 0.1.52 (registry+https://github.com/rust-lang/crates.io-index)" = "d32b3053e5ced86e4bc0411fec997389532bf56b000e66cb4884eeeb41413d69" "checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" -"checksum regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "53ee8cfdddb2e0291adfb9f13d31d3bbe0a03c9a402c01b1e24188d86c35b24f" -"checksum regex-syntax 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "8c2f35eedad5295fdf00a63d7d4b238135723f92b434ec06774dad15c7ab0861" +"checksum regex 1.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "559008764a17de49a3146b234641644ed37d118d1ef641a0bb573d146edc6ce0" +"checksum regex-syntax 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "dcfd8681eebe297b81d98498869d4aae052137651ad7b96822f09ceb690d0a96" "checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5" -"checksum reqwest 0.9.12 (registry+https://github.com/rust-lang/crates.io-index)" = "962fa64e670e70b9d3a81c3688832eb59293ef490e0af5ad169763f62016ac5e" +"checksum reqwest 0.9.13 (registry+https://github.com/rust-lang/crates.io-index)" = "3c4ef83e0beb14bfe38b9f01330a5bc8e965a9f9628690aa28383746dac1e925" "checksum rmp 0.8.7 (registry+https://github.com/rust-lang/crates.io-index)" = "a3d45d7afc9b132b34a2479648863aa95c5c88e98b32285326a6ebadc80ec5c9" "checksum rmp-serde 0.13.7 (registry+https://github.com/rust-lang/crates.io-index)" = "011e1d58446e9fa3af7cdc1fb91295b10621d3ac4cb3a85cc86385ee9ca50cd3" "checksum rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "adacaae16d02b6ec37fdc7acfcddf365978de76d1983d3ee22afc260e1ca9619" @@ -2713,12 +2713,12 @@ dependencies = [ "checksum security-framework-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3d6696852716b589dff9e886ff83778bb635150168e83afa8ac6b8a78cb82abc" "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" -"checksum serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)" = "92514fb95f900c9b5126e32d020f5c6d40564c27a5ea6d1d7d9f157a96623560" +"checksum serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)" = "aa5f7c20820475babd2c077c3ab5f8c77a31c15e16ea38687b4c02d3e48680f4" "checksum serde-bench 0.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "d733da87e79faaac25616e33d26299a41143fd4cd42746cbb0e91d8feea243fd" "checksum serde_bytes 0.10.5 (registry+https://github.com/rust-lang/crates.io-index)" = "defbb8a83d7f34cc8380751eeb892b825944222888aff18996ea7901f24aec88" -"checksum serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)" = "bb6eabf4b5914e88e24eea240bb7c9f9a2cbc1bbbe8d961d381975ec3c6b806c" +"checksum serde_derive 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)" = "58fc82bec244f168b23d1963b45c8bf5726e9a15a9d146a067f9081aeed2de79" "checksum serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)" = "5a23aa71d4a4d43fdbfaac00eff68ba8a06a51759a89ac3304323e800c4dd40d" -"checksum serde_test 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)" = "70807e147558b5253cb70f55d343db1d07204d773087c96d0f35fced295dba82" +"checksum serde_test 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce17ed207fa61e7f4701a778a6c111da84a441ca9a8f50b92808f4223dd240b" "checksum serde_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d48f9f99cd749a2de71d29da5f948de7f2764cc5a9d7f3c97e3514d4ee6eabf2" "checksum siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" @@ -2729,7 +2729,7 @@ dependencies = [ "checksum structopt 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)" = "3d0760c312538987d363c36c42339b55f5ee176ea8808bbe4543d484a291c8d1" "checksum structopt-derive 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)" = "528aeb7351d042e6ffbc2a6fb76a86f9b622fdf7c25932798e7a82cb03bc94c6" "checksum syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad" -"checksum syn 0.15.29 (registry+https://github.com/rust-lang/crates.io-index)" = "1825685f977249735d510a242a6727b46efe914bb67e38d30c071b1b72b1d5c2" +"checksum syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)" = "66c8865bf5a7cbb662d8b011950060b3c8743dca141b054bf7195b20d314d8e2" "checksum synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6" "checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015" "checksum take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" @@ -2767,7 +2767,7 @@ dependencies = [ "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" "checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" "checksum utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "796f7e48bef87609f7ade7e06495a87d5cd06c7866e6a5cbfceffc558a243737" -"checksum uuid 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "600ef8213e9f8a0ac1f876e470e90780ae0478eabce7f76aff41b0f4ef0fd5c0" +"checksum uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a" "checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" "checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" @@ -2781,7 +2781,7 @@ dependencies = [ "checksum wasmparser 0.28.0 (registry+https://github.com/rust-lang/crates.io-index)" = "40f426b1929bd26517fb10702e2a8e520d1845c49567aa4d244f426f10b206c1" "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.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0" +"checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770" "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" "checksum winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7168bab6e1daee33b4557efd0e95d5ca70a03706d39fa5f3fe7a236f584b03c9" diff --git a/lib/wasi/Cargo.toml b/lib/wasi/Cargo.toml index cbb565286..cdf1a45b4 100644 --- a/lib/wasi/Cargo.toml +++ b/lib/wasi/Cargo.toml @@ -16,7 +16,7 @@ generational-arena = "0.2.2" log = "0.4.6" byteorder = "1.3.1" -[target.'cfg(unix)'.dependencies.zbox] +[dependencies.zbox] git = "https://github.com/wasmerio/zbox" branch = "bundle-libsodium" -features = ["libsodium-bundled"] \ No newline at end of file +features = ["libsodium-bundled"] diff --git a/lib/wasi/src/state.rs b/lib/wasi/src/state.rs index 4f0102ccf..d56f2f5be 100644 --- a/lib/wasi/src/state.rs +++ b/lib/wasi/src/state.rs @@ -6,11 +6,8 @@ use crate::syscalls::types::*; use generational_arena::{Arena, Index as Inode}; use hashbrown::hash_map::{Entry, HashMap}; use std::{ - cell::{Cell, RefCell}, + cell::Cell, io::{self, Write}, - ops::{Index, IndexMut}, - path::PathBuf, - rc::Rc, time::SystemTime, }; use zbox::{init_env as zbox_init_env, File, FileType, OpenOptions, Repo, RepoOpener}; @@ -24,6 +21,7 @@ pub struct InodeVal { pub kind: Kind, } +#[allow(dead_code)] pub enum Kind { File { handle: File, @@ -75,6 +73,7 @@ impl WasiFs { }) } + #[allow(dead_code)] fn get_inode(&mut self, path: &str) -> Option { Some(match self.name_map.entry(path.to_string()) { Entry::Occupied(o) => *o.get(), @@ -133,6 +132,7 @@ impl WasiFs { }) } + #[allow(dead_code)] fn filestat_inode( &self, inode: Inode, @@ -164,6 +164,7 @@ impl WasiFs { } } + #[allow(dead_code)] pub fn filestat_path( &mut self, preopened_fd: __wasi_fd_t, diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index 4b17f50ef..26e90a673 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -12,7 +12,6 @@ use structopt::StructOpt; use wasmer::webassembly::InstanceABI; use wasmer::*; -use wasmer_emscripten; use wasmer_runtime::cache::{Cache as BaseCache, FileSystemCache, WasmHash, WASMER_VERSION_HASH}; use wasmer_runtime_core::backend::CompilerConfig; #[cfg(feature = "wasi")] From 2ac7b6408cf6ee5022fccc102210c8ef0b164796 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Wed, 3 Apr 2019 16:52:37 -0700 Subject: [PATCH 108/413] add validate subcommand --- src/bin/wasmer.rs | 57 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index 61bd50dac..f29f3e634 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -28,6 +28,10 @@ enum CLIOptions { #[structopt(name = "cache")] Cache(Cache), + /// Validate a Web Assembly binary + #[structopt(name = "validate")] + Validate(Validate), + /// Update wasmer to the latest version #[structopt(name = "self-update")] SelfUpdate, @@ -63,6 +67,13 @@ enum Cache { Dir, } +#[derive(Debug, StructOpt)] +struct Validate { + /// Input file + #[structopt(parse(from_os_str))] + path: PathBuf, +} + /// Read the contents of a file fn read_file_contents(path: &PathBuf) -> Result, io::Error> { let mut buffer: Vec = Vec::new(); @@ -240,6 +251,49 @@ fn run(options: Run) { } } +fn validate_wasm(validate: Validate) -> Result<(), String> { + let wasm_path = validate.path; + let wasm_path_as_str = wasm_path.to_str().unwrap(); + + let wasm_binary: Vec = read_file_contents(&wasm_path).map_err(|err| { + format!( + "Can't read the file {}: {}", + wasm_path.as_os_str().to_string_lossy(), + err + ) + })?; + + if !utils::is_wasm_binary(&wasm_binary) { + return Err(format!( + "Cannot recognize \"{}\" as a WASM binary", + wasm_path_as_str, + )); + } + + wabt::Module::read_binary(wasm_binary, &Default::default()) + .map_err(|err| { + format!( + "Failed to read \"{}\" as a WASM binary: {}", + wasm_path_as_str, err + ) + })? + .validate() + .map_err(|err| format!("Failed to validate \"{}\": {}", wasm_path_as_str, err))?; + + Ok(()) +} + +/// Runs logic for the `validate` subcommand +fn validate(validate: Validate) { + match validate_wasm(validate) { + Err(message) => { + eprintln!("Error: {}", message); + exit(-1); + } + _ => (), + } +} + fn main() { let options = CLIOptions::from_args(); match options { @@ -264,6 +318,9 @@ fn main() { println!("{}", get_cache_dir().to_string_lossy()); } }, + CLIOptions::Validate(validate_options) => { + validate(validate_options); + } #[cfg(target_os = "windows")] CLIOptions::Cache(_) => { println!("Caching is disabled for Windows."); From c1c99dbff1886ed49148483e6a9ed6b2e0313a51 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Wed, 3 Apr 2019 17:01:02 -0700 Subject: [PATCH 109/413] rename fs and fix (probable) bug in renumber syscall --- lib/wasi/src/state.rs | 2 +- lib/wasi/src/syscalls/mod.rs | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/wasi/src/state.rs b/lib/wasi/src/state.rs index d56f2f5be..5b42ba1c7 100644 --- a/lib/wasi/src/state.rs +++ b/lib/wasi/src/state.rs @@ -63,7 +63,7 @@ impl WasiFs { Ok(Self { repo: RepoOpener::new() .create(true) - .open("mem://foo", "") + .open("mem://wasmer-test-fs", "") .map_err(|e| e.to_string())?, name_map: HashMap::new(), inodes: Arena::new(), diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 068e4ed78..15f0f2679 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -8,7 +8,7 @@ pub mod windows; use self::types::*; use crate::{ ptr::{Array, WasmPtr}, - state::{Kind, WasiState, MAX_SYMLINKS}, + state::{Fd, Kind, WasiState, MAX_SYMLINKS}, }; use rand::{thread_rng, Rng}; use std::cell::Cell; @@ -768,7 +768,14 @@ pub fn fd_renumber(ctx: &mut Ctx, from: __wasi_fd_t, to: __wasi_fd_t) -> __wasi_ let state = get_wasi_state(ctx); let fd_entry = wasi_try!(state.fs.fd_map.get(&from).ok_or(__WASI_EBADF)); - state.fs.fd_map.insert(to, fd_entry.clone()); + state.fs.fd_map.insert( + to, + Fd { + // TODO: verify this is correct + rights: fd_entry.rights_inheriting, + ..*fd_entry + }, + ); __WASI_ESUCCESS } From 207bd01400310b819b69ae990742434a160ffbf2 Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Wed, 3 Apr 2019 17:13:50 -0700 Subject: [PATCH 110/413] rename to destructor --- lib/wasi/src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/wasi/src/lib.rs b/lib/wasi/src/lib.rs index c6908988c..dac093f5c 100644 --- a/lib/wasi/src/lib.rs +++ b/lib/wasi/src/lib.rs @@ -19,7 +19,7 @@ use wasmer_runtime_core::{func, import::ImportObject, imports}; pub fn generate_import_object(args: Vec>, envs: Vec>) -> ImportObject { let state_gen = move || { - fn state_dtor(data: *mut c_void) { + fn state_destructor(data: *mut c_void) { unsafe { drop(Box::from_raw(data as *mut WasiState)); } @@ -33,7 +33,7 @@ pub fn generate_import_object(args: Vec>, envs: Vec>) -> ImportO ( Box::leak(state) as *mut WasiState as *mut c_void, - state_dtor as fn(*mut c_void), + state_destructor as fn(*mut c_void), ) }; imports! { From bda5b19098430d943f3304ac06ba11827b642027 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Wed, 3 Apr 2019 17:21:57 -0700 Subject: [PATCH 111/413] update wasm-parser dep; use it for validation --- Cargo.lock | 8 +++++++- lib/runtime-core/Cargo.toml | 2 +- lib/runtime-core/src/lib.rs | 9 +++++++-- lib/runtime-core/src/module.rs | 2 +- src/bin/wasmer.rs | 13 +++---------- 5 files changed, 19 insertions(+), 15 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 732daab18..f2dc848e1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2340,7 +2340,7 @@ dependencies = [ "serde-bench 0.0.7 (registry+https://github.com/rust-lang/crates.io-index)", "serde_bytes 0.10.5 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmparser 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmparser 0.29.2 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2382,6 +2382,11 @@ name = "wasmparser" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "wasmparser" +version = "0.29.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "which" version = "2.0.1" @@ -2755,6 +2760,7 @@ dependencies = [ "checksum wasmparser 0.22.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f46e666ecb4a406483a59a49f9d0c17f327e70da53a128eccddae2eadb95865c" "checksum wasmparser 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b5e01c420bc7d36e778bd242e1167b079562ba8b34087122cc9057187026d060" "checksum wasmparser 0.28.0 (registry+https://github.com/rust-lang/crates.io-index)" = "40f426b1929bd26517fb10702e2a8e520d1845c49567aa4d244f426f10b206c1" +"checksum wasmparser 0.29.2 (registry+https://github.com/rust-lang/crates.io-index)" = "981a8797cf89762e0233ec45fae731cb79a4dfaee12d9f0fe6cee01e4ac58d00" "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.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0" diff --git a/lib/runtime-core/Cargo.toml b/lib/runtime-core/Cargo.toml index 438643397..215df568a 100644 --- a/lib/runtime-core/Cargo.toml +++ b/lib/runtime-core/Cargo.toml @@ -10,7 +10,7 @@ edition = "2018" [dependencies] nix = "0.12.0" page_size = "0.4.1" -wasmparser = "0.23.0" +wasmparser = "0.29.2" parking_lot = "0.7.1" lazy_static = "1.2.0" indexmap = "1.0.2" diff --git a/lib/runtime-core/src/lib.rs b/lib/runtime-core/src/lib.rs index 36bfcc221..7042983d2 100644 --- a/lib/runtime-core/src/lib.rs +++ b/lib/runtime-core/src/lib.rs @@ -93,13 +93,18 @@ pub fn compile_with_config( /// WebAssembly specification. Returns `true` if validation /// succeeded, `false` if validation failed. pub fn validate(wasm: &[u8]) -> bool { + validate_and_report_errors(wasm).is_ok() +} + +/// The same as `validate` but with an Error message on failure +pub fn validate_and_report_errors(wasm: &[u8]) -> ::std::result::Result<(), String> { use wasmparser::WasmDecoder; let mut parser = wasmparser::ValidatingParser::new(wasm, None); loop { let state = parser.read(); match *state { - wasmparser::ParserState::EndWasm => break true, - wasmparser::ParserState::Error(_) => break false, + wasmparser::ParserState::EndWasm => break Ok(()), + wasmparser::ParserState::Error(e) => break Err(format!("{}", e)), _ => {} } } diff --git a/lib/runtime-core/src/module.rs b/lib/runtime-core/src/module.rs index b0c33406e..65817399d 100644 --- a/lib/runtime-core/src/module.rs +++ b/lib/runtime-core/src/module.rs @@ -73,7 +73,7 @@ impl ModuleInfo { let len = reader.bytes_remaining(); let bytes = reader.read_bytes(len)?; let data = bytes.to_vec(); - let name = String::from_utf8_lossy(name).to_string(); + let name = name.to_string(); self.custom_sections.insert(name, data); } } diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index f29f3e634..cd160aff6 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -14,7 +14,7 @@ use wasmer::webassembly::InstanceABI; use wasmer::*; use wasmer_emscripten; use wasmer_runtime::cache::{Cache as BaseCache, FileSystemCache, WasmHash, WASMER_VERSION_HASH}; -use wasmer_runtime_core::backend::CompilerConfig; +use wasmer_runtime_core::{self, backend::CompilerConfig}; #[derive(Debug, StructOpt)] #[structopt(name = "wasmer", about = "Wasm execution runtime.")] @@ -270,15 +270,8 @@ fn validate_wasm(validate: Validate) -> Result<(), String> { )); } - wabt::Module::read_binary(wasm_binary, &Default::default()) - .map_err(|err| { - format!( - "Failed to read \"{}\" as a WASM binary: {}", - wasm_path_as_str, err - ) - })? - .validate() - .map_err(|err| format!("Failed to validate \"{}\": {}", wasm_path_as_str, err))?; + wasmer_runtime_core::validate_and_report_errors(&wasm_binary) + .map_err(|err| format!("Validation failed: {}", err))?; Ok(()) } From a43f8ea0b11d16abb3e83368fc2300ab5cb3e35e Mon Sep 17 00:00:00 2001 From: losfair Date: Thu, 4 Apr 2019 09:38:22 +0800 Subject: [PATCH 112/413] Memory operations. --- lib/dynasm-backend/src/codegen_x64.rs | 219 +++++++++++++++++++++++++- lib/dynasm-backend/src/emitter_x64.rs | 36 +++++ 2 files changed, 248 insertions(+), 7 deletions(-) diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index ee0c58cd8..022109c01 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -21,6 +21,7 @@ use wasmer_runtime_core::{ }, units::Pages, vm::{self, ImportBacking, LocalGlobal, LocalMemory, LocalTable}, + vmcalls, }; use wasmparser::{Operator, Type as WpType}; use crate::machine::*; @@ -841,7 +842,7 @@ impl X64FunctionCode { value_stack.push((ret, LocalOrTemp::Temp)); } - fn emit_call_sysv>(a: &mut Assembler, m: &mut Machine, label: DynamicLabel, params: I) { + fn emit_call_sysv, F: FnOnce(&mut Assembler)>(a: &mut Assembler, m: &mut Machine, cb: F, params: I) { let used_gprs = m.get_used_gprs(); for r in used_gprs.iter() { a.emit_push(Size::S64, Location::GPR(*r)); @@ -873,7 +874,7 @@ impl X64FunctionCode { } a.emit_mov(Size::S64, Location::GPR(Machine::get_vmctx_reg()), Machine::get_param_location(0)); // vmctx - a.emit_call_label(label); + cb(a); if stack_offset > 0 { a.emit_add(Size::S64, Location::Imm32(stack_offset as u32), Location::GPR(GPR::RSP)); @@ -883,6 +884,70 @@ impl X64FunctionCode { a.emit_pop(Size::S64, Location::GPR(*r)); } } + + fn emit_call_sysv_label>(a: &mut Assembler, m: &mut Machine, label: DynamicLabel, params: I) { + Self::emit_call_sysv(a, m, |a| a.emit_call_label(label), params) + } + + fn emit_memory_op( + module_info: &ModuleInfo, + a: &mut Assembler, + m: &mut Machine, + addr: Location, + offset: usize, + value_size: usize, + cb: F + ) { + let tmp_addr = m.acquire_temp_gpr().unwrap(); + let tmp_base = m.acquire_temp_gpr().unwrap(); + let tmp_bound = m.acquire_temp_gpr().unwrap(); + + a.emit_mov( + Size::S64, + Location::Memory( + Machine::get_vmctx_reg(), + match MemoryIndex::new(0).local_or_import(module_info) { + LocalOrImport::Local(_) => vm::Ctx::offset_memories(), + LocalOrImport::Import(_) => vm::Ctx::offset_imported_memories(), + } as i32 + ), + Location::GPR(tmp_base), + ); + a.emit_mov(Size::S64, Location::Memory(tmp_base, 0), Location::GPR(tmp_base)); + a.emit_mov(Size::S32, Location::Memory(tmp_base, LocalMemory::offset_bound() as i32), Location::GPR(tmp_bound)); + a.emit_mov(Size::S64, Location::Memory(tmp_base, LocalMemory::offset_base() as i32), Location::GPR(tmp_base)); + a.emit_add(Size::S64, Location::GPR(tmp_base), Location::GPR(tmp_bound)); + + let mem_desc = match MemoryIndex::new(0).local_or_import(module_info) { + LocalOrImport::Local(local_mem_index) => &module_info.memories[local_mem_index], + LocalOrImport::Import(import_mem_index) => { + &module_info.imported_memories[import_mem_index].1 + } + }; + let need_check = match mem_desc.memory_type() { + MemoryType::Dynamic => true, + MemoryType::Static | MemoryType::SharedStatic => false, + }; + + if need_check { + a.emit_mov(Size::S32, addr, Location::GPR(tmp_addr)); + a.emit_add(Size::S64, Location::Imm32((offset + value_size) as u32), Location::GPR(tmp_addr)); + a.emit_add(Size::S64, Location::GPR(tmp_base), Location::GPR(tmp_addr)); + a.emit_cmp(Size::S64, Location::GPR(tmp_bound), Location::GPR(tmp_addr)); + a.emit_conditional_trap(Condition::Above); + } + + m.release_temp_gpr(tmp_bound); + + a.emit_mov(Size::S32, addr, Location::GPR(tmp_addr)); + a.emit_add(Size::S64, Location::Imm32(offset as u32), Location::GPR(tmp_addr)); + a.emit_add(Size::S64, Location::GPR(tmp_base), Location::GPR(tmp_addr)); + m.release_temp_gpr(tmp_base); + + cb(a, m, tmp_addr); + + m.release_temp_gpr(tmp_addr); + } } impl FunctionCodeGenerator for X64FunctionCode { @@ -976,11 +1041,11 @@ impl FunctionCodeGenerator for X64FunctionCode { let tmp = self.machine.acquire_temp_gpr().unwrap(); if global_index < module_info.imported_globals.len() { - a.emit_mov(Size::S64, Location::Memory(GPR::RDI, vm::Ctx::offset_imported_globals() as i32), Location::GPR(tmp)); + a.emit_mov(Size::S64, Location::Memory(Machine::get_vmctx_reg(), vm::Ctx::offset_imported_globals() as i32), Location::GPR(tmp)); } else { global_index -= module_info.imported_globals.len(); assert!(global_index < module_info.globals.len()); - a.emit_mov(Size::S64, Location::Memory(GPR::RDI, vm::Ctx::offset_globals() as i32), Location::GPR(tmp)); + a.emit_mov(Size::S64, Location::Memory(Machine::get_vmctx_reg(), vm::Ctx::offset_globals() as i32), Location::GPR(tmp)); } a.emit_mov(Size::S64, Location::Memory(tmp, (global_index as i32) * 8), Location::GPR(tmp)); Self::emit_relaxed_binop( @@ -997,11 +1062,11 @@ impl FunctionCodeGenerator for X64FunctionCode { let tmp = self.machine.acquire_temp_gpr().unwrap(); if global_index < module_info.imported_globals.len() { - a.emit_mov(Size::S64, Location::Memory(GPR::RDI, vm::Ctx::offset_imported_globals() as i32), Location::GPR(tmp)); + a.emit_mov(Size::S64, Location::Memory(Machine::get_vmctx_reg(), vm::Ctx::offset_imported_globals() as i32), Location::GPR(tmp)); } else { global_index -= module_info.imported_globals.len(); assert!(global_index < module_info.globals.len()); - a.emit_mov(Size::S64, Location::Memory(GPR::RDI, vm::Ctx::offset_globals() as i32), Location::GPR(tmp)); + a.emit_mov(Size::S64, Location::Memory(Machine::get_vmctx_reg(), vm::Ctx::offset_globals() as i32), Location::GPR(tmp)); } a.emit_mov(Size::S64, Location::Memory(tmp, (global_index as i32) * 8), Location::GPR(tmp)); Self::emit_relaxed_binop( @@ -1230,7 +1295,7 @@ impl FunctionCodeGenerator for X64FunctionCode { .collect(); self.machine.release_locations_only_regs(&released); - Self::emit_call_sysv(a, &mut self.machine, label, params.iter().map(|&(x, _)| x)); + Self::emit_call_sysv_label(a, &mut self.machine, label, params.iter().map(|&(x, _)| x)); self.machine.release_locations_only_stack(a, &released); @@ -1346,6 +1411,146 @@ impl FunctionCodeGenerator for X64FunctionCode { }); a.emit_label(label); } + Operator::Nop => {} + Operator::MemorySize { reserved } => { + let memory_index = MemoryIndex::new(reserved as usize); + let target: usize = match memory_index.local_or_import(module_info) { + LocalOrImport::Local(local_mem_index) => { + let mem_desc = &module_info.memories[local_mem_index]; + match mem_desc.memory_type() { + MemoryType::Dynamic => vmcalls::local_dynamic_memory_size as usize, + MemoryType::Static => vmcalls::local_static_memory_size as usize, + MemoryType::SharedStatic => unimplemented!(), + } + } + LocalOrImport::Import(import_mem_index) => { + let mem_desc = &module_info.imported_memories[import_mem_index].1; + match mem_desc.memory_type() { + MemoryType::Dynamic => vmcalls::imported_dynamic_memory_size as usize, + MemoryType::Static => vmcalls::imported_static_memory_size as usize, + MemoryType::SharedStatic => unimplemented!(), + } + } + }; + Self::emit_call_sysv(a, &mut self.machine, |a| { + a.emit_mov(Size::S64, Location::Imm64(target as u64), Location::GPR(GPR::RAX)); + a.emit_call_location(Location::GPR(GPR::RAX)); + }, ::std::iter::once(Location::Imm32(memory_index.index() as u32))); + let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + a.emit_mov(Size::S64, Location::GPR(GPR::RAX), ret); + } + Operator::MemoryGrow { reserved } => { + let memory_index = MemoryIndex::new(reserved as usize); + let target: usize = match memory_index.local_or_import(module_info) { + LocalOrImport::Local(local_mem_index) => { + let mem_desc = &module_info.memories[local_mem_index]; + match mem_desc.memory_type() { + MemoryType::Dynamic => vmcalls::local_dynamic_memory_grow as usize, + MemoryType::Static => vmcalls::local_static_memory_grow as usize, + MemoryType::SharedStatic => unimplemented!(), + } + } + LocalOrImport::Import(import_mem_index) => { + let mem_desc = &module_info.imported_memories[import_mem_index].1; + match mem_desc.memory_type() { + MemoryType::Dynamic => vmcalls::imported_dynamic_memory_grow as usize, + MemoryType::Static => vmcalls::imported_static_memory_grow as usize, + MemoryType::SharedStatic => unimplemented!(), + } + } + }; + + let (param_pages, param_pages_lot) = self.value_stack.pop().unwrap(); + + if param_pages_lot == LocalOrTemp::Temp { + self.machine.release_locations_only_regs(&[param_pages]); + } + + Self::emit_call_sysv(a, &mut self.machine, |a| { + a.emit_mov(Size::S64, Location::Imm64(target as u64), Location::GPR(GPR::RAX)); + a.emit_call_location(Location::GPR(GPR::RAX)); + }, ::std::iter::once(Location::Imm32(memory_index.index() as u32)).chain(::std::iter::once(param_pages))); + + if param_pages_lot == LocalOrTemp::Temp { + self.machine.release_locations_only_stack(a, &[param_pages]); + } + + let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + a.emit_mov(Size::S64, Location::GPR(GPR::RAX), ret); + } + Operator::I32Load { memarg } => { + let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + + Self::emit_memory_op(module_info, a, &mut self.machine, target, memarg.offset as usize, 4, |a, m, addr| { + Self::emit_relaxed_binop( + a, m, Assembler::emit_mov, + Size::S32, Location::Memory(addr, 0), ret, + ); + }); + } + Operator::I32Load8U { memarg } => { + let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + + Self::emit_memory_op(module_info, a, &mut self.machine, target, memarg.offset as usize, 1, |a, m, addr| { + Self::emit_relaxed_zx_sx( + a, m, Assembler::emit_movzx, + Size::S8, Location::Memory(addr, 0), Size::S32, ret, + ); + }); + } + Operator::I32Load8S { memarg } => { + let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + + Self::emit_memory_op(module_info, a, &mut self.machine, target, memarg.offset as usize, 1, |a, m, addr| { + Self::emit_relaxed_zx_sx( + a, m, Assembler::emit_movsx, + Size::S8, Location::Memory(addr, 0), Size::S32, ret, + ); + }); + } + Operator::I32Load16U { memarg } => { + let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + + Self::emit_memory_op(module_info, a, &mut self.machine, target, memarg.offset as usize, 2, |a, m, addr| { + Self::emit_relaxed_zx_sx( + a, m, Assembler::emit_movzx, + Size::S16, Location::Memory(addr, 0), Size::S32, ret, + ); + }); + } + Operator::I32Load16S { memarg } => { + let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + + Self::emit_memory_op(module_info, a, &mut self.machine, target, memarg.offset as usize, 2, |a, m, addr| { + Self::emit_relaxed_zx_sx( + a, m, Assembler::emit_movsx, + Size::S16, Location::Memory(addr, 0), Size::S32, ret, + ); + }); + } + Operator::I32Store { memarg } => { + let target_value = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target_addr = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + + Self::emit_memory_op(module_info, a, &mut self.machine, target_addr, memarg.offset as usize, 4, |a, m, addr| { + Self::emit_relaxed_binop( + a, m, Assembler::emit_mov, + Size::S32, target_value, Location::Memory(addr, 0), + ); + }); + } Operator::Unreachable => { a.emit_ud2(); self.unreachable_depth = 1; diff --git a/lib/dynasm-backend/src/emitter_x64.rs b/lib/dynasm-backend/src/emitter_x64.rs index 58ac233ba..e33763762 100644 --- a/lib/dynasm-backend/src/emitter_x64.rs +++ b/lib/dynasm-backend/src/emitter_x64.rs @@ -82,6 +82,7 @@ pub trait Emitter { fn emit_lea(&mut self, sz: Size, src: Location, dst: Location); fn emit_xor(&mut self, sz: Size, src: Location, dst: Location); fn emit_jmp(&mut self, condition: Condition, label: Self::Label); + fn emit_conditional_trap(&mut self, condition: Condition); fn emit_set(&mut self, condition: Condition, dst: GPR); fn emit_push(&mut self, sz: Size, src: Location); fn emit_pop(&mut self, sz: Size, dst: Location); @@ -107,6 +108,7 @@ pub trait Emitter { fn emit_ud2(&mut self); fn emit_ret(&mut self); fn emit_call_label(&mut self, label: Self::Label); + fn emit_call_location(&mut self, loc: Location); } macro_rules! unop_gpr { @@ -289,6 +291,18 @@ macro_rules! jmp_op { } } +macro_rules! trap_op { + ($ins:ident, $assembler:tt) => { + dynasm!($assembler + ; $ins >trap + ; jmp >after + ; trap: + ; ud2 + ; after: + ); + } +} + impl Emitter for Assembler { type Label = DynamicLabel; type Offset = AssemblyOffset; @@ -373,6 +387,21 @@ impl Emitter for Assembler { Condition::NotEqual => jmp_op!(jne, self, label), } } + fn emit_conditional_trap(&mut self, condition: Condition) { + match condition { + Condition::None => trap_op!(jmp, self), + Condition::Above => trap_op!(ja, self), + Condition::AboveEqual => trap_op!(jae, self), + Condition::Below => trap_op!(jb, self), + Condition::BelowEqual => trap_op!(jbe, self), + Condition::Greater => trap_op!(jg, self), + Condition::GreaterEqual => trap_op!(jge, self), + Condition::Less => trap_op!(jl, self), + Condition::LessEqual => trap_op!(jle, self), + Condition::Equal => trap_op!(je, self), + Condition::NotEqual => trap_op!(jne, self), + } + } fn emit_set(&mut self, condition: Condition, dst: GPR) { match condition { Condition::Above => dynasm!(self ; seta Rb(dst as u8)), @@ -536,4 +565,11 @@ impl Emitter for Assembler { fn emit_call_label(&mut self, label: Self::Label) { dynasm!(self ; call =>label); } + fn emit_call_location(&mut self, loc: Location) { + match loc { + Location::GPR(x) => dynasm!(self ; call Rq(x as u8)), + Location::Memory(base, disp) => dynasm!(self ; call QWORD [Rq(base as u8) + disp]), + _ => unreachable!(), + } + } } \ No newline at end of file From 07eac13ee3a6044911ae6cfd2913dd4d0397db9f Mon Sep 17 00:00:00 2001 From: losfair Date: Thu, 4 Apr 2019 10:50:48 +0800 Subject: [PATCH 113/413] Align stack to 16 bytes and implement i32 stores. --- lib/dynasm-backend/src/codegen_x64.rs | 57 +++++++++++++++++++++++++-- lib/dynasm-backend/src/emitter_x64.rs | 6 +++ lib/dynasm-backend/src/machine.rs | 4 ++ 3 files changed, 63 insertions(+), 4 deletions(-) diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index 022109c01..e26701526 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -843,6 +843,9 @@ impl X64FunctionCode { } fn emit_call_sysv, F: FnOnce(&mut Assembler)>(a: &mut Assembler, m: &mut Machine, cb: F, params: I) { + let params: Vec<_> = params.collect(); + + // Save used GPRs. let used_gprs = m.get_used_gprs(); for r in used_gprs.iter() { a.emit_push(Size::S64, Location::GPR(*r)); @@ -850,36 +853,60 @@ impl X64FunctionCode { let mut stack_offset: usize = 0; + // Calculate stack offset. + for (i, param) in params.iter().enumerate() { + let loc = Machine::get_param_location(1 + i); + match loc { + Location::Memory(_, _) => { + stack_offset += 8; + } + _ => {} + } + } + + // Align stack to 16 bytes. + if (m.get_stack_offset() + used_gprs.len() * 8 + stack_offset) % 16 != 0 { + a.emit_sub(Size::S64, Location::Imm32(8), Location::GPR(GPR::RSP)); + stack_offset += 8; + } + let mut call_movs: Vec<(Location, GPR)> = vec![]; - for (i, param) in params.enumerate() { + // Prepare register & stack parameters. + for (i, param) in params.iter().enumerate() { let loc = Machine::get_param_location(1 + i); match loc { Location::GPR(x) => { - call_movs.push((param, x)); + call_movs.push((*param, x)); } Location::Memory(_, _) => { - a.emit_push(Size::S64, param); - stack_offset += 8; + a.emit_push(Size::S64, *param); } _ => unreachable!() } } + // Sort register moves so that register are not overwritten before read. sort_call_movs(&mut call_movs); + + // Emit register moves. for (loc, gpr) in call_movs { if loc != Location::GPR(gpr) { a.emit_mov(Size::S64, loc, Location::GPR(gpr)); } } + // Put vmctx as the first parameter. a.emit_mov(Size::S64, Location::GPR(Machine::get_vmctx_reg()), Machine::get_param_location(0)); // vmctx + cb(a); + // Restore stack. if stack_offset > 0 { a.emit_add(Size::S64, Location::Imm32(stack_offset as u32), Location::GPR(GPR::RSP)); } + // Restore GPRs. for r in used_gprs.iter().rev() { a.emit_pop(Size::S64, Location::GPR(*r)); } @@ -1551,6 +1578,28 @@ impl FunctionCodeGenerator for X64FunctionCode { ); }); } + Operator::I32Store8 { memarg } => { + let target_value = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target_addr = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + + Self::emit_memory_op(module_info, a, &mut self.machine, target_addr, memarg.offset as usize, 1, |a, m, addr| { + Self::emit_relaxed_binop( + a, m, Assembler::emit_mov, + Size::S8, target_value, Location::Memory(addr, 0), + ); + }); + } + Operator::I32Store16 { memarg } => { + let target_value = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target_addr = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + + Self::emit_memory_op(module_info, a, &mut self.machine, target_addr, memarg.offset as usize, 2, |a, m, addr| { + Self::emit_relaxed_binop( + a, m, Assembler::emit_mov, + Size::S16, target_value, Location::Memory(addr, 0), + ); + }); + } Operator::Unreachable => { a.emit_ud2(); self.unreachable_depth = 1; diff --git a/lib/dynasm-backend/src/emitter_x64.rs b/lib/dynasm-backend/src/emitter_x64.rs index e33763762..c66ed0ad1 100644 --- a/lib/dynasm-backend/src/emitter_x64.rs +++ b/lib/dynasm-backend/src/emitter_x64.rs @@ -326,6 +326,12 @@ impl Emitter for Assembler { mov, self, sz, src, dst, { match (sz, src, dst) { + (Size::S8, Location::GPR(src), Location::Memory(dst, disp)) => { + dynasm!(self ; mov [Rq(dst as u8) + disp], Rb(src as u8)); + } + (Size::S16, Location::GPR(src), Location::Memory(dst, disp)) => { + dynasm!(self ; mov [Rq(dst as u8) + disp], Rw(src as u8)); + } (Size::S32, Location::GPR(src), Location::XMM(dst)) => { dynasm!(self ; movd Rx(dst as u8), Rd(src as u8)); }, diff --git a/lib/dynasm-backend/src/machine.rs b/lib/dynasm-backend/src/machine.rs index 037d15fdc..0a7686d9e 100644 --- a/lib/dynasm-backend/src/machine.rs +++ b/lib/dynasm-backend/src/machine.rs @@ -21,6 +21,10 @@ impl Machine { } } + pub fn get_stack_offset(&self) -> usize { + self.stack_offset.0 + } + pub fn get_used_gprs(&self) -> Vec { self.used_gprs.iter().cloned().collect() } From b46107762ee0e3ecdf25ae9dfcf93318c4fc1813 Mon Sep 17 00:00:00 2001 From: losfair Date: Thu, 4 Apr 2019 11:19:38 +0800 Subject: [PATCH 114/413] Imports. --- lib/dynasm-backend/src/codegen_x64.rs | 40 +++++++++++++-------------- lib/dynasm-backend/src/emitter_x64.rs | 8 ++++++ 2 files changed, 27 insertions(+), 21 deletions(-) diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index e26701526..a087918ba 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -418,34 +418,32 @@ impl ModuleCodeGenerator Result<(), CodegenError> { - /* - let labels = match self.function_labels.as_mut() { - Some(x) => x, - None => { - return Err(CodegenError { - message: "got function import after code", - }); - } - }; + let labels = self.function_labels.as_mut().unwrap(); let id = labels.len(); - let assembler = self.assembler.as_mut().unwrap(); - - let offset = assembler.offset(); - - let label = X64FunctionCode::emit_native_call( - self.assembler.as_mut().unwrap(), - invoke_import, - 0, - id, - ); + let a = self.assembler.as_mut().unwrap(); + let offset = a.offset(); + let label = a.get_label(); + a.emit_label(label); labels.insert(id, (label, Some(offset))); + a.emit_mov( + Size::S64, + Location::Memory( + GPR::RDI, + vm::Ctx::offset_imported_funcs() as i32, + ), + Location::GPR(GPR::RAX), + ); + a.emit_mov(Size::S64, Location::Memory( + GPR::RAX, + (vm::ImportedFunc::size() as usize * id + vm::ImportedFunc::offset_func() as usize) as i32 + ), Location::GPR(GPR::RAX)); + a.emit_jmp_location(Location::GPR(GPR::RAX)); + self.func_import_count += 1; Ok(()) - */ - unimplemented!() } } diff --git a/lib/dynasm-backend/src/emitter_x64.rs b/lib/dynasm-backend/src/emitter_x64.rs index c66ed0ad1..44977340c 100644 --- a/lib/dynasm-backend/src/emitter_x64.rs +++ b/lib/dynasm-backend/src/emitter_x64.rs @@ -82,6 +82,7 @@ pub trait Emitter { fn emit_lea(&mut self, sz: Size, src: Location, dst: Location); fn emit_xor(&mut self, sz: Size, src: Location, dst: Location); fn emit_jmp(&mut self, condition: Condition, label: Self::Label); + fn emit_jmp_location(&mut self, loc: Location); fn emit_conditional_trap(&mut self, condition: Condition); fn emit_set(&mut self, condition: Condition, dst: GPR); fn emit_push(&mut self, sz: Size, src: Location); @@ -393,6 +394,13 @@ impl Emitter for Assembler { Condition::NotEqual => jmp_op!(jne, self, label), } } + fn emit_jmp_location(&mut self, loc: Location) { + match loc { + Location::GPR(x) => dynasm!(self ; jmp Rq(x as u8)), + Location::Memory(base, disp) => dynasm!(self ; jmp QWORD [Rq(base as u8) + disp]), + _ => unreachable!(), + } + } fn emit_conditional_trap(&mut self, condition: Condition) { match condition { Condition::None => trap_op!(jmp, self), From 5fd0ee810b4ff5b6b0e727d772f606654e507d8d Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Thu, 4 Apr 2019 10:23:28 -0500 Subject: [PATCH 115/413] Update Cargo.lock for Cranelift 0.3.0 --- Cargo.lock | 78 ++++++++++++++++++++++++++---------------------------- 1 file changed, 37 insertions(+), 41 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2482a59f0..6852fa86d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,3 +1,5 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. [[package]] name = "MacTypes-sys" version = "2.1.0" @@ -288,72 +290,72 @@ dependencies = [ [[package]] name = "cranelift-bforest" -version = "0.26.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cranelift-entity 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-entity 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cranelift-codegen" -version = "0.26.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cranelift-bforest 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-codegen-meta 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-entity 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-bforest 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-codegen-meta 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-entity 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", "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)", - "target-lexicon 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "target-lexicon 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cranelift-codegen-meta" -version = "0.26.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cranelift-entity 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-entity 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cranelift-entity" -version = "0.26.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "cranelift-frontend" -version = "0.26.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cranelift-codegen 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-codegen 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "target-lexicon 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "target-lexicon 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cranelift-native" -version = "0.26.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cranelift-codegen 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-codegen 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", "raw-cpuid 6.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "target-lexicon 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "target-lexicon 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cranelift-wasm" -version = "0.26.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cast 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-codegen 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-entity 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-frontend 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-codegen 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-entity 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-frontend 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", "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)", - "wasmparser 0.22.1 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmparser 0.29.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1830,7 +1832,7 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2217,10 +2219,10 @@ name = "wasmer-clif-backend" version = "0.2.0" dependencies = [ "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-codegen 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-entity 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-native 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cranelift-wasm 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-codegen 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-entity 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-native 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cranelift-wasm 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", "hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "nix 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2229,7 +2231,7 @@ dependencies = [ "serde-bench 0.0.7 (registry+https://github.com/rust-lang/crates.io-index)", "serde_bytes 0.10.5 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", - "target-lexicon 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "target-lexicon 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "wasmer-runtime-core 0.2.1", "wasmer-win-exception-handler 0.2.0", "wasmparser 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2390,11 +2392,6 @@ dependencies = [ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "wasmparser" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "wasmparser" version = "0.23.0" @@ -2566,13 +2563,13 @@ dependencies = [ "checksum constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff012e225ce166d4422e0e78419d901719760f62ae2b7969ca6b564d1b54a9e" "checksum core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "286e0b41c3a20da26536c6000a280585d519fd07b3956b43aed8a79e9edce980" "checksum core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "716c271e8613ace48344f723b60b900a93150271e5be206212d052bbc0883efa" -"checksum cranelift-bforest 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)" = "40f8ff24e9a6c89b8a846b14df9a34d2cac17cea7bdb5c81ed6b4744ee0e38bf" -"checksum cranelift-codegen 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)" = "42f5b809bd885c368e01aeec8fe04f21dcb07569834b907d75b4a7bed8d067eb" -"checksum cranelift-codegen-meta 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)" = "014c23ed3ebdc8377d41540af638245207dd169f421df042dfccc867465734ed" -"checksum cranelift-entity 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d4df40e26c0cf7b4d86919cb995bb412ee3001cc18e4f3c83a903f30b7007d8b" -"checksum cranelift-frontend 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)" = "789907218eeebebcea8122c2053d71affac91c96ce72cea35ebfdbbf547e82af" -"checksum cranelift-native 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)" = "474bee81d620a473bf43411a3d6f10ffbf7965141dc5e5b76d8d2151dde3285d" -"checksum cranelift-wasm 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49723365dab9a48b354bdc24cb6d9d5719bc1d3b858ffd2ea179d0d7d885804a" +"checksum cranelift-bforest 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e5a357d20666bf4a8c2d626a19f1b59dbca66cd844fb1e66c5612254fd0f7505" +"checksum cranelift-codegen 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ab00cb149a5bb0f7e6dd391357356a5d71c335a431e8eece94f32da2d5a043f7" +"checksum cranelift-codegen-meta 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e3797a2f450ac71297e083dd440d0cdd0d3bceabe4a3ca6bcb9e4077e9c0327d" +"checksum cranelift-entity 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5b66e28877b75b3d2b31250f780bb5db8f68ae3df681cd56add803b2567ac4fd" +"checksum cranelift-frontend 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b72d55fd732b1f7a99d043a36c54a5679b6ec8bc777c8d954fb97c4fa0fce7eb" +"checksum cranelift-native 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0239f34836621a127c2132980b2f5c32a1be1c40e2d1a9a1a9bd5af33c12aee" +"checksum cranelift-wasm 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)" = "740ebfba28c8433f06750f84819f1eb663ea9f5e4b9a81c01f4e52262d868b56" "checksum crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d663548de7f5cca343f1e0a48d14dcfb0e9eb4e079ec58883b7251539fa10aeb" "checksum crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" "checksum criterion 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "1c6e5ee5b9652d4f851418c448af105642e1f99e9a2741a8ff45c0d2c911b1e0" @@ -2739,7 +2736,7 @@ dependencies = [ "checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015" "checksum take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" "checksum tar 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)" = "c2167ff53da2a661702b3299f71a91b61b1dffef36b4b2884b1f9c67254c0133" -"checksum target-lexicon 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4af5e2227f0b887d591d3724b796a96eff04226104d872f5b3883fcd427d64b9" +"checksum target-lexicon 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d6923974ce4eb5bd28814756256d8ab71c28dd6e7483313fe7ab6614306bf633" "checksum tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8" "checksum tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "b86c784c88d98c801132806dadd3819ed29d8600836c4088e855cdf3e178ed8a" "checksum termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4096add70612622289f2fdcdbd5086dc81c1e2675e6ae58d6c4f62a16c6d7f2f" @@ -2781,7 +2778,6 @@ dependencies = [ "checksum wabt-sys 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a6265b25719e82598d104b3717375e37661d41753e2c84cde3f51050c7ed7e3c" "checksum walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "9d9d7ed3431229a144296213105a390676cc49c9b6a72bd19f3176c98e129fa1" "checksum want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "797464475f30ddb8830cc529aaaae648d581f99e2036a928877dfde027ddf6b3" -"checksum wasmparser 0.22.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f46e666ecb4a406483a59a49f9d0c17f327e70da53a128eccddae2eadb95865c" "checksum wasmparser 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b5e01c420bc7d36e778bd242e1167b079562ba8b34087122cc9057187026d060" "checksum wasmparser 0.28.0 (registry+https://github.com/rust-lang/crates.io-index)" = "40f426b1929bd26517fb10702e2a8e520d1845c49567aa4d244f426f10b206c1" "checksum wasmparser 0.29.2 (registry+https://github.com/rust-lang/crates.io-index)" = "981a8797cf89762e0233ec45fae731cb79a4dfaee12d9f0fe6cee01e4ac58d00" From 9e601c42f9c29cdf3d245e3a22edace694f963d2 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Thu, 4 Apr 2019 09:29:30 -0700 Subject: [PATCH 116/413] change func_index offset by number of imported funcs --- lib/clif-backend/src/module_env.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/clif-backend/src/module_env.rs b/lib/clif-backend/src/module_env.rs index 7c6cd6731..f8806f460 100644 --- a/lib/clif-backend/src/module_env.rs +++ b/lib/clif-backend/src/module_env.rs @@ -530,7 +530,10 @@ impl<'module, 'isa, 'data> ModuleEnvironment<'data> for ModuleEnv<'module, 'isa> .special_param(ir::ArgumentPurpose::VMContext) .expect("missing vmctx parameter"); - let func_index = pos.ins().iconst(ir::types::I32, func_index.index() as i64); + let func_index = pos.ins().iconst( + ir::types::I32, + func_index.index() as i64 + self.module.info.imported_functions.len() as i64, + ); pos.ins().call(start_debug, &[vmctx, func_index]); From cad4f9b5442f178858d3f566d88a1e24e28f6095 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Thu, 4 Apr 2019 13:58:05 -0700 Subject: [PATCH 117/413] get PHP kind of working... --- lib/emscripten/src/bitwise.rs | 3 ++- lib/emscripten/src/emscripten_target.rs | 4 ++-- lib/emscripten/src/env/unix/mod.rs | 5 ++++- lib/emscripten/src/io/mod.rs | 24 ++++++++++++++++++------ lib/emscripten/src/lib.rs | 2 +- lib/emscripten/src/memory.rs | 4 ++-- 6 files changed, 29 insertions(+), 13 deletions(-) diff --git a/lib/emscripten/src/bitwise.rs b/lib/emscripten/src/bitwise.rs index aa7fbab32..6868c402a 100644 --- a/lib/emscripten/src/bitwise.rs +++ b/lib/emscripten/src/bitwise.rs @@ -1,8 +1,9 @@ +use crate::emscripten_target; use wasmer_runtime_core::vm::Ctx; ///emscripten: _llvm_bswap_i64 pub fn _llvm_bswap_i64(_ctx: &mut Ctx, _low: i32, high: i32) -> i32 { debug!("emscripten::_llvm_bswap_i64"); - // setTempRet0(low.swap_bytes) + emscripten_target::setTempRet0(_ctx, _low.swap_bytes()); high.swap_bytes() } diff --git a/lib/emscripten/src/emscripten_target.rs b/lib/emscripten/src/emscripten_target.rs index 1877cbff1..1c575123b 100644 --- a/lib/emscripten/src/emscripten_target.rs +++ b/lib/emscripten/src/emscripten_target.rs @@ -5,8 +5,8 @@ use crate::env::get_emscripten_data; use libc::getdtablesize; use wasmer_runtime_core::vm::Ctx; -pub fn setTempRet0(_ctx: &mut Ctx, _a: i32) { - debug!("emscripten::setTempRet0"); +pub fn setTempRet0(_ctx: &mut Ctx, _val: i32) { + debug!("emscripten::setTempRet0: {}", _val); } pub fn getTempRet0(_ctx: &mut Ctx) -> i32 { debug!("emscripten::getTempRet0"); diff --git a/lib/emscripten/src/env/unix/mod.rs b/lib/emscripten/src/env/unix/mod.rs index 7c846150f..4199aca47 100644 --- a/lib/emscripten/src/env/unix/mod.rs +++ b/lib/emscripten/src/env/unix/mod.rs @@ -137,6 +137,9 @@ pub fn _getgrnam(ctx: &mut Ctx, name_ptr: c_int) -> c_int { pub fn _sysconf(_ctx: &mut Ctx, name: c_int) -> i32 { debug!("emscripten::_sysconf {}", name); + match name { + 30 => 16384, // page size + _ => unsafe { sysconf(name) as i32 }, // TODO review i64 + } // TODO: Implement like emscripten expects regarding memory/page size - unsafe { sysconf(name) as i32 } // TODO review i64 } diff --git a/lib/emscripten/src/io/mod.rs b/lib/emscripten/src/io/mod.rs index ceee3bdc1..2aee85fa6 100644 --- a/lib/emscripten/src/io/mod.rs +++ b/lib/emscripten/src/io/mod.rs @@ -25,21 +25,33 @@ pub fn getprotobynumber(_ctx: &mut Ctx, _one: i32) -> i32 { } /// sigdelset -pub fn sigdelset(_ctx: &mut Ctx, _one: i32, _two: i32) -> i32 { +pub fn sigdelset(ctx: &mut Ctx, set: i32, signum: i32) -> i32 { debug!("emscripten::sigdelset"); - unimplemented!() + let memory = ctx.memory(0); + let ptr = emscripten_memory_pointer!(memory, set) as *mut i32; + + unsafe { *ptr = *ptr & !(1 << (signum - 1)) } + + 0 } /// sigfillset -pub fn sigfillset(_ctx: &mut Ctx, _one: i32) -> i32 { +pub fn sigfillset(ctx: &mut Ctx, set: i32) -> i32 { debug!("emscripten::sigfillset"); - unimplemented!() + let memory = ctx.memory(0); + let ptr = emscripten_memory_pointer!(memory, set) as *mut i32; + + unsafe { + *ptr = -1; + } + + 0 } /// tzset pub fn tzset(_ctx: &mut Ctx) { - debug!("emscripten::tzset"); - unimplemented!() + debug!("emscripten::tzset - stub"); + //unimplemented!() } /// strptime diff --git a/lib/emscripten/src/lib.rs b/lib/emscripten/src/lib.rs index b544bdc11..6f15d96be 100644 --- a/lib/emscripten/src/lib.rs +++ b/lib/emscripten/src/lib.rs @@ -512,7 +512,7 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject "___syscall77" => func!(crate::syscalls::___syscall77), "___syscall83" => func!(crate::syscalls::___syscall83), "___syscall85" => func!(crate::syscalls::___syscall85), - "___syscall91" => func!(crate::syscalls::___syscall191), + "___syscall91" => func!(crate::syscalls::___syscall91), "___syscall94" => func!(crate::syscalls::___syscall194), "___syscall97" => func!(crate::syscalls::___syscall97), "___syscall102" => func!(crate::syscalls::___syscall102), diff --git a/lib/emscripten/src/memory.rs b/lib/emscripten/src/memory.rs index 02877a011..16aece81d 100644 --- a/lib/emscripten/src/memory.rs +++ b/lib/emscripten/src/memory.rs @@ -20,7 +20,7 @@ pub fn _emscripten_memcpy_big(ctx: &mut Ctx, dest: u32, src: u32, len: u32) -> u pub fn _emscripten_get_heap_size(_ctx: &mut Ctx) -> u32 { debug!("emscripten::_emscripten_get_heap_size",); // TODO: Fix implementation - 16_777_216 + 162_107_392 } /// emscripten: _emscripten_resize_heap @@ -35,7 +35,7 @@ pub fn get_total_memory(_ctx: &mut Ctx) -> u32 { debug!("emscripten::get_total_memory"); // instance.memories[0].current_pages() // TODO: Fix implementation - 16_777_216 + _ctx.memory(0).size().bytes().0 as u32 } /// emscripten: enlargeMemory From c307e7d37a381d2438612cefa182db89a62f973f Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Thu, 4 Apr 2019 14:01:56 -0700 Subject: [PATCH 118/413] revert changes to sysconf --- lib/emscripten/src/env/unix/mod.rs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lib/emscripten/src/env/unix/mod.rs b/lib/emscripten/src/env/unix/mod.rs index 4199aca47..7c846150f 100644 --- a/lib/emscripten/src/env/unix/mod.rs +++ b/lib/emscripten/src/env/unix/mod.rs @@ -137,9 +137,6 @@ pub fn _getgrnam(ctx: &mut Ctx, name_ptr: c_int) -> c_int { pub fn _sysconf(_ctx: &mut Ctx, name: c_int) -> i32 { debug!("emscripten::_sysconf {}", name); - match name { - 30 => 16384, // page size - _ => unsafe { sysconf(name) as i32 }, // TODO review i64 - } // TODO: Implement like emscripten expects regarding memory/page size + unsafe { sysconf(name) as i32 } // TODO review i64 } From f1fdb97d87f86e0f30105b92d1e485de9f7085a2 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Thu, 4 Apr 2019 14:06:53 -0700 Subject: [PATCH 119/413] allow cast_ptr_alignment --- lib/emscripten/src/io/mod.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/emscripten/src/io/mod.rs b/lib/emscripten/src/io/mod.rs index 2aee85fa6..6666cd5af 100644 --- a/lib/emscripten/src/io/mod.rs +++ b/lib/emscripten/src/io/mod.rs @@ -28,6 +28,7 @@ pub fn getprotobynumber(_ctx: &mut Ctx, _one: i32) -> i32 { pub fn sigdelset(ctx: &mut Ctx, set: i32, signum: i32) -> i32 { debug!("emscripten::sigdelset"); let memory = ctx.memory(0); + #[allow(clippy::cast_ptr_alignment)] let ptr = emscripten_memory_pointer!(memory, set) as *mut i32; unsafe { *ptr = *ptr & !(1 << (signum - 1)) } @@ -39,6 +40,7 @@ pub fn sigdelset(ctx: &mut Ctx, set: i32, signum: i32) -> i32 { pub fn sigfillset(ctx: &mut Ctx, set: i32) -> i32 { debug!("emscripten::sigfillset"); let memory = ctx.memory(0); + #[allow(clippy::cast_ptr_alignment)] let ptr = emscripten_memory_pointer!(memory, set) as *mut i32; unsafe { From 974656c8b126b571043f45de2f1d8673b86b06e8 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Thu, 4 Apr 2019 14:12:39 -0700 Subject: [PATCH 120/413] fix this typo too --- lib/emscripten/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/emscripten/src/lib.rs b/lib/emscripten/src/lib.rs index 6f15d96be..958202c7a 100644 --- a/lib/emscripten/src/lib.rs +++ b/lib/emscripten/src/lib.rs @@ -513,7 +513,7 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject "___syscall83" => func!(crate::syscalls::___syscall83), "___syscall85" => func!(crate::syscalls::___syscall85), "___syscall91" => func!(crate::syscalls::___syscall91), - "___syscall94" => func!(crate::syscalls::___syscall194), + "___syscall94" => func!(crate::syscalls::___syscall94), "___syscall97" => func!(crate::syscalls::___syscall97), "___syscall102" => func!(crate::syscalls::___syscall102), "___syscall110" => func!(crate::syscalls::___syscall110), From d9114e40bc74aa9ae51c526a43dff08d93fac5c6 Mon Sep 17 00:00:00 2001 From: Syrus Date: Thu, 4 Apr 2019 22:48:16 -0700 Subject: [PATCH 121/413] Make wasi default in the binary --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 552f6b8ed..419595e14 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,7 +40,7 @@ wabt = "0.7.2" glob = "0.2.11" [features] -default = ["fast-tests"] +default = ["fast-tests", "wasi"] debug = ["wasmer-clif-backend/debug", "wasmer-runtime-core/debug"] # This feature will allow cargo test to run much faster fast-tests = [] From 91d741668081ba83d5b23592d90a4389980e704f Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 5 Apr 2019 10:04:39 -0700 Subject: [PATCH 122/413] fix master; add some emscripten calls --- lib/emscripten/src/exception.rs | 5 +++ lib/emscripten/src/lib.rs | 2 + lib/emscripten/src/time.rs | 17 +++++++++ src/bin/wasmer.rs | 66 ++++++++++++++++++--------------- 4 files changed, 61 insertions(+), 29 deletions(-) diff --git a/lib/emscripten/src/exception.rs b/lib/emscripten/src/exception.rs index 9044aff2a..1f2b098d8 100644 --- a/lib/emscripten/src/exception.rs +++ b/lib/emscripten/src/exception.rs @@ -23,3 +23,8 @@ pub fn ___cxa_begin_catch(_ctx: &mut Ctx, _exception_object_ptr: u32) -> i32 { pub fn ___cxa_end_catch(_ctx: &mut Ctx) { debug!("emscripten::___cxa_end_catch"); } + +pub fn ___cxa_uncaught_exception(_ctx: &mut Ctx) -> i32 { + debug!("emscripten::___cxa_uncaught_exception"); + -1 +} diff --git a/lib/emscripten/src/lib.rs b/lib/emscripten/src/lib.rs index 958202c7a..9a11e9e5a 100644 --- a/lib/emscripten/src/lib.rs +++ b/lib/emscripten/src/lib.rs @@ -607,6 +607,7 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject "___cxa_throw" => func!(crate::exception::___cxa_throw), "___cxa_begin_catch" => func!(crate::exception::___cxa_begin_catch), "___cxa_end_catch" => func!(crate::exception::___cxa_end_catch), + "___cxa_uncaught_exception" => func!(crate::exception::___cxa_uncaught_exception), // Time "_gettimeofday" => func!(crate::time::_gettimeofday), @@ -619,6 +620,7 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject "_localtime" => func!(crate::time::_localtime), "_time" => func!(crate::time::_time), "_strftime" => func!(crate::time::_strftime), + "_strftime_l" => func!(crate::time::_strftime_l), "_localtime_r" => func!(crate::time::_localtime_r), "_gmtime_r" => func!(crate::time::_gmtime_r), "_mktime" => func!(crate::time::_mktime), diff --git a/lib/emscripten/src/time.rs b/lib/emscripten/src/time.rs index 28a60ec34..1f93f3894 100644 --- a/lib/emscripten/src/time.rs +++ b/lib/emscripten/src/time.rs @@ -310,3 +310,20 @@ pub fn _strftime( ); 0 } + +/// emscripten: _strftime_l +pub fn _strftime_l( + ctx: &mut Ctx, + s_ptr: c_int, + maxsize: u32, + format_ptr: c_int, + tm_ptr: c_int, + _last: c_int, +) -> i32 { + debug!( + "emscripten::_strftime_l {} {} {} {}", + s_ptr, maxsize, format_ptr, tm_ptr + ); + + _strftime(ctx, s_ptr, maxsize, format_ptr, tm_ptr) +} diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index 6964d7ce1..345503558 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -17,6 +17,20 @@ use wasmer_runtime_core::{self, backend::CompilerConfig}; #[cfg(feature = "wasi")] use wasmer_wasi; +// stub module to make conditional compilation happy +#[cfg(not(feature = "wasi"))] +mod wasmer_wasi { + use wasmer_runtime_core::{import::ImportObject, module::Module}; + + pub fn is_wasi_module(_module: &Module) -> bool { + false + } + + pub fn generate_import_object(_args: Vec>, _envs: Vec>) -> ImportObject { + unimplemented!() + } +} + #[derive(Debug, StructOpt)] #[structopt(name = "wasmer", about = "Wasm execution runtime.")] /// The options for the wasmer Command Line Interface @@ -213,7 +227,6 @@ fn execute_wasm(options: &Run) -> Result<(), String> { }; // TODO: refactor this - #[cfg(not(feature = "wasi"))] let (abi, import_object, _em_globals) = if wasmer_emscripten::is_emscripten_module(&module) { let mut emscripten_globals = wasmer_emscripten::EmscriptenGlobals::new(&module); ( @@ -222,34 +235,29 @@ fn execute_wasm(options: &Run) -> Result<(), String> { Some(emscripten_globals), // TODO Em Globals is here to extend, lifetime, find better solution ) } else { - ( - InstanceABI::None, - wasmer_runtime_core::import::ImportObject::new(), - None, - ) - }; - - #[cfg(feature = "wasi")] - let (abi, import_object) = if wasmer_wasi::is_wasi_module(&module) { - ( - InstanceABI::WASI, - wasmer_wasi::generate_import_object( - [options.path.to_str().unwrap().to_owned()] - .iter() - .chain(options.args.iter()) - .cloned() - .map(|arg| arg.into_bytes()) - .collect(), - env::vars() - .map(|(k, v)| format!("{}={}", k, v).into_bytes()) - .collect(), - ), - ) - } else { - ( - InstanceABI::None, - wasmer_runtime_core::import::ImportObject::new(), - ) + if cfg!(feature = "wasi") && wasmer_wasi::is_wasi_module(&module) { + ( + InstanceABI::WASI, + wasmer_wasi::generate_import_object( + [options.path.to_str().unwrap().to_owned()] + .iter() + .chain(options.args.iter()) + .cloned() + .map(|arg| arg.into_bytes()) + .collect(), + env::vars() + .map(|(k, v)| format!("{}={}", k, v).into_bytes()) + .collect(), + ), + None, + ) + } else { + ( + InstanceABI::None, + wasmer_runtime_core::import::ImportObject::new(), + None, + ) + } }; let mut instance = module From 44fba932666e1c99fbcf9affaa9e679df904d12d Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 5 Apr 2019 10:49:11 -0700 Subject: [PATCH 123/413] add fix from Syrus to get C++ working --- lib/emscripten/src/lib.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/emscripten/src/lib.rs b/lib/emscripten/src/lib.rs index 9a11e9e5a..47ad8ace9 100644 --- a/lib/emscripten/src/lib.rs +++ b/lib/emscripten/src/lib.rs @@ -247,6 +247,12 @@ pub fn run_emscripten_instance( let data_ptr = &mut data as *mut _ as *mut c_void; instance.context_mut().data = data_ptr; + // ATINIT + // (used by C++) + if let Ok(_func) = instance.dyn_func("globalCtors") { + instance.call("globalCtors", &[])?; + } + if let Ok(_func) = instance.dyn_func("___emscripten_environ_constructor") { instance.call("___emscripten_environ_constructor", &[])?; } @@ -269,7 +275,7 @@ pub fn run_emscripten_instance( ), }; - // TODO atinit and atexit for emscripten + // TODO atexit for emscripten // println!("{:?}", data); Ok(()) } From 7cea2c28a119ebba51bb87384a964ffd319cf770 Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Fri, 5 Apr 2019 11:15:44 -0700 Subject: [PATCH 124/413] update lockfile for zbox fix --- Cargo.lock | 71 ++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 56 insertions(+), 15 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6852fa86d..ab6b3e2c8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,5 +1,3 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. [[package]] name = "MacTypes-sys" version = "2.1.0" @@ -167,6 +165,24 @@ dependencies = [ "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "bzip2" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bzip2-sys 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "capstone" version = "0.5.0" @@ -260,7 +276,7 @@ dependencies = [ [[package]] name = "cmake" -version = "0.1.37" +version = "0.1.38" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", @@ -383,7 +399,7 @@ dependencies = [ "cast 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)", "criterion-plot 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "csv 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "csv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -480,10 +496,12 @@ dependencies = [ [[package]] name = "csv" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "csv-core 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -726,7 +744,7 @@ dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -759,7 +777,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "http" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -789,7 +807,7 @@ dependencies = [ "futures 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "h2 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1297,6 +1315,11 @@ name = "plain" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "podio" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "proc-macro2" version = "0.4.27" @@ -1530,7 +1553,7 @@ dependencies = [ "encoding_rs 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)", "flate2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.12.25 (registry+https://github.com/rust-lang/crates.io-index)", "hyper-tls 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2171,7 +2194,7 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", - "cmake 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", + "cmake 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)", "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2385,7 +2408,7 @@ name = "wasmer-win-exception-handler" version = "0.2.0" dependencies = [ "bindgen 0.46.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cmake 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", + "cmake 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "wasmer-runtime-core 0.2.1", @@ -2482,7 +2505,7 @@ dependencies = [ [[package]] name = "zbox" version = "0.6.1" -source = "git+https://github.com/wasmerio/zbox?branch=bundle-libsodium#c2a5a50317f587fd69585d1e8d9825daef24cc00" +source = "git+https://github.com/wasmerio/zbox?branch=bundle-libsodium#113c62bf3f94124c4978959043efcf98222fa626" dependencies = [ "android_logger 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2498,6 +2521,20 @@ dependencies = [ "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", "tar 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)", + "zip 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "zip" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bzip2 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libflate 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", + "podio 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2549,6 +2586,8 @@ dependencies = [ "checksum build_const 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "39092a32794787acd8525ee150305ff051b0aa6cc2abaf193924f5ab05425f39" "checksum byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a019b10a2a7cdeb292db131fc8113e57ea2a908f6e7894b0c3c671893b65dbeb" "checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" +"checksum bzip2 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "42b7c3cbf0fa9c1b82308d57191728ca0256cb821220f4e2fd410a72ade26e3b" +"checksum bzip2-sys 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "6584aa36f5ad4c9247f5323b0a42f37802b37a836f0ad87084d7a33961abe25f" "checksum capstone 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "00be9d203fa0e078b93b24603633fb081851dfe0c1086364431f52587a47157e" "checksum capstone-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2dc8d32bc5c1e6d0fcde10af411c98b07d93498d51654f678757f08fa2acd6a6" "checksum cast 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "926013f2860c46252efceabb19f4a6b308197505082c609025aa6706c011d427" @@ -2559,7 +2598,7 @@ dependencies = [ "checksum clang-sys 0.26.4 (registry+https://github.com/rust-lang/crates.io-index)" = "6ef0c1bcf2e99c649104bd7a7012d8f8802684400e03db0ec0af48583c6fa0e4" "checksum clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e" "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -"checksum cmake 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "c11b79fbf026d6ec02704f7248c6da99be02068bf57f624bb08af72ad29f2c06" +"checksum cmake 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)" = "96210eec534fc3fbfc0452a63769424eaa80205fda6cea98e5b61cb3d97bcec8" "checksum constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff012e225ce166d4422e0e78419d901719760f62ae2b7969ca6b564d1b54a9e" "checksum core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "286e0b41c3a20da26536c6000a280585d519fd07b3956b43aed8a79e9edce980" "checksum core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "716c271e8613ace48344f723b60b900a93150271e5be206212d052bbc0883efa" @@ -2581,7 +2620,7 @@ dependencies = [ "checksum crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b" "checksum crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2760899e32a1d58d5abb31129f8fae5de75220bc2176e77ff7c627ae45c918d9" "checksum crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f8306fcef4a7b563b76b7dd949ca48f52bc1141aa067d2ea09565f3e2652aa5c" -"checksum csv 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "9fd1c44c58078cfbeaf11fbb3eac9ae5534c23004ed770cc4bfb48e658ae4f04" +"checksum csv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f0782c7154d8dd08f4adeb5aa22ab178c10281915f7da68d10bb646f03aaee73" "checksum csv-core 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fa5cdef62f37e6ffe7d1f07a381bc0db32b7a3ff1cac0de56cb0d81e71f53d65" "checksum digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05f47366984d3ad862010e22c7ce81a7dbcaebbdfb37241a620f8b6596ee135c" "checksum dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6d301140eb411af13d3115f9a562c85cc6b541ade9dfa314132244aaee7489dd" @@ -2615,7 +2654,7 @@ dependencies = [ "checksum hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3bae29b6653b3412c2e71e9d486db9f9df5d701941d86683005efb9f2d28e3da" "checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" "checksum hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77" -"checksum http 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "fe67e3678f2827030e89cc4b9e7ecd16d52f132c0b940ab5005f88e821500f6a" +"checksum http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "eed324f0f0daf6ec10c474f150505af2c143f251722bf9dbd1261bd1f2ee2c1a" "checksum httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e8734b0cfd3bc3e101ec59100e101c2eecd19282202e87808b3037b442777a83" "checksum humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ca7e5f2e110db35f93b837c81797f3714500b81d517bf20c431b16d3ca4f114" "checksum hyper 0.12.25 (registry+https://github.com/rust-lang/crates.io-index)" = "7d5b6658b016965ae301fa995306db965c93677880ea70765a84235a96eae896" @@ -2675,6 +2714,7 @@ dependencies = [ "checksum phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "234f71a15de2288bcb7e3b6515828d22af7ec8598ee6d24c3b526fa0a80b67a0" "checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c" "checksum plain 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" +"checksum podio 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "780fb4b6698bbf9cf2444ea5d22411cef2953f0824b98f33cf454ec5615645bd" "checksum proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)" = "4d317f9caece796be1980837fd5cb3dfec5613ebdb04ad0956deea83ce168915" "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" "checksum quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a" @@ -2792,6 +2832,7 @@ dependencies = [ "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" "checksum xattr 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c" "checksum zbox 0.6.1 (git+https://github.com/wasmerio/zbox?branch=bundle-libsodium)" = "" +"checksum zip 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1cbbddef6339155bc4fa8e2609040078ff18f3011117b55caa9f0516d544a357" "checksum zstd 0.4.22+zstd.1.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6f042dd18d52854d302d3d92f66d0a63c2d520d7b7034a9d43cde7441d1b4ddd" "checksum zstd-safe 1.4.7+zstd.1.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "63febf0b0dcd076db81e6b3110ed254cfb8ed54378a4c3cfbb68956e839d4f59" "checksum zstd-sys 1.4.8+zstd.1.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "4cb187d624025a7d9878ecf13437491869423426183ded2fa40d4651b85f7ae7" From 7f6e4785f0a21e438f4384aeb00462082899286a Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 5 Apr 2019 11:24:27 -0700 Subject: [PATCH 125/413] add test and fix em tests --- lib/emscripten/a.txt | 0 lib/emscripten/build/emtests.rs | 52 ++++++++++++------ lib/emscripten/emtests/hello.cpp | 4 ++ lib/emscripten/emtests/hello.out | 2 + lib/emscripten/emtests/hello.wasm | Bin 0 -> 318344 bytes lib/emscripten/emtests/ignores.txt | 45 ++++++++++++++- lib/emscripten/foo.txt | 0 lib/emscripten/tests/emtests/mod.rs | 1 + lib/emscripten/tests/emtests/test_execvp.rs | 11 +--- lib/emscripten/tests/emtests/test_getcwd.rs | 4 +- lib/emscripten/tests/emtests/test_nl_types.rs | 1 + lib/emscripten/tests/emtests/test_phiundef.rs | 1 + lib/emscripten/tests/emtests/test_pipe.rs | 14 +++-- lib/emscripten/tests/emtests/test_printf_2.rs | 1 + .../tests/emtests/test_printf_more.rs | 1 + lib/emscripten/tests/emtests/test_regex.rs | 1 + .../emtests/test_relocatable_void_function.rs | 1 + lib/emscripten/tests/emtests/test_rounding.rs | 1 + .../tests/emtests/test_set_align.rs | 1 + lib/emscripten/tests/emtests/test_sintvars.rs | 1 + lib/emscripten/tests/emtests/test_sizeof.rs | 1 + lib/emscripten/tests/emtests/test_sscanf.rs | 1 + lib/emscripten/tests/emtests/test_sscanf_3.rs | 1 + lib/emscripten/tests/emtests/test_sscanf_4.rs | 1 + lib/emscripten/tests/emtests/test_sscanf_5.rs | 1 + lib/emscripten/tests/emtests/test_sscanf_6.rs | 1 + .../tests/emtests/test_sscanf_caps.rs | 1 + .../tests/emtests/test_sscanf_float.rs | 1 + lib/emscripten/tests/emtests/test_sscanf_n.rs | 1 + .../tests/emtests/test_strcasecmp.rs | 1 + .../tests/emtests/test_strcmp_uni.rs | 1 + lib/emscripten/tests/emtests/test_strndup.rs | 1 + lib/emscripten/tests/emtests/test_strstr.rs | 1 + lib/emscripten/tests/emtests/test_strtod.rs | 1 + lib/emscripten/tests/emtests/test_strtok.rs | 1 + .../tests/emtests/test_strtol_bin.rs | 1 + .../tests/emtests/test_strtol_dec.rs | 1 + .../tests/emtests/test_strtol_hex.rs | 1 + .../tests/emtests/test_strtol_oct.rs | 1 + .../tests/emtests/test_strtoll_bin.rs | 1 + .../tests/emtests/test_strtoll_dec.rs | 1 + .../tests/emtests/test_strtoll_hex.rs | 1 + .../tests/emtests/test_strtoll_oct.rs | 1 + .../tests/emtests/test_struct_varargs.rs | 1 + .../tests/emtests/test_transtrcase.rs | 1 + .../tests/emtests/test_trickystring.rs | 1 + .../tests/emtests/test_unary_literal.rs | 1 + lib/emscripten/tests/emtests/test_vfs.rs | 14 +++-- lib/emscripten/tests/emtests/test_vprintf.rs | 1 + .../tests/emtests/test_vsnprintf.rs | 1 + .../tests/emtests/test_write_stdout_fileno.rs | 1 + lib/emscripten/tests/emtests/test_zerodiv.rs | 1 + 52 files changed, 145 insertions(+), 42 deletions(-) create mode 100644 lib/emscripten/a.txt create mode 100644 lib/emscripten/emtests/hello.cpp create mode 100644 lib/emscripten/emtests/hello.out create mode 100644 lib/emscripten/emtests/hello.wasm create mode 100644 lib/emscripten/foo.txt diff --git a/lib/emscripten/a.txt b/lib/emscripten/a.txt new file mode 100644 index 000000000..e69de29bb diff --git a/lib/emscripten/build/emtests.rs b/lib/emscripten/build/emtests.rs index 09c4419bf..4a543683d 100644 --- a/lib/emscripten/build/emtests.rs +++ b/lib/emscripten/build/emtests.rs @@ -46,26 +46,42 @@ pub fn compile(file: &str, ignores: &Vec) -> Option { output_path.set_extension("js"); let output_str = output_path.to_str().unwrap(); - // Compile to wasm - let _wasm_compilation = Command::new("emcc") - .arg(file) - .arg("-s") - .arg("WASM=1") - .arg("-o") - .arg(output_str) - .output() - .expect("failed to execute process"); + let wasm_file_metadata = { + let mut wasm_file_path = PathBuf::from(file); + wasm_file_path.set_extension("wasm"); + if let Ok(wasm_file) = File::open(wasm_file_path) { + Some(wasm_file.metadata().unwrap()) + } else { + None + } + }; - // panic!("{:?}", wasm_compilation); - // if output.stderr { - // panic!("{}", output.stderr); - // } - // Remove js file + let real_file = File::open(file).unwrap(); + let file_metadata = real_file.metadata().unwrap(); + if wasm_file_metadata.is_none() + || file_metadata.modified().unwrap() >= wasm_file_metadata.unwrap().modified().unwrap() + { + // Compile to wasm + let _wasm_compilation = Command::new("emcc") + .arg(file) + .arg("-s") + .arg("WASM=1") + .arg("-o") + .arg(output_str) + .output() + .expect("failed to execute process"); - if Path::new(output_str).is_file() { - fs::remove_file(output_str).unwrap(); - } else { - println!("Output JS not found: {}", output_str); + // panic!("{:?}", wasm_compilation); + // if output.stderr { + // panic!("{}", output.stderr); + // } + // Remove js file + + if Path::new(output_str).is_file() { + fs::remove_file(output_str).unwrap(); + } else { + println!("Output JS not found: {}", output_str); + } } let mut output_path = PathBuf::from(file); diff --git a/lib/emscripten/emtests/hello.cpp b/lib/emscripten/emtests/hello.cpp new file mode 100644 index 000000000..fd90a65b3 --- /dev/null +++ b/lib/emscripten/emtests/hello.cpp @@ -0,0 +1,4 @@ +#include +int main() { + std::cout << "hello world\n"; +} diff --git a/lib/emscripten/emtests/hello.out b/lib/emscripten/emtests/hello.out new file mode 100644 index 000000000..9a71f81a4 --- /dev/null +++ b/lib/emscripten/emtests/hello.out @@ -0,0 +1,2 @@ +hello world + diff --git a/lib/emscripten/emtests/hello.wasm b/lib/emscripten/emtests/hello.wasm new file mode 100644 index 0000000000000000000000000000000000000000..4e9541665517bef42cf676b852be38a7f50b2d1e GIT binary patch literal 318344 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�k%rI`q&gc*g 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 Date: Fri, 5 Apr 2019 12:06:30 -0700 Subject: [PATCH 126/413] changes to make PHP run better --- lib/emscripten/src/emscripten_target.rs | 11 +++++++---- lib/emscripten/src/lib.rs | 3 +++ lib/emscripten/src/syscalls/mod.rs | 4 ++-- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/emscripten/src/emscripten_target.rs b/lib/emscripten/src/emscripten_target.rs index 1c575123b..a4812a596 100644 --- a/lib/emscripten/src/emscripten_target.rs +++ b/lib/emscripten/src/emscripten_target.rs @@ -5,13 +5,16 @@ use crate::env::get_emscripten_data; use libc::getdtablesize; use wasmer_runtime_core::vm::Ctx; -pub fn setTempRet0(_ctx: &mut Ctx, _val: i32) { - debug!("emscripten::setTempRet0: {}", _val); +pub fn setTempRet0(ctx: &mut Ctx, val: i32) { + debug!("emscripten::setTempRet0: {}", val); + get_emscripten_data(ctx).temp_ret_0 = val; } -pub fn getTempRet0(_ctx: &mut Ctx) -> i32 { + +pub fn getTempRet0(ctx: &mut Ctx) -> i32 { debug!("emscripten::getTempRet0"); - 0 + get_emscripten_data(ctx).temp_ret_0 } + pub fn invoke_i(ctx: &mut Ctx, index: i32) -> i32 { debug!("emscripten::invoke_i"); if let Some(dyn_call_i) = &get_emscripten_data(ctx).dyn_call_i { diff --git a/lib/emscripten/src/lib.rs b/lib/emscripten/src/lib.rs index 47ad8ace9..ee27d3ee0 100644 --- a/lib/emscripten/src/lib.rs +++ b/lib/emscripten/src/lib.rs @@ -125,6 +125,8 @@ pub struct EmscriptenData<'a> { pub dyn_call_vijiii: Option>, pub dyn_call_vijj: Option>, pub dyn_call_viidii: Option>, + // REVIEW: is this okay? + pub temp_ret_0: i32, } impl<'a> EmscriptenData<'a> { @@ -233,6 +235,7 @@ impl<'a> EmscriptenData<'a> { dyn_call_vijiii, dyn_call_vijj, dyn_call_viidii, + temp_ret_0: 0, } } } diff --git a/lib/emscripten/src/syscalls/mod.rs b/lib/emscripten/src/syscalls/mod.rs index 36a1b0c7c..37f6e2f51 100644 --- a/lib/emscripten/src/syscalls/mod.rs +++ b/lib/emscripten/src/syscalls/mod.rs @@ -194,8 +194,8 @@ pub fn ___syscall85(_ctx: &mut Ctx, _one: i32, _two: i32) -> i32 { } pub fn ___syscall91(_ctx: &mut Ctx, _one: i32, _two: i32) -> i32 { - debug!("emscripten::___syscall91"); - -1 + debug!("emscripten::___syscall91 - stub"); + 0 } pub fn ___syscall97(_ctx: &mut Ctx, _one: i32, _two: i32) -> i32 { From 516b932a712a9f3bd2be13de6bd9f90322092d71 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 5 Apr 2019 12:11:40 -0700 Subject: [PATCH 127/413] rm review comment --- lib/emscripten/src/lib.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/emscripten/src/lib.rs b/lib/emscripten/src/lib.rs index ee27d3ee0..62cee5c60 100644 --- a/lib/emscripten/src/lib.rs +++ b/lib/emscripten/src/lib.rs @@ -125,7 +125,6 @@ pub struct EmscriptenData<'a> { pub dyn_call_vijiii: Option>, pub dyn_call_vijj: Option>, pub dyn_call_viidii: Option>, - // REVIEW: is this okay? pub temp_ret_0: i32, } From b03a05f1b73f8ede1197fca66928b01962348c24 Mon Sep 17 00:00:00 2001 From: Syrus Date: Fri, 5 Apr 2019 13:33:28 -0700 Subject: [PATCH 128/413] Added f64-to-int --- lib/emscripten/src/lib.rs | 1 + lib/emscripten/src/math.rs | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/emscripten/src/lib.rs b/lib/emscripten/src/lib.rs index 62cee5c60..1d88ba7a8 100644 --- a/lib/emscripten/src/lib.rs +++ b/lib/emscripten/src/lib.rs @@ -756,6 +756,7 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject }, "asm2wasm" => { "f64-rem" => func!(crate::math::f64_rem), + "f64-to-int" => func!(crate::math::f64_to_int), }, }; diff --git a/lib/emscripten/src/math.rs b/lib/emscripten/src/math.rs index c73580d77..704a58854 100644 --- a/lib/emscripten/src/math.rs +++ b/lib/emscripten/src/math.rs @@ -39,7 +39,7 @@ pub fn _emscripten_random(_ctx: &mut Ctx) -> f64 { -1.0 } -// emscripten: f64-rem +// emscripten: asm2wasm.f64-rem pub fn f64_rem(_ctx: &mut Ctx, x: f64, y: f64) -> f64 { debug!("emscripten::f64-rem"); x % y @@ -59,3 +59,9 @@ pub fn exp(_ctx: &mut Ctx, value: f64) -> f64 { pub fn log(_ctx: &mut Ctx, value: f64) -> f64 { value.ln() } + +// emscripten: asm2wasm.f64-to-int +pub fn f64_to_int(_ctx: &mut Ctx, value: f64) -> i32 { + debug!("emscripten::f64_to_int {}", value); + value as i32 +} From 8015fbfc160be0dcfd98e8662d510099d57b434d Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 5 Apr 2019 13:59:33 -0700 Subject: [PATCH 129/413] implement strftime --- lib/emscripten/src/time.rs | 57 ++++++++++++++++++++++++++++++++++---- 1 file changed, 51 insertions(+), 6 deletions(-) diff --git a/lib/emscripten/src/time.rs b/lib/emscripten/src/time.rs index 1f93f3894..1cfa98456 100644 --- a/lib/emscripten/src/time.rs +++ b/lib/emscripten/src/time.rs @@ -298,17 +298,62 @@ pub fn _time(ctx: &mut Ctx, time_p: u32) -> i32 { /// emscripten: _strftime pub fn _strftime( - _ctx: &mut Ctx, - _s_ptr: c_int, - _maxsize: u32, - _format_ptr: c_int, - _tm_ptr: c_int, + ctx: &mut Ctx, + s_ptr: c_int, + maxsize: u32, + format_ptr: c_int, + tm_ptr: c_int, ) -> i32 { debug!( "emscripten::_strftime {} {} {} {}", _s_ptr, _maxsize, _format_ptr, _tm_ptr ); - 0 + + #[allow(clippy::cast_ptr_alignment)] + let s = emscripten_memory_pointer!(ctx.memory(0), s_ptr) as *mut c_char; + #[allow(clippy::cast_ptr_alignment)] + let format = emscripten_memory_pointer!(ctx.memory(0), format_ptr) as *const c_char; + #[allow(clippy::cast_ptr_alignment)] + let tm = emscripten_memory_pointer!(ctx.memory(0), tm_ptr) as *const guest_tm; + + let format_string = unsafe { std::ffi::CStr::from_ptr(format).to_str().unwrap() }; + + debug!("=> format_string: {:?}", format_string); + + let tm = unsafe { &*tm }; + + let rust_tm = ::time::Tm { + tm_sec: tm.tm_sec, + tm_min: tm.tm_min, + tm_hour: tm.tm_hour, + tm_mday: tm.tm_mday, + tm_mon: tm.tm_mon, + tm_year: tm.tm_year, + tm_wday: tm.tm_wday, + tm_yday: tm.tm_yday, + tm_isdst: tm.tm_isdst, + tm_utcoff: tm.tm_gmtoff, + tm_nsec: 0, + }; + + let result_str = match ::time::strftime(format_string, &rust_tm) { + Ok(res_string) => res_string, + // TODO: maybe match on e in Err(e) and return different values if required + _ => return 0, + }; + + // pad for null? + let bytes = result_str.chars().count(); + if bytes as u32 > maxsize { + return 0; + } else { + // write output string + for (i, c) in result_str.chars().enumerate() { + unsafe { *s.add(i) = c as c_char }; + } + // null terminate? + bytes as i32 + } } /// emscripten: _strftime_l From b0a83408ec3f666fde78bb524ad204c69b586d77 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 5 Apr 2019 14:33:49 -0700 Subject: [PATCH 130/413] fix debug statement --- lib/emscripten/src/time.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/emscripten/src/time.rs b/lib/emscripten/src/time.rs index 1cfa98456..312808a82 100644 --- a/lib/emscripten/src/time.rs +++ b/lib/emscripten/src/time.rs @@ -306,7 +306,7 @@ pub fn _strftime( ) -> i32 { debug!( "emscripten::_strftime {} {} {} {}", - _s_ptr, _maxsize, _format_ptr, _tm_ptr + s_ptr, maxsize, format_ptr, tm_ptr ); #[allow(clippy::cast_ptr_alignment)] From 79f08461231cbdbee693a148f78b3ef424d05222 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 5 Apr 2019 16:40:39 -0700 Subject: [PATCH 131/413] Delete sqlite.wasm --- sqlite.wasm | Bin 2376374 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 sqlite.wasm diff --git a/sqlite.wasm b/sqlite.wasm deleted file mode 100644 index 9dccfb1254525bb7b29beb2f01578bf08c28225e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2376374 zcmeEu2Y?hsx_?*4>Fy1)30T;XuZ-NGqMn|5Nyby~e4dwl@7~?J|8c13u^>oL&pVYR z=bUrS84*b$C?Gi_88IUn5fl*k|Gw&(*;!Z+6%2Q?z0*_St1s7A)zvkn)ok>H&@@eq zu^;)HXrkdGn*2?}M{mL@qe&AK@*NoyU-9o3g31@Pzu8=>%B^?;ZMDB?8gMX}YNq{7 z)dJpZ@&Z>2t_oT(ffoWuR4K$S@E3S_PVw;^bMPEWLW)8_&5frS)JtSI=Ws4S#S|1W zW;2dmv89O@n8FK+!V65{1uo&6-sCyv6Yz>{#V=$5)6an;++rkv5=kFl@jqlOCd1_* z9T1FZD5k1FwC9-2b1by}LNY!@mq{gK)rtkzl0^-a%3KB{n0KUN^c^Ub`2vk%U1@(y zkMpX&10yN%Sr}mvL zZ8Yar00N$%ZLwnoFsuVc!#)tergzMK%746W{fBGTz46yI8~@#?TmNzG2S%-W zPiNPBxPHUNe`s9ukvhM5x>m!->ehco)40N~_f*}w)t;*NNR3Bp2PJ7qC9xteQ4}jE zZdLo7R<+|r>BX&T*M2lWUZO14G$R=<-Z-;lVGJ~UR%xs_`|RR4mYj1dVoh>Osfkr( zm8>d^BP+>gVIWXRJ_}3bGl8Lm^f3g*>aJZoR+J1D$CymKRD6Z8#!04$l@wd=9FREn zVkSz#jiPfKo`d`8v;FDmm@bNOKOOgi}kE{g#cD_j+pUK-=B1kzYp z38ZoPOCU|CAeqflS|{K#YSgGvvr(g34I9^ZtY+=HS_XHl927qMRPDNt-dpeK+70X1 zd!kmo#(|0))YPs2NS&C%kZV+{@x2WjK3G2}N#l}d8$D99Zrz)2(hNqHo>X-6twC8b z*e&OR-C9c1TW>1`?#HE+-El67QkvfJqjQ_ySqdw6#yC!v;?7d=-B}7NcivtKjXTd_ z@0N3=z2&Bx&uMzgP3NM!<>qr)zNIvLx5V)I#l|>S0YAFsT=V=W29{*8AH_sS!gX%D zxCxVhVp>bWbX%-l5>QNyNkF&9#7-)T8!x%&Tu$e|jK)_tUI z{YJGk!7j_$S`8c4Z>Z^x;TJ>r?UaN79 zzt^hyWQ|6(|5+<&S|+*viCRxQ^5nBM9mRif-43|X zBB*hh(v#0Tg^;A!P3L^$+E3J~|Jb87pN;z$q^nt%OKUWYGyY_;6qz-iZ2b3zwQ4?E z;}P5&*V62uuf|IY>(`FSTRs8##8ZuH{i9~%#tmycTB}jxhV`Ef$d@ezpmsg5u9z#W zIbufRXP>MUXRBe&+HuW0(B0$pYSs;^LMoQjulHDh3YE_`YFz7yAZOKJ;o>zy z){}`GS2YTdlvUG*-_-kM&3g6fH?H2W{xiR>^+f%KG3I^n@=&cOp8S2S#y15a3_Tr& z0zi$2Yc{H7G*MFx_)z1T57(`gT$T=2p1i02Qz-szLg@fQT-N^djYDmLedY6wQ|NzwuVVjsl@;zAbcJ(`?Vs zgbK^sp&?AeH%!3ePZQaOVcVu@`j%l>x@Xz8 zVOlCPcFjJ4B-pQNe3cTg=+kP2xC+kLzF2aq!d6A{ApT7_O;eE z*O;E^SE__uhM#d=2JVLMr~B%82!IT27)D0A`i70l8do9@9`W(qNIAo*Xn5Wgo@G^J zKxPpwz#BL!uuY^~-}W>7JWbf14R+Hl->@xDcOg(q9b zUz)C)25x#93xjG~R$>~$$}lV~|N8P3^6l#_&$Mg{e})C+d%&xtwxCO}>4H6xRvyR= zFv(OwBrOdr+Ti#q(BdMP2-X87R;d>I@_h|9H2jL`71IIbK*#(CHa%N2a`Ut_0H*<+ zZrQMdnd|4?kj|z{Hw|5b31For<(wNl>o~UeDT1FLM z)+~?&yJ*KamAuTuP0X{81pZJF5CNbCgP}kQTQi{`Thlz(MnhX<+rF7$X+Amuln*Yr zrN#+d?3x)q@cE#FZ>A=E6NEi>cyI%D;glf6GL^B*+$^E}N{oa{Okbp@r)$C#Cd>qH zK&h3*CiB6D5AEnTa$}JJM`2enWERN6udECK^|1mxQOT&NnQ$j&7f!}_aozGG*a2h= zaid{ND;-jLy5?!u+HiU>2CagaWnam>7rR6`xHmxS8V4olU8^iK-^&0Z^lEe_gfcWTnUI&E znI^-Vw`$pD28``z|Jct)K)l`Z^UGTq85S&WLU*>GZQgEI@hsEMu+0qE!8EhYJ1XaU zDhD?}0Lg|wfERd>Uzw#gjch9$aTCfh+zgQcfwHZ9_CaufhR{n!Hd;cGDt@++fwq+m z$N~Vgi2tdW;ltOVR$xK}G;Np}rU@}zpz>i?VYtP0##mwhm0j~lS9V!1|T= z6F2ba!=4YXvWyJdxWa?nuy{^-j{j5ZXVwpmT!>=9t`&ijha9-^47Q4}K>q39hotTV3b~=7A})t3X$9PENyq=%D-u zCppib#&ya$&9t;MAKet8#$@-GIjyL#c7CFFa zFo*>wMlk}PhG2`1%1NZryEroA51pHpthyCUg3$!JLLP$(iUnk-obKAF20j}@4MKrx zhrA1na19Kh=Fp3r#T{K)1D_eqn?xLqbmw%M6=g#1HfpU$aAKgg>|f zRH*#WH>%p6l^&9oaf1cl0iQx-!R?_)jzKCqz*S*vs2?oj%i%w8=DG;+99oTZiEfP! zs{%1ZhPy}`p%~GHy9)5QNRR+xsPt-M}qe%}V#~fhXs&G0k)%1KxITh&`O=Wbk!#EMPVa__}b* z+Zh5;8gUG>7yd_IMjd>KyMFu+@hQpLu7$w|*x?8of}a`_Y=Myv4H0sZf-S67-YV}J zUgc^a${`B9q`KkW0K;O;Wk&FaaFUUAU;3>a?g5241p^BgEJFnKXBt`Xb{4;!F zoTC$%Rz|wdHA<=iS||2uDWp$5H-<4O?Y(5+ebX=zlJeJG7*XIh%&XL~FQ zd1@JhpOAQeF()Iyl1(FkFHe zBj(raICxNEC`0I&(_@79#h-Xq2i0Ko{_`LIm~H&u&42ler88Ch0SSL8NHud(+yF(| zpAa3g{aX>}OqB5hfdFbu)ewqQ0Om;n+VkTGo=4af%RYpH|7Uw{2hpsDA7TlJ@7~tlYuTbDbuBe!vmz$GC^2)2OPSdX8 zQ9m{!nn6)SGhH#iv8EjCgLjH$IZYks(r!jIdMBMpGz#XB(0EO34_-YYdliF9u^RudZaOyShf^oF;K&X_3HD| zV$H_2>(|rPRKUU{ucu%^qi*fT|K3>JR)7a{E{WmLb`-=w_*ws-_3PErwin-KQG;T{~LAs_|IETD7$K6*6not^4#7H6CvC3|4At|L7L&tpcmY z6E(5ivAVp2L|rhUy;{NLRe+kHT~Aw70p)7#M%z^o;^Y(cpRT374fIH30YQ5QC>lN7 zu#Wa_f%oXMSZb(Sm)}XeSKt@tYHRNoxbbXl?So=SEDwKJ49Tm-y9?41ko^APqZ0Yr z+Ma^+qiTaZzrptiQJAhTpiZEb%+)>%bpd7vQsoWk1L!GfG~OKWR~3c@9dc^P>| zqy#U8+RKp=ykMPrW~2l!+-g=NS;9hXb|j%HUb3H)Tn!9!lZkNqS4sdBYV#rq#iRMF zk%XoTwfV(Wz_g&45aW5R7!R_A+UrTch1$YmJWp#y#Z`De(6ks2zZ+tp$Ulz&1(j8W^ zYB&13dZYG-Cu=@ZOKaev@R2%E<@@#0ROa^ptlzMf_N1$_f2awUukW_%g{XCv@UcSG zF_OBzBO1`Z4L&+W{xh%jdLVb_$i-bRnKR5{$hqb#Nx9*wHsu@D{Om8y-?yjBe`m^FA{T$XY%=U@b?*|Hr@j~9zBX2pjA@&> z{jAcy1hsa`jSW#W=b|nw=Ma9BQ6|*czkt zy53rEr*}YEXM9fSZS|gdFTJN_96nCUK`YiP7%N-zwc5ytP8AeXNF|7RKpKMN0a;yf<(`Vrg_?0WIp9iF_LSPUdxB)}X8| zks4{J8GJSC8Ye1QSWd@ZQ9LsUZNTf%j)!10e>G+<3&&<48v6931KBCf};eH}k z8mH2%T$e}-d|H)jjeGnWT5cF}Bk&njZgi}Ce7OlKH93}#!=CSZTz;3x1bimtPsTld zEkSx2J}dH9CQ7#Z5;_#(?e^v@qv+~W$C&PA7xz6RglX`h0%`Ij!)UHHs zK*6Yj{skin<`o3>>(uvNb5bndH8NSH`r+Qu>ST3hs#Z6vdxH8JYc0}?y{?fZ_{6VO z-eNtT?i%?3>BIWLM9D5AUbjkLtFJ@(4t*!?8}QkxZ`a?{H|tyUO$qooG=EP^v`sEu zQUZ2{XlAx7mNB8lPVD872){#gl1TM`h(t%B4M<9L$H zW6W_0$>ymx!xQZBWu(@$s^PoO2QI=fm@Dmmdg!F$V*(7-q1#2hbyv z(p@7HvLQtjk#+O9lC@C2~R8`S0!WxUQqR2TW#ILq0Jw)AyCzX$lr6-n~lvEmT zRoeI1{H~Gl_{6WN`7a~)20lxZN>?Mj6`$=%W$z@?dlIRG`G=7H7@tq_k0we#&p(xa zI{!?5QTaF({%)PfbxNdQJESKi<)sk@fgo=$aLp9qJnC zo7OLFM%v41T_Yc+?N0kF?O0k-deih~>8QbHaQc|^Bk9dDPG>aDY?g_@m;Q13iy0d; z_GT1iPDdV0h9`&Tgy&v_yIzQwi>X_hw=!>)a*!Q)@8rGv1+H>27*jBpTLax9|323{ z`j?lbd!&2hb-{POmLRoE|WFEa#)$w-g-3u(K{$TMYMo zNF5C`m!GNo`S~4@b^bc8S)Eg|eiQOr&MGSj@x{4rd8NbjEmL}V_sFR8wCEn0jhaJ= z+D{Xy^I>XJuJoEQ=P558y0p?M`K6VvDy8&oRrX<`W*<@qRPHeDM-t^F@ii@9GXF)n z7h~`%E3B%puEP2X$?$Jqq@VY2d%C^cCPDWR7*6S?2wm2(aI`9AJ5n2DW zh%?%klQ0avfRY*pJRG)Jn%;^!?j8AawNTlK=yK_0USKSY&d%Wgi zzx$UtALN+4^VM+q$BEkGiPVMQORF1KuC&t2SGGI(Ay=D1}Z}ZYQuw9I9#zf`) zN0a(Mce{t3jCFmeN92&3T=Gq%U%Y5P{IcAv$y@uCy&_JlcZGPWM`T=u3CK-ODk-i@ zrM|8PdPZIoJtLRr+F@QEym73{ym*Sg-_nzFJtMpIJ!h4atS>#+%4}OI*Zqvr;p3$v zjWJ&U5r_P8-vf+sz&rJ_;0`!>_RBHUGji-JGV|eAFvpkW?Yjv-H0xZx#+OpICMST~ z5c>{t+e+ll#Z-Dp=e*L(dzCr2d`Kx}$xtt!2Ujvoa=K-?S~OX`S@T>YsJ_Y3|8o8vE7# zP;Q&Nwt1z|>|CZxnbOKHTsAImTB+EAR-Yv5P9{=C<<7-8sNCREO3#J6aLJhb(&`tN zQo5y-veMdqy|VG;zh3(bwVvb7bzgBW1o3Uv&B`gJd@yHEPEqbuc-~vN@8N!2`CxJV z#ixdyqsy)pF1~dN^6P1!cO-S4t$}xq4~?_S{$2BZBB|?}*FY!po2Pj$#rKUqk-n)b zrGf9520k!SUinRFpkE|)eSb7?M!(d&_K#eOYn{2?ycBrOk7K2^$~u2-swSm@lm=27 z_^KK>o_`|$tG4}5YBwckYRClxBa*2H%@rH8^sqt_|j;!gM}7tF80Z zq{=U?26`A@2Hzl&3_Vj%&ZW{R4SYW|a5De|j0T2BQddd?UtI%z#8+>dYMIhNN(0{o z4Rp=VW{WqN(_%)=R_JzEk z$~>L2Y2jj1wXyuce}7K9&3G8W^o7x1C-hmt1ps z(lhi~pg8wivgf2PDec&AiO)-=`(xoarjvyeYiuoW4KeebGS>mYq(pud$>oqXSi2*Vx$i~6C?d`9~d5_(nG^< zW{wMw4^Ifcg8ZxD`MAG^&q90_xW%x{tti*kFcujb1cwKmXctdz&_)S$_x^<3U zpsw^57hk$FXI1X%+%>stb1%NlHv_q{?5eV>%dRQ=RjC~1nT&si* zW@pXGdNp@p?jq$;JF+K6-omHk^=kI~>;>nPmV^m%9m z+|o)@W#1PKOpc_klm=27_&#Z1TkiJU9l4i=<0+A;k!h(brGZPJfgyUzlfI7{crlW? zQX04v8knMA3M?rc->e3vM^e}2)4*8$^5OnIVcu+fpSb-`;`OCS>Pl%KrGb8qP4*Q<^B5`$=zed+9HPK%Hj>>3E3WsVLC2pz7t4YXfNSD`=A+MvW zrAcN~yH8q3+GIz)2c<(6ISu6x=m%!iXxE`4+(?EfB#B5~MU}4((^Z*1pxx-&{W`gY z(j)JBO_M(P(Q=KW<(`shlor*h%XCUNtA-oP49bvUEButqq)Zw1DJ&~dC7DH8;irKn zJ6g2XrtGNRxKQR$P9^<}eQooq(_&%YlaV*(jW^eGBW*KVQ@P=I%1j4gkhtk!ud;z z3;!q_hIB4K0r(-7LB_q1%efk+kFHpuGg=c2Sg@EGJ>xWp7IhVcS(+Ard^Nlqz7X$= zLeB|&tPEJbDM=|eu~N!JLu|@2u%iZ>3mJyHWx?IDDd%pD?UWmQWrFc+c%4N#luLHF zAzaU4hh%??YSpAmF3W4eg~~vw8SuND9~hd11B`~-h1uuGgYhVri{TKX;e1)_d6dS* zNiE;b)!XS!GPq}S(!utwpnnB@W0&eyo%Coyp?rw&omMEH=Wnx6b{7!iO#wOH77%2g zfFz#^pl$}6K!P`g94lz7;5O3*O&4sHR|LHx;NNcxxj^VuFLcoY5!LEsq-&<_7`pI1 zH_ZyA`+8Nz{F%NO%h*hpiv=wPlIrpeL2n3X3@w)k zS|Xxd^g_8*&{DyYEfcg%akpI1ayCm?t`M|BwOlD^C0ZI_6~(Irtx}My1+7-~YXq$k zFh&{-9F}VZtyT5w1g!%ml=@6`y`c30(G7w&h-kS&xlzzY1-eO~;buYj-=r7^{1!o5 z0{E?hwkjsK3EHOMw+qI&L(q-@VyB>;3gcUX@V`BdW0#;^0mM6k-cdN-74$B+hIV{E zEkpA)U*LjdP~Cfi-V5p&{riI64;p_U=mTZL4+UFox1il3YSxh-2|~$7LIsOGg7zrp z_A0yV7li-4aWfncbU-QVprC^>GaM3hC?IfH&|yX3V@2SIpd*UFCxTG&NkHJJprbL) z)4(<}u2+SdRbXb12|6ai|3da!Wv6T9XG%xM1sxaB+(LOm&D~MBq zK95`Plt3Jlrv;r>pl1XkXpv6%E`q-!3OCiMsq*~hIyF}@riD%|ba^w~EL-Z-QfE(V zrBf>%o_4crty60~{G4o~QyX3WjD9BD>eN;bKQG(q)J~W8vO3%A)LxJJ)no^qI&iyt z(eH2O{vLh-z1^nJ6VWCOxWmhPeN=i>A?VzNJetS~KA1$Wj*3DxoLs9M?vw~O0bC}V z6~hT-a(6&?$;NQP#!quugE0F;D$6Rw2owGnCoslDcNv9hh^09tUz=})^D-XzubOlvZD#TdH;Q(U`x5ls{|3ZJk=y?^Z z?rLy!HHOv+L7=@R8m4Q4;O!J<2@Rw2UwDM%D2g$dL(mWDhm5B(Dz2yNqm>FV?A^c> zH`0wTjW2xYzxNe#G^+(yd&78{I^=70Mr@{&u=OdPkwWgYMw^JLyiY z{|Wt=eo`oZO4rd(>&l3&AiEr#U3 z=)We&?mFSW8<6zSsRxk!8c2Q}AbF4;WGR0`zhNZ5rQb4=-_h?FNzWLP-_!3W$X+_( zzbBCN)~Pp;`~gV*5Fq()`fpan|Iq(1l0VWP8Oi_B|1y$3F(iMYKTVK*b;5riAnB)5 zKOp%tko-A7@_+PyEYAO<|HrENEB%#`)Sw#japg^q%fHdz*yuH>X3T5gLJ!m9@)3H3 zTRcjSa*JB@Fx3h-6{vWO9^;a~)8FOe%FX{GYg288Eu=#JszY@cpf1&AB53ghJ;5aE zQ9UMMs7PENQ#Zg_=;z5Hv$X*8uosK`$%d0Xhv(z%vESWI&&0i>PQIXDK%4 z2*Up?#U_S5%?C2er;d8`%4!I=-2+At<=P0P;5I^bRl4gYsGAx*dI;*F6xCA@s(NDZ z=q0FETYPFokNkAS8wds744Hp-_z!G*SVL5;RI+tQjq6w2*@Y4H9yU8cxT- zd2~5m5VA-k(OraFLP_9nf}jadRiT_HXrh1yln=l{lLSqQS*W|hKUwK=iXi+?W?ibj zG*{4EHFD1rG*7|3D(F=aeugYLA5NoVZaN>&WbX+fc_M#h=@a=h;$bC?M+`MDyMnIZ zAXbqovbSN#2v0SoPC5qrG@j}!Abvc<)D1Iy2Er2>1MxJufXW8bz zlNdZ7<0ZGrP(x$}W!AxrudEs6R{}fRKk1TR$5R8k~)LcmWaJR`BdIzKOOKtqVYY~Z0K+}naRAWdBuL+}hH++V;D9;Nfd zMerlAB9FN@H_4(5$|{5%DnNkjOuxDaG5?|S^Uu01p@8UoXgc8@A>gqui;eomZ1kw^ zHWB<3^#u-q{thc4sEsN0c`}&lK!ehOS4hVvX99EvuOKhee=}ytg3=YiJqZTn$s2nV z3m{4rOmKLn3DqU1^ z&%zu5_GEnN zF?Z~Oz5+J6lYz~klW}kmjbVYi$O_MM0C{e&l2@uB>q-uEtQS}#HkZ1RO~OGm5$iHA zHBN)7t}M34l`77`wu$AXOgt>)hF^66nFq)+h;U`tMmMnI$Sc+GP?o)idpwquSO_dB zMMrKt@{*{I&|3gCl~sZKJ&1`w&JYz*gecCwfQdg#$rJu?<0zKCuBM7~HOrSKuL0P# zbZxW<+PIFc3(!RYAaJ^uDzaqK-Z(zN8=k&U4^PdcZ2LrbQ4$K zj3S=(??Vx${akb_-AFgnt$~EMq5jA8<0u;hvwyC?lWwCs1A0F}?N8~a(Yc_9XE(0> zIsJrw&b4>5A6O0k?(lt7FEI=(2h2AS?kKgfO1@@LivsJC}PE zdk)-$`O8;5Dw{i4l<{Q(Uzjo}tnhKi;>X7T?5Ge|FvnMb<5HGWfmY^)TMOkm%qM#d zD8XwG`!p#aQ7&D9u$GH8J3Wl)2t0`etq6m@FVF#5@IB?re4U`Xc*)+DP~eqm&dsMi!m}e~9T;Eo4`d6`~sg3NSrW zjZg)OG{6JscgH@-n_)0Ts`7dr#gjCo|d@DG}Mgh`P$ah`J>m`Z3{g-|7SuN)W(BK`;Vv*hU zFZS5fXve(@K?fl>SfVd0GZ=(2plBehSi;cgNW@Pk9Pr}^(T})_Uj_wT zt33B5^`eF+O9}Sp>EbF@$5o}PT|gZwVpWR`;8*b|5GN8r?G+TED`LKiEL@f8!cmz? zT`{jSZzUQQ8xc{WWR(h0Dy9cf3dj;;72a=@d~ic0G{%(DK|2Fl%is`{DJ!tyu>cxG z9)Kb8Fc=;hK#@m-Y?-FQIgg!~ZC2yRlVAqOH~^s?l*aAK0TT~WD1n)&TtcGeLS(Z3 zGE3K=&91}?w6HsmIV=D;hR`A9Mgo*9%7iOfnN|?eVSAQ180j$8hpyO_)H@z!zvMQ) z7R3v)i2{qdV1i$Lmh!rdv9aHY2bdLv6!4VH3-=M8_~Hery6aUbGnfD)eq#mVPI&Ql&=ako5183%yXrUN+^+^A)!aI+4{<@{VMDPfL66h$H zLIsbm$&Wd~@&QUPcc82Q4|i2enc;9us|;xI(=Xon$BF9xCuUn2i~@g-&U3C_U4^Hh3d#luilnHLu3ZCevS_>)|GO{D{w; z@SNAXh#=hSIP{|X2eVD}tZG)hy9oy;*ou1xb_qmdZ@JOUG3qW^V)LpeLOiAe<=AcR z*8ae;0TRUkIY2x^6*+*F#02;}MnHLZe;n1q-PE!To~6ohOy@OJ3|9z6<=|=8Ag<+8 z`9HGGidPqSsnm|H0Sfl{I6 zQVnLX4{PuMEMOA)FqG1;JZY?9_zN(Ynf`BeC&2JUTMO>vfMGU?Vqn&Mr8k(2*_pr& z7Vav_^AcO8|EpxV&UqT*xhL$&ab8nXc@wPZh(so{W-x0B;hxpg0@lvs_a^&T38xQG z8p@fmy#gN2aSYQmaHs;f&R!2|O<HiKsp!Nfu#|J{J zXprUT!cI^X0SECT#F}I!f>;nn605AQU3i|r%0?&SsXGjWK8Yzou|{AlrldMmTxjk| zPoovW2``u8ks2z(>jW1MZ1@@yh|kj^@QJ0dq>V0d6hYu%N>&`6gFhUIN^Xo%%xM1a zf<^4}&Ct;l7$LhZE!9mip}|T6#NuuWu?RZ@)N5 z?*b=3K_9JpxAr^sAVB0Yli|LIQ)j_c;}^>Dt`&@LXM^Oj%Gos_w!Aw2;@kywyo4Uj zVq#%1X`;qs(+vpO=~#eJGwEtFQ->oeHn?B^)Qa~|^g{MW^efDmqay-WyA|BthPFSZ z+vvx1Yk)elFbe^U7cYLArYD9rjAHQJYWx~}G=?aP^1=&EG%W-2W$^-~Y#sH$&x;#s zW$1pMbaN-;A?%*`n0PO$F(H~DtJA$y{dv3{zlZMoQ|vkA4jz%hi%iT;WBgqK{wjh9 zVO5dvfUQIi_`}e|>v=pRsmJR$1-xkI!R#8kimqvZCBC0S7uEQ^`)Hm)0ec+xb--N- zxPL%+s;29babqeaf9eA{CR405JU;`=PkBPc#=(RNTE77ksjD%Wy@_tFBX2=hz9qca zOsEUf*YGo#LjRPPRZ2R-|KY`g3RLIml-!^FQbq-X!@h%=2pk-71Afh3g16uX{F9%Q zG4q-CPh*AGu@Em-56%*)UByC&kV(`ATRbI3W7I9uNI5h>Y#hRH&$!R7AgOdiR zuj6f5Nkg^@QL9iiuTXXkQP&W^`5F+S0U`D7YjlW4hoX7| zIW0ufR0NzCqIta9KEskrL$ox+fn|bA6I{6g^*lcx<ABf!EJ@TAHe zXr3-tdi+e<)MiJIUQ-<|cMZe@4otA2sW?VnbcVL8!3&{RRAc)F6Tn8982ZQQamL(; z8UZuo1Q2!-Fc9ALx5ZvCwcAv^w`M}>^>P5J9*1EPya|5G=3RMcig&h1FXK12yeVy& zkZ<$WH0(~Q!<+g53b=hDJVZfbhu^1yNj1~)VmU^tqs}kXwQ9UQqz_M9195dYGzbjW zX}HcZP10$S&QeX%8N)1{X2mfq)M=s4N?WM#EYWER<4Fs&#!iKDxr1-(_|}Gf>dZ5Qw{O?SdTW5s~n|FsCt=xp&f>2*U>UPN_8@Rt(!SUj{3_Iww9e^g)=kK)35v%a*O|H>t4Ubho zvR0?H3dwq%)+;3I6_O1)ZHOb;sMAJ964jw?-cE5!PfKUc#95bKmA(By_2)T=AsQLWz935jA|*Gi~Dri z2R|&7`*qsSlBLU59|Fxr%dbULJmhYGpIqcz@Wd03~z z;Kkx_ctoco>WO@!OA}rB34ESo)Y*bWekN#$egfy$tHbHL!GVgL)fm>9roM zg{Au#)W<;RQl{=}P+#@rJISR9A(f5JUi1USh|TXM;kOc zzy;NgHE66-?Kp$RDbyg_foG{T%mi$ZdV5udmjDl{8%sX zX4n8rSzC;=NA>gNX$v$`Cj&#gWjekWax>C1!?1vn6^z)JO8kOZR)e$JZmzQN5&15z zQzJ5ud%EiF%Pd-E1@VfNz1*VZR?yp5ShT_l4;QkzPnbwI_wO{Yri7rr%A!?j0s1AE zUUKDXcsnn&9CYcRD-XDI01x|h=3F ziw?OBYufzd45jMsT=G>f)aQ8>(2Xv2})EZPR*_si`Tp=7(&KrZ)aIR|yr?zCtpA_}Ja z7QF=p2GMDkMZ18kVgvcMMQ>Zui1D}UF4-)YtsC+ki{4Rq-?ivn-jKol$dK<@^qxZa zzD4h&B{lP9Tc6tc_w?(_f3xlyCfoVc&IcytuW+~zE&4FveYZus(SfVUk1YC#wSd;` zS$5V`2cPiY-X9`6Ds^;J3WlQ}HewK+eCp(fM+mvcqCH>^Qwxjsvc~sf>hP8wHRLOy zw2U~y&OUW6R{f)LKfD6KF<}qgCHn=!2IRZ=)X$e){d=B&y~i~Ze>LqP>go@Z-F!kt zH~%qtz@o#3JZRBDE4ovEKpwK_fQ2A>$O0$6JdEnNnt-P}tX7O_nC#(G4<7^>$Hx|Z zY(;s~&k>7`Sdfo3rQ%7zN-xDqZ^b*+7^2@zy}?Q!pHR^UtbC$aIcm|-fR$qweZs69 z3t0KoqEC}p>FZP9VpPLqf1motS^3PO&#Wj0#p4zoFNKoknq(vtKPCmEj1atCvz{x3#bvhW)InK}EVpPNA5TAy`IXP|7X}CtAJY&(BI43c? z5A_NEgZ<%hnDUHa>={Y=8t&6@|DK<8xaplv&))lsM`V#rMZ7wu4O_ z?D#XJO&zf~T3vRssS{>n4P<8p+}SRaU2N)NM-T4TD{0z~gQi_=>Kbp_&8BXuX?L5t ztEN5BZ>R@a_Ohv$%{?d+<7vPKdT(!=dfO`U^s%WAT2z;PZR*RcqW6xCYj~Vb_#cbj zJ6?%CUWp!Pe}YdFik0)2>}OLyZXeW6^l4&p_?V>HPl~H>z zHVq2c8f?>Gh)_)qu`#j?VZ`fnIn<`1F_~FW!)zJ`ERE!Fn}#c~N7ytXKrqUtQMMdl zvOPxIG}?|ncb^;s8>l_TC>(2ZEFEVP665Uq<#?OMt2&fUu({bpn~<1j*O8NKn#A!R z)0FOpdK;`GVbKm(+LEaYSYw!{xsMQPl(mzi#ELo_7UGS1Gn`YV*ion_N3WKMd7{7LUQ`MHPZia9pT zLFp-vkUfRc(;l7n?#_Hpp7H36Cy#q{+>=E<75R5B#ya0zo941Mu?F&r%~efd8Jn8= z;bB6)YSXJWmaq5@f5ocEe4FNjziM)UO$%6zU|}N+aZ&r4O|RKZcn@y=}t#El9i?J}EfyxgYc0iG2$p=gEO zP_DF@!YWuSs99|jidLg$jZJHUGQ2WdYs(%ccdK>4l;kJtZCcMVqh_O$>P?&8RPMLQ zrcFvzlx*Zqsf@DOrp@5*KDmXRZwohtuv=}~sv2#xX`5<<>`iE68CBVK+ilv8Ru9S@ z;8q0^m>5%?W@dP#kUJIOw{3b`;dsZUcN7kk>{QVJ7~Zw%T@_H?v*|r{k+j%PaC(^X zeVg7-66ph*K8W%4p-mquoV#t>t#BfHV_cSxZ2Cym?y+eP<5VFQ#P->=PYJo-rv34_ z2Qd%WbU-yYXwyN34p|nHeejS?hZKj0(L=aLu;3rt^s#Dj#HJ&P?fA%t7N6MkiE44w zrlYC_vhep$ZTd7$HKC->l#-6aFBQHMHl0u$pyV@FlA3%BFy%=ss|Hs89Nh-^s>@Ss zs#B~IDC@LMr-S-4Hl0!RMGh4?JbdWEpbSZyIn>PIc~oJnbB6=R|L;CfhsIKE?ri zb4Q0d#$Z&?S5!JX)QR7Wbw;Q`)OVsUXLF~7hteOCp$EmX)BUb9Gc=pJ%xO#LsJ#I|{ap@j<9Ze1>NXi-3L zu|tc2tD1bnp_qijD0OJNQa$kOf`qD5 zyzS82%!P^)i1qI{^iI4NzU$Dt&_{Loo~(0bvgAI8_AwSh`Cjn0-=Y1n&Wa!i)f{l>0Glc;t$6kGphE|ftZ~?( z!%Tt4M8kzBYWD^6R{lu9|ZV^A=nu$`Go^SL+nw%rk-X-ui;LvrkR*4p~@?k`jkVblB7QE zAYh+%Aogfeo^j}m6CNcb7C*2egQq@j&E24Bh?=U`V$DL-EW}y@6%}r=fdlo;L)09* z{t9J_5Vhcz$Z{xe8KRbNnFp*?G3`zv>ZFKu4pHYgu`VI%5@72VqHdvR z5wLX+QTL>FJwnt&@!T^+Jr&PA6q;Um^A?i5L)2T<_6bp+5UT;q_QtwJ-w@%y7qcBq z4AlBbzYz6P@919{;kG%ps<K~$$@Qi^mfTkWb#l+B~BDGR_ z#-%gLGfulSFhr-}8G}MJC?p4mXt2URgcIx;OI%Q-CCW2~gycw@M%r>{h=zt_f1CQ- za#)ClvEaXw!$X`O5u)KxCXEQxKQcrkgVZP`+bEVOa2MDVKt8udVWKL&= zqG?ad*&&)8ie@&Db3!yHz%@5SbA!~Yq3ABWYy_qGA(|hQEl`{;h;#Z{h+b17zaFC3 z70U}lv@if&6rx2zYO!K@F%Z2GqBnxFC2^LQg$Vyk;ux2QXt_eP0&AB6=*keS3{tBU zqE$e&Iz+33vNZ}3-WILJdSr;!DB0Co3}zvaGW%({E=21>QKx}ikC7;7wJ}5+gVdX$ z=pp=$7&teDXj4$OSxLD$&eN68Y283!}7&vA^I$Yw{Z>S@emyc!~^mKL>BTS zI&>`R@Idu>h*17{sG(f!(PI7~91kd`7};rbXodPrh){4Q6s7QJer?oqbYU6U~Z|hQ9mqWj$o~<$HwR5SR`q|b@mu9-MgBuKb zEj()B$>tt4SCI?9sO$i)vEJ1&2GGW%HlA$lQELUz%A;25B~VL`I=a*nFM&F_)X9~d zUFxjxW8T}@<ywJEVBVI$GOb%c$da2z3_IqaY`#FO>A}p9QGJv z8|WC`D2^K5U53t}wq0S0z=(KL;|~1vEO&3XuF;DX0RQtklmwxClF~c#jPB zP4W268^&3a{1XMUA^$`{Wy@kqd08GV)Wjp5e|QBV{Nv2syoLlSL@)ukgAw0JchH^p@h_~nGVt+$ z{Li>o{G5Kqr=sAOt<3&ibXRQhQI&wHI&Wnw(F`rHMUBT6Y!KtB1;EtmpY-j@$A%GTfFo!_OBF%E|~xmDRil4Y7@jVfY6I48z;wd6vXKg5p^XewP4| zI5Ys3e`pHa{EMgAb|6gft^g9P#Z;K8S14xhooQKLT9=Z6m*z#@;?bj;>6 zSlDPdcm>=;0XTX^Ny%rfc-8pK6)0eJ7c9LW*{}N&XRauW@C+QeB6neJL+<6ip`71barJ8Kb=d3`Ay*5tL!0{UF5AFE06>z9J zS$jTlMM>9zk6d9=9R(b&Bew#f;GC6!5YAZXER?(9kd-c+s>bJ%bOk8-Bt*jTB#;Sb zu;By~5W?9cDCvomI-7(g3{E8p(5Zt-6gnJ8g1x5fzy0`V5*8D)d7ui;CjkO=J_!^W z^I}yQ994qK;AoMhHbK)v1P#H@-V5bWK|=+Mp`JWp)M0#B35z$Jk1SE4WQ{t zf;HZdZ()$gbt5i4$k$2yTS( z*4l!DV~5V@5)U*S{m0`HAEE`-G)Dp2ZtK1zk=Qx5C(ru8T|FwiFbu^ zp`e9oBiO01ZCa;g<7pcQNl@p*(vf zpLQ23S;a@-;kdhMay1`z7x?HJCGJ{9W*wh#$7I&?>2^#86t*b}+xa*Paj*H1kF`^sbhkR` z4j%cDI_3@zvWHK(gF6Qff=-P|+Fm%CI{Id|OS4_MAL4K{?B-E7Pj>aFs|ui9JU$Sw z3j*wc7(g$NdU>*^M?Dol5084N2;1GmS$WhQA@(32mM0GhoRi0UU=MSGQ7?Bvk(R4S zdl+XRI`lf`)O=W;oaxX^M;=ip=s~NW2ppdWt)lFxIzJDskMUV~jPEl(3XgSvoKMLE z6x4A7M<_Y+B%hGSAfK!3DM6piZDRlfJsRlA0Uixd0R6G|NvXDUd8XVqk`OLJYE=N7Ou#G@ge9PH6xMRAbF$Gi;! zOI>3CBQPWNwAu+ya^q(jAP#V)`_ zBUQ^$I*rnqozXgtRxQWqgsL&zve;47J|{iim6Y4~dR4;ypI=l{0|ruRmoIO#vADdo z9tK>gD;-S|kYn#y@6vi#u5)RfS~**bl~RM&V&&|! z7{Df%Ho5Xmm)=wW8(rF{R?aqHaTU9?@ZfdapyLQ82Axp&PjP}#zlQZ$Y+zHqdhfo*x*IIa4MT~MU?iuDbiJm%3cPj2*RW56@^?kIkyxHQF;2Vm zxxk|ZirjpU4gv@GITQm}gUwpl^M%b_N|g&eTB!JW-J?U;+XsF=Ht1tR9x>>M!v6^; zSd|MDKMNE;pBVC(Nykii)S#nK<(nS88B-;%xE%K6W{);|{G-w{24}b6)wuG4EuLKG z@xH94CN(v&FN?Lm#k(6DcZ0tszmr8K6`A-6YrLqa3EJRIz9+W=C2jSdm)ktr#+dx5 z+US+!l+8_QZt^DA?H+As5apCDOln~Uorzt%C6-e7^b$62Pm_A8v&*KtG~JcG%)lvk zyR_StAG-9RQq%|d)rCnPz$tsj0QR}G4~~GLQ333MdX!UsgartbK7v#BF{zI!`%&%cJX_v(FyZUVF`JZD$5jeq$(oW2pN2Q2Khz>}!}yKeFYNn6H)bARu zeleVWFyxkh*6m-7{3(J(TW_;l7P2sF}Xad|p~NxPK_! zKUCc}l&3OgGf{RK2m8-WW~a)J$)}c)h8*v6*OgWAlva&CSGD zZ^o1HmS%d3{hU?3HF|hkGrg_T!NWMG}AkpSR$A@Q@FXA zZpPGy}z_lZFNa5H_l$pS|F z;3LiSFZf@Z={7)cMzyV(c(RR6zP*`lk8m!u^^bvld56gDyQA42+fe-zXUTQ2vp*P4 zKVaGCS3ew1KcxSU69YqVbt}EERZ;iq6X49T)t$|Br}Mej;9p`@hb!vQ{fN&ds|TRU z@%_IdJrA!hj;}t|OrPpD&aCy`z7B5%aoz_fr}IxY)2EsB+0|!Ag5eM1l$-5ul8o_L z=Knd8*P1f)&x7`}sxLIt7n-vCFE-N`V_p35`KFo!J$<>Ez8pP$C3o-@I{0cceKk7x z=jh;ToaX4@>&^7_=zu@|*$zewIrv61eIpLXH#y7k*|(bMTN!9~H4Qnqi$1?iSIz47 zmS5c6On1km?`fuc;*0Na?3&eQTVdk3y;a>yl=^V>HYNoU8rSr^}U$$_nYbaG3OsZ8)MG=@x53y9se{s{$VryuO!#tdmaev`PXLpS5|UH_2XvZ$&Z=HPh$KB zo9QRb>ff4)djWn*j9N4Ol*9G2X8M_)f{yL)-@!+c^qPr3e%>TzrkQ?GkK@k$610y+ z{HmFL6^r;)Ge_$1)vufB*8#-eG}CXw{h-RpvHNW^{kG@W{bv(y^`9avAN{VGei!ro zeKY;Oa{?z@X|h#)rDcQjTj_iPI?t#sXr&7XSdMsy3tQ>Ji1NIsl`d*kceT=2TGhoZ zr+5iw$aHb*jOx->x}=pZZK0$~F{sfX|DsP{Ay zKl%GT4Rl2Ndv7DXx2M1NHPZVWiSFKScOPsd{{3Lx9Rb+zt?2L8=uR)QC_I}iJK%cXBz2a4H?5fHPSythMwdB zO>Goz;<%q|q)#^5pS}|?JNM6#FFh7&=topT^KX>93mUn!)*dsLC9u-iZmEG6W4ubK zQvq`?RPPC@qpV63X_WMrTm_IT5{-wu33`mX$q^Uug{~&P=vKp8 zi7#n!u5i2{EwwPwZup5-;vS+J42k!5FJGERd|%O+x4GZy2=itJ14S*Ed|ixj$k{3_ zQYOTqsiTzU9OFb$GWwhlGnq$v`a%Fc6rM65Q>3s+ajy>W3JnO5`8gnSAIY}PHJcjz zwj>3>^ED~&7DFO1&MPt$CSx$U>=CTfR**}ZKt)O@hpSwl$WWNAw zD}J{XY4HhFRO+GC5?VPqyq8mx+nS5+oWKlcu|;#8SbJXisV2xMT&VHJTG`DJ-Z5J{ zAEvWqiK`w;RDZVE%?hYNt8;Ocxv{?kbYqn>tD#Nn>z`sr%<2E{?#N^N>iOtSEY1LRnhFB#C6tI$ZwS46 z%GZ99GS_Lo>>(4V*&<=o!IuOvL-u38BB&6t0sWg|N5qTnj*N7Q^YqgxPz1w!ipj9s zLSw4=V|Sq+7@9H!tXe5YB6=_)SnIP^;xaC2{Nl2XG#O_0tDuv$(UciX~-YV%kQ3Sr+gQr9i zxNXD>_+;<2N80<0%18kuFDkvnEG(5OHBXN*PT(OUuG0NM*nkr>YCwav)%2R13?6W2 zqG};SQMAwwNk@!7vBeuZwz7wWkws@N!laASn^ZoDB zIVWg^kIpc|mpEY$3LAXQ2&Zq;Mc&V_#QT)WDO+*-KPCNn+FX9RX^=(LZqf9wXiA8MO;1iI+w_!l z%GPSKNPk6GK*=2%gjiJVk<_k;s&Kq#@WnIJGX%>s^C}2eY0HPVL$_zT`IKsL^SQGo zHsAYd*nID+p)=wqGJLtQM)(pg;T&WneMfuV7^TfwIVcV;=)t+Q!5~i{qJGkqswhlG zkuXFu`jd+`(sK37$4GjoqyGDgVzI<)>C8lY9%ne0GoQz>3mDHr^Uz*K3|Y;S z3TXutLTG77ySdCcOX{+jc|t@mbUDkceDC6Xh?2FbERs>nW?>0HJTpq4lmH2-bvjxfQnL$zj5*ZbE z(c(`@_06AaP*qs!xQX@1iK2v4`Sx6Hwx6HuKc&M$xS1WojZ}jPLJ#xr%vJxRC{{Z5 z%9+QOid%>k*aCP#6H#P!v36d%<-F`NTJMW!2zZ9Fc@sf6Z%o9d^M&(=4s<>#9UBO!<^k{zc-Fk~zL%HSAyN+_S+X6Kt( z06^ElXsjc^>khzF*iL8WBE)p}a*VdA`u`4k24G#>oz<D3-o zwS4C;32bt#EO4-TK}Db4b4|sz4FbwD(}fKybc-nS82HsY2M{&3sIzIxqd=2w@(U$v z7t$jRfbG2xzF8DYcXG;Y3u;M8n3Mo@y9B5dhpmR<2z;nb03Q@|+{Jw6wlI?}dM&0@ z=7shL{OpgNu|JQ${WphQn6m>^pb<wzO=DML%WZ-X zyy_2Bb6mf;d{x}i<78q6ECtX3d{1sX?Ua4C%-}EsIT>03lvuEs@9h-bE$XkDlvTXu zN8jQPP_5nP|6}PC;F`tKsnO_dJ|C)y>vB%>3|i451{#MZErtv%NlnQ1V!mAz*bGd8 zS+0qxVPTOoPJ@DB2{T;O0T(mO#mSd)JQoEo;WPuXG~2d|0%QP@!DONN}l8U&;o3Pw@J`b+AcjY>2*+=0~KP#oz_51B?jH!PaO-$O`E|;#hG6n5e**&tw;{&kIAr0T}auLYR7( zlm|{e$?gV>-KXG_(|XOb{fi7CtHW*wp)pqId6Yvn7!3Qbkg&M;AUzK;Z*+2G{gLv0 zaf)Lnx^-cnmdlQg%+$4Yccou!VEci5w}FJ2O<*r1bt54jz=j>s%Fn`IQ(3G0V3FUx zxX8@cxlcBFux_#;){V8lhDJ7w8D;t^IDuf+moOY=tjfj(phX?sYm3fo`r8lYX*F3d z75v3D?NQvrl4_0V25uj2_T`GNkIk2P$vUy$ z`z(67u6IG##e$xN^sH%3U3p1Fr0g&9N>+gzhzi)ACD__6ul^823G5c26z!ZNcB}pl z1yKM98-NRYdKR+pGeP^izXFFQM1HA` zP>Js8PPx_Ya!h>gZh3UEJgzBq(u(nNl9hCo(s3!Bu72nn3x?*npH);9#a_FItMQHc zq2Hjrq&-4UjGue^KJCr4It|qsZMY@|U2}Rh6i0YB?{E=~gQF=rMgsLKdu#9L1gu4}il0w%FaEPom)(d-#Pt#+Z zas3)?G6p^@1~@EqM?YJa)~O*^ZLT_XV(U9IMSF|~sE=uVRIiMm8v_;_dtlKG+=`wb zce)y*Js;f}8l5pdeS9={{OQJRrK9tjpU@djz0mQW7>%BIx@uv1LeB!!4{dNlG&mt{ zGj$kaw|xHREJ7{OzlqyQe|~xt*z~9Bp=&e--``J*E}j-TqFtOqIafpP0W!u16#G-t zDNb)rD2dpH485O|o+0`pz<~asoG8h0fdzGr%PEt3J25F^-ltoX~uH3d#m?x0X5eLxZ&vEo0o#6pJ2tQDf=?$n9vJ3@Bd!Y3j!^ zG(eI*s^viomT?%9K$mj48U5{TL#aOu>^^3^csvV>ImF9H(k@#L*^;mpmgi$dFCWi_ zkj_3M7Npi1Qeb^|T)S0OQio*{AiqIsjc-DxiQ7Y1c(;*q4LAS|V$$9Ux!9l5+vTy_ z*cfybtv~>)Z-{K;bNF(7F~*~3BL7kwuZL=20-Ep$3-5mHN*K-Ps@Wmloo$hBt1>?# zJ(?|l1V%2JY!DK$L(^YP2pY0a_7$P3wE^Ep#_of&$|sK$5ss3iXPm|MgiIhH*!}>- z6tuc69ttX0g#Wn)&yIITWOh((JiCp3P}2j4btQ85as{@Sulaw zuMN8$KS}$k)&`&->2WpnD=O+j_#fV4>QHCT_35wdxv0k7b5bnL>;&&{<@sME{?x0DB#Rw&6XhFR|5m71WhJL z+QN&hF#H{M|DWi~%OlyP+(fbqsVJ4VP@Z`0{Svhebj>>gKi#D%|8+j)u(}p_H<+@@- ziwggw>k2mn`Rm%EIxmt)t}je`xu9r&=95wW{tZR>!)4~Yyuq}Wjnx}XcHvSQ9=<6W zr8mXRZGDK7x6)%--DvJhTp-53*x(A<}nT-~azQr^Z%p?Ek&Bj<-zgj?zHtW))FS2UNI&%hbD>7%e)EQBo z$PEPRjb_li-wx7Eg?Tg|5D+<)#uRYg*b z?Vg*{Xl(W=%VkHiPe&@vwmwRVm^Nd(r&gbhY#Q2;O7pqgE>daQljo79Oe)P6qT%Z5 ziv_7O?a4`o`I0F#oGOfoDmh111MH!30PH9E?3(^mZ8)}^*Gss#uN4$QpvdAFEL#_X ze{Tl_dzr(c$LK)lde1H)0p-7D0~-=@R^X4U7BK7rhCMG|lSRK_rYXO$Ov>lCGQ8Ov zq~~n@t#N75Qu~*Z_aSok6yJx_Ix~nmO)nj-Hj;BTGGbrQcKd?1w-;`Nw6h5c+%#U5 zsG1Nx*3#SxS&H;e+B3zk6zx3~DO$?mc83_AL9?D`h~Q~G=SsqY81Ai5IB@J#{|&7X zy=lD+hf*1S8X8RbY0~4=o|*FFd5g&H=TAsa@N=>xG{zxwr^iSC&x$k&dPK@*HTQ-4 z^#mb>A10m9<0Rx3pl5~5O=Hp}82*VNb`$J_)LlK%Gl`eR+2N&$*NWYo1N<_+KCn8O zyw}ObM#Sz@B*1!PxMf4p+pqA;#8=4NSthWT_qovOEl2u!lA?G;(OMq(`8%V zCcQ3pM1pFxGegy5Y>Fxkp-Gzn*;z8av&|WN9xHf$+Juu02U>c5NiZKts?|mb580`9 zgn4&ngW4&h|0ny_f!Zb$(S=tl8 z5)7)ZoS1gPK6v6Uo6{}AyH$(Zq$mH9a^{QMAIY;*yk>Us9VP?F%r;*9)cS)-1%LXC z?=6ZYLRCxY-F-cR(A|9sLWb-pqk3mngD?A`Y2)GMVxmCNiDtq!hLEq77=zVA*5>h7 zPXH?Ou|2Ss>_o%ZsW8_5auCMa{+gB~^c648%a@X1p-Thxmf&RDz1Q}xDDD=_Rsfkj zf&r8vMi~NOJbU!&AznLBoarLZVv*dPJY`XxEL`MSp52A4bAQ%(2E*JS<$`tlUx85L5` z(VAaL=>a^Ho}Wil5c={JlK6eZFUUMs0&dXr&IS&|Xw9JRh|k_8*hHki5AbG6|Dilt zQ}<5-jZO+@JfA-T?0y6td@G>wNY?Tw`d-U$Qgvbg9-UA}(xbUTI>3{)Z)p=&G6?&j za&KJkbn($V#NqU@E*;+fIq=92fk!*FtCKtn^Yz55acE1)7AML0{u`?e%tX3BrtD+T z1eCm56gtHss5u#MM@i5@SJl@ssQMyZ@6Pe@>FAVgDE16NuY1;jLeDtX>#r8|roJr- zz3Q2`*B3$3Pe^}udJu8I_vbACL>%cS9wh;1X`jeTgL=CPFQ9%ZAN^H&YWl0wA>#9) z-_Ojn`*djc)6&W5)bbu82j@e<#~|N}FqiywdU|?BxM>$bwx6lHJpB!|2-0cQGizhQ ze4OUbgnFNz&Nw|tcONDfc5A-$n_Df}wy6>W0jlSu;~;_0Nv-;FKt>zj(I5*LN>uG2 z*yoxoJGtu%JZmCNNKftEs!f9OI4K>%(n+BK^A;K)QOK_YNSoTbxi#~(8R&{V32JZ_ z^l~0&pY#8yeEZc7?ig!uBq86@n)dmP@&qQ#b#mHnUN~j1-p*h$#;jBnbw*$zD(`ES zPY$xJUOy!SGSQMi|G3yI4KR-OA`Q&5v;PN^P5Wx{0cMx)FP3&&J~8{hXHsMtw8@~@ zrK?%(w`Cs+3M$~#yG3NGmX|3)(Y;viz@jC6+QAKAJuoPrwA2{Av5_}4iWPpcawcww zZHSo|TDzE;$PkFaWO;~~ID5Xce5ndoQ>82d@!G$Oi!%BY_B2mHzq+Dz2-eHX)3_H= zzDOKdt}kpf*pPHn+nCy2JZ=v%;$nD3?ST$@d13HAW4}h}WOmSJJspI#_L2oGC&8X% zB9H};C7(O_GweemsFkVNxuX``3iMivvAZuVY=7(>a=G5ocNw$F)45}C3bW4aAL1&t zhGCW7_p}{$4FjFdM$bYa?T0m|S>@*<_5h5FyDGu54|r4_+sFT&^XhBbH?Z`UR=PCX z=tR+N7)<6q!b7Iq9Wxjq!>z+Mwx$UxwM+cUg3A!&M#3F<<%XGQ_?%!{;2$!?Q1+u-=K36Rc+6_9)C^BEq(y8t@B<2H{-%|3?Pdeq;>1 z;&Gn*ngBntYPGLhhI}xJB}m;5Ef|r_NovxB`GJ#A8ccS!BUGJso_5-?6SkYp%Q?QB z6EC&au~KC+y|yE~1@E*WfpOI%1HT?MWjpMdoT$j;5N4!yWpxN`S`9WRv==ma?-?cth*Iu_4q^1>slHGZ%rJ}`if50Dk?Ev{-C z;e!L{_CQ-57_D@~FeWlWIzToO(8?fy1_%jiwAhno{t(Yjwg`^JZW2`ic89Urhqh^ zSl$KH=nBm2eXQ?nY~;?y)E(+GoLez{sU|=OUnu;PjY3LU5xp(zSIuN2+slu1BgJsE z-K8A5WmUh^>yPQND(3}5!L!LKr);13gJpsFtk9V+8-?M^@|Oiw<|)WuF%-j6U<>(p z#gVdUF?Iy)0?v3aasN|H4wgR{4aZ1^X$w#8M1Yj1Q-p-4Yk}uP=GZ!Rb@)uU zoOaQ^j+?2DDZgBRut&AlA5eZJLN639vjo&}=<$IM;2c~V<{F+(h1>GK>&5L@=Ub z_}zBlz2a~?9iG|(<&PW%mtBMmPRxXX6KsqMqSr%PJWe~_Vs{7ANuXffCF71f)dWJ6 zBo>B?PBJz~W6YSq+p}y+6BUB+k+HTR!!txm7bZ>uF3z@l6Pj;%TR+TsabTYd%5B(H zoYbjYz!~XHJBaqvV#16&H@$L_GrjHvS{Ms9>|$=>9AeWY$O0)f-@mM+Q;dyVxN}!+ z$T-QXhw~M-LYWa$WZIka(hH}7II04t%SHMHV-_{Mf?UhIkt&1r-jLuKPk-Mi_Ll0b zVb8bq29<1UXh~Qjqud*t>R$XArz}&URV;Y-v-ggZnYB76BwTfy_ z<&=^SY1$?AXk$hXt}eOvZBMWvk|Gdpf>~+)sL~qt0X1@j8SAq|L=ST}oh@cnOVZwH ziCBh z_|K?(88%yoL8Z`S%5O#Bju3;q12IFN2ASY*xz2AmgF{>#ikrcQ#& zy0LlOgp1!a*!LM?@_y53KSl|Of1#w$@!#FaM5Yc<1NA}2S|5e|3W|6!!lxSi=PQkL zX7=kC5*Qv90TONyxAYsbuIf0el$vb^d2=|e0T0Vb-R*`C|O`8PM_s7c*c>AcCs<$*uJpEv! z{AOXg>4#Xr#)>S{TN~1nGb_?gKTL87w;`Hr>MXW3$S^I>sXl6IX?3@Yz1qWIyj6o*H)I3eRv;e=%wTQH@&A*7=6nt zIc5ICjM2X91)b%;6xH|QdQL2;-zU}A#SSnC1F)nYILRL{$+)vKK6{|ywVVt} zIyYAdF-fGIAIG3Ssc+ysGhe{zM*f>OZ`ufB-I@9BP3a%T=$|&)4er=!Zv<(v_O4a9=k zm3Ny*G2iTGmW&lWE!Y74x~(DgBK!mrLz3C1e6uGr`;_*Qub4cCuvOb|v1$a&&I~!8 z2_kwq2%=YcPa(YuylsS_{q>?sDM=oyRCzoa$e}#kJx!$DBLIVknCx7yLKwsljm+-$ z!jKkMXFp!a%T{m{CXMOV1E3nlO-5L5>sMzgg84lOQ+}`A){u{b+F$-$Y|Ft6VcHZk zo=Te%gh*h1U>qFO36aZRk4^`tNB^x?Unn~vA03L^cId`zpG|i+aJ;Rmu+64*$bWFB zBJ8r6Iw+-qiI`<$bC00qhO91Xj=fKF>=9{0IucyJx6mF7K=XU#=JI|esuJ!_n# z`}6byda9bf{+m$ z5$|xdXJ=M229x?pDm*!3)Fve*`IE=kr78PF`@M}&c@h==rf?xRKD(Zh;ZR`uLcu4dM4G4VUk86ssR^{NA$FlveDAHq%d*R<# zvgRE3g6SV)^kciRF7Zu{&p;<3(4}*XUN3)*s1|2_U6HN}I9y*4+v1Zq7|!BaZZN1t z9C~As-WX4AED~SeSj4fq$+E4&{LRMD5Qh>$C=q<}Cj_Dx>p_^=+l)Y|{si~WY=cl( z)Ye$_+qt@+NN>+edqA=jM(s9(U7nc{&+XwxuxJ(+)~4iAd~kLTexMI ze&1`A)-Ba!Klcr%$^LWeJBEMjbBgTtN1zaX!k@PlkFT~B1f6u>f3yqV+lB8PMY=}KSwS5YLO|} z({u4wclc{oZLOZ(p;F&0sLCoXf6Lmec{X=hueIGr@r)nC{Vmoi>UVJN+p(2*N43_w z>F}N+-NTNZ-_NblUjED<7xX`=`i`|+Aw@O8zc0SJzo3?Dx}UGUYsuCv)rH;>U0vMY z^5c9-^u-vPF7D^z>CUI$3sn2QrCrna`Sb@?bls9~kFNf+(b?=DS}>N2mM=DO+46-vkD{p*W! zs<>(Trd-jrdQ&0S`L}|YFpIbH2miG*x9w+EaILrP-!0sPVZ-%z!+;T6_AY6jAgOc z7>6$|Y@`btesNJFU8Gno>VdQuTlJMC|65T}cl8q6bNML%Z*US{)UdGYi|~7}EkL)C zUQAnBgHo3_67^ZT)RgDxCCFb_SgMr?omo*c^`#*+Q;7A-kQc6MP->O00qoULYZac; zN6l5PGO*SvWybICqkK|hq`u(X&PT8`T+>L`&~jrgx*DCo(i*D@90}F_jWN?~G30Wi20!P0WJAJ-=z76Th2!8GL=CRbBlks=E5on=R?;6AB8w#gG2y z#=ov8O4VXh#&%#q)zD3>H~Q~BeK}ILn}LF0EqKDffs%@V?esC3IC;&+&;tT0@;waL zVpGGrW0BB2drNjaya;VPtLV{2DNQ$aK@M zEofZT*xXR>f0=s!c78xKSUdf!5x`LVJ96SA91D-Dpu_5l`p!%tc)UbfS6AmRjhsva zYo-u1c+6=S<;7WhW`oRm_k)Jk{?8(t4KE3S%BEN6px=##<9^oC@J6+=1b9DB-c6KO zobKES?Dr!<5MhXoOZfE;obqo+Z?bk6TEV5hn92WU2bsDb8ZiHvY#fQ|;{tWZ{VUd0q--N_qe-9`z z_zldq!yq?y7-aim#R6Sm%<(+Sp<|^(G~y1<1{^bs3~)^N(FG0a;nqyjF*An*;K3io z7X%Jx274%C1{I@92hVm5Rr!(R%)2v7+7 zmy`xZYfLQ93ZraY9tJbEsO+Z1#?b%vc^()rO0Iu3 zyqIle6qcX?<08U0uwdjyI+8ebm@hnYQ&}Vj*;Uki!8G^djAVSTDT6bPDIuQH&2*j2VVFW8tvlZq{BR*ldITz&uNxj(hFUszEnKoWYo}WY`ViW>f5xl)XHZ zxq2xq8jfh4_2Q7ez+SWUqzjle+@lkn7`6>t6L98%#;%c0RQ~3Tk;A-snwx$yQNwLE8pXF#hZrPJu_3Y~c}x4Htl2Bevq% zj$!05u*az3D+7n^=sD@x={ZMf+{mlLykQ5JHEi`fKh&(jhr|u1=P^u7ZCdOwZK$f_ z`s(0eLx%gE&bfY%EhEU#q=t-iuFL1?d0I0(ALnb#@Pu3t#*8>47n(S8C9Z0$rt9!)<(-`9v5qt|?4we7RXXK7NHJ3}xO|YRD)FFnd)PJYEGkf3+z) z%!mS|p(VMsuQi9q5C74$6SddZYmlhV?6oH9h^yCW(uhy5FSKbezSKKigZIT$}mF1Nl-V}}sl z$$Fpp2kYF(a1bP6IQBn)lqs)4U%~?WqM!h z@1I@FQMs8r^E!r^fS%$}P=7XFWIO`x&!DluV)LSg>1hN|jsnNoz|o=uMz>PB*-*@M z`rKJ6L~~i~(Adb$vl=I7XWw5l-WU3MqQ$?^r;qoqh0%C25=zF?fTi@q3-%B0$|8E4 z1LuTq;CSB2RoT5NhvgH~?e1x;KarQ{3GM>?)d}Mi@TI)9iQQl?b~L;KN8%MY5sun~ zkv^=sIjw1>eMV%atoTs|Wo(56pC~uo0ud$(_*|oat7o+h#yJu8+9WpPz;sZjq}uT^ z)RH@nV5puu*lEbii#Wi~f^wgze_#u=`+uds{Re4xby|otiwxP2Y@o$(jM{UmQ(OalI(mcN1kd{M_!Ac6On7`c76~aV zNbp@k_4?8iHmHHoCQ`QGztTxKZ@hfchMd8Z4kgn2GrSK);8 zl;FT9e$fdGSi6(goES^{mwfp`mJTQ0fF>^ydEEp%{>vN#{xlupaO5SR>Kst@ zWRWz&y`w(_&hoQ$1s$30Y4T(*1Q<#i!Y#&bMEQxh`;Mh7i+~5H_H2NtXAIm!$`nv~ z#&BBABLH_^rrCMU2$-5NnI>-kEiii`%M*p%&XMI;r-cx7DmU)Y`ywRJzvi?o%mLhM za{%`af|m4jvWDd%Al%x zA%RBB@L2)C_`NbMODmB)QOX44Xs{;eC9J6$jZ+>5(pu+}H9g;i(p3>G%#37D+-?vI zs@%-Ks(!2t)z2xS__;C^KgsUF5wRAkU&*CQ@$(bS;utsS@iU|CC|!;-EwwEU1JvAZ z(W1~rCxVh7YO@nAQh_BFrMUF8O@YVpdw?@Mpv-OsF9LoxxFO8Pn9gBkbxxffXxxks z+z>J@C6)1;LcXaC`8>+&wfo>11T(NT!ErmwbMh)0%PrelR{%!QO|2{13 znI5*W20!K$H(0&9k>`(;5c4;1fL%gXh}o-pgGq#NJA0!yJ=@*z%}02)5f9>1Rc$_v zfPE&QDbs-;%`}Z0V1cOE>Cv*O@!;*gJ)F1eNa$h_Z5Z|8afF#%j=W?)VD0V)tUbeD z-I@)R$H#sgnI4;tbVK)r(?6cmPL$`a@tw!?oZFi39I=a4crk4ENW=Zo$6P@j1M%1h zp@92{$NS7oY#@|ktXeD^CR~;1#BBEr*36cVJpwo>^TYDI2+NIwc(nc&{MY*k|OkO>0BzH`hkFM3HMM6Cj zK`N&o4Z(+nW5k(b8gmYc=AW3QG4ZgRU0=Rz0IB>0<8;C%#w;+0` ziS#y_%A?PX4EgCRKibkR7QLK|O^jYnNvGrnq|&#Y0p>7gfYdGQtX_3GlXxaeB^fjQ zO?i7ui&%7_HH=C{gtCBIYs=4XOQV;)}pXR3dXH}C$nk?9`0RmQ@ zJdJqq$emiiMo_?*1P5H$@JDt&8;PE#*d!}~TgDQhC4tRIGR}I+Se^Gm5fIdqSH>+j zBWx%P^C3s?d5ziGWv4522C2B$T0ov#uRsO|gz7pp6$$~`2n1hpJC9{&i@{vPjIbHp z-go-k0i`^An;H$yD;PFv@>{HIyJ4ve1{qR{pNF&vC* zJ$8xoVg_5@UWnfDTCGU^ZcxZrqq$T9b|zf1Ba-rXrP{#$fmH60#W+p-L@Nxi4Ymh@ zOG*Efy1Gu{4zKEMt{}!#y6VJe5NW*3$i#La(n&z)1C;qCH#5PNVh-I-4$DTS9T>YB zz}^)#VFL<_92{n!uc5%qH8%43MzNRR+lew&u|(zJ!R;h5SvP=SfFSF#{uDY%0u}*6 z^{mXy`I?bklZVkYDWNtvjnH{z)bW58qAzd~839f3#V%~d%9jrao)Cyb)grA3>AfSA zlApOCONR^7p6<*-g%D1ey?MxpGNa;cTB=oiRfwg$_qY{GZL8eh@)gvsBMVLiYa)*A zv_-ip&SUw?0si1b(hS_1*5tE|;$Z^ROo{CdL{3hg;F~?@Kwb)1;H844BgzU?z!E^E zk+MEOVe?!DAVjPh7lwj%bpUbh&hTxufGl4VsULFpkoBQsSvDFM(Om2vqFStE_sDqI z-HeCT0o&;{+q&qSvmjPa0eE#BtbKY8){?ZG5FPsgv`&9FfVvVPp9D^0btGc~qC(vH zIqmj{4HulO_gK1LXsCaL4bO#gp9YC(XRq zE=129ogg^G5h*y2$E7DhE{+RwVL2U;u;%n^eIPdzP%r6HWfS&t;dIU~Tkq^RJz~J< zlt4_9b5wd_vOPDrknr2J3A5+sJcK}OA6=G4nj=rORWJZLoiB|OhwsdMe(XfO4vCQi zWOMa8#^-cIU$QIuVuyX{2A|{RYJyU#9S<|axCrU{)pSSxPuepiOTevVb=)K2TU7@SO@45K#{Eu=?uG>kZ8M~>xV zyv0U4FHMjb?OciRF(cIO*q2v5d37unsWBG2F0Hd=8!c@;YTkO2)<)Ise2Rcr>ir+Z zSiV7+pxpT!LD7RZYFN0xwcpYw8h`YOuoy*wCX5KD1Nzo-I}L#j%HR$hm)Mvp8IoZS&0mJvROWH1W5^mBSEuo2jN$AmqLPSJnYQ!F^{61_FpMF^GZ_ zqM%3)w`1yuR>9W+`0K6ltTq_OKsw|Cq33ZF_Ko^^YgLA8DQk)(O@NyFhNv|Uws-45 zustp1-4FmZv1~YB3!xeh`VK8chLVh?*^w2xdUq%M^ozQr~X&;ybE9@|7}5_pVd+MlE(gnzOiWE4I+V1PRG6c{V#93k+?Jn zguo5API=kf(B*&^W9P?u?fc5l>dV7fUw)3tM%Aft{7*$w$zFS=jgDf+f0<59e|aP> zgY2}20HMJ6;^g$ynl7A*o^oPhT==K zzw(;{OL?x#p68K?AUsc1OKIa%Mn{PcQBph+Mx$w}2GLFpZ3Pv>)CB!MBWO-c($oZ6 zJ})bGdhr<_-6a4+E`n`PTpZtY1b&f@;1{^>eTe3Q?Q?`xqq}4~<79z`q4lt+&MWla zKhUTh_zDf-wfD=5blO)>34lJOx>%>ZV_#y-Tn(_N)c$)u3;(^Jh4-E?fcUP^hkpSf zLE)gkyeMBX*Pq#m&m?i&=cw=S*rSXUy6kCjwT^po5zL`{q2BwKS!>ZZ*@@3YUak{A zPb9$glS_quRMXPx*=Kl#P7DG|xU^2|Z}|rtt1#ptw=*e*Ntgg+BgM4Kn0k;tUr&`}Eqq z&-R6T-$iWazvnyr_owQ+=ij&I@8sxw)#d0knnjza-5wn)470edb!!-k8!FdT)Q2|^ z**yY4@?UNUY70GX*m)%7|GhRL5 zu4r7Fly~jJ-M9bng}dTD40Xqo0ej?RAU05A3J-B;iZACZAZhFecsLU6{#<*oYf=Ue z<=$L3Ofc6bPM%k!;C%gk(MX#MgPV~?f!kD3yrc+}wK>t9F+ukbRTe1~B1D7*0hAYf z%IX$}VvzE8;ieSz5tR7it-o%T&yC5urHfNy=*5T_OBJ2mb=G7btO?29>s5x^m*(YY z1>yXx?>j*r%RVpVkT0pv`0ttE5)XMf*@#2Fh}T>a$l+E_I*&w8%mY5;aEH*jD2xTu zW^v+9qQ!@pU|w2xqniREFKc1@+FvwKJgLK5RE44F%tu0I;5Y#@7xgz*=b}t|&IH;} zc6Y-WFu@oS_xWi^u}VllB2cS84qM($2<$`Vs`8aU0nk3$EA5l^`Uh2l_1i8y^jrwU zM0(hx`mMplTqE+OOIb1{r4Bxu(U3~pxAF*4)JJ8SaL_er zb}G}Fgle^^ect;Z#ee4HN@59DM?k_l%$f5tmXtRKvJQf^etI*C6)W?l=lqx z;Eed|Fq|jmRDA1SVh@bdmnt$$iUTE^P_#z%yysk|UZV-1KJ z;7$1n)rC-)#gVrZ`SQ_4V8{${1GD*P4u&5!f-gce!F2&FyajMqVVxsdw9S&~PuzcV zmRrCKX3JsAJB^`g1*05Ei@;4UCpEleb|AwY^xHjvAg`9-;c2b2pXCPy7mfy{STXZt z3ntrZ%LTB&j;X9*%mtkHe8&n{Auknv?5@}mlZOmU9WuzkLMI(~f|@1rL1-icfRB|e zV#*8IEQ=FL1{OMLVXZjePj;vznaUfPMrv{aJpg{ZT@(OhK;Y*zlm%YUJJa)Ot?=-f z7J4|0kE5O!>*qS8byvfP%TID-qp-1sAEq?scHgmZP4&;mF!@ILsc7awm29&~l5N*3 zy>8EXzQj^8?O_cP9#p?m*sORc!B_n_XH%dfIUi#Q6nr#766K<_NK8pV9z)g~xT%@Y z!NC*<_pHJ*JgYIFXOY$%MOtekwt~%c14jgmw|@)zY%lL@w$uo8X9S9t>rvaTYu-3C zt(NUC?}{{J@bv;vpQ5pUGbMZ3P*MpB$RzPq587_ z<0C)(L>;rE00b!T;kjcEXDq|rM136EK6+GoczV<()U?Av);}2=`D}eKcW^6k!Az%U zK_(S>d}#uE?}^=U<{i+{U^%dYQUX!fb5h>$Ms7VKZ?eu$i-Jpb#4bI)_*)P_)Q$ zOb|=`C5zWs1=^MPQZ1l+mi?=V5Bf_Sm&Y zC2>G)uV)9?N-{Ze(JWg5HOHREjs;hbRx%i*W^uMK8o+RvxGET|t)o|lgQImhNv9I8 z9B6kr4+nl6+^3cx9J zm~Rhsx`%r5PAY4|bUbWqo%734LRiK?uo~{Z1?;}X&y&ShN&9~cifqY_(&Bl;;)HKqDyLN_lnM5j^gE>`3B8M;+o7 zNIGe1lSn{UU?@F}yTb)C)2Z$MddAeCvICz&Vu|;`}_x#nS*j@eRvYu})>M!=! ze0#vmo0Vf9$B|ptXf+Sc!Qx=lE>7kVOL3o&Q$=Vt0fY{W5u@=uvNeiaVsrM=W&5sw z4mK0`a{p99rxd=X;1Z-+DLX?DB%a zkeT_k_1M1pf6P}o)CngSBJKYd<06-190=N~i1R$g&4^mePrE3BT72m_uI zy|7?bF(u%^#t9EMF5m$yysKvF8i-tURll_nBj|s8E82{No{5+Pvo0}*Vz&{R4d@={2rPrBFG`Ec-wp&V;W?z(2B8Uc zZ^HYZA+7M;Dbl)2yt@C7;MI+3-#jgsZ1m>Z8TPecU)?JJ$yT|AaT3H^w`wI(-RGoc;#f1Zp~_QM|$$|Otdg6OXPVqbA`-KhGbN>5;0$rqo+cDQ_rcS=2%C=h)Im=HpbK8CYa2atVMVwy9iDM&=&(rbVgcNOJbmsf#x!h z7mw#yQ)@oIsS#U0FJeOl2|^8`!<-NaDa0B-FEaKtiZAaV7C*Ss^R39|EK$?Jd5 z{|5d{rbe%7rQYAJ9FAs6VAu7Hr4i`mv#B81xi>Mx*@6Q72g3z3Wcd*g);IFvB73rS zkfl4wB!-wo$L#nrEuns9WuJ71EPNK-<=7MN$ftQkpy{f#Sk#h^5V?FE6{U0-6N0Sarm1GY~N=c0< z+mvt2hPv+Y&iKpqR5awE=W9PAP1|FnTrw!Vi)J;C+yOGS7;YBx<$7~_(#$Ez2k z5xWX>3OXHNHQX!@c2Z3c1X`NW^MRq_>WFT6h0!esoId64i-4y-f^OhU528p??@l=jC4!JAVju31E4Luos8PEV@2nB%h7?gK2(R zWb^V8hp_V{EUf)NUpJi>w=lP8wkNOo(YN}!ZjhP^28acxH>Rx^B2b$t^+L0S2&xPosxi^zf4b! zU>#+ZlZlGSO7AJWKb7|c>e%Dc)2Zp{5vOA_<8*Sfze%U0zd0)+bpRY8I(6q|1nD#) zNT(`CvGJ?ttTyH+!@-E1$>v$P#)d4Nm>sX!Y(>-#N9-&hV7-kpLUs=1TY_}*w}$CV zA}X6>z^LRHWEdK+BMi+n0EPtYggHxv{hV~5Av@_DD~O(39q5gUlLcTouSooRUU5{e zv4NyB@1YoSnxQcV=E$9PI?BkM0}a@@2=YzTPOHs%y2RiaB6rI32di9kgNa4Zj+l3v zaXOb3a=pu~wIMnYq;odWEObSb4nO$wrG+Wf$k*`HX;{j!ts;bn8ul9u;W^C+o~sMl z%-M$ToL0x}FaV^6XdVThtBM#}S&0MaiO$bYi^B+FBPr#Bc$)NJn!6C9UA|c!a9YSm zFmvRiNHbO~XhD-t3xxqAA|g`0AFn0L7V+WG0Dcn8pBx-PVp=WV&RYlLPK(c)QuW}` z)#}iK``nV<=vGFJX(;i(-CTzGvZsaE3Kc?9N|jWIBcmb6?MBvd)IEKsfa9~h3Fr$` z=H4R;u<>jS-RP3RR)%3MtGJWaAgW-x{UvuSw zhwKsPUE-WsMmWl&(%QHuVtZs#Z<@BV*$VlRT7jQ8GjBJTCRdDz{0}z@MwrRzutp7c z5pOBv6xP@=V6jd0Aq^oelm%dt4OmiT*GWc*#24b6iSIla_7RPNY?Rq)azeO^9hn>p zv2F{UA%vHd5sVCltGaxC2Mz~C7BW@f5(6?Arlgz}D!c?iIX;{YA<1{lOS2GJ=PH{J zI(6A#I2Bqvz(&F9`%|e}F-u--mx7=vwuCRDZzTAv#+CmnpJh#v!~gJIQ9*?XbCJ+rEqidmBa_jUr|=Vj?`{>;*yKH%B#&N*zH zrubSC2WT2aLP&tH0HxHi`epBxLf>r0n#10Vfsx)?jAU6-lXAY}eyk`KtDY>I8I2b( zEXg`hiTI27J08(1VqW z9Oqqru4@mAjTS2Py$Aa|-s5pl7-Wn;Nl;=CsM6Nf2y0#-Nz((0e3|Cj=`t5_RZ+}y z5yEZ;Nh+VkIEU^t=MdVd;~vW*=Skhhf9C?$DSKI(>tqyLJ7_7U3*L|kJOEhV&WcsW zldd`&aQ*K~{zZ@E|IbBZJj>ti(+t9Yw$kZK^Y+wcC|#Z;*X5isPBCMMTWu+KZ?ZHX z8bXOVxm`lz{`jG~=@Kq*k@R<@dG-lhc8?YVK(Ax<>gqD2dH2FAR_F459-qM|ZepjF zz;zabMRN_DLIYo@L?8RsH}dycpx*%z9Rd5)DrU2)9BQEtiolc3GIo((2J%BSp_y5q z2$K2V-y+;gUFGb*-<#KObyU5&oY8-Un5$F02U$D_`6d1N4jEnYGn@#i33-ulXw!do zmmJMxeF#EU+aEX?YEdNE1@d zLqE+)i+uV}8~2WlL*W6hjYEn(Qxn;hl);B^WjFGDHA8-Vkqgl5;D8v}S8KbQ+VlbB{n5hfw+WfDwoA^c=^%mRs)S=8J&R5j+{PsZN@?O2rN|Ct0V z#4_*$-odyLWEL(Pn;NXeE^9b2V(Wbkm(!19WCCjt1Ekt);tAQ8@+N47iDC_|U-4o=mbivcvL&61ib^ z4FR~_7dmycytGv;khAT;T~@T;e1Ug`BWpI+b^agJ`@X(2=3L)jH2VMl|NTDFur4#Rr%!1obNE6dbElD8{?Hy3|B7_n~~;*cNApP zHNNe=l#Zq>Qdon;Rs|aH5j2e!v!cbUXaTC`12qUuFlug?Go_Og56JPmRA3J^N261m zkFcuRpC{tZA2)h%o1%MTBTwHIpG|$f6wGtrHzU|zNR(j=vxR32Qo%5Hu!~@mQembg| zu{21Fef_cbyN^y(rwa9hy+`o4o~Zib~SH`=^q_8b^!qW zLngXl_;4yIB_r9YRAE6}3-_N0v1(da>MDv_k-D-r0w2W+1S?TUmtBbB?n5~4_!@IX zgrk}-Be!i2u(pZFmfb62f8zjX*I8Swq54Hm*}1)eX=EY-Rvj9{NZL;vSxdy~IQEeP z(?KRKSZv1LOwXk^f>qPOG^+y})^>7N>Kcd`O(UKWOX+m9cZ|6N=2{USMOI+KaU`Z>P2N(H2aWrIG5e6$KMr zM`2rLx{l+~7Aboy&WKh3EymWoEOudD7P~Mn8wlNNS$5YkEJtfoj~Ge2vdV3n@{Y*U z6x78o9RE;Qw>_A9*67TzQ*~=JP3L0H$C-}Qelx?8cO-g7TIdEX%?xv#rskkBC#Dkv zxkh+qJ!g}bDd;R9tXd-x#PHQVpMOaVb)qMylcR@I(kboh=-=8k6lKNW>_?QYnSvha zp_0NQ%nXfe4>CiYOI^DLvvc%BUZ_u>O+)R>rf&RgdNu`Y$WM_29T(PS*MhOxmR7Lg z*K^Zz(sRY_BO)JE7-MS|##)-yBHDw`4{I~Cx2kg}7FwGj(-@m$aMMF?=F6$XP`loY z&DrQ`(PdIobL`-G1r}%fKi_iAd4!?o=L}56JdXB-bp`%N6BS$-oG&h7q-pWv>u7|ulDm$~a7?`Q+?CEzVS7>gInM8)DGs))VSZm|?xv;a?6{(?lz0)&8 zV>@19edqEegLOveNi9H3h38ilZP^kzY_ASe_iLiSGf!UY6G}X1Smz?oR}6Zr@k<;R z(u5y!j@=z)Ug|vHL<*bF2-Qhd814fYna3R=w}@?qTNtl(U6HOUrc$tugKZoE&oIr> z+>4V!u(50a>^VRwfBrm}3V#;qU=@L>di@y%77?vyy^oV!Ygq<=3P?!B^4?5OUPdE7KeL{96*PlXO_ihiQ zz3UhZTA5iuE3Md)4{-VCy zZh-+MvIstlY6=Wv{`sc{@RA+k3h4LI%-?Ex<{@-TDLgtIW~IEtA40+|Zxj=%88crq ztVX#kDH$#{~dN7joj<+)UOc=NZ2FN zAXeCobb|e<*-`lu`Gd|^h)xKJ8VW$D>5aD*4P!fj$N0?hR4s4!h=^cLgyu2%ak#=9 zxI(Guq8m`zkZttDc)xs;;Q-K9?Q~51bzz8iI)JL9DKbMn^(D}

8f#lw;~ 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̭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 iHj?}DMBL*ykB~kP4Yjy{Cf`9t! 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�vb^@|JHVjBR5Ev=(i7qsb%0~l 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�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�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≧6{68omP~E<<9DNcfIIYd=EaN@~aTg!?@0 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%0DQ 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 F{vSQ|TfqPT From 40deb3e6edbd28107e7b554524332200befc2f65 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 5 Apr 2019 16:50:50 -0700 Subject: [PATCH 132/413] fix lstat64; increase num returned by heap size --- lib/emscripten/src/memory.rs | 2 +- lib/emscripten/src/syscalls/mod.rs | 18 ++++++++++++++++++ lib/emscripten/src/syscalls/unix.rs | 19 ------------------- 3 files changed, 19 insertions(+), 20 deletions(-) diff --git a/lib/emscripten/src/memory.rs b/lib/emscripten/src/memory.rs index 16aece81d..deeca7ddb 100644 --- a/lib/emscripten/src/memory.rs +++ b/lib/emscripten/src/memory.rs @@ -20,7 +20,7 @@ pub fn _emscripten_memcpy_big(ctx: &mut Ctx, dest: u32, src: u32, len: u32) -> u pub fn _emscripten_get_heap_size(_ctx: &mut Ctx) -> u32 { debug!("emscripten::_emscripten_get_heap_size",); // TODO: Fix implementation - 162_107_392 + 162_107_392 * 2 } /// emscripten: _emscripten_resize_heap diff --git a/lib/emscripten/src/syscalls/mod.rs b/lib/emscripten/src/syscalls/mod.rs index 37f6e2f51..645b48a81 100644 --- a/lib/emscripten/src/syscalls/mod.rs +++ b/lib/emscripten/src/syscalls/mod.rs @@ -418,6 +418,24 @@ pub fn ___syscall197(ctx: &mut Ctx, _which: c_int, mut varargs: VarArgs) -> c_in 0 } +/// lstat64 +pub fn ___syscall196(ctx: &mut Ctx, _which: i32, mut varargs: VarArgs) -> i32 { + debug!("emscripten::___syscall196 (lstat64) {}", _which); + let path_ptr: c_int = varargs.get(ctx); + let buf_ptr: u32 = varargs.get(ctx); + let path = emscripten_memory_pointer!(ctx.memory(0), path_ptr) as *const i8; + unsafe { + let mut stat: stat = std::mem::zeroed(); + let ret = lstat64(path, &mut stat as *mut stat as *mut c_void); + debug!("ret: {}", ret); + if ret != 0 { + return ret; + } + copy_stat_into_wasm(ctx, buf_ptr, &stat); + } + 0 +} + pub fn ___syscall220(_ctx: &mut Ctx, _one: i32, _two: i32) -> i32 { debug!("emscripten::___syscall220"); -1 diff --git a/lib/emscripten/src/syscalls/unix.rs b/lib/emscripten/src/syscalls/unix.rs index c8fa04101..a4bac74c6 100644 --- a/lib/emscripten/src/syscalls/unix.rs +++ b/lib/emscripten/src/syscalls/unix.rs @@ -759,25 +759,6 @@ pub fn ___syscall122(ctx: &mut Ctx, _which: c_int, mut varargs: VarArgs) -> c_in unsafe { uname(buf_addr) } } -/// lstat64 -pub fn ___syscall196(ctx: &mut Ctx, _which: i32, mut varargs: VarArgs) -> i32 { - debug!("emscripten::___syscall196 (lstat64) {}", _which); - let path_ptr: c_int = varargs.get(ctx); - let buf_ptr: c_int = varargs.get(ctx); - let path = emscripten_memory_pointer!(ctx.memory(0), path_ptr) as *const c_char; - let buf = emscripten_memory_pointer!(ctx.memory(0), buf_ptr) as *mut c_void; - let result = unsafe { lstat64(path, buf as _) }; - debug!( - "=> path: {}, buf: {} = fd: {}\npath: {}\nlast os error: {}", - path_ptr, - buf_ptr, - result, - unsafe { std::ffi::CStr::from_ptr(path).to_str().unwrap() }, - Error::last_os_error(), - ); - result -} - /// fallocate pub fn ___syscall324(ctx: &mut Ctx, _which: c_int, mut varargs: VarArgs) -> c_int { debug!("emscripten::___syscall324 (fallocate) {}", _which); From 09a207364bc59f8e4e700ebd84647b5b8115c8a6 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 5 Apr 2019 17:21:40 -0700 Subject: [PATCH 133/413] return total memory size for get_heap_size --- lib/emscripten/src/memory.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/emscripten/src/memory.rs b/lib/emscripten/src/memory.rs index deeca7ddb..9fccbdde4 100644 --- a/lib/emscripten/src/memory.rs +++ b/lib/emscripten/src/memory.rs @@ -17,10 +17,9 @@ pub fn _emscripten_memcpy_big(ctx: &mut Ctx, dest: u32, src: u32, len: u32) -> u } /// emscripten: _emscripten_get_heap_size -pub fn _emscripten_get_heap_size(_ctx: &mut Ctx) -> u32 { +pub fn _emscripten_get_heap_size(ctx: &mut Ctx) -> u32 { debug!("emscripten::_emscripten_get_heap_size",); - // TODO: Fix implementation - 162_107_392 * 2 + ctx.memory(0).size().bytes().0 as u32 } /// emscripten: _emscripten_resize_heap From d0fe50679382c5d22e4a98ef9150a0c445368b74 Mon Sep 17 00:00:00 2001 From: Syrus Date: Fri, 5 Apr 2019 22:26:49 -0700 Subject: [PATCH 134/413] Added emscripten dynVall_vj --- lib/emscripten/src/emscripten_target.rs | 8 ++++++++ lib/emscripten/src/lib.rs | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/lib/emscripten/src/emscripten_target.rs b/lib/emscripten/src/emscripten_target.rs index a4812a596..2e31d5992 100644 --- a/lib/emscripten/src/emscripten_target.rs +++ b/lib/emscripten/src/emscripten_target.rs @@ -623,6 +623,14 @@ pub fn invoke_viijj( panic!("dyn_call_viijj is set to None"); } } +pub fn invoke_vj(ctx: &mut Ctx, index: i32, a1: i32, a2: i32) { + debug!("emscripten::invoke_vj"); + if let Some(dyn_call_vj) = &get_emscripten_data(ctx).dyn_call_vj { + dyn_call_vj.call(index, a1, a2).unwrap(); + } else { + panic!("dyn_call_vj is set to None"); + } +} pub fn invoke_vij(ctx: &mut Ctx, index: i32, a1: i32, a2: i32, a3: i32) { debug!("emscripten::invoke_vij"); if let Some(dyn_call_vij) = &get_emscripten_data(ctx).dyn_call_vij { diff --git a/lib/emscripten/src/lib.rs b/lib/emscripten/src/lib.rs index 1d88ba7a8..09493c813 100644 --- a/lib/emscripten/src/lib.rs +++ b/lib/emscripten/src/lib.rs @@ -120,6 +120,7 @@ pub struct EmscriptenData<'a> { pub dyn_call_viiji: Option>, pub dyn_call_viijiii: Option>, pub dyn_call_viijj: Option>, + pub dyn_call_vj: Option>, pub dyn_call_vij: Option>, pub dyn_call_viji: Option>, pub dyn_call_vijiii: Option>, @@ -178,6 +179,7 @@ impl<'a> EmscriptenData<'a> { let dyn_call_viiji = instance.func("dynCall_viiji").ok(); let dyn_call_viijiii = instance.func("dynCall_viijiii").ok(); let dyn_call_viijj = instance.func("dynCall_viijj").ok(); + let dyn_call_vj = instance.func("dynCall_vj").ok(); let dyn_call_vij = instance.func("dynCall_vij").ok(); let dyn_call_viji = instance.func("dynCall_viji").ok(); let dyn_call_vijiii = instance.func("dynCall_vijiii").ok(); @@ -229,6 +231,7 @@ impl<'a> EmscriptenData<'a> { dyn_call_viiji, dyn_call_viijiii, dyn_call_viijj, + dyn_call_vj, dyn_call_vij, dyn_call_viji, dyn_call_vijiii, @@ -667,6 +670,7 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject "invoke_iiii" => func!(crate::emscripten_target::invoke_iiii), "invoke_v" => func!(crate::emscripten_target::invoke_v), "invoke_vi" => func!(crate::emscripten_target::invoke_vi), + "invoke_vj" => func!(crate::emscripten_target::invoke_vj), "invoke_vii" => func!(crate::emscripten_target::invoke_vii), "invoke_viii" => func!(crate::emscripten_target::invoke_viii), "invoke_viiii" => func!(crate::emscripten_target::invoke_viiii), From 1193d561e26c618cc4642d5bbf26491a36a4ae75 Mon Sep 17 00:00:00 2001 From: Syrus Date: Fri, 5 Apr 2019 23:47:59 -0700 Subject: [PATCH 135/413] Improved debug! macro with timing --- lib/runtime-core/src/macros.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/runtime-core/src/macros.rs b/lib/runtime-core/src/macros.rs index 0fb1c3fc9..edda29366 100644 --- a/lib/runtime-core/src/macros.rs +++ b/lib/runtime-core/src/macros.rs @@ -1,8 +1,14 @@ #[macro_export] #[cfg(feature = "debug")] macro_rules! debug { - ($fmt:expr) => (println!(concat!("wasmer-runtime(:{})::", $fmt), line!())); - ($fmt:expr, $($arg:tt)*) => (println!(concat!("wasmer-runtime(:{})::", $fmt, "\n"), line!(), $($arg)*)); + ($fmt:expr) => (println!(concat!("[{}] wasmer-runtime(:{}) ", $fmt), { + let time = ::std::time::SystemTime::now().duration_since(::std::time::UNIX_EPOCH).expect("Can't get time"); + format!("{}.{:03}", time.as_secs(), time.subsec_millis()) + }, line!())); + ($fmt:expr, $($arg:tt)*) => (println!(concat!("[{}] wasmer-runtime(:{}) ", $fmt, "\n"), { + let time = ::std::time::SystemTime::now().duration_since(::std::time::UNIX_EPOCH).expect("Can't get time"); + format!("{}.{:03}", time.as_secs(), time.subsec_millis()) + }, line!(), $($arg)*)); } #[macro_export] From ea58e0051b2555817ee63ef388c0523461b26f05 Mon Sep 17 00:00:00 2001 From: Syrus Date: Fri, 5 Apr 2019 23:48:12 -0700 Subject: [PATCH 136/413] Commented zbox until speed is fixed --- lib/wasi/src/state.rs | 120 +++++++++++++++++++++++------------------- 1 file changed, 65 insertions(+), 55 deletions(-) diff --git a/lib/wasi/src/state.rs b/lib/wasi/src/state.rs index 5b42ba1c7..936967375 100644 --- a/lib/wasi/src/state.rs +++ b/lib/wasi/src/state.rs @@ -10,6 +10,7 @@ use std::{ io::{self, Write}, time::SystemTime, }; +use wasmer_runtime_core::debug; use zbox::{init_env as zbox_init_env, File, FileType, OpenOptions, Repo, RepoOpener}; pub const MAX_SYMLINKS: usize = 100; @@ -49,7 +50,7 @@ pub struct Fd { } pub struct WasiFs { - pub repo: Repo, + // pub repo: Repo, pub name_map: HashMap, pub inodes: Arena, pub fd_map: HashMap, @@ -58,19 +59,27 @@ pub struct WasiFs { } impl WasiFs { + pub fn new() -> Result { + debug!("wasi::fs::init"); zbox_init_env(); - Ok(Self { - repo: RepoOpener::new() - .create(true) - .open("mem://wasmer-test-fs", "") - .map_err(|e| e.to_string())?, + debug!("wasi::fs::repo"); + // let repo = RepoOpener::new() + // .create(true) + // .open("mem://wasmer-test-fs", "") + // .map_err(|e| e.to_string())?; + debug!("wasi::fs::inodes"); + let inodes = Arena::new(); + let res = Ok(Self { + // repo: repo, name_map: HashMap::new(), - inodes: Arena::new(), + inodes: inodes, fd_map: HashMap::new(), next_fd: Cell::new(3), inode_counter: Cell::new(1000), - }) + }); + debug!("wasi::fs::end"); + res } #[allow(dead_code)] @@ -78,56 +87,57 @@ impl WasiFs { Some(match self.name_map.entry(path.to_string()) { Entry::Occupied(o) => *o.get(), Entry::Vacant(v) => { - let file = if let Ok(file) = OpenOptions::new() - .read(true) - .write(true) - .create(false) - .open(&mut self.repo, path) - { - file - } else { - return None; - }; + return None; + // let file = if let Ok(file) = OpenOptions::new() + // .read(true) + // .write(true) + // .create(false) + // .open(&mut self.repo, path) + // { + // file + // } else { + // return None; + // }; - let metadata = file.metadata().unwrap(); - let inode_index = { - let index = self.inode_counter.get(); - self.inode_counter.replace(index + 1) - }; + // let metadata = file.metadata().unwrap(); + // let inode_index = { + // let index = self.inode_counter.get(); + // self.inode_counter.replace(index + 1) + // }; - let systime_to_nanos = |systime: SystemTime| { - let duration = systime - .duration_since(SystemTime::UNIX_EPOCH) - .expect("should always be after unix epoch"); - duration.as_nanos() as u64 - }; + // let systime_to_nanos = |systime: SystemTime| { + // let duration = systime + // .duration_since(SystemTime::UNIX_EPOCH) + // .expect("should always be after unix epoch"); + // duration.as_nanos() as u64 + // }; - let inode = self.inodes.insert(InodeVal { - stat: __wasi_filestat_t { - st_dev: 0, - st_ino: inode_index, - st_filetype: match metadata.file_type() { - FileType::File => __WASI_FILETYPE_REGULAR_FILE, - FileType::Dir => __WASI_FILETYPE_DIRECTORY, - }, - st_nlink: 0, - st_size: metadata.content_len() as u64, - st_atim: systime_to_nanos(SystemTime::now()), - st_mtim: systime_to_nanos(metadata.modified_at()), - st_ctim: systime_to_nanos(metadata.created_at()), - }, - is_preopened: false, - name: path.to_string(), - kind: match metadata.file_type() { - FileType::File => Kind::File { handle: file }, - FileType::Dir => Kind::Dir { - handle: file, - entries: HashMap::new(), - }, - }, - }); - v.insert(inode); - inode + // let inode = self.inodes.insert(InodeVal { + // stat: __wasi_filestat_t { + // st_dev: 0, + // st_ino: inode_index, + // st_filetype: match metadata.file_type() { + // FileType::File => __WASI_FILETYPE_REGULAR_FILE, + // FileType::Dir => __WASI_FILETYPE_DIRECTORY, + // }, + // st_nlink: 0, + // st_size: metadata.content_len() as u64, + // st_atim: systime_to_nanos(SystemTime::now()), + // st_mtim: systime_to_nanos(metadata.modified_at()), + // st_ctim: systime_to_nanos(metadata.created_at()), + // }, + // is_preopened: false, + // name: path.to_string(), + // kind: match metadata.file_type() { + // FileType::File => Kind::File { handle: file }, + // FileType::Dir => Kind::Dir { + // handle: file, + // entries: HashMap::new(), + // }, + // }, + // }); + // v.insert(inode); + // inode } }) } From a4e1051c250df83dad228610df8b5568878f6f5b Mon Sep 17 00:00:00 2001 From: Syrus Date: Fri, 5 Apr 2019 23:55:04 -0700 Subject: [PATCH 137/413] Fix format --- lib/wasi/src/state.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/wasi/src/state.rs b/lib/wasi/src/state.rs index 936967375..8e186011d 100644 --- a/lib/wasi/src/state.rs +++ b/lib/wasi/src/state.rs @@ -59,7 +59,6 @@ pub struct WasiFs { } impl WasiFs { - pub fn new() -> Result { debug!("wasi::fs::init"); zbox_init_env(); From e5fc3b49b8f841963603043eb671e5d00705c7a2 Mon Sep 17 00:00:00 2001 From: Syrus Date: Sat, 6 Apr 2019 10:29:15 -0700 Subject: [PATCH 138/413] Create releases with dynasm --- Cargo.lock | 2 ++ Cargo.toml | 4 ++-- Makefile | 9 +++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ab6b3e2c8..5f111b7b8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,3 +1,5 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. [[package]] name = "MacTypes-sys" version = "2.1.0" diff --git a/Cargo.toml b/Cargo.toml index 419595e14..244581f8d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -44,7 +44,7 @@ default = ["fast-tests", "wasi"] debug = ["wasmer-clif-backend/debug", "wasmer-runtime-core/debug"] # This feature will allow cargo test to run much faster fast-tests = [] -llvm = ["wasmer-llvm-backend"] -dynasm = ["wasmer-dynasm-backend"] +llvm = ["wasmer-llvm-backend", "wasmer-runtime/llvm"] +dynasm = ["wasmer-dynasm-backend", "wasmer-runtime/dynasm"] wasi = ["wasmer-wasi"] vfs = ["wasmer-runtime-abi"] diff --git a/Makefile b/Makefile index 19ce942d1..947bb2e94 100644 --- a/Makefile +++ b/Makefile @@ -51,6 +51,15 @@ test-emscripten: test-emscripten-nightly: cargo test --manifest-path lib/emscripten/Cargo.toml --features dynasm -- --test-threads=1 $(runargs) +dynasm-debug-release: + cargo +nightly build --features "dynasm debug" --release + +dynasm-release: + cargo +nightly build --features "dynasm" --release + +dynasm-build: + cargo +nightly build --features "dynasm debug" + release: # If you are in OS-X, you will need mingw-w64 for cross compiling to windows # brew install mingw-w64 From 3b11da91c5fcb6d4b33d522a73d6a3c8a6e24cd5 Mon Sep 17 00:00:00 2001 From: Syrus Date: Sat, 6 Apr 2019 14:31:39 -0700 Subject: [PATCH 139/413] Make DynFunc public --- lib/runtime-core/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/runtime-core/src/lib.rs b/lib/runtime-core/src/lib.rs index 7042983d2..2dc1dc3b4 100644 --- a/lib/runtime-core/src/lib.rs +++ b/lib/runtime-core/src/lib.rs @@ -36,7 +36,7 @@ pub use self::error::Result; #[doc(inline)] pub use self::import::IsExport; #[doc(inline)] -pub use self::instance::Instance; +pub use self::instance::{Instance, DynFunc}; #[doc(inline)] pub use self::module::Module; #[doc(inline)] From dc3c2227dc4bbb3fb04cade67f8e33d4a49f04c5 Mon Sep 17 00:00:00 2001 From: Syrus Date: Sat, 6 Apr 2019 14:32:21 -0700 Subject: [PATCH 140/413] Addd stack_save, stack_restore and set_threw for longjmp --- lib/emscripten/src/jmp.rs | 12 ++++++++++++ lib/emscripten/src/lib.rs | 15 ++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/lib/emscripten/src/jmp.rs b/lib/emscripten/src/jmp.rs index c5b54f02b..aa9367470 100644 --- a/lib/emscripten/src/jmp.rs +++ b/lib/emscripten/src/jmp.rs @@ -37,6 +37,18 @@ pub fn __longjmp(ctx: &mut Ctx, env_addr: u32, val: c_int) { }; } +/// _longjmp +pub fn _longjmp(ctx: &mut Ctx, env_addr: i32, val: c_int) { + let val = if val == 0 { + 1 + } else { + val + }; + get_emscripten_data(ctx).set_threw.as_ref().expect("set_threw is None").call(env_addr, val).expect("set_threw failed to call"); + panic!("longjmp"); +} + + extern "C" { fn setjmp(env: *mut c_void) -> c_int; fn longjmp(env: *mut c_void, val: c_int) -> !; diff --git a/lib/emscripten/src/lib.rs b/lib/emscripten/src/lib.rs index 09493c813..1ae84c82d 100644 --- a/lib/emscripten/src/lib.rs +++ b/lib/emscripten/src/lib.rs @@ -127,6 +127,10 @@ pub struct EmscriptenData<'a> { pub dyn_call_vijj: Option>, pub dyn_call_viidii: Option>, pub temp_ret_0: i32, + + pub stack_save: Option>, + pub stack_restore: Option>, + pub set_threw: Option>, } impl<'a> EmscriptenData<'a> { @@ -186,6 +190,10 @@ impl<'a> EmscriptenData<'a> { let dyn_call_vijj = instance.func("dynCall_vijj").ok(); let dyn_call_viidii = instance.func("dynCall_viidii").ok(); + let stack_save = instance.func("stackSave").ok(); + let stack_restore = instance.func("stackRestore").ok(); + let set_threw = instance.func("_setThrew").ok(); + EmscriptenData { malloc, free, @@ -238,6 +246,10 @@ impl<'a> EmscriptenData<'a> { dyn_call_vijj, dyn_call_viidii, temp_ret_0: 0, + + stack_save, + stack_restore, + set_threw } } } @@ -650,7 +662,8 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject // Jump "__setjmp" => func!(crate::jmp::__setjmp), "__longjmp" => func!(crate::jmp::__longjmp), - "_longjmp" => func!(crate::jmp::__longjmp), + "_longjmp" => func!(crate::jmp::_longjmp), + "_emscripten_longjmp" => func!(crate::jmp::_longjmp), // Bitwise "_llvm_bswap_i64" => func!(crate::bitwise::_llvm_bswap_i64), From 3fcc50201538505870f1dae38e4879225fe99fe0 Mon Sep 17 00:00:00 2001 From: Syrus Date: Sat, 6 Apr 2019 17:16:51 -0700 Subject: [PATCH 141/413] Added temporal code for emscripten target --- lib/emscripten/src/emscripten_target.rs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/lib/emscripten/src/emscripten_target.rs b/lib/emscripten/src/emscripten_target.rs index 2e31d5992..71c2d2d96 100644 --- a/lib/emscripten/src/emscripten_target.rs +++ b/lib/emscripten/src/emscripten_target.rs @@ -38,6 +38,16 @@ pub fn invoke_iii(ctx: &mut Ctx, index: i32, a1: i32, a2: i32) -> i32 { } else { panic!("dyn_call_iii is set to None"); } + // let sp = get_emscripten_data(ctx).stack_save.as_ref().expect("stack_save is None").call().expect("stack_save call failed"); + // let result = get_emscripten_data(ctx).dyn_call_iii.as_ref().expect("dyn_call_iii is None").call(index, a1, a2); + // match result { + // Ok(v) => v, + // Err(e) => { + // get_emscripten_data(ctx).stack_restore.as_ref().expect("stack_restore is None").call(sp).expect("stack_restore call failed"); + // get_emscripten_data(ctx).set_threw.as_ref().expect("set_threw is None").call(1, 0).expect("set_threw call failed"); + // 0 + // } + // } } pub fn invoke_iiii(ctx: &mut Ctx, index: i32, a1: i32, a2: i32, a3: i32) -> i32 { debug!("emscripten::invoke_iiii"); @@ -54,6 +64,20 @@ pub fn invoke_v(ctx: &mut Ctx, index: i32) { } else { panic!("dyn_call_v is set to None"); } + // let sp = get_emscripten_data(ctx).stack_save.as_ref().expect("stack_save is None").call().expect("stack_save call failed"); + // debug!("emscripten::invoke_v pre call"); + // let func = get_emscripten_data(ctx).dyn_call_v.as_ref().expect("dyn_call_v is None"); + // let result = func.call(index); + // debug!("emscripten::invoke_v post2 call"); + + // match result { + // Ok(v) => { + // }, + // Err(e) => { + // get_emscripten_data(ctx).stack_restore.as_ref().expect("stack_restore is None").call(sp).expect("stack_restore call failed"); + // get_emscripten_data(ctx).set_threw.as_ref().expect("set_threw is None").call(1, 0).expect("set_threw call failed"); + // } + // } } pub fn invoke_vi(ctx: &mut Ctx, index: i32, a1: i32) { debug!("emscripten::invoke_vi"); From 29d93aee2d90ad428cf416e8d712599bad5fb7f8 Mon Sep 17 00:00:00 2001 From: losfair Date: Sun, 7 Apr 2019 17:19:23 +0800 Subject: [PATCH 142/413] Indirect calls. --- lib/dynasm-backend/src/codegen_x64.rs | 68 +++++++++++++++++++++++++-- lib/dynasm-backend/src/emitter_x64.rs | 4 ++ 2 files changed, 68 insertions(+), 4 deletions(-) diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index a087918ba..66447fec8 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -17,7 +17,7 @@ use wasmer_runtime_core::{ structures::{Map, TypedIndex}, types::{ FuncIndex, FuncSig, ImportedMemoryIndex, LocalFuncIndex, LocalGlobalIndex, - LocalMemoryIndex, LocalOrImport, MemoryIndex, SigIndex, Type, Value, + LocalMemoryIndex, LocalOrImport, MemoryIndex, SigIndex, Type, Value, TableIndex, }, units::Pages, vm::{self, ImportBacking, LocalGlobal, LocalMemory, LocalTable}, @@ -840,6 +840,7 @@ impl X64FunctionCode { value_stack.push((ret, LocalOrTemp::Temp)); } + // This function must not use any temporary register before `cb` is called. fn emit_call_sysv, F: FnOnce(&mut Assembler)>(a: &mut Assembler, m: &mut Machine, cb: F, params: I) { let params: Vec<_> = params.collect(); @@ -1324,9 +1325,68 @@ impl FunctionCodeGenerator for X64FunctionCode { self.machine.release_locations_only_stack(a, &released); - let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; - self.value_stack.push((ret, LocalOrTemp::Temp)); - a.emit_mov(Size::S64, Location::GPR(GPR::RAX), ret); + if return_types.len() > 0 { + let ret = self.machine.acquire_locations(a, &[return_types[0]], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + a.emit_mov(Size::S64, Location::GPR(GPR::RAX), ret); + } + } + Operator::CallIndirect { index, table_index } => { + assert_eq!(table_index, 0); + let sig = self.signatures.get(SigIndex::new(index as usize)).unwrap(); + let param_types: Vec = + sig.params().iter().cloned().map(type_to_wp_type).collect(); + let return_types: Vec = + sig.returns().iter().cloned().map(type_to_wp_type).collect(); + + let func_index = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + + let params: Vec<_> = self.value_stack.drain(self.value_stack.len() - param_types.len()..).collect(); + let released: Vec = params.iter() + .filter(|&&(_, lot)| lot == LocalOrTemp::Temp) + .map(|&(x, _)| x) + .collect(); + self.machine.release_locations_only_regs(&released); + + let table_base = self.machine.acquire_temp_gpr().unwrap(); + let table_count = self.machine.acquire_temp_gpr().unwrap(); + + a.emit_mov( + Size::S64, + Location::Memory( + Machine::get_vmctx_reg(), + match TableIndex::new(0).local_or_import(module_info) { + LocalOrImport::Local(_) => vm::Ctx::offset_tables(), + LocalOrImport::Import(_) => vm::Ctx::offset_imported_tables(), + } as i32 + ), + Location::GPR(table_base), + ); + a.emit_mov(Size::S64, Location::Memory(table_base, 0), Location::GPR(table_base)); + a.emit_mov(Size::S32, Location::Memory(table_base, LocalTable::offset_count() as i32), Location::GPR(table_count)); + a.emit_mov(Size::S64, Location::Memory(table_base, LocalTable::offset_base() as i32), Location::GPR(table_base)); + a.emit_cmp(Size::S32, func_index, Location::GPR(table_count)); + a.emit_conditional_trap(Condition::BelowEqual); + a.emit_mov(Size::S64, func_index, Location::GPR(table_count)); + a.emit_imul_imm32_gpr64(vm::Anyfunc::size() as u32, table_count); + a.emit_add(Size::S64, Location::GPR(table_base), Location::GPR(table_count)); + a.emit_cmp(Size::S32, Location::Imm32(index), Location::Memory(table_count, (vm::Anyfunc::offset_sig_id() as usize) as i32)); + a.emit_conditional_trap(Condition::NotEqual); + + self.machine.release_temp_gpr(table_count); + self.machine.release_temp_gpr(table_base); + + Self::emit_call_sysv(a, &mut self.machine, |a| { + a.emit_call_location(Location::Memory(table_count, (vm::Anyfunc::offset_func() as usize) as i32)); + }, params.iter().map(|&(x, _)| x)); + + self.machine.release_locations_only_stack(a, &released); + + if return_types.len() > 0 { + let ret = self.machine.acquire_locations(a, &[return_types[0]], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + a.emit_mov(Size::S64, Location::GPR(GPR::RAX), ret); + } } Operator::If { ty } => { let label_end = a.get_label(); diff --git a/lib/dynasm-backend/src/emitter_x64.rs b/lib/dynasm-backend/src/emitter_x64.rs index 44977340c..8ef1d1ad1 100644 --- a/lib/dynasm-backend/src/emitter_x64.rs +++ b/lib/dynasm-backend/src/emitter_x64.rs @@ -91,6 +91,7 @@ pub trait Emitter { fn emit_add(&mut self, sz: Size, src: Location, dst: Location); fn emit_sub(&mut self, sz: Size, src: Location, dst: Location); fn emit_imul(&mut self, sz: Size, src: Location, dst: Location); + fn emit_imul_imm32_gpr64(&mut self, src: u32, dst: GPR); fn emit_div(&mut self, sz: Size, divisor: Location); fn emit_idiv(&mut self, sz: Size, divisor: Location); fn emit_shl(&mut self, sz: Size, src: Location, dst: Location); @@ -462,6 +463,9 @@ impl Emitter for Assembler { binop_mem_gpr!(imul, self, sz, src, dst, {unreachable!()}) }); } + fn emit_imul_imm32_gpr64(&mut self, src: u32, dst: GPR) { + dynasm!(self ; imul Rq(dst as u8), Rq(dst as u8), src as i32); + } fn emit_div(&mut self, sz: Size, divisor: Location) { unop_gpr_or_mem!(div, self, sz, divisor, { unreachable!() }); } From 154f7f8fd32ad2f1489d3fd1191247aadd4edbd6 Mon Sep 17 00:00:00 2001 From: losfair Date: Mon, 8 Apr 2019 17:47:41 +0800 Subject: [PATCH 143/413] BrTable, 64-bit memory operations and bug fixes. --- lib/dynasm-backend/src/codegen_x64.rs | 214 ++++++++++++++++++++++++-- lib/dynasm-backend/src/emitter_x64.rs | 9 ++ 2 files changed, 211 insertions(+), 12 deletions(-) diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index 66447fec8..9ed103991 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -227,13 +227,15 @@ impl ProtectedCaller for X64ExecutionContext { } }).collect(); let ret = unsafe { - CONSTRUCT_STACK_AND_CALL_WASM( - buffer.as_ptr() as *const u8, - buffer.as_ptr().offset(buffer.len() as isize) as *const u8, - _vmctx, - ptr as _, - ) - }; + protect_unix::call_protected(|| { + CONSTRUCT_STACK_AND_CALL_WASM( + buffer.as_ptr() as *const u8, + buffer.as_ptr().offset(buffer.len() as isize) as *const u8, + _vmctx, + ptr as _, + ) + }) + }?; Ok(if let Some(ty) = return_ty { vec![match ty { WpType::I32 => Value::I32(ret as i32), @@ -523,6 +525,7 @@ impl X64FunctionCode { (_, Location::Imm32(_)) | (_, Location::Imm64(_)) => RelaxMode::DstToGPR, (Location::Imm64(_), Location::Memory(_, _)) => RelaxMode::SrcToGPR, (Location::Imm64(_), Location::GPR(_)) if (op as *const u8 != Assembler::emit_mov as *const u8) => RelaxMode::SrcToGPR, + _ if (op as *const u8 == Assembler::emit_imul as *const u8) => RelaxMode::BothToGPR, // TODO: optimize this _ => RelaxMode::Direct, }; @@ -545,6 +548,12 @@ impl X64FunctionCode { a.emit_mov(sz, src, Location::GPR(temp_src)); a.emit_mov(sz, dst, Location::GPR(temp_dst)); op(a, sz, Location::GPR(temp_src), Location::GPR(temp_dst)); + match dst { + Location::Memory(_, _) | Location::GPR(_) => { + a.emit_mov(sz, Location::GPR(temp_dst), dst); + } + _ => {} + } m.release_temp_gpr(temp_dst); m.release_temp_gpr(temp_src); }, @@ -1017,6 +1026,7 @@ impl FunctionCodeGenerator for X64FunctionCode { } fn feed_opcode(&mut self, op: Operator, module_info: &ModuleInfo) -> Result<(), CodegenError> { + //println!("{:?} {}", op, self.value_stack.len()); let was_unreachable; if self.unreachable_depth > 0 { @@ -1658,6 +1668,140 @@ impl FunctionCodeGenerator for X64FunctionCode { ); }); } + Operator::I64Load { memarg } => { + let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + + Self::emit_memory_op(module_info, a, &mut self.machine, target, memarg.offset as usize, 8, |a, m, addr| { + Self::emit_relaxed_binop( + a, m, Assembler::emit_mov, + Size::S64, Location::Memory(addr, 0), ret, + ); + }); + } + Operator::I64Load8U { memarg } => { + let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + + Self::emit_memory_op(module_info, a, &mut self.machine, target, memarg.offset as usize, 1, |a, m, addr| { + Self::emit_relaxed_zx_sx( + a, m, Assembler::emit_movzx, + Size::S8, Location::Memory(addr, 0), Size::S64, ret, + ); + }); + } + Operator::I64Load8S { memarg } => { + let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + + Self::emit_memory_op(module_info, a, &mut self.machine, target, memarg.offset as usize, 1, |a, m, addr| { + Self::emit_relaxed_zx_sx( + a, m, Assembler::emit_movsx, + Size::S8, Location::Memory(addr, 0), Size::S64, ret, + ); + }); + } + Operator::I64Load16U { memarg } => { + let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + + Self::emit_memory_op(module_info, a, &mut self.machine, target, memarg.offset as usize, 2, |a, m, addr| { + Self::emit_relaxed_zx_sx( + a, m, Assembler::emit_movzx, + Size::S16, Location::Memory(addr, 0), Size::S64, ret, + ); + }); + } + Operator::I64Load16S { memarg } => { + let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + + Self::emit_memory_op(module_info, a, &mut self.machine, target, memarg.offset as usize, 2, |a, m, addr| { + Self::emit_relaxed_zx_sx( + a, m, Assembler::emit_movsx, + Size::S16, Location::Memory(addr, 0), Size::S64, ret, + ); + }); + } + Operator::I64Load32U { memarg } => { + let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + + Self::emit_memory_op(module_info, a, &mut self.machine, target, memarg.offset as usize, 4, |a, m, addr| { + match ret { + Location::GPR(_) => {}, + _ => { + a.emit_mov(Size::S64, Location::Imm64(0), ret); + } + } + Self::emit_relaxed_binop( + a, m, Assembler::emit_mov, + Size::S32, Location::Memory(addr, 0), ret, + ); + }); + } + Operator::I64Load32S { memarg } => { + let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + + Self::emit_memory_op(module_info, a, &mut self.machine, target, memarg.offset as usize, 4, |a, m, addr| { + Self::emit_relaxed_zx_sx( + a, m, Assembler::emit_movsx, + Size::S32, Location::Memory(addr, 0), Size::S64, ret, + ); + }); + } + Operator::I64Store { memarg } => { + let target_value = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target_addr = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + + Self::emit_memory_op(module_info, a, &mut self.machine, target_addr, memarg.offset as usize, 8, |a, m, addr| { + Self::emit_relaxed_binop( + a, m, Assembler::emit_mov, + Size::S64, target_value, Location::Memory(addr, 0), + ); + }); + } + Operator::I64Store8 { memarg } => { + let target_value = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target_addr = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + + Self::emit_memory_op(module_info, a, &mut self.machine, target_addr, memarg.offset as usize, 1, |a, m, addr| { + Self::emit_relaxed_binop( + a, m, Assembler::emit_mov, + Size::S8, target_value, Location::Memory(addr, 0), + ); + }); + } + Operator::I64Store16 { memarg } => { + let target_value = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target_addr = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + + Self::emit_memory_op(module_info, a, &mut self.machine, target_addr, memarg.offset as usize, 2, |a, m, addr| { + Self::emit_relaxed_binop( + a, m, Assembler::emit_mov, + Size::S16, target_value, Location::Memory(addr, 0), + ); + }); + } + Operator::I64Store32 { memarg } => { + let target_value = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target_addr = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + + Self::emit_memory_op(module_info, a, &mut self.machine, target_addr, memarg.offset as usize, 4, |a, m, addr| { + Self::emit_relaxed_binop( + a, m, Assembler::emit_mov, + Size::S32, target_value, Location::Memory(addr, 0), + ); + }); + } Operator::Unreachable => { a.emit_ud2(); self.unreachable_depth = 1; @@ -1675,11 +1819,11 @@ impl FunctionCodeGenerator for X64FunctionCode { } else { false }; - let released: Vec = self.value_stack.drain(frame.value_stack_depth..) - .filter(|&(_, lot)| lot == LocalOrTemp::Temp) - .map(|(x, _)| x) + let released: Vec = self.value_stack[frame.value_stack_depth..].iter() + .filter(|&&(_, lot)| lot == LocalOrTemp::Temp) + .map(|&(x, _)| x) .collect(); - self.machine.release_locations(a, &released); + self.machine.release_locations_keep_state(a, &released); a.emit_jmp(Condition::None, frame.label); self.unreachable_depth = 1; } @@ -1707,7 +1851,10 @@ impl FunctionCodeGenerator for X64FunctionCode { Operator::BrIf { relative_depth }=> { let after = a.get_label(); let cond = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - a.emit_cmp(Size::S32, Location::Imm32(0), cond); + Self::emit_relaxed_binop( + a, &mut self.machine, Assembler::emit_cmp, + Size::S32, Location::Imm32(0), cond, + ); a.emit_jmp(Condition::Equal, after); let frame = &self.control_stack[self.control_stack.len() - 1 - (relative_depth as usize)]; @@ -1731,6 +1878,49 @@ impl FunctionCodeGenerator for X64FunctionCode { a.emit_label(after); } + Operator::BrTable { table } => { + let (targets, default_target) = table.read_table().unwrap(); + let cond = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let mut table = vec![0usize; targets.len()]; + let default_br = a.get_label(); + Self::emit_relaxed_binop( + a, &mut self.machine, Assembler::emit_cmp, + Size::S32, Location::Imm32(targets.len() as u32), cond, + ); + a.emit_jmp(Condition::AboveEqual, default_br); + + a.emit_mov(Size::S64, Location::Imm64(table.as_ptr() as usize as u64), Location::GPR(GPR::RCX)); + a.emit_mov(Size::S32, cond, Location::GPR(GPR::RDX)); + a.emit_shl(Size::S32, Location::Imm8(3), Location::GPR(GPR::RDX)); + a.emit_add(Size::S64, Location::GPR(GPR::RCX), Location::GPR(GPR::RDX)); + a.emit_jmp_location(Location::Memory(GPR::RDX, 0)); + + for (i, target) in targets.iter().enumerate() { + let AssemblyOffset(offset) = a.offset(); + table[i] = offset; + let frame = &self.control_stack[self.control_stack.len() - 1 - (*target as usize)]; + let released: Vec = self.value_stack[frame.value_stack_depth..].iter() + .filter(|&&(_, lot)| lot == LocalOrTemp::Temp) + .map(|&(x, _)| x) + .collect(); + self.machine.release_locations_keep_state(a, &released); + a.emit_jmp(Condition::None, frame.label); + } + a.emit_label(default_br); + + { + let frame = &self.control_stack[self.control_stack.len() - 1 - (default_target as usize)]; + let released: Vec = self.value_stack[frame.value_stack_depth..].iter() + .filter(|&&(_, lot)| lot == LocalOrTemp::Temp) + .map(|&(x, _)| x) + .collect(); + self.machine.release_locations_keep_state(a, &released); + a.emit_jmp(Condition::None, frame.label); + } + + self.br_table_data.as_mut().unwrap().push(table); + self.unreachable_depth = 1; + } Operator::Drop => { get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); } diff --git a/lib/dynasm-backend/src/emitter_x64.rs b/lib/dynasm-backend/src/emitter_x64.rs index 8ef1d1ad1..3b0763c62 100644 --- a/lib/dynasm-backend/src/emitter_x64.rs +++ b/lib/dynasm-backend/src/emitter_x64.rs @@ -80,6 +80,7 @@ pub trait Emitter { fn emit_mov(&mut self, sz: Size, src: Location, dst: Location); fn emit_lea(&mut self, sz: Size, src: Location, dst: Location); + fn emit_lea_label(&mut self, label: Self::Label, dst: Location); fn emit_xor(&mut self, sz: Size, src: Location, dst: Location); fn emit_jmp(&mut self, condition: Condition, label: Self::Label); fn emit_jmp_location(&mut self, loc: Location); @@ -377,6 +378,14 @@ impl Emitter for Assembler { _ => unreachable!(), } } + fn emit_lea_label(&mut self, label: Self::Label, dst: Location) { + match dst { + Location::GPR(x) => { + dynasm!(self ; lea Rq(x as u8), [=>label]); + }, + _ => unreachable!(), + } + } fn emit_xor(&mut self, sz: Size, src: Location, dst: Location) { binop_all_nofp!(xor, self, sz, src, dst, {unreachable!()}); } From e32816b06ba198c8e17a9f4a0f55b09454c90a16 Mon Sep 17 00:00:00 2001 From: losfair Date: Tue, 9 Apr 2019 01:24:30 +0800 Subject: [PATCH 144/413] Floating point with AVX. --- lib/dynasm-backend/src/codegen_x64.rs | 157 +++++++++++++++++++++++++- lib/dynasm-backend/src/emitter_x64.rs | 127 +++++++++++++++++++++ lib/dynasm-backend/src/machine.rs | 4 +- 3 files changed, 283 insertions(+), 5 deletions(-) diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index 9ed103991..386f0ce52 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -525,6 +525,7 @@ impl X64FunctionCode { (_, Location::Imm32(_)) | (_, Location::Imm64(_)) => RelaxMode::DstToGPR, (Location::Imm64(_), Location::Memory(_, _)) => RelaxMode::SrcToGPR, (Location::Imm64(_), Location::GPR(_)) if (op as *const u8 != Assembler::emit_mov as *const u8) => RelaxMode::SrcToGPR, + (_, Location::XMM(_)) => RelaxMode::SrcToGPR, _ if (op as *const u8 == Assembler::emit_imul as *const u8) => RelaxMode::BothToGPR, // TODO: optimize this _ => RelaxMode::Direct, }; @@ -563,6 +564,75 @@ impl X64FunctionCode { } } + fn emit_relaxed_avx( + a: &mut Assembler, + m: &mut Machine, + op: fn(&mut Assembler, XMM, XMMOrMemory, XMM), + src1: Location, + src2: Location, + dst: Location, + ) { + let tmp1 = m.acquire_temp_xmm().unwrap(); + let tmp2 = m.acquire_temp_xmm().unwrap(); + let tmp3 = m.acquire_temp_xmm().unwrap(); + let tmpg = m.acquire_temp_gpr().unwrap(); + + let src1 = match src1 { + Location::XMM(x) => x, + Location::GPR(_) | Location::Memory(_, _) => { + a.emit_mov(Size::S64, src1, Location::XMM(tmp1)); + tmp1 + } + Location::Imm32(_) => { + a.emit_mov(Size::S32, src1, Location::GPR(tmpg)); + a.emit_mov(Size::S32, Location::GPR(tmpg), Location::XMM(tmp1)); + tmp1 + } + Location::Imm64(_) => { + a.emit_mov(Size::S64, src1, Location::GPR(tmpg)); + a.emit_mov(Size::S64, Location::GPR(tmpg), Location::XMM(tmp1)); + tmp1 + } + _ => unreachable!() + }; + + let src2 = match src2 { + Location::XMM(x) => XMMOrMemory::XMM(x), + Location::Memory(base, disp) => XMMOrMemory::Memory(base, disp), + Location::GPR(_) => { + a.emit_mov(Size::S64, src2, Location::XMM(tmp2)); + XMMOrMemory::XMM(tmp2) + } + Location::Imm32(_) => { + a.emit_mov(Size::S32, src2, Location::GPR(tmpg)); + a.emit_mov(Size::S32, Location::GPR(tmpg), Location::XMM(tmp2)); + XMMOrMemory::XMM(tmp2) + } + Location::Imm64(_) => { + a.emit_mov(Size::S64, src2, Location::GPR(tmpg)); + a.emit_mov(Size::S64, Location::GPR(tmpg), Location::XMM(tmp2)); + XMMOrMemory::XMM(tmp2) + } + _ => unreachable!() + }; + + match dst { + Location::XMM(x) => { + op(a, src1, src2, x); + }, + Location::Memory(_, _) => { + op(a, src1, src2, tmp3); + a.emit_mov(Size::S64, Location::XMM(tmp3), dst); + }, + _ => unreachable!(), + } + + m.release_temp_gpr(tmpg); + m.release_temp_xmm(tmp3); + m.release_temp_xmm(tmp2); + m.release_temp_xmm(tmp1); + } + fn emit_binop_i32( a: &mut Assembler, m: &mut Machine, @@ -849,6 +919,33 @@ impl X64FunctionCode { value_stack.push((ret, LocalOrTemp::Temp)); } + fn emit_fp_binop_avx( + a: &mut Assembler, + m: &mut Machine, + value_stack: &mut Vec<(Location, LocalOrTemp)>, + f: fn(&mut Assembler, XMM, XMMOrMemory, XMM), + ) { + let loc_b = get_location_released(a, m, value_stack.pop().unwrap()); + let loc_a = get_location_released(a, m, value_stack.pop().unwrap()); + let ret = m.acquire_locations(a, &[WpType::F64], false)[0]; + value_stack.push((ret, LocalOrTemp::Temp)); + + Self::emit_relaxed_avx(a, m, f, loc_a, loc_b, ret); + } + + fn emit_fp_unop_avx( + a: &mut Assembler, + m: &mut Machine, + value_stack: &mut Vec<(Location, LocalOrTemp)>, + f: fn(&mut Assembler, XMM, XMMOrMemory, XMM), + ) { + let loc = get_location_released(a, m, value_stack.pop().unwrap()); + let ret = m.acquire_locations(a, &[WpType::F64], false)[0]; + value_stack.push((ret, LocalOrTemp::Temp)); + + Self::emit_relaxed_avx(a, m, f, loc, loc, ret); + } + // This function must not use any temporary register before `cb` is called. fn emit_call_sysv, F: FnOnce(&mut Assembler)>(a: &mut Assembler, m: &mut Machine, cb: F, params: I) { let params: Vec<_> = params.collect(); @@ -859,6 +956,15 @@ impl X64FunctionCode { a.emit_push(Size::S64, Location::GPR(*r)); } + // Save used XMM registers. + let used_xmms = m.get_used_xmms(); + if used_xmms.len() > 0 { + a.emit_sub(Size::S64, Location::Imm32((used_xmms.len() * 8) as u32), Location::GPR(GPR::RSP)); + for (i, r) in used_xmms.iter().enumerate() { + a.emit_mov(Size::S64, Location::XMM(*r), Location::Memory(GPR::RSP, (i * 8) as i32)); + } + } + let mut stack_offset: usize = 0; // Calculate stack offset. @@ -914,6 +1020,14 @@ impl X64FunctionCode { a.emit_add(Size::S64, Location::Imm32(stack_offset as u32), Location::GPR(GPR::RSP)); } + // Restore XMMs. + if used_xmms.len() > 0 { + for (i, r) in used_xmms.iter().enumerate() { + a.emit_mov(Size::S64, Location::Memory(GPR::RSP, (i * 8) as i32), Location::XMM(*r)); + } + a.emit_add(Size::S64, Location::Imm32((used_xmms.len() * 8) as u32), Location::GPR(GPR::RSP)); + } + // Restore GPRs. for r in used_gprs.iter().rev() { a.emit_pop(Size::S64, Location::GPR(*r)); @@ -1155,7 +1269,7 @@ impl FunctionCodeGenerator for X64FunctionCode { let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; a.emit_mov(Size::S32, loc_a, Location::GPR(GPR::RAX)); - a.emit_xor(Size::S32, Location::GPR(GPR::RDX), Location::GPR(GPR::RDX)); + a.emit_cdq(); Self::emit_relaxed_xdiv(a, &mut self.machine, Assembler::emit_idiv, Size::S32, loc_b); a.emit_mov(Size::S32, Location::GPR(GPR::RAX), ret); self.value_stack.push((ret, LocalOrTemp::Temp)); @@ -1232,7 +1346,7 @@ impl FunctionCodeGenerator for X64FunctionCode { let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; a.emit_mov(Size::S64, loc_a, Location::GPR(GPR::RAX)); - a.emit_xor(Size::S64, Location::GPR(GPR::RDX), Location::GPR(GPR::RDX)); + a.emit_cqo(); Self::emit_relaxed_xdiv(a, &mut self.machine, Assembler::emit_idiv, Size::S64, loc_b); a.emit_mov(Size::S64, Location::GPR(GPR::RAX), ret); self.value_stack.push((ret, LocalOrTemp::Temp)); @@ -1308,6 +1422,45 @@ impl FunctionCodeGenerator for X64FunctionCode { Size::S32, loc, ret, ); } + + Operator::F32Const { value } => self.value_stack.push((Location::Imm32(value.bits()), LocalOrTemp::Temp)), + Operator::F32Add => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vaddss), + Operator::F32Sub => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vsubss), + Operator::F32Mul => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vmulss), + Operator::F32Div => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vdivss), + Operator::F32Max => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vmaxss), + Operator::F32Min => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vminss), + Operator::F32Eq => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpeqss), + Operator::F32Ne => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpneqss), + Operator::F32Lt => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpltss), + Operator::F32Le => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpless), + Operator::F32Gt => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpgtss), + Operator::F32Ge => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpgess), + Operator::F32Nearest => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vroundss_nearest), + Operator::F32Floor => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vroundss_floor), + Operator::F32Ceil => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vroundss_ceil), + Operator::F32Trunc => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vroundss_trunc), + Operator::F32Sqrt => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vsqrtss), + + Operator::F64Const { value } => self.value_stack.push((Location::Imm64(value.bits()), LocalOrTemp::Temp)), + Operator::F64Add => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vaddsd), + Operator::F64Sub => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vsubsd), + Operator::F64Mul => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vmulsd), + Operator::F64Div => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vdivsd), + Operator::F64Max => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vmaxsd), + Operator::F64Min => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vminsd), + Operator::F64Eq => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpeqsd), + Operator::F64Ne => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpneqsd), + Operator::F64Lt => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpltsd), + Operator::F64Le => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmplesd), + Operator::F64Gt => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpgtsd), + Operator::F64Ge => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpgesd), + Operator::F64Nearest => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vroundsd_nearest), + Operator::F64Floor => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vroundsd_floor), + Operator::F64Ceil => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vroundsd_ceil), + Operator::F64Trunc => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vroundsd_trunc), + Operator::F64Sqrt => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vsqrtsd), + Operator::Call { function_index } => { let function_index = function_index as usize; let label = self diff --git a/lib/dynasm-backend/src/emitter_x64.rs b/lib/dynasm-backend/src/emitter_x64.rs index 3b0763c62..d5a426930 100644 --- a/lib/dynasm-backend/src/emitter_x64.rs +++ b/lib/dynasm-backend/src/emitter_x64.rs @@ -69,6 +69,12 @@ pub enum Size { S64, } +#[derive(Copy, Clone, Debug)] +pub enum XMMOrMemory { + XMM(XMM), + Memory(GPR, i32), +} + pub trait Emitter { type Label; type Offset; @@ -81,6 +87,8 @@ pub trait Emitter { fn emit_mov(&mut self, sz: Size, src: Location, dst: Location); fn emit_lea(&mut self, sz: Size, src: Location, dst: Location); fn emit_lea_label(&mut self, label: Self::Label, dst: Location); + fn emit_cdq(&mut self); + fn emit_cqo(&mut self); fn emit_xor(&mut self, sz: Size, src: Location, dst: Location); fn emit_jmp(&mut self, condition: Condition, label: Self::Label); fn emit_jmp_location(&mut self, loc: Location); @@ -108,6 +116,49 @@ pub trait Emitter { fn emit_movzx(&mut self, sz_src: Size, src: Location, sz_dst: Size, dst: Location); fn emit_movsx(&mut self, sz_src: Size, src: Location, sz_dst: Size, dst: Location); + fn emit_vaddss(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + fn emit_vaddsd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + fn emit_vsubss(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + fn emit_vsubsd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + fn emit_vmulss(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + fn emit_vmulsd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + fn emit_vdivss(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + fn emit_vdivsd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + fn emit_vmaxss(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + fn emit_vmaxsd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + fn emit_vminss(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + fn emit_vminsd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + + fn emit_vcmpeqss(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + fn emit_vcmpeqsd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + + fn emit_vcmpneqss(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + fn emit_vcmpneqsd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + + fn emit_vcmpltss(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + fn emit_vcmpltsd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + + fn emit_vcmpless(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + fn emit_vcmplesd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + + fn emit_vcmpgtss(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + fn emit_vcmpgtsd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + + fn emit_vcmpgess(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + fn emit_vcmpgesd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + + fn emit_vsqrtss(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + fn emit_vsqrtsd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + + fn emit_vroundss_nearest(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + fn emit_vroundss_floor(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + fn emit_vroundss_ceil(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + fn emit_vroundss_trunc(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + fn emit_vroundsd_nearest(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + fn emit_vroundsd_floor(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + fn emit_vroundsd_ceil(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + fn emit_vroundsd_trunc(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + fn emit_ud2(&mut self); fn emit_ret(&mut self); fn emit_call_label(&mut self, label: Self::Label); @@ -306,6 +357,28 @@ macro_rules! trap_op { } } +macro_rules! avx_fn { + ($ins:ident, $name:ident) => { + fn $name(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) { + match src2 { + XMMOrMemory::XMM(x) => dynasm!(self ; $ins Rx((dst as u8)), Rx((src1 as u8)), Rx((x as u8))), + XMMOrMemory::Memory(base, disp) => dynasm!(self ; $ins Rx((dst as u8)), Rx((src1 as u8)), [Rq((base as u8)) + disp]), + } + } + } +} + +macro_rules! avx_round_fn { + ($ins:ident, $name:ident, $mode:expr) => { + fn $name(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) { + match src2 { + XMMOrMemory::XMM(x) => dynasm!(self ; $ins Rx((dst as u8)), Rx((src1 as u8)), Rx((x as u8)), $mode), + XMMOrMemory::Memory(base, disp) => dynasm!(self ; $ins Rx((dst as u8)), Rx((src1 as u8)), [Rq((base as u8)) + disp], $mode), + } + } + } +} + impl Emitter for Assembler { type Label = DynamicLabel; type Offset = AssemblyOffset; @@ -386,6 +459,12 @@ impl Emitter for Assembler { _ => unreachable!(), } } + fn emit_cdq(&mut self) { + dynasm!(self ; cdq); + } + fn emit_cqo(&mut self) { + dynasm!(self ; cqo); + } fn emit_xor(&mut self, sz: Size, src: Location, dst: Location) { binop_all_nofp!(xor, self, sz, src, dst, {unreachable!()}); } @@ -582,6 +661,54 @@ impl Emitter for Assembler { } } + avx_fn!(vaddss, emit_vaddss); + avx_fn!(vaddsd, emit_vaddsd); + + avx_fn!(vsubss, emit_vsubss); + avx_fn!(vsubsd, emit_vsubsd); + + avx_fn!(vmulss, emit_vmulss); + avx_fn!(vmulsd, emit_vmulsd); + + avx_fn!(vdivss, emit_vdivss); + avx_fn!(vdivsd, emit_vdivsd); + + avx_fn!(vmaxss, emit_vmaxss); + avx_fn!(vmaxsd, emit_vmaxsd); + + avx_fn!(vminss, emit_vminss); + avx_fn!(vminsd, emit_vminsd); + + avx_fn!(vcmpeqss, emit_vcmpeqss); + avx_fn!(vcmpeqsd, emit_vcmpeqsd); + + avx_fn!(vcmpneqss, emit_vcmpneqss); + avx_fn!(vcmpneqsd, emit_vcmpneqsd); + + avx_fn!(vcmpltss, emit_vcmpltss); + avx_fn!(vcmpltsd, emit_vcmpltsd); + + avx_fn!(vcmpless, emit_vcmpless); + avx_fn!(vcmplesd, emit_vcmplesd); + + avx_fn!(vcmpgtss, emit_vcmpgtss); + avx_fn!(vcmpgtsd, emit_vcmpgtsd); + + avx_fn!(vcmpgess, emit_vcmpgess); + avx_fn!(vcmpgesd, emit_vcmpgesd); + + avx_fn!(vsqrtss, emit_vsqrtss); + avx_fn!(vsqrtsd, emit_vsqrtsd); + + avx_round_fn!(vroundss, emit_vroundss_nearest, 0); + avx_round_fn!(vroundss, emit_vroundss_floor, 1); + avx_round_fn!(vroundss, emit_vroundss_ceil, 2); + avx_round_fn!(vroundss, emit_vroundss_trunc, 3); + avx_round_fn!(vroundsd, emit_vroundsd_nearest, 0); + avx_round_fn!(vroundsd, emit_vroundsd_floor, 1); + avx_round_fn!(vroundsd, emit_vroundsd_ceil, 2); + avx_round_fn!(vroundsd, emit_vroundsd_trunc, 3); + fn emit_ud2(&mut self) { dynasm!(self ; ud2); } diff --git a/lib/dynasm-backend/src/machine.rs b/lib/dynasm-backend/src/machine.rs index 0a7686d9e..ae7163c56 100644 --- a/lib/dynasm-backend/src/machine.rs +++ b/lib/dynasm-backend/src/machine.rs @@ -186,9 +186,7 @@ impl Machine { for ty in tys { let loc = match *ty { WpType::F32 | WpType::F64 => { - self.pick_xmm().map(Location::XMM).or_else( - || self.pick_gpr().map(Location::GPR) - ) + self.pick_xmm().map(Location::XMM) }, WpType::I32 | WpType::I64 => { self.pick_gpr().map(Location::GPR) From b3a765446ac2f91d67ec10c93124106764dd9742 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 8 Apr 2019 11:26:25 -0700 Subject: [PATCH 145/413] fix bug in stat, move lstat64 back to unix --- lib/emscripten/src/syscalls/mod.rs | 18 ------------------ lib/emscripten/src/syscalls/unix.rs | 20 ++++++++++++++++++++ lib/emscripten/src/utils.rs | 2 +- lib/runtime-core/src/types.rs | 2 +- 4 files changed, 22 insertions(+), 20 deletions(-) diff --git a/lib/emscripten/src/syscalls/mod.rs b/lib/emscripten/src/syscalls/mod.rs index 645b48a81..37f6e2f51 100644 --- a/lib/emscripten/src/syscalls/mod.rs +++ b/lib/emscripten/src/syscalls/mod.rs @@ -418,24 +418,6 @@ pub fn ___syscall197(ctx: &mut Ctx, _which: c_int, mut varargs: VarArgs) -> c_in 0 } -/// lstat64 -pub fn ___syscall196(ctx: &mut Ctx, _which: i32, mut varargs: VarArgs) -> i32 { - debug!("emscripten::___syscall196 (lstat64) {}", _which); - let path_ptr: c_int = varargs.get(ctx); - let buf_ptr: u32 = varargs.get(ctx); - let path = emscripten_memory_pointer!(ctx.memory(0), path_ptr) as *const i8; - unsafe { - let mut stat: stat = std::mem::zeroed(); - let ret = lstat64(path, &mut stat as *mut stat as *mut c_void); - debug!("ret: {}", ret); - if ret != 0 { - return ret; - } - copy_stat_into_wasm(ctx, buf_ptr, &stat); - } - 0 -} - pub fn ___syscall220(_ctx: &mut Ctx, _one: i32, _two: i32) -> i32 { debug!("emscripten::___syscall220"); -1 diff --git a/lib/emscripten/src/syscalls/unix.rs b/lib/emscripten/src/syscalls/unix.rs index a4bac74c6..ad7f65909 100644 --- a/lib/emscripten/src/syscalls/unix.rs +++ b/lib/emscripten/src/syscalls/unix.rs @@ -57,6 +57,7 @@ use libc::{ sockaddr, socket, socklen_t, + stat, symlink, uid_t, uname, @@ -73,6 +74,7 @@ use libc::{ }; use wasmer_runtime_core::vm::Ctx; +use crate::utils; #[allow(unused_imports)] use std::io::Error; use std::mem; @@ -775,3 +777,21 @@ pub fn ___syscall324(ctx: &mut Ctx, _which: c_int, mut varargs: VarArgs) -> c_in unimplemented!() } } + +/// lstat64 +pub fn ___syscall196(ctx: &mut Ctx, _which: i32, mut varargs: VarArgs) -> i32 { + debug!("emscripten::___syscall196 (lstat64) {}", _which); + let path_ptr: c_int = varargs.get(ctx); + let buf_ptr: u32 = varargs.get(ctx); + let path = emscripten_memory_pointer!(ctx.memory(0), path_ptr) as *const i8; + unsafe { + let mut stat: stat = std::mem::zeroed(); + let ret = lstat64(path, &mut stat as *mut stat as *mut c_void); + debug!("ret: {}", ret); + if ret != 0 { + return ret; + } + utils::copy_stat_into_wasm(ctx, buf_ptr, &stat); + } + 0 +} diff --git a/lib/emscripten/src/utils.rs b/lib/emscripten/src/utils.rs index 5dcfd4e11..725f0ba94 100644 --- a/lib/emscripten/src/utils.rs +++ b/lib/emscripten/src/utils.rs @@ -125,7 +125,7 @@ pub struct GuestStat { st_atime: u64, st_mtime: u64, st_ctime: u64, - st_ino: u64, + st_ino: u32, } #[allow(clippy::cast_ptr_alignment)] diff --git a/lib/runtime-core/src/types.rs b/lib/runtime-core/src/types.rs index 96a99a835..966bd4e39 100644 --- a/lib/runtime-core/src/types.rs +++ b/lib/runtime-core/src/types.rs @@ -1,5 +1,5 @@ use crate::{memory::MemoryType, module::ModuleInfo, structures::TypedIndex, units::Pages}; -use std::{borrow::Cow, mem}; +use std::borrow::Cow; /// Represents a WebAssembly type. #[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq, Hash)] From 134ee3c5117c5e8c8f9b58c0c7779aece20b450c Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 8 Apr 2019 11:29:55 -0700 Subject: [PATCH 146/413] revert location of lstat64 --- lib/emscripten/src/syscalls/unix.rs | 34 ++++++++++++++--------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/lib/emscripten/src/syscalls/unix.rs b/lib/emscripten/src/syscalls/unix.rs index ad7f65909..82b7182fe 100644 --- a/lib/emscripten/src/syscalls/unix.rs +++ b/lib/emscripten/src/syscalls/unix.rs @@ -761,23 +761,6 @@ pub fn ___syscall122(ctx: &mut Ctx, _which: c_int, mut varargs: VarArgs) -> c_in unsafe { uname(buf_addr) } } -/// fallocate -pub fn ___syscall324(ctx: &mut Ctx, _which: c_int, mut varargs: VarArgs) -> c_int { - debug!("emscripten::___syscall324 (fallocate) {}", _which); - let _fd: c_int = varargs.get(ctx); - let _mode: c_int = varargs.get(ctx); - let _offset: off_t = varargs.get(ctx); - let _len: off_t = varargs.get(ctx); - #[cfg(not(target_os = "macos"))] - unsafe { - fallocate(_fd, _mode, _offset, _len) - } - #[cfg(target_os = "macos")] - { - unimplemented!() - } -} - /// lstat64 pub fn ___syscall196(ctx: &mut Ctx, _which: i32, mut varargs: VarArgs) -> i32 { debug!("emscripten::___syscall196 (lstat64) {}", _which); @@ -795,3 +778,20 @@ pub fn ___syscall196(ctx: &mut Ctx, _which: i32, mut varargs: VarArgs) -> i32 { } 0 } + +/// fallocate +pub fn ___syscall324(ctx: &mut Ctx, _which: c_int, mut varargs: VarArgs) -> c_int { + debug!("emscripten::___syscall324 (fallocate) {}", _which); + let _fd: c_int = varargs.get(ctx); + let _mode: c_int = varargs.get(ctx); + let _offset: off_t = varargs.get(ctx); + let _len: off_t = varargs.get(ctx); + #[cfg(not(target_os = "macos"))] + unsafe { + fallocate(_fd, _mode, _offset, _len) + } + #[cfg(target_os = "macos")] + { + unimplemented!() + } +} From 7cb2766292b0e2ae02b4b0d7ac454a57a3f0b21d Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 8 Apr 2019 11:36:54 -0700 Subject: [PATCH 147/413] fix type errors on Linux/OSX --- lib/emscripten/src/syscalls/unix.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/emscripten/src/syscalls/unix.rs b/lib/emscripten/src/syscalls/unix.rs index 82b7182fe..2d1db3a0c 100644 --- a/lib/emscripten/src/syscalls/unix.rs +++ b/lib/emscripten/src/syscalls/unix.rs @@ -90,7 +90,7 @@ extern "C" { } #[cfg(not(target_os = "macos"))] -use libc::{fallocate, fdatasync, ftruncate64, lstat64, madvise, wait4}; +use libc::{fallocate, fdatasync, ftruncate64, lstat64, madvise, stat64, wait4}; // Another conditional constant for name resolution: Macos et iOS use // SO_NOSIGPIPE as a setsockopt flag to disable SIGPIPE emission on socket. @@ -768,8 +768,16 @@ pub fn ___syscall196(ctx: &mut Ctx, _which: i32, mut varargs: VarArgs) -> i32 { let buf_ptr: u32 = varargs.get(ctx); let path = emscripten_memory_pointer!(ctx.memory(0), path_ptr) as *const i8; unsafe { + #[cfg(target_os = "macos")] let mut stat: stat = std::mem::zeroed(); - let ret = lstat64(path, &mut stat as *mut stat as *mut c_void); + #[cfg(not(target_os = "macos"))] + let mut stat: stat64 = std::mem::zeroed(); + + #[cfg(target_os = "macos")] + let stat_ptr = &mut stat as *mut stat as *mut c_void; + #[cfg(not(target_os = "macos"))] + let stat_ptr = &mut stat64 as *mut stat64; + let ret = lstat64(path, stat_ptr); debug!("ret: {}", ret); if ret != 0 { return ret; From b2a51b8fbdbd3812f52589bc936e7c4bf959193a Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 8 Apr 2019 11:48:04 -0700 Subject: [PATCH 148/413] try normal lstat on linux --- lib/emscripten/src/syscalls/unix.rs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/lib/emscripten/src/syscalls/unix.rs b/lib/emscripten/src/syscalls/unix.rs index 2d1db3a0c..42c373ed5 100644 --- a/lib/emscripten/src/syscalls/unix.rs +++ b/lib/emscripten/src/syscalls/unix.rs @@ -90,7 +90,7 @@ extern "C" { } #[cfg(not(target_os = "macos"))] -use libc::{fallocate, fdatasync, ftruncate64, lstat64, madvise, stat64, wait4}; +use libc::{fallocate, fdatasync, ftruncate64, lstat, madvise, wait4}; // Another conditional constant for name resolution: Macos et iOS use // SO_NOSIGPIPE as a setsockopt flag to disable SIGPIPE emission on socket. @@ -768,16 +768,14 @@ pub fn ___syscall196(ctx: &mut Ctx, _which: i32, mut varargs: VarArgs) -> i32 { let buf_ptr: u32 = varargs.get(ctx); let path = emscripten_memory_pointer!(ctx.memory(0), path_ptr) as *const i8; unsafe { - #[cfg(target_os = "macos")] let mut stat: stat = std::mem::zeroed(); - #[cfg(not(target_os = "macos"))] - let mut stat: stat64 = std::mem::zeroed(); - #[cfg(target_os = "macos")] let stat_ptr = &mut stat as *mut stat as *mut c_void; - #[cfg(not(target_os = "macos"))] - let stat_ptr = &mut stat64 as *mut stat64; + #[cfg(target_os = "macos")] let ret = lstat64(path, stat_ptr); + #[cfg(not(target_os = "macos"))] + let ret = lstat(path, stat_ptr); + debug!("ret: {}", ret); if ret != 0 { return ret; From 03f0bf0c49a72dc2b722dbd6e4319216797d9a47 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 8 Apr 2019 11:53:15 -0700 Subject: [PATCH 149/413] change void* to stat* for lstat on linux --- lib/emscripten/src/syscalls/unix.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/emscripten/src/syscalls/unix.rs b/lib/emscripten/src/syscalls/unix.rs index 42c373ed5..32b63593f 100644 --- a/lib/emscripten/src/syscalls/unix.rs +++ b/lib/emscripten/src/syscalls/unix.rs @@ -770,7 +770,11 @@ pub fn ___syscall196(ctx: &mut Ctx, _which: i32, mut varargs: VarArgs) -> i32 { unsafe { let mut stat: stat = std::mem::zeroed(); + #[cfg(target_os = "macos")] let stat_ptr = &mut stat as *mut stat as *mut c_void; + #[cfg(not(target_os = "macos"))] + let stat_ptr = &mut stat as *mut stat; + #[cfg(target_os = "macos")] let ret = lstat64(path, stat_ptr); #[cfg(not(target_os = "macos"))] From 6578838acd7bf00c7d22f53673310f8c5c216190 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 8 Apr 2019 14:44:40 -0700 Subject: [PATCH 150/413] allow resize_heap to grow heap in emscripten --- lib/emscripten/src/memory.rs | 36 +++++++++++++++++++++++++++++++---- lib/runtime-core/src/units.rs | 4 ++-- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/lib/emscripten/src/memory.rs b/lib/emscripten/src/memory.rs index 9fccbdde4..f35dbbb8e 100644 --- a/lib/emscripten/src/memory.rs +++ b/lib/emscripten/src/memory.rs @@ -1,6 +1,9 @@ use super::process::abort_with_message; use libc::{c_int, c_void, memcpy, size_t}; -use wasmer_runtime_core::vm::Ctx; +use wasmer_runtime_core::{ + units::{Pages, WASM_MAX_PAGES, WASM_PAGE_SIZE}, + vm::Ctx, +}; /// emscripten: _emscripten_memcpy_big pub fn _emscripten_memcpy_big(ctx: &mut Ctx, dest: u32, src: u32, len: u32) -> u32 { @@ -23,9 +26,34 @@ pub fn _emscripten_get_heap_size(ctx: &mut Ctx) -> u32 { } /// emscripten: _emscripten_resize_heap -pub fn _emscripten_resize_heap(_ctx: &mut Ctx, _requested_size: u32) -> u32 { - debug!("emscripten::_emscripten_resize_heap {}", _requested_size); - // TODO: Fix implementation +/// Note: this function only allows growing the size of heap +pub fn _emscripten_resize_heap(ctx: &mut Ctx, requested_size: u32) -> u32 { + debug!("emscripten::_emscripten_resize_heap {}", requested_size); + let current_memory_pages = ctx.memory(0).size(); + let current_memory = current_memory_pages.bytes().0 as u32; + + if requested_size > current_memory { + let remainder = (requested_size - current_memory) as usize % WASM_PAGE_SIZE; + let delta = { + let delta = (requested_size - current_memory) as usize / WASM_PAGE_SIZE; + + if remainder != 0 { + delta + 1 + } else { + delta + } + }; + + if current_memory_pages.0 as usize + delta > WASM_MAX_PAGES { + // TODO: handle this? + debug!("Can't exceed max pages"); + return 0; + } + + if let Ok(v) = ctx.memory(0).grow(Pages(delta as u32)) { + return v.0; + } + } 0 } diff --git a/lib/runtime-core/src/units.rs b/lib/runtime-core/src/units.rs index 56d501438..982baefcb 100644 --- a/lib/runtime-core/src/units.rs +++ b/lib/runtime-core/src/units.rs @@ -4,8 +4,8 @@ use std::{ ops::{Add, Sub}, }; -const WASM_PAGE_SIZE: usize = 65_536; -const WASM_MAX_PAGES: usize = 65_536; +pub const WASM_PAGE_SIZE: usize = 65_536; +pub const WASM_MAX_PAGES: usize = 65_536; /// Units of WebAssembly pages (as specified to be 65,536 bytes). #[derive(Serialize, Deserialize, Copy, Clone, PartialEq, Eq, PartialOrd, Ord)] From 50a22bcae27a7f947ab77966b55b32477f97f4f5 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 8 Apr 2019 16:17:34 -0700 Subject: [PATCH 151/413] implement emscripten resize_heap --- lib/emscripten/src/memory.rs | 49 +++++++++++++++++++---------------- lib/runtime-core/src/units.rs | 2 ++ 2 files changed, 29 insertions(+), 22 deletions(-) diff --git a/lib/emscripten/src/memory.rs b/lib/emscripten/src/memory.rs index f35dbbb8e..9a0874015 100644 --- a/lib/emscripten/src/memory.rs +++ b/lib/emscripten/src/memory.rs @@ -1,7 +1,7 @@ use super::process::abort_with_message; use libc::{c_int, c_void, memcpy, size_t}; use wasmer_runtime_core::{ - units::{Pages, WASM_MAX_PAGES, WASM_PAGE_SIZE}, + units::{Pages, WASM_MAX_PAGES, WASM_MIN_PAGES, WASM_PAGE_SIZE}, vm::Ctx, }; @@ -25,6 +25,14 @@ pub fn _emscripten_get_heap_size(ctx: &mut Ctx) -> u32 { ctx.memory(0).size().bytes().0 as u32 } +// From emscripten implementation +fn align_up(mut val: usize, multiple: usize) -> usize { + if val % multiple > 0 { + val += multiple - val % multiple; + } + val +} + /// emscripten: _emscripten_resize_heap /// Note: this function only allows growing the size of heap pub fn _emscripten_resize_heap(ctx: &mut Ctx, requested_size: u32) -> u32 { @@ -32,29 +40,26 @@ pub fn _emscripten_resize_heap(ctx: &mut Ctx, requested_size: u32) -> u32 { let current_memory_pages = ctx.memory(0).size(); let current_memory = current_memory_pages.bytes().0 as u32; - if requested_size > current_memory { - let remainder = (requested_size - current_memory) as usize % WASM_PAGE_SIZE; - let delta = { - let delta = (requested_size - current_memory) as usize / WASM_PAGE_SIZE; - - if remainder != 0 { - delta + 1 - } else { - delta - } - }; - - if current_memory_pages.0 as usize + delta > WASM_MAX_PAGES { - // TODO: handle this? - debug!("Can't exceed max pages"); - return 0; - } - - if let Ok(v) = ctx.memory(0).grow(Pages(delta as u32)) { - return v.0; + // implementation from emscripten + let mut new_size = usize::max(current_memory as usize, WASM_MIN_PAGES * WASM_PAGE_SIZE); + while new_size < requested_size as usize { + if new_size <= 0x2000_0000 { + new_size = align_up(new_size * 2, WASM_PAGE_SIZE); + } else { + new_size = usize::min( + align_up((3 * new_size + 0x8000_0000) / 4, WASM_PAGE_SIZE), + WASM_PAGE_SIZE * WASM_MAX_PAGES, + ); } } - 0 + + let amount_to_grow = (new_size - current_memory as usize) / WASM_PAGE_SIZE; + if let Ok(_pages_allocated) = ctx.memory(0).grow(Pages(amount_to_grow as u32)) { + debug!("{} pages allocated", _pages_allocated.0); + 1 + } else { + 0 + } } /// emscripten: getTotalMemory diff --git a/lib/runtime-core/src/units.rs b/lib/runtime-core/src/units.rs index 982baefcb..e8232efc8 100644 --- a/lib/runtime-core/src/units.rs +++ b/lib/runtime-core/src/units.rs @@ -6,6 +6,8 @@ use std::{ pub const WASM_PAGE_SIZE: usize = 65_536; pub const WASM_MAX_PAGES: usize = 65_536; +// From emscripten resize_heap implementation +pub const WASM_MIN_PAGES: usize = 256; /// Units of WebAssembly pages (as specified to be 65,536 bytes). #[derive(Serialize, Deserialize, Copy, Clone, PartialEq, Eq, PartialOrd, Ord)] From 1094f5c818c12fb782638ec7aa345c15182ff72a Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Tue, 9 Apr 2019 01:35:48 -0500 Subject: [PATCH 152/413] Add Dockerfile and documentation --- .dockerignore | 6 ++++++ Dockerfile | 25 +++++++++++++++++++++++++ docs/docker.md | 39 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 70 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 docs/docker.md diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..e861ea7b6 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +# Ignore everything +** +!lib/** +!src/** +!Cargo.toml +!Cargo.lock \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..02ea6c413 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,25 @@ +FROM circleci/rust:1.33.0-stretch as wasmer-build-env +RUN sudo apt-get update && \ + sudo apt-get install -y --no-install-recommends \ + cmake \ + && sudo rm -rf /var/lib/apt/lists/* +RUN curl -SL https://releases.llvm.org/7.0.0/clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz \ + | tar -xJC /home/circleci +ENV LLVM_SYS_70_PREFIX /home/circleci/clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04/ + +FROM wasmer-build-env AS wasmer-debug-env +RUN sudo apt-get update && \ + sudo apt-get install -y --no-install-recommends \ + valgrind \ + && sudo rm -rf /var/lib/apt/lists/* + +FROM wasmer-build-env AS wasmer-build +WORKDIR /home/circleci/wasmer +COPY . /home/circleci/wasmer +RUN sudo chmod -R 777 . +RUN cargo build --release + +FROM debian:stretch AS wasmer +WORKDIR /root/ +COPY --from=wasmer-build /home/circleci/wasmer/target/release/wasmer . +ENTRYPOINT ["./wasmer"] \ No newline at end of file diff --git a/docs/docker.md b/docs/docker.md new file mode 100644 index 000000000..2086284f7 --- /dev/null +++ b/docs/docker.md @@ -0,0 +1,39 @@ +# Dockerfile Documentation +The `Dockerfile` included in the project root directory could be used for development purposes or to build a small image containing the `wasmer` executable. + +The `wasmer-build-env` stage in the Dockerfile contains the dependencies needed to compile Wasmer including LLVM. + +The `wasmer-debug-env` stage adds the `valgrind` profiling tool to the `wasmer-build-env` stage. + +The `wasmer-build` stage in the Dockerfile will copy the current directory, assuming the build context is the `wasmer` project, and build the project using `cargo build --release`. + +The `wasmer` stage will copy the resulting `wasmer` executable from the `wasmer-build` stage into a new base image to create a smaller image containing `wasmer`. + +## Example Usages + +### Wasmer image +1. From the `wasmer` project directory, build the image: +`docker build -t wasmer --target=wasmer .` + +2. List options: +`docker run wasmer --help` + +3. Mount a directory, and run an example wasm file: +`docker run -v /Users/admin/Documents/wasmer-workspace:/root/wasmer-workspace wasmer run /root/wasmer-workspace/examples/hello.wasm` + +### Profiling +1. Build `wasmer-debug-env`: + `docker build --tag=wasmer-debug-env --target wasmer-debug-env .` + +2. Mount a directory from the host and run interactively: + `docker run -it -v /Users/admin/Documents/wasmer-workspace:/home/circleci/wasmer-workspace wasmer-debug-env /bin/bash` + +3. Inside the container, build `wasmer` and run profiling tool: +``` +cd /home/circleci/wasmer-workspace/wasmer` +cargo build +valgrind --tool=callgrind --dump-instr=yes --collect-jumps=yes --simulate-cache=yes target/debug/wasmer run test.wasm +``` + +The `callgrind.out` can be viewed with the `qcachegrind` tool on Mac OS (`brew install qcachegrind`). + From f781b0eb02d99659547eb0de59c63d4e8cd12f7d Mon Sep 17 00:00:00 2001 From: losfair Date: Tue, 9 Apr 2019 17:08:31 +0800 Subject: [PATCH 153/413] More floating point operators. --- lib/dynasm-backend/src/codegen_x64.rs | 109 +++++++++++++++++++++++++- lib/dynasm-backend/src/emitter_x64.rs | 17 ++++ 2 files changed, 123 insertions(+), 3 deletions(-) diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index 386f0ce52..012557f9c 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -571,6 +571,17 @@ impl X64FunctionCode { src1: Location, src2: Location, dst: Location, + ) { + Self::emit_relaxed_avx_base(a, m, |a, _, src1, src2, dst| op(a, src1, src2, dst), src1, src2, dst) + } + + fn emit_relaxed_avx_base( + a: &mut Assembler, + m: &mut Machine, + op: F, + src1: Location, + src2: Location, + dst: Location, ) { let tmp1 = m.acquire_temp_xmm().unwrap(); let tmp2 = m.acquire_temp_xmm().unwrap(); @@ -618,10 +629,10 @@ impl X64FunctionCode { match dst { Location::XMM(x) => { - op(a, src1, src2, x); + op(a, m, src1, src2, x); }, Location::Memory(_, _) => { - op(a, src1, src2, tmp3); + op(a, m, src1, src2, tmp3); a.emit_mov(Size::S64, Location::XMM(tmp3), dst); }, _ => unreachable!(), @@ -1422,7 +1433,7 @@ impl FunctionCodeGenerator for X64FunctionCode { Size::S32, loc, ret, ); } - + Operator::F32Const { value } => self.value_stack.push((Location::Imm32(value.bits()), LocalOrTemp::Temp)), Operator::F32Add => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vaddss), Operator::F32Sub => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vsubss), @@ -1442,6 +1453,43 @@ impl FunctionCodeGenerator for X64FunctionCode { Operator::F32Trunc => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vroundss_trunc), Operator::F32Sqrt => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vsqrtss), + Operator::F32Copysign => { + let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::F32], false)[0]; + + let tmp1 = self.machine.acquire_temp_gpr().unwrap(); + let tmp2 = self.machine.acquire_temp_gpr().unwrap(); + a.emit_mov(Size::S32, loc_a, Location::GPR(tmp1)); + a.emit_mov(Size::S32, loc_b, Location::GPR(tmp2)); + a.emit_and(Size::S32, Location::Imm32(0x7fffffffu32), Location::GPR(tmp1)); + a.emit_and(Size::S32, Location::Imm32(0x80000000u32), Location::GPR(tmp2)); + a.emit_or(Size::S32, Location::GPR(tmp2), Location::GPR(tmp1)); + a.emit_mov(Size::S32, Location::GPR(tmp1), ret); + self.machine.release_temp_gpr(tmp2); + self.machine.release_temp_gpr(tmp1); + } + + Operator::F32Abs => { + let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::F32], false)[0]; + let tmp = self.machine.acquire_temp_gpr().unwrap(); + a.emit_mov(Size::S32, loc, Location::GPR(tmp)); + a.emit_and(Size::S32, Location::Imm32(0x7fffffffu32), Location::GPR(tmp)); + a.emit_mov(Size::S32, Location::GPR(tmp), ret); + self.machine.release_temp_gpr(tmp); + } + + Operator::F32Neg => { + let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::F32], false)[0]; + let tmp = self.machine.acquire_temp_gpr().unwrap(); + a.emit_mov(Size::S32, loc, Location::GPR(tmp)); + a.emit_btc_gpr_imm8_32(31, tmp); + a.emit_mov(Size::S32, Location::GPR(tmp), ret); + self.machine.release_temp_gpr(tmp); + } + Operator::F64Const { value } => self.value_stack.push((Location::Imm64(value.bits()), LocalOrTemp::Temp)), Operator::F64Add => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vaddsd), Operator::F64Sub => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vsubsd), @@ -1461,6 +1509,61 @@ impl FunctionCodeGenerator for X64FunctionCode { Operator::F64Trunc => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vroundsd_trunc), Operator::F64Sqrt => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vsqrtsd), + Operator::F64Copysign => { + let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::F64], false)[0]; + + let tmp1 = self.machine.acquire_temp_gpr().unwrap(); + let tmp2 = self.machine.acquire_temp_gpr().unwrap(); + let c = self.machine.acquire_temp_gpr().unwrap(); + + a.emit_mov(Size::S64, loc_a, Location::GPR(tmp1)); + a.emit_mov(Size::S64, loc_b, Location::GPR(tmp2)); + + a.emit_mov(Size::S64, Location::Imm64(0x7fffffffffffffffu64), Location::GPR(c)); + a.emit_and(Size::S64, Location::GPR(c), Location::GPR(tmp1)); + + a.emit_mov(Size::S64, Location::Imm64(0x8000000000000000u64), Location::GPR(c)); + a.emit_and(Size::S64, Location::GPR(c), Location::GPR(tmp2)); + + a.emit_or(Size::S64, Location::GPR(tmp2), Location::GPR(tmp1)); + a.emit_mov(Size::S64, Location::GPR(tmp1), ret); + + self.machine.release_temp_gpr(c); + self.machine.release_temp_gpr(tmp2); + self.machine.release_temp_gpr(tmp1); + } + + Operator::F64Abs => { + let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::F64], false)[0]; + + let tmp = self.machine.acquire_temp_gpr().unwrap(); + let c = self.machine.acquire_temp_gpr().unwrap(); + + a.emit_mov(Size::S64, loc, Location::GPR(tmp)); + a.emit_mov(Size::S64, Location::Imm64(0x7fffffffffffffffu64), Location::GPR(c)); + a.emit_and(Size::S64, Location::GPR(c), Location::GPR(tmp)); + a.emit_mov(Size::S64, Location::GPR(tmp), ret); + + self.machine.release_temp_gpr(c); + self.machine.release_temp_gpr(tmp); + } + + Operator::F64Neg => { + let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::F64], false)[0]; + let tmp = self.machine.acquire_temp_gpr().unwrap(); + a.emit_mov(Size::S64, loc, Location::GPR(tmp)); + a.emit_btc_gpr_imm8_64(63, tmp); + a.emit_mov(Size::S64, Location::GPR(tmp), ret); + self.machine.release_temp_gpr(tmp); + } + + Operator::F64PromoteF32 => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcvtss2sd), + Operator::F32DemoteF64 => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcvtsd2ss), + Operator::Call { function_index } => { let function_index = function_index as usize; let label = self diff --git a/lib/dynasm-backend/src/emitter_x64.rs b/lib/dynasm-backend/src/emitter_x64.rs index d5a426930..91c0bcab7 100644 --- a/lib/dynasm-backend/src/emitter_x64.rs +++ b/lib/dynasm-backend/src/emitter_x64.rs @@ -116,6 +116,9 @@ pub trait Emitter { fn emit_movzx(&mut self, sz_src: Size, src: Location, sz_dst: Size, dst: Location); fn emit_movsx(&mut self, sz_src: Size, src: Location, sz_dst: Size, dst: Location); + fn emit_btc_gpr_imm8_32(&mut self, src: u8, dst: GPR); + fn emit_btc_gpr_imm8_64(&mut self, src: u8, dst: GPR); + fn emit_vaddss(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); fn emit_vaddsd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); fn emit_vsubss(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); @@ -159,6 +162,9 @@ pub trait Emitter { fn emit_vroundsd_ceil(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); fn emit_vroundsd_trunc(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + fn emit_vcvtss2sd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + fn emit_vcvtsd2ss(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + fn emit_ud2(&mut self); fn emit_ret(&mut self); fn emit_call_label(&mut self, label: Self::Label); @@ -661,6 +667,14 @@ impl Emitter for Assembler { } } + fn emit_btc_gpr_imm8_32(&mut self, src: u8, dst: GPR) { + dynasm!(self ; btc Rd(dst as u8), BYTE (src as i8)); + } + + fn emit_btc_gpr_imm8_64(&mut self, src: u8, dst: GPR) { + dynasm!(self ; btc Rq(dst as u8), BYTE (src as i8)); + } + avx_fn!(vaddss, emit_vaddss); avx_fn!(vaddsd, emit_vaddsd); @@ -700,6 +714,9 @@ impl Emitter for Assembler { avx_fn!(vsqrtss, emit_vsqrtss); avx_fn!(vsqrtsd, emit_vsqrtsd); + avx_fn!(vcvtss2sd, emit_vcvtss2sd); + avx_fn!(vcvtsd2ss, emit_vcvtsd2ss); + avx_round_fn!(vroundss, emit_vroundss_nearest, 0); avx_round_fn!(vroundss, emit_vroundss_floor, 1); avx_round_fn!(vroundss, emit_vroundss_ceil, 2); From 6b514e110a86c16c8dfb9c8ce36598e999b86f66 Mon Sep 17 00:00:00 2001 From: losfair Date: Tue, 9 Apr 2019 19:10:20 +0800 Subject: [PATCH 154/413] 1241/1256 tests passing --- lib/dynasm-backend/src/codegen_x64.rs | 386 +++++++++++++++++++++++--- lib/dynasm-backend/src/emitter_x64.rs | 82 +++++- 2 files changed, 426 insertions(+), 42 deletions(-) diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index 012557f9c..3e193543b 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -631,7 +631,7 @@ impl X64FunctionCode { Location::XMM(x) => { op(a, m, src1, src2, x); }, - Location::Memory(_, _) => { + Location::Memory(_, _) | Location::GPR(_) => { op(a, m, src1, src2, tmp3); a.emit_mov(Size::S64, Location::XMM(tmp3), dst); }, @@ -944,6 +944,20 @@ impl X64FunctionCode { Self::emit_relaxed_avx(a, m, f, loc_a, loc_b, ret); } + fn emit_fp_cmpop_avx( + a: &mut Assembler, + m: &mut Machine, + value_stack: &mut Vec<(Location, LocalOrTemp)>, + f: fn(&mut Assembler, XMM, XMMOrMemory, XMM), + ) { + let loc_b = get_location_released(a, m, value_stack.pop().unwrap()); + let loc_a = get_location_released(a, m, value_stack.pop().unwrap()); + let ret = m.acquire_locations(a, &[WpType::I32], false)[0]; + value_stack.push((ret, LocalOrTemp::Temp)); + + Self::emit_relaxed_avx(a, m, f, loc_a, loc_b, ret); + } + fn emit_fp_unop_avx( a: &mut Assembler, m: &mut Machine, @@ -957,7 +971,7 @@ impl X64FunctionCode { Self::emit_relaxed_avx(a, m, f, loc, loc, ret); } - // This function must not use any temporary register before `cb` is called. + // This function must not use RAX before `cb` is called. fn emit_call_sysv, F: FnOnce(&mut Assembler)>(a: &mut Assembler, m: &mut Machine, cb: F, params: I) { let params: Vec<_> = params.collect(); @@ -971,8 +985,12 @@ impl X64FunctionCode { let used_xmms = m.get_used_xmms(); if used_xmms.len() > 0 { a.emit_sub(Size::S64, Location::Imm32((used_xmms.len() * 8) as u32), Location::GPR(GPR::RSP)); + + // FIXME: Possible dynasm bug. This is a workaround. + // Using RSP as the source/destination operand of a `mov` instruction produces invalid code. + a.emit_mov(Size::S64, Location::GPR(GPR::RSP), Location::GPR(GPR::RCX)); for (i, r) in used_xmms.iter().enumerate() { - a.emit_mov(Size::S64, Location::XMM(*r), Location::Memory(GPR::RSP, (i * 8) as i32)); + a.emit_mov(Size::S64, Location::XMM(*r), Location::Memory(GPR::RCX, (i * 8) as i32)); } } @@ -1033,8 +1051,10 @@ impl X64FunctionCode { // Restore XMMs. if used_xmms.len() > 0 { + // FIXME: Possible dynasm bug. This is a workaround. + a.emit_mov(Size::S64, Location::GPR(GPR::RSP), Location::GPR(GPR::RDX)); for (i, r) in used_xmms.iter().enumerate() { - a.emit_mov(Size::S64, Location::Memory(GPR::RSP, (i * 8) as i32), Location::XMM(*r)); + a.emit_mov(Size::S64, Location::Memory(GPR::RDX, (i * 8) as i32), Location::XMM(*r)); } a.emit_add(Size::S64, Location::Imm32((used_xmms.len() * 8) as u32), Location::GPR(GPR::RSP)); } @@ -1151,7 +1171,7 @@ impl FunctionCodeGenerator for X64FunctionCode { } fn feed_opcode(&mut self, op: Operator, module_info: &ModuleInfo) -> Result<(), CodegenError> { - //println!("{:?} {}", op, self.value_stack.len()); + println!("{:?} {}", op, self.value_stack.len()); let was_unreachable; if self.unreachable_depth > 0 { @@ -1292,7 +1312,7 @@ impl FunctionCodeGenerator for X64FunctionCode { let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; a.emit_mov(Size::S32, loc_a, Location::GPR(GPR::RAX)); a.emit_xor(Size::S32, Location::GPR(GPR::RDX), Location::GPR(GPR::RDX)); - a.emit_div(Size::S32, loc_b); + Self::emit_relaxed_xdiv(a, &mut self.machine, Assembler::emit_div, Size::S32, loc_b); a.emit_mov(Size::S32, Location::GPR(GPR::RDX), ret); self.value_stack.push((ret, LocalOrTemp::Temp)); } @@ -1303,7 +1323,7 @@ impl FunctionCodeGenerator for X64FunctionCode { let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; a.emit_mov(Size::S32, loc_a, Location::GPR(GPR::RAX)); a.emit_xor(Size::S32, Location::GPR(GPR::RDX), Location::GPR(GPR::RDX)); - a.emit_idiv(Size::S32, loc_b); + Self::emit_relaxed_xdiv(a, &mut self.machine, Assembler::emit_idiv, Size::S32, loc_b); a.emit_mov(Size::S32, Location::GPR(GPR::RDX), ret); self.value_stack.push((ret, LocalOrTemp::Temp)); } @@ -1369,7 +1389,7 @@ impl FunctionCodeGenerator for X64FunctionCode { let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; a.emit_mov(Size::S64, loc_a, Location::GPR(GPR::RAX)); a.emit_xor(Size::S64, Location::GPR(GPR::RDX), Location::GPR(GPR::RDX)); - a.emit_div(Size::S64, loc_b); + Self::emit_relaxed_xdiv(a, &mut self.machine, Assembler::emit_div, Size::S64, loc_b); a.emit_mov(Size::S64, Location::GPR(GPR::RDX), ret); self.value_stack.push((ret, LocalOrTemp::Temp)); } @@ -1380,7 +1400,7 @@ impl FunctionCodeGenerator for X64FunctionCode { let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; a.emit_mov(Size::S64, loc_a, Location::GPR(GPR::RAX)); a.emit_xor(Size::S64, Location::GPR(GPR::RDX), Location::GPR(GPR::RDX)); - a.emit_idiv(Size::S64, loc_b); + Self::emit_relaxed_xdiv(a, &mut self.machine, Assembler::emit_idiv, Size::S64, loc_b); a.emit_mov(Size::S64, Location::GPR(GPR::RDX), ret); self.value_stack.push((ret, LocalOrTemp::Temp)); } @@ -1441,12 +1461,12 @@ impl FunctionCodeGenerator for X64FunctionCode { Operator::F32Div => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vdivss), Operator::F32Max => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vmaxss), Operator::F32Min => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vminss), - Operator::F32Eq => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpeqss), - Operator::F32Ne => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpneqss), - Operator::F32Lt => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpltss), - Operator::F32Le => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpless), - Operator::F32Gt => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpgtss), - Operator::F32Ge => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpgess), + Operator::F32Eq => Self::emit_fp_cmpop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpeqss), + Operator::F32Ne => Self::emit_fp_cmpop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpneqss), + Operator::F32Lt => Self::emit_fp_cmpop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpltss), + Operator::F32Le => Self::emit_fp_cmpop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpless), + Operator::F32Gt => Self::emit_fp_cmpop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpgtss), + Operator::F32Ge => Self::emit_fp_cmpop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpgess), Operator::F32Nearest => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vroundss_nearest), Operator::F32Floor => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vroundss_floor), Operator::F32Ceil => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vroundss_ceil), @@ -1457,6 +1477,7 @@ impl FunctionCodeGenerator for X64FunctionCode { let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::F32], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); let tmp1 = self.machine.acquire_temp_gpr().unwrap(); let tmp2 = self.machine.acquire_temp_gpr().unwrap(); @@ -1473,6 +1494,7 @@ impl FunctionCodeGenerator for X64FunctionCode { Operator::F32Abs => { let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::F32], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); let tmp = self.machine.acquire_temp_gpr().unwrap(); a.emit_mov(Size::S32, loc, Location::GPR(tmp)); a.emit_and(Size::S32, Location::Imm32(0x7fffffffu32), Location::GPR(tmp)); @@ -1483,6 +1505,7 @@ impl FunctionCodeGenerator for X64FunctionCode { Operator::F32Neg => { let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::F32], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); let tmp = self.machine.acquire_temp_gpr().unwrap(); a.emit_mov(Size::S32, loc, Location::GPR(tmp)); a.emit_btc_gpr_imm8_32(31, tmp); @@ -1497,12 +1520,12 @@ impl FunctionCodeGenerator for X64FunctionCode { Operator::F64Div => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vdivsd), Operator::F64Max => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vmaxsd), Operator::F64Min => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vminsd), - Operator::F64Eq => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpeqsd), - Operator::F64Ne => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpneqsd), - Operator::F64Lt => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpltsd), - Operator::F64Le => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmplesd), - Operator::F64Gt => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpgtsd), - Operator::F64Ge => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpgesd), + Operator::F64Eq => Self::emit_fp_cmpop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpeqsd), + Operator::F64Ne => Self::emit_fp_cmpop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpneqsd), + Operator::F64Lt => Self::emit_fp_cmpop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpltsd), + Operator::F64Le => Self::emit_fp_cmpop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmplesd), + Operator::F64Gt => Self::emit_fp_cmpop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpgtsd), + Operator::F64Ge => Self::emit_fp_cmpop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpgesd), Operator::F64Nearest => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vroundsd_nearest), Operator::F64Floor => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vroundsd_floor), Operator::F64Ceil => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vroundsd_ceil), @@ -1513,6 +1536,7 @@ impl FunctionCodeGenerator for X64FunctionCode { let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::F64], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); let tmp1 = self.machine.acquire_temp_gpr().unwrap(); let tmp2 = self.machine.acquire_temp_gpr().unwrap(); @@ -1538,6 +1562,7 @@ impl FunctionCodeGenerator for X64FunctionCode { Operator::F64Abs => { let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::F64], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); let tmp = self.machine.acquire_temp_gpr().unwrap(); let c = self.machine.acquire_temp_gpr().unwrap(); @@ -1554,6 +1579,7 @@ impl FunctionCodeGenerator for X64FunctionCode { Operator::F64Neg => { let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::F64], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); let tmp = self.machine.acquire_temp_gpr().unwrap(); a.emit_mov(Size::S64, loc, Location::GPR(tmp)); a.emit_btc_gpr_imm8_64(63, tmp); @@ -1564,6 +1590,232 @@ impl FunctionCodeGenerator for X64FunctionCode { Operator::F64PromoteF32 => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcvtss2sd), Operator::F32DemoteF64 => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcvtsd2ss), + Operator::I32ReinterpretF32 => { + let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + + if loc != ret { + Self::emit_relaxed_binop( + a, &mut self.machine, Assembler::emit_mov, + Size::S32, loc, ret, + ); + } + } + Operator::F32ReinterpretI32 => { + let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::F32], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + + if loc != ret { + Self::emit_relaxed_binop( + a, &mut self.machine, Assembler::emit_mov, + Size::S32, loc, ret, + ); + } + } + + Operator::I64ReinterpretF64 => { + let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + + if loc != ret { + Self::emit_relaxed_binop( + a, &mut self.machine, Assembler::emit_mov, + Size::S64, loc, ret, + ); + } + } + Operator::F64ReinterpretI64 => { + let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::F64], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + + if loc != ret { + Self::emit_relaxed_binop( + a, &mut self.machine, Assembler::emit_mov, + Size::S64, loc, ret, + ); + } + } + + Operator::I32TruncUF32 => { + let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + let tmp_out = self.machine.acquire_temp_gpr().unwrap(); + let tmp_in = self.machine.acquire_temp_xmm().unwrap(); + + a.emit_mov(Size::S32, loc, Location::XMM(tmp_in)); + a.emit_cvttss2si_64(XMMOrMemory::XMM(tmp_in), tmp_out); + a.emit_mov(Size::S32, Location::GPR(tmp_out), ret); + + self.machine.release_temp_xmm(tmp_in); + self.machine.release_temp_gpr(tmp_out); + } + + Operator::I32TruncSF32 => { + let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + let tmp_out = self.machine.acquire_temp_gpr().unwrap(); + let tmp_in = self.machine.acquire_temp_xmm().unwrap(); + + a.emit_mov(Size::S32, loc, Location::XMM(tmp_in)); + a.emit_cvttss2si_32(XMMOrMemory::XMM(tmp_in), tmp_out); + a.emit_mov(Size::S32, Location::GPR(tmp_out), ret); + + self.machine.release_temp_xmm(tmp_in); + self.machine.release_temp_gpr(tmp_out); + } + + Operator::I64TruncSF32 | Operator::I64TruncUF32 /* FIXME: INCORRECT */ => { + let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + let tmp_out = self.machine.acquire_temp_gpr().unwrap(); + let tmp_in = self.machine.acquire_temp_xmm().unwrap(); + + a.emit_mov(Size::S32, loc, Location::XMM(tmp_in)); + a.emit_cvttss2si_64(XMMOrMemory::XMM(tmp_in), tmp_out); + a.emit_mov(Size::S64, Location::GPR(tmp_out), ret); + + self.machine.release_temp_xmm(tmp_in); + self.machine.release_temp_gpr(tmp_out); + } + + Operator::I32TruncUF64 => { + let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + let tmp_out = self.machine.acquire_temp_gpr().unwrap(); + let tmp_in = self.machine.acquire_temp_xmm().unwrap(); + + a.emit_mov(Size::S64, loc, Location::XMM(tmp_in)); + a.emit_cvttsd2si_64(XMMOrMemory::XMM(tmp_in), tmp_out); + a.emit_mov(Size::S32, Location::GPR(tmp_out), ret); + + self.machine.release_temp_xmm(tmp_in); + self.machine.release_temp_gpr(tmp_out); + } + + Operator::I32TruncSF64 => { + let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + let tmp_out = self.machine.acquire_temp_gpr().unwrap(); + let tmp_in = self.machine.acquire_temp_xmm().unwrap(); + + a.emit_mov(Size::S64, loc, Location::XMM(tmp_in)); + a.emit_cvttsd2si_32(XMMOrMemory::XMM(tmp_in), tmp_out); + a.emit_mov(Size::S32, Location::GPR(tmp_out), ret); + + self.machine.release_temp_xmm(tmp_in); + self.machine.release_temp_gpr(tmp_out); + } + + Operator::I64TruncSF64 | Operator::I64TruncUF64 /* FIXME: INCORRECT */ => { + let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + let tmp_out = self.machine.acquire_temp_gpr().unwrap(); + let tmp_in = self.machine.acquire_temp_xmm().unwrap(); + + a.emit_mov(Size::S64, loc, Location::XMM(tmp_in)); + a.emit_cvttsd2si_64(XMMOrMemory::XMM(tmp_in), tmp_out); + a.emit_mov(Size::S64, Location::GPR(tmp_out), ret); + + self.machine.release_temp_xmm(tmp_in); + self.machine.release_temp_gpr(tmp_out); + } + + Operator::F32ConvertSI32 => { + let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::F32], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + let tmp_out = self.machine.acquire_temp_xmm().unwrap(); + let tmp_in = self.machine.acquire_temp_gpr().unwrap(); + + a.emit_mov(Size::S32, loc, Location::GPR(tmp_in)); + a.emit_vcvtsi2ss_32(tmp_out, GPROrMemory::GPR(tmp_in), tmp_out); + a.emit_mov(Size::S32, Location::XMM(tmp_out), ret); + + self.machine.release_temp_gpr(tmp_in); + self.machine.release_temp_xmm(tmp_out); + } + Operator::F32ConvertUI32 => { + let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::F32], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + let tmp_out = self.machine.acquire_temp_xmm().unwrap(); + let tmp_in = self.machine.acquire_temp_gpr().unwrap(); + + a.emit_mov(Size::S32, loc, Location::GPR(tmp_in)); + a.emit_vcvtsi2ss_64(tmp_out, GPROrMemory::GPR(tmp_in), tmp_out); + a.emit_mov(Size::S32, Location::XMM(tmp_out), ret); + + self.machine.release_temp_gpr(tmp_in); + self.machine.release_temp_xmm(tmp_out); + } + Operator::F32ConvertSI64 | Operator::F32ConvertUI64 /* FIXME: INCORRECT */ => { + let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::F32], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + let tmp_out = self.machine.acquire_temp_xmm().unwrap(); + let tmp_in = self.machine.acquire_temp_gpr().unwrap(); + + a.emit_mov(Size::S64, loc, Location::GPR(tmp_in)); + a.emit_vcvtsi2ss_64(tmp_out, GPROrMemory::GPR(tmp_in), tmp_out); + a.emit_mov(Size::S32, Location::XMM(tmp_out), ret); + + self.machine.release_temp_gpr(tmp_in); + self.machine.release_temp_xmm(tmp_out); + } + + Operator::F64ConvertSI32 => { + let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::F64], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + let tmp_out = self.machine.acquire_temp_xmm().unwrap(); + let tmp_in = self.machine.acquire_temp_gpr().unwrap(); + + a.emit_mov(Size::S32, loc, Location::GPR(tmp_in)); + a.emit_vcvtsi2sd_32(tmp_out, GPROrMemory::GPR(tmp_in), tmp_out); + a.emit_mov(Size::S64, Location::XMM(tmp_out), ret); + + self.machine.release_temp_gpr(tmp_in); + self.machine.release_temp_xmm(tmp_out); + } + Operator::F64ConvertUI32 => { + let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::F64], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + let tmp_out = self.machine.acquire_temp_xmm().unwrap(); + let tmp_in = self.machine.acquire_temp_gpr().unwrap(); + + a.emit_mov(Size::S32, loc, Location::GPR(tmp_in)); + a.emit_vcvtsi2sd_64(tmp_out, GPROrMemory::GPR(tmp_in), tmp_out); + a.emit_mov(Size::S64, Location::XMM(tmp_out), ret); + + self.machine.release_temp_gpr(tmp_in); + self.machine.release_temp_xmm(tmp_out); + } + Operator::F64ConvertSI64 | Operator::F64ConvertUI64 /* FIXME: INCORRECT */ => { + let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::F64], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + let tmp_out = self.machine.acquire_temp_xmm().unwrap(); + let tmp_in = self.machine.acquire_temp_gpr().unwrap(); + + a.emit_mov(Size::S64, loc, Location::GPR(tmp_in)); + a.emit_vcvtsi2sd_64(tmp_out, GPROrMemory::GPR(tmp_in), tmp_out); + a.emit_mov(Size::S64, Location::XMM(tmp_out), ret); + + self.machine.release_temp_gpr(tmp_in); + self.machine.release_temp_xmm(tmp_out); + } + Operator::Call { function_index } => { let function_index = function_index as usize; let label = self @@ -1616,6 +1868,7 @@ impl FunctionCodeGenerator for X64FunctionCode { let table_base = self.machine.acquire_temp_gpr().unwrap(); let table_count = self.machine.acquire_temp_gpr().unwrap(); + let sigidx = self.machine.acquire_temp_gpr().unwrap(); a.emit_mov( Size::S64, @@ -1636,14 +1889,21 @@ impl FunctionCodeGenerator for X64FunctionCode { a.emit_mov(Size::S64, func_index, Location::GPR(table_count)); a.emit_imul_imm32_gpr64(vm::Anyfunc::size() as u32, table_count); a.emit_add(Size::S64, Location::GPR(table_base), Location::GPR(table_count)); - a.emit_cmp(Size::S32, Location::Imm32(index), Location::Memory(table_count, (vm::Anyfunc::offset_sig_id() as usize) as i32)); + a.emit_mov(Size::S64, Location::Memory(Machine::get_vmctx_reg(), vm::Ctx::offset_signatures() as i32), Location::GPR(sigidx)); + a.emit_mov(Size::S32, Location::Memory(sigidx, (index * 4) as i32), Location::GPR(sigidx)); + a.emit_cmp(Size::S32, Location::GPR(sigidx), Location::Memory(table_count, (vm::Anyfunc::offset_sig_id() as usize) as i32)); a.emit_conditional_trap(Condition::NotEqual); + self.machine.release_temp_gpr(sigidx); self.machine.release_temp_gpr(table_count); self.machine.release_temp_gpr(table_base); + if table_count != GPR::RAX { + a.emit_mov(Size::S64, Location::GPR(table_count), Location::GPR(GPR::RAX)); + } + Self::emit_call_sysv(a, &mut self.machine, |a| { - a.emit_call_location(Location::Memory(table_count, (vm::Anyfunc::offset_func() as usize) as i32)); + a.emit_call_location(Location::Memory(GPR::RAX, (vm::Anyfunc::offset_func() as usize) as i32)); }, params.iter().map(|&(x, _)| x)); self.machine.release_locations_only_stack(a, &released); @@ -1843,6 +2103,18 @@ impl FunctionCodeGenerator for X64FunctionCode { ); }); } + Operator::F32Load { memarg } => { + let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::F32], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + + Self::emit_memory_op(module_info, a, &mut self.machine, target, memarg.offset as usize, 4, |a, m, addr| { + Self::emit_relaxed_binop( + a, m, Assembler::emit_mov, + Size::S32, Location::Memory(addr, 0), ret, + ); + }); + } Operator::I32Load8U { memarg } => { let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; @@ -1902,6 +2174,17 @@ impl FunctionCodeGenerator for X64FunctionCode { ); }); } + Operator::F32Store { memarg } => { + let target_value = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target_addr = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + + Self::emit_memory_op(module_info, a, &mut self.machine, target_addr, memarg.offset as usize, 4, |a, m, addr| { + Self::emit_relaxed_binop( + a, m, Assembler::emit_mov, + Size::S32, target_value, Location::Memory(addr, 0), + ); + }); + } Operator::I32Store8 { memarg } => { let target_value = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let target_addr = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); @@ -1936,6 +2219,18 @@ impl FunctionCodeGenerator for X64FunctionCode { ); }); } + Operator::F64Load { memarg } => { + let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::F64], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + + Self::emit_memory_op(module_info, a, &mut self.machine, target, memarg.offset as usize, 8, |a, m, addr| { + Self::emit_relaxed_binop( + a, m, Assembler::emit_mov, + Size::S64, Location::Memory(addr, 0), ret, + ); + }); + } Operator::I64Load8U { memarg } => { let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; @@ -2025,6 +2320,17 @@ impl FunctionCodeGenerator for X64FunctionCode { ); }); } + Operator::F64Store { memarg } => { + let target_value = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target_addr = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + + Self::emit_memory_op(module_info, a, &mut self.machine, target_addr, memarg.offset as usize, 8, |a, m, addr| { + Self::emit_relaxed_binop( + a, m, Assembler::emit_mov, + Size::S64, target_value, Location::Memory(addr, 0), + ); + }); + } Operator::I64Store8 { memarg } => { let target_value = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let target_addr = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); @@ -2085,17 +2391,11 @@ impl FunctionCodeGenerator for X64FunctionCode { } Operator::Br { relative_depth } => { let frame = &self.control_stack[self.control_stack.len() - 1 - (relative_depth as usize)]; - let has_return = if !frame.loop_like && frame.returns.len() > 0 { + if !frame.loop_like && frame.returns.len() > 0 { assert_eq!(frame.returns.len(), 1); let (loc, _) = *self.value_stack.last().unwrap(); - Self::emit_relaxed_binop( - a, &mut self.machine, Assembler::emit_mov, - Size::S64, loc, Location::GPR(GPR::RAX), - ); - true - } else { - false - }; + a.emit_mov(Size::S64, loc, Location::GPR(GPR::RAX)); + } let released: Vec = self.value_stack[frame.value_stack_depth..].iter() .filter(|&&(_, lot)| lot == LocalOrTemp::Temp) .map(|&(x, _)| x) @@ -2114,17 +2414,11 @@ impl FunctionCodeGenerator for X64FunctionCode { a.emit_jmp(Condition::Equal, after); let frame = &self.control_stack[self.control_stack.len() - 1 - (relative_depth as usize)]; - let has_return = if !frame.loop_like && frame.returns.len() > 0 { + if !frame.loop_like && frame.returns.len() > 0 { assert_eq!(frame.returns.len(), 1); let (loc, _) = *self.value_stack.last().unwrap(); - Self::emit_relaxed_binop( - a, &mut self.machine, Assembler::emit_mov, - Size::S64, loc, Location::GPR(GPR::RAX), - ); - true - } else { - false - }; + a.emit_mov(Size::S64, loc, Location::GPR(GPR::RAX)); + } let released: Vec = self.value_stack[frame.value_stack_depth..].iter() .filter(|&&(_, lot)| lot == LocalOrTemp::Temp) .map(|&(x, _)| x) @@ -2155,6 +2449,11 @@ impl FunctionCodeGenerator for X64FunctionCode { let AssemblyOffset(offset) = a.offset(); table[i] = offset; let frame = &self.control_stack[self.control_stack.len() - 1 - (*target as usize)]; + if !frame.loop_like && frame.returns.len() > 0 { + assert_eq!(frame.returns.len(), 1); + let (loc, _) = *self.value_stack.last().unwrap(); + a.emit_mov(Size::S64, loc, Location::GPR(GPR::RAX)); + } let released: Vec = self.value_stack[frame.value_stack_depth..].iter() .filter(|&&(_, lot)| lot == LocalOrTemp::Temp) .map(|&(x, _)| x) @@ -2166,6 +2465,11 @@ impl FunctionCodeGenerator for X64FunctionCode { { let frame = &self.control_stack[self.control_stack.len() - 1 - (default_target as usize)]; + if !frame.loop_like && frame.returns.len() > 0 { + assert_eq!(frame.returns.len(), 1); + let (loc, _) = *self.value_stack.last().unwrap(); + a.emit_mov(Size::S64, loc, Location::GPR(GPR::RAX)); + } let released: Vec = self.value_stack[frame.value_stack_depth..].iter() .filter(|&&(_, lot)| lot == LocalOrTemp::Temp) .map(|&(x, _)| x) diff --git a/lib/dynasm-backend/src/emitter_x64.rs b/lib/dynasm-backend/src/emitter_x64.rs index 91c0bcab7..7cc00c1cd 100644 --- a/lib/dynasm-backend/src/emitter_x64.rs +++ b/lib/dynasm-backend/src/emitter_x64.rs @@ -75,6 +75,12 @@ pub enum XMMOrMemory { Memory(GPR, i32), } +#[derive(Copy, Clone, Debug)] +pub enum GPROrMemory { + GPR(GPR), + Memory(GPR, i32), +} + pub trait Emitter { type Label; type Offset; @@ -165,6 +171,16 @@ pub trait Emitter { fn emit_vcvtss2sd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); fn emit_vcvtsd2ss(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + fn emit_cvttss2si_32(&mut self, src: XMMOrMemory, dst: GPR); + fn emit_cvttss2si_64(&mut self, src: XMMOrMemory, dst: GPR); + fn emit_cvttsd2si_32(&mut self, src: XMMOrMemory, dst: GPR); + fn emit_cvttsd2si_64(&mut self, src: XMMOrMemory, dst: GPR); + + fn emit_vcvtsi2ss_32(&mut self, src1: XMM, src2: GPROrMemory, dst: XMM); + fn emit_vcvtsi2ss_64(&mut self, src1: XMM, src2: GPROrMemory, dst: XMM); + fn emit_vcvtsi2sd_32(&mut self, src1: XMM, src2: GPROrMemory, dst: XMM); + fn emit_vcvtsi2sd_64(&mut self, src1: XMM, src2: GPROrMemory, dst: XMM); + fn emit_ud2(&mut self); fn emit_ret(&mut self); fn emit_call_label(&mut self, label: Self::Label); @@ -374,6 +390,28 @@ macro_rules! avx_fn { } } +macro_rules! avx_i2f_64_fn { + ($ins:ident, $name:ident) => { + fn $name(&mut self, src1: XMM, src2: GPROrMemory, dst: XMM) { + match src2 { + GPROrMemory::GPR(x) => dynasm!(self ; $ins Rx((dst as u8)), Rx((src1 as u8)), Rq((x as u8))), + GPROrMemory::Memory(base, disp) => dynasm!(self ; $ins Rx((dst as u8)), Rx((src1 as u8)), QWORD [Rq((base as u8)) + disp]), + } + } + } +} + +macro_rules! avx_i2f_32_fn { + ($ins:ident, $name:ident) => { + fn $name(&mut self, src1: XMM, src2: GPROrMemory, dst: XMM) { + match src2 { + GPROrMemory::GPR(x) => dynasm!(self ; $ins Rx((dst as u8)), Rx((src1 as u8)), Rd((x as u8))), + GPROrMemory::Memory(base, disp) => dynasm!(self ; $ins Rx((dst as u8)), Rx((src1 as u8)), DWORD [Rq((base as u8)) + disp]), + } + } + } +} + macro_rules! avx_round_fn { ($ins:ident, $name:ident, $mode:expr) => { fn $name(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) { @@ -411,9 +449,15 @@ impl Emitter for Assembler { (Size::S8, Location::GPR(src), Location::Memory(dst, disp)) => { dynasm!(self ; mov [Rq(dst as u8) + disp], Rb(src as u8)); } + (Size::S8, Location::Imm32(src), Location::Memory(dst, disp)) => { + dynasm!(self ; mov BYTE [Rq(dst as u8) + disp], src as i8); + } (Size::S16, Location::GPR(src), Location::Memory(dst, disp)) => { dynasm!(self ; mov [Rq(dst as u8) + disp], Rw(src as u8)); } + (Size::S16, Location::Imm32(src), Location::Memory(dst, disp)) => { + dynasm!(self ; mov WORD [Rq(dst as u8) + disp], src as i16); + } (Size::S32, Location::GPR(src), Location::XMM(dst)) => { dynasm!(self ; movd Rx(dst as u8), Rd(src as u8)); }, @@ -439,8 +483,11 @@ impl Emitter for Assembler { (Size::S64, Location::XMM(src), Location::Memory(dst, disp)) => { dynasm!(self ; movq [Rq(dst as u8) + disp], Rx(src as u8)); }, + (_, Location::XMM(src), Location::XMM(dst)) => { + dynasm!(self ; movq Rx(dst as u8), Rx(src as u8)); + }, - _ => unreachable!() + _ => panic!("MOV {:?} {:?} {:?}", sz, src, dst), } } )} @@ -726,6 +773,39 @@ impl Emitter for Assembler { avx_round_fn!(vroundsd, emit_vroundsd_ceil, 2); avx_round_fn!(vroundsd, emit_vroundsd_trunc, 3); + avx_i2f_32_fn!(vcvtsi2ss, emit_vcvtsi2ss_32); + avx_i2f_32_fn!(vcvtsi2sd, emit_vcvtsi2sd_32); + avx_i2f_64_fn!(vcvtsi2ss, emit_vcvtsi2ss_64); + avx_i2f_64_fn!(vcvtsi2sd, emit_vcvtsi2sd_64); + + fn emit_cvttss2si_32(&mut self, src: XMMOrMemory, dst: GPR) { + match src { + XMMOrMemory::XMM(x) => dynasm!(self ; cvttss2si Rd(dst as u8), Rx(x as u8)), + XMMOrMemory::Memory(base, disp) => dynasm!(self ; cvttss2si Rd(dst as u8), [Rq(base as u8) + disp]), + } + } + + fn emit_cvttss2si_64(&mut self, src: XMMOrMemory, dst: GPR) { + match src { + XMMOrMemory::XMM(x) => dynasm!(self ; cvttss2si Rq(dst as u8), Rx(x as u8)), + XMMOrMemory::Memory(base, disp) => dynasm!(self ; cvttss2si Rq(dst as u8), [Rq(base as u8) + disp]), + } + } + + fn emit_cvttsd2si_32(&mut self, src: XMMOrMemory, dst: GPR) { + match src { + XMMOrMemory::XMM(x) => dynasm!(self ; cvttsd2si Rd(dst as u8), Rx(x as u8)), + XMMOrMemory::Memory(base, disp) => dynasm!(self ; cvttsd2si Rd(dst as u8), [Rq(base as u8) + disp]), + } + } + + fn emit_cvttsd2si_64(&mut self, src: XMMOrMemory, dst: GPR) { + match src { + XMMOrMemory::XMM(x) => dynasm!(self ; cvttsd2si Rq(dst as u8), Rx(x as u8)), + XMMOrMemory::Memory(base, disp) => dynasm!(self ; cvttsd2si Rq(dst as u8), [Rq(base as u8) + disp]), + } + } + fn emit_ud2(&mut self) { dynasm!(self ; ud2); } From 69d60939550e00225b722a4cb2f20c80ab2617a1 Mon Sep 17 00:00:00 2001 From: losfair Date: Wed, 10 Apr 2019 00:41:32 +0800 Subject: [PATCH 155/413] Fix GetGlobal, RemS/U and floating point comparison. --- lib/dynasm-backend/src/codegen_x64.rs | 54 ++++++++++++++++----------- 1 file changed, 33 insertions(+), 21 deletions(-) diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index 3e193543b..8620781d5 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -16,7 +16,7 @@ use wasmer_runtime_core::{ module::{ModuleInfo, ModuleInner}, structures::{Map, TypedIndex}, types::{ - FuncIndex, FuncSig, ImportedMemoryIndex, LocalFuncIndex, LocalGlobalIndex, + FuncIndex, FuncSig, ImportedMemoryIndex, LocalFuncIndex, LocalGlobalIndex, GlobalIndex, LocalMemoryIndex, LocalOrImport, MemoryIndex, SigIndex, Type, Value, TableIndex, }, units::Pages, @@ -956,6 +956,7 @@ impl X64FunctionCode { value_stack.push((ret, LocalOrTemp::Temp)); Self::emit_relaxed_avx(a, m, f, loc_a, loc_b, ret); + a.emit_and(Size::S32, Location::Imm32(1), ret); // FIXME: Why? } fn emit_fp_unop_avx( @@ -1208,27 +1209,38 @@ impl FunctionCodeGenerator for X64FunctionCode { match op { Operator::GetGlobal { global_index } => { let mut global_index = global_index as usize; - let loc = self.machine.acquire_locations( - a, - &[type_to_wp_type( - module_info.globals[LocalGlobalIndex::new(global_index)] - .desc - .ty, - )], - false - )[0]; - self.value_stack.push((loc, LocalOrTemp::Temp)); let tmp = self.machine.acquire_temp_gpr().unwrap(); - if global_index < module_info.imported_globals.len() { - a.emit_mov(Size::S64, Location::Memory(Machine::get_vmctx_reg(), vm::Ctx::offset_imported_globals() as i32), Location::GPR(tmp)); - } else { - global_index -= module_info.imported_globals.len(); - assert!(global_index < module_info.globals.len()); - a.emit_mov(Size::S64, Location::Memory(Machine::get_vmctx_reg(), vm::Ctx::offset_globals() as i32), Location::GPR(tmp)); - } - a.emit_mov(Size::S64, Location::Memory(tmp, (global_index as i32) * 8), Location::GPR(tmp)); + let loc = match GlobalIndex::new(global_index).local_or_import(module_info) { + LocalOrImport::Local(local_index) => { + a.emit_mov(Size::S64, Location::Memory(Machine::get_vmctx_reg(), vm::Ctx::offset_globals() as i32), Location::GPR(tmp)); + a.emit_mov(Size::S64, Location::Memory(tmp, (local_index.index() as i32) * 8), Location::GPR(tmp)); + self.machine.acquire_locations( + a, + &[type_to_wp_type( + module_info.globals[local_index] + .desc + .ty, + )], + false + )[0] + }, + LocalOrImport::Import(import_index) => { + a.emit_mov(Size::S64, Location::Memory(Machine::get_vmctx_reg(), vm::Ctx::offset_imported_globals() as i32), Location::GPR(tmp)); + a.emit_mov(Size::S64, Location::Memory(tmp, (import_index.index() as i32) * 8), Location::GPR(tmp)); + self.machine.acquire_locations( + a, + &[type_to_wp_type( + module_info.imported_globals[import_index].1 + .ty, + )], + false + )[0] + }, + }; + self.value_stack.push((loc, LocalOrTemp::Temp)); + Self::emit_relaxed_binop( a, &mut self.machine, Assembler::emit_mov, Size::S64, Location::Memory(tmp, LocalGlobal::offset_data() as i32), loc @@ -1322,7 +1334,7 @@ impl FunctionCodeGenerator for X64FunctionCode { let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; a.emit_mov(Size::S32, loc_a, Location::GPR(GPR::RAX)); - a.emit_xor(Size::S32, Location::GPR(GPR::RDX), Location::GPR(GPR::RDX)); + a.emit_cdq(); Self::emit_relaxed_xdiv(a, &mut self.machine, Assembler::emit_idiv, Size::S32, loc_b); a.emit_mov(Size::S32, Location::GPR(GPR::RDX), ret); self.value_stack.push((ret, LocalOrTemp::Temp)); @@ -1399,7 +1411,7 @@ impl FunctionCodeGenerator for X64FunctionCode { let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; a.emit_mov(Size::S64, loc_a, Location::GPR(GPR::RAX)); - a.emit_xor(Size::S64, Location::GPR(GPR::RDX), Location::GPR(GPR::RDX)); + a.emit_cqo(); Self::emit_relaxed_xdiv(a, &mut self.machine, Assembler::emit_idiv, Size::S64, loc_b); a.emit_mov(Size::S64, Location::GPR(GPR::RDX), ret); self.value_stack.push((ret, LocalOrTemp::Temp)); From e78a5ba602b1fc7d2588be1ad1fac7a51f84d8b9 Mon Sep 17 00:00:00 2001 From: losfair Date: Wed, 10 Apr 2019 01:38:16 +0800 Subject: [PATCH 156/413] F32ConvertUI64, F64ConvertUI64 --- lib/dynasm-backend/src/codegen_x64.rs | 72 ++++++++++++++++++++++++--- lib/dynasm-backend/src/emitter_x64.rs | 16 ++++++ 2 files changed, 80 insertions(+), 8 deletions(-) diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index 8620781d5..9ad27d2e4 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -1172,7 +1172,7 @@ impl FunctionCodeGenerator for X64FunctionCode { } fn feed_opcode(&mut self, op: Operator, module_info: &ModuleInfo) -> Result<(), CodegenError> { - println!("{:?} {}", op, self.value_stack.len()); + //println!("{:?} {}", op, self.value_stack.len()); let was_unreachable; if self.unreachable_depth > 0 { @@ -1363,11 +1363,7 @@ impl FunctionCodeGenerator for X64FunctionCode { Operator::I32GeS => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::GreaterEqual), Operator::I64Const { value } => { let value = value as u64; - if value <= ::std::u32::MAX as u64 { - self.value_stack.push((Location::Imm32(value as u32), LocalOrTemp::Temp)) - } else { - self.value_stack.push((Location::Imm64(value), LocalOrTemp::Temp)) - } + self.value_stack.push((Location::Imm64(value), LocalOrTemp::Temp)); }, Operator::I64Add => Self::emit_binop_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_add), Operator::I64Sub => Self::emit_binop_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_sub), @@ -1770,7 +1766,7 @@ impl FunctionCodeGenerator for X64FunctionCode { self.machine.release_temp_gpr(tmp_in); self.machine.release_temp_xmm(tmp_out); } - Operator::F32ConvertSI64 | Operator::F32ConvertUI64 /* FIXME: INCORRECT */ => { + Operator::F32ConvertSI64 => { let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::F32], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); @@ -1784,6 +1780,36 @@ impl FunctionCodeGenerator for X64FunctionCode { self.machine.release_temp_gpr(tmp_in); self.machine.release_temp_xmm(tmp_out); } + Operator::F32ConvertUI64 => { + let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::F32], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + let tmp_out = self.machine.acquire_temp_xmm().unwrap(); + let tmp_in = self.machine.acquire_temp_gpr().unwrap(); + let tmp = self.machine.acquire_temp_gpr().unwrap(); + + let do_convert = a.get_label(); + let end_convert = a.get_label(); + + a.emit_mov(Size::S64, loc, Location::GPR(tmp_in)); + a.emit_test_gpr_64(tmp_in); + a.emit_jmp(Condition::Signed, do_convert); + a.emit_vcvtsi2ss_64(tmp_out, GPROrMemory::GPR(tmp_in), tmp_out); + a.emit_jmp(Condition::None, end_convert); + a.emit_label(do_convert); + a.emit_mov(Size::S64, Location::GPR(tmp_in), Location::GPR(tmp)); + a.emit_and(Size::S64, Location::Imm32(1), Location::GPR(tmp)); + a.emit_shr(Size::S64, Location::Imm8(1), Location::GPR(tmp_in)); + a.emit_or(Size::S64, Location::GPR(tmp), Location::GPR(tmp_in)); + a.emit_vcvtsi2ss_64(tmp_out, GPROrMemory::GPR(tmp_in), tmp_out); + a.emit_vaddss(tmp_out, XMMOrMemory::XMM(tmp_out), tmp_out); + a.emit_label(end_convert); + a.emit_mov(Size::S32, Location::XMM(tmp_out), ret); + + self.machine.release_temp_gpr(tmp); + self.machine.release_temp_gpr(tmp_in); + self.machine.release_temp_xmm(tmp_out); + } Operator::F64ConvertSI32 => { let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); @@ -1813,7 +1839,7 @@ impl FunctionCodeGenerator for X64FunctionCode { self.machine.release_temp_gpr(tmp_in); self.machine.release_temp_xmm(tmp_out); } - Operator::F64ConvertSI64 | Operator::F64ConvertUI64 /* FIXME: INCORRECT */ => { + Operator::F64ConvertSI64 => { let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::F64], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); @@ -1827,6 +1853,36 @@ impl FunctionCodeGenerator for X64FunctionCode { self.machine.release_temp_gpr(tmp_in); self.machine.release_temp_xmm(tmp_out); } + Operator::F64ConvertUI64 => { + let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::F64], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + let tmp_out = self.machine.acquire_temp_xmm().unwrap(); + let tmp_in = self.machine.acquire_temp_gpr().unwrap(); + let tmp = self.machine.acquire_temp_gpr().unwrap(); + + let do_convert = a.get_label(); + let end_convert = a.get_label(); + + a.emit_mov(Size::S64, loc, Location::GPR(tmp_in)); + a.emit_test_gpr_64(tmp_in); + a.emit_jmp(Condition::Signed, do_convert); + a.emit_vcvtsi2sd_64(tmp_out, GPROrMemory::GPR(tmp_in), tmp_out); + a.emit_jmp(Condition::None, end_convert); + a.emit_label(do_convert); + a.emit_mov(Size::S64, Location::GPR(tmp_in), Location::GPR(tmp)); + a.emit_and(Size::S64, Location::Imm32(1), Location::GPR(tmp)); + a.emit_shr(Size::S64, Location::Imm8(1), Location::GPR(tmp_in)); + a.emit_or(Size::S64, Location::GPR(tmp), Location::GPR(tmp_in)); + a.emit_vcvtsi2sd_64(tmp_out, GPROrMemory::GPR(tmp_in), tmp_out); + a.emit_vaddsd(tmp_out, XMMOrMemory::XMM(tmp_out), tmp_out); + a.emit_label(end_convert); + a.emit_mov(Size::S64, Location::XMM(tmp_out), ret); + + self.machine.release_temp_gpr(tmp); + self.machine.release_temp_gpr(tmp_in); + self.machine.release_temp_xmm(tmp_out); + } Operator::Call { function_index } => { let function_index = function_index as usize; diff --git a/lib/dynasm-backend/src/emitter_x64.rs b/lib/dynasm-backend/src/emitter_x64.rs index 7cc00c1cd..6f7670ab2 100644 --- a/lib/dynasm-backend/src/emitter_x64.rs +++ b/lib/dynasm-backend/src/emitter_x64.rs @@ -59,6 +59,7 @@ pub enum Condition { LessEqual, Equal, NotEqual, + Signed, } #[derive(Copy, Clone, Debug, Eq, PartialEq)] @@ -181,6 +182,8 @@ pub trait Emitter { fn emit_vcvtsi2sd_32(&mut self, src1: XMM, src2: GPROrMemory, dst: XMM); fn emit_vcvtsi2sd_64(&mut self, src1: XMM, src2: GPROrMemory, dst: XMM); + fn emit_test_gpr_64(&mut self, reg: GPR); + fn emit_ud2(&mut self); fn emit_ret(&mut self); fn emit_call_label(&mut self, label: Self::Label); @@ -449,12 +452,18 @@ impl Emitter for Assembler { (Size::S8, Location::GPR(src), Location::Memory(dst, disp)) => { dynasm!(self ; mov [Rq(dst as u8) + disp], Rb(src as u8)); } + (Size::S8, Location::Memory(src, disp), Location::GPR(dst)) => { + dynasm!(self ; mov Rb(dst as u8), [Rq(src as u8) + disp]); + } (Size::S8, Location::Imm32(src), Location::Memory(dst, disp)) => { dynasm!(self ; mov BYTE [Rq(dst as u8) + disp], src as i8); } (Size::S16, Location::GPR(src), Location::Memory(dst, disp)) => { dynasm!(self ; mov [Rq(dst as u8) + disp], Rw(src as u8)); } + (Size::S16, Location::Memory(src, disp), Location::GPR(dst)) => { + dynasm!(self ; mov Rw(dst as u8), [Rq(src as u8) + disp]); + } (Size::S16, Location::Imm32(src), Location::Memory(dst, disp)) => { dynasm!(self ; mov WORD [Rq(dst as u8) + disp], src as i16); } @@ -534,6 +543,7 @@ impl Emitter for Assembler { Condition::LessEqual => jmp_op!(jle, self, label), Condition::Equal => jmp_op!(je, self, label), Condition::NotEqual => jmp_op!(jne, self, label), + Condition::Signed => jmp_op!(js, self, label), } } fn emit_jmp_location(&mut self, loc: Location) { @@ -556,6 +566,7 @@ impl Emitter for Assembler { Condition::LessEqual => trap_op!(jle, self), Condition::Equal => trap_op!(je, self), Condition::NotEqual => trap_op!(jne, self), + Condition::Signed => trap_op!(js, self), } } fn emit_set(&mut self, condition: Condition, dst: GPR) { @@ -570,6 +581,7 @@ impl Emitter for Assembler { Condition::LessEqual => dynasm!(self ; setle Rb(dst as u8)), Condition::Equal => dynasm!(self ; sete Rb(dst as u8)), Condition::NotEqual => dynasm!(self ; setne Rb(dst as u8)), + Condition::Signed => dynasm!(self ; sets Rb(dst as u8)), _ => unreachable!() } } @@ -806,6 +818,10 @@ impl Emitter for Assembler { } } + fn emit_test_gpr_64(&mut self, reg: GPR) { + dynasm!(self ; test Rq(reg as u8), Rq(reg as u8)); + } + fn emit_ud2(&mut self) { dynasm!(self ; ud2); } From 5e1a67d835edee8a427d4500ef0f9bc6c0a4baad Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Tue, 9 Apr 2019 12:48:41 -0700 Subject: [PATCH 157/413] Initial typed func rewrite --- lib/runtime-core/src/instance.rs | 8 +- lib/runtime-core/src/typed_func.rs | 201 ++++++++++++++++++++++++----- lib/runtime-core/src/types.rs | 62 +++++++++ 3 files changed, 235 insertions(+), 36 deletions(-) diff --git a/lib/runtime-core/src/instance.rs b/lib/runtime-core/src/instance.rs index 956b95d7b..f1e6a0613 100644 --- a/lib/runtime-core/src/instance.rs +++ b/lib/runtime-core/src/instance.rs @@ -9,7 +9,7 @@ use crate::{ module::{ExportIndex, Module, ModuleInner}, sig_registry::SigRegistry, table::Table, - typed_func::{Func, Safe, WasmTypeList}, + typed_func::{Func, Wasm, WasmTypeList}, types::{FuncIndex, FuncSig, GlobalIndex, LocalOrImport, MemoryIndex, TableIndex, Value}, vm, }; @@ -107,7 +107,7 @@ impl Instance { /// # Ok(()) /// # } /// ``` - pub fn func(&self, name: &str) -> ResolveResult> + pub fn func(&self, name: &str) -> ResolveResult> where Args: WasmTypeList, Rets: WasmTypeList, @@ -157,8 +157,8 @@ impl Instance { } }; - let typed_func: Func = - unsafe { Func::new_from_ptr(func_ptr as _, ctx) }; + let typed_func: Func = + unsafe { Func::from_raw_parts(trampoline, invoke, f as _, ctx, invoke_env) }; Ok(typed_func) } else { diff --git a/lib/runtime-core/src/typed_func.rs b/lib/runtime-core/src/typed_func.rs index 4191f347e..48e689d1d 100644 --- a/lib/runtime-core/src/typed_func.rs +++ b/lib/runtime-core/src/typed_func.rs @@ -6,24 +6,79 @@ use crate::{ types::{FuncSig, Type, WasmExternType}, vm::Ctx, }; -use std::{any::Any, cell::UnsafeCell, marker::PhantomData, mem, panic, ptr, sync::Arc}; +use std::{ + any::Any, cell::UnsafeCell, ffi::c_void, fmt, marker::PhantomData, mem, panic, ptr, sync::Arc, +}; thread_local! { pub static EARLY_TRAPPER: UnsafeCell>> = UnsafeCell::new(None); } -pub trait Safeness {} -pub struct Safe; -pub struct Unsafe; -impl Safeness for Safe {} -impl Safeness for Unsafe {} +#[repr(C)] +pub enum WasmTrapInfo { + Unreachable = 0, + IncorrectCallIndirectSignature = 1, + MemoryOutOfBounds = 2, + CallIndirectOOB = 3, + IllegalArithmetic = 4, + Unknown, +} + +impl fmt::Display for WasmTrapInfo { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!( + f, + "{}", + match self { + WasmTrapInfo::Unreachable => "unreachable", + WasmTrapInfo::IncorrectCallIndirectSignature => { + "incorrect `call_indirect` signature" + } + WasmTrapInfo::MemoryOutOfBounds => "memory out-of-bounds access", + WasmTrapInfo::CallIndirectOOB => "`call_indirect` out-of-bounds", + WasmTrapInfo::IllegalArithmetic => "illegal arithmetic operation", + WasmTrapInfo::Unknown => "unknown", + } + ) + } +} + +pub trait Kind {} + +type Trampoline = extern "C" fn(*mut Ctx, *const c_void, *const u64, *mut u64); +type Invoke = extern "C" fn( + Trampoline, + *mut Ctx, + *const c_void, + *const u64, + *mut u64, + &mut WasmTrapInfo, +) -> bool; + +pub struct Wasm { + trampoline: Trampoline, + invoke: Invoke, + invoke_env: *mut c_void, +} + +pub struct Host(()); +impl Kind for Wasm {} +impl Kind for Host {} pub trait WasmTypeList { type CStruct; + type RetArray: AsMut<[u64]>; + fn from_ret_array(array: Self::RetArray) -> Self; + fn empty_ret_array() -> Self::RetArray; fn from_c_struct(c_struct: Self::CStruct) -> Self; fn into_c_struct(self) -> Self::CStruct; fn types() -> &'static [Type]; - unsafe fn call(self, f: *const (), ctx: *mut Ctx) -> Rets + unsafe fn call( + self, + f: *const c_void, + wasm: Wasm, + ctx: *mut Ctx, + ) -> Result where Rets: WasmTypeList; } @@ -33,7 +88,7 @@ where Args: WasmTypeList, Rets: WasmTypeList, { - fn to_raw(&self) -> *const (); + fn to_raw(&self) -> *const c_void; } pub trait TrapEarly @@ -71,19 +126,31 @@ where // Func::new(f) // } -pub struct Func<'a, Args = (), Rets = (), Safety: Safeness = Safe> { - f: *const (), +pub struct Func<'a, Args = (), Rets = (), Inner: Kind = Wasm> { + inner: Inner, + f: *const c_void, ctx: *mut Ctx, - _phantom: PhantomData<(&'a (), Safety, Args, Rets)>, + _phantom: PhantomData<(&'a (), Args, Rets)>, } -impl<'a, Args, Rets> Func<'a, Args, Rets, Safe> +impl<'a, Args, Rets> Func<'a, Args, Rets, Wasm> where Args: WasmTypeList, Rets: WasmTypeList, { - pub(crate) unsafe fn new_from_ptr(f: *const (), ctx: *mut Ctx) -> Func<'a, Args, Rets, Safe> { + pub(crate) unsafe fn from_raw_parts( + trampoline: Trampoline, + invoke: Invoke, + f: *const c_void, + ctx: *mut Ctx, + invoke_env: *mut c_void, + ) -> Func<'a, Args, Rets, Wasm> { Func { + inner: Wasm { + trampoline, + invoke, + invoke_env, + }, f, ctx, _phantom: PhantomData, @@ -91,16 +158,17 @@ where } } -impl<'a, Args, Rets> Func<'a, Args, Rets, Unsafe> +impl<'a, Args, Rets> Func<'a, Args, Rets, Host> where Args: WasmTypeList, Rets: WasmTypeList, { - pub fn new(f: F) -> Func<'a, Args, Rets, Unsafe> + pub fn new(f: F) -> Func<'a, Args, Rets, Host> where F: ExternalFunction, { Func { + inner: Host(()), f: f.to_raw(), ctx: ptr::null_mut(), _phantom: PhantomData, @@ -108,11 +176,11 @@ where } } -impl<'a, Args, Rets, Safety> Func<'a, Args, Rets, Safety> +impl<'a, Args, Rets, Inner> Func<'a, Args, Rets, Inner> where Args: WasmTypeList, Rets: WasmTypeList, - Safety: Safeness, + Inner: Kind, { pub fn params(&self) -> &'static [Type] { Args::types() @@ -124,6 +192,13 @@ where impl WasmTypeList for (A,) { type CStruct = S1; + type RetArray = [u64; 1]; + fn from_ret_array(array: Self::RetArray) -> Self { + (WasmExternType::from_bits(array[0]),) + } + fn empty_ret_array() -> Self::RetArray { + [0u64] + } fn from_c_struct(c_struct: Self::CStruct) -> Self { let S1(a) = c_struct; (a,) @@ -137,19 +212,45 @@ impl WasmTypeList for (A,) { &[A::TYPE] } #[allow(non_snake_case)] - unsafe fn call(self, f: *const (), ctx: *mut Ctx) -> Rets { - let f: extern "C" fn(*mut Ctx, A) -> Rets = mem::transmute(f); + unsafe fn call( + self, + f: *const c_void, + wasm: Wasm, + ctx: *mut Ctx, + ) -> Result { + // type Trampoline = extern "C" fn(*mut Ctx, *const c_void, *const u64, *mut u64); + // type Invoke = extern "C" fn(Trampoline, *mut Ctx, *const c_void, *const u64, *mut u64, &mut WasmTrapInfo) -> bool; + let (a,) = self; - f(ctx, a) + let args = [a.to_bits()]; + let mut rets = Rets::empty_ret_array(); + let mut trap = WasmTrapInfo::Unknown; + + if (wasm.invoke)( + wasm.trampoline, + ctx, + f, + args.as_ptr(), + rets.as_mut().as_mut_ptr(), + &mut trap, + ) { + Ok(Rets::from_ret_array(rets)) + } else { + Err(trap) + } } } -impl<'a, A: WasmExternType, Rets> Func<'a, (A,), Rets, Safe> +impl<'a, A: WasmExternType, Rets> Func<'a, (A,), Rets, Wasm> where Rets: WasmTypeList, { pub fn call(&self, a: A) -> Result { - Ok(unsafe { ::call(a, self.f, self.ctx) }) + unsafe { ::call(a, self.f, self.inner, self.ctx) }.map_err(|e| { + RuntimeError::Trap { + msg: e.to_string().into(), + } + }) } } @@ -160,6 +261,14 @@ macro_rules! impl_traits { impl< $( $x: WasmExternType, )* > WasmTypeList for ( $( $x ),* ) { type CStruct = $struct_name<$( $x ),*>; + type RetArray = [u64; count_idents!( $( $x ),* )]; + fn from_ret_array(array: Self::RetArray) -> Self { + let [ $( $x ),* ] = array; + ( $( WasmExternType::from_bits($x) ),* ) + } + fn empty_ret_array() -> Self::RetArray { + [0; count_idents!( $( $x ),* )] + } fn from_c_struct(c_struct: Self::CStruct) -> Self { #[allow(non_snake_case)] let $struct_name ( $( $x ),* ) = c_struct; @@ -174,18 +283,33 @@ macro_rules! impl_traits { &[$( $x::TYPE, )*] } #[allow(non_snake_case)] - unsafe fn call(self, f: *const (), ctx: *mut Ctx) -> Rets { - let f: extern fn(*mut Ctx $( ,$x )*) -> Rets::CStruct = mem::transmute(f); + unsafe fn call(self, f: *const c_void, wasm: Wasm, ctx: *mut Ctx) -> Result { + // type Trampoline = extern "C" fn(*mut Ctx, *const c_void, *const u64, *mut u64); + // type Invoke = extern "C" fn(Trampoline, *mut Ctx, *const c_void, *const u64, *mut u64, &mut WasmTrapInfo) -> bool; + #[allow(unused_parens)] let ( $( $x ),* ) = self; - let c_struct = f(ctx $( ,$x )*); - Rets::from_c_struct(c_struct) + let args = [ $( $x.to_bits() ),* ]; + let mut rets = Rets::empty_ret_array(); + let mut trap = WasmTrapInfo::Unknown; + + if (wasm.invoke)(wasm.trampoline, ctx, f, args.as_ptr(), rets.as_mut().as_mut_ptr(), &mut trap) { + Ok(Rets::from_ret_array(rets)) + } else { + Err(trap) + } + + // let f: extern fn(*mut Ctx $( ,$x )*) -> Rets::CStruct = mem::transmute(f); + // #[allow(unused_parens)] + // let ( $( $x ),* ) = self; + // let c_struct = f(ctx $( ,$x )*); + // Rets::from_c_struct(c_struct) } } impl< $( $x: WasmExternType, )* Rets: WasmTypeList, Trap: TrapEarly, FN: Fn( &mut Ctx $( ,$x )* ) -> Trap> ExternalFunction<($( $x ),*), Rets> for FN { #[allow(non_snake_case)] - fn to_raw(&self) -> *const () { + fn to_raw(&self) -> *const c_void { assert_eq!(mem::size_of::(), 0, "you cannot use a closure that captures state for `Func`."); extern fn wrap<$( $x: WasmExternType, )* Rets: WasmTypeList, Trap: TrapEarly, FN: Fn( &mut Ctx $( ,$x )* ) -> Trap>( ctx: &mut Ctx $( ,$x: $x )* ) -> Rets::CStruct { @@ -209,23 +333,36 @@ macro_rules! impl_traits { } } - wrap::<$( $x, )* Rets, Trap, Self> as *const () + wrap::<$( $x, )* Rets, Trap, Self> as *const c_void } } - impl<'a, $( $x: WasmExternType, )* Rets> Func<'a, ( $( $x ),* ), Rets, Safe> + impl<'a, $( $x: WasmExternType, )* Rets> Func<'a, ( $( $x ),* ), Rets, Wasm> where Rets: WasmTypeList, { #[allow(non_snake_case)] pub fn call(&self, $( $x: $x, )* ) -> Result { #[allow(unused_parens)] - Ok(unsafe { <( $( $x ),* ) as WasmTypeList>::call(( $($x),* ), self.f, self.ctx) }) + unsafe { <( $( $x ),* ) as WasmTypeList>::call(( $($x),* ), self.f, self.inner, self.ctx) }.map_err(|e| { + RuntimeError::Trap { + msg: e.to_string().into(), + } + }) } } }; } +macro_rules! count_idents { + ( $($idents:ident),* ) => {{ + #[allow(dead_code, non_camel_case_types)] + enum Idents { $($idents,)* __CountIdentsLast } + const COUNT: usize = Idents::__CountIdentsLast as usize; + COUNT + }}; +} + impl_traits!([C] S0,); impl_traits!([transparent] S1, A); impl_traits!([C] S2, A, B); @@ -240,11 +377,11 @@ impl_traits!([C] S10, A, B, C, D, E, F, G, H, I, J); impl_traits!([C] S11, A, B, C, D, E, F, G, H, I, J, K); impl_traits!([C] S12, A, B, C, D, E, F, G, H, I, J, K, L); -impl<'a, Args, Rets, Safety> IsExport for Func<'a, Args, Rets, Safety> +impl<'a, Args, Rets, Inner> IsExport for Func<'a, Args, Rets, Inner> where Args: WasmTypeList, Rets: WasmTypeList, - Safety: Safeness, + Inner: Kind, { fn to_export(&self) -> Export { let func = unsafe { FuncPointer::new(self.f as _) }; diff --git a/lib/runtime-core/src/types.rs b/lib/runtime-core/src/types.rs index 966bd4e39..79ef5da7f 100644 --- a/lib/runtime-core/src/types.rs +++ b/lib/runtime-core/src/types.rs @@ -76,37 +76,99 @@ where Self: Sized, { const TYPE: Type; + fn to_bits(self) -> u64; + fn from_bits(n: u64) -> Self; } unsafe impl WasmExternType for i8 { const TYPE: Type = Type::I32; + fn to_bits(self) -> u64 { + self as u64 + } + fn from_bits(n: u64) -> Self { + n as _ + } } unsafe impl WasmExternType for u8 { const TYPE: Type = Type::I32; + fn to_bits(self) -> u64 { + self as u64 + } + fn from_bits(n: u64) -> Self { + n as _ + } } unsafe impl WasmExternType for i16 { const TYPE: Type = Type::I32; + fn to_bits(self) -> u64 { + self as u64 + } + fn from_bits(n: u64) -> Self { + n as _ + } } unsafe impl WasmExternType for u16 { const TYPE: Type = Type::I32; + fn to_bits(self) -> u64 { + self as u64 + } + fn from_bits(n: u64) -> Self { + n as _ + } } unsafe impl WasmExternType for i32 { const TYPE: Type = Type::I32; + fn to_bits(self) -> u64 { + self as u64 + } + fn from_bits(n: u64) -> Self { + n as _ + } } unsafe impl WasmExternType for u32 { const TYPE: Type = Type::I32; + fn to_bits(self) -> u64 { + self as u64 + } + fn from_bits(n: u64) -> Self { + n as _ + } } unsafe impl WasmExternType for i64 { const TYPE: Type = Type::I64; + fn to_bits(self) -> u64 { + self as u64 + } + fn from_bits(n: u64) -> Self { + n as _ + } } unsafe impl WasmExternType for u64 { const TYPE: Type = Type::I64; + fn to_bits(self) -> u64 { + self + } + fn from_bits(n: u64) -> Self { + n + } } unsafe impl WasmExternType for f32 { const TYPE: Type = Type::F32; + fn to_bits(self) -> u64 { + self.to_bits() as u64 + } + fn from_bits(n: u64) -> Self { + f32::from_bits(n as u32) + } } unsafe impl WasmExternType for f64 { const TYPE: Type = Type::F64; + fn to_bits(self) -> u64 { + self.to_bits() + } + fn from_bits(n: u64) -> Self { + f64::from_bits(n) + } } // pub trait IntegerAtomic From c212ba3619b0544ef65876767ddbc400307e6660 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Tue, 9 Apr 2019 15:53:01 -0700 Subject: [PATCH 158/413] Add implementations for typed func errors to cranelift and llvm --- lib/clif-backend/src/signal/mod.rs | 50 +++++++- lib/clif-backend/src/trampoline.rs | 5 +- lib/llvm-backend/cpp/object_loader.hh | 161 +++++++++++++++----------- lib/llvm-backend/src/backend.rs | 83 ++++++------- lib/runtime-core/src/backend.rs | 5 +- lib/runtime-core/src/instance.rs | 20 ++-- lib/runtime-core/src/lib.rs | 2 +- lib/runtime-core/src/typed_func.rs | 69 +++++++---- lib/runtime/examples/call.rs | 17 ++- 9 files changed, 261 insertions(+), 151 deletions(-) diff --git a/lib/clif-backend/src/signal/mod.rs b/lib/clif-backend/src/signal/mod.rs index 04b97e832..766ad75fb 100644 --- a/lib/clif-backend/src/signal/mod.rs +++ b/lib/clif-backend/src/signal/mod.rs @@ -2,12 +2,13 @@ use crate::relocation::{TrapData, TrapSink}; use crate::trampoline::Trampolines; use hashbrown::HashSet; use libc::c_void; -use std::{any::Any, cell::Cell, sync::Arc}; +use std::{any::Any, cell::Cell, ptr::NonNull, sync::Arc}; use wasmer_runtime_core::{ backend::{ProtectedCaller, Token, UserTrapper}, error::RuntimeResult, export::Context, module::{ExportIndex, ModuleInfo, ModuleInner}, + typed_func::{Wasm, WasmTrapInfo}, types::{FuncIndex, FuncSig, LocalOrImport, SigIndex, Type, Value}, vm::{self, ImportBacking}, }; @@ -148,6 +149,46 @@ impl ProtectedCaller for Caller { .collect()) } + fn get_wasm_trampoline(&self, module: &ModuleInner, sig_index: SigIndex) -> Option { + unsafe extern "C" fn invoke( + trampoline: unsafe extern "C" fn(*mut vm::Ctx, NonNull, *const u64, *mut u64), + ctx: *mut vm::Ctx, + func: NonNull, + args: *const u64, + rets: *mut u64, + trap_info: *mut WasmTrapInfo, + invoke_env: Option>, + ) -> bool { + let handler_data = &*invoke_env.unwrap().cast().as_ptr(); + + #[cfg(not(target_os = "windows"))] + let res = call_protected(handler_data, || unsafe { + // Leap of faith. + trampoline(ctx, func, args, rets); + }) + .is_ok(); + + // the trampoline is called from C on windows + #[cfg(target_os = "windows")] + let res = call_protected(handler_data, trampoline, ctx, func, args, rets).is_ok(); + + res + } + + let trampoline = self + .trampolines + .lookup(sig_index) + .expect("that trampoline doesn't exist"); + + Some(unsafe { + Wasm::from_raw_parts( + trampoline, + invoke, + Some(NonNull::from(&self.handler_data).cast()), + ) + }) + } + fn get_early_trapper(&self) -> Box { Box::new(Trapper) } @@ -157,7 +198,7 @@ fn get_func_from_index<'a>( module: &'a ModuleInner, import_backing: &ImportBacking, func_index: FuncIndex, -) -> (*const vm::Func, Context, &'a FuncSig, SigIndex) { +) -> (NonNull, Context, &'a FuncSig, SigIndex) { let sig_index = *module .info .func_assoc @@ -170,14 +211,13 @@ fn get_func_from_index<'a>( .func_resolver .get(&module, local_func_index) .expect("broken invariant, func resolver not synced with module.exports") - .cast() - .as_ptr() as *const _, + .cast(), Context::Internal, ), LocalOrImport::Import(imported_func_index) => { let imported_func = import_backing.imported_func(imported_func_index); ( - imported_func.func as *const _, + NonNull::new(imported_func.func as *mut _).unwrap(), Context::External(imported_func.vmctx), ) } diff --git a/lib/clif-backend/src/trampoline.rs b/lib/clif-backend/src/trampoline.rs index b20109ef0..696a0b624 100644 --- a/lib/clif-backend/src/trampoline.rs +++ b/lib/clif-backend/src/trampoline.rs @@ -7,7 +7,7 @@ use cranelift_codegen::{ }; use hashbrown::HashMap; use std::ffi::c_void; -use std::{iter, mem}; +use std::{iter, mem, ptr::NonNull}; use wasmer_runtime_core::{ backend::sys::{Memory, Protect}, module::{ExportIndex, ModuleInfo}, @@ -23,8 +23,7 @@ impl RelocSink for NullRelocSink { fn reloc_jt(&mut self, _: u32, _: Reloc, _: ir::JumpTable) {} } -pub type Trampoline = - unsafe extern "C" fn(*mut vm::Ctx, *const vm::Func, *const u64, *mut u64) -> c_void; +pub type Trampoline = unsafe extern "C" fn(*mut vm::Ctx, NonNull, *const u64, *mut u64); pub struct Trampolines { memory: Memory, diff --git a/lib/llvm-backend/cpp/object_loader.hh b/lib/llvm-backend/cpp/object_loader.hh index d22acb919..0d6bcc603 100644 --- a/lib/llvm-backend/cpp/object_loader.hh +++ b/lib/llvm-backend/cpp/object_loader.hh @@ -5,14 +5,16 @@ #include #include -typedef enum { +typedef enum +{ PROTECT_NONE, PROTECT_READ, PROTECT_READ_WRITE, PROTECT_READ_EXECUTE, } mem_protect_t; -typedef enum { +typedef enum +{ RESULT_OK, RESULT_ALLOCATE_FAILURE, RESULT_PROTECT_FAILURE, @@ -20,16 +22,17 @@ typedef enum { RESULT_OBJECT_LOAD_FAILURE, } result_t; -typedef result_t (*alloc_memory_t)(size_t size, mem_protect_t protect, uint8_t** ptr_out, size_t* size_out); -typedef result_t (*protect_memory_t)(uint8_t* ptr, size_t size, mem_protect_t protect); -typedef result_t (*dealloc_memory_t)(uint8_t* ptr, size_t size); -typedef uintptr_t (*lookup_vm_symbol_t)(const char* name_ptr, size_t length); +typedef result_t (*alloc_memory_t)(size_t size, mem_protect_t protect, uint8_t **ptr_out, size_t *size_out); +typedef result_t (*protect_memory_t)(uint8_t *ptr, size_t size, mem_protect_t protect); +typedef result_t (*dealloc_memory_t)(uint8_t *ptr, size_t size); +typedef uintptr_t (*lookup_vm_symbol_t)(const char *name_ptr, size_t length); typedef void (*fde_visitor_t)(uint8_t *fde); typedef result_t (*visit_fde_t)(uint8_t *fde, size_t size, fde_visitor_t visitor); -typedef void (*trampoline_t)(void*, void*, void*, void*); +typedef void (*trampoline_t)(void *, void *, void *, void *); -typedef struct { +typedef struct +{ /* Memory management. */ alloc_memory_t alloc_memory; protect_memory_t protect_memory; @@ -40,32 +43,40 @@ typedef struct { visit_fde_t visit_fde; } callbacks_t; -struct WasmException { -public: +struct WasmException +{ + public: virtual std::string description() const noexcept = 0; }; -struct UncatchableException : WasmException { -public: - virtual std::string description() const noexcept override { +struct UncatchableException : WasmException +{ + public: + virtual std::string description() const noexcept override + { return "Uncatchable exception"; } }; -struct UserException : UncatchableException { -public: +struct UserException : UncatchableException +{ + public: UserException(std::string msg) : msg(msg) {} - virtual std::string description() const noexcept override { + virtual std::string description() const noexcept override + { return std::string("user exception: ") + msg; } -private: + + private: std::string msg; }; -struct WasmTrap : UncatchableException { -public: - enum Type { +struct WasmTrap : UncatchableException +{ + public: + enum Type + { Unreachable = 0, IncorrectCallIndirectSignature = 1, MemoryOutOfBounds = 2, @@ -76,49 +87,54 @@ public: WasmTrap(Type type) : type(type) {} - virtual std::string description() const noexcept override { + virtual std::string description() const noexcept override + { std::ostringstream ss; ss << "WebAssembly trap:" << '\n' << " - type: " << type << '\n'; - + return ss.str(); } Type type; -private: - friend std::ostream& operator<<(std::ostream& out, const Type& ty) { - switch (ty) { - case Type::Unreachable: - out << "unreachable"; - break; - case Type::IncorrectCallIndirectSignature: - out << "incorrect call_indirect signature"; - break; - case Type::MemoryOutOfBounds: - out << "memory access out-of-bounds"; - break; - case Type::CallIndirectOOB: - out << "call_indirect out-of-bounds"; - break; - case Type::IllegalArithmetic: - out << "illegal arithmetic operation"; - break; - case Type::Unknown: - default: - out << "unknown"; - break; + private: + friend std::ostream &operator<<(std::ostream &out, const Type &ty) + { + switch (ty) + { + case Type::Unreachable: + out << "unreachable"; + break; + case Type::IncorrectCallIndirectSignature: + out << "incorrect call_indirect signature"; + break; + case Type::MemoryOutOfBounds: + out << "memory access out-of-bounds"; + break; + case Type::CallIndirectOOB: + out << "call_indirect out-of-bounds"; + break; + case Type::IllegalArithmetic: + out << "illegal arithmetic operation"; + break; + case Type::Unknown: + default: + out << "unknown"; + break; } return out; } }; -struct CatchableException : WasmException { -public: +struct CatchableException : WasmException +{ + public: CatchableException(uint32_t type_id, uint32_t value_num) : type_id(type_id), value_num(value_num) {} - virtual std::string description() const noexcept override { + virtual std::string description() const noexcept override + { return "catchable exception"; } @@ -126,23 +142,26 @@ public: uint64_t values[1]; }; -struct WasmModule { -public: +struct WasmModule +{ + public: WasmModule( const uint8_t *object_start, size_t object_size, - callbacks_t callbacks - ); + callbacks_t callbacks); void *get_func(llvm::StringRef name) const; -private: + + private: std::unique_ptr memory_manager; std::unique_ptr object_file; std::unique_ptr runtime_dyld; }; -extern "C" { - result_t module_load(const uint8_t* mem_ptr, size_t mem_size, callbacks_t callbacks, WasmModule** module_out) { +extern "C" +{ + result_t module_load(const uint8_t *mem_ptr, size_t mem_size, callbacks_t callbacks, WasmModule **module_out) + { *module_out = new WasmModule(mem_ptr, mem_size, callbacks); return RESULT_OK; @@ -152,34 +171,44 @@ extern "C" { throw WasmTrap(ty); } - void module_delete(WasmModule* module) { + void module_delete(WasmModule *module) + { delete module; } bool invoke_trampoline( trampoline_t trampoline, - void* ctx, - void* func, - void* params, - void* results, - WasmTrap::Type* trap_out - ) throw() { - try { + void *ctx, + void *func, + void *params, + void *results, + WasmTrap::Type *trap_out, + void *invoke_env) throw() + { + try + { trampoline(ctx, func, params, results); return true; - } catch(const WasmTrap& e) { + } + catch (const WasmTrap &e) + { *trap_out = e.type; return false; - } catch(const WasmException& e) { + } + catch (const WasmException &e) + { *trap_out = WasmTrap::Type::Unknown; return false; - } catch (...) { + } + catch (...) + { *trap_out = WasmTrap::Type::Unknown; return false; } } - void* get_func_symbol(WasmModule* module, const char* name) { + void *get_func_symbol(WasmModule *module, const char *name) + { return module->get_func(llvm::StringRef(name)); } } \ No newline at end of file diff --git a/lib/llvm-backend/src/backend.rs b/lib/llvm-backend/src/backend.rs index 5a692c40e..1a82cfaf2 100644 --- a/lib/llvm-backend/src/backend.rs +++ b/lib/llvm-backend/src/backend.rs @@ -11,7 +11,7 @@ use libc::{ }; use std::{ any::Any, - ffi::CString, + ffi::{c_void, CString}, mem, ptr::{self, NonNull}, slice, str, @@ -23,6 +23,7 @@ use wasmer_runtime_core::{ export::Context, module::{ModuleInfo, ModuleInner}, structures::TypedIndex, + typed_func::{Wasm, WasmTrapInfo}, types::{FuncIndex, FuncSig, LocalFuncIndex, LocalOrImport, SigIndex, Type, Value}, vm::{self, ImportBacking}, vmcalls, @@ -54,17 +55,6 @@ enum LLVMResult { OBJECT_LOAD_FAILURE, } -#[allow(dead_code)] -#[repr(C)] -enum WasmTrapType { - Unreachable = 0, - IncorrectCallIndirectSignature = 1, - MemoryOutOfBounds = 2, - CallIndirectOOB = 3, - IllegalArithmetic = 4, - Unknown, -} - #[repr(C)] struct Callbacks { alloc_memory: extern "C" fn(usize, MemProtect, &mut *mut u8, &mut usize) -> LLVMResult, @@ -87,13 +77,15 @@ extern "C" { fn throw_trap(ty: i32); + #[allow(improper_ctypes)] fn invoke_trampoline( - trampoline: unsafe extern "C" fn(*mut vm::Ctx, *const vm::Func, *const u64, *mut u64), + trampoline: unsafe extern "C" fn(*mut vm::Ctx, NonNull, *const u64, *mut u64), vmctx_ptr: *mut vm::Ctx, - func_ptr: *const vm::Func, + func_ptr: NonNull, params: *const u64, results: *mut u64, - trap_out: *mut WasmTrapType, + trap_out: *mut WasmTrapInfo, + invoke_env: Option>, ) -> bool; } @@ -360,7 +352,12 @@ impl ProtectedCaller for LLVMProtectedCaller { let mut return_vec = vec![0; signature.returns().len()]; - let trampoline: unsafe extern "C" fn(*mut vm::Ctx, *const vm::Func, *const u64, *mut u64) = unsafe { + let trampoline: unsafe extern "C" fn( + *mut vm::Ctx, + NonNull, + *const u64, + *mut u64, + ) = unsafe { let name = if cfg!(target_os = "macos") { format!("_trmp{}", sig_index.index()) } else { @@ -374,7 +371,7 @@ impl ProtectedCaller for LLVMProtectedCaller { mem::transmute(symbol) }; - let mut trap_out = WasmTrapType::Unknown; + let mut trap_out = WasmTrapInfo::Unknown; // Here we go. let success = unsafe { @@ -385,6 +382,7 @@ impl ProtectedCaller for LLVMProtectedCaller { param_vec.as_ptr(), return_vec.as_mut_ptr(), &mut trap_out, + None, ) }; @@ -400,29 +398,35 @@ impl ProtectedCaller for LLVMProtectedCaller { }) .collect()) } else { - Err(match trap_out { - WasmTrapType::Unreachable => RuntimeError::Trap { - msg: "unreachable".into(), - }, - WasmTrapType::IncorrectCallIndirectSignature => RuntimeError::Trap { - msg: "uncorrect call_indirect signature".into(), - }, - WasmTrapType::MemoryOutOfBounds => RuntimeError::Trap { - msg: "memory out-of-bounds access".into(), - }, - WasmTrapType::CallIndirectOOB => RuntimeError::Trap { - msg: "call_indirect out-of-bounds".into(), - }, - WasmTrapType::IllegalArithmetic => RuntimeError::Trap { - msg: "illegal arithmetic operation".into(), - }, - WasmTrapType::Unknown => RuntimeError::Trap { - msg: "unknown trap".into(), - }, + Err(RuntimeError::Trap { + msg: trap_out.to_string().into(), }) } } + fn get_wasm_trampoline(&self, _module: &ModuleInner, sig_index: SigIndex) -> Option { + let trampoline: unsafe extern "C" fn( + *mut vm::Ctx, + NonNull, + *const u64, + *mut u64, + ) = unsafe { + let name = if cfg!(target_os = "macos") { + format!("_trmp{}", sig_index.index()) + } else { + format!("trmp{}", sig_index.index()) + }; + + let c_str = CString::new(name).unwrap(); + let symbol = get_func_symbol(self.module, c_str.as_ptr()); + assert!(!symbol.is_null()); + + mem::transmute(symbol) + }; + + Some(unsafe { Wasm::from_raw_parts(trampoline, invoke_trampoline, None) }) + } + fn get_early_trapper(&self) -> Box { Box::new(Placeholder) } @@ -438,7 +442,7 @@ fn get_func_from_index<'a>( module: &'a ModuleInner, import_backing: &ImportBacking, func_index: FuncIndex, -) -> (*const vm::Func, Context, &'a FuncSig, SigIndex) { +) -> (NonNull, Context, &'a FuncSig, SigIndex) { let sig_index = *module .info .func_assoc @@ -451,14 +455,13 @@ fn get_func_from_index<'a>( .func_resolver .get(&module, local_func_index) .expect("broken invariant, func resolver not synced with module.exports") - .cast() - .as_ptr() as *const _, + .cast(), Context::Internal, ), LocalOrImport::Import(imported_func_index) => { let imported_func = import_backing.imported_func(imported_func_index); ( - imported_func.func as *const _, + NonNull::new(imported_func.func as *mut _).unwrap(), Context::External(imported_func.vmctx), ) } diff --git a/lib/runtime-core/src/backend.rs b/lib/runtime-core/src/backend.rs index 94c5c87e3..cb2e74e57 100644 --- a/lib/runtime-core/src/backend.rs +++ b/lib/runtime-core/src/backend.rs @@ -3,7 +3,8 @@ use crate::{ error::CompileResult, error::RuntimeResult, module::ModuleInner, - types::{FuncIndex, LocalFuncIndex, Value}, + typed_func::Wasm, + types::{FuncIndex, LocalFuncIndex, SigIndex, Value}, vm, }; @@ -95,6 +96,8 @@ pub trait ProtectedCaller: Send + Sync { _: Token, ) -> RuntimeResult>; + fn get_wasm_trampoline(&self, module: &ModuleInner, sig_index: SigIndex) -> Option; + fn get_early_trapper(&self) -> Box; } diff --git a/lib/runtime-core/src/instance.rs b/lib/runtime-core/src/instance.rs index f1e6a0613..a88e51e98 100644 --- a/lib/runtime-core/src/instance.rs +++ b/lib/runtime-core/src/instance.rs @@ -13,7 +13,7 @@ use crate::{ types::{FuncIndex, FuncSig, GlobalIndex, LocalOrImport, MemoryIndex, TableIndex, Value}, vm, }; -use std::{mem, sync::Arc}; +use std::{mem, ptr::NonNull, sync::Arc}; pub(crate) struct InstanceInner { #[allow(dead_code)] @@ -145,20 +145,26 @@ impl Instance { } }; + let func_wasm_inner = self + .module + .protected_caller + .get_wasm_trampoline(&self.module, sig_index) + .unwrap(); + let func_ptr = match func_index.local_or_import(&self.module.info) { LocalOrImport::Local(local_func_index) => self .module .func_resolver .get(&self.module, local_func_index) - .unwrap() - .as_ptr(), - LocalOrImport::Import(import_func_index) => { - self.inner.import_backing.vm_functions[import_func_index].func - } + .unwrap(), + LocalOrImport::Import(import_func_index) => NonNull::new( + self.inner.import_backing.vm_functions[import_func_index].func as *mut _, + ) + .unwrap(), }; let typed_func: Func = - unsafe { Func::from_raw_parts(trampoline, invoke, f as _, ctx, invoke_env) }; + unsafe { Func::from_raw_parts(func_wasm_inner, func_ptr, ctx) }; Ok(typed_func) } else { diff --git a/lib/runtime-core/src/lib.rs b/lib/runtime-core/src/lib.rs index 7042983d2..ef79f6cc8 100644 --- a/lib/runtime-core/src/lib.rs +++ b/lib/runtime-core/src/lib.rs @@ -23,7 +23,7 @@ mod sig_registry; pub mod structures; mod sys; pub mod table; -mod typed_func; +pub mod typed_func; pub mod types; pub mod units; pub mod vm; diff --git a/lib/runtime-core/src/typed_func.rs b/lib/runtime-core/src/typed_func.rs index 48e689d1d..3ac9889f7 100644 --- a/lib/runtime-core/src/typed_func.rs +++ b/lib/runtime-core/src/typed_func.rs @@ -4,10 +4,17 @@ use crate::{ export::{Context, Export, FuncPointer}, import::IsExport, types::{FuncSig, Type, WasmExternType}, - vm::Ctx, + vm::{self, Ctx}, }; use std::{ - any::Any, cell::UnsafeCell, ffi::c_void, fmt, marker::PhantomData, mem, panic, ptr, sync::Arc, + any::Any, + cell::UnsafeCell, + ffi::c_void, + fmt, + marker::PhantomData, + mem, panic, + ptr::{self, NonNull}, + sync::Arc, }; thread_local! { @@ -45,20 +52,36 @@ impl fmt::Display for WasmTrapInfo { pub trait Kind {} -type Trampoline = extern "C" fn(*mut Ctx, *const c_void, *const u64, *mut u64); -type Invoke = extern "C" fn( +pub type Trampoline = unsafe extern "C" fn(*mut Ctx, NonNull, *const u64, *mut u64); +pub type Invoke = unsafe extern "C" fn( Trampoline, *mut Ctx, - *const c_void, + NonNull, *const u64, *mut u64, - &mut WasmTrapInfo, + *mut WasmTrapInfo, + Option>, ) -> bool; +#[derive(Copy, Clone)] pub struct Wasm { trampoline: Trampoline, invoke: Invoke, - invoke_env: *mut c_void, + invoke_env: Option>, +} + +impl Wasm { + pub unsafe fn from_raw_parts( + trampoline: Trampoline, + invoke: Invoke, + invoke_env: Option>, + ) -> Self { + Self { + trampoline, + invoke, + invoke_env, + } + } } pub struct Host(()); @@ -75,7 +98,7 @@ pub trait WasmTypeList { fn types() -> &'static [Type]; unsafe fn call( self, - f: *const c_void, + f: NonNull, wasm: Wasm, ctx: *mut Ctx, ) -> Result @@ -88,7 +111,7 @@ where Args: WasmTypeList, Rets: WasmTypeList, { - fn to_raw(&self) -> *const c_void; + fn to_raw(&self) -> NonNull; } pub trait TrapEarly @@ -128,7 +151,7 @@ where pub struct Func<'a, Args = (), Rets = (), Inner: Kind = Wasm> { inner: Inner, - f: *const c_void, + f: NonNull, ctx: *mut Ctx, _phantom: PhantomData<(&'a (), Args, Rets)>, } @@ -139,18 +162,12 @@ where Rets: WasmTypeList, { pub(crate) unsafe fn from_raw_parts( - trampoline: Trampoline, - invoke: Invoke, - f: *const c_void, + inner: Wasm, + f: NonNull, ctx: *mut Ctx, - invoke_env: *mut c_void, ) -> Func<'a, Args, Rets, Wasm> { Func { - inner: Wasm { - trampoline, - invoke, - invoke_env, - }, + inner, f, ctx, _phantom: PhantomData, @@ -214,7 +231,7 @@ impl WasmTypeList for (A,) { #[allow(non_snake_case)] unsafe fn call( self, - f: *const c_void, + f: NonNull, wasm: Wasm, ctx: *mut Ctx, ) -> Result { @@ -233,6 +250,7 @@ impl WasmTypeList for (A,) { args.as_ptr(), rets.as_mut().as_mut_ptr(), &mut trap, + wasm.invoke_env, ) { Ok(Rets::from_ret_array(rets)) } else { @@ -263,6 +281,7 @@ macro_rules! impl_traits { type CStruct = $struct_name<$( $x ),*>; type RetArray = [u64; count_idents!( $( $x ),* )]; fn from_ret_array(array: Self::RetArray) -> Self { + #[allow(non_snake_case)] let [ $( $x ),* ] = array; ( $( WasmExternType::from_bits($x) ),* ) } @@ -283,7 +302,7 @@ macro_rules! impl_traits { &[$( $x::TYPE, )*] } #[allow(non_snake_case)] - unsafe fn call(self, f: *const c_void, wasm: Wasm, ctx: *mut Ctx) -> Result { + unsafe fn call(self, f: NonNull, wasm: Wasm, ctx: *mut Ctx) -> Result { // type Trampoline = extern "C" fn(*mut Ctx, *const c_void, *const u64, *mut u64); // type Invoke = extern "C" fn(Trampoline, *mut Ctx, *const c_void, *const u64, *mut u64, &mut WasmTrapInfo) -> bool; @@ -293,7 +312,7 @@ macro_rules! impl_traits { let mut rets = Rets::empty_ret_array(); let mut trap = WasmTrapInfo::Unknown; - if (wasm.invoke)(wasm.trampoline, ctx, f, args.as_ptr(), rets.as_mut().as_mut_ptr(), &mut trap) { + if (wasm.invoke)(wasm.trampoline, ctx, f, args.as_ptr(), rets.as_mut().as_mut_ptr(), &mut trap, wasm.invoke_env) { Ok(Rets::from_ret_array(rets)) } else { Err(trap) @@ -309,7 +328,7 @@ macro_rules! impl_traits { impl< $( $x: WasmExternType, )* Rets: WasmTypeList, Trap: TrapEarly, FN: Fn( &mut Ctx $( ,$x )* ) -> Trap> ExternalFunction<($( $x ),*), Rets> for FN { #[allow(non_snake_case)] - fn to_raw(&self) -> *const c_void { + fn to_raw(&self) -> NonNull { assert_eq!(mem::size_of::(), 0, "you cannot use a closure that captures state for `Func`."); extern fn wrap<$( $x: WasmExternType, )* Rets: WasmTypeList, Trap: TrapEarly, FN: Fn( &mut Ctx $( ,$x )* ) -> Trap>( ctx: &mut Ctx $( ,$x: $x )* ) -> Rets::CStruct { @@ -333,7 +352,7 @@ macro_rules! impl_traits { } } - wrap::<$( $x, )* Rets, Trap, Self> as *const c_void + NonNull::new(wrap::<$( $x, )* Rets, Trap, Self> as *mut vm::Func).unwrap() } } @@ -384,7 +403,7 @@ where Inner: Kind, { fn to_export(&self) -> Export { - let func = unsafe { FuncPointer::new(self.f as _) }; + let func = unsafe { FuncPointer::new(self.f.as_ptr()) }; let ctx = Context::Internal; let signature = Arc::new(FuncSig::new(Args::types(), Rets::types())); diff --git a/lib/runtime/examples/call.rs b/lib/runtime/examples/call.rs index dbd29c7e8..104fa9692 100644 --- a/lib/runtime/examples/call.rs +++ b/lib/runtime/examples/call.rs @@ -5,7 +5,10 @@ use wabt::wat2wasm; static WAT: &'static str = r#" (module (type (;0;) (func (result i32))) + (import "env" "do_panic" (func $do_panic (type 0))) (func $dbz (result i32) + call $do_panic + drop i32.const 42 i32.const 0 i32.div_u @@ -33,6 +36,10 @@ fn foobar(ctx: &mut Ctx) -> i32 { 42 } +fn do_panic(ctx: &mut Ctx) -> Result { + Err("error".to_string()) +} + fn main() -> Result<(), error::Error> { let wasm = get_wasm(); @@ -46,11 +53,15 @@ fn main() -> Result<(), error::Error> { // }; println!("instantiating"); - let instance = module.instantiate(&imports! {})?; + let instance = module.instantiate(&imports! { + "env" => { + "do_panic" => Func::new(do_panic), + }, + })?; - let foo = instance.dyn_func("dbz")?; + let foo: Func<(), i32> = instance.func("dbz")?; - let result = foo.call(&[]); + let result = foo.call(); println!("result: {:?}", result); From 0745274892df675cb1c32f7e5aafbf5f67c142a7 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Tue, 9 Apr 2019 16:07:09 -0700 Subject: [PATCH 159/413] Cleanup --- lib/dynasm-backend/src/codegen_x64.rs | 5 +++++ lib/emscripten/src/varargs.rs | 7 +++++++ lib/wasi/src/ptr.rs | 10 ++++++++++ 3 files changed, 22 insertions(+) diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index ef056a695..30b5ea2bc 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -18,6 +18,7 @@ use wasmer_runtime_core::{ memory::MemoryType, module::{ModuleInfo, ModuleInner}, structures::{Map, TypedIndex}, + typed_func::Wasm, types::{ FuncIndex, FuncSig, ImportedMemoryIndex, LocalFuncIndex, LocalGlobalIndex, LocalMemoryIndex, LocalOrImport, MemoryIndex, SigIndex, Type, Value, @@ -459,6 +460,10 @@ impl ProtectedCaller for X64ExecutionContext { }) } + fn get_wasm_trampoline(&self, _module: &ModuleInner, _sig_index: SigIndex) -> Option { + unimplemented!() + } + fn get_early_trapper(&self) -> Box { pub struct Trapper; diff --git a/lib/emscripten/src/varargs.rs b/lib/emscripten/src/varargs.rs index cd9073cb9..3775d102c 100644 --- a/lib/emscripten/src/varargs.rs +++ b/lib/emscripten/src/varargs.rs @@ -20,4 +20,11 @@ impl VarArgs { unsafe impl WasmExternType for VarArgs { const TYPE: Type = Type::I32; + + fn to_bits(self) -> u64 { + self.pointer as u64 + } + fn from_bits(n: u64) -> Self { + Self { pointer: n as u32 } + } } diff --git a/lib/wasi/src/ptr.rs b/lib/wasi/src/ptr.rs index 56abb3b2d..da892d1bf 100644 --- a/lib/wasi/src/ptr.rs +++ b/lib/wasi/src/ptr.rs @@ -72,6 +72,16 @@ impl WasmPtr { unsafe impl WasmExternType for WasmPtr { const TYPE: Type = Type::I32; + + fn to_bits(self) -> u64 { + self.offset as u64 + } + fn from_bits(n: u64) -> Self { + Self { + offset: n as u32, + _phantom: PhantomData, + } + } } unsafe impl ValueType for WasmPtr {} From 41129e445d2bf0b187d3ea6fea0cbbacc1e363a5 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Tue, 9 Apr 2019 16:15:50 -0700 Subject: [PATCH 160/413] Fix runtime test missing method --- lib/runtime-core/src/vm.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/runtime-core/src/vm.rs b/lib/runtime-core/src/vm.rs index 2802123f1..3b2ca9938 100644 --- a/lib/runtime-core/src/vm.rs +++ b/lib/runtime-core/src/vm.rs @@ -549,7 +549,8 @@ mod vm_ctx_tests { }; use crate::cache::Error as CacheError; use crate::error::RuntimeResult; - use crate::types::{FuncIndex, LocalFuncIndex, Value}; + use crate::typed_func::Wasm; + use crate::types::{FuncIndex, LocalFuncIndex, SigIndex, Value}; use hashbrown::HashMap; use std::ptr::NonNull; struct Placeholder; @@ -574,6 +575,13 @@ mod vm_ctx_tests { ) -> RuntimeResult> { Ok(vec![]) } + fn get_wasm_trampoline( + &self, + _module: &ModuleInner, + _sig_index: SigIndex, + ) -> Option { + unimplemented!() + } fn get_early_trapper(&self) -> Box { unimplemented!() } From 751dff0f9d45e57ecf3cce0c7cce7a1c68d05188 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Tue, 9 Apr 2019 16:46:01 -0700 Subject: [PATCH 161/413] Attempt to fix windows build --- lib/clif-backend/src/signal/windows.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/clif-backend/src/signal/windows.rs b/lib/clif-backend/src/signal/windows.rs index 99145869e..358b73236 100644 --- a/lib/clif-backend/src/signal/windows.rs +++ b/lib/clif-backend/src/signal/windows.rs @@ -3,7 +3,7 @@ use crate::signal::HandlerData; use crate::trampoline::Trampoline; use std::cell::Cell; use std::ffi::c_void; -use std::ptr; +use std::ptr::{self, NonNull}; use wasmer_runtime_core::error::{RuntimeError, RuntimeResult}; use wasmer_runtime_core::vm::Ctx; use wasmer_runtime_core::vm::Func; @@ -25,7 +25,7 @@ pub fn call_protected( handler_data: &HandlerData, trampoline: Trampoline, ctx: *mut Ctx, - func: *const Func, + func: NonNull, param_vec: *const u64, return_vec: *mut u64, ) -> RuntimeResult<()> { From 654fce9354afb6e254351b10d03c9b037cac893a Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Tue, 9 Apr 2019 16:50:33 -0700 Subject: [PATCH 162/413] Attempt #2 for windows building --- lib/win-exception-handler/src/exception_handling.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/win-exception-handler/src/exception_handling.rs b/lib/win-exception-handler/src/exception_handling.rs index 966432a70..2af364b47 100644 --- a/lib/win-exception-handler/src/exception_handling.rs +++ b/lib/win-exception-handler/src/exception_handling.rs @@ -1,7 +1,8 @@ use std::ffi::c_void; +use std::ptr::NonNull; use wasmer_runtime_core::vm::{Ctx, Func}; -type Trampoline = unsafe extern "C" fn(*mut Ctx, *const Func, *const u64, *mut u64) -> c_void; +type Trampoline = unsafe extern "C" fn(*mut Ctx, NonNull, *const u64, *mut u64) -> c_void; type CallProtectedResult = Result<(), CallProtectedData>; #[repr(C)] @@ -16,7 +17,7 @@ extern "C" { pub fn __call_protected( trampoline: Trampoline, ctx: *mut Ctx, - func: *const Func, + func: NonNull, param_vec: *const u64, return_vec: *mut u64, out_result: *mut CallProtectedData, @@ -26,7 +27,7 @@ extern "C" { pub fn _call_protected( trampoline: Trampoline, ctx: *mut Ctx, - func: *const Func, + func: NonNull, param_vec: *const u64, return_vec: *mut u64, ) -> CallProtectedResult { From b949de256044f853e6e058e83a8c4139775d2cd4 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Tue, 9 Apr 2019 16:54:55 -0700 Subject: [PATCH 163/413] Attempt #3 for windows --- lib/win-exception-handler/src/exception_handling.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/win-exception-handler/src/exception_handling.rs b/lib/win-exception-handler/src/exception_handling.rs index 2af364b47..ea36333ab 100644 --- a/lib/win-exception-handler/src/exception_handling.rs +++ b/lib/win-exception-handler/src/exception_handling.rs @@ -2,7 +2,7 @@ use std::ffi::c_void; use std::ptr::NonNull; use wasmer_runtime_core::vm::{Ctx, Func}; -type Trampoline = unsafe extern "C" fn(*mut Ctx, NonNull, *const u64, *mut u64) -> c_void; +type Trampoline = unsafe extern "C" fn(*mut Ctx, NonNull, *const u64, *mut u64); type CallProtectedResult = Result<(), CallProtectedData>; #[repr(C)] From e8236cf1c714b4d8ac8fc17d52781692cb462caa Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 5 Apr 2019 16:50:50 -0700 Subject: [PATCH 164/413] fix lstat64; increase num returned by heap size --- lib/emscripten/src/memory.rs | 2 +- lib/emscripten/src/syscalls/mod.rs | 18 ++++++++++++++++++ lib/emscripten/src/syscalls/unix.rs | 19 ------------------- 3 files changed, 19 insertions(+), 20 deletions(-) diff --git a/lib/emscripten/src/memory.rs b/lib/emscripten/src/memory.rs index 16aece81d..deeca7ddb 100644 --- a/lib/emscripten/src/memory.rs +++ b/lib/emscripten/src/memory.rs @@ -20,7 +20,7 @@ pub fn _emscripten_memcpy_big(ctx: &mut Ctx, dest: u32, src: u32, len: u32) -> u pub fn _emscripten_get_heap_size(_ctx: &mut Ctx) -> u32 { debug!("emscripten::_emscripten_get_heap_size",); // TODO: Fix implementation - 162_107_392 + 162_107_392 * 2 } /// emscripten: _emscripten_resize_heap diff --git a/lib/emscripten/src/syscalls/mod.rs b/lib/emscripten/src/syscalls/mod.rs index 37f6e2f51..645b48a81 100644 --- a/lib/emscripten/src/syscalls/mod.rs +++ b/lib/emscripten/src/syscalls/mod.rs @@ -418,6 +418,24 @@ pub fn ___syscall197(ctx: &mut Ctx, _which: c_int, mut varargs: VarArgs) -> c_in 0 } +/// lstat64 +pub fn ___syscall196(ctx: &mut Ctx, _which: i32, mut varargs: VarArgs) -> i32 { + debug!("emscripten::___syscall196 (lstat64) {}", _which); + let path_ptr: c_int = varargs.get(ctx); + let buf_ptr: u32 = varargs.get(ctx); + let path = emscripten_memory_pointer!(ctx.memory(0), path_ptr) as *const i8; + unsafe { + let mut stat: stat = std::mem::zeroed(); + let ret = lstat64(path, &mut stat as *mut stat as *mut c_void); + debug!("ret: {}", ret); + if ret != 0 { + return ret; + } + copy_stat_into_wasm(ctx, buf_ptr, &stat); + } + 0 +} + pub fn ___syscall220(_ctx: &mut Ctx, _one: i32, _two: i32) -> i32 { debug!("emscripten::___syscall220"); -1 diff --git a/lib/emscripten/src/syscalls/unix.rs b/lib/emscripten/src/syscalls/unix.rs index c8fa04101..a4bac74c6 100644 --- a/lib/emscripten/src/syscalls/unix.rs +++ b/lib/emscripten/src/syscalls/unix.rs @@ -759,25 +759,6 @@ pub fn ___syscall122(ctx: &mut Ctx, _which: c_int, mut varargs: VarArgs) -> c_in unsafe { uname(buf_addr) } } -/// lstat64 -pub fn ___syscall196(ctx: &mut Ctx, _which: i32, mut varargs: VarArgs) -> i32 { - debug!("emscripten::___syscall196 (lstat64) {}", _which); - let path_ptr: c_int = varargs.get(ctx); - let buf_ptr: c_int = varargs.get(ctx); - let path = emscripten_memory_pointer!(ctx.memory(0), path_ptr) as *const c_char; - let buf = emscripten_memory_pointer!(ctx.memory(0), buf_ptr) as *mut c_void; - let result = unsafe { lstat64(path, buf as _) }; - debug!( - "=> path: {}, buf: {} = fd: {}\npath: {}\nlast os error: {}", - path_ptr, - buf_ptr, - result, - unsafe { std::ffi::CStr::from_ptr(path).to_str().unwrap() }, - Error::last_os_error(), - ); - result -} - /// fallocate pub fn ___syscall324(ctx: &mut Ctx, _which: c_int, mut varargs: VarArgs) -> c_int { debug!("emscripten::___syscall324 (fallocate) {}", _which); From 79da3e8f3ca18956f8965166993eb2d55772e0f5 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 5 Apr 2019 17:21:40 -0700 Subject: [PATCH 165/413] return total memory size for get_heap_size --- lib/emscripten/src/memory.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/emscripten/src/memory.rs b/lib/emscripten/src/memory.rs index deeca7ddb..9fccbdde4 100644 --- a/lib/emscripten/src/memory.rs +++ b/lib/emscripten/src/memory.rs @@ -17,10 +17,9 @@ pub fn _emscripten_memcpy_big(ctx: &mut Ctx, dest: u32, src: u32, len: u32) -> u } /// emscripten: _emscripten_get_heap_size -pub fn _emscripten_get_heap_size(_ctx: &mut Ctx) -> u32 { +pub fn _emscripten_get_heap_size(ctx: &mut Ctx) -> u32 { debug!("emscripten::_emscripten_get_heap_size",); - // TODO: Fix implementation - 162_107_392 * 2 + ctx.memory(0).size().bytes().0 as u32 } /// emscripten: _emscripten_resize_heap From 18a00e8e8f07e40f109a264dc6474689e6fe2a1e Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 8 Apr 2019 11:26:25 -0700 Subject: [PATCH 166/413] fix bug in stat, move lstat64 back to unix --- lib/emscripten/src/syscalls/mod.rs | 18 ------------------ lib/emscripten/src/syscalls/unix.rs | 20 ++++++++++++++++++++ lib/emscripten/src/utils.rs | 2 +- lib/runtime-core/src/types.rs | 2 +- 4 files changed, 22 insertions(+), 20 deletions(-) diff --git a/lib/emscripten/src/syscalls/mod.rs b/lib/emscripten/src/syscalls/mod.rs index 645b48a81..37f6e2f51 100644 --- a/lib/emscripten/src/syscalls/mod.rs +++ b/lib/emscripten/src/syscalls/mod.rs @@ -418,24 +418,6 @@ pub fn ___syscall197(ctx: &mut Ctx, _which: c_int, mut varargs: VarArgs) -> c_in 0 } -/// lstat64 -pub fn ___syscall196(ctx: &mut Ctx, _which: i32, mut varargs: VarArgs) -> i32 { - debug!("emscripten::___syscall196 (lstat64) {}", _which); - let path_ptr: c_int = varargs.get(ctx); - let buf_ptr: u32 = varargs.get(ctx); - let path = emscripten_memory_pointer!(ctx.memory(0), path_ptr) as *const i8; - unsafe { - let mut stat: stat = std::mem::zeroed(); - let ret = lstat64(path, &mut stat as *mut stat as *mut c_void); - debug!("ret: {}", ret); - if ret != 0 { - return ret; - } - copy_stat_into_wasm(ctx, buf_ptr, &stat); - } - 0 -} - pub fn ___syscall220(_ctx: &mut Ctx, _one: i32, _two: i32) -> i32 { debug!("emscripten::___syscall220"); -1 diff --git a/lib/emscripten/src/syscalls/unix.rs b/lib/emscripten/src/syscalls/unix.rs index a4bac74c6..ad7f65909 100644 --- a/lib/emscripten/src/syscalls/unix.rs +++ b/lib/emscripten/src/syscalls/unix.rs @@ -57,6 +57,7 @@ use libc::{ sockaddr, socket, socklen_t, + stat, symlink, uid_t, uname, @@ -73,6 +74,7 @@ use libc::{ }; use wasmer_runtime_core::vm::Ctx; +use crate::utils; #[allow(unused_imports)] use std::io::Error; use std::mem; @@ -775,3 +777,21 @@ pub fn ___syscall324(ctx: &mut Ctx, _which: c_int, mut varargs: VarArgs) -> c_in unimplemented!() } } + +/// lstat64 +pub fn ___syscall196(ctx: &mut Ctx, _which: i32, mut varargs: VarArgs) -> i32 { + debug!("emscripten::___syscall196 (lstat64) {}", _which); + let path_ptr: c_int = varargs.get(ctx); + let buf_ptr: u32 = varargs.get(ctx); + let path = emscripten_memory_pointer!(ctx.memory(0), path_ptr) as *const i8; + unsafe { + let mut stat: stat = std::mem::zeroed(); + let ret = lstat64(path, &mut stat as *mut stat as *mut c_void); + debug!("ret: {}", ret); + if ret != 0 { + return ret; + } + utils::copy_stat_into_wasm(ctx, buf_ptr, &stat); + } + 0 +} diff --git a/lib/emscripten/src/utils.rs b/lib/emscripten/src/utils.rs index 5dcfd4e11..725f0ba94 100644 --- a/lib/emscripten/src/utils.rs +++ b/lib/emscripten/src/utils.rs @@ -125,7 +125,7 @@ pub struct GuestStat { st_atime: u64, st_mtime: u64, st_ctime: u64, - st_ino: u64, + st_ino: u32, } #[allow(clippy::cast_ptr_alignment)] diff --git a/lib/runtime-core/src/types.rs b/lib/runtime-core/src/types.rs index 96a99a835..966bd4e39 100644 --- a/lib/runtime-core/src/types.rs +++ b/lib/runtime-core/src/types.rs @@ -1,5 +1,5 @@ use crate::{memory::MemoryType, module::ModuleInfo, structures::TypedIndex, units::Pages}; -use std::{borrow::Cow, mem}; +use std::borrow::Cow; /// Represents a WebAssembly type. #[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq, Hash)] From 17686b9a98b0996db32bc94024736672de374917 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 8 Apr 2019 11:29:55 -0700 Subject: [PATCH 167/413] revert location of lstat64 --- lib/emscripten/src/syscalls/unix.rs | 34 ++++++++++++++--------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/lib/emscripten/src/syscalls/unix.rs b/lib/emscripten/src/syscalls/unix.rs index ad7f65909..82b7182fe 100644 --- a/lib/emscripten/src/syscalls/unix.rs +++ b/lib/emscripten/src/syscalls/unix.rs @@ -761,23 +761,6 @@ pub fn ___syscall122(ctx: &mut Ctx, _which: c_int, mut varargs: VarArgs) -> c_in unsafe { uname(buf_addr) } } -/// fallocate -pub fn ___syscall324(ctx: &mut Ctx, _which: c_int, mut varargs: VarArgs) -> c_int { - debug!("emscripten::___syscall324 (fallocate) {}", _which); - let _fd: c_int = varargs.get(ctx); - let _mode: c_int = varargs.get(ctx); - let _offset: off_t = varargs.get(ctx); - let _len: off_t = varargs.get(ctx); - #[cfg(not(target_os = "macos"))] - unsafe { - fallocate(_fd, _mode, _offset, _len) - } - #[cfg(target_os = "macos")] - { - unimplemented!() - } -} - /// lstat64 pub fn ___syscall196(ctx: &mut Ctx, _which: i32, mut varargs: VarArgs) -> i32 { debug!("emscripten::___syscall196 (lstat64) {}", _which); @@ -795,3 +778,20 @@ pub fn ___syscall196(ctx: &mut Ctx, _which: i32, mut varargs: VarArgs) -> i32 { } 0 } + +/// fallocate +pub fn ___syscall324(ctx: &mut Ctx, _which: c_int, mut varargs: VarArgs) -> c_int { + debug!("emscripten::___syscall324 (fallocate) {}", _which); + let _fd: c_int = varargs.get(ctx); + let _mode: c_int = varargs.get(ctx); + let _offset: off_t = varargs.get(ctx); + let _len: off_t = varargs.get(ctx); + #[cfg(not(target_os = "macos"))] + unsafe { + fallocate(_fd, _mode, _offset, _len) + } + #[cfg(target_os = "macos")] + { + unimplemented!() + } +} From e34874e2d3e5e79810497bd4eb7a123096b26881 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 8 Apr 2019 11:36:54 -0700 Subject: [PATCH 168/413] fix type errors on Linux/OSX --- lib/emscripten/src/syscalls/unix.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/emscripten/src/syscalls/unix.rs b/lib/emscripten/src/syscalls/unix.rs index 82b7182fe..2d1db3a0c 100644 --- a/lib/emscripten/src/syscalls/unix.rs +++ b/lib/emscripten/src/syscalls/unix.rs @@ -90,7 +90,7 @@ extern "C" { } #[cfg(not(target_os = "macos"))] -use libc::{fallocate, fdatasync, ftruncate64, lstat64, madvise, wait4}; +use libc::{fallocate, fdatasync, ftruncate64, lstat64, madvise, stat64, wait4}; // Another conditional constant for name resolution: Macos et iOS use // SO_NOSIGPIPE as a setsockopt flag to disable SIGPIPE emission on socket. @@ -768,8 +768,16 @@ pub fn ___syscall196(ctx: &mut Ctx, _which: i32, mut varargs: VarArgs) -> i32 { let buf_ptr: u32 = varargs.get(ctx); let path = emscripten_memory_pointer!(ctx.memory(0), path_ptr) as *const i8; unsafe { + #[cfg(target_os = "macos")] let mut stat: stat = std::mem::zeroed(); - let ret = lstat64(path, &mut stat as *mut stat as *mut c_void); + #[cfg(not(target_os = "macos"))] + let mut stat: stat64 = std::mem::zeroed(); + + #[cfg(target_os = "macos")] + let stat_ptr = &mut stat as *mut stat as *mut c_void; + #[cfg(not(target_os = "macos"))] + let stat_ptr = &mut stat64 as *mut stat64; + let ret = lstat64(path, stat_ptr); debug!("ret: {}", ret); if ret != 0 { return ret; From 95095feb2e230e589c7b3432e8dcc6d7d5419be7 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 8 Apr 2019 11:48:04 -0700 Subject: [PATCH 169/413] try normal lstat on linux --- lib/emscripten/src/syscalls/unix.rs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/lib/emscripten/src/syscalls/unix.rs b/lib/emscripten/src/syscalls/unix.rs index 2d1db3a0c..42c373ed5 100644 --- a/lib/emscripten/src/syscalls/unix.rs +++ b/lib/emscripten/src/syscalls/unix.rs @@ -90,7 +90,7 @@ extern "C" { } #[cfg(not(target_os = "macos"))] -use libc::{fallocate, fdatasync, ftruncate64, lstat64, madvise, stat64, wait4}; +use libc::{fallocate, fdatasync, ftruncate64, lstat, madvise, wait4}; // Another conditional constant for name resolution: Macos et iOS use // SO_NOSIGPIPE as a setsockopt flag to disable SIGPIPE emission on socket. @@ -768,16 +768,14 @@ pub fn ___syscall196(ctx: &mut Ctx, _which: i32, mut varargs: VarArgs) -> i32 { let buf_ptr: u32 = varargs.get(ctx); let path = emscripten_memory_pointer!(ctx.memory(0), path_ptr) as *const i8; unsafe { - #[cfg(target_os = "macos")] let mut stat: stat = std::mem::zeroed(); - #[cfg(not(target_os = "macos"))] - let mut stat: stat64 = std::mem::zeroed(); - #[cfg(target_os = "macos")] let stat_ptr = &mut stat as *mut stat as *mut c_void; - #[cfg(not(target_os = "macos"))] - let stat_ptr = &mut stat64 as *mut stat64; + #[cfg(target_os = "macos")] let ret = lstat64(path, stat_ptr); + #[cfg(not(target_os = "macos"))] + let ret = lstat(path, stat_ptr); + debug!("ret: {}", ret); if ret != 0 { return ret; From a6c2f7e8e3472b7db709641a43db46bcde1f67b9 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 8 Apr 2019 11:53:15 -0700 Subject: [PATCH 170/413] change void* to stat* for lstat on linux --- lib/emscripten/src/syscalls/unix.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/emscripten/src/syscalls/unix.rs b/lib/emscripten/src/syscalls/unix.rs index 42c373ed5..32b63593f 100644 --- a/lib/emscripten/src/syscalls/unix.rs +++ b/lib/emscripten/src/syscalls/unix.rs @@ -770,7 +770,11 @@ pub fn ___syscall196(ctx: &mut Ctx, _which: i32, mut varargs: VarArgs) -> i32 { unsafe { let mut stat: stat = std::mem::zeroed(); + #[cfg(target_os = "macos")] let stat_ptr = &mut stat as *mut stat as *mut c_void; + #[cfg(not(target_os = "macos"))] + let stat_ptr = &mut stat as *mut stat; + #[cfg(target_os = "macos")] let ret = lstat64(path, stat_ptr); #[cfg(not(target_os = "macos"))] From 8ba5ea2a0809685c292e3c43114a9b7af29d3b4d Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 8 Apr 2019 14:44:40 -0700 Subject: [PATCH 171/413] allow resize_heap to grow heap in emscripten --- lib/emscripten/src/memory.rs | 36 +++++++++++++++++++++++++++++++---- lib/runtime-core/src/units.rs | 4 ++-- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/lib/emscripten/src/memory.rs b/lib/emscripten/src/memory.rs index 9fccbdde4..f35dbbb8e 100644 --- a/lib/emscripten/src/memory.rs +++ b/lib/emscripten/src/memory.rs @@ -1,6 +1,9 @@ use super::process::abort_with_message; use libc::{c_int, c_void, memcpy, size_t}; -use wasmer_runtime_core::vm::Ctx; +use wasmer_runtime_core::{ + units::{Pages, WASM_MAX_PAGES, WASM_PAGE_SIZE}, + vm::Ctx, +}; /// emscripten: _emscripten_memcpy_big pub fn _emscripten_memcpy_big(ctx: &mut Ctx, dest: u32, src: u32, len: u32) -> u32 { @@ -23,9 +26,34 @@ pub fn _emscripten_get_heap_size(ctx: &mut Ctx) -> u32 { } /// emscripten: _emscripten_resize_heap -pub fn _emscripten_resize_heap(_ctx: &mut Ctx, _requested_size: u32) -> u32 { - debug!("emscripten::_emscripten_resize_heap {}", _requested_size); - // TODO: Fix implementation +/// Note: this function only allows growing the size of heap +pub fn _emscripten_resize_heap(ctx: &mut Ctx, requested_size: u32) -> u32 { + debug!("emscripten::_emscripten_resize_heap {}", requested_size); + let current_memory_pages = ctx.memory(0).size(); + let current_memory = current_memory_pages.bytes().0 as u32; + + if requested_size > current_memory { + let remainder = (requested_size - current_memory) as usize % WASM_PAGE_SIZE; + let delta = { + let delta = (requested_size - current_memory) as usize / WASM_PAGE_SIZE; + + if remainder != 0 { + delta + 1 + } else { + delta + } + }; + + if current_memory_pages.0 as usize + delta > WASM_MAX_PAGES { + // TODO: handle this? + debug!("Can't exceed max pages"); + return 0; + } + + if let Ok(v) = ctx.memory(0).grow(Pages(delta as u32)) { + return v.0; + } + } 0 } diff --git a/lib/runtime-core/src/units.rs b/lib/runtime-core/src/units.rs index 56d501438..982baefcb 100644 --- a/lib/runtime-core/src/units.rs +++ b/lib/runtime-core/src/units.rs @@ -4,8 +4,8 @@ use std::{ ops::{Add, Sub}, }; -const WASM_PAGE_SIZE: usize = 65_536; -const WASM_MAX_PAGES: usize = 65_536; +pub const WASM_PAGE_SIZE: usize = 65_536; +pub const WASM_MAX_PAGES: usize = 65_536; /// Units of WebAssembly pages (as specified to be 65,536 bytes). #[derive(Serialize, Deserialize, Copy, Clone, PartialEq, Eq, PartialOrd, Ord)] From fec65a262ed340b466ae86c9354c60ab91639b8e Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 8 Apr 2019 16:17:34 -0700 Subject: [PATCH 172/413] implement emscripten resize_heap --- lib/emscripten/src/memory.rs | 49 +++++++++++++++++++---------------- lib/runtime-core/src/units.rs | 2 ++ 2 files changed, 29 insertions(+), 22 deletions(-) diff --git a/lib/emscripten/src/memory.rs b/lib/emscripten/src/memory.rs index f35dbbb8e..9a0874015 100644 --- a/lib/emscripten/src/memory.rs +++ b/lib/emscripten/src/memory.rs @@ -1,7 +1,7 @@ use super::process::abort_with_message; use libc::{c_int, c_void, memcpy, size_t}; use wasmer_runtime_core::{ - units::{Pages, WASM_MAX_PAGES, WASM_PAGE_SIZE}, + units::{Pages, WASM_MAX_PAGES, WASM_MIN_PAGES, WASM_PAGE_SIZE}, vm::Ctx, }; @@ -25,6 +25,14 @@ pub fn _emscripten_get_heap_size(ctx: &mut Ctx) -> u32 { ctx.memory(0).size().bytes().0 as u32 } +// From emscripten implementation +fn align_up(mut val: usize, multiple: usize) -> usize { + if val % multiple > 0 { + val += multiple - val % multiple; + } + val +} + /// emscripten: _emscripten_resize_heap /// Note: this function only allows growing the size of heap pub fn _emscripten_resize_heap(ctx: &mut Ctx, requested_size: u32) -> u32 { @@ -32,29 +40,26 @@ pub fn _emscripten_resize_heap(ctx: &mut Ctx, requested_size: u32) -> u32 { let current_memory_pages = ctx.memory(0).size(); let current_memory = current_memory_pages.bytes().0 as u32; - if requested_size > current_memory { - let remainder = (requested_size - current_memory) as usize % WASM_PAGE_SIZE; - let delta = { - let delta = (requested_size - current_memory) as usize / WASM_PAGE_SIZE; - - if remainder != 0 { - delta + 1 - } else { - delta - } - }; - - if current_memory_pages.0 as usize + delta > WASM_MAX_PAGES { - // TODO: handle this? - debug!("Can't exceed max pages"); - return 0; - } - - if let Ok(v) = ctx.memory(0).grow(Pages(delta as u32)) { - return v.0; + // implementation from emscripten + let mut new_size = usize::max(current_memory as usize, WASM_MIN_PAGES * WASM_PAGE_SIZE); + while new_size < requested_size as usize { + if new_size <= 0x2000_0000 { + new_size = align_up(new_size * 2, WASM_PAGE_SIZE); + } else { + new_size = usize::min( + align_up((3 * new_size + 0x8000_0000) / 4, WASM_PAGE_SIZE), + WASM_PAGE_SIZE * WASM_MAX_PAGES, + ); } } - 0 + + let amount_to_grow = (new_size - current_memory as usize) / WASM_PAGE_SIZE; + if let Ok(_pages_allocated) = ctx.memory(0).grow(Pages(amount_to_grow as u32)) { + debug!("{} pages allocated", _pages_allocated.0); + 1 + } else { + 0 + } } /// emscripten: getTotalMemory diff --git a/lib/runtime-core/src/units.rs b/lib/runtime-core/src/units.rs index 982baefcb..e8232efc8 100644 --- a/lib/runtime-core/src/units.rs +++ b/lib/runtime-core/src/units.rs @@ -6,6 +6,8 @@ use std::{ pub const WASM_PAGE_SIZE: usize = 65_536; pub const WASM_MAX_PAGES: usize = 65_536; +// From emscripten resize_heap implementation +pub const WASM_MIN_PAGES: usize = 256; /// Units of WebAssembly pages (as specified to be 65,536 bytes). #[derive(Serialize, Deserialize, Copy, Clone, PartialEq, Eq, PartialOrd, Ord)] From 7d09a2ee7ed9a3b37df000703128eaf77181c2c3 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Tue, 9 Apr 2019 12:48:41 -0700 Subject: [PATCH 173/413] Initial typed func rewrite --- lib/runtime-core/src/instance.rs | 8 +- lib/runtime-core/src/typed_func.rs | 201 ++++++++++++++++++++++++----- lib/runtime-core/src/types.rs | 62 +++++++++ 3 files changed, 235 insertions(+), 36 deletions(-) diff --git a/lib/runtime-core/src/instance.rs b/lib/runtime-core/src/instance.rs index 956b95d7b..f1e6a0613 100644 --- a/lib/runtime-core/src/instance.rs +++ b/lib/runtime-core/src/instance.rs @@ -9,7 +9,7 @@ use crate::{ module::{ExportIndex, Module, ModuleInner}, sig_registry::SigRegistry, table::Table, - typed_func::{Func, Safe, WasmTypeList}, + typed_func::{Func, Wasm, WasmTypeList}, types::{FuncIndex, FuncSig, GlobalIndex, LocalOrImport, MemoryIndex, TableIndex, Value}, vm, }; @@ -107,7 +107,7 @@ impl Instance { /// # Ok(()) /// # } /// ``` - pub fn func(&self, name: &str) -> ResolveResult> + pub fn func(&self, name: &str) -> ResolveResult> where Args: WasmTypeList, Rets: WasmTypeList, @@ -157,8 +157,8 @@ impl Instance { } }; - let typed_func: Func = - unsafe { Func::new_from_ptr(func_ptr as _, ctx) }; + let typed_func: Func = + unsafe { Func::from_raw_parts(trampoline, invoke, f as _, ctx, invoke_env) }; Ok(typed_func) } else { diff --git a/lib/runtime-core/src/typed_func.rs b/lib/runtime-core/src/typed_func.rs index 4191f347e..48e689d1d 100644 --- a/lib/runtime-core/src/typed_func.rs +++ b/lib/runtime-core/src/typed_func.rs @@ -6,24 +6,79 @@ use crate::{ types::{FuncSig, Type, WasmExternType}, vm::Ctx, }; -use std::{any::Any, cell::UnsafeCell, marker::PhantomData, mem, panic, ptr, sync::Arc}; +use std::{ + any::Any, cell::UnsafeCell, ffi::c_void, fmt, marker::PhantomData, mem, panic, ptr, sync::Arc, +}; thread_local! { pub static EARLY_TRAPPER: UnsafeCell>> = UnsafeCell::new(None); } -pub trait Safeness {} -pub struct Safe; -pub struct Unsafe; -impl Safeness for Safe {} -impl Safeness for Unsafe {} +#[repr(C)] +pub enum WasmTrapInfo { + Unreachable = 0, + IncorrectCallIndirectSignature = 1, + MemoryOutOfBounds = 2, + CallIndirectOOB = 3, + IllegalArithmetic = 4, + Unknown, +} + +impl fmt::Display for WasmTrapInfo { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!( + f, + "{}", + match self { + WasmTrapInfo::Unreachable => "unreachable", + WasmTrapInfo::IncorrectCallIndirectSignature => { + "incorrect `call_indirect` signature" + } + WasmTrapInfo::MemoryOutOfBounds => "memory out-of-bounds access", + WasmTrapInfo::CallIndirectOOB => "`call_indirect` out-of-bounds", + WasmTrapInfo::IllegalArithmetic => "illegal arithmetic operation", + WasmTrapInfo::Unknown => "unknown", + } + ) + } +} + +pub trait Kind {} + +type Trampoline = extern "C" fn(*mut Ctx, *const c_void, *const u64, *mut u64); +type Invoke = extern "C" fn( + Trampoline, + *mut Ctx, + *const c_void, + *const u64, + *mut u64, + &mut WasmTrapInfo, +) -> bool; + +pub struct Wasm { + trampoline: Trampoline, + invoke: Invoke, + invoke_env: *mut c_void, +} + +pub struct Host(()); +impl Kind for Wasm {} +impl Kind for Host {} pub trait WasmTypeList { type CStruct; + type RetArray: AsMut<[u64]>; + fn from_ret_array(array: Self::RetArray) -> Self; + fn empty_ret_array() -> Self::RetArray; fn from_c_struct(c_struct: Self::CStruct) -> Self; fn into_c_struct(self) -> Self::CStruct; fn types() -> &'static [Type]; - unsafe fn call(self, f: *const (), ctx: *mut Ctx) -> Rets + unsafe fn call( + self, + f: *const c_void, + wasm: Wasm, + ctx: *mut Ctx, + ) -> Result where Rets: WasmTypeList; } @@ -33,7 +88,7 @@ where Args: WasmTypeList, Rets: WasmTypeList, { - fn to_raw(&self) -> *const (); + fn to_raw(&self) -> *const c_void; } pub trait TrapEarly @@ -71,19 +126,31 @@ where // Func::new(f) // } -pub struct Func<'a, Args = (), Rets = (), Safety: Safeness = Safe> { - f: *const (), +pub struct Func<'a, Args = (), Rets = (), Inner: Kind = Wasm> { + inner: Inner, + f: *const c_void, ctx: *mut Ctx, - _phantom: PhantomData<(&'a (), Safety, Args, Rets)>, + _phantom: PhantomData<(&'a (), Args, Rets)>, } -impl<'a, Args, Rets> Func<'a, Args, Rets, Safe> +impl<'a, Args, Rets> Func<'a, Args, Rets, Wasm> where Args: WasmTypeList, Rets: WasmTypeList, { - pub(crate) unsafe fn new_from_ptr(f: *const (), ctx: *mut Ctx) -> Func<'a, Args, Rets, Safe> { + pub(crate) unsafe fn from_raw_parts( + trampoline: Trampoline, + invoke: Invoke, + f: *const c_void, + ctx: *mut Ctx, + invoke_env: *mut c_void, + ) -> Func<'a, Args, Rets, Wasm> { Func { + inner: Wasm { + trampoline, + invoke, + invoke_env, + }, f, ctx, _phantom: PhantomData, @@ -91,16 +158,17 @@ where } } -impl<'a, Args, Rets> Func<'a, Args, Rets, Unsafe> +impl<'a, Args, Rets> Func<'a, Args, Rets, Host> where Args: WasmTypeList, Rets: WasmTypeList, { - pub fn new(f: F) -> Func<'a, Args, Rets, Unsafe> + pub fn new(f: F) -> Func<'a, Args, Rets, Host> where F: ExternalFunction, { Func { + inner: Host(()), f: f.to_raw(), ctx: ptr::null_mut(), _phantom: PhantomData, @@ -108,11 +176,11 @@ where } } -impl<'a, Args, Rets, Safety> Func<'a, Args, Rets, Safety> +impl<'a, Args, Rets, Inner> Func<'a, Args, Rets, Inner> where Args: WasmTypeList, Rets: WasmTypeList, - Safety: Safeness, + Inner: Kind, { pub fn params(&self) -> &'static [Type] { Args::types() @@ -124,6 +192,13 @@ where impl WasmTypeList for (A,) { type CStruct = S1; + type RetArray = [u64; 1]; + fn from_ret_array(array: Self::RetArray) -> Self { + (WasmExternType::from_bits(array[0]),) + } + fn empty_ret_array() -> Self::RetArray { + [0u64] + } fn from_c_struct(c_struct: Self::CStruct) -> Self { let S1(a) = c_struct; (a,) @@ -137,19 +212,45 @@ impl WasmTypeList for (A,) { &[A::TYPE] } #[allow(non_snake_case)] - unsafe fn call(self, f: *const (), ctx: *mut Ctx) -> Rets { - let f: extern "C" fn(*mut Ctx, A) -> Rets = mem::transmute(f); + unsafe fn call( + self, + f: *const c_void, + wasm: Wasm, + ctx: *mut Ctx, + ) -> Result { + // type Trampoline = extern "C" fn(*mut Ctx, *const c_void, *const u64, *mut u64); + // type Invoke = extern "C" fn(Trampoline, *mut Ctx, *const c_void, *const u64, *mut u64, &mut WasmTrapInfo) -> bool; + let (a,) = self; - f(ctx, a) + let args = [a.to_bits()]; + let mut rets = Rets::empty_ret_array(); + let mut trap = WasmTrapInfo::Unknown; + + if (wasm.invoke)( + wasm.trampoline, + ctx, + f, + args.as_ptr(), + rets.as_mut().as_mut_ptr(), + &mut trap, + ) { + Ok(Rets::from_ret_array(rets)) + } else { + Err(trap) + } } } -impl<'a, A: WasmExternType, Rets> Func<'a, (A,), Rets, Safe> +impl<'a, A: WasmExternType, Rets> Func<'a, (A,), Rets, Wasm> where Rets: WasmTypeList, { pub fn call(&self, a: A) -> Result { - Ok(unsafe { ::call(a, self.f, self.ctx) }) + unsafe { ::call(a, self.f, self.inner, self.ctx) }.map_err(|e| { + RuntimeError::Trap { + msg: e.to_string().into(), + } + }) } } @@ -160,6 +261,14 @@ macro_rules! impl_traits { impl< $( $x: WasmExternType, )* > WasmTypeList for ( $( $x ),* ) { type CStruct = $struct_name<$( $x ),*>; + type RetArray = [u64; count_idents!( $( $x ),* )]; + fn from_ret_array(array: Self::RetArray) -> Self { + let [ $( $x ),* ] = array; + ( $( WasmExternType::from_bits($x) ),* ) + } + fn empty_ret_array() -> Self::RetArray { + [0; count_idents!( $( $x ),* )] + } fn from_c_struct(c_struct: Self::CStruct) -> Self { #[allow(non_snake_case)] let $struct_name ( $( $x ),* ) = c_struct; @@ -174,18 +283,33 @@ macro_rules! impl_traits { &[$( $x::TYPE, )*] } #[allow(non_snake_case)] - unsafe fn call(self, f: *const (), ctx: *mut Ctx) -> Rets { - let f: extern fn(*mut Ctx $( ,$x )*) -> Rets::CStruct = mem::transmute(f); + unsafe fn call(self, f: *const c_void, wasm: Wasm, ctx: *mut Ctx) -> Result { + // type Trampoline = extern "C" fn(*mut Ctx, *const c_void, *const u64, *mut u64); + // type Invoke = extern "C" fn(Trampoline, *mut Ctx, *const c_void, *const u64, *mut u64, &mut WasmTrapInfo) -> bool; + #[allow(unused_parens)] let ( $( $x ),* ) = self; - let c_struct = f(ctx $( ,$x )*); - Rets::from_c_struct(c_struct) + let args = [ $( $x.to_bits() ),* ]; + let mut rets = Rets::empty_ret_array(); + let mut trap = WasmTrapInfo::Unknown; + + if (wasm.invoke)(wasm.trampoline, ctx, f, args.as_ptr(), rets.as_mut().as_mut_ptr(), &mut trap) { + Ok(Rets::from_ret_array(rets)) + } else { + Err(trap) + } + + // let f: extern fn(*mut Ctx $( ,$x )*) -> Rets::CStruct = mem::transmute(f); + // #[allow(unused_parens)] + // let ( $( $x ),* ) = self; + // let c_struct = f(ctx $( ,$x )*); + // Rets::from_c_struct(c_struct) } } impl< $( $x: WasmExternType, )* Rets: WasmTypeList, Trap: TrapEarly, FN: Fn( &mut Ctx $( ,$x )* ) -> Trap> ExternalFunction<($( $x ),*), Rets> for FN { #[allow(non_snake_case)] - fn to_raw(&self) -> *const () { + fn to_raw(&self) -> *const c_void { assert_eq!(mem::size_of::(), 0, "you cannot use a closure that captures state for `Func`."); extern fn wrap<$( $x: WasmExternType, )* Rets: WasmTypeList, Trap: TrapEarly, FN: Fn( &mut Ctx $( ,$x )* ) -> Trap>( ctx: &mut Ctx $( ,$x: $x )* ) -> Rets::CStruct { @@ -209,23 +333,36 @@ macro_rules! impl_traits { } } - wrap::<$( $x, )* Rets, Trap, Self> as *const () + wrap::<$( $x, )* Rets, Trap, Self> as *const c_void } } - impl<'a, $( $x: WasmExternType, )* Rets> Func<'a, ( $( $x ),* ), Rets, Safe> + impl<'a, $( $x: WasmExternType, )* Rets> Func<'a, ( $( $x ),* ), Rets, Wasm> where Rets: WasmTypeList, { #[allow(non_snake_case)] pub fn call(&self, $( $x: $x, )* ) -> Result { #[allow(unused_parens)] - Ok(unsafe { <( $( $x ),* ) as WasmTypeList>::call(( $($x),* ), self.f, self.ctx) }) + unsafe { <( $( $x ),* ) as WasmTypeList>::call(( $($x),* ), self.f, self.inner, self.ctx) }.map_err(|e| { + RuntimeError::Trap { + msg: e.to_string().into(), + } + }) } } }; } +macro_rules! count_idents { + ( $($idents:ident),* ) => {{ + #[allow(dead_code, non_camel_case_types)] + enum Idents { $($idents,)* __CountIdentsLast } + const COUNT: usize = Idents::__CountIdentsLast as usize; + COUNT + }}; +} + impl_traits!([C] S0,); impl_traits!([transparent] S1, A); impl_traits!([C] S2, A, B); @@ -240,11 +377,11 @@ impl_traits!([C] S10, A, B, C, D, E, F, G, H, I, J); impl_traits!([C] S11, A, B, C, D, E, F, G, H, I, J, K); impl_traits!([C] S12, A, B, C, D, E, F, G, H, I, J, K, L); -impl<'a, Args, Rets, Safety> IsExport for Func<'a, Args, Rets, Safety> +impl<'a, Args, Rets, Inner> IsExport for Func<'a, Args, Rets, Inner> where Args: WasmTypeList, Rets: WasmTypeList, - Safety: Safeness, + Inner: Kind, { fn to_export(&self) -> Export { let func = unsafe { FuncPointer::new(self.f as _) }; diff --git a/lib/runtime-core/src/types.rs b/lib/runtime-core/src/types.rs index 966bd4e39..79ef5da7f 100644 --- a/lib/runtime-core/src/types.rs +++ b/lib/runtime-core/src/types.rs @@ -76,37 +76,99 @@ where Self: Sized, { const TYPE: Type; + fn to_bits(self) -> u64; + fn from_bits(n: u64) -> Self; } unsafe impl WasmExternType for i8 { const TYPE: Type = Type::I32; + fn to_bits(self) -> u64 { + self as u64 + } + fn from_bits(n: u64) -> Self { + n as _ + } } unsafe impl WasmExternType for u8 { const TYPE: Type = Type::I32; + fn to_bits(self) -> u64 { + self as u64 + } + fn from_bits(n: u64) -> Self { + n as _ + } } unsafe impl WasmExternType for i16 { const TYPE: Type = Type::I32; + fn to_bits(self) -> u64 { + self as u64 + } + fn from_bits(n: u64) -> Self { + n as _ + } } unsafe impl WasmExternType for u16 { const TYPE: Type = Type::I32; + fn to_bits(self) -> u64 { + self as u64 + } + fn from_bits(n: u64) -> Self { + n as _ + } } unsafe impl WasmExternType for i32 { const TYPE: Type = Type::I32; + fn to_bits(self) -> u64 { + self as u64 + } + fn from_bits(n: u64) -> Self { + n as _ + } } unsafe impl WasmExternType for u32 { const TYPE: Type = Type::I32; + fn to_bits(self) -> u64 { + self as u64 + } + fn from_bits(n: u64) -> Self { + n as _ + } } unsafe impl WasmExternType for i64 { const TYPE: Type = Type::I64; + fn to_bits(self) -> u64 { + self as u64 + } + fn from_bits(n: u64) -> Self { + n as _ + } } unsafe impl WasmExternType for u64 { const TYPE: Type = Type::I64; + fn to_bits(self) -> u64 { + self + } + fn from_bits(n: u64) -> Self { + n + } } unsafe impl WasmExternType for f32 { const TYPE: Type = Type::F32; + fn to_bits(self) -> u64 { + self.to_bits() as u64 + } + fn from_bits(n: u64) -> Self { + f32::from_bits(n as u32) + } } unsafe impl WasmExternType for f64 { const TYPE: Type = Type::F64; + fn to_bits(self) -> u64 { + self.to_bits() + } + fn from_bits(n: u64) -> Self { + f64::from_bits(n) + } } // pub trait IntegerAtomic From cc656b26a9a588ef1fc417b1cd09b84fa59b5504 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Tue, 9 Apr 2019 15:53:01 -0700 Subject: [PATCH 174/413] Add implementations for typed func errors to cranelift and llvm --- lib/clif-backend/src/signal/mod.rs | 50 +++++++- lib/clif-backend/src/trampoline.rs | 5 +- lib/llvm-backend/cpp/object_loader.hh | 161 +++++++++++++++----------- lib/llvm-backend/src/backend.rs | 83 ++++++------- lib/runtime-core/src/backend.rs | 5 +- lib/runtime-core/src/instance.rs | 20 ++-- lib/runtime-core/src/lib.rs | 2 +- lib/runtime-core/src/typed_func.rs | 69 +++++++---- lib/runtime/examples/call.rs | 17 ++- 9 files changed, 261 insertions(+), 151 deletions(-) diff --git a/lib/clif-backend/src/signal/mod.rs b/lib/clif-backend/src/signal/mod.rs index 04b97e832..766ad75fb 100644 --- a/lib/clif-backend/src/signal/mod.rs +++ b/lib/clif-backend/src/signal/mod.rs @@ -2,12 +2,13 @@ use crate::relocation::{TrapData, TrapSink}; use crate::trampoline::Trampolines; use hashbrown::HashSet; use libc::c_void; -use std::{any::Any, cell::Cell, sync::Arc}; +use std::{any::Any, cell::Cell, ptr::NonNull, sync::Arc}; use wasmer_runtime_core::{ backend::{ProtectedCaller, Token, UserTrapper}, error::RuntimeResult, export::Context, module::{ExportIndex, ModuleInfo, ModuleInner}, + typed_func::{Wasm, WasmTrapInfo}, types::{FuncIndex, FuncSig, LocalOrImport, SigIndex, Type, Value}, vm::{self, ImportBacking}, }; @@ -148,6 +149,46 @@ impl ProtectedCaller for Caller { .collect()) } + fn get_wasm_trampoline(&self, module: &ModuleInner, sig_index: SigIndex) -> Option { + unsafe extern "C" fn invoke( + trampoline: unsafe extern "C" fn(*mut vm::Ctx, NonNull, *const u64, *mut u64), + ctx: *mut vm::Ctx, + func: NonNull, + args: *const u64, + rets: *mut u64, + trap_info: *mut WasmTrapInfo, + invoke_env: Option>, + ) -> bool { + let handler_data = &*invoke_env.unwrap().cast().as_ptr(); + + #[cfg(not(target_os = "windows"))] + let res = call_protected(handler_data, || unsafe { + // Leap of faith. + trampoline(ctx, func, args, rets); + }) + .is_ok(); + + // the trampoline is called from C on windows + #[cfg(target_os = "windows")] + let res = call_protected(handler_data, trampoline, ctx, func, args, rets).is_ok(); + + res + } + + let trampoline = self + .trampolines + .lookup(sig_index) + .expect("that trampoline doesn't exist"); + + Some(unsafe { + Wasm::from_raw_parts( + trampoline, + invoke, + Some(NonNull::from(&self.handler_data).cast()), + ) + }) + } + fn get_early_trapper(&self) -> Box { Box::new(Trapper) } @@ -157,7 +198,7 @@ fn get_func_from_index<'a>( module: &'a ModuleInner, import_backing: &ImportBacking, func_index: FuncIndex, -) -> (*const vm::Func, Context, &'a FuncSig, SigIndex) { +) -> (NonNull, Context, &'a FuncSig, SigIndex) { let sig_index = *module .info .func_assoc @@ -170,14 +211,13 @@ fn get_func_from_index<'a>( .func_resolver .get(&module, local_func_index) .expect("broken invariant, func resolver not synced with module.exports") - .cast() - .as_ptr() as *const _, + .cast(), Context::Internal, ), LocalOrImport::Import(imported_func_index) => { let imported_func = import_backing.imported_func(imported_func_index); ( - imported_func.func as *const _, + NonNull::new(imported_func.func as *mut _).unwrap(), Context::External(imported_func.vmctx), ) } diff --git a/lib/clif-backend/src/trampoline.rs b/lib/clif-backend/src/trampoline.rs index b20109ef0..696a0b624 100644 --- a/lib/clif-backend/src/trampoline.rs +++ b/lib/clif-backend/src/trampoline.rs @@ -7,7 +7,7 @@ use cranelift_codegen::{ }; use hashbrown::HashMap; use std::ffi::c_void; -use std::{iter, mem}; +use std::{iter, mem, ptr::NonNull}; use wasmer_runtime_core::{ backend::sys::{Memory, Protect}, module::{ExportIndex, ModuleInfo}, @@ -23,8 +23,7 @@ impl RelocSink for NullRelocSink { fn reloc_jt(&mut self, _: u32, _: Reloc, _: ir::JumpTable) {} } -pub type Trampoline = - unsafe extern "C" fn(*mut vm::Ctx, *const vm::Func, *const u64, *mut u64) -> c_void; +pub type Trampoline = unsafe extern "C" fn(*mut vm::Ctx, NonNull, *const u64, *mut u64); pub struct Trampolines { memory: Memory, diff --git a/lib/llvm-backend/cpp/object_loader.hh b/lib/llvm-backend/cpp/object_loader.hh index d22acb919..0d6bcc603 100644 --- a/lib/llvm-backend/cpp/object_loader.hh +++ b/lib/llvm-backend/cpp/object_loader.hh @@ -5,14 +5,16 @@ #include #include -typedef enum { +typedef enum +{ PROTECT_NONE, PROTECT_READ, PROTECT_READ_WRITE, PROTECT_READ_EXECUTE, } mem_protect_t; -typedef enum { +typedef enum +{ RESULT_OK, RESULT_ALLOCATE_FAILURE, RESULT_PROTECT_FAILURE, @@ -20,16 +22,17 @@ typedef enum { RESULT_OBJECT_LOAD_FAILURE, } result_t; -typedef result_t (*alloc_memory_t)(size_t size, mem_protect_t protect, uint8_t** ptr_out, size_t* size_out); -typedef result_t (*protect_memory_t)(uint8_t* ptr, size_t size, mem_protect_t protect); -typedef result_t (*dealloc_memory_t)(uint8_t* ptr, size_t size); -typedef uintptr_t (*lookup_vm_symbol_t)(const char* name_ptr, size_t length); +typedef result_t (*alloc_memory_t)(size_t size, mem_protect_t protect, uint8_t **ptr_out, size_t *size_out); +typedef result_t (*protect_memory_t)(uint8_t *ptr, size_t size, mem_protect_t protect); +typedef result_t (*dealloc_memory_t)(uint8_t *ptr, size_t size); +typedef uintptr_t (*lookup_vm_symbol_t)(const char *name_ptr, size_t length); typedef void (*fde_visitor_t)(uint8_t *fde); typedef result_t (*visit_fde_t)(uint8_t *fde, size_t size, fde_visitor_t visitor); -typedef void (*trampoline_t)(void*, void*, void*, void*); +typedef void (*trampoline_t)(void *, void *, void *, void *); -typedef struct { +typedef struct +{ /* Memory management. */ alloc_memory_t alloc_memory; protect_memory_t protect_memory; @@ -40,32 +43,40 @@ typedef struct { visit_fde_t visit_fde; } callbacks_t; -struct WasmException { -public: +struct WasmException +{ + public: virtual std::string description() const noexcept = 0; }; -struct UncatchableException : WasmException { -public: - virtual std::string description() const noexcept override { +struct UncatchableException : WasmException +{ + public: + virtual std::string description() const noexcept override + { return "Uncatchable exception"; } }; -struct UserException : UncatchableException { -public: +struct UserException : UncatchableException +{ + public: UserException(std::string msg) : msg(msg) {} - virtual std::string description() const noexcept override { + virtual std::string description() const noexcept override + { return std::string("user exception: ") + msg; } -private: + + private: std::string msg; }; -struct WasmTrap : UncatchableException { -public: - enum Type { +struct WasmTrap : UncatchableException +{ + public: + enum Type + { Unreachable = 0, IncorrectCallIndirectSignature = 1, MemoryOutOfBounds = 2, @@ -76,49 +87,54 @@ public: WasmTrap(Type type) : type(type) {} - virtual std::string description() const noexcept override { + virtual std::string description() const noexcept override + { std::ostringstream ss; ss << "WebAssembly trap:" << '\n' << " - type: " << type << '\n'; - + return ss.str(); } Type type; -private: - friend std::ostream& operator<<(std::ostream& out, const Type& ty) { - switch (ty) { - case Type::Unreachable: - out << "unreachable"; - break; - case Type::IncorrectCallIndirectSignature: - out << "incorrect call_indirect signature"; - break; - case Type::MemoryOutOfBounds: - out << "memory access out-of-bounds"; - break; - case Type::CallIndirectOOB: - out << "call_indirect out-of-bounds"; - break; - case Type::IllegalArithmetic: - out << "illegal arithmetic operation"; - break; - case Type::Unknown: - default: - out << "unknown"; - break; + private: + friend std::ostream &operator<<(std::ostream &out, const Type &ty) + { + switch (ty) + { + case Type::Unreachable: + out << "unreachable"; + break; + case Type::IncorrectCallIndirectSignature: + out << "incorrect call_indirect signature"; + break; + case Type::MemoryOutOfBounds: + out << "memory access out-of-bounds"; + break; + case Type::CallIndirectOOB: + out << "call_indirect out-of-bounds"; + break; + case Type::IllegalArithmetic: + out << "illegal arithmetic operation"; + break; + case Type::Unknown: + default: + out << "unknown"; + break; } return out; } }; -struct CatchableException : WasmException { -public: +struct CatchableException : WasmException +{ + public: CatchableException(uint32_t type_id, uint32_t value_num) : type_id(type_id), value_num(value_num) {} - virtual std::string description() const noexcept override { + virtual std::string description() const noexcept override + { return "catchable exception"; } @@ -126,23 +142,26 @@ public: uint64_t values[1]; }; -struct WasmModule { -public: +struct WasmModule +{ + public: WasmModule( const uint8_t *object_start, size_t object_size, - callbacks_t callbacks - ); + callbacks_t callbacks); void *get_func(llvm::StringRef name) const; -private: + + private: std::unique_ptr memory_manager; std::unique_ptr object_file; std::unique_ptr runtime_dyld; }; -extern "C" { - result_t module_load(const uint8_t* mem_ptr, size_t mem_size, callbacks_t callbacks, WasmModule** module_out) { +extern "C" +{ + result_t module_load(const uint8_t *mem_ptr, size_t mem_size, callbacks_t callbacks, WasmModule **module_out) + { *module_out = new WasmModule(mem_ptr, mem_size, callbacks); return RESULT_OK; @@ -152,34 +171,44 @@ extern "C" { throw WasmTrap(ty); } - void module_delete(WasmModule* module) { + void module_delete(WasmModule *module) + { delete module; } bool invoke_trampoline( trampoline_t trampoline, - void* ctx, - void* func, - void* params, - void* results, - WasmTrap::Type* trap_out - ) throw() { - try { + void *ctx, + void *func, + void *params, + void *results, + WasmTrap::Type *trap_out, + void *invoke_env) throw() + { + try + { trampoline(ctx, func, params, results); return true; - } catch(const WasmTrap& e) { + } + catch (const WasmTrap &e) + { *trap_out = e.type; return false; - } catch(const WasmException& e) { + } + catch (const WasmException &e) + { *trap_out = WasmTrap::Type::Unknown; return false; - } catch (...) { + } + catch (...) + { *trap_out = WasmTrap::Type::Unknown; return false; } } - void* get_func_symbol(WasmModule* module, const char* name) { + void *get_func_symbol(WasmModule *module, const char *name) + { return module->get_func(llvm::StringRef(name)); } } \ No newline at end of file diff --git a/lib/llvm-backend/src/backend.rs b/lib/llvm-backend/src/backend.rs index 5a692c40e..1a82cfaf2 100644 --- a/lib/llvm-backend/src/backend.rs +++ b/lib/llvm-backend/src/backend.rs @@ -11,7 +11,7 @@ use libc::{ }; use std::{ any::Any, - ffi::CString, + ffi::{c_void, CString}, mem, ptr::{self, NonNull}, slice, str, @@ -23,6 +23,7 @@ use wasmer_runtime_core::{ export::Context, module::{ModuleInfo, ModuleInner}, structures::TypedIndex, + typed_func::{Wasm, WasmTrapInfo}, types::{FuncIndex, FuncSig, LocalFuncIndex, LocalOrImport, SigIndex, Type, Value}, vm::{self, ImportBacking}, vmcalls, @@ -54,17 +55,6 @@ enum LLVMResult { OBJECT_LOAD_FAILURE, } -#[allow(dead_code)] -#[repr(C)] -enum WasmTrapType { - Unreachable = 0, - IncorrectCallIndirectSignature = 1, - MemoryOutOfBounds = 2, - CallIndirectOOB = 3, - IllegalArithmetic = 4, - Unknown, -} - #[repr(C)] struct Callbacks { alloc_memory: extern "C" fn(usize, MemProtect, &mut *mut u8, &mut usize) -> LLVMResult, @@ -87,13 +77,15 @@ extern "C" { fn throw_trap(ty: i32); + #[allow(improper_ctypes)] fn invoke_trampoline( - trampoline: unsafe extern "C" fn(*mut vm::Ctx, *const vm::Func, *const u64, *mut u64), + trampoline: unsafe extern "C" fn(*mut vm::Ctx, NonNull, *const u64, *mut u64), vmctx_ptr: *mut vm::Ctx, - func_ptr: *const vm::Func, + func_ptr: NonNull, params: *const u64, results: *mut u64, - trap_out: *mut WasmTrapType, + trap_out: *mut WasmTrapInfo, + invoke_env: Option>, ) -> bool; } @@ -360,7 +352,12 @@ impl ProtectedCaller for LLVMProtectedCaller { let mut return_vec = vec![0; signature.returns().len()]; - let trampoline: unsafe extern "C" fn(*mut vm::Ctx, *const vm::Func, *const u64, *mut u64) = unsafe { + let trampoline: unsafe extern "C" fn( + *mut vm::Ctx, + NonNull, + *const u64, + *mut u64, + ) = unsafe { let name = if cfg!(target_os = "macos") { format!("_trmp{}", sig_index.index()) } else { @@ -374,7 +371,7 @@ impl ProtectedCaller for LLVMProtectedCaller { mem::transmute(symbol) }; - let mut trap_out = WasmTrapType::Unknown; + let mut trap_out = WasmTrapInfo::Unknown; // Here we go. let success = unsafe { @@ -385,6 +382,7 @@ impl ProtectedCaller for LLVMProtectedCaller { param_vec.as_ptr(), return_vec.as_mut_ptr(), &mut trap_out, + None, ) }; @@ -400,29 +398,35 @@ impl ProtectedCaller for LLVMProtectedCaller { }) .collect()) } else { - Err(match trap_out { - WasmTrapType::Unreachable => RuntimeError::Trap { - msg: "unreachable".into(), - }, - WasmTrapType::IncorrectCallIndirectSignature => RuntimeError::Trap { - msg: "uncorrect call_indirect signature".into(), - }, - WasmTrapType::MemoryOutOfBounds => RuntimeError::Trap { - msg: "memory out-of-bounds access".into(), - }, - WasmTrapType::CallIndirectOOB => RuntimeError::Trap { - msg: "call_indirect out-of-bounds".into(), - }, - WasmTrapType::IllegalArithmetic => RuntimeError::Trap { - msg: "illegal arithmetic operation".into(), - }, - WasmTrapType::Unknown => RuntimeError::Trap { - msg: "unknown trap".into(), - }, + Err(RuntimeError::Trap { + msg: trap_out.to_string().into(), }) } } + fn get_wasm_trampoline(&self, _module: &ModuleInner, sig_index: SigIndex) -> Option { + let trampoline: unsafe extern "C" fn( + *mut vm::Ctx, + NonNull, + *const u64, + *mut u64, + ) = unsafe { + let name = if cfg!(target_os = "macos") { + format!("_trmp{}", sig_index.index()) + } else { + format!("trmp{}", sig_index.index()) + }; + + let c_str = CString::new(name).unwrap(); + let symbol = get_func_symbol(self.module, c_str.as_ptr()); + assert!(!symbol.is_null()); + + mem::transmute(symbol) + }; + + Some(unsafe { Wasm::from_raw_parts(trampoline, invoke_trampoline, None) }) + } + fn get_early_trapper(&self) -> Box { Box::new(Placeholder) } @@ -438,7 +442,7 @@ fn get_func_from_index<'a>( module: &'a ModuleInner, import_backing: &ImportBacking, func_index: FuncIndex, -) -> (*const vm::Func, Context, &'a FuncSig, SigIndex) { +) -> (NonNull, Context, &'a FuncSig, SigIndex) { let sig_index = *module .info .func_assoc @@ -451,14 +455,13 @@ fn get_func_from_index<'a>( .func_resolver .get(&module, local_func_index) .expect("broken invariant, func resolver not synced with module.exports") - .cast() - .as_ptr() as *const _, + .cast(), Context::Internal, ), LocalOrImport::Import(imported_func_index) => { let imported_func = import_backing.imported_func(imported_func_index); ( - imported_func.func as *const _, + NonNull::new(imported_func.func as *mut _).unwrap(), Context::External(imported_func.vmctx), ) } diff --git a/lib/runtime-core/src/backend.rs b/lib/runtime-core/src/backend.rs index 94c5c87e3..cb2e74e57 100644 --- a/lib/runtime-core/src/backend.rs +++ b/lib/runtime-core/src/backend.rs @@ -3,7 +3,8 @@ use crate::{ error::CompileResult, error::RuntimeResult, module::ModuleInner, - types::{FuncIndex, LocalFuncIndex, Value}, + typed_func::Wasm, + types::{FuncIndex, LocalFuncIndex, SigIndex, Value}, vm, }; @@ -95,6 +96,8 @@ pub trait ProtectedCaller: Send + Sync { _: Token, ) -> RuntimeResult>; + fn get_wasm_trampoline(&self, module: &ModuleInner, sig_index: SigIndex) -> Option; + fn get_early_trapper(&self) -> Box; } diff --git a/lib/runtime-core/src/instance.rs b/lib/runtime-core/src/instance.rs index f1e6a0613..a88e51e98 100644 --- a/lib/runtime-core/src/instance.rs +++ b/lib/runtime-core/src/instance.rs @@ -13,7 +13,7 @@ use crate::{ types::{FuncIndex, FuncSig, GlobalIndex, LocalOrImport, MemoryIndex, TableIndex, Value}, vm, }; -use std::{mem, sync::Arc}; +use std::{mem, ptr::NonNull, sync::Arc}; pub(crate) struct InstanceInner { #[allow(dead_code)] @@ -145,20 +145,26 @@ impl Instance { } }; + let func_wasm_inner = self + .module + .protected_caller + .get_wasm_trampoline(&self.module, sig_index) + .unwrap(); + let func_ptr = match func_index.local_or_import(&self.module.info) { LocalOrImport::Local(local_func_index) => self .module .func_resolver .get(&self.module, local_func_index) - .unwrap() - .as_ptr(), - LocalOrImport::Import(import_func_index) => { - self.inner.import_backing.vm_functions[import_func_index].func - } + .unwrap(), + LocalOrImport::Import(import_func_index) => NonNull::new( + self.inner.import_backing.vm_functions[import_func_index].func as *mut _, + ) + .unwrap(), }; let typed_func: Func = - unsafe { Func::from_raw_parts(trampoline, invoke, f as _, ctx, invoke_env) }; + unsafe { Func::from_raw_parts(func_wasm_inner, func_ptr, ctx) }; Ok(typed_func) } else { diff --git a/lib/runtime-core/src/lib.rs b/lib/runtime-core/src/lib.rs index 2dc1dc3b4..48e183893 100644 --- a/lib/runtime-core/src/lib.rs +++ b/lib/runtime-core/src/lib.rs @@ -23,7 +23,7 @@ mod sig_registry; pub mod structures; mod sys; pub mod table; -mod typed_func; +pub mod typed_func; pub mod types; pub mod units; pub mod vm; diff --git a/lib/runtime-core/src/typed_func.rs b/lib/runtime-core/src/typed_func.rs index 48e689d1d..3ac9889f7 100644 --- a/lib/runtime-core/src/typed_func.rs +++ b/lib/runtime-core/src/typed_func.rs @@ -4,10 +4,17 @@ use crate::{ export::{Context, Export, FuncPointer}, import::IsExport, types::{FuncSig, Type, WasmExternType}, - vm::Ctx, + vm::{self, Ctx}, }; use std::{ - any::Any, cell::UnsafeCell, ffi::c_void, fmt, marker::PhantomData, mem, panic, ptr, sync::Arc, + any::Any, + cell::UnsafeCell, + ffi::c_void, + fmt, + marker::PhantomData, + mem, panic, + ptr::{self, NonNull}, + sync::Arc, }; thread_local! { @@ -45,20 +52,36 @@ impl fmt::Display for WasmTrapInfo { pub trait Kind {} -type Trampoline = extern "C" fn(*mut Ctx, *const c_void, *const u64, *mut u64); -type Invoke = extern "C" fn( +pub type Trampoline = unsafe extern "C" fn(*mut Ctx, NonNull, *const u64, *mut u64); +pub type Invoke = unsafe extern "C" fn( Trampoline, *mut Ctx, - *const c_void, + NonNull, *const u64, *mut u64, - &mut WasmTrapInfo, + *mut WasmTrapInfo, + Option>, ) -> bool; +#[derive(Copy, Clone)] pub struct Wasm { trampoline: Trampoline, invoke: Invoke, - invoke_env: *mut c_void, + invoke_env: Option>, +} + +impl Wasm { + pub unsafe fn from_raw_parts( + trampoline: Trampoline, + invoke: Invoke, + invoke_env: Option>, + ) -> Self { + Self { + trampoline, + invoke, + invoke_env, + } + } } pub struct Host(()); @@ -75,7 +98,7 @@ pub trait WasmTypeList { fn types() -> &'static [Type]; unsafe fn call( self, - f: *const c_void, + f: NonNull, wasm: Wasm, ctx: *mut Ctx, ) -> Result @@ -88,7 +111,7 @@ where Args: WasmTypeList, Rets: WasmTypeList, { - fn to_raw(&self) -> *const c_void; + fn to_raw(&self) -> NonNull; } pub trait TrapEarly @@ -128,7 +151,7 @@ where pub struct Func<'a, Args = (), Rets = (), Inner: Kind = Wasm> { inner: Inner, - f: *const c_void, + f: NonNull, ctx: *mut Ctx, _phantom: PhantomData<(&'a (), Args, Rets)>, } @@ -139,18 +162,12 @@ where Rets: WasmTypeList, { pub(crate) unsafe fn from_raw_parts( - trampoline: Trampoline, - invoke: Invoke, - f: *const c_void, + inner: Wasm, + f: NonNull, ctx: *mut Ctx, - invoke_env: *mut c_void, ) -> Func<'a, Args, Rets, Wasm> { Func { - inner: Wasm { - trampoline, - invoke, - invoke_env, - }, + inner, f, ctx, _phantom: PhantomData, @@ -214,7 +231,7 @@ impl WasmTypeList for (A,) { #[allow(non_snake_case)] unsafe fn call( self, - f: *const c_void, + f: NonNull, wasm: Wasm, ctx: *mut Ctx, ) -> Result { @@ -233,6 +250,7 @@ impl WasmTypeList for (A,) { args.as_ptr(), rets.as_mut().as_mut_ptr(), &mut trap, + wasm.invoke_env, ) { Ok(Rets::from_ret_array(rets)) } else { @@ -263,6 +281,7 @@ macro_rules! impl_traits { type CStruct = $struct_name<$( $x ),*>; type RetArray = [u64; count_idents!( $( $x ),* )]; fn from_ret_array(array: Self::RetArray) -> Self { + #[allow(non_snake_case)] let [ $( $x ),* ] = array; ( $( WasmExternType::from_bits($x) ),* ) } @@ -283,7 +302,7 @@ macro_rules! impl_traits { &[$( $x::TYPE, )*] } #[allow(non_snake_case)] - unsafe fn call(self, f: *const c_void, wasm: Wasm, ctx: *mut Ctx) -> Result { + unsafe fn call(self, f: NonNull, wasm: Wasm, ctx: *mut Ctx) -> Result { // type Trampoline = extern "C" fn(*mut Ctx, *const c_void, *const u64, *mut u64); // type Invoke = extern "C" fn(Trampoline, *mut Ctx, *const c_void, *const u64, *mut u64, &mut WasmTrapInfo) -> bool; @@ -293,7 +312,7 @@ macro_rules! impl_traits { let mut rets = Rets::empty_ret_array(); let mut trap = WasmTrapInfo::Unknown; - if (wasm.invoke)(wasm.trampoline, ctx, f, args.as_ptr(), rets.as_mut().as_mut_ptr(), &mut trap) { + if (wasm.invoke)(wasm.trampoline, ctx, f, args.as_ptr(), rets.as_mut().as_mut_ptr(), &mut trap, wasm.invoke_env) { Ok(Rets::from_ret_array(rets)) } else { Err(trap) @@ -309,7 +328,7 @@ macro_rules! impl_traits { impl< $( $x: WasmExternType, )* Rets: WasmTypeList, Trap: TrapEarly, FN: Fn( &mut Ctx $( ,$x )* ) -> Trap> ExternalFunction<($( $x ),*), Rets> for FN { #[allow(non_snake_case)] - fn to_raw(&self) -> *const c_void { + fn to_raw(&self) -> NonNull { assert_eq!(mem::size_of::(), 0, "you cannot use a closure that captures state for `Func`."); extern fn wrap<$( $x: WasmExternType, )* Rets: WasmTypeList, Trap: TrapEarly, FN: Fn( &mut Ctx $( ,$x )* ) -> Trap>( ctx: &mut Ctx $( ,$x: $x )* ) -> Rets::CStruct { @@ -333,7 +352,7 @@ macro_rules! impl_traits { } } - wrap::<$( $x, )* Rets, Trap, Self> as *const c_void + NonNull::new(wrap::<$( $x, )* Rets, Trap, Self> as *mut vm::Func).unwrap() } } @@ -384,7 +403,7 @@ where Inner: Kind, { fn to_export(&self) -> Export { - let func = unsafe { FuncPointer::new(self.f as _) }; + let func = unsafe { FuncPointer::new(self.f.as_ptr()) }; let ctx = Context::Internal; let signature = Arc::new(FuncSig::new(Args::types(), Rets::types())); diff --git a/lib/runtime/examples/call.rs b/lib/runtime/examples/call.rs index dbd29c7e8..104fa9692 100644 --- a/lib/runtime/examples/call.rs +++ b/lib/runtime/examples/call.rs @@ -5,7 +5,10 @@ use wabt::wat2wasm; static WAT: &'static str = r#" (module (type (;0;) (func (result i32))) + (import "env" "do_panic" (func $do_panic (type 0))) (func $dbz (result i32) + call $do_panic + drop i32.const 42 i32.const 0 i32.div_u @@ -33,6 +36,10 @@ fn foobar(ctx: &mut Ctx) -> i32 { 42 } +fn do_panic(ctx: &mut Ctx) -> Result { + Err("error".to_string()) +} + fn main() -> Result<(), error::Error> { let wasm = get_wasm(); @@ -46,11 +53,15 @@ fn main() -> Result<(), error::Error> { // }; println!("instantiating"); - let instance = module.instantiate(&imports! {})?; + let instance = module.instantiate(&imports! { + "env" => { + "do_panic" => Func::new(do_panic), + }, + })?; - let foo = instance.dyn_func("dbz")?; + let foo: Func<(), i32> = instance.func("dbz")?; - let result = foo.call(&[]); + let result = foo.call(); println!("result: {:?}", result); From 782bb384ad5d666580b34b661e4bb85699ddc25c Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Tue, 9 Apr 2019 16:07:09 -0700 Subject: [PATCH 175/413] Cleanup --- lib/dynasm-backend/src/codegen_x64.rs | 5 +++++ lib/emscripten/src/varargs.rs | 7 +++++++ lib/wasi/src/ptr.rs | 10 ++++++++++ 3 files changed, 22 insertions(+) diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index ef056a695..30b5ea2bc 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -18,6 +18,7 @@ use wasmer_runtime_core::{ memory::MemoryType, module::{ModuleInfo, ModuleInner}, structures::{Map, TypedIndex}, + typed_func::Wasm, types::{ FuncIndex, FuncSig, ImportedMemoryIndex, LocalFuncIndex, LocalGlobalIndex, LocalMemoryIndex, LocalOrImport, MemoryIndex, SigIndex, Type, Value, @@ -459,6 +460,10 @@ impl ProtectedCaller for X64ExecutionContext { }) } + fn get_wasm_trampoline(&self, _module: &ModuleInner, _sig_index: SigIndex) -> Option { + unimplemented!() + } + fn get_early_trapper(&self) -> Box { pub struct Trapper; diff --git a/lib/emscripten/src/varargs.rs b/lib/emscripten/src/varargs.rs index cd9073cb9..3775d102c 100644 --- a/lib/emscripten/src/varargs.rs +++ b/lib/emscripten/src/varargs.rs @@ -20,4 +20,11 @@ impl VarArgs { unsafe impl WasmExternType for VarArgs { const TYPE: Type = Type::I32; + + fn to_bits(self) -> u64 { + self.pointer as u64 + } + fn from_bits(n: u64) -> Self { + Self { pointer: n as u32 } + } } diff --git a/lib/wasi/src/ptr.rs b/lib/wasi/src/ptr.rs index 56abb3b2d..da892d1bf 100644 --- a/lib/wasi/src/ptr.rs +++ b/lib/wasi/src/ptr.rs @@ -72,6 +72,16 @@ impl WasmPtr { unsafe impl WasmExternType for WasmPtr { const TYPE: Type = Type::I32; + + fn to_bits(self) -> u64 { + self.offset as u64 + } + fn from_bits(n: u64) -> Self { + Self { + offset: n as u32, + _phantom: PhantomData, + } + } } unsafe impl ValueType for WasmPtr {} From a320af4485726ffe422af3d5d9f503a18b2c2d6f Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Tue, 9 Apr 2019 16:15:50 -0700 Subject: [PATCH 176/413] Fix runtime test missing method --- lib/runtime-core/src/vm.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/runtime-core/src/vm.rs b/lib/runtime-core/src/vm.rs index 2802123f1..3b2ca9938 100644 --- a/lib/runtime-core/src/vm.rs +++ b/lib/runtime-core/src/vm.rs @@ -549,7 +549,8 @@ mod vm_ctx_tests { }; use crate::cache::Error as CacheError; use crate::error::RuntimeResult; - use crate::types::{FuncIndex, LocalFuncIndex, Value}; + use crate::typed_func::Wasm; + use crate::types::{FuncIndex, LocalFuncIndex, SigIndex, Value}; use hashbrown::HashMap; use std::ptr::NonNull; struct Placeholder; @@ -574,6 +575,13 @@ mod vm_ctx_tests { ) -> RuntimeResult> { Ok(vec![]) } + fn get_wasm_trampoline( + &self, + _module: &ModuleInner, + _sig_index: SigIndex, + ) -> Option { + unimplemented!() + } fn get_early_trapper(&self) -> Box { unimplemented!() } From a657315320a9259eecf6ee5de502311133797c84 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Tue, 9 Apr 2019 16:46:01 -0700 Subject: [PATCH 177/413] Attempt to fix windows build --- lib/clif-backend/src/signal/windows.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/clif-backend/src/signal/windows.rs b/lib/clif-backend/src/signal/windows.rs index 99145869e..358b73236 100644 --- a/lib/clif-backend/src/signal/windows.rs +++ b/lib/clif-backend/src/signal/windows.rs @@ -3,7 +3,7 @@ use crate::signal::HandlerData; use crate::trampoline::Trampoline; use std::cell::Cell; use std::ffi::c_void; -use std::ptr; +use std::ptr::{self, NonNull}; use wasmer_runtime_core::error::{RuntimeError, RuntimeResult}; use wasmer_runtime_core::vm::Ctx; use wasmer_runtime_core::vm::Func; @@ -25,7 +25,7 @@ pub fn call_protected( handler_data: &HandlerData, trampoline: Trampoline, ctx: *mut Ctx, - func: *const Func, + func: NonNull, param_vec: *const u64, return_vec: *mut u64, ) -> RuntimeResult<()> { From 50b5da8dd0004ecfa0de190c7aa7c1f7c709bed4 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Tue, 9 Apr 2019 16:50:33 -0700 Subject: [PATCH 178/413] Attempt #2 for windows building --- lib/win-exception-handler/src/exception_handling.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/win-exception-handler/src/exception_handling.rs b/lib/win-exception-handler/src/exception_handling.rs index 966432a70..2af364b47 100644 --- a/lib/win-exception-handler/src/exception_handling.rs +++ b/lib/win-exception-handler/src/exception_handling.rs @@ -1,7 +1,8 @@ use std::ffi::c_void; +use std::ptr::NonNull; use wasmer_runtime_core::vm::{Ctx, Func}; -type Trampoline = unsafe extern "C" fn(*mut Ctx, *const Func, *const u64, *mut u64) -> c_void; +type Trampoline = unsafe extern "C" fn(*mut Ctx, NonNull, *const u64, *mut u64) -> c_void; type CallProtectedResult = Result<(), CallProtectedData>; #[repr(C)] @@ -16,7 +17,7 @@ extern "C" { pub fn __call_protected( trampoline: Trampoline, ctx: *mut Ctx, - func: *const Func, + func: NonNull, param_vec: *const u64, return_vec: *mut u64, out_result: *mut CallProtectedData, @@ -26,7 +27,7 @@ extern "C" { pub fn _call_protected( trampoline: Trampoline, ctx: *mut Ctx, - func: *const Func, + func: NonNull, param_vec: *const u64, return_vec: *mut u64, ) -> CallProtectedResult { From 70ab6667c723cc1aaac1af5d848f72c949e34240 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Tue, 9 Apr 2019 16:54:55 -0700 Subject: [PATCH 179/413] Attempt #3 for windows --- lib/win-exception-handler/src/exception_handling.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/win-exception-handler/src/exception_handling.rs b/lib/win-exception-handler/src/exception_handling.rs index 2af364b47..ea36333ab 100644 --- a/lib/win-exception-handler/src/exception_handling.rs +++ b/lib/win-exception-handler/src/exception_handling.rs @@ -2,7 +2,7 @@ use std::ffi::c_void; use std::ptr::NonNull; use wasmer_runtime_core::vm::{Ctx, Func}; -type Trampoline = unsafe extern "C" fn(*mut Ctx, NonNull, *const u64, *mut u64) -> c_void; +type Trampoline = unsafe extern "C" fn(*mut Ctx, NonNull, *const u64, *mut u64); type CallProtectedResult = Result<(), CallProtectedData>; #[repr(C)] From ffe00da6782a33ae9796348a01b67e15ad344d5c Mon Sep 17 00:00:00 2001 From: Syrus Date: Tue, 9 Apr 2019 17:48:42 -0700 Subject: [PATCH 180/413] Improved invoke certain functions --- lib/emscripten/src/emscripten_target.rs | 83 ++++++++++++++----------- 1 file changed, 47 insertions(+), 36 deletions(-) diff --git a/lib/emscripten/src/emscripten_target.rs b/lib/emscripten/src/emscripten_target.rs index 71c2d2d96..98ce0ab29 100644 --- a/lib/emscripten/src/emscripten_target.rs +++ b/lib/emscripten/src/emscripten_target.rs @@ -33,21 +33,21 @@ pub fn invoke_ii(ctx: &mut Ctx, index: i32, a1: i32) -> i32 { } pub fn invoke_iii(ctx: &mut Ctx, index: i32, a1: i32, a2: i32) -> i32 { debug!("emscripten::invoke_iii"); - if let Some(dyn_call_iii) = &get_emscripten_data(ctx).dyn_call_iii { - dyn_call_iii.call(index, a1, a2).unwrap() - } else { - panic!("dyn_call_iii is set to None"); - } - // let sp = get_emscripten_data(ctx).stack_save.as_ref().expect("stack_save is None").call().expect("stack_save call failed"); - // let result = get_emscripten_data(ctx).dyn_call_iii.as_ref().expect("dyn_call_iii is None").call(index, a1, a2); - // match result { - // Ok(v) => v, - // Err(e) => { - // get_emscripten_data(ctx).stack_restore.as_ref().expect("stack_restore is None").call(sp).expect("stack_restore call failed"); - // get_emscripten_data(ctx).set_threw.as_ref().expect("set_threw is None").call(1, 0).expect("set_threw call failed"); - // 0 - // } + // if let Some(dyn_call_iii) = &get_emscripten_data(ctx).dyn_call_iii { + // dyn_call_iii.call(index, a1, a2).unwrap() + // } else { + // panic!("dyn_call_iii is set to None"); // } + let sp = get_emscripten_data(ctx).stack_save.as_ref().expect("stack_save is None").call().expect("stack_save call failed"); + let result = get_emscripten_data(ctx).dyn_call_iii.as_ref().expect("dyn_call_iii is None").call(index, a1, a2); + match result { + Ok(v) => v, + Err(e) => { + get_emscripten_data(ctx).stack_restore.as_ref().expect("stack_restore is None").call(sp).expect("stack_restore call failed"); + get_emscripten_data(ctx).set_threw.as_ref().expect("set_threw is None").call(1, 0).expect("set_threw call failed"); + 0 + } + } } pub fn invoke_iiii(ctx: &mut Ctx, index: i32, a1: i32, a2: i32, a3: i32) -> i32 { debug!("emscripten::invoke_iiii"); @@ -59,25 +59,25 @@ pub fn invoke_iiii(ctx: &mut Ctx, index: i32, a1: i32, a2: i32, a3: i32) -> i32 } pub fn invoke_v(ctx: &mut Ctx, index: i32) { debug!("emscripten::invoke_v"); - if let Some(dyn_call_v) = &get_emscripten_data(ctx).dyn_call_v { - dyn_call_v.call(index).unwrap(); - } else { - panic!("dyn_call_v is set to None"); - } - // let sp = get_emscripten_data(ctx).stack_save.as_ref().expect("stack_save is None").call().expect("stack_save call failed"); - // debug!("emscripten::invoke_v pre call"); - // let func = get_emscripten_data(ctx).dyn_call_v.as_ref().expect("dyn_call_v is None"); - // let result = func.call(index); - // debug!("emscripten::invoke_v post2 call"); - - // match result { - // Ok(v) => { - // }, - // Err(e) => { - // get_emscripten_data(ctx).stack_restore.as_ref().expect("stack_restore is None").call(sp).expect("stack_restore call failed"); - // get_emscripten_data(ctx).set_threw.as_ref().expect("set_threw is None").call(1, 0).expect("set_threw call failed"); - // } + // if let Some(dyn_call_v) = &get_emscripten_data(ctx).dyn_call_v { + // dyn_call_v.call(index).unwrap(); + // } else { + // panic!("dyn_call_v is set to None"); // } + let sp = get_emscripten_data(ctx).stack_save.as_ref().expect("stack_save is None").call().expect("stack_save call failed"); + debug!("emscripten::invoke_v pre call"); + let func = get_emscripten_data(ctx).dyn_call_v.as_ref().expect("dyn_call_v is None"); + let result = func.call(index); + debug!("emscripten::invoke_v post2 call"); + + match result { + Ok(v) => { + }, + Err(e) => { + get_emscripten_data(ctx).stack_restore.as_ref().expect("stack_restore is None").call(sp).expect("stack_restore call failed"); + get_emscripten_data(ctx).set_threw.as_ref().expect("set_threw is None").call(1, 0).expect("set_threw call failed"); + } + } } pub fn invoke_vi(ctx: &mut Ctx, index: i32, a1: i32) { debug!("emscripten::invoke_vi"); @@ -89,12 +89,23 @@ pub fn invoke_vi(ctx: &mut Ctx, index: i32, a1: i32) { } pub fn invoke_vii(ctx: &mut Ctx, index: i32, a1: i32, a2: i32) { debug!("emscripten::invoke_vii"); - if let Some(dyn_call_vii) = &get_emscripten_data(ctx).dyn_call_vii { - dyn_call_vii.call(index, a1, a2).unwrap(); - } else { - panic!("dyn_call_vii is set to None"); + + let sp = get_emscripten_data(ctx).stack_save.as_ref().expect("stack_save is None").call().expect("stack_save call failed"); + debug!("emscripten::invoke_vii pre call"); + let func = get_emscripten_data(ctx).dyn_call_vii.as_ref().expect("dyn_call_vii is None"); + let result = func.call(index, a1, a2); + debug!("emscripten::invoke_vii post2 call"); + + match result { + Ok(v) => { + }, + Err(e) => { + get_emscripten_data(ctx).stack_restore.as_ref().expect("stack_restore is None").call(sp).expect("stack_restore call failed"); + get_emscripten_data(ctx).set_threw.as_ref().expect("set_threw is None").call(1, 0).expect("set_threw call failed"); + } } } + pub fn invoke_viii(ctx: &mut Ctx, index: i32, a1: i32, a2: i32, a3: i32) { debug!("emscripten::invoke_viii"); if let Some(dyn_call_viii) = &get_emscripten_data(ctx).dyn_call_viii { From b2446b567e4e0a38413f4ce29cc91618cec36bdc Mon Sep 17 00:00:00 2001 From: Syrus Date: Tue, 9 Apr 2019 17:49:13 -0700 Subject: [PATCH 181/413] Uncommented some longjmp tests --- lib/emscripten/Cargo.toml | 3 ++- lib/emscripten/emtests/ignores.txt | 2 -- lib/emscripten/tests/emtests/test_longjmp.rs | 1 - lib/emscripten/tests/emtests/test_longjmp3.rs | 1 - 4 files changed, 2 insertions(+), 5 deletions(-) diff --git a/lib/emscripten/Cargo.toml b/lib/emscripten/Cargo.toml index 2823b1c4f..5c59db350 100644 --- a/lib/emscripten/Cargo.toml +++ b/lib/emscripten/Cargo.toml @@ -30,4 +30,5 @@ glob = "0.2.11" [features] clif = [] llvm = ["wasmer-llvm-backend"] -dynasm = ["wasmer-dynasm-backend"] \ No newline at end of file +dynasm = ["wasmer-dynasm-backend"] +debug = ["wasmer-clif-backend/debug", "wasmer-runtime-core/debug"] diff --git a/lib/emscripten/emtests/ignores.txt b/lib/emscripten/emtests/ignores.txt index a68a29ef3..c120f2dd3 100644 --- a/lib/emscripten/emtests/ignores.txt +++ b/lib/emscripten/emtests/ignores.txt @@ -31,9 +31,7 @@ test_i64_7z test_i64_varargs test_llvm_intrinsics test_longjmp2 -test_longjmp3 test_longjmp4 -test_longjmp test_longjmp_exc test_longjmp_funcptr test_longjmp_repeat diff --git a/lib/emscripten/tests/emtests/test_longjmp.rs b/lib/emscripten/tests/emtests/test_longjmp.rs index c125f5d21..90aaba8ff 100644 --- a/lib/emscripten/tests/emtests/test_longjmp.rs +++ b/lib/emscripten/tests/emtests/test_longjmp.rs @@ -1,5 +1,4 @@ #[test] -#[ignore] fn test_test_longjmp() { assert_emscripten_output!( "../../emtests/test_longjmp.wasm", diff --git a/lib/emscripten/tests/emtests/test_longjmp3.rs b/lib/emscripten/tests/emtests/test_longjmp3.rs index 4ce0e2e6f..65923c8ed 100644 --- a/lib/emscripten/tests/emtests/test_longjmp3.rs +++ b/lib/emscripten/tests/emtests/test_longjmp3.rs @@ -1,5 +1,4 @@ #[test] -#[ignore] fn test_test_longjmp3() { assert_emscripten_output!( "../../emtests/test_longjmp3.wasm", From 02ed9f0e5f046a4da0cd652e11b5d07e6b3ffe33 Mon Sep 17 00:00:00 2001 From: Syrus Date: Tue, 9 Apr 2019 18:33:29 -0700 Subject: [PATCH 182/413] =?UTF-8?q?Reenabled=20longjmp=20=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/emscripten/emtests/ignores.txt | 7 - lib/emscripten/src/emscripten_target.rs | 330 ++++++++---------- lib/emscripten/src/jmp.rs | 14 +- lib/emscripten/src/lib.rs | 2 +- lib/emscripten/tests/emtests/_common.rs | 50 +-- lib/emscripten/tests/emtests/test_longjmp2.rs | 1 - lib/emscripten/tests/emtests/test_longjmp4.rs | 1 - .../tests/emtests/test_longjmp_funcptr.rs | 1 - .../tests/emtests/test_longjmp_repeat.rs | 1 - .../tests/emtests/test_longjmp_stacked.rs | 1 - .../tests/emtests/test_longjmp_throw.rs | 1 - .../tests/emtests/test_longjmp_unwind.rs | 1 - lib/runtime-core/src/lib.rs | 2 +- 13 files changed, 171 insertions(+), 241 deletions(-) diff --git a/lib/emscripten/emtests/ignores.txt b/lib/emscripten/emtests/ignores.txt index c120f2dd3..16ff1a2a7 100644 --- a/lib/emscripten/emtests/ignores.txt +++ b/lib/emscripten/emtests/ignores.txt @@ -30,14 +30,7 @@ test_i64 test_i64_7z test_i64_varargs test_llvm_intrinsics -test_longjmp2 -test_longjmp4 test_longjmp_exc -test_longjmp_funcptr -test_longjmp_repeat -test_longjmp_stacked -test_longjmp_throw -test_longjmp_unwind test_lower_intrinsics test_main_thread_async_em_asm test_mainenv diff --git a/lib/emscripten/src/emscripten_target.rs b/lib/emscripten/src/emscripten_target.rs index 98ce0ab29..d24e51df2 100644 --- a/lib/emscripten/src/emscripten_target.rs +++ b/lib/emscripten/src/emscripten_target.rs @@ -15,113 +15,6 @@ pub fn getTempRet0(ctx: &mut Ctx) -> i32 { get_emscripten_data(ctx).temp_ret_0 } -pub fn invoke_i(ctx: &mut Ctx, index: i32) -> i32 { - debug!("emscripten::invoke_i"); - if let Some(dyn_call_i) = &get_emscripten_data(ctx).dyn_call_i { - dyn_call_i.call(index).unwrap() - } else { - panic!("dyn_call_i is set to None"); - } -} -pub fn invoke_ii(ctx: &mut Ctx, index: i32, a1: i32) -> i32 { - debug!("emscripten::invoke_ii"); - if let Some(dyn_call_ii) = &get_emscripten_data(ctx).dyn_call_ii { - dyn_call_ii.call(index, a1).unwrap() - } else { - panic!("dyn_call_ii is set to None"); - } -} -pub fn invoke_iii(ctx: &mut Ctx, index: i32, a1: i32, a2: i32) -> i32 { - debug!("emscripten::invoke_iii"); - // if let Some(dyn_call_iii) = &get_emscripten_data(ctx).dyn_call_iii { - // dyn_call_iii.call(index, a1, a2).unwrap() - // } else { - // panic!("dyn_call_iii is set to None"); - // } - let sp = get_emscripten_data(ctx).stack_save.as_ref().expect("stack_save is None").call().expect("stack_save call failed"); - let result = get_emscripten_data(ctx).dyn_call_iii.as_ref().expect("dyn_call_iii is None").call(index, a1, a2); - match result { - Ok(v) => v, - Err(e) => { - get_emscripten_data(ctx).stack_restore.as_ref().expect("stack_restore is None").call(sp).expect("stack_restore call failed"); - get_emscripten_data(ctx).set_threw.as_ref().expect("set_threw is None").call(1, 0).expect("set_threw call failed"); - 0 - } - } -} -pub fn invoke_iiii(ctx: &mut Ctx, index: i32, a1: i32, a2: i32, a3: i32) -> i32 { - debug!("emscripten::invoke_iiii"); - if let Some(dyn_call_iiii) = &get_emscripten_data(ctx).dyn_call_iiii { - dyn_call_iiii.call(index, a1, a2, a3).unwrap() - } else { - panic!("dyn_call_iiii is set to None"); - } -} -pub fn invoke_v(ctx: &mut Ctx, index: i32) { - debug!("emscripten::invoke_v"); - // if let Some(dyn_call_v) = &get_emscripten_data(ctx).dyn_call_v { - // dyn_call_v.call(index).unwrap(); - // } else { - // panic!("dyn_call_v is set to None"); - // } - let sp = get_emscripten_data(ctx).stack_save.as_ref().expect("stack_save is None").call().expect("stack_save call failed"); - debug!("emscripten::invoke_v pre call"); - let func = get_emscripten_data(ctx).dyn_call_v.as_ref().expect("dyn_call_v is None"); - let result = func.call(index); - debug!("emscripten::invoke_v post2 call"); - - match result { - Ok(v) => { - }, - Err(e) => { - get_emscripten_data(ctx).stack_restore.as_ref().expect("stack_restore is None").call(sp).expect("stack_restore call failed"); - get_emscripten_data(ctx).set_threw.as_ref().expect("set_threw is None").call(1, 0).expect("set_threw call failed"); - } - } -} -pub fn invoke_vi(ctx: &mut Ctx, index: i32, a1: i32) { - debug!("emscripten::invoke_vi"); - if let Some(dyn_call_vi) = &get_emscripten_data(ctx).dyn_call_vi { - dyn_call_vi.call(index, a1).unwrap(); - } else { - panic!("dyn_call_vi is set to None"); - } -} -pub fn invoke_vii(ctx: &mut Ctx, index: i32, a1: i32, a2: i32) { - debug!("emscripten::invoke_vii"); - - let sp = get_emscripten_data(ctx).stack_save.as_ref().expect("stack_save is None").call().expect("stack_save call failed"); - debug!("emscripten::invoke_vii pre call"); - let func = get_emscripten_data(ctx).dyn_call_vii.as_ref().expect("dyn_call_vii is None"); - let result = func.call(index, a1, a2); - debug!("emscripten::invoke_vii post2 call"); - - match result { - Ok(v) => { - }, - Err(e) => { - get_emscripten_data(ctx).stack_restore.as_ref().expect("stack_restore is None").call(sp).expect("stack_restore call failed"); - get_emscripten_data(ctx).set_threw.as_ref().expect("set_threw is None").call(1, 0).expect("set_threw call failed"); - } - } -} - -pub fn invoke_viii(ctx: &mut Ctx, index: i32, a1: i32, a2: i32, a3: i32) { - debug!("emscripten::invoke_viii"); - if let Some(dyn_call_viii) = &get_emscripten_data(ctx).dyn_call_viii { - dyn_call_viii.call(index, a1, a2, a3).unwrap(); - } else { - panic!("dyn_call_viii is set to None"); - } -} -pub fn invoke_viiii(ctx: &mut Ctx, index: i32, a1: i32, a2: i32, a3: i32, a4: i32) { - debug!("emscripten::invoke_viiii"); - if let Some(dyn_call_viiii) = &get_emscripten_data(ctx).dyn_call_viiii { - dyn_call_viiii.call(index, a1, a2, a3, a4).unwrap(); - } else { - panic!("dyn_call_viiii is set to None"); - } -} pub fn __Unwind_Backtrace(_ctx: &mut Ctx, _a: i32, _b: i32) -> i32 { debug!("emscripten::__Unwind_Backtrace"); 0 @@ -279,29 +172,88 @@ pub fn _getloadavg(_ctx: &mut Ctx, _loadavg: i32, _nelem: i32) -> i32 { debug!("emscripten::getloadavg"); 0 } + +// Invoke functions +// They save the stack to allow unwinding + +// Macro definitions +macro_rules! invoke { + ($ctx: ident, $name:ident, $( $arg:ident ),*) => {{ + let sp = get_emscripten_data($ctx).stack_save.as_ref().expect("stack_save is None").call().expect("stack_save call failed"); + let result = get_emscripten_data($ctx).$name.as_ref().expect(concat!("Dynamic call is None: ", stringify!($name))).call($($arg),*); + match result { + Ok(v) => v, + Err(_e) => { + get_emscripten_data($ctx).stack_restore.as_ref().expect("stack_restore is None").call(sp).expect("stack_restore call failed"); + get_emscripten_data($ctx).set_threw.as_ref().expect("set_threw is None").call(1, 0).expect("set_threw call failed"); + 0 as _ + } + } + }}; +} +macro_rules! invoke_no_return { + ($ctx: ident, $name:ident, $( $arg:ident ),*) => {{ + let sp = get_emscripten_data($ctx).stack_save.as_ref().expect("stack_save is None").call().expect("stack_save call failed"); + let result = get_emscripten_data($ctx).$name.as_ref().expect(concat!("Dynamic call is None: ", stringify!($name))).call($($arg),*); + match result { + Ok(v) => v, + Err(_e) => { + get_emscripten_data($ctx).stack_restore.as_ref().expect("stack_restore is None").call(sp).expect("stack_restore call failed"); + get_emscripten_data($ctx).set_threw.as_ref().expect("set_threw is None").call(1, 0).expect("set_threw call failed"); + } + } + }}; +} + +// Invoke functions +pub fn invoke_i(ctx: &mut Ctx, index: i32) -> i32 { + debug!("emscripten::invoke_i"); + invoke!(ctx, dyn_call_i, index) +} +pub fn invoke_ii(ctx: &mut Ctx, index: i32, a1: i32) -> i32 { + debug!("emscripten::invoke_ii"); + invoke!(ctx, dyn_call_ii, index, a1) +} +pub fn invoke_iii(ctx: &mut Ctx, index: i32, a1: i32, a2: i32) -> i32 { + debug!("emscripten::invoke_iii"); + invoke!(ctx, dyn_call_iii, index, a1, a2) +} +pub fn invoke_iiii(ctx: &mut Ctx, index: i32, a1: i32, a2: i32, a3: i32) -> i32 { + debug!("emscripten::invoke_iiii"); + invoke!(ctx, dyn_call_iiii, index, a1, a2, a3) +} +pub fn invoke_v(ctx: &mut Ctx, index: i32) { + debug!("emscripten::invoke_v"); + invoke_no_return!(ctx, dyn_call_v, index); +} +pub fn invoke_vi(ctx: &mut Ctx, index: i32, a1: i32) { + debug!("emscripten::invoke_vi"); + invoke_no_return!(ctx, dyn_call_vi, index, a1); +} +pub fn invoke_vii(ctx: &mut Ctx, index: i32, a1: i32, a2: i32) { + debug!("emscripten::invoke_vii"); + invoke_no_return!(ctx, dyn_call_vii, index, a1, a2); +} + +pub fn invoke_viii(ctx: &mut Ctx, index: i32, a1: i32, a2: i32, a3: i32) { + debug!("emscripten::invoke_viii"); + invoke_no_return!(ctx, dyn_call_viii, index, a1, a2, a3); +} +pub fn invoke_viiii(ctx: &mut Ctx, index: i32, a1: i32, a2: i32, a3: i32, a4: i32) { + debug!("emscripten::invoke_viiii"); + invoke_no_return!(ctx, dyn_call_viiii, index, a1, a2, a3, a4); +} pub fn invoke_dii(ctx: &mut Ctx, index: i32, a1: i32, a2: i32) -> f64 { debug!("emscripten::invoke_dii"); - if let Some(dyn_call_dii) = &get_emscripten_data(ctx).dyn_call_dii { - dyn_call_dii.call(index, a1, a2).unwrap() - } else { - panic!("dyn_call_dii is set to None"); - } + invoke!(ctx, dyn_call_dii, index, a1, a2) } pub fn invoke_diiii(ctx: &mut Ctx, index: i32, a1: i32, a2: i32, a3: i32, a4: i32) -> f64 { debug!("emscripten::invoke_diiii"); - if let Some(dyn_call_diiii) = &get_emscripten_data(ctx).dyn_call_diiii { - dyn_call_diiii.call(index, a1, a2, a3, a4).unwrap() - } else { - panic!("dyn_call_diiii is set to None"); - } + invoke!(ctx, dyn_call_diiii, index, a1, a2, a3, a4) } pub fn invoke_iiiii(ctx: &mut Ctx, index: i32, a1: i32, a2: i32, a3: i32, a4: i32) -> i32 { debug!("emscripten::invoke_iiiii"); - if let Some(dyn_call_iiiii) = &get_emscripten_data(ctx).dyn_call_iiiii { - dyn_call_iiiii.call(index, a1, a2, a3, a4).unwrap() - } else { - panic!("dyn_call_iiiii is set to None"); - } + invoke!(ctx, dyn_call_iiiii, index, a1, a2, a3, a4) } pub fn invoke_iiiiii( ctx: &mut Ctx, @@ -313,11 +265,7 @@ pub fn invoke_iiiiii( a5: i32, ) -> i32 { debug!("emscripten::invoke_iiiiii"); - if let Some(dyn_call_iiiiii) = &get_emscripten_data(ctx).dyn_call_iiiiii { - dyn_call_iiiiii.call(index, a1, a2, a3, a4, a5).unwrap() - } else { - panic!("dyn_call_iiiiii is set to None"); - } + invoke!(ctx, dyn_call_iiiiii, index, a1, a2, a3, a4, a5) } pub fn invoke_iiiiiii( ctx: &mut Ctx, @@ -330,13 +278,7 @@ pub fn invoke_iiiiiii( a6: i32, ) -> i32 { debug!("emscripten::invoke_iiiiiii"); - if let Some(dyn_call_iiiiiii) = &get_emscripten_data(ctx).dyn_call_iiiiiii { - dyn_call_iiiiiii - .call(index, a1, a2, a3, a4, a5, a6) - .unwrap() - } else { - panic!("dyn_call_iiiiiii is set to None"); - } + invoke!(ctx, dyn_call_iiiiiii, index, a1, a2, a3, a4, a5, a6) } pub fn invoke_iiiiiiii( ctx: &mut Ctx, @@ -350,13 +292,7 @@ pub fn invoke_iiiiiiii( a7: i32, ) -> i32 { debug!("emscripten::invoke_iiiiiiii"); - if let Some(dyn_call_iiiiiiii) = &get_emscripten_data(ctx).dyn_call_iiiiiiii { - dyn_call_iiiiiiii - .call(index, a1, a2, a3, a4, a5, a6, a7) - .unwrap() - } else { - panic!("dyn_call_iiiiiiii is set to None"); - } + invoke!(ctx, dyn_call_iiiiiiii, index, a1, a2, a3, a4, a5, a6, a7) } pub fn invoke_iiiiiiiiii( ctx: &mut Ctx, @@ -372,29 +308,28 @@ pub fn invoke_iiiiiiiiii( a9: i32, ) -> i32 { debug!("emscripten::invoke_iiiiiiiiii"); - if let Some(dyn_call_iiiiiiiiii) = &get_emscripten_data(ctx).dyn_call_iiiiiiiiii { - dyn_call_iiiiiiiiii - .call(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) - .unwrap() - } else { - panic!("dyn_call_iiiiiiiiii is set to None"); - } + invoke!( + ctx, + dyn_call_iiiiiiiiii, + index, + a1, + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9 + ) } pub fn invoke_vd(ctx: &mut Ctx, index: i32, a1: f64) { debug!("emscripten::invoke_vd"); - if let Some(dyn_call_vd) = &get_emscripten_data(ctx).dyn_call_vd { - dyn_call_vd.call(index, a1).unwrap(); - } else { - panic!("dyn_call_vd is set to None"); - } + invoke_no_return!(ctx, dyn_call_vd, index, a1) } pub fn invoke_viiiii(ctx: &mut Ctx, index: i32, a1: i32, a2: i32, a3: i32, a4: i32, a5: i32) { debug!("emscripten::invoke_viiiii"); - if let Some(dyn_call_viiiii) = &get_emscripten_data(ctx).dyn_call_viiiii { - dyn_call_viiiii.call(index, a1, a2, a3, a4, a5).unwrap(); - } else { - panic!("dyn_call_viiiii is set to None"); - } + invoke_no_return!(ctx, dyn_call_viiiii, index, a1, a2, a3, a4, a5) } pub fn invoke_viiiiii( ctx: &mut Ctx, @@ -407,13 +342,7 @@ pub fn invoke_viiiiii( a6: i32, ) { debug!("emscripten::invoke_viiiiii"); - if let Some(dyn_call_viiiiii) = &get_emscripten_data(ctx).dyn_call_viiiiii { - dyn_call_viiiiii - .call(index, a1, a2, a3, a4, a5, a6) - .unwrap(); - } else { - panic!("dyn_call_viiiiii is set to None"); - } + invoke_no_return!(ctx, dyn_call_viiiiii, index, a1, a2, a3, a4, a5, a6) } pub fn invoke_viiiiiii( ctx: &mut Ctx, @@ -427,13 +356,7 @@ pub fn invoke_viiiiiii( a7: i32, ) { debug!("emscripten::invoke_viiiiiii"); - if let Some(dyn_call_viiiiiii) = &get_emscripten_data(ctx).dyn_call_viiiiiii { - dyn_call_viiiiiii - .call(index, a1, a2, a3, a4, a5, a6, a7) - .unwrap(); - } else { - panic!("dyn_call_viiiiiii is set to None"); - } + invoke_no_return!(ctx, dyn_call_viiiiiii, index, a1, a2, a3, a4, a5, a6, a7) } pub fn invoke_viiiiiiii( ctx: &mut Ctx, @@ -448,13 +371,19 @@ pub fn invoke_viiiiiiii( a8: i32, ) { debug!("emscripten::invoke_viiiiiiii"); - if let Some(dyn_call_viiiiiiii) = &get_emscripten_data(ctx).dyn_call_viiiiiiii { - dyn_call_viiiiiiii - .call(index, a1, a2, a3, a4, a5, a6, a7, a8) - .unwrap(); - } else { - panic!("dyn_call_viiiiiiii is set to None"); - } + invoke_no_return!( + ctx, + dyn_call_viiiiiiii, + index, + a1, + a2, + a3, + a4, + a5, + a6, + a7, + a8 + ) } pub fn invoke_viiiiiiiii( ctx: &mut Ctx, @@ -470,13 +399,20 @@ pub fn invoke_viiiiiiiii( a9: i32, ) { debug!("emscripten::invoke_viiiiiiiii"); - if let Some(dyn_call_viiiiiiiii) = &get_emscripten_data(ctx).dyn_call_viiiiiiiii { - dyn_call_viiiiiiiii - .call(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) - .unwrap(); - } else { - panic!("dyn_call_viiiiiiiii is set to None"); - } + invoke_no_return!( + ctx, + dyn_call_viiiiiiiii, + index, + a1, + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9 + ) } pub fn invoke_viiiiiiiiii( ctx: &mut Ctx, @@ -493,13 +429,21 @@ pub fn invoke_viiiiiiiiii( a10: i32, ) { debug!("emscripten::invoke_viiiiiiiiii"); - if let Some(dyn_call_viiiiiiiiii) = &get_emscripten_data(ctx).dyn_call_viiiiiiiiii { - dyn_call_viiiiiiiiii - .call(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) - .unwrap(); - } else { - panic!("dyn_call_viiiiiiiiii is set to None"); - } + invoke_no_return!( + ctx, + dyn_call_viiiiiiiiii, + index, + a1, + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9, + a10 + ) } pub fn invoke_iiji(ctx: &mut Ctx, index: i32, a1: i32, a2: i32, a3: i32, a4: i32) -> i32 { diff --git a/lib/emscripten/src/jmp.rs b/lib/emscripten/src/jmp.rs index aa9367470..0be72d6e4 100644 --- a/lib/emscripten/src/jmp.rs +++ b/lib/emscripten/src/jmp.rs @@ -39,16 +39,16 @@ pub fn __longjmp(ctx: &mut Ctx, env_addr: u32, val: c_int) { /// _longjmp pub fn _longjmp(ctx: &mut Ctx, env_addr: i32, val: c_int) { - let val = if val == 0 { - 1 - } else { - val - }; - get_emscripten_data(ctx).set_threw.as_ref().expect("set_threw is None").call(env_addr, val).expect("set_threw failed to call"); + let val = if val == 0 { 1 } else { val }; + get_emscripten_data(ctx) + .set_threw + .as_ref() + .expect("set_threw is None") + .call(env_addr, val) + .expect("set_threw failed to call"); panic!("longjmp"); } - extern "C" { fn setjmp(env: *mut c_void) -> c_int; fn longjmp(env: *mut c_void, val: c_int) -> !; diff --git a/lib/emscripten/src/lib.rs b/lib/emscripten/src/lib.rs index 1ae84c82d..2086595e4 100644 --- a/lib/emscripten/src/lib.rs +++ b/lib/emscripten/src/lib.rs @@ -249,7 +249,7 @@ impl<'a> EmscriptenData<'a> { stack_save, stack_restore, - set_threw + set_threw, } } } diff --git a/lib/emscripten/tests/emtests/_common.rs b/lib/emscripten/tests/emtests/_common.rs index 1289fe741..ca5f60282 100644 --- a/lib/emscripten/tests/emtests/_common.rs +++ b/lib/emscripten/tests/emtests/_common.rs @@ -67,36 +67,36 @@ macro_rules! assert_emscripten_output { }}; } -pub fn assert_emscripten_output(wasm_bytes: &[u8], raw_expected_str: &str) { - use wasmer_clif_backend::CraneliftCompiler; - use wasmer_emscripten::{generate_emscripten_env, stdio::StdioCapturer, EmscriptenGlobals}; +// pub fn assert_emscripten_output(wasm_bytes: &[u8], raw_expected_str: &str) { +// use wasmer_clif_backend::CraneliftCompiler; +// use wasmer_emscripten::{generate_emscripten_env, stdio::StdioCapturer, EmscriptenGlobals}; - let module = wasmer_runtime_core::compile_with(&wasm_bytes[..], &CraneliftCompiler::new()) - .expect("WASM can't be compiled"); +// let module = wasmer_runtime_core::compile_with(&wasm_bytes[..], &CraneliftCompiler::new()) +// .expect("WASM can't be compiled"); - let mut emscripten_globals = EmscriptenGlobals::new(&module); - let import_object = generate_emscripten_env(&mut emscripten_globals); - let mut instance = module - .instantiate(&import_object) - .map_err(|err| format!("Can't instantiate the WebAssembly module: {:?}", err)) - .unwrap(); +// let mut emscripten_globals = EmscriptenGlobals::new(&module); +// let import_object = generate_emscripten_env(&mut emscripten_globals); +// let mut instance = module +// .instantiate(&import_object) +// .map_err(|err| format!("Can't instantiate the WebAssembly module: {:?}", err)) +// .unwrap(); - let capturer = StdioCapturer::new(); +// let capturer = StdioCapturer::new(); - wasmer_emscripten::run_emscripten_instance(&module, &mut instance, "test", vec![]) - .expect("run_emscripten_instance finishes"); +// wasmer_emscripten::run_emscripten_instance(&module, &mut instance, "test", vec![]) +// .expect("run_emscripten_instance finishes"); - let raw_output_string = capturer.end().unwrap().0; +// let raw_output_string = capturer.end().unwrap().0; - // trim the strings to avoid cross-platform line ending and white space issues - let output = raw_output_string.trim(); - let expected_output = raw_expected_str.trim(); +// // trim the strings to avoid cross-platform line ending and white space issues +// let output = raw_output_string.trim(); +// let expected_output = raw_expected_str.trim(); - let contains_output = output.contains(expected_output); +// let contains_output = output.contains(expected_output); - assert!( - contains_output, - "Output: `{}` does not contain expected output: `{}`", - output, expected_output - ); -} +// assert!( +// contains_output, +// "Output: `{}` does not contain expected output: `{}`", +// output, expected_output +// ); +// } diff --git a/lib/emscripten/tests/emtests/test_longjmp2.rs b/lib/emscripten/tests/emtests/test_longjmp2.rs index 44989e08f..3ad2c66c6 100644 --- a/lib/emscripten/tests/emtests/test_longjmp2.rs +++ b/lib/emscripten/tests/emtests/test_longjmp2.rs @@ -1,5 +1,4 @@ #[test] -#[ignore] fn test_test_longjmp2() { assert_emscripten_output!( "../../emtests/test_longjmp2.wasm", diff --git a/lib/emscripten/tests/emtests/test_longjmp4.rs b/lib/emscripten/tests/emtests/test_longjmp4.rs index f3c53ea56..3eabe4099 100644 --- a/lib/emscripten/tests/emtests/test_longjmp4.rs +++ b/lib/emscripten/tests/emtests/test_longjmp4.rs @@ -1,5 +1,4 @@ #[test] -#[ignore] fn test_test_longjmp4() { assert_emscripten_output!( "../../emtests/test_longjmp4.wasm", diff --git a/lib/emscripten/tests/emtests/test_longjmp_funcptr.rs b/lib/emscripten/tests/emtests/test_longjmp_funcptr.rs index a40316558..85a69d8ed 100644 --- a/lib/emscripten/tests/emtests/test_longjmp_funcptr.rs +++ b/lib/emscripten/tests/emtests/test_longjmp_funcptr.rs @@ -1,5 +1,4 @@ #[test] -#[ignore] fn test_test_longjmp_funcptr() { assert_emscripten_output!( "../../emtests/test_longjmp_funcptr.wasm", diff --git a/lib/emscripten/tests/emtests/test_longjmp_repeat.rs b/lib/emscripten/tests/emtests/test_longjmp_repeat.rs index 6fbc65527..5d2357db7 100644 --- a/lib/emscripten/tests/emtests/test_longjmp_repeat.rs +++ b/lib/emscripten/tests/emtests/test_longjmp_repeat.rs @@ -1,5 +1,4 @@ #[test] -#[ignore] fn test_test_longjmp_repeat() { assert_emscripten_output!( "../../emtests/test_longjmp_repeat.wasm", diff --git a/lib/emscripten/tests/emtests/test_longjmp_stacked.rs b/lib/emscripten/tests/emtests/test_longjmp_stacked.rs index b145e6da4..e5a69fb17 100644 --- a/lib/emscripten/tests/emtests/test_longjmp_stacked.rs +++ b/lib/emscripten/tests/emtests/test_longjmp_stacked.rs @@ -1,5 +1,4 @@ #[test] -#[ignore] fn test_test_longjmp_stacked() { assert_emscripten_output!( "../../emtests/test_longjmp_stacked.wasm", diff --git a/lib/emscripten/tests/emtests/test_longjmp_throw.rs b/lib/emscripten/tests/emtests/test_longjmp_throw.rs index 5f97462ad..877c620ef 100644 --- a/lib/emscripten/tests/emtests/test_longjmp_throw.rs +++ b/lib/emscripten/tests/emtests/test_longjmp_throw.rs @@ -1,5 +1,4 @@ #[test] -#[ignore] fn test_test_longjmp_throw() { assert_emscripten_output!( "../../emtests/test_longjmp_throw.wasm", diff --git a/lib/emscripten/tests/emtests/test_longjmp_unwind.rs b/lib/emscripten/tests/emtests/test_longjmp_unwind.rs index eec134135..f6e921396 100644 --- a/lib/emscripten/tests/emtests/test_longjmp_unwind.rs +++ b/lib/emscripten/tests/emtests/test_longjmp_unwind.rs @@ -1,5 +1,4 @@ #[test] -#[ignore] fn test_test_longjmp_unwind() { assert_emscripten_output!( "../../emtests/test_longjmp_unwind.wasm", diff --git a/lib/runtime-core/src/lib.rs b/lib/runtime-core/src/lib.rs index 48e183893..d7ef274fd 100644 --- a/lib/runtime-core/src/lib.rs +++ b/lib/runtime-core/src/lib.rs @@ -36,7 +36,7 @@ pub use self::error::Result; #[doc(inline)] pub use self::import::IsExport; #[doc(inline)] -pub use self::instance::{Instance, DynFunc}; +pub use self::instance::{DynFunc, Instance}; #[doc(inline)] pub use self::module::Module; #[doc(inline)] From 1ee5e7cde62186c05372481584def4ebeefb45c0 Mon Sep 17 00:00:00 2001 From: Syrus Date: Tue, 9 Apr 2019 19:01:51 -0700 Subject: [PATCH 183/413] Remove unsafe setjmp / longjmp implementation --- lib/emscripten/src/jmp.rs | 68 +++++++++++++++++++++------------------ 1 file changed, 36 insertions(+), 32 deletions(-) diff --git a/lib/emscripten/src/jmp.rs b/lib/emscripten/src/jmp.rs index 0be72d6e4..0a2ed4cab 100644 --- a/lib/emscripten/src/jmp.rs +++ b/lib/emscripten/src/jmp.rs @@ -1,40 +1,44 @@ +use super::process::abort_with_message; use super::env::get_emscripten_data; -use libc::{c_int, c_void}; -use std::cell::UnsafeCell; +use libc::{c_int}; +// use std::cell::UnsafeCell; use wasmer_runtime_core::vm::Ctx; /// setjmp -pub fn __setjmp(ctx: &mut Ctx, env_addr: u32) -> c_int { +pub fn __setjmp(ctx: &mut Ctx, _env_addr: u32) -> c_int { debug!("emscripten::__setjmp (setjmp)"); - unsafe { - // Rather than using the env as the holder of the jump buffer pointer, - // we use the environment address to store the index relative to jumps - // so the address of the jump it's outside the wasm memory itself. - let jump_index = emscripten_memory_pointer!(ctx.memory(0), env_addr) as *mut i8; - // We create the jump buffer outside of the wasm memory - let jump_buf: UnsafeCell<[u32; 27]> = UnsafeCell::new([0; 27]); - let jumps = &mut get_emscripten_data(ctx).jumps; - let result = setjmp(jump_buf.get() as _); - // We set the jump index to be the last 3value of jumps - *jump_index = jumps.len() as _; - // We hold the reference of the jump buffer - jumps.push(jump_buf); - result - } + abort_with_message(ctx, "missing function: _longjmp"); + unreachable!() + // unsafe { + // // Rather than using the env as the holder of the jump buffer pointer, + // // we use the environment address to store the index relative to jumps + // // so the address of the jump it's outside the wasm memory itself. + // let jump_index = emscripten_memory_pointer!(ctx.memory(0), env_addr) as *mut i8; + // // We create the jump buffer outside of the wasm memory + // let jump_buf: UnsafeCell<[u32; 27]> = UnsafeCell::new([0; 27]); + // let jumps = &mut get_emscripten_data(ctx).jumps; + // let result = setjmp(jump_buf.get() as _); + // // We set the jump index to be the last 3value of jumps + // *jump_index = jumps.len() as _; + // // We hold the reference of the jump buffer + // jumps.push(jump_buf); + // result + // } } /// longjmp #[allow(unreachable_code)] -pub fn __longjmp(ctx: &mut Ctx, env_addr: u32, val: c_int) { +pub fn __longjmp(ctx: &mut Ctx, _env_addr: u32, _val: c_int) { debug!("emscripten::__longjmp (longmp)"); - unsafe { - // We retrieve the jump index from the env address - let jump_index = emscripten_memory_pointer!(ctx.memory(0), env_addr) as *mut i8; - let jumps = &mut get_emscripten_data(ctx).jumps; - // We get the real jump buffer from the jumps vector, using the retrieved index - let jump_buf = &jumps[*jump_index as usize]; - longjmp(jump_buf.get() as _, val) - }; + abort_with_message(ctx, "missing function: _longjmp"); + // unsafe { + // // We retrieve the jump index from the env address + // let jump_index = emscripten_memory_pointer!(ctx.memory(0), env_addr) as *mut i8; + // let jumps = &mut get_emscripten_data(ctx).jumps; + // // We get the real jump buffer from the jumps vector, using the retrieved index + // let jump_buf = &jumps[*jump_index as usize]; + // longjmp(jump_buf.get() as _, val) + // }; } /// _longjmp @@ -46,10 +50,10 @@ pub fn _longjmp(ctx: &mut Ctx, env_addr: i32, val: c_int) { .expect("set_threw is None") .call(env_addr, val) .expect("set_threw failed to call"); - panic!("longjmp"); + panic!("longjmp") } -extern "C" { - fn setjmp(env: *mut c_void) -> c_int; - fn longjmp(env: *mut c_void, val: c_int) -> !; -} +// extern "C" { +// fn setjmp(env: *mut c_void) -> c_int; +// fn longjmp(env: *mut c_void, val: c_int) -> !; +// } From 3300a3b272511925601999d8b9ff79ec5314463a Mon Sep 17 00:00:00 2001 From: losfair Date: Thu, 11 Apr 2019 00:55:55 +0800 Subject: [PATCH 184/413] Passing all spectests, except traps. --- lib/dynasm-backend/src/codegen_x64.rs | 17 ++++++- lib/dynasm-backend/src/emitter_x64.rs | 71 ++++++++++++++++++++++++--- 2 files changed, 78 insertions(+), 10 deletions(-) diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index 9ad27d2e4..a80dfc1c9 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -917,7 +917,7 @@ impl X64FunctionCode { let loc_a = get_location_released(a, m, value_stack.pop().unwrap()); let ret = m.acquire_locations(a, &[WpType::I64], false)[0]; - a.emit_mov(Size::S32, loc_b, Location::GPR(GPR::RCX)); + a.emit_mov(Size::S64, loc_b, Location::GPR(GPR::RCX)); if loc_a != ret { Self::emit_relaxed_binop( @@ -1024,7 +1024,20 @@ impl X64FunctionCode { call_movs.push((*param, x)); } Location::Memory(_, _) => { - a.emit_push(Size::S64, *param); + match *param { + // Dynasm bug: RSP in memory operand does not work + Location::Imm64(_) | Location::XMM(_) => { + a.emit_mov(Size::S64, Location::GPR(GPR::RAX), Location::XMM(XMM::XMM0)); + a.emit_mov(Size::S64, Location::GPR(GPR::RCX), Location::XMM(XMM::XMM1)); + a.emit_sub(Size::S64, Location::Imm32(8), Location::GPR(GPR::RSP)); + a.emit_mov(Size::S64, Location::GPR(GPR::RSP), Location::GPR(GPR::RCX)); + a.emit_mov(Size::S64, *param, Location::GPR(GPR::RAX)); + a.emit_mov(Size::S64, Location::GPR(GPR::RAX), Location::Memory(GPR::RCX, 0)); + a.emit_mov(Size::S64, Location::XMM(XMM::XMM0), Location::GPR(GPR::RAX)); + a.emit_mov(Size::S64, Location::XMM(XMM::XMM1), Location::GPR(GPR::RCX)); + }, + _ => a.emit_push(Size::S64, *param) + } } _ => unreachable!() } diff --git a/lib/dynasm-backend/src/emitter_x64.rs b/lib/dynasm-backend/src/emitter_x64.rs index 6f7670ab2..dfb5536bd 100644 --- a/lib/dynasm-backend/src/emitter_x64.rs +++ b/lib/dynasm-backend/src/emitter_x64.rs @@ -385,9 +385,28 @@ macro_rules! trap_op { macro_rules! avx_fn { ($ins:ident, $name:ident) => { fn $name(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) { + // Dynasm bug: AVX instructions are not encoded correctly. match src2 { - XMMOrMemory::XMM(x) => dynasm!(self ; $ins Rx((dst as u8)), Rx((src1 as u8)), Rx((x as u8))), - XMMOrMemory::Memory(base, disp) => dynasm!(self ; $ins Rx((dst as u8)), Rx((src1 as u8)), [Rq((base as u8)) + disp]), + XMMOrMemory::XMM(x) => match src1 { + XMM::XMM0 => dynasm!(self ; $ins Rx((dst as u8)), xmm0, Rx((x as u8))), + XMM::XMM1 => dynasm!(self ; $ins Rx((dst as u8)), xmm1, Rx((x as u8))), + XMM::XMM2 => dynasm!(self ; $ins Rx((dst as u8)), xmm2, Rx((x as u8))), + XMM::XMM3 => dynasm!(self ; $ins Rx((dst as u8)), xmm3, Rx((x as u8))), + XMM::XMM4 => dynasm!(self ; $ins Rx((dst as u8)), xmm4, Rx((x as u8))), + XMM::XMM5 => dynasm!(self ; $ins Rx((dst as u8)), xmm5, Rx((x as u8))), + XMM::XMM6 => dynasm!(self ; $ins Rx((dst as u8)), xmm6, Rx((x as u8))), + XMM::XMM7 => dynasm!(self ; $ins Rx((dst as u8)), xmm7, Rx((x as u8))), + }, + XMMOrMemory::Memory(base, disp) => match src1 { + XMM::XMM0 => dynasm!(self ; $ins Rx((dst as u8)), xmm0, [Rq((base as u8)) + disp]), + XMM::XMM1 => dynasm!(self ; $ins Rx((dst as u8)), xmm1, [Rq((base as u8)) + disp]), + XMM::XMM2 => dynasm!(self ; $ins Rx((dst as u8)), xmm2, [Rq((base as u8)) + disp]), + XMM::XMM3 => dynasm!(self ; $ins Rx((dst as u8)), xmm3, [Rq((base as u8)) + disp]), + XMM::XMM4 => dynasm!(self ; $ins Rx((dst as u8)), xmm4, [Rq((base as u8)) + disp]), + XMM::XMM5 => dynasm!(self ; $ins Rx((dst as u8)), xmm5, [Rq((base as u8)) + disp]), + XMM::XMM6 => dynasm!(self ; $ins Rx((dst as u8)), xmm6, [Rq((base as u8)) + disp]), + XMM::XMM7 => dynasm!(self ; $ins Rx((dst as u8)), xmm7, [Rq((base as u8)) + disp]), + }, } } } @@ -397,8 +416,26 @@ macro_rules! avx_i2f_64_fn { ($ins:ident, $name:ident) => { fn $name(&mut self, src1: XMM, src2: GPROrMemory, dst: XMM) { match src2 { - GPROrMemory::GPR(x) => dynasm!(self ; $ins Rx((dst as u8)), Rx((src1 as u8)), Rq((x as u8))), - GPROrMemory::Memory(base, disp) => dynasm!(self ; $ins Rx((dst as u8)), Rx((src1 as u8)), QWORD [Rq((base as u8)) + disp]), + GPROrMemory::GPR(x) => match src1 { + XMM::XMM0 => dynasm!(self ; $ins Rx((dst as u8)), xmm0, Rq((x as u8))), + XMM::XMM1 => dynasm!(self ; $ins Rx((dst as u8)), xmm1, Rq((x as u8))), + XMM::XMM2 => dynasm!(self ; $ins Rx((dst as u8)), xmm2, Rq((x as u8))), + XMM::XMM3 => dynasm!(self ; $ins Rx((dst as u8)), xmm3, Rq((x as u8))), + XMM::XMM4 => dynasm!(self ; $ins Rx((dst as u8)), xmm4, Rq((x as u8))), + XMM::XMM5 => dynasm!(self ; $ins Rx((dst as u8)), xmm5, Rq((x as u8))), + XMM::XMM6 => dynasm!(self ; $ins Rx((dst as u8)), xmm6, Rq((x as u8))), + XMM::XMM7 => dynasm!(self ; $ins Rx((dst as u8)), xmm7, Rq((x as u8))), + }, + GPROrMemory::Memory(base, disp) => match src1 { + XMM::XMM0 => dynasm!(self ; $ins Rx((dst as u8)), xmm0, QWORD [Rq((base as u8)) + disp]), + XMM::XMM1 => dynasm!(self ; $ins Rx((dst as u8)), xmm1, QWORD [Rq((base as u8)) + disp]), + XMM::XMM2 => dynasm!(self ; $ins Rx((dst as u8)), xmm2, QWORD [Rq((base as u8)) + disp]), + XMM::XMM3 => dynasm!(self ; $ins Rx((dst as u8)), xmm3, QWORD [Rq((base as u8)) + disp]), + XMM::XMM4 => dynasm!(self ; $ins Rx((dst as u8)), xmm4, QWORD [Rq((base as u8)) + disp]), + XMM::XMM5 => dynasm!(self ; $ins Rx((dst as u8)), xmm5, QWORD [Rq((base as u8)) + disp]), + XMM::XMM6 => dynasm!(self ; $ins Rx((dst as u8)), xmm6, QWORD [Rq((base as u8)) + disp]), + XMM::XMM7 => dynasm!(self ; $ins Rx((dst as u8)), xmm7, QWORD [Rq((base as u8)) + disp]), + }, } } } @@ -408,8 +445,26 @@ macro_rules! avx_i2f_32_fn { ($ins:ident, $name:ident) => { fn $name(&mut self, src1: XMM, src2: GPROrMemory, dst: XMM) { match src2 { - GPROrMemory::GPR(x) => dynasm!(self ; $ins Rx((dst as u8)), Rx((src1 as u8)), Rd((x as u8))), - GPROrMemory::Memory(base, disp) => dynasm!(self ; $ins Rx((dst as u8)), Rx((src1 as u8)), DWORD [Rq((base as u8)) + disp]), + GPROrMemory::GPR(x) => match src1 { + XMM::XMM0 => dynasm!(self ; $ins Rx((dst as u8)), xmm0, Rd((x as u8))), + XMM::XMM1 => dynasm!(self ; $ins Rx((dst as u8)), xmm1, Rd((x as u8))), + XMM::XMM2 => dynasm!(self ; $ins Rx((dst as u8)), xmm2, Rd((x as u8))), + XMM::XMM3 => dynasm!(self ; $ins Rx((dst as u8)), xmm3, Rd((x as u8))), + XMM::XMM4 => dynasm!(self ; $ins Rx((dst as u8)), xmm4, Rd((x as u8))), + XMM::XMM5 => dynasm!(self ; $ins Rx((dst as u8)), xmm5, Rd((x as u8))), + XMM::XMM6 => dynasm!(self ; $ins Rx((dst as u8)), xmm6, Rd((x as u8))), + XMM::XMM7 => dynasm!(self ; $ins Rx((dst as u8)), xmm7, Rd((x as u8))), + }, + GPROrMemory::Memory(base, disp) => match src1 { + XMM::XMM0 => dynasm!(self ; $ins Rx((dst as u8)), xmm0, DWORD [Rq((base as u8)) + disp]), + XMM::XMM1 => dynasm!(self ; $ins Rx((dst as u8)), xmm1, DWORD [Rq((base as u8)) + disp]), + XMM::XMM2 => dynasm!(self ; $ins Rx((dst as u8)), xmm2, DWORD [Rq((base as u8)) + disp]), + XMM::XMM3 => dynasm!(self ; $ins Rx((dst as u8)), xmm3, DWORD [Rq((base as u8)) + disp]), + XMM::XMM4 => dynasm!(self ; $ins Rx((dst as u8)), xmm4, DWORD [Rq((base as u8)) + disp]), + XMM::XMM5 => dynasm!(self ; $ins Rx((dst as u8)), xmm5, DWORD [Rq((base as u8)) + disp]), + XMM::XMM6 => dynasm!(self ; $ins Rx((dst as u8)), xmm6, DWORD [Rq((base as u8)) + disp]), + XMM::XMM7 => dynasm!(self ; $ins Rx((dst as u8)), xmm7, DWORD [Rq((base as u8)) + disp]), + }, } } } @@ -590,14 +645,14 @@ impl Emitter for Assembler { (Size::S64, Location::Imm32(src)) => dynasm!(self ; push src as i32), (Size::S64, Location::GPR(src)) => dynasm!(self ; push Rq(src as u8)), (Size::S64, Location::Memory(src, disp)) => dynasm!(self ; push QWORD [Rq(src as u8) + disp]), - _ => unreachable!() + _ => panic!("push {:?} {:?}", sz, src) } } fn emit_pop(&mut self, sz: Size, dst: Location) { match (sz, dst) { (Size::S64, Location::GPR(dst)) => dynasm!(self ; pop Rq(dst as u8)), (Size::S64, Location::Memory(dst, disp)) => dynasm!(self ; pop QWORD [Rq(dst as u8) + disp]), - _ => unreachable!() + _ => panic!("pop {:?} {:?}", sz, dst) } } fn emit_cmp(&mut self, sz: Size, left: Location, right: Location) { From cfd4758210606a7adf6c1dc6fb5751767d32b8ef Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Wed, 10 Apr 2019 10:24:23 -0700 Subject: [PATCH 185/413] Add some documentation --- lib/runtime-core/src/backend.rs | 7 +++++++ lib/runtime-core/src/typed_func.rs | 9 +++++++++ 2 files changed, 16 insertions(+) diff --git a/lib/runtime-core/src/backend.rs b/lib/runtime-core/src/backend.rs index cb2e74e57..1e528651d 100644 --- a/lib/runtime-core/src/backend.rs +++ b/lib/runtime-core/src/backend.rs @@ -86,6 +86,10 @@ pub trait ProtectedCaller: Send + Sync { /// /// The existance of the Token parameter ensures that this can only be called from /// within the runtime crate. + /// + /// TODO(lachlan): Now that `get_wasm_trampoline` exists, `ProtectedCaller::call` + /// can be removed. That should speed up calls a little bit, since sanity checks + /// would only occur once. fn call( &self, module: &ModuleInner, @@ -96,6 +100,9 @@ pub trait ProtectedCaller: Send + Sync { _: Token, ) -> RuntimeResult>; + /// A wasm trampoline contains the necesarry data to dynamically call an exported wasm function. + /// Given a particular signature index, we are returned a trampoline that is matched with that + /// signature and an invoke function that can call the trampoline. fn get_wasm_trampoline(&self, module: &ModuleInner, sig_index: SigIndex) -> Option; fn get_early_trapper(&self) -> Box; diff --git a/lib/runtime-core/src/typed_func.rs b/lib/runtime-core/src/typed_func.rs index 3ac9889f7..2198eb90e 100644 --- a/lib/runtime-core/src/typed_func.rs +++ b/lib/runtime-core/src/typed_func.rs @@ -50,6 +50,9 @@ impl fmt::Display for WasmTrapInfo { } } +/// This is just an empty trait to constrict that types that +/// can be put into the third/fourth (depending if you include lifetimes) +/// of the `Func` struct. pub trait Kind {} pub type Trampoline = unsafe extern "C" fn(*mut Ctx, NonNull, *const u64, *mut u64); @@ -63,6 +66,10 @@ pub type Invoke = unsafe extern "C" fn( Option>, ) -> bool; + +/// TODO(lachlan): Naming TBD. +/// This contains the trampoline and invoke functions for a specific signature, +/// as well as the environment that the invoke function may or may not require. #[derive(Copy, Clone)] pub struct Wasm { trampoline: Trampoline, @@ -84,6 +91,8 @@ impl Wasm { } } +/// This type, as part of the `Func` type signature, represents a function that is created +/// by the host. pub struct Host(()); impl Kind for Wasm {} impl Kind for Host {} From e620d6bef9bca19ee5e854a97c96bde333f448fb Mon Sep 17 00:00:00 2001 From: Syrus Date: Wed, 10 Apr 2019 10:29:09 -0700 Subject: [PATCH 186/413] Fix formatting --- lib/emscripten/src/emscripten_target.rs | 4 ++++ lib/emscripten/src/jmp.rs | 10 ++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/emscripten/src/emscripten_target.rs b/lib/emscripten/src/emscripten_target.rs index d24e51df2..81444e2f9 100644 --- a/lib/emscripten/src/emscripten_target.rs +++ b/lib/emscripten/src/emscripten_target.rs @@ -185,6 +185,8 @@ macro_rules! invoke { Ok(v) => v, Err(_e) => { get_emscripten_data($ctx).stack_restore.as_ref().expect("stack_restore is None").call(sp).expect("stack_restore call failed"); + // TODO: We should check if _e != "longjmp" and if that's the case, re-throw the error + // JS version is: if (e !== e+0 && e !== 'longjmp') throw e; get_emscripten_data($ctx).set_threw.as_ref().expect("set_threw is None").call(1, 0).expect("set_threw call failed"); 0 as _ } @@ -199,6 +201,8 @@ macro_rules! invoke_no_return { Ok(v) => v, Err(_e) => { get_emscripten_data($ctx).stack_restore.as_ref().expect("stack_restore is None").call(sp).expect("stack_restore call failed"); + // TODO: We should check if _e != "longjmp" and if that's the case, re-throw the error + // JS version is: if (e !== e+0 && e !== 'longjmp') throw e; get_emscripten_data($ctx).set_threw.as_ref().expect("set_threw is None").call(1, 0).expect("set_threw call failed"); } } diff --git a/lib/emscripten/src/jmp.rs b/lib/emscripten/src/jmp.rs index 0a2ed4cab..015496d29 100644 --- a/lib/emscripten/src/jmp.rs +++ b/lib/emscripten/src/jmp.rs @@ -1,6 +1,6 @@ -use super::process::abort_with_message; use super::env::get_emscripten_data; -use libc::{c_int}; +use super::process::abort_with_message; +use libc::c_int; // use std::cell::UnsafeCell; use wasmer_runtime_core::vm::Ctx; @@ -42,7 +42,8 @@ pub fn __longjmp(ctx: &mut Ctx, _env_addr: u32, _val: c_int) { } /// _longjmp -pub fn _longjmp(ctx: &mut Ctx, env_addr: i32, val: c_int) { +// This function differs from the js implementation, it should return Result<(), &'static str> +pub fn _longjmp(ctx: &mut Ctx, env_addr: i32, val: c_int) -> Result<(), ()> { let val = if val == 0 { 1 } else { val }; get_emscripten_data(ctx) .set_threw @@ -50,7 +51,8 @@ pub fn _longjmp(ctx: &mut Ctx, env_addr: i32, val: c_int) { .expect("set_threw is None") .call(env_addr, val) .expect("set_threw failed to call"); - panic!("longjmp") + // TODO: return Err("longjmp") + Err(()) } // extern "C" { From 2d2a177e9cf8c4717f8c4e69432ca56dfb9fab88 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Wed, 10 Apr 2019 10:31:49 -0700 Subject: [PATCH 187/413] Fix lint --- lib/runtime-core/src/typed_func.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/runtime-core/src/typed_func.rs b/lib/runtime-core/src/typed_func.rs index 2198eb90e..2ca67dba5 100644 --- a/lib/runtime-core/src/typed_func.rs +++ b/lib/runtime-core/src/typed_func.rs @@ -66,7 +66,6 @@ pub type Invoke = unsafe extern "C" fn( Option>, ) -> bool; - /// TODO(lachlan): Naming TBD. /// This contains the trampoline and invoke functions for a specific signature, /// as well as the environment that the invoke function may or may not require. From 13d456aaf2f5e8d4f2f7f1efc9c6760456a99805 Mon Sep 17 00:00:00 2001 From: losfair Date: Thu, 11 Apr 2019 01:53:13 +0800 Subject: [PATCH 188/413] Fixed ShrU/S and Trunc's. --- lib/dynasm-backend/src/codegen_x64.rs | 127 ++++++++++++++++++++++++-- lib/dynasm-backend/src/emitter_x64.rs | 28 ++++++ 2 files changed, 149 insertions(+), 6 deletions(-) diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index a80dfc1c9..2544414b8 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -1346,11 +1346,31 @@ impl FunctionCodeGenerator for X64FunctionCode { let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; + + let normal_path = a.get_label(); + let end = a.get_label(); + + Self::emit_relaxed_binop( + a, &mut self.machine, Assembler::emit_cmp, + Size::S32, Location::Imm32(0x80000000), loc_a, + ); + a.emit_jmp(Condition::NotEqual, normal_path); + Self::emit_relaxed_binop( + a, &mut self.machine, Assembler::emit_cmp, + Size::S32, Location::Imm32(0xffffffff), loc_b, + ); + a.emit_jmp(Condition::NotEqual, normal_path); + a.emit_mov(Size::S32, Location::Imm32(0), ret); + a.emit_jmp(Condition::None, end); + + a.emit_label(normal_path); a.emit_mov(Size::S32, loc_a, Location::GPR(GPR::RAX)); a.emit_cdq(); Self::emit_relaxed_xdiv(a, &mut self.machine, Assembler::emit_idiv, Size::S32, loc_b); a.emit_mov(Size::S32, Location::GPR(GPR::RDX), ret); self.value_stack.push((ret, LocalOrTemp::Temp)); + + a.emit_label(end); } Operator::I32And => Self::emit_binop_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_and), Operator::I32Or => Self::emit_binop_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_or), @@ -1362,8 +1382,8 @@ impl FunctionCodeGenerator for X64FunctionCode { Operator::I32Ctz => Self::emit_xcnt_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_tzcnt), Operator::I32Popcnt => Self::emit_xcnt_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_popcnt), Operator::I32Shl => Self::emit_shift_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_shl), - Operator::I32ShrU => Self::emit_shift_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_sar), - Operator::I32ShrS => Self::emit_shift_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_shr), + Operator::I32ShrU => Self::emit_shift_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_shr), + Operator::I32ShrS => Self::emit_shift_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_sar), Operator::I32Rotl => Self::emit_shift_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_rol), Operator::I32Rotr => Self::emit_shift_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_ror), Operator::I32LtU => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::Below), @@ -1419,11 +1439,31 @@ impl FunctionCodeGenerator for X64FunctionCode { let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; + + let normal_path = a.get_label(); + let end = a.get_label(); + + Self::emit_relaxed_binop( + a, &mut self.machine, Assembler::emit_cmp, + Size::S64, Location::Imm64(0x8000000000000000u64), loc_a, + ); + a.emit_jmp(Condition::NotEqual, normal_path); + Self::emit_relaxed_binop( + a, &mut self.machine, Assembler::emit_cmp, + Size::S64, Location::Imm64(0xffffffffffffffffu64), loc_b, + ); + a.emit_jmp(Condition::NotEqual, normal_path); + a.emit_mov(Size::S64, Location::Imm64(0), ret); + a.emit_jmp(Condition::None, end); + + a.emit_label(normal_path); + a.emit_mov(Size::S64, loc_a, Location::GPR(GPR::RAX)); a.emit_cqo(); Self::emit_relaxed_xdiv(a, &mut self.machine, Assembler::emit_idiv, Size::S64, loc_b); a.emit_mov(Size::S64, Location::GPR(GPR::RDX), ret); self.value_stack.push((ret, LocalOrTemp::Temp)); + a.emit_label(end); } Operator::I64And => Self::emit_binop_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_and), Operator::I64Or => Self::emit_binop_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_or), @@ -1435,8 +1475,8 @@ impl FunctionCodeGenerator for X64FunctionCode { Operator::I64Ctz => Self::emit_xcnt_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_tzcnt), Operator::I64Popcnt => Self::emit_xcnt_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_popcnt), Operator::I64Shl => Self::emit_shift_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_shl), - Operator::I64ShrU => Self::emit_shift_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_sar), - Operator::I64ShrS => Self::emit_shift_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_shr), + Operator::I64ShrU => Self::emit_shift_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_shr), + Operator::I64ShrS => Self::emit_shift_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_sar), Operator::I64Rotl => Self::emit_shift_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_rol), Operator::I64Rotr => Self::emit_shift_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_ror), Operator::I64LtU => Self::emit_cmpop_i64(a, &mut self.machine, &mut self.value_stack, Condition::Below), @@ -1691,7 +1731,7 @@ impl FunctionCodeGenerator for X64FunctionCode { self.machine.release_temp_gpr(tmp_out); } - Operator::I64TruncSF32 | Operator::I64TruncUF32 /* FIXME: INCORRECT */ => { + Operator::I64TruncSF32 => { let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); @@ -1706,6 +1746,51 @@ impl FunctionCodeGenerator for X64FunctionCode { self.machine.release_temp_gpr(tmp_out); } + Operator::I64TruncUF32 => { + /* + ; movq xmm5, r15 + ; mov r15d, 1593835520u32 as i32 //float 9.22337203E+18 + ; movd xmm1, r15d + ; movd xmm2, Rd(reg as u8) + ; movd xmm3, Rd(reg as u8) + ; subss xmm2, xmm1 + ; cvttss2si Rq(reg as u8), xmm2 + ; mov r15, QWORD 0x8000000000000000u64 as i64 + ; xor r15, Rq(reg as u8) + ; cvttss2si Rq(reg as u8), xmm3 + ; ucomiss xmm3, xmm1 + ; cmovae Rq(reg as u8), r15 + ; movq r15, xmm5 + */ + let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + let tmp_out = self.machine.acquire_temp_gpr().unwrap(); + let tmp_in = self.machine.acquire_temp_xmm().unwrap(); // xmm2 + let tmp = self.machine.acquire_temp_gpr().unwrap(); // r15 + let tmp_x1 = self.machine.acquire_temp_xmm().unwrap(); // xmm1 + let tmp_x2 = self.machine.acquire_temp_xmm().unwrap(); // xmm3 + + a.emit_mov(Size::S32, Location::Imm32(1593835520u32), Location::GPR(tmp)); //float 9.22337203E+18 + a.emit_mov(Size::S32, Location::GPR(tmp), Location::XMM(tmp_x1)); + a.emit_mov(Size::S32, loc, Location::XMM(tmp_in)); + a.emit_mov(Size::S32, Location::XMM(tmp_in), Location::XMM(tmp_x2)); + a.emit_vsubss(tmp_in, XMMOrMemory::XMM(tmp_x1), tmp_in); + a.emit_cvttss2si_64(XMMOrMemory::XMM(tmp_in), tmp_out); + a.emit_mov(Size::S64, Location::Imm64(0x8000000000000000u64), Location::GPR(tmp)); + a.emit_xor(Size::S64, Location::GPR(tmp_out), Location::GPR(tmp)); + a.emit_cvttss2si_64(XMMOrMemory::XMM(tmp_x2), tmp_out); + a.emit_ucomiss(XMMOrMemory::XMM(tmp_x1), tmp_x2); + a.emit_cmovae_gpr_64(tmp, tmp_out); + a.emit_mov(Size::S64, Location::GPR(tmp_out), ret); + + self.machine.release_temp_xmm(tmp_x2); + self.machine.release_temp_xmm(tmp_x1); + self.machine.release_temp_gpr(tmp); + self.machine.release_temp_xmm(tmp_in); + self.machine.release_temp_gpr(tmp_out); + } + Operator::I32TruncUF64 => { let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; @@ -1736,7 +1821,7 @@ impl FunctionCodeGenerator for X64FunctionCode { self.machine.release_temp_gpr(tmp_out); } - Operator::I64TruncSF64 | Operator::I64TruncUF64 /* FIXME: INCORRECT */ => { + Operator::I64TruncSF64 => { let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); @@ -1751,6 +1836,36 @@ impl FunctionCodeGenerator for X64FunctionCode { self.machine.release_temp_gpr(tmp_out); } + Operator::I64TruncUF64 => { + let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; + self.value_stack.push((ret, LocalOrTemp::Temp)); + let tmp_out = self.machine.acquire_temp_gpr().unwrap(); + let tmp_in = self.machine.acquire_temp_xmm().unwrap(); // xmm2 + let tmp = self.machine.acquire_temp_gpr().unwrap(); // r15 + let tmp_x1 = self.machine.acquire_temp_xmm().unwrap(); // xmm1 + let tmp_x2 = self.machine.acquire_temp_xmm().unwrap(); // xmm3 + + a.emit_mov(Size::S64, Location::Imm64(4890909195324358656u64), Location::GPR(tmp)); //double 9.2233720368547758E+18 + a.emit_mov(Size::S64, Location::GPR(tmp), Location::XMM(tmp_x1)); + a.emit_mov(Size::S64, loc, Location::XMM(tmp_in)); + a.emit_mov(Size::S64, Location::XMM(tmp_in), Location::XMM(tmp_x2)); + a.emit_vsubsd(tmp_in, XMMOrMemory::XMM(tmp_x1), tmp_in); + a.emit_cvttsd2si_64(XMMOrMemory::XMM(tmp_in), tmp_out); + a.emit_mov(Size::S64, Location::Imm64(0x8000000000000000u64), Location::GPR(tmp)); + a.emit_xor(Size::S64, Location::GPR(tmp_out), Location::GPR(tmp)); + a.emit_cvttsd2si_64(XMMOrMemory::XMM(tmp_x2), tmp_out); + a.emit_ucomisd(XMMOrMemory::XMM(tmp_x1), tmp_x2); + a.emit_cmovae_gpr_64(tmp, tmp_out); + a.emit_mov(Size::S64, Location::GPR(tmp_out), ret); + + self.machine.release_temp_xmm(tmp_x2); + self.machine.release_temp_xmm(tmp_x1); + self.machine.release_temp_gpr(tmp); + self.machine.release_temp_xmm(tmp_in); + self.machine.release_temp_gpr(tmp_out); + } + Operator::F32ConvertSI32 => { let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::F32], false)[0]; diff --git a/lib/dynasm-backend/src/emitter_x64.rs b/lib/dynasm-backend/src/emitter_x64.rs index dfb5536bd..864c860b0 100644 --- a/lib/dynasm-backend/src/emitter_x64.rs +++ b/lib/dynasm-backend/src/emitter_x64.rs @@ -126,6 +126,9 @@ pub trait Emitter { fn emit_btc_gpr_imm8_32(&mut self, src: u8, dst: GPR); fn emit_btc_gpr_imm8_64(&mut self, src: u8, dst: GPR); + fn emit_cmovae_gpr_32(&mut self, src: GPR, dst: GPR); + fn emit_cmovae_gpr_64(&mut self, src: GPR, dst: GPR); + fn emit_vaddss(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); fn emit_vaddsd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); fn emit_vsubss(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); @@ -172,6 +175,9 @@ pub trait Emitter { fn emit_vcvtss2sd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); fn emit_vcvtsd2ss(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM); + fn emit_ucomiss(&mut self, src: XMMOrMemory, dst: XMM); + fn emit_ucomisd(&mut self, src: XMMOrMemory, dst: XMM); + fn emit_cvttss2si_32(&mut self, src: XMMOrMemory, dst: GPR); fn emit_cvttss2si_64(&mut self, src: XMMOrMemory, dst: GPR); fn emit_cvttsd2si_32(&mut self, src: XMMOrMemory, dst: GPR); @@ -789,6 +795,14 @@ impl Emitter for Assembler { dynasm!(self ; btc Rq(dst as u8), BYTE (src as i8)); } + fn emit_cmovae_gpr_32(&mut self, src: GPR, dst: GPR) { + dynasm!(self ; cmovae Rd(dst as u8), Rd(src as u8)); + } + + fn emit_cmovae_gpr_64(&mut self, src: GPR, dst: GPR) { + dynasm!(self ; cmovae Rq(dst as u8), Rq(src as u8)); + } + avx_fn!(vaddss, emit_vaddss); avx_fn!(vaddsd, emit_vaddsd); @@ -845,6 +859,20 @@ impl Emitter for Assembler { avx_i2f_64_fn!(vcvtsi2ss, emit_vcvtsi2ss_64); avx_i2f_64_fn!(vcvtsi2sd, emit_vcvtsi2sd_64); + fn emit_ucomiss(&mut self, src: XMMOrMemory, dst: XMM) { + match src { + XMMOrMemory::XMM(x) => dynasm!(self ; ucomiss Rx(dst as u8), Rx(x as u8)), + XMMOrMemory::Memory(base, disp) => dynasm!(self ; ucomiss Rx(dst as u8), [Rq(base as u8) + disp]), + } + } + + fn emit_ucomisd(&mut self, src: XMMOrMemory, dst: XMM) { + match src { + XMMOrMemory::XMM(x) => dynasm!(self ; ucomisd Rx(dst as u8), Rx(x as u8)), + XMMOrMemory::Memory(base, disp) => dynasm!(self ; ucomisd Rx(dst as u8), [Rq(base as u8) + disp]), + } + } + fn emit_cvttss2si_32(&mut self, src: XMMOrMemory, dst: GPR) { match src { XMMOrMemory::XMM(x) => dynasm!(self ; cvttss2si Rd(dst as u8), Rx(x as u8)), From 33ae9cdaad92cd5eaaadb75e9d0530c8e904057f Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Wed, 10 Apr 2019 10:55:33 -0700 Subject: [PATCH 189/413] Update config.yml --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index fa356bec2..9f80e009f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -275,7 +275,7 @@ jobs: make test make test-nightly make test-emscripten - make test-emscripten-nightly + # make test-emscripten-nightly - save_cache: paths: - /usr/local/cargo/registry From af3cc410293c13f517a00842b4a1fca8dfc0aff4 Mon Sep 17 00:00:00 2001 From: Syrus Date: Wed, 10 Apr 2019 11:31:26 -0700 Subject: [PATCH 190/413] =?UTF-8?q?Added=20lua,=20php=20and=20sqlite=20was?= =?UTF-8?q?m=20files=20=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/lua.wasm | Bin 514327 -> 520025 bytes examples/php.wasm | Bin 0 -> 5127674 bytes examples/sqlite.wasm | Bin 0 -> 2376374 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 examples/php.wasm create mode 100644 examples/sqlite.wasm diff --git a/examples/lua.wasm b/examples/lua.wasm index 1a424ae532ef6ebac4e8784e91f5be5e0840ed14..c0e65b22a2d3bfcc4381fb41c6ba4849521052fd 100644 GIT binary patch literal 520025 zcmeF43A|lZb^q@^_uTv5%YAw8CNFaWStkjZL*@`5fgB(q2@qva3#cJrki1MJ1Qh>B zA~+%{&L9pr;sDla)jA`CqBu}zt!=fnRy*2iTidGqzrVH5IroNyL2Uc)|MMY%+Rcd&(L%upb&5wrQ1EuMof*!B%#k;Ou&=cUY_notK=cQ+D-M6UL^efNo zy3(U7qqkhRd+)xp_iedo`xCC%y7%H8yPs7w-F5kn9qTUNbVy zYXb*eD=xOGi&q>1?TWI45!-fMv3vX0&AQMl*bhoj2>$A5N^WG!aT#I-3wbN1Xc7vOD?6_hl^Z(4ni#A`pVp*-Frw6L5 zOF9=v#Ebj(Zn-p$jSIWsfex@c8V;Ot?xy^V4JV)T zgePu(;yGt=wfW2)yD!|bqrPd&rutRouig#2F5b3l+rBHgq)wZ$%Oo5~4*2vmyt{B| zIM9Efzy2?cpEqhf&CsYdYy8{jZS*&4p|_W>`jdouW8^?18RUDjJt}D=NpA=>Zj5e> zPI|fD+dCA7_%dc}7+0?)wMGbmR!K5uJfWQH+lmXn$0mG_-|m< z$JN8Q-bN$vWHSl1pdR8sm=dnlc)A%T)Wj^N&O&kLP!08>EG()plSMxAtd>Ajh zLoZJ>d9cB)MpEP71lUOp+{aJiOD{c4ZZxJelcX_b%$OsNtdAQ%o^dp$g7X-#3%zF9 zv}UM{Psa05ZxWK&UA+!!Bc>0|02;mU7ZAxf9vP(7_Uy!GP30#AzXfspS`u22VXesuX^=V z@Ays+y@#|NH%o+T)anP_8DC@AU00G?6B^aH))W7U_u{Y`^=7lD*3b;VMtte%(+!>v zwUM*u49-o{x#_%=EBqM;>E5p6;pjG#Y(LgMVv{WMR5! z+(K?bL$0XP#>f$kmj6jxt+cO)Keakj2xlhsaiLcqOx;E8{b732;-5PINH&kZN5QT5sLp8Avw9o(f$5lET7%@^(7g_^niqJ6vf z)?VHmrAB-A?%M5oYu~oryJ`m-1Djp*K4Z(3JGMRZl6|!sn&=Pd;sQqPRn4M_RMK;H z@7h{>WfN_pCi|YVYYSHN70sT_7hk;N^2;u%y}QxaeDU6`TWh~e3(b1rWzRyVZ(F*g z_UdK>%erk>?HCjzrgQg2wSPUzEQdVug1LtDGC*}Hk~*4X0T)7Iw8wp_9G?5+Ex zS6>5+%P!ozy>?R*4T@iK$=; zK`rg~A7{~U_uj3w<$eD1Yz9$V)_2W>P@5iF2l{VmeyslS`X}n2tbeNh>H25tcho;y zzq5W<{qFib_0QEmU%$8hh58rk_tn2t|8o5+^>5U_S^rl3+x73%zgz!a{ZH!Oum5TN z&+30(|3UqS^}ne9W&L03|62dI`Y-GMUjL8!f7X9h|8@O0^#|&IUH?h_r}e+7|84#6 z>VIGVhx$L(UzEN$eMx#<`qK3J^kwPG(^sT7q_0e0mA*QCP5RpOb?NKV8`GQ8H>5YG zFGydQzA1fk`j+&T^sVXJ(zmDYNZ*;hE4?*+UwT`5d;0$L_tOuge~^AAy(9f>dS`l9 zdUtwH`nmM;>AmR}(l4g>rC&7S(EPyaOi zv-EG%zf1o*{fG1))1RgPl>T%2^Yj<#uhLtZ<=>UZmER8j{BaV0|2p}j`VZ2-Pv4vV zRsD_Whtq4*@1|d`-_rbJ{@33h*MCtzkUkHH-%kHL{bBkS>0hQlO8+YTm##hzhWtPE z>#fbl|2{Sfyd-&S&;9Ru>TS)({~n$KzfOOXUema?@!iJZ@5ie@Oa3`|sQX{5zpZ(H z{j2=@zxVIkn~(qfT`BOZ}C$#_!9z?i_p<}m!p z-1Ovxe8O-xj*s?mHkOax;cSde$cEbgnPe?%<+XKLzxC5kn4Q$Jkv39S2J*XC>Sx^s z)^cmeMy^O|R?pvZq7Ah_-I!$c_PZOCS~e#C-9;kR>)@#%N0h)yb=f zdD~m8c3U>lS~ju$RQ?U^i@1~I+|u9nmDwP__qWf<+BPU8M%gHJ&Nc2nDQo0EJ4QG) zt*N^`1&XQlsMT0&3XxPOj&(fJh~hYF#2dnJT;~pOuWp|La_#FAYYSqpx;-`Pvp(zH zn~k>7dDxSUuo0b++)V?8z+}{lOfiRriAN1{)wc+fm{_SUc z`-*@23E#ft-+sWi`~2H?`1VErc0b>~;NR}$+r9qn4!(WfzpWh3KIdN+4QKcGm)XPF z-TuXfv%CBYv;D{Zh57!ne__V&)R*kD!D=FR`|Rvn!M+u4%`W6Z(tb*|({|?RaQ19_ zwkUjUuxn|yE_-=M*4WEKx+bq>EvB^H;L8ZU^wS`FTd1$${@cR*S}nUV*o`5durHr* zdA?v>c6+efgXU!fOxB;Z`_mQ;b0{;(CaL{Vc2sPgElPlL@LyY$*R~HltEP0yqx};e zqG9q7*UQTdzSMhqn&t1Fw5P?WO1%5~duy#4SMo;ojnLoQ-xGgoG|6zb**0r57uW^G z*rD1M+rr49QXF}!Wh3(T-s~diFw!o{M)x-h5F_$rZ}tp(MmCuD33#KtUS3Gc3potA z&9-Hu@_sd}m)FY+NxYD^b=QB`H$vXG&S&l$p+I)4Z56T?+r=GZpJ~tRMz+yH2-3aT zC64SR+31D<^*;#Eunh~)cH721dyZt| zN_G2x?EiGSy~?iAZ2asPyAq`Z7^H4p_FQ`|t#_iOMANJ7YJu8c=)VJ@(2LIthJZgW zNZWA{J^0z+>h3_0Cbaz`+BLzhad~|{q8H7<|IaINh?SW&>Z^;Wr-#(F_UG2~-Qc)NTEFGgx_hc^&_CnV} zFADY|>5}~J<23LWhy3n4Yv{4124!E0qCB<@DNM7usvX_Uv`RYQ{gW4ecFvVP4yqy*}9M zqbBTewYSrHd^&Clc9WaVH|UW!g!a=XSr6d0XEz7CIoy_gkL&r>_Px;F$0N+a8-wv5 zNPIll#{t$bWOEe!NLPtS(l3Yp}PL zyl@9>`u1RN=RvCr>vw2)?*L%?ACl~y!QSbx-xcg#YEo;ToZYH{zFIA|(DYUa+FqOA zf??1w@+5yvXfK#V6aMNhAK3hNqel6n8@jl^y;js}pJLnqh4%z|k8mfu&h_XBytm}| z_XT^Ox4I3MaDQc--R4#Y;M1Xs{ZXQa277~K6wdE;% z=jSKow_g+5d%6VarNLg>5u{HA`;-gP^%A7(5rUVAa{P0BB}lIb_6kM>m79eiHC>Qy z2zG-D(ku1ID_xM9fZLwED%h(Kr00gKM}=L;`U>p&9J|RjS;}XMO;OKB*bx$# zBkjmScmEYrHMP{J!022@rTR(}3uj4GsZ-=Qn3*7CmUXoMH0u-a={60C+G*3h;~6$X z9nZ9xIH=RJfrc4h`m%wRO{H0{*mD*H>$O?=9e0VRV9(h$Tg)@Z=16a@lvmJ1fDqET z(6Exxxeq6za|;HY*AdXUUF$79+SddkCnOCPdNt zVz34AmL%(oUH8Pg?Nbg`Ew~}8ySrUpbi2Yh`{1D+GJIy1g%g9v{2? zQn2Ommb(2?*S$l#b?*clxIQ}$K0OY=rDL(mR*BPA+v@y&EXd0m*$H-n5INCKq}i(c zs^M&ntx=oY^89PD%}I8W+MH}B;~}kXu(p|fCfH{})@a!341cm_T$Ir`#Tfs(Y^`ZD z(aLSjPPJ3<#j^FbK3@IiT{ZhkXn!Rkx@0=q|B__i4)$$gl?}EbuMcM%0k|>$8#@2v zgezfvcAA|A5A4sz;GShEUru+)O>fV>BTaI;eJ8YsClMOL0%!2C|FUe8rM6*R_OW0e zEA+-0S!$cI(<47@P@5;(6SFZwe@qwGiIdN?Gi}56>@4uBBL*SQ|+m`@iaT%p0+3ZM6gdtJ4R3J z>6Ih)^uiB&y1QXd7aj=xv3TwJmu@j2OisteyR$c}P}*Y!Q8e*wmF?h%qUaSlf$b7L z2x}MfK~TGl4?^0dd=StsvK84vz7hy0e9RxtMi%6nz-QF=(uJpZ->cE7(>08_HrIKN z8^svrU<2kj)^mh458DJ0Z^aCfEd|MAoLee~dA88zsYxw=&)qd!*uFq&P-=Jq%rf5= zHNwEvgI~Yjg+i$8E$QKpeg}UCjkP~ zo^*}#I=ETFBfXaB5mFd=dRj*A0#+fmT#lB*K=ch0wzTs9GpvkHe)FHYj1Sm=C^Kk- zU2UTarctaW8{^p#vN5u-n#^C~c1o+~SBvZUthb3P7>}bpI-)%U+N06C6*0yjNT5B| z#)^N(WaCQhySxlkmpi9)5oHXR*BjQ%#<^T{(W^AIHZI@4eSo@~q?N46C(yoGM#my) zv;jGA6q7B_2NbB)vgK}(#)EPtz~di6fDzsOs9cfa%4}jsfX8>xLfEm*&?&Zbzgz& z7QuCyP1OU_Y?=tV)TZjT2YyREvMPe1WtPPo(gw@A?hpbvVW7*HiY`TWGYSNhrlAkK z5B0Iwj;i`t+y%*&*o;meOFDNz-;-=2Unz>Sa8v+^i^4E9V?|KDJf9Ga;iDAJ*1JO( zDIGEr9n$VnA#G`pk+8ZXOqs((Ui&(dnNbKs{_CIA+P_E;uvFI@*3jUfG|qv9D@C{@ zS~hY9Il#fld)(`VrF+{O5U-Z?X}q=kb(pIbbD=aL-e;0YK=`W({&G?RI4abIXq^WX z>L@6ZmS8hv-;j0@ zn^34wvdW}fUyaK503*NqSPgC*dgVY$#`V38E<(HbB{sRp3`adPAmv%6 zbwzkYRAMiGvDXF+eUCNakRS z;0(sW*77OC>Oj9HaIatFo~U1wAkU=jt`*YDr4@`oqhXV>X0pZ_43+>K6$edgGIwyE zp6azp*1J7w^2>eP4YYTD$MaVk5m7%J*uRl+jVuVNG`qO2)_!|nj$Nf|jzvn?f3Oj8 zNpX(rmS$u66Ox)Ov?pwVW>=4+Z43ZXGE75K+#50tNit=BqD(lH zFp^ZL_jHZ0(9lux0y&OIKiLjh#-Tz58AgfbHIasdKnNbskYV)1u%4;gggNzEHkELD z>M?av_VG~}eFRlg+qAlVK`3i#>L*2d^~ycygKRFEi4te7f-&Pt&Glv@-BdbaNIr&8 z7>yvA$aDQRLcJRKK2xv7ZS?~+)$1S)aYG=g4OYEEIz2s_UPp^KbS3f)S+Y(O9z)V0 zdLNaIbk}mQwJly^pjZ6cJ(8W^fTD{ix9>N&^XZDzfs*t+oB+aj&nKHA^#Y%`osNd$J&@{Y} z2uA!SF$egdEkY%aY}jB6?yMUI%6&DfGb8OHjnNc$FGr=q(5QAX^pN%G;tGbkLM-2> zdyq@_#-ahnip%?Kx$dF%^{XkmjiV*qx=?RGq9-t>adb6a0d=(H%BIi~`L_8R3eRXF z+&Mq%b^15d@iJ?uN5n)uPO)BHJjNP!jC$H*MoX~C z%q-g=UkGfBuCk2U@)Dc6&>#ee+D806KkJE{piY-Y79i6iOpdZ1U0jI_u2gS5!UP9M z_h#7)o29;cY^m*lBXBZM2%I-mGufh15nDM75DKvq zq2%mG^E=aB{u0zU8>enDltK~aiG7aNMLg)d*~Ji3@&{OgIRe2xVxt7AgppaM=FGKV zFs*{oKojFGOa(@J7{^$mBA##xVC#@3B=9KcdlYcWlp0snko=kGi?j;x9GhixHWabq ztSqhQ%be;y(VjX+nsra~O(J~}>WaRLY?0cM^(y*UVoSU^Kb^iyZD~0mvRG=n97i1b zlKt_9PG3a-n20UOE76zamFUZwRfoPLZc0!jZv;w-8&D*16Z`b!_!?Uy`sS7kg7P+^ z@5y$IoxD-WnGy!M7{O4!1sEG`qhKJGqVGCjK;LyvHgY!(z9#zCB{UZzG#5%R+(MI> zQBS8w@jAoKu+t?iPJs2~U^Yd0^hRV`i2e5{xl#-a@AE7>%l!lQqt3Rog%*hteLTsY zl;aVR98nifv8Ut~vlx-CA zmpT?yM8NVWp*!DedwvYC~1 zMq}X$1Q{0k$gq$?hGU;@ZgJ_vJqWNMNPxvX6LA_QZY)&1!$4;XhEn6em}*l6gVkGc z&tzc0J(Hb#aLydOb5A1fS-@}?hXM zC2}&B#<{6x%I9V}b2DAU6k>>NLDQq-tQIzSksWP|Hb`J;d2~eD2lOas$~8#ky!RG; zFgcNig;quFmh;9;2_N*X=8XyRhUL5sMr<`x(1JM?sd1IDJP|TD-X^NmZQxyAb z>!N0gdBe^Kf^@9rZL$s8)_+O2|FY~ zur(=zdzh4>vP1DBcC$p1xL+N}C8C2lme`ykAxFvfva$TKI@l-z}CtU8Dnr(maH8-Uf9Eu8%=TAD?muyu1i%-4)9c*Gf_c_B!%qp+e+HDhy8u$7ZFJ96sd!fL;zu*Mmi zzRpFK$w62LTR*HPN3&sE0(H1V)IuCXH-GqUnu+Pm59V(UDs~RiGd<4E++x<|#aTnL zbbW!%vjrO@ytJIxHEUgQB&q?^7Zpt9xT01o$Ep*;7JZ;ny*WSKu|ltwDhJ)Fer5bn zu^2yZSgP1|#1`EuC00d6Lmf^=ua=<7j0PzaP(-Q5K0R}SZk38HD%+I)m5QB0reMlO z#V{odbgR%ow+aSYQ!pq%k%~PM7^v7IUBwnw6SvA8SFo#MlTx=1mAW;Vhvi&kBW=;K z^;#a#uM0`8%_ieR`mz17L?TyRj5(~^AGOAm`x2w-xp5{d7kI8hsul7Pyfy;?uEp2}`QLv~;aj^Bikc^7)AXSQa z*y~yOky?jv2e2?UBi;OrR4NF&qp*hRc^gt#Gctd6R|qyz!zV9kZG|;%sIZI*Yf^%$ z)H9P=vtc7CXd?4=fuh8wz>>?gU=8cBM*Bx0KBF>eTPkO=yQW_UUrGZnf z5ibI9to89&>*FDYrzogu(!0VnsmLRSb; zS?eMYgAzp_GQw)kPq)?tIOVKhh}Exx9IQ3rjW;Z<^_YmQVjSq!6^2%RXG}%987g$7 zq8(7gBF8>G_fOm@YhC0P6{pHtPbJ4Wbz_E!F3~|v2pze$z(6-g5>O4I@Mwyxb>`Mu zhTJJorJ2fPfYVn|M@%!#iS#{u)X}Wyi&a&}DjuL?!qbdm(09Gl zmqe6_Py%$N*G%;OU`ThT032VnzdWOmWtrFJg6-P1V$sSw6 z8if)`@CXTOPobi>#p&`4BTwS@;~PTpy8Qm7WXzUEzkeR3$~Hj`zcMV?JA8MVO^EA; zwOUQh$aQF$X&&Y>Q5#f|+6dG#TSDBhOdJx+n-0EuqqB#va6Qf*HWsQm2Oqqi@&BGZ z2<8j+kmup-f#*S37}2VMPMJuH?2(#j`k@rOyh56vkQNrz>t5*mp%Y&DLGbso-lkVjl$-4QG80S;>U$Aj8eOh>T{DkEBj5xA|ub%408@^5iny+t|mCq%Cr&s8&z=PKIf)Uj7HkKQPoneabi33ASOQmPyNp6~yu|-l-mLuoTN&pT@(?^=UrWa(3gw zbYX{aVKr7?s?PFsc#BfYeB+l)gVfnGTtq51{HNkCmUV~dqRwug6&XYAi zkNNIe25rlEeOly(U!=+MxSx4Nl<($_o@AcH$Fni1hy@^BqEmg zq_Oz_n8Rz0F* zfIcqSm}7EJkn{FHgzvwy;LLS{{7iR}t8FwLJF1 zui|jVt7U@BuS%<+fG|K(KxmSV0$RWiS3t^_qJZ#9q<|KamU0EOxP|qbYb&*%Y)J%N znk)y6@r_pxuYisVJz{9pPs604tb+CmC8g_YO5S^EG^R&6HB614IHR(2f3zrat`c)~ z3#4Lr6pN~7yt3AQHAj1m6hV!o%0liv8I(0*N# zDH%UR@hB)K?N=vW+BsA#XLPdhvF?9JPH7P^Y2bI%_JY2r(7@YL;ovr`$}Ntv9_1EY zdONH3A|tV#WSy{17Qa|87}D4=uqYLU7DQ;}@2`h2UV~6E92%$`1b|pQ5TK6X_4za{cC+&|0_bC9uEW~GhzDgWf zi(`R;-5%tLRj%6$zx8TRRLE-T9#b&;UQK4wX4}Nw-wMXOLj=~j6AkhP7A6C)a7`lbhm|VuG zks%a=t?TN^%($AX>Tlpwq3;B__$&l!>fz~=lJ+|j=vU|xPG>0iTFfMdjyClk;Datw zK1~lwCr)qQnz)29e^5;Ar8#iBk+9-1oYU1Ha#E6os%IrcD3cVk>3V*8 zm#SB8OnPw~nvjmgy5rQbKLLxXV>Un8B9WCX#)|T5^F}cGa z1`ziW1K0}j+Pu;VYH^wy#erQ~oTe-7bx;b7%pPnV=P`8`Al2~`t}eBCg5HibbP)^D z$3_nIO{XIKBg6fABRMs4=!VFl50eT9TERVQBQ{i6sFzc1t({t?!q>)46|Q*><3$l<8nxZE_)-9+h;Dp5U89JvuSvr!!B&oAXP8lb_n zwp1MHDQ)f7X=}d@CsauLt?+a*{E0?Vrz(V?Q{|GypCpr`+N~FA7ycGoD5))Hh$UV; zY?xEeYJZQ^?y9)!2UfRL>e!zU$J6nN$j6CM?WQE5Pr$!J?RpEW&!a%*#%8i%e_d<3 zryb6FJPl3c+8AXbM76k&Ha<34;|J*Y21W)~@cR15>lACKZPV6Uv)n+rzKhqp0)a(t zo}DLal{UusRob}YLl=GEs(JI0*D-^o3hjynu-?+f;-He(hvIh2$D)nVzp+o(#t&6I z^zhnPVX^aip^YC@JXG=eBe8gL(*CQook|pj)5VeU7_=iUuqm`=k)}|wXgPsC-j+*T zHresEN#e3h&#!`e!L8!jl$G~$m_ zE0LLGiQrGt6A}OqdfhHn#Yi>0#Ywg%%E5`hOP{|=lT}gOuZ|)B=L!GA<)}NEtd&s& z5Mi}F4!J&VgCrTct?XJC!AsPAdBBJOUaanQ)z4uLDiP?2OCbW-0&iZ50P<3bKu284 z9JSzq6rl+6_{%@$`M4&o(ch~Oou{Yu}X{5@}3=Q)%#>fY*7sjk})2{ERpss*f6_W~w8 z4=@RZ7!#==jG8U3KLHs!L0svb;`$I;{1*WKL7E&Jx$pSMeK>~Vm|~Og(I{Ys61Rnd zRlylrO+n<5Q?)%7<8W+Qb9GGg1>M5tC}nL zExN-VawrZa6IetxQpcK;|Ef*G?(V{NQ8SA1z_!chfDOcU6;I8LG_RB})l_(%Y%kYy zQVgCJbB9-sF&wto=GkI#*djH7?ZjbP00gvrVvPodgTrQu!&b5Ax=I}8ZjTmA{!4(r zrjZ<9=(odJ{?#ZtxBO&p#4JkHWBFIYcrpTRQ{+X*80ol31QeaxHt>EMrI&kL7vml3 z<^FfXVe)bXw^VzhBesvF;G>Geeg`kNio*`?<#ysQk#43!XYqz-d|#_*ffQ_&L4aeDaP#MaN zsN_Mb?^UW;hSK^-7bWdCdhUZqx{NW(vr9ShB+9WnXZGVXtQLAFMA;}j&dIT}naGB= zy80=hqIHyw!zyK5Ct4m8D}f$DDIZ)6^@vK@3zLc*1;o%uBSGA4!B3V;AlXpEj%+x# zk3}}HNDe9iWUz9})%GM?V<(mI*P0l7_?S8lrOdy)Nsm7M+v6|C_OZlY(!xS9 zZgGEX@t3slqlv$goa01c9J$}_qbntbw*kj!-BCK%mm1*{OV-QFtQ>V%Ky+UMLy&M= z%5xKjvFZx9n01-*wPX}L$JMzdo`4C&*ejyTS>?POn$lJ@DRKhJQi=EBc`>OMxS@WV z1Q)7mgJDl#i6p*{BOY1@mv`|nkYL`pV(Euqmx86P!$DZlS-%7}tgZoS=?_)X zQJXP6-ZU0jSZup=u=Q{CWJzRSR`z4^W)eI~?}ZF^vM|b-gA&yC6;xOEED=iFBoO&5xGrJmD)k@rgm9Q@HQSxb!jF7D=7MhjIFOy20defMapQNM`Zk&cEe^yB) zA}Ns<=8lIM`GSSCBGWvV6uyU39$d|127_@r0x|Wclen^>*y@6K{7u8Ab)oS<5@yRj z$|)v?UnI3z43rg~kr1#z$LV4s7@^QwGieK#B6GSv+h*GA4Pq`@&g}9Xi}V3QmeztH z+{fz#Ezwd(Sg?j*!4X9tcn;p2pPs{qI{@$65S~z5qWdyr?)Dvj#|`2F6+>nv_E96K zGEIZ{Kmz<|Hi!eGD(iaC262I}DP&eoJCWr5Nl)^Wn9n=+a9;hnzg0eOQ=}$^rJ_*N zHg)oOoBkKr6VE7}_qNot+FuArO0EUcHy9sw z%itrRSF^R!#}D7CP{iG-N^M#0q$<0%B!b~Nh^{i0=S1y#7HZuc)WZ_!i;ZM$G^^{7 zO!Vu+q$IJhh3;d;OZt`R5RaWq%zp9)C0wE5v5%)Dr$rJxwv;3`kjep5Qt};#CMD-e zd``u}o+|P2q#&X#7Mve5l{jWLUs5z(rlE4oJR6B4B$>hu(gTXsB~!{0RdRq+$s8{7 zj5?UC!J@7qhCq;}OM)t|k|Wd)o5(-hlZzxaRbKyi!Rg)y9G6-v3=sT>z<@DHR(vQb z0FY8R2*+z0;RJaKvchok!RgI~2^l6Jd*%sj3QjIo`_Vz-Ig*zES3l6XV@AUud!5)Ude77xn#t2h7_W}fDF zP!5b^@!pP&Jb09N2Q8#W#mw-aeERB1So$HJbhi^u7j6od59VbY=EE#X9S#GABOdfI z%70ek;2<3TrjeXd=+o(kIX`?IT-luhJ>23aTD4%#lWB{ZMX?I+28*Iq3iRYIH}?Nk z3e=sY$CBpx-;x5Y!CDiensq|MoFcS*CMFf;JV@Kl730FG;=Tn@+oE4>fwZkZ_gm^$ zx`54HzuG!?R%SkkFCR|F9{TiS*RzMhf->TBAC~xBy7rJ(|JoCNPx|)U$kLB0b6MzH zd@xb^EcESJ8{+8+2US=7&*#l4S>RNiY8X?A;4!tRr0tBshQIxFl;rM1Jkl?6M#geq|EqsSVk*X58{**!wv@W4X z%(42Q5P(Mhhozj24P7x zD2e0gKB&_leo$o&+9y*Hin0TWzuVQB&)O8K9P}p7K@(KO5kJJ-)kq6y_tc*^l8w>E zogO9sVLYwQdfq9tg{(y-&qh1NHkO{&DP58Op^|@aCixN9EIh0GNNX18Di7DoHH+Wz zv}y12cU(yJO!DCm?{EqzCj%>PRGJGW^5|ZvH{5)bfD*|{E0>$*lt@Mmxa3n?f3>HdJ2F5)4g>HfysQ(+lvpE~dNA*tIF0bA9-KY6O?u$~hI)=P&`#Qn1n#>ud$Pz{2S4^p>d@yd9C*Ek!i7hI5m zA5ZZh`p)yRd74dB3De)zeAAz%LutioLnA&Kljg2p*IEgZsDz@Q%GIkrNGeL9l1q#) z5#YUS2>JU$L+}y$iM&NdaQyOZ!8u~Ra?p$y-P#?&D+f)Iwy?^h;uuETD7}FIr!79v z_V*49w*DoJq0`CJ5973+Op1mrNyQu6FeAMb@rx6gh;mSQTp&_XlvfTo*%*Ysc|hYr zYI#IN)0QWz%Hjvexq_$-Y!{+guZ94{G0b{O2cki7e{qOEJcfeBF`6XiQ3t^Dx+fi) zlJ{mOmBgq1S;S{jI>bjmm3Ve-Ux4_TWpOitiRvV|<5W0?Y&a1PGi;pA*pASdUd4jI z#g`S;^6xX#Rf5?RaAJLJwy>KO_mNmW%_AM*qe$n980ff&E?}U)077AMWk`7$vph&? zX|41w*y|y>w_a*9_tez3U$DxrIp3OnZ7a@}=zZ3W%?x*r_Kfe+b9u+2$% zuh?d_7y{oUYIz@Ju?RSYQBK)T!3*ym3K01S-bnPppk)Ld6NlPaFIk3X>||E$nt2Pi)pV0l-akfenDxl1&PGT0R6NNopr!eDBa8}-JoSFVX?GN&` z%Xu*9Aupq!$1FL6N;U4!e{pSqL0im6%_weyVD}~dbq?S@6nwz~_F?jb**pfs0kx6w zP@%#^MRe$dE?b0_MQ)|2VC9aYL3$4Y0Z$MD&NQ^cNB%mTnm&IJ8?|3 zeWQAaiS8Q5ps+zw^pKh9p^Q}`v@9ahc?b#VdWa%Qn<_7*=z34wdDD)B?JS?jOh6+6 z6^$Ya-(o(Z7DH3x;V>T~Gy_F8QuBdYsOE!hE1FjloF5LFm-t8)xk;J;!UYTJLu=_0 zDc_y*k-_k(AkF@na5zQB>m?-tOk%+YOA!Q>&Xk_;;XYwn&SdM?nQUpJ+0*Ln8_{Yd zYsjj70r^%oh)~xgTN_ee4*xxTt%A3^M*Ca(tIf3E9EotX1dA|K^I_d&4q5{HT zi`N%y1{QQ0wqea6bhORBt0y0E1spWC>*>Dkr{OBKA0MACR@mSp8}I5Of1pQ4yHD=jI&Zc>5E2(PMl;wQhe*FUpjL z|3I)KdEv3nOPnf>6E=Jb;&YjT=SpQndcuI3Rc)6NvEWKLhlNNOkyp2hn!d|(nkhTZ z`&#l5`_SD^l}>8Pj*_xo${QMK?*gxg3BsYJ)wR-5n75dSiU-m}fP`0EM`xorx+en_ zyOa_PPq+#_>G8*%V`Tp)&fR(mdR6f27?{c@b#6iyP}*9z}z3%tJs-d!c# z5^2?RgZHU+a)Ebwc#a1b!u!-NyvzOIk&n6#h!rTpqpqgqCh?{D=jfFacSNlx#5Yh} zWmjcSj6-^@UgRF%`L3yWb+9M$qUho5%y|1Iy}~`aG1!eh;@9g;2D8S(Qq;^+H_oxE4r6&bH-)vY(_b?osa@9OMkUewBa;D>pEtKWWW;3ezX zEx~T_&fem0X{WO{2YU*yZ};;jbuz6wJC6fufp|52T`kFal4OVjC}jwxXj{B>Ef4K4hUx%KP6xZlF2XX8 zXymO{_6&PQ7qQDCsz~guwpGNwI1>9=_N?rgae(g#ye2+-yWSnI@xLwDGwp4R|B`t7 zJ$j=%uYK1G-no5i@YlXymc1+3CA>?1PqxjrW!r7L#=pb1YyA5e|9*|%N&RelcD6IZ zx-HmkA$y;{1|C@N4YreayANl(;_W{O_6MPORXexeA9#Vg=JobqyX26jDE_)DoDdD!VRbU^MIX31-khIa6cYVIcPS3` z3!$SoEE5p_zr2`5q?r~6UsQ49bIVhkX*I&9neChW)d1p+*>SB+IZ5u%VTs)>yz9lV+8PjX&@cU`e z%tjYGH01)t*=Ogl{Ba^nMNS;uKv;k~GE_u~``63U_8@vFCQ*9xUq4VUUzX`n*ogQJ zO(s&1kPI6^)HT@pPza;tR1VQq*eHP#?v$Oxhr43CM1BSD?xGH_WqAOn$# z1;zuCUq&hwh-l&5?*-%PNN)+%VUP4yI#ATD6v0Ctzo0;egBJ!{Z-4x4DT=E8$6sya zjEfg5CYS-2%zzK?O5$&c60T<5sJZfXp>MIJ2Q421(AcJrI6Tm&%!)Of^+Gh2}sL;56( zU?MPJA{QAYDTasBcyX>$l;9${lkur?VtukiI^+w9K|{;*#N=0BJY%Q7#RLu5SkD#> zw!YO&o*0t=XMs6#U*s-kO2#&3i<7PbX0nNe+^>tHq)R_E6{uK|6V6G~t-~QqoM$hirJV9s}-a?4xPJkt{lvNdXtd0>#4( zX;c`IlkHmvFX<>AgGa0CdGDC)S$D@CBN9A`4Yd7@4oP`+fXB{P0*TI7`hp1olv*o( zfjq6~#raVw0mqj><1y$JNWX_e?pa1l3Le-O7iZnofHOJDY zty;N-NTxmhi<7Cnq1CUe>O_2hXT*3c>O>8B(s?Otu>g9>NzolHU0bBEi@N~1cpLB*GsV@>6 zJ`P-AvH8Nt+Kb46fafB|bFs}uTqu}&kZdhMlP@Muf3SQh5siFR(&GrkgmLkFi*2s7 z=p>BQF@n?SAR=)*kU-*imoK!qsLJ}TrmwS1RD~c49Rk&1zpQqYJiOohOX)mmGZ=4}H%c~?h9TCrW!LQj_cBYcE#p5sP2~U>G`g=$omb4IoqoTwwg7+Tr1nzUN zr00|yGC8BDlK76-AyH63;{Del3`{I@qwV?TuD;>Rb)PXnW=ffY2gDN;^0r&rt zV@Lcb2DF4`P4&1){F6&dTD?_B@?Lug`&nKNI-t9Ip3pf34Jo>lsG(Ox+qo2rcD>Wk zj|q484PBu7(gn;Ds=#;NVTg)2mnErco>-4kTkL1i2aCUPqh2vjC;*>R#H~^S)QI|N zJKnI=%qyd!RO%5)K>>&oTKla$o>ZyDC>RK;U^KAFXy#Mh2vZI&PXaM_@G`V9pF(|wS|Q9*NoTl9LYRdT zUXa4h&Z)ER{5~;0a26gB51i#-F_5ukncq+jzh0e0`-^5cUxK(f3L-=ocvYvO!q+mv z8i-fKqcjTQpC2c<614NJw=})y$I&_U4mG{nrP-O_M>M@^PM0o-4{LhWu$9LvRSPO?!)lbM4V&e^+^!4r7NoN!-IYo0R z!XY&s*~(c`k?L)C)$X4x6tS4GPZu~P)**f6OO{8{ukIX4?=UcQB7+PZFeDRBg4L3m z(|`d{Pjj*ruVF&6kgcYkIg`MZR#+vqI?G94_>$+?9IqB*Rxoj0C(>gO**DZNaacc3 z*qozw*gy@}ZQvfgb*glUpGH+btXe~J8s$u`L*?}fz-e*rm3 zTBN#)@1cbs=e80DQ3DWrPILBDTr2iW_GE};C%h%3gxF$0SwTHB0tnO@VD)SSo`jM% z->Jn+lAn-Q%YVdAKRl>M<-5n0I(3QgsP zuNs`n$ZGjA1p>V`=2Rl-Asf3#!(xPiY3a@SoC-Z+y72`02uPtH>&#i$$fVTuWIuD$ zuXMNakK=i=p7klInDV2^ST$UZ3FUW)FVLg!0g{ZoMu9388{8|Zb)lO0lxnh6W=BhZ_5iS7u! z1pxMyq~Wx6M9k@ht4|h)Q#)%qSapEW!0g@WrOrH-?b_R!$D_zDNx2R&E|xaNFnMGA z!dT{HtjPAVdm`wDF!I&)m3faBLWvU)K8+K(HC7n1!Zbh=(rkLwVGw<)a-JDJZ+c*+ zEh1E#X|uKy>(0*8%jGj!vI(CF0&mQu_UC#L8zlER!DrH($Y-j=2+s+1@pD4>{DHe` zEuyJ~Zh=Z_u!LcC$q_~YIE_dn2A%jAmoP@Joh@$su#ub=vs`D0v)3sg_9CZ2Rbt;8!K#UtX+)AIpgJW%i?J_B6Z z)H#=qYhK3LsY2gPc2Yc)&4Zb$+L;=&VL9G*iV{wKT!j1xSZBTEv9yx+38}|_OObQ0 z<~kV`m*y{QY8QX=*eV?aVO<1VXT8KBvfMkdKbraoMI_3 zBtVRJ3aauHWja?#{Z&OQo}G4i5aW6NR`^9)`2)67JXo zzW9D!l1a$M^D~>I5^QmL5tTDuvA~HYhhQ0PPRu6p)+>n++FHD%?7-ALnQAPG?D{&@ zFMxt)D^(ft)*$$A4TP(D;y|ziCC2dIOGC28UJA}Q9sLceL&V3g3#dpwZwuhV!V!f9 ziDcum`h+#f5GAT}y<4A%(LMT{J)C_m2mlX!UKhp;XI~H?r1OjVZNu4p`sDYQ^qCE3 zU-kzGBEF&v(}%OK>XYH!ug{so*&pk3#&GsEZ%9|)5JXV!FPERLN`#OJX{X6IoGJc1*q^Jn;p_*&e&CmW z80?2m|G)4r4B{_?{RKXAe)By98h;sD*^h!T2|seq;c;mGSHb?upZ;+$=H* zUkCeZzx9(~Ow~{P){ni1zX|p?0{mtG=Wo9UhvaVsHv79^e;cybC&=C#5*I#r=M4#+ z=C8ZQ4@19;!V(F~-SJbGc`E;h7y4rcE4<#15rY@Fys8b{BeEm=%SyuAM2G#^;)Z=O zNMZkdu)k;i_GJGM>>uz)OE=*kgZ(2-V~FvyU_bML{8O-hazE{#gZ;B#`FXH!`j>wR z_VXZ>{jb6P)vx?pFfRTZ^)SB-_DedsJp1=x{|?^6*?)NJJD~o52K!HM{;OcWa@zbl z*sm)rfeHKlCfIMh(SgJcpy$?Q&r9ri2}2q3S*O+Az@kp@8edbrHnD5{%kvZCzklas zpBE(d0v^!g^#39?uooqskA87tFZR|iNsRy0`lX4zRIOi>U}j!Su|z`;ChM~66T4ph zDww?1uhV1{KgW9HGS)^7XD>_aWl0{c$X@Qfygc^uio{;wz1)x(|NVQ|l)W;sS0?Fx z8{4p#6UGk3UoVG^N4c*jOkb7YXum4iki9ywR|};&mT4#(+bF^ujbq4%F@wufZALZ= z=5Y`7HQxPH-IP+mQ6rjqO_GglIN2hP4WZy8k3mHE`GtwSFv&*1BO{3T-IM5HfTAkI#U8YU+IBXd$Jb@AP3*P8e^ItrFFaTT zocYWFFfj zpCSsoj_Dq&j3D%LN@?)`dM7wYm< z%kom5+_8%rWPH&azbMOFWH6N$TVv?gH6`exL=*kxK#p}zj#8;TYW}z~rdpjS*Gg!t zQJtK(V__wdKxDzCT#vI*V&8E&(P{{Ko;X87j{hkUC%@AXaI!+(kFD2CchaV^Dx@-X z@k~IW3aisA&XkZBmCR4Jv+c>-J>P?Llj#x1o@-CeGRs))NcIgY)gvh9gF+fJK9!E~ zj1O8%<6r3wJC5JN+|9#i&CTy!a5`EhTPHi^QdTT^q@3NlJquPT5 zBm1XJo-}d7_;F*$3@u$Ud)CaOW=x-!+0-MCm@{|Ty!p$PEnBd7(XwR=kLKI5B92jA{$ zv|~8i!mGz8^iMo|qu4LdF7S#{8je&$I_6b9W$8R>W=;$K7n$npBEew`F%0m~WR#j$1Ib>^pvHNPbclL-?8QpYL=q+~T8 zJ)B(}q1eUQ>_&c{cf>}NY&Oa#f`9u1bc@jAbNMbI=D}a{gr26*S-h#>Ds>|#$Iz2M$SGc4j zsgA^1+l#N(>Zh1k{(mF?ajktzL*=VtL$(kIP4})T`W0E9ZIk5mzcI0A+Z+9mZug6? zv}em1q=MG2l)m$}l%Y$LTxHL)tDI^L{4arju02=auePg!esjY1i+-{qxUyW_Z~N6J zKQLj>3zW=i9M=R&@pTa%??zd!Wdg$7qb#^nO)e zyPsh^mCbCZ416@>8|UL2XGrGn2m5^}cZIf@0QmzE@*k*-TaZ5(D7Y5n4+Z-WuCtA6 z(56L1?!P{OOEJ2oFkZ<0VX!e2Y;RBj_J@T=N*vEN#L8)+gE5ZzQCv1c?wRC^!O0j0 z-($hoM;s9={ij&u-J-NR8$dREO}v+E4Ed;!X^RZq^pZRn$foc z31{6;1~!UB*41v4Hv3J6vrh-3>10B`#9k*a>C+^x|fj(1+99WfG)7ppCsTqG2wF#qMK@OIzQ^{&Hi z>3Ww-_qpPYXILU+cQbB8iG$veWqK8RR6`VGzP z0~>3N-}+D5^+Y`>e}o3c)Ye$CG0Vwut|9x&`=2u2s=7LFU*Ux)!tZRFobCRYQL6JK z8)^OPRggk#xu3kHB;rZk52u;3V((;qq`%xEv_|2(j#X&<=Xft*~IG69(PtN#Cxho%iSa+^J@+qAWMV~YbW~RzJ=5ATGw0uMp7&rY~!A| znFe`Z-!Mu|2b~UsS-Z6VkVD?$Y59Q>cG^Klz4abc)N?8;pWwMpZmm6Gj|9hQ#c>K1 zz6~UavGQslr%|J%xsKm_XDGvQbZ0ZpMGMw}S6S}Vk_KA)W*(Q+4v^Vwv-a{7f+(#; zk#R&l`%37+tT~H22YJcS3x2DoTQsh>J&4;%-b2_+L%w}rsMgol)9mYO^l5uzpZ@gr ziG9u&t7w%~tn#$zaH@n&KR2^$X!C}Q)YYK^gI0SQ+ct4T?*!CmMft#CcZ)j(5wp}ZI z+a>ir26;_FdMABSQpO6Y9%I1*FN*Ls!-3KT_VY+bXg?3&_Szn%7HAFI%Z7JS&M*Fc zt^Klw93M5qtKt6rO2K?vDVVrROy#DhlRPC>S+MWVPflroI2=YQ&HBnQ{IT}HD$Qk*QG*kb9H#UY%oa%SD}(onCJ z%ca?M(@>0>`E|R%Fw2MHPDxD;cHzZtAlyB}H;XfU9huQO&QLYiFV)^jr^)qT0@3+6 z*Qw(B;_%?uyU5Tna4$#Rd?=hh!^MI$?$fD-dvFI4$2}xYn;|OijJ{Na&S}xd(~RKc zIkQ!35R>uvoZH;V(~#V`Q%_`UU+ZJT%Oh1$aNX^=n3g6$j75nKV&rmovS_P?2aU>C+4a(`71=S7d5#h9 z93!-T_^mFqAO?IhKMLzg%E&;5ERT@!J+-8Iy5y8~2-xUg0KhHe^xzw%+38l}ij}n8 zZF4*`yKnkoPUq;$8sHS#wce%gn*5a);A*wkBT%ouDArB2az3ppT2MNSS<;eam5hN(;sn*^vmAp{ zrPq*nHF;6aq=jj+WK=L{&ZJGF*8^!~YFa$pBMmjeMOXe+y}pJUY$X|nm||NN;53a| zfMbYVH3wKvuN}cw(iB!l!CU_ZoO?EVk=CrMq+k{4EjOlKNr74tEKGn50`)HX1!kC$%#6nmPGhGE+-9U`qp86>Aob)dRfWfv|Wo@)rFX&<05+%%NaQ+<@cw3aqB!p?IPV9w;TfZ+kDflXi5dSvtxfgeS^51$t(*9CBA`0mdT+pg23nq%}Rh7z-X4^HNTDCx& zitN)VRZzrU6h%mpLUE=ILJ(CnxJ?*e97>_;2=1aiT`dXtEfma!EGWpe?Q}`VinM@|mw|RQ&T}giGBBL&7BI1k}d> z@)!q+kgIbf+NNz%!W+MugMf~anbP-TD4MEP9#&bOj)sYqzI6&y`ZzSGTy>aleGYMe ztNr-9dgp*|LOX%Z`gKc;rAmedwzetxJ(DJ9M&X*Ml?E@tfp8pMRr zY_o{a+{w;i_WYnqVpl(8#(V4(l{DlweVvN>d3bGxqG<5ZV|n3$bDC8qH=YwPJY`O+ zN%@J2UMET4kSH&f7W8^PY9S_(_15B9i?h%D^|qTd9*QTeB}ZkG6qq6jf9Gy3f5qpx zhS*GsO!%XajEgJSqZ`L-fqh5|>{RbbAJ_Q>O5{J{i_Ki-(TaMmX`}Sq1n4_K&-rOK6hZ1aUZ*W6 zXm#rqHT*e}8=^u#3bJ3LZ3)Uqt0~;!q@NP;_3{hH7^ zFqR%P`MqI3Egc+{hB&|ljBZ$qYjk?BBq zxYxZ4nOJ_VtBmBg(TK<;L zLmVN{dQ}J`WCun<8B~794&3i{V5FhcFQruK|TL<(uIpXnnFzy*3gjrFXFP^U>jtJ+<^TG3J6+8ZI19{i}E-yq)!H45sURRWnigBpM>=GX4@K&9qIzlA#0 zA|0B0ldZH(BIzc9K39E_f?)YUm9LyOVdw5q{+;e(1u;>mu-eCC`*^IO2UsFID7Gvr zQCmU)8%TU98%SUomj}tO>yRkLkaWqRCo+T2$^Ts2brn7O8sgQY=C5YCATNN$s(8hZ zR}~p`p>d68)Rl4|tRt6lEtBP;owz$@{pjh1p7kpnzf%?4k%m8T;8#6+itr9JJiH?p zxJOka_j_6%?4jdzN^q;M>oqmlWe?>D?-+fnAWS_ctVKrNgJm5gc z*5BY?VxAsw9=ZuWksFa3*1S7VBa=vQ#(%F3+l%vFFzp_0Y4+aWry`r?{xg%l+{HG=p1Nhl1|6YdOitPhh`a!*LUf55SNP~tr+6Yphv zou)FZ{5lOk9K&Mru*Pq7)q}aOG^4ISn4nD6GpS`q(GhP?08= z(?XgY$YjcKC6p)sltU&@&VN8Af&Ce+0&tw;C$RwI;;&CKUqh7xb4MUQbO);dpA8hy zK$|+=<2X)$ES(rS80YY3ae1oE%I4t2fzwpw_~*3Z)~vf6k*bQ~Zq@RjpY95H7QPfW zR#_d$H`~`8I40)7#S__jRcPHK40`Z%52~K{oX_>=nCs66i)9S=2CXSY@8%1E1%fYd z_lv=3nypi%)>j1Si$o@Ja`tE-Y?N{fXQ$eeZ0>wSS@2~Gc(0`&~~qDn#WCvF(v z;&d)nWyB%gr&^Wnr{R8bE=Ziv(*HCb)78b<7-n;l&*mgUqgDS?DB(tJKJ&v%$)qXkoER*3<~ zM#BIT8g{;pkTuo_&de67E1eFJpbIDCvFROYZ&i*A-J6$qNCVQ*T{+9z~L_EJOo2=R22AHiR>7ak57|JpBDZm=_q&#M2jJHZOJM!+qK0Z8mAmIQP-NHDyk%Y8bP;?1yA?7 zyrpyO8(UXq*gEyaG=L?fLQ>o5iLvUJEDd^Mc zcYT!l_}z7DV75~KJJKG$lE#k*D=72Bc#jtrEb6tgVYrSzk`a;_I7Ock=eeOLJUNS& zj5F9;^|HkV>ksL%Wij@tD-+$ST}QWMqq;~YT(6AlGnSKh`YS7S^RfERJa|n^=0%Tb zabBxPh_;PwgQ@vXMd6$6HJV@w>VL3P)YC7j_!corSs)F|LsD~bnuvp7Pf4pMef>B8ZGa&EaRGu@+Ck{s3xs|Gp)&`8eUlP|&H{u&ffyamWBBpAF0j%i ztTO|QDiIVTmIDR!Js#^CX0$F+78>khHJa4|5)xud0WQc9zUVKR<7YC)Z??P&D zSg^-sJbvrJwuzXJm3s)XW=P=EaiyC!_l)2s>a;cM^2@rVsgUsP}Tvb8dl`!Mdn zrxc*+1Yxj^Jz+_H{!B|A<8g&tglJKo7mWu>gtXnG!>Uu{){+u_3A)q<40xoU$O$`U zk(Qgz+KF*~h8N+~)g+s`+_-k`OU9YY^c0l(sM41 zBXh|ehLB5Ad1s+dzR4h`Bm@C05Yj(`BneE%ZQIU5uC0_C5bOfXmhc90EZ1rc=JoS= z`IdyVUYdfjX=+p!iN4Z&INDqCEFu7A74E>6yXpG$xHtxXOnJ>!P*d;YIfDE0qL$|a z^*Jmo&hqV+J*|_N*M-w+EVu3TOYVHAb(Vbq|C|*07wmOJiGs(;yCH z>&0n9Ygq(`7M$iC!BMDnj)J;aXP8*WDijNEeQ?lq<)e6}8hu>|n+3w~RW=-|@3}*D z7S`k}DP__Rm4txf1VWb12f!yd9)V$2jt*T^fHf-JMtqPv>3oT8Dh1z`+ps<@%WYW4 zQb`T&oDenoNl9oZeR?_A)(rw?T}=YbM)&To>nG=gvVM|tsQ?^?Wu{Hn>F79IWvhdY zIPm4296`$nBRJhgXgy8C>rsgG*y9^)lwSLmQlI)lxi0(oAxKt3XQEuXBi2Puq3DDvzZLw3$( z*4S#AX=^Ia-CE3IY~Go*V1`I427S=wOfRnJcKPBZcclFW;rE6% z)i!jq54v%z1jTeg``rE@_v_(Ui*u;91PAL3%pm)!$hVQ4aT~MdZ>(P&n*TD{1I5C- zQi!B?wJD1rxsh;`gx__#s;et!$(N&OxC;XaCO>>`iD-u78`cIc9D+RYtRL>)W-@Ci zu#~q~kALHeFHUit68A3Su#c9D5UuSP9_3nsF4QC)oxPdi;hqoo;A0|b{%C$svM**( zUyZLtLV(3UbBFoh5e!{SVtf#FJaBlULp|w*f0BvRp5MswK@_i2ZuBwdhjd*K2l3mh zJ@&CA#KM$pX{brmc=9#hwE{;Bq*R$Oy0#FCp!vWo_Jt&tLBoJ$(CDbWZvnYkaLhDZgGLm^R!4ko=Ys%R)c>XnmVnr+BpqZ`{c z6no%9RXwe&;HYkOzYsCs@>lFI(qaY!o}t^hY z-fT|cFhF?EsqcvsDXv5bRwTVaLp++cIgNCNGcLT2g}QHquYK(sPCt$?cyQ5{fvvu2 zTe1%)w!+`3Df1iK+l7FP3*6zs|^1*e>c}Fyn)tFvuAS+dmC6@SK>7?h;7ak zj7dpYxEb;>)X7YZw-j_a|Kc$fy0*2=JT&^&)b5Tm~a75b9 zLJf-;ak|!HEVyLpw?4Co%iYCxou^YqprA(wPI^eMk|*M!b8=L$fX`B#E(NN2o}U!$ z3t-eZ`=en^Yg6O0Cb^RX$7QhDy0W%h|4kX2;O}og@z{&b+LD%dv*3!HxiYPDCVc6~ zZV^%9CPb8Qhloggz&(VVEdb+FdO;XTx*I-{1N-~E-=3|FAmZ!v9n|zqZN&<+GdJGXbpOohe*-Ein{WQTvu)_btUFpQ~VU< zLQaZYvZo<|6fvfl5>_M7^kFTQ;-m`$TpEivlg0$+MC9PgeR+*=~{P^Pph@UWD-GT)Vp@((_{*M zC5%-}c>tfHi7|zYm|yl zM#{FoW^5{@3OS+nr|^s3pr1|AEafWbEwIKEoV<3H79uY6fq=-?Q>vr&aK(tTrrK74 z>n5lNVhD5^Og%X0L@9K$X{T0+-|UbNhb^&sBCo3RwhnH9eD;{cH+=G21v%v9KL(WL zbj*TsY)NUP93eCvp5tTPn2fp)c>B;%088lU8@WZZ7NWt{mjQ5}%b z+xd_mv6DyC5Sd~-_vqAvqyn)hHh)g``*^zjUJz@cav4HUiU9Z{%f%mibgn_D;B2Q} zD(VDK7euzehqzZ{dqtYrdn=NJWC^6N19yfdqOS31xlLXMz{3;*8CQ{% zV+9CDh!vf!eFu;u@wO_3F^upy2S@5E!FJlk%CKkKHEZ?B;|R~#d!d0bF!~sY*Gx== z6E#RcIK)18^ZK@CrPL zt*h_o34#C66q>m2Yhu3X0i1fcNQIQ~wpkBK#|%vpMF-$Xm`QbKG!D8IY&N|Xj*r;P zSyG8%F$|<*;4rBj&S7ZCE9I}_3jRV@a{d}85Qzk^4MOf*q$az}_;+1l9OS3sRD|eQ zjkzh!0}MtWfR7mllOp_`s(mZ_4#~#sJ0fV#VB6St#9*knwv8CC?7T3*RZ?4CMnTvqAh&J^*RGK!DaOU1eMJ+9cZ^#cunaYzL{d|Ey^QOF1vqzMUV$pq6fW#n_d>A!k7}H@7*k$gC>Z zVK?lj3%H9~W#nAnvnWG^q_t9}v$p?$_@;dAyk(_p=Phmo{)sRn$)G>w5$xW(Pj|IV z=$LQv60mh{B-wj;R4kvIVJ`f2J^e6#ls38^XUkXsD{N`AG{D-v60^ZCN^;4SjOSn5 zuaMuGxVzb|wwushsV~_V{)iFfyV*RwnWq`e)KQlb?Aj}xUsTk5MZDX5EkoY4;t!c7 zzoo(7QXMc-hJ|B4^>oMtRMlfGJ?;X}C6^q#NStx(LXPW}1{8G9#{8NY;Qbb^vu`=P zKd`Ub4+6Z8-&qm7J7N&+s5d(bUKTyUiyh+d?p#z9yrm)HQ&)izz`F|#?y>^BQWC{r zEL9G$HdGZm89`K;`})mlCF1xoybv}SX?bM5(rc|(E@4@*SaR}sNqzAJD|};}`g1+W z!zEeR{6<9&Nw<6V@sR6vVM!9qfzWB8DJZ z6D-NX#VI$Dn+1ykAzMME{`iBA!Nc^1!~{a(Va|}gMhTC;_&6rfI?85*OxNjhH6(Nx z4z+<&7C|~WR_!%&0azsqf+wJ;)KL`w)OETmj4=Lj-Zz(jVauXOF4l_9p>X+!Y2oMf zv9NTNQuSyK${9TEN8Oy0P7rp?b00XPqb-HIcTdp+&=6!9)PmFWpqTp8)gfVwz8r-F z2a=r-{0v23hVaP7{vi_UOr=B+_0IA{2!!XJttiZfBMCpsk|MCucO1`ASfyqhPByiS zj5&{%>mz(}@-p8|#EVAz=j#ZtN?(A(P%G9_1sLnag`ODULO9|gz$bo=7(I6egz|)4 zhH{rG{*uVYxgvl<-#;z3<*sq>D;W9Ta&}V|Lg`W_36_n$k)xZnNylm$?t?&xFGAg$)i^forAJ|Zd ztAY#LvsU&Q!j3Htv?i}#9~&`Sx(Yh2j0RdBA$88k8hq=Z@U zFDjS#_g2DHiSU)F<~N6+TdDCaLZh5nvn_;#sRRw`$`p{dC6EQx%C;0tz8-#?KM)T$ zqkUU1x5S53sc-1Xv_gnhN4AaRVYUtJY*Qz`0{^40090#4UrLgoUI|XziP_KUQT7YP zS_XkiRfsz_tjWNT-yizJ(0L=?Qq@tlL@^wQ+4lCs-ij7l*3YwF=s@ky1T1>X$-YGW zqM-oPZcC#Lw5PLSuu%JkK5|QAEWemr7}P>mBO4oHGlUO2ig3jUlJ!~D`u3okt#64h zX;ROi0IEKcc26`icA(b|cEni8R_3ZCx135is};9Y#!Mjfg)|$BIYF{tjj(B>hwc?C zFdf?aS6B;+K`?XzaD*vU6LZ%Wq;vc85=ll}m|85+qdV`wrHw64mf*a5Hj$62v~vz?<% z?p$!i-d1p-Z3HqMO-I-kXaa+s~50b0V`JxB8<>6;G@pkm3d&)%7a-X=?GzU z3W1(-=Qgz6v{zZ8AAu0eBF2XqCTB&{HH zE%_H|4H_t-BLIbVcvnPk;@v{@4b&0>?}p3(1kfnBiMoKo>Dqo*NDgx0zv!4Md0e8hmM+hJ>4S>k!X^FY83_ zMrQXH0ho{~J-F0h2K}c7lhcYt&b4g>x@rz*{`$e-;SvkXObtrnTRJlGn_&R7-PJwKB`7)k`~J%BnNX&)r-UN;~PM5#L%GyFxg#{AGTZ9^&1%>iGqQ zR|i1|D}^R{N<&X$F9rgiLFTV6pE5DOwt60I>4z{&+23wonJw9mGW!)0JZQ70Enn#c zot9*p!t952HVb*nT4`*vGSbpefQJ_ zJz8^lPunopqi0Y#gsZU_NTB&1SE*ReuuW!ZJ%Qv5kaGt=#m@N1k$a1LWlH`!-;@eKyjgwMZ0V9k5~<>b!8ZTg1UQEEJW zt+R(&6lPmFXGr`IF%p8lx-R2PUWj%X6k<140gr?53s<_Hi|{nJhv@OVD?gwxB*b!R zhTson-9`}@*7YoTvcgR9Xho(7dLC1R7;7#u;j0JCj`FZ_EnE6Za2LMl(faBr*VHKe zaTzFgg=Zq(sDYierAahS^c%mj-K_Cq&J*GaXbdpI~i%1lsR6=u>~W zqI8!|wIV*->Yv=@L^E~Cd=DP?O8r5kzjb*^fqD|6Y2Aj=C48`2NzjUQAkwaiB^om+ zlyMg({&@GP=iPqb-9l_l)1akf^#yl(w-~f;$u@VJt)yE8;ZSlAe_-ZS0uU@|8md$m z0=$u>L#(Ci9a2}?u->3xydBaWZ6j)J2el?QMLJGaobh(`HDx$#C!%eHiSunpi)$yk!lv%t;4 zAV$Fzr4_o^#?j(GAltIul5LBBKHLyqPBCXrT_%A~zo8ih7>3ZGN6GsUBRH6b{Ce_X zVS>WUq5}In^~)JUi;ckMXd1&v>W>sagiZ(`&w&9~7tO31ni(CM!O<3c0jZ5#z*Ll&+kNLHf}-IhICWWOmz|AellVo@D%6 zp^+(S#7&g|$-1GDsi6_YQ+zjSN)V&2*wcT323RpG_&3rX9 zvoVIp*Xw<3V}h!hn%RVAHc>MheZ8XpTm84wH^TFRtY{X0~;`pFgdZZB_5^ zr!4z+z1^QiW+XfDry+rPsoRx5)!6g#J56%V+A=T8>pt>Fvc|ju2=Qm zc-^7bIX$<^!Qr*vcau|yttp3>*Ig=I;#|Y}PChI?`o4H?Om35-0HMXq$5SN6kf#VD zus651%@juyp4E+R)vb9N)yaC&brsG575#>7$BOd}G)*VOtU!p_fe=bliQ|pkH@|?d z5FA@Th%H3a|DmbpH&0%uq9;dxLMFacU71jPsVX_gy#YKR>Avs>WZmBqy+NWqoAQud zTGh|7bF&-#0dwF^f5@a+@x|myqMQrYZ&;v7hPUpQns{_b5 zB#NiA;{ZM?o;V4Y<6>Wf&XgZr$AK=&6ZIT3?=v?K%JaCU%){|4-RxjP=XdzVsIdCB{1%WoJLJ zH+xCzV-gy-V_fMvCdp0$raNQ))a;~c_K>be6O43oT4JXqTE{O)?1CiUd*gPvs}j2^ z0TxQN&dqK~>=rL|Ut;%p=9%ot#GXvDg{cn~l)aqT%Wii5J+Z&*L(LXyn=$(&smtH} zNm87K_B5r3rFIyh?y%hnDOMKc&L*zN2KHo^@FliOfbII!_;-Q}$f3&bcSmY>q{7t0 zsXff`202sCPHFrOa;m#+OI1f+YR`G@oHtW@GX?9rXaCeI`=>YN`2QlcFI;ImuxbbT zmd4RlJGv^SKd`_Ntr014D)GU(>FxZg@pwLOF6K0f`niPE%YJ(2GG2&Cm+J#Wx}s`V z_=hX2#yiTNof^-V;dyDSsaI72!LF)mc3kBkTwN8`Dw}85RE>XESLbEVRqeTIpafiV zZQk>BRlCkRxIXXs#=Pg7NR{j#Zmt^dD8Dc@p0DrK^D^&wnfJU*qpbn}e{}bRSQz{1 zMV^8%VxYcP(#*ZLDf@#){D9Ihh$c@(T)6<8j+j>>d&NKh9jjHvKH;wr0mYIi#w?jfH9NEd_M zPLL*VbLR=N8FbuRwR=6({JyH)S9SinU$5+bZ_D}XfvP>^Z9Q1E2Svc|iI*N0Eb!9$ z#uKL91_57XEQTZNs{vP~CHGa#z}s2CSm&C!XPVK4hu}@izM;;z&kf9cr92$7DQIaY z=Yu8FTdkUMOqZ6;)xW*aMj=&DE!N5l*o>&`69 zvoL&Z7HD$K*4SsO<~LM@U4mk~Thb51^(bVivCbW3$^{?o)?u{eb*fw2w`_)OV_P*3 z_PZMFcQsMIn@u9+LN-ZbWgnXD0Ew^dYzx~?01$JioI~F)II#@0@VdRyNLwW=sS9!yN_w|d= z7aREMYbW~!k(iO~WIHyGYiISfv-;XO`;{((`IY)&qLkSV*0UbTACGnx82b@UQrw@)J{ionrK1c6JIgNmd| zY}NCQ@_#TM6<5%ZxQmchRrdXb1W%472TVL)VFU^<@Z3s=^02uws1rtTI0JvaYR_x_ zx&!(M1+S@lc7*~Q#1S|g#1Dj|PJ|8c%y$~)nS?k^037Q8cqjn@1=$j?#MJ{Nd8!g6 zp}%y4m?xUxIPZpFM+M^?Pm&v-#Uq_2Cn&(jsY0|SmVxpzL6?>u#n$Y=cGcXFm5H5O z@yTDeTb(;b{dElfk?2@!rN?QAkhwzZKp@ny#pv%D=b)Pp9E z762zZNT!`57$6o~qCDp5nw(hYD_fJWMHql1X=zR@q5v-R4;O2{pGX32dGmZhFJut_ z0JSc0YF!d#C$kPL(H{>Ft<1?TjpFHq2smvfD^MV?$mMw_S42VPl9frO`N`GnhA5fN z?FoVim6m_(0nPV(XT`Io-Zcsl5C)#A+EZ19_g+UzA{Jan0GXITfX4&S@#Wswjrs7{ zRlmYtu#?U6oy-_*YTwvvRLgu+%Y0O!pQo$#bTwOx-AnQ#sZXA7&~pu2jqcZu5#Y`L zL(dLDz8vZwS7ypDGUiv46_W3#QMKlgQ&&51kL#*34dMyiS;rtw7n#K2c$M$TLoe9Nm*B{i)YIaJMOIy@6T=tx9 zq7#mv*G+{Dz4L|0UQpkZLg2m_*^6H4rN~|i4F9rjqRZX@O%y@zd{x)QiJ-6P{y9F> zxNA-`;&oBIANSB@<9z0f^O^Hz#PxGNbKZ)KqzH4fziQ_6>&f1RTkLIKyrT=_xEE0f z8K;@^H@_MVe7zg)g44|TD|cUTVO$n6+2q>5d%7OZXUzL9-rn~%0#g5>i{fT7GVl=) zK`Q(`vVSUMg$v{6W*_J}4-MqQ9O3^e5dM)ak~6;lRkz65hrKZVv19yW$2fP(0p+K< zZBHWX-?~wbE63(#&q5Q4Fi?hY`K;*a^Sq}oik`mI^>Vt#>>oi#FG-oZp_Xl}!b+l$u$zG`%=HM$;`40jC?ukedR(5@F-t~P& z*Y_(O7pt{?QSAM~ytjIz^1*Qe9<>E3m*zj3u^x_lXAr}lDHK@*|thm`)W z?E2xn>qm;NAB}X;(X+(YbBCw0Ts5s1k9pURdDo9c*%_hhGwAvZ@7gy>0#Bi{6Bk5e zo^AwW#puo+tJ-5C`zcj!*wfucd&S5>evv7zLpK{$B@~ZP@)!4%@7=gIkh#;Ud;LcF z+!^I_$8QdF!g4oWtGe1BDQ_IJY*#R*Z4*A7_`*{YLQJOp4FnUlduFNkI)ZE!W zrtO1hyIC<`$s=*=N#t~kZ>jMuBhBT`U_W*J&`X0IlkjJCwlq#nhk9j> zu68;}P+8P_qi!*$T zXZaYSNzUCoxqVvH+dP{^;dV&{yi(77C# zJ?8z&*sgR`TqRWZF&zD?I;Qc?qNZLQ+tm(6c1Pp*%Rf7kdZ zR~2*K7~73L+M8m#iO~v%Yh&8Jk+z$e^XAxY4$QgCnRA)9vE1w4!lk6bl$&?As&AO{ zw%B;QjZSaR8Rd@H?r`w$%5izOKA>&f6Wcxh;ojJINBL{%gA0p#A@x2->U}~g7cbHA zob3MC?pMbiNcBL>UtQw*ps*9};C#TFeJD2mt>Ss-ACB!|fB9%^5BkGnvGL4*V>$U& z5#An;jel1`phv3q2m}&Z9*;R}Aw9kpt}uHdwkLe}Psa9SfP&4ur(%1`n|(UAr{nB{ zSeE$*WOmXH{|9lA5zz_uOl;2tg8hYjX6pD^5iIS=o{u?1`8>FLAvXT~#gRQ+1bZ>I z7rob)VtXkk*t0QhzewAGV7q9Zy&T)i&e*TS_DUe!t9oUxdRq^;+u*g>Uh~FYkL`60 zVHYX0ZwMGD_*QH@z6BJ2%_;bHY;XJE-pMKWx1551$A94;-ercyM)_xBRo;sXNyw7nl~2U-Ri9+21piLVR?;$vii@irED-GdW5SZ+!u z-6855(jA%@kB8FfVcNuk9}Z9KaCc4~!3!+}N9qHU@2JF%@()KR#yiUIlNirO_-G1; zz_E!|hGX5EdTf#{L82|vAK^hW@wmi}6BL!YGRGdzki|(S~7tBh=ou1g~0nKM5)*&>XDKvNVWM>J@XEEZl z6XV|*j-oL_^OD4tII7M`?3^6UXC}10gtnW}d~Rar1~i}NXg<%|Sn74pPwadRutVs* zFfoR9A)Q^6*ohAA#SBqsy(F=d{Kch-@yz!#6XW^fUg*5c(RrDpGvI(|i0q2QE=#iI z@aV~jek|3Gn(^eg5g9K}>~e4ZN};E(U73_u%=r?K*wq0&*CcFQgPv=J9)c^c6MC)# z;_DOR-!(q8u|m%cILdv9Hzsytj-G21+P;Cdo6&PqVmAf!-0bMN+1ps|b(bZ!Oz7z= z^xW#`xs}dtE6{U$j-ERT^xT;k&wRf&F`jSlg`T?{J$E^J?n<(A;I`%ZLz*&;>F&h% zw>as}o~+uF5*FuFvu6@bpSu(Ii(g9q$1=Id#0x@&^-pFyQy0gdikfd06-*jN%dD_YsEtXkz?($Z<1X z_L=z-pXhFUz6Yzd7C;!0iIjU{uyTb8xFxciScjE zddDtvvv(7F*I&Mu*n2+E_mgrf+O!e$@5KJC zo+*Vv{#jz5d8yA6`#kW%7m0n5WP68(Fv!15>`Mn~L23(9KGbY)U*7jh!3YaQTBNyl zrrIa9eZof2zQi1esrJ)GP|}m_pW@2eAJ7g+jeq<4*3B?6)q$xUNMqgEL8%>-?*r|Z z()NM09hfS(untb`;IRF(D8*x8i@c41(nC@^#DiqP#s#SY5fWcKQhS@lgKiIJ@5l#o z1eq=*-HuFibRU%(&wSr6HJ*=f_>0Bj=v0fv(dqiQ7>{-+k4c3A*7;*or@e=%T7(R)qIAp=EOKHwbKGIPER?<0x`}IF}ixPGgD^xnY3_LYWzFh z5xJT#FsUu^VV;xPIXN-TNNIZsZ8y*Gb5lDv5aT?|W2_Tz;{vaHero3{Us;z(urxJh z(Na3Qut3K}IXW&b&~a&MJoEjG)OfzA7dkF;bX?}>2xuU{F1sSN%hK!?81>{-KQ7P@ z7MKD(2#U*7yWG)pB~TISer1|XaP$!J%ldm2n{@#_SCiLH=($Gd>EDxGEA(6o#Mh<9 zzpH&{6MTV5?FJv>jj7$3qvx8Gwr`;AX7t>Y+D!pHH#>T6_BL+uy30~qCiL_ddX_tS zmebj-1$u7F(Q|u&o;y?HneW%6#`A5x&~ulg=PpOjU2qE$;THX=!6%IA?$r4AIt$Db zReM4U%mvl#sni#k6p_ZSe-;Z2;_WGL_*+ends4f{p}jY?dj;*@K5Onv?Y=a7EtUHC zS}OH%fW4Mxt2jPvN6$}pwucTOeNO*mSp+1rt{~mChtS-Dhn%bk@ z+heIcmgDt7-ER9RZ8zif@zfpUfl-GSSwI>CsFDy^1Z}9s}YCJwer+)#h zzObbBytBm%Ii6qC2Q4hAz2qNW#so=?@(eJLd z4Xp6*)c&1j3qnJzE1#wInFIBCYM<*v%@+8M)R&BeaJ(xrS1Ky+=9@wi*-QN z4yd|Ga*%KP9^`EVlpb8QgI%jI?zGZ)eLwRIX7+_sFik$aVJCb057pnGxcYcIupw7WB>&h`j zpU38X9#{0am}6HQw^vif^Rd19Jl^{}-upaWEwZkBMYucxM;S(B+MPXGwMTPQolu1_ zFA`%0Tm^RiYB+SAs#|^n;`U_)!5J-1G=Y zx!*xR%p@gVHspTy^Pq}}HsPS!=n+iJ1m=OVB^it$QYh`vc@BMl)1gOdk6yLKP&cw^AU|&BN#|g^9t6p-`57 z0EItv^$=x8npU~9N(z#2NI|VrzWj}ok%)-9T z=aE22gf9~a$sCdL@B12~2x=a+0h=0LJY};1G(lVQ1=SD9wb&{X*?d`*IlQV$dLlu1 zSLY4=m$E{N>eOr^I^Bv-SD-d96Yb4$3^h5L&PS_B=ahb-bB@AaaHE^21ivAQ253?Y1Yt~ycK!?t^PDu1 zB2fpfCI+EUYUdIUo>nMzeoq`+BIx||c89nG9u>Je#7zo7hf5&5AKjtJ;+}%9xL{BR zNCa^S_@!FGA50&81EbC#U{XJen{};^^G9dxM^R0{i?`_w#!#skYS1Zir)b{&g8of% zht6o;`|=VxB}i>ii)v8IbLMx}uBgR(?%5``+bbHY$zT6mibxjWSVQSnSIQ|z z;~^-BQ;mdqcy?@o2MxX(p!_j^V9j5e+_@3s=B^rF&K=KrV2dVYb+)Dns6@onM`jBm z)@6tRsN=#Pj(V!w)esQ?jyTdUPN0W?YyYNXS%AcuAJN1MaKEV9(1AT_amL3(tGSI! zwe!?iM5Bx&7)8vrwy4iRAI+S}^b2eGksg`syW2R4{+a|H@g*w4hK!40o$x_`>%2Jq zZ$M+`C=U;z{)&`duWq}05=yOy+(c>{tGSJ{=~eb~rYm9QGPGr#^em^!G=hp)ICNsX zd{?(=R^Pq21#KgN(R3)B?v;$EEIrd^3JJh#8-?`)|Mwh4fAQ8&4-f&SF(}w8)Ed^U z^Wl8HJ zjsnoyQLWYoi2?g)C-q0_`~bmwfOqcA|1`i$j97>mb3lI{#&%$2KPOU2+_ZJphN#k6 zV;65bQVWJ6kD2YLQEsJqvXlMNb`oFdw`7$-(6~@)CD}d7?7stgNnNACDM1;~D}t*; zFKJ&2ELE{#%$K1C0Ga-Tt?*+F^q9q!i{-rw&Ec+iEkhM^UK^6vBJy)-~ z8A1i{!~$kRLIvT<+i^(ft^P6f^by}KIMr*s__dBP(4m~ZpRoArUh_x7lf zoM%t_U(OTteebT=o}O-vK1QmKLd;@vch)9ERV@iELCUi7sAtxK`t~}I2NO9z(XI(+P` z-5TfTy;Mrm zE18cs!x(*bJsRa#hkz5xm1p1w)^BJ0 zAVty&G)M=iC$qA_@pN4n#aY3)>o##1OEg$eDOnIL;kMsWbUI2p72r=faG-LUEx%Jr zUgV9ngV>ln!>l3VI!eJvDy4}so%EzwkvSXbE#r_D(glhVu)r1>*>$mut-3qtNnAnh ztew*uttU~ierOSjs;-nXNx=!OoVBR0{$xb>$)<_Li zhmwI>c4^6!td2n7MG+HXU@z0Wy0WO8(evEjXp6{0LQXUo?Ge>!>z= z#C&M_*r%fiHf+)QgEi6g5&fpD`4HI0$Y}c768H|b)bde);(dv#gQ2RsC6qYVH3er$ z5)e>&Z2+H?t%X5rU(r%Xu4Vpo)}D)_RWwlthlz^J5+THQxKVtrdp=@xYeXP4>sQ|{ z;BFHHEx`#<>#V(7jlQ8Fe>1?4AOD{a*ekbam1s!PuVEG9h@Q<7g_4S? zZ?kvLxUaz7331R6%VmrGPic3hBmpzQ$1$OPOfH@otALfb==@gKkd!RjLA`)&>Q4XQxu7TBT ztgSXrjtbQaiSbseFQZ{*zadQJnovJ$**IH^DQg+}OHfPK08S+zGG2BOC_RkzJfxyn zn;DfNIZ%RH)UI-qaIrXyP{VIA*)ZktTY!GnD_4Mq+GH9+ahg#77(|py<5VF6_XYC9 zT}JEMy7_$?6Y8H)uyLV=3VPC^P*8{0bdyev78gL?@>CnwvUSUGQM9-z$H6yML6y{u znQqgw#L?~!sk+rw16M}anW>W;%0YH`X29|@gn|ivKNKzwG0{wm!o3?`4>R2PK?mEG zRd&xdhvu8R>^mfl#){#`!QxDmd`=BnQO-4f8_q-*szG~cZHXH?N}qN#nW&+%v^5^{ zr?g!Q6*_g-Em3C&+KTiQ-neutlWn-fT9qsytGbaYCr#9KBWeW|@kOGG2UW)_VuP_D zi=V`JVw2K1Nu<=s#v`%2*Xon6Pj0y(6jTdg;I$;l+)VL&*lk{`&1)4aDeZKf8F!W< zS-%h9cd=f2tITidBvO$|okUl#dEzXsO!VO^lhpFQaAX%}>1)guM?tv=jR|*73iN>v zL?PkT=`r$XvUk`tpEYi6w)EEwRxKGijXO)+#%WS`C^o{2jqqZ=E@<^#m_}2?4(kN@ zmxBXg>UY4Fcoc=P#&lduY>A7|g;S*Dg&_kFo`$Y_mA!AIvoq68EZNFWiJ>OMBZe@b zH9c9gL}wi4&iAhHgG==%Tq4EbP3yBe@*ew8Lck4qVU*fnG)xUH9`LE5t~HD0k8vY- zq|a3e#Qdjbq_(c|pSoHNd?{Q!Qt*EjrJ#7`8nV%W0Mkg_2I#sv3Cbk_dX8huY(ux;Q13^Snx zKz#YhlRF~la!J57EeIV(v3Ay8uV&v1W^SeHzG%349!T!rX%zMJmZi*9!!qauM{eJV z+~o>M22A0nPiPqdNw7JZqVq`T!C9o?M+GbJgs_tHL8a?{;0THlY@!aGDe{d?Ob(cW z1qBN?=Eop!dXVSx*LfVwb1sD2QJrYG+$f8XNlr8y% z8JMTS=VZ2go?G#fMFTIrZ50L(bv+=Q#rByPOX`ihP9fPLKm)LG*iK-8?tE5caVgxR-l-j zZ5q(^e`;)p4~;&KG~YQ<=bC;lq7Ly~YLN5l|nv`eFgCeV1|AZsyWd-}CSai1iu zwzO9IXk{l`xh(Oky)7j=T&{f7!5ezD$WcBPPSfSC)o>K;e)s2ib_MnQiZUzwhcS*U zlYju$`y)*8nmWWXg~1ByNLLpFlrn`&3qlon@piBsglOH20#VsFP_?~1{R!mcATx)e z%bJUo{Uq;h7xkv@x;WNGr{cilBTk>GIj!)}?F5}xR{74X%Q>e@ot&r?;p*lj9sbpb zPFAAbMmMKKB)HDI>GDCj*E3)1*zq_u3c{ja)|E@S(<7JN^(c$1Nj=K3e_CXxIb3J> z$z~usQ|Vg(jCz_F^@`Uc1SjfxB+AaxnP-1ft8^4fQ{L9uk)7>rEm5L$jq)6wes<4g zEU#i;A8BalT%C%xzH^l{J=8j12cuQ%g2*lq1m{H^+h~T-wE@%AGFkUarHQKIN{^c|+lu1E-fb?40mp7+tGVly2i=>yAtHMR$CT%VMCcmKO*-{VGaQkY z-Lfn){#_aEp4}4JEuq$}YKSwSV4J410puNVP;T~g?>GBiy1qyN0L_4!4G<^cT^fLl zyp6njIz~ocw?~|M45my{%kI!=Q7Uw2cj^c!T*Jy2Fvk)FZro4+nK4;E9F?;2=!1WE zc&E@6C(u1QB&rVYb#6v5-lub+dh-A$F?BGM;6(q1eDrgj7S4s*i2_=k#)|x@%k^`fe&XaWbKvYz zPyOom`DDYHKT9cY7~3B8*kAs}D)yVM!{g8tW@`5Ps{K0qea(JvzwRMqg2tHr)vQ$U**7oi`H>`;Q?wYv|mJkjQZJM8EGi=YGoy*4)9DklsZt^ zaVT|cw31Q>DTj^PI#@T}P%2;5diS`fDOt{8D)s5g+B#g>bJW%mN|{5crSVF7JW`o* zRO%>Y%AwTrD=T%hQtGJGF-oaJsl$_%v~{fR=uxTTls$)19GeSEX~0+ggZ#JCPbo7C z`nl&Po}T}ddrUDCHw=#!#j*$%#b6w6z=RZC9f-QNM_l32D<;`ZbS=I=Ca7t?ZrA;| zaYfVng~(oTx`!1FF@abkl}D*nFNkeHEJmUEimSV{gbts(n`CE7hnL^Itb-g2HKfDm z3AA*x1^p4ZBymE#h(waoE|s;M%6U&e4*L5suD{cv!cHBJ8rA7Cc!bcU%F+WuaT-W^ z^;hbm0enM2bOGjPVK8p4b z4vHh))yNvbiTp@8&2EtjiG$$k2sc30Kh^BuxL(5#0!RmQY~IT)k1Uu@Xqp31G({5L zUF#2_ANO~4OQ*a|oe#)c)h*zI)V}$cO!5*f)14r9NKMp`T)h-V(IW3^qTW4ub`cMb zLV3K`M|7W*N9mRK%P>=Y*CL&eO!5bt8gN}wL-MQpIa&Lj4WH!&ASiLI2`LHSGn7qNEseCBFBY|4iljl(qbrv5_#&2w zy5w(>cYsiZx!Eh8bg0MzqZ+veN*Ag68SKOh{h(p;Z?JL!<oHxAMq!l|;6WjkS8oKT0ljtCd-N?VvD51j-x>oNo)<%T{lGhC?fn;>t61Ub ztJ%B$=_BO|3ij~`;CdIhe0;$#`*B3>9*5cuBS!ivBmE?@PaKX<9o$c8s0%s9S6xu> zZ>1B`U_SG&pXFaejn9jZUwC<~f?q0!P~pf{y}gu}Mx)zXd1eA^d&Rk{TD`~~+DExT zRGLhYyprE`-`Mu`SEQZc?S3(9ol>~uqE8+&63~#Wrk}<59QKQq+-qS>?iokjLGDFA zP?>2okK`0)7Rec0&LP|<@IoiP%Y(@Lf%%zD;e?O(xhAh{P32WS$bYZp`IYH!Ems8k zgR)NHuWtau|@ z4jXn;bys;6S7fUV%@b*qZ1>pQGAD!B?;7_Kh|Pho#LQ=(9p%rT%a) zbK^UzemN{I^whA>@&#y905pI$0-zZ&0nn=SgJ6sA;j%mcgDru+Z`;jQ2sB0hkP$al ztaE;gA?YsF$%=U{|6JVfQOhOd0x9`I?_N^!X(|ZGOI>jC-_Ik-)gVnT^OyYh3xCNh zI>IHNoB)^0d8grD5qx)hWLN49J~gmto8cr{KqQFIA3p)Hw>-9ja34%^@s(Q;YQQZB z=Pir{Sq$@KFHmfMbPyN}`(WQf8-c~#N)Vd%!5``E_pQTaZWgGyMQ#F!Acwf4q-29b zBbe<_ciZ+An;)h$nu4geIiRMo4q&TLa^c}ph{T4)yS`$%licIn)x?SZ`egZ^)xjz9Jc}Do^_-by z2dBw_4CDuUsWaS*EF7FEH*$k5&ywF*BXkU$UHE*LxTlzboFh-M`Z-sAVGZOwrNC@7 zaK605YT)49V{|smq~(S=LzvIp>;id>IcG3CyHJTVDR}{OYA|a}hVVu5a|-nryT=%A zyhJY2Aj>X>Z-OBE|B5vi4T^5{{S@@<$gL&pdV!-U3NQ=ADGLNUVN}QogzJA}dL+|j z#K9OPuboc8;(xM70yzl0NTVdKBsH3$26#mr2&=l<7o57~<1rd^_8S#hT{|1Up~K&1 z{p+3Ctt>@;aQ%1IX1~*N{X2w18(ZtY&;D2|gUP4}GMCB%%7|p5T50a{2^Poh!Dz@o z<(4GPgf40V?^aw(!A!Z;O;ljbV~3=S$ce+ku3$ZR&8o#Bwyq*5wWXWv;m1@|?w5pv z{8Dp2&f6#Cm#Pd`!kB?#_A$V((VwI(kL%XsJ$zqB)pw=(uByIk_G`{TX1}g+Ycjq3 ziub?bJppl|&~6~a?@-10gjHqq7`_duLa{>)MytfIrskkLn%qNtbXh=0k{h(x)GPK41ETsP_Xw!bMt>H1DnHJR67U{+<_@e$7yHPHO_IBpjOLA4j z-lv&4_E{-&Py>X!&`^yNg3y>3HlP}l4xvCvcmy$UlGyTOY@_;UXOokC9w8Pw5DWtP zlt{9ngFW<9Ny^9&3l|nmz%4Fzvub^CGq>;wZgD|ed@8sF2c7p+aErn~(W~H=0Q`QE z*a9Azy?^kYH^L5^}x+*NV>=+G^`T@w5WfmT0uCA0XWs}J&J#*00X(C z77<-i)6Rk7+QNIILNJm`Yv)+RHH{tRjU5%?6XD3b{%G-6|44DZAFc2C9zTM-1HX*W zcU&ZCF7z#S^f_;hE(h(w0z>gZcAyw?)-2672>n4~j!!XAt z$fR@@97aVr%$EqF3MVvk7@y!URt8ps{8PbUIOx5Lg2N`1$PN(uIwFXD)o==jWdjcL zWkVc>=5nd9#r`7{MrC2M5e{=L#jBvE(9jjm6x_?;J&MDq01nVyu5?0T;asJ5E^!XK zCf|Id5FB=`dy&Mh*LhGE|EIZMeSsXsOCFVg?@{{8yEVIFjJBU%r>B%$ucNX|JS zk2~(h2H`ci9P>ai#}NEI+$Y3W8!KKIqm%Apu1?Jh+5NBUZE`w4_+fD7NOxRx^)7!D13Q6iET_bdOG7thgHaKsSe(-x z7t_Io%bHs%3m7MIfK{Oh;$ZCk#D4U6rp zV%urM!ru=M0LU#+0igbfM*yrb=?&)ABZPCkh`YfD<< zE%uCcYWy2x2jH!492z%Wd-e_S-yE)W=odO>VCqT1c5)@bnfi$XLw{!2S|QYTtcO2f z`Rna0qM~Mr*qhsi`m><~G12-W6ai)RoA=bID$Zky??Mb8!LIsB#9h4%At!WRET#~0 zBJ!X^l{_yBSRd=#vV`TS3ejj{R-&}5eRre?S@0Zd{ffSs?!?!rDAA+!WtH7=oB9b^ zoX<8uAXNAr>p(K`mckbScJ%fQ&j93JWFjwBUy*j0BJ$G&QZpq8NEfe#!r?YiqVH6C zByiph#>&`q!Z6hv?h5Zz%t(}-5N6?I@0P|fSDowi-gqku30dd|cS1?IF`&=*aBTOR zHr~Fe3LY1@8sFe-b}4K%_25lQtu+a}(SCxXxzhQ=gNXbf+c8k6i0nKvR{ZX-1|A{J!W+J-th-vj^ltoB$d@3VEA<=huGk!1Fj(i%OVQc?-E+E2 zt5IEBQ+4pNFfNlkh%ezKct(Th&=i1_Vhlwv!m&)DhQwe@Dps+MunSbFD~C5mh=9-2 zHV{UxG9K*5+)z_GQcF{sRHg7Cempd_Y0=aonqq>fDNQh-%7dHx2&$%_<}i;MO%dP~ zn(9+DbvRA^N6@Oucpw>ptAa|qIy9x(R6@m^3Qc+Zn1tHVG{wXcRJrF9QKK?L1r_s3 zO(~LE}A-trt-~2CX#T) z3{sg1YAV+om_KSt^QUZzSrnR@P&9QKO);r7K&{F&#bi>MNotCfSx{*+k)~vImQArl zho&YKO`SzkOfWSicQQ>e!92))eYM59thTf!)0X_gWn1nY#yeH9^=YiLcGH^CrHR;; zT(IE;U>+zFd_6SgZhtlRW^7z#W?a}Mmp(U~Y38!|i$Ens`4{fOKQL*iP~nNBz6^Jx zHXB~=pjWm*wLDBIev)!GWH$1no1Ro!7$q|_X{I5Or;~0FiKNm0Qp-csa3vh!qCpFCbHBEMdG?LWXHQ>`ihQC5hgh{Ly4$rloznzl8}or0YMKr!3Mi#l9Z> zxR<`~t^b6}i4n#kTV45^>(T(G!#Dixz`G6AP}#R@a{V5VEJDR_EN^cT6JW9-EMJx3QX$cnric3!S zB-16!o}p~gMI)rU_6RnmvKEGEnH%Fs0xikmJ)EhO&qC^13Hhki!`aG6tsa(mCTe;( zN13P_(4MQr(?Rr{l?2(-stHCK>hsj|QC?eeQA73ZJLflwOk|uBy>E3X0m(}Qq+Yqn zg?v=kTKqt$l#P;CCs6|Mkd7*`a)~%e4NXOjO{?{YJ@8g>PcA0ca8PyrU+8sA=!_k5 z0+~qy^4SuaR9_EDcPYrdOA)@V4r?J&Ksn-6eK*!*^pB0qr-VZAHkuc1Wu%dc@6RG* zHO^_`aKHF%W7tp}&H;-`{Y6?V*KSI<<@2?oM6FVFQH9Wu#KM(ale}01J4n0?bL2|P z4E=1KE9FJNp}hD+=w=>t&qvFip)^437|fvOdn*`5A*P z(EzwKIoymS%KA|EJ}$^+!Ej>M+i`_^C~g634OV%r4%@km52 zfwMW?+4&)NxeWX7le+~HFmhMVu#jx_>^!#a2U(i~+$I>=KGWD`4Z$|b5me5H?X69d z5R*tH6iBC0$RsL@{M@z&n4b%xHX#;+NMyqx(lFROQ%z+SVi+rC7E+}h!X(3rg0`Ap z*je`DY`(4zq`5}g7&XU+nVMs(OwDPVtb~KTvZ5j$UoaC!g<6x%2M6;Va-8Ok8o1^i zYJtlZn%d9L0{9l1E`j@fqcq;$fc4*msQ`FzztRVRRouLE{zp z1Z^+Sei_9B6Ymw_+!Y9W<3MCNaEA^ro!9dfVIOT?X+>Db17QK~1#-y_`P|2<2Jk>? zyNiozR9i-fyG`}!pcO;iv_(bUX6OAya-IsxX6I?0TWHueBmMn_31w^eJ5AwI?l{fZ z)EUj4tEl&-Myw>gJ%tL2G3eaP~2-*_`XoZ zb_$G6ljt4pSW`vcif9lh_pBkh1f3)msfi-M2&>7ZBc{crA5=r;SU^fDk7efo~;*?)Yrfsu2GrzPr*Zp)AuDoagDlm+2UQ ziW!+*(FAT79u&!Qt24P2ZATo)+;0mDGV;j`46Mc+# zepaz49|>Fp zYQ4Tf1MhZjzDFTq!s5LO4^wmZ`{^FA_<+t9G+KL5p<#{ID%2Ae!$7d!=>sgHW%v;U zjupsV`mipUB4})Oh!msxL&Q)iw*UDC7KtgN68AD(lw+|7j0TIV&sFG2IF50P@OX>k zG0e&PienH@stCspgkoNXIf=&3RD9W|;>((f;&tPKW(7xyE*~r2NXrEAI}76m-t#%Z z)kf#UDt9g#CYz%1?Cd;UU&J7|VywoC?DasInkLry#l1xr#N21(Vr;3dFKS@$!uZ!m(Z#M-Uh3B;ga6B7t}$xV<_4q7)puUILOtO>fQWHOo8aGf z+^_K4jIILUD|J5+m9B^Z_$mSH7aFza;?FNjYj+7Xjy*%&R-^$dZv$w#M)wj)5cJLZ z`Q+q;v~DosE+8?=bukwh{e6e!1M}QJUp0G~IIK%T--M`*B@z zq|tMc5sf_I;aa?Oe%6{>@o4QQb-R&9{*-PuYH-NYy59(xP=U_UT+9dljP5j2t6XXH zmsnHnIbGu&1Xi(uL)nK|2M>$6tXgGHh?#5Q+A%&UXW7}h;Y*(`(KTCw{(4an+@S>fCe z{d35tlNXGp7we#-zN2d%g^9oG6p=9TZhkriOl>lkI887yfKS{eoOPo0Pmojy=xCf&Xq6D7$-8$QAh73i%I{!8JS8sSF@&TJs-6UALNYH{g@ zk1&9jSw>roaDe#fQ(frD4UMxxI3|@oRVemng0j~L@nn3iKqGt)NgYPG z;oNKitcBa`izs_FjBtT7-Cllw;6T?4JW^9lcnqdSNDStF;`~?R><}c}zRr&xj;Rq6 z7kL2Fgk5QcTQ){WVB|qfwG&qLp zI2GXI4e;R;q%FqlY3WbWwSrvxH!C|iwv$!qB<%^DA}9-r=7<`nw}XizJOfA=#$YZt zmux?PZ~1i8N>HvY*=xFohExo9eqBn269M{!l% z!;(x7yJ+MKbLLrHZ6@@*q1(~K4sYp>Gzl7hf|w(8)o)ej+G8ri8H^2Jb2FHU=(;c;FJ<;<0Yc{N(A5DFrm z4x`YCqH{EBaU3Af74a34pDa;07(oZK*HFVa#Y>Rf0`*v6JMFbT{s9KF*I0|x~veFVu58b>T+2->JY+cQ^ zc1OW~k*ftiL2mG{9R@W?zNIZkSW2n%@h0Wgw{OO3i>%bWo3guzqWJC`vy5#HhTWz_ zw0R9V^#z)or_eC>=er|c87W3J>SBx(bt^Uu!eI)uL$5^iLdUk9x@DYGMk&MK7Lt?j z*p@3sjsO-P`>)wqW|u4O&mMo%CD4Z|_J)CYuMf?e1p6a5s$ zS5}^G(^mip-&^Qe$4}`Q2bxBQ15FF(iZKPfD_23tY#}5cAbPj!dyEeG8KWUQPM`R`|8A#D;v5_~Qf(p18&sJXuXHR&d6N z3BJqhMa94wXWx}6xJ}5f)t5~lci!Tjb1CmJGq~qe=lh|K+-~1jo$VTR0K*TthB}Jj z!Ud-~KMr+p!P$>h=SPh?K`L%<+Y8i-`#kqd`Q`RdRZ?Cdux=GxNMDzEZ%IpAjiXX4zd08KER(87o4z`O{d9nH@(prhNp)+}K87%oC}_ znAty23EyDNGyfEh>9uSk4X)K_G>m<$rlP~h{&xUGs92%gXh%tXNY-7TrP~vILg#K| zG|)6QCIH?=wMsLuyX!-OZ0WW{Zf8WWK$Hj;{S{VK(jVa~0w*%_kia6nBrpSGgF&^B zy^=7#VOtE0Ed^CtC#(f*@-jIjP}rZ*S^jCF4DyU3)3^erbmdkx`H2uvCrCKW2}E%q z?{u;{QII^6U$jO))~xw4a}l6mM3vWS+>}SncU}r`=#j2MiZF@$zEyt6TFy`Gf9HR5 z_a^XmRK@=9?!CKrlC#gr*_lU@>YRiGl0Zlp!lda4ha?~p2r8mp5JX8FE)f;)Rgw_q z8DvJ0c@Sij86kkov&bNWi~@ovA}Y%CzQ0=Cy>|lFd;P!r_`JX2a8CE?HP)(CRjaC2 zEnamnVrBP%9m7d`NQTC;U2*12LvM2qnB~p^w&P+DexMD}@^)EPA_ZV~VM2_4=qka} z+)qF>BLq)#yKHz>uqi~0z(7a)@wHqulBhwQ2pQ_pYVE<(+K`$arIxBk;}AH;sYkIO z)Q-jKQBS#G0%UUIdG2lqDyxyz%ay~h+gt`{1dLWAQ)~^JqDI_6Cz}{u1ogtS;ro}% zHX(SLdk=(h>JT1SS&UObr`!l0zKUxIA$6dd#pNoT31TQ+Y2;+grBI=ni`KvZMG1|9d?*d#M=kO!i2qu3_)QQJiEBy*e;%5H44 z=widx_rI2?O5#ui>oDig)PG+mvkS+v+4iyW)R_*d)onItP6&SoO~7C2%jA@XM+$l} z>#tg6C1Z4m4NQd(8n&Tx{QkB5Y+AX50$#)XRennbrm#?DoQW;%<9_l?GrMJBno`bB zSjGA&sKY0e18yC_`H508^#O@}(;qwxRl)q+80Wsv3#g#4Dp;T#7}Y`r3rgGAXpc_| zXIFDFvylxB?hNl!xy9PudUl|uKB{R4Wr3}Snsy*=S6Kh=trk7t2k6;IIt2jPRH^U7 z+)d3@6rxSJ;-H`dz9;th>7bpkwQ{%_4;lx3NbQJU?$nJrAwFY)sWhg2DDnx+I=@)8;ahSqC1oJ zY*G4(lvgN6=SfxckoVzjX?ybV!bDN!{6(9+te)O4JqRk00CjX+`GUHiqbRcKzU!Mp z>f6R6UIeX3yr;AxOu$jq=03UsOMSYFKDla0gI-!C4uOwznV;7MdT4>j1qEl1SRT&Z zw~9^rYuOTLOG? zRDgo#D~MMIRDs>75_BksQ3l;jZddYTl{rCuN~XgBaHWx=BxX?ehC$`MJ-TW^!{b_= zqPJ*v=#%t8uG-O%U7h1Y4*DF1?D`zEHeZo?HjDwC4i8|DYit~kNul@iQZz3=ssi$p zouQz9;pd0+7Uc`Y<#TqrYhq5XZW&ZD0b|A3Tpy##Q2J86m|NSH7j})B<}4Z^z?h6A zTFz%xOR*DDkICd*Ul~7^RYb8e&zDsM-Ol3l0)4|UBFgO4&+Q_r>_Qns0_OaL>T=3Y z2NYh>4J3iulcMOpxguHwlN9m2OWbziTSroKa@&n48p&lcpQw?`WfD=3FRK=GLp=G4 zD)te<-K`+%v70}<$Cy0$e6{!3iOe-_`k*pbfrlPnLv^hlixyuei-_8GYlzx*YlzzZ zSv9RYMXsyu6*7jX?HgtOP}?`j?%{3UtZ!I41TEhh26G3M-4YBP;>ACwx>nm_My@U^ zp(S20nY8eM_9y z5o%qVZtKns{1ovmUyAE%dTyioHrEo7tPNRX>o0`dN!$f3vOkD+qX-u`oxMt2dZ( zrn^C0OE>JNxA1j~?S;PF7uKyD?CFnCkiD@6KTq#MH+IK*-wOBHt^BCArgmQ1=`-to zu5ErL8i6?AM8#s-HtXq?CkgrIXHW4(?j*{wJ=^8&1$R2&4zMBaxVE%30pknE_Q{kR zCJ<-6Yr^w#H%r$vx4EPJXK^?AY_IN>QrC7UkIjN~_>l;>@*`2hJ8_tru4&6k*TQCX zC-0ivNR(q&`@HR%cdd&(2C|e!uiYz6;6W0)_QjQA1&$P~L{h#SV7I&8MNg1e)x0EC z=!rZ|)W#zFvg*W}#CGpRv-eec{pGZ3i_)Hi2QJ=CzwXfey4FqZW+ML*6?U(YJ=!lN znq`Z1^g~`FESPWeb{qL{8?i-;aU1zIwSUKp{)c@nTrc&VbWFltdkg^)GR2Sm&+M@~ z2+CA?i0Ck&+FD}&X-gKTOXVZt3Ckj?SmwIQuS+KUy2kNMi|w1DPZj&RWRkd)&GykL zI*oC;d`1G~bUWle5$7K@vjIH$R#%d{TAhfNt!fi>I><3^U#h^(q>ROcP(Gd;S=hku zj#G&P>Oj{d>@S}a!TTUZTJpLMc3%@721QobeD zvsfB+#aKeE?p2{qr-5+n?kM8nBvg@(#Yf#ih(=p5JRGb%w(u8ljk}jc#eR(R(~EN* zyM~E+o%&96U>=AviLe(gt{)azUt(YdfF9_<`TC-23Xy|PlBV5(;i~ok(r!R;QUom8 zV9K6KD5uS~8e>Mq_5$F8u4CV*z`dI?lr_tArPbVZi^y3@ac%LNn@SyYAQo(DITnX=;`*F~! z!#;I>PLp&&hCfc!!zd@DtD|mV4}M0Jt_V2ek_>qdxHsIT!+9+4cYFW472j2&&m@D0IFH}wXF8uo2MefY|pGb z6Je$oQa`JJp431xv+}$f=SlvJXVk2`;E_F7_rRXNQO*}bRaoa~AVl|kG1A3BPw`v# z|7ccz8)oHs#{9A(d8!+~li}UF@v58aUu9N;4PJoygV*;5pOq&)Kg zdD3U4QHFFVA>x_TWNow+1)t5Bl?aMVE+-e zzgU7a=~FEXeUXu?$%!NU>9W zTcB_=z6F@-LYkt^KdgMEn zl}{5U_Qi6uGS#&(Wn{@B{DB%ld~sqQi`FCXs1XI9p%KYDH1btj7$PCK!c9?U02d{q-=wHB`M|V%CH>^D5&#u&B7c=+ufP*7*M}pZ2qaS_)ql)|d|2pI*8$+L zt6oX!0Hw0poIIBP*F$LMFw-NU8l!zALG6ilQH2T_1@)p9@z@Z_$>1*xB9%4LMy6HN z%iMcP4&69of&^-D6-RyO%P+rirgh?oa^c1qG~qUOF|42nfe)4h{hO9xHSy@-%ItLLSU|rqH7L?%VN7x=Qib0r_n?&?<(1i;U+~9%sv6a=` z^J&&w_NElCTutRxmex_SKD~-sLdBiwfNYRLg?5G(5FWpiHPN=TwdAMKTDDKh`U&Qh zT9U~{En&#fjI^xU3;_{ZINTMQ@)icI+=5@U)>7kBhK-#tHz##dU89p*pxD{@Y-?-B zmhPkAADSGL_L|23a$~m{YSPW-qBol=^$mJW<=%of^dGq{o-LYff%y_z_|Zjd&}Q3~ zUx5*B&fc%1-1~i-4coU}uc@7%LToLut$gRVmrb?3L@tYkaZnsh6|tPr!{oIc5cXT8 zXP|&~3I#*e-H-57U=$&9&fqfXzAURGtGb?REi$Y%hmLfRVM>OYP72$2o?uPmo%oA1 zgp@jxF~yQOLM(D7dY|Sus-fw|UZj0@;-Xdd41&cp?p9?krda$H%x-=3r#n#fmYGd3 z;(GDi!lpM+$WQ_s_jCF(Us_){pcXFEU}+2m-#GPzlx#ye;alb46g}Zi^DRXTgaj48 z13j1Mw1LBID<=XnqhLA`EhtSuxxJw%Rmq|z5{1WkgGi`f5DE1QB9ZrNYDl$r=kGC6oL@ZMPkU z{v|l9^mAKNxPPo)Ycfx*Mx%uaV*`XClByAy=+8)eI~YlBX_0Xeo2=Csp9pCV;oJaI zx0)afi?q7m&&IfFh88ZIMTJCim=)yl`av1NHzzd08sIBaYYE?QG_@>M3Gj6@EqA@E zS1n}7d)3|EE38q1FR~#T+|YJn1L0`gKFn_h2B^Uq4ReS(x=5r!kuryYNW%o`B=q>a zC|poKbQK(QnTBSBpM%&E*Su|sS>p&?Hw%5(SU89){yn{s{-55 zVXzI7`-5Wzz)@w~dT;$@5b3gR^^w`oA68|C5VU6GM?Y&Hw5)4s!~ou6eMMSdpN~2; z?VVvzchJ`k+2Nm75h8@E)WF{(ce^|PLo ztwbcQuknNPN@OLee&)b$vnkLD>=9QlxRVlu>H0{_DAI9f?s~qZIG#bMa!Ptw1GnIT3Cm#N6|>ZVk86a zJ2&S#1y!kJ?^U*x*<018EU8@f<#eZ8re!)B6wrFG7)1A$^2H$YAdq%&s%w*2AA`zs zgYZqQ7wpquKAE8nWR?yp%1wlR@J(75G{wUK71C*gx3OCa6676D-iE|NE=T62PcAax z1jBn3tvX<?Zf93^8k`>-HQc?Fy<`kry=*#kmvXUX3MDS=D47%Mq=%o%BO3Y zQ4?6QCsoT7R>6&|q3P^y>=#AdszMypvxx|8NxnLLOdL{$08cmiK*algi=J~N_r03a zZnEj#V=e;H(MxnytH6ke3XNF&b>!`m#&QeAo4U` z!p~}`k;YVKz5hSZKVHI0K^%tB)k+gMPMVSd||Viw>6Li zR>%2e^$ltjRw`=Os@w*e*H#_P!Aua`8AYO%OcWz3#ZyI#8HlXJsmi(;m_DoSiO{f# z)QuK%4b8-uPBcBO`+{_hhOMUONd`%_Nw!Awxd_!zY-_5bSgnEwSr7ZO z3>!QWQNpy1M+U2RhY(eMlc5hC#MjUV7LWtQLpKL4>OY`TUHM;B)#$2|X&c#D7Zg|U z+EbFc!%pOCxv>=YHdklS^P*j43;-$on#vXj|Fu`PLkKPStb9cXuz?pvta>RZ3_kk&=!L$ zS`XO7iWf+S6^#QQG^}nl7f_>>VOp&?P#sqwyDBL%TjC1$u?e_SLo}JGSIhi^Ptgc= zV+bP-hP50IrrKJaSNBW1*0mX@YKN3g zFE838>9iD|K9Y(Hp-4JiDjbrEyMIVJ16RMzNGeV#k|eyqPlUwc(4FUFZ}kIqR$Gu> zoDf>~B<-^k zE*n73jyz{b#;S_YO0r+x9-3J$Ihmva(A2rF*at}kph?;fzR;JX0?=yYHYcDY=763J zyCz029q7u(7A3w%zm7k>YDzfMt+Yx6{Mj zJbaD^++T2~iE1E1ey~7lF7Zf?aI25|avelBW}f_rv&hE@emH}`CM};)25yvBfyrh; ze>RzVT^CW{7!`*#J$X_8T2ytq1pknop}a30iXPruOP2@`TH4T)ti$TvC(7oEn>HV1Wv8pskX49e70T_sg{d^K{sc6jVy36f8(M&oHJRoX2rdg& zib&9We?$U0w@ums?hx280>kFxp#4dXq@$TSKT1f)d@~>G@irXj@JaYdG&|m3My1aL zVBs*mgPPk>&3O#BGAaSMvPx8f9fT`8Qvh61R081&npALQm&A6K^LKoK>{L{LN%UPE zF~^8S}g#HCtmi#-TdGA zN!hEZm^8h6+O{%Y+n)2#;eW^eW3dd5XG92PLxd@!3S{osTPO9ueSsXpc=##s#j@wp zH(?Mo2t^DRcxBUOh)Xm?CTMAdO z!3xfNW1!z@wBo>usGR5M5F zFl9d8EoAK`;V3LZXLDhqi0aX9`#hSI(`5?FA+HJM@2oVJ*A=4{i#hciD`UB~lE?UXg2|kPbiB;vdGCHt zzH?f4JVHPbdfkJrVxMd7Q&;GO&uO#iC)SMIC&^4shsS^_2{v|t>SRBgCV*n%CZHW) z#7hH!{*b3r6n9*?u!#T2=j_x7J9q(}-f$+3Zk`;$f=_fyFu%j~3+(wkw3*81Rt1;# zNFAvLMy{keWU^M(90t-oG{2m|K4(L<&mB%nLuFKMJ86J~K_{>yUlp+@g?GW68+ovxzn%0w$V9 z4QQgJ+LEADWJ|IrU6Y(^dJI9Eh`7w#cA5d~4RixycPn#d86>At>2iCcQ-v$e= zbp%eFu(HVJEs}4t&0Q!Reyg^|Ls2wbV$BFjE{*0&=3`PN62Z8$K0=O>nq0 zse2fTfWp91&E91`5c2r@4M}!3jQi3vvL((#ZCcGn*lL=TE^_?rw>q6jj$yo>3)%V|>JjU* z+DfraOWbk|ik1&@vQ`38qm~aa6LdQ$$lWY}#`+1Y!zAK#lGq_#PycM15mbfw4@q9_p-!Mz|?}>3Wwdx z9&O|$zuOam;YEKK?)NnD33z@MUjbwhUZ%<18f6niQ1W{>4u~M((&1ER*#XcHVHPNk z{idR0DKHRR(foqp#lmK6EWiN`8N6|Vuipu%>-u3(8fnwy6X`naUPjx`Hr8mjwqDy> zqupAg#oDgXA_+2*#n{(-RVk97%@?@5utNAYb&E@vEl|M;f_8hnD(%qIPZi>6`(OO) zCoJm!i9WvX{Kvm)ZJ+CH&wcxH*>qecu!RkmPP;7tK6-YPemcYElE-%mUPl@33y3S9 zMp{{z;=r%Z*T`i^RFtdK_zac60cpuM#7%dAoBC~(Y3@7!IZXc)LAoQ2 ze_yC;YBU^q2E?meMG*|iFGTir4Zf27^v()#FBAtB!lV|z1&}_ADjOJaU4?yH*}knl zAe^dF#o!W*{sUJ_V5E3k|50Kh@}^+4H!#|pf{k+b>_9r-L&IZ@S9L#^BUXB|`(**7 zn<86cH!+5#QTTqlVj9UW>o$kdt?sD>lx~sGii6Z1L23;mt2&Obx(~{*h1y&YP{)C_ zJh~u#g|jC1iiEMOC+(kg;uTcx;JsTH_~jaGH&H0(;gQliJz5g|xlMcoZc%cDDpv{Ji!+GDhYNGOTFs?anHje+U8fT=JgI;! zM03G8OBo*51$gSwV>-oxi&!3*A&9^lF(NRsFq3zYV04kg=tYUeLO-s1%B}%VU&K_E zq=?6ksK-Nx?MuXS5UQRaQQ1!L>?e3dE(Z%?Px2c#gtExI$kR*&zEb@Bz`eY@E*E`; zxrn}9!5OsB&;+N@A8W&!o|+Hu>BycYVuE|8F}z<(OvbrQQ5(YepO*()`kbQ8X#CIm zebtQrnaECy@Oj%KY$w8YPUAmQ`#O#PVvYY|AIF(Nra3G3DCJd4y@~j3I^>E}gR$+S zDUu69#hI8;oV(Ps50r0`LcU2P-z;89zNrWKhKgji8D_)X0RYZ69A+2S1%*=XR@BYK$lg7gHXL|uQb}tt?Q6y+Ghvg#l2UzE$$oYxz)_`BSou?gK~q#I za=Gw9r(IR)+Hg&nz8o#qE-Te>P%524r888iD}xw1k$gP3ZB~JNgo1}@w`u*$qKE5p z6BRx}ICO+hp`4+cFHyX&WS#ZGs1fTk#EuQvYijCe+6Fdr%iyI0Jl1R8RAoj9DzP3B zA>ic{lyvVRh@xD;=E6DEjnJxepuoZi)q#ky5hBJW_|4MWhJsW&(_a_gNLyDRsAM;= zgkEw(HyT^9#gByke3VvW`-lKWr0sB6ah3pvgl=f#1^5A{Vn2|)oBm&@e4J$3?;{5?`QnOEzK#KuC_7M647Yy?oAjHcHFcyAtGAITGfpZk0O7o6DjWw^d@e!s*^ zuLr|E6;!f)o~*1@scc-)yi^zJl|OVwaK(fvM~N!80w73xy9m+-uJ+3q+9Cw$ev+9{ z2_s7P@ph7sPfaJSrgK#$-#R3~c2f1rcUIP@R5tKt`YzNfb6Pgc8E<6nY!3#{Z zL~qn2y%3#lLjxCf-t06&6U;fCl0v=aE@>8_uR$JPgwscpeItRLxuF}?pInNx30Y#C zmxvpwQ8L1FPq6DU)&d)lHjoT`A4rA@Bp8-u7O!P*+*tsxrkuQ%!0VP?zwu<>=o6af z1z^a1QrJT7#1x_h?>sC2gE^lcsw*t3s>!-bhTxJF+*xQsfKYJshUGCMO z+(lOEwL#6BxolX2l|f@1BxJtAkb%@;G0k^pU-_lDb4^WK9d}1jw`y9}5c}YVS`+O^ zrEbx;3b%?7LB*0L(bwl|Lxq2r+8J-#DkGYfK=`*6j3E3rU&VSt(9&&Hv%83f;ZIr! zGsqphi0`uyT?`Ih`nIj&tIB26TisUullOc6Hr~m9@dn0;3*_JEl5{ivwl-bLDjP=? z66!o@J&sXtrM02Aa0|Unr#ZT!({R((_%t<#?nd9%8cz za(H_v%1mC14|4r1+VpdO>${>RZqDtuE?624{w3rGJ&S zw4;=aaknhsf=iKZ&DtL|$fCMMbo%n5oqv z88cRrGQwJ05}c4l_20w%bzh~q4E@boF3e2}!S>hT8*prCO|o^{+{i|0Awq)GRww=H zG>Th0>v(;tbZ{~SoS{EF5oUGO1!O{i_nV+Trm;+W7>R>%)oIe1e@ zdHGFz(!S%~3;D?+8Qold65Wv?ib@F5Lm)ySCWI%CX`z8YcGMA(9pxNd=7c1PqKp=L z=cR+Mn>s&A6bqUniX~zKaT66ODOT`X8HPMM)R%U&Fc)$r+f!<}1qgqh* z%0pcq=VdJr6UO@A)#B(q6^rr)PI>VpdL>@fXpI+kW9DjP0 zr_=pu1y75;5+0u6d{;fw^(CBh<>^gO;QE@L9_8sLv7T1&^aCt7G|SVU{OL%Z-t{M) zg+0hCewwFmD4VF*-g=nECvV_X=Kq+`6i@7+_y}cY%f!P{lCVbc^cq80p{MjNe}9^H zcCLK6pC`6RJgwk~%_&b;@$_cIx}f|%I?=Bw;EaAnGvepum2idv3pST48QS8f%9VU| zb!F1B>KiA#vyB(^e<7-L{!9Gpz)b>2iFyOg1`kO;epQv^|N6S;1osxz028x@c1UJT z0qUj1UP>~~M*lXk-zHizuXqYD{#|1Hyy8LHPH^bIn%JvJ_Iu|4_lf;JSu5gV`NaN^ zAPt9riRo)fx7QN!&&!dyyGthxZ`cpCtJ(V%XF2eZ3Qx^HN6r;4^kyC}Cr?3a#S*H) zyD6)uKgDq(2-FaE7{KGz^r$2-0LyFg?axoy(z+=~gZ{Z!`vRArMB=Z1)RiWI8@^E0 z*x#<&+f|L78#c%SDfinlxFth0g*;F+zp+AHKUdd9xGZ#8%`WpZ0XNj_2A7BKtl6EO z@{m^q=006Bejaj>i9F!wD>Zw?^Zdp0Q1!Cd`1y0udxZ_3#|UbGKqXL$8njGI1lp{g_gS*nhnq5Anx4n5w#6@25LXcR%6t>c-C>^>Sh_yQlge$sx4=W76cFm)Dj5 zF4R)ZzaWR*_E)d`&4h!R zT19_L>~GW|r1_&$kiRGPcc&n4c^0tt?Zo(b%P9zX7}Yz8z2nuqm)LuWucD=OTk0;; z%j&kQE-`way6xjB%j;^3RkUy2_*q^TVv>hdv|ru!^E~@|9;!Z|Zv5=;c__syImq z^l_fQRDV7ZU<=E}0%vryl@uJc~*SttZ7QEW^79a^M)*Kn)M0e&Me zpgd3ycxRyMc2FL{A~?VybI8hm8YL)Eo*jmAgX@Fpc2XU!SwlS(?4?LUfu`0F5DxZ! z(4rqyZX-yeS0P9Q=lbXN4{Zc#v=gKw5jaGUj${l4LHefX5o>9`n%qNJT>O4LX&%TW z2ENA8XQTBNefqw8f#mdw5?;>UbmH`K@?jGvcPeq>gu?td1{6q9i#SPto)agu=auX@ zCr+r%ktu^B{TwGwm)4D+6MYs)0Y5IQ8$W?Kp->lbI>(9ANz{YWi4!OEFz!Izk~`2_ zpX`W+9)5-6xa;8qTH%ZWn!6re%kEUq0;Zkj8uL>f8OTHHr?&-PKxZzDKU3ZuLPyt? z3+vC8-BBs$ctzm-xpH5?tRf=(6@@{g!SHig=|{7L44*%B%s;tqC)crWHq;sguJGF} zuJpmKkf)qFLW?W((1!UVSHb*||1U6qq+|Y7%$zX)sy593LDXW!SG!eKSbmMHv;`N& z6X-*dBnzHaiOGT6Yv^ElK(&MU4;!u_xqiX{h$kWz`I9@n*;9TiPyfAqyCE zn@pNSiV%4t4-MZgQ>UuALzYIz=sRV9RMOotDGHPJ1xkX4q9!UB9 zvI{ED1D=Pff8hZm9`HOg4@P4Yd@#poTBkq1l(|raf&md){)jAzGVeVSF#1U_8q*>O z`YQ#05Jo@d!5>Om{%6a;*BNSfL)Tm=YFAmqpA`v1HT*>Z3JdB~ z!P1%+d?r$77{y;n*@6%n`o#M9yW(faNPk7$uBgwB<|~v&Xyt8%J|vr3A^%&z^VqsE zjAQG2q{r0ln0h)a$wB^(E|YL=(7T!rf*;O~nq11r%tXyYYm~yTF|SuzC0N~ik-g{B zwX|wWt6p|l)s|Id=|G{eJS6Q~B^P%ViC9c>$yZ?twG0SzNU>U>10&Yq0ig)7EL}lv z6kvq8lDL<*NoBOKFQ8tNA}3d8Z-{bNd=$Hzs>az!f3~+Tm~P}f$S>2t7)A8N?YT&U zL+yCq>Yfa#01j1f#C-oxc*G3}iKx3QBx?E{Gelw(fjX#~?TvGkYB(~~Kp@DYyao@H znAbq$%?-H^qo~0{C$?(9>_+^=?R5=?`rr{1)raGCAx2)qiK^kmvIYVm@)P=i7n(x& z%L)pa&o~0wd@~Ame%B_1dH2gRw4glDq81c4V^p%oSQ_108pHyv5DhdeqnC?iL<~l* zVDQwFU8`_vl`xDdeVQ)g5TQL?_hO{o&d0k2;0R?U=^leoIf=n|md_#AW(XnXr9@vm zy9zohG*%&y67x}On|O>)&piNR;5an1J{L9U>Z*`X$^JtBy3}jJGgb)D7<#?$J$dT+ zN9+ce}fVdSw~N)+bMMn zjF;)2Ee;am48wJBQ(_g zCF&D=I4?D;_|I;r>YUiXRask9sbLRcj{NMcM~ajM-lIZdZ@s1JzPmrF<0HN-)aP}q-EmVt)UFe|rLGz(tSiYkFCdHIqS&5a6d zDP+c;k0XOH_2w##^Q&)jS#9O!e17lpn!d#6Lop*WzjucO)#iaKRofjNuTr($Nkzo9 z#ZgQ5czFYNE4(G~Ss{{iF2FFwasZX};E$?+2(9;q+z(W_R7T|K7rLs;D|pav`+Cr+ zY$_`IOI_EcDR{_>VH0#wN7r>d9Ev{%HnvU z*Y)gUPG$1|CRm=7x-G#LA7MC;`W0W_MaHUP1^!jlDcoba(MuHW30-}YQ@AIqwjS4d z6*ThKRqp-cIx$h%N8M@QDb?^)sNw0VJ?%9-Q?+M`8lF`R&z3bjSLG(3Rt?bU=T*b= zp@!d7xqV1|c+qd&Y3`XdznQ+I8eS@E_^s~YY1IIoepxlV9BO!_YOi<=zvGIaq7SdC zhF8lPeqS|y!YH6)wdNsOR}eWCXq;6=s2v-j#7Ey#(GD|TV}Gb}b2S2gudc3sO?c?5 z^k(0@-1MREPhPJYKhg>QN!N#~JKBx3w%u<)aFoKP#PTA){`8_DMX$_a_(B zji0|1Dd5;o>c&slpKztNw%up={^YNsVSlaqw!1jN=sLkSbz`=W>~Fd;Tk62S>y9~X zRNkuETg;B+ioZF(dPi4dYo)yFS>Q|WA$#b~^E?kdSX#5CuDo7WGuE<1hJAElwwhS3 zE3>sx@!PVM!fn~Xr_Zmt=GtswD0x_42kNS8(BN&)w|pu3VC<&Rv^eP*5Ox;6D@I__UoH-644QUK@0b>k=C{uwpL z{WBf+xz@X4XV--LjY8Itb0VqG}E zu+}!POF&-z=S~)(82ed@UF5|srMiY*`*XX!6pf(^Z+>X@jnZq|DQTGbpVsWBHQ%3K zjs@8#y~1k{r?fx6qGne(%&rtNF&?KtSJmt)PrbTk{P67??1PJ#u@(%9BrtAZxb#z*=mLn-BL4tzF~VeAqyet)|&A{CXn{3+J~iO>nx78 zx6S-*EqL5k%hp`f|LLe5Agdl{{ug);aVuI#e0$AqcYM5~&{*7sVJxhMyK8p$2dsvB zYIctoxwlvic5h9auTYUfRU)0j%qe2qNn;+o3K zaJb7)ueAj*?8RajFV$=#d#N18Z)?WSvp$U5KfL8wgoJ3};>$IA*@5x90vBJ!ks#pW?`!t^ z55UDg)a(yli)6q z@17S2#CAabC3F?XF?I03*bek&4~p%e;4^k`YzLDSAvd-|LegQ%Wrw*N#u{4XhsSof zJAEAC#mZHFWNb%pSz<*V*Gi`HU6}d-# z9?N%u?QBOO#vUEp(H=SL`!OdczE2NX<;TQ!OsrLYY;4EI`6@pywwZQZT&(gFV&mrs z=d)olPK@ou(94rzJIO0OITi?K+R1U7`1A6Ix0niT23$-ks~^PngZTY+h9Aa@6&7EX(0eHi#Y<`_hVrI9o$D~SxtJt^PTwoDod z2doaB65A=l$x~zEBV_NcB9^}! ztFV+`o*I;2`}=r8RTrRd)cALmzUrdbF7l;*acma{^uHvg27diGmilX@23`Gikk_@V zzUTU{gF}kyyBr@)ukVW3t_byAsjBQsR_j%PR}k(U0c=i_%+Sf)U&j$j+^? z-RflLw%Bef$jk>wg=+uRA|C4V*5p2?$nkp z+d&wzK3Fasdoa$OT>k|`^8a=SoYiu&1LbjDhHt-|#Ne7PtXmy|BZXCdfP5!gU8giS z_@R#*aNrx&)h}cFrGx*W*!bCCUivWLw1>66chV;Jk=P#b43F|P9qe%Daj-5(O`nME z3IF(HZ2a6G_olzrH^}DWvHjZ7v0*$u6wgV272B^=?c;GeSXTslf1hyNeJZx6e2#+% z_Oz(NF>ZUU6z4Chvmo!-T!K3UG`-sCj7(43;)1|Vl4Ur<;sZ_ud5Fk9iS6U5%M)9kWJ|f=aNorCO}Lw5ak`&A z+J5dQT(*VI+Xr<34wp$W{O0ks^gzO05sC$%F{&hhMKYaAa>!OgW%X(SYsl8ehBWst zHkAh@c2JUS+?yWE6;G;FT&%%T`p}kg5sfk^4Gu}dnhqrK(8LZ+vZJ0LZmmu&AI3)s zlZPjExWn#<#Ex)}%_H?iRR8G2j`mOAPwe~d4SbA0Kvs`U>{$PFT;aBTd}7CV$_bul zFxvdYNaU3~Cni~wNWf8c<6V^|hp$djZac{*h3DfEX9g!H#?N6Zr;2Q!k{CaS_=nKj zA0_r9ccDHNA=O=|Pg8w)O+v-f@fc6+H20)#ePDNbMq+2M9JM=br6XFMNkD+aj`T+8 z5X|3bwl6)`qV{WQSTs%5IvGWrx%awJ^7bJFp zm;FhO4xy$I`6LssMQd(1&T+%qISZ<{8H8dhUi2coGZULJFTFT{oLwy3-c79i zlEg0Y443jX9pog8$3Z@uR}k0DKVF#_KR-!&)2s9iz+Rr%Ra63fG9E8V=A=Jm&!cKD zPtrjpYrleN>P@dE{*{mG9G~!e6T8%^sh=|r0nBPwHjeZ<|E&;IaSlOZ&rYu6-U zs;*7!T3?OV`2(x*XNmpHdwD~#8doHCou}OBd034%B}O8zI_+?LpFJ_)z0zM>4Xb0>R>#BTT1*!sX~ zyo*B<`D$#X1NplXOPbc=Yr#zDwiO&R9_-sOFw1l5a>^Y{nH+?>_=Y{;wdh%})`wgpttADv43{O0` z<~j9~!bdUv12f`sk!^UygmgFH{9l@8}!=K~B~% zrBRJ!8zo+ax$KV80VBUl?wT4u^>alWZK5hS31#siQ`t`5;DGrh2b`2u;#3bQP=e#wz2pb{(;~*n*H@ia5-AYCfiL{TqeLYNloi zdr+QSo+?t>FBH*9<-Q740X9&CP!-nD0u1+t5#U&j_2+fGqTh|vA3`K3aR4QCYt4YH zuSyQIu5jzYRE?2C$;vaBf^=^P1tISoN><`<3J$g*+-lWS!4WpdMuaA35{I(5aAT@U zjHaOZaby)7LqVc>5TxFR$8|L}HWZXP!|7gY3;Bc|DqEfU3%g5@}ky;NM z%T6^uky3s=%~YM=E~6Is9Y$+X1!u)!Q8FtlPJ!&hYf-@(oHAZ340~;xWNWJv;);9T%TTdl6k}1K6;NdgNUzk90RTG6FL9CJ7#f{I zx&V64r0dN9{m4aN0Z$5HG}gwc5kCzds+j|B^e`MhjSPOM)PxWupi1JTw)=0Yt|!AV zp**pzray^|Oc%J|5v~X(7>3T)2G=tM!B9^pv5cr_O-rzMNk0z~2@i!t0S~8I45G>h zmzhNqXA{&-FC98N54Fbvsmr$Ka*x{^?gwxJ1@758N=F)M zL%KB_R>Z|t=M~k6Wd*VE$VuounBJL`pc6zXRhErxCe5uc#LYd8w}Omp6)xt|2WBhR z5n`AiD2B8u+kjNtH2)NFwx7!(R5rKwZ9>^i=E(Cdp!sSlo@*s@jLHa#6gfa=;VesS z%0f6J&AdWl0M7y8j+BV{YK!p(IR*(Uid z&(b)~O~Zb*yKzLH=u=vBp8<}Lj9esLpEqGyW|_dEut-qNPjPnx9$KH~4LFwM(I

;Zc}6#X%YMU=9EUE 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%0A}pRGPmp^Q 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

scWbMRg39M0IvL;yBi1)wi-;I@(adj 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%0Dw+H-8%hgq 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%0AN6$IyoJYXVDI3%c{d>> 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%0D#-{>0R4*`?vMQ=CvqkY=;UyXiOy1oTef}E@5%u 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

ntWqoz(es>~J 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

_t) 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%0Ay&_scAYu|BW*R`nT#-5dVIu3-w_pw=`_-uQf} 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 z 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Ŏ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 aAk+m!6DJ_50 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

srj$4Sone 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


v|0 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 z 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

ZEdfWV+uwcT%;Rjo#HR4UW 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%0DBiJ&&j zaXM^Lc&JN20_rn*+h#)9XcK~X*nDUllm$)2^|(+{(xKvB+pI!D1tsV=+m1vAW`Q|i zE{Fs1UZ!2P$xq9uXTc9X^7jA~3<$fh5>^s1X=| z7Fg%~=`stZ&%vwEY`kM601@6z1ikM%LMXr2mf?M14)!`FR1H*sl(}e=!&daxIT$+| zWMaSMLiyM$c~Cv-Lf9feiWI3*3=)yvlCTvBVT*tR`w0)40R%t-W~0vn^hpGBVcU>W z=RwPmPG>>g&^b^Sv;>p_KF+gZZltJ@vJ#M{;y^r5qOJidkcxDb0!Yauk2{!;bigNR z0AVZy0>CDZEy7QRP|g6--jKH89?Xg_uueJ!mTA5}BFg{IXebIm6yw(=3!ufI5Rftp z-%%34RD4&N2i2zH(oh|gLYo>I1)TykuvK6Vj?V?m@5!xZ7Ki^i;-XNzVFER7?SdAA zQXEsEt^_5pwa`+uYoN^imvFkpNWNPjn6g0*Frl6a?6CDvQVdXCuRWvpM{uMr!PWpRFaYNM%eZAz{~QG96a;E9G!m-8HKL$S)TfdFMo{L# zE&#cp5EOxYphsU)auBo;=xasa1qkX~)RUokP$yUnI|s*Xzz*i4z7Q+|X4EYp8~q&6 zERcwRCqF(8v)FOI-p5VfBfOl9N4oEoC^?qOOTV@Sh^+XAAn;zEFA+0 z!VG_=z|Zl$>p{U6F8C)Gb6J8prh$$*f(Uzp$z20DCD_J z5`GwC2_U5m{x1b3pb+Cr$N17f5o}Tx!S5=JO@=W_fD(2FR1TFw7vs31ckB%K-GFhE zBEi^6F*vY)!8SroKn&XqRbx#Qm>UN^EyVotK`~IF%?VXPi=gQ^o(2kFbD@i{KFJ^- z>*EAL@XKP<8PJ8$1%Q@RP%|J!grp({93&Pt)_We3 zOB$2~3iv%28VujdVJkrn z>Wg~!r;?}p6iHei-@tP@Xd#xU456lHV_9#KrtkVJfs5sEH7UVxaT>xy3OBmok`lm1 zzBHh}eufjslE_i9ig){nWTG^XMJSZ9UD2d$O@| zdU#w1KXPzw4dz#Xc2YPvX6{|7OdPksH(cB=1^3}&&Ka1q3?w4hRhU;H&huB|gENRB zi4XHB0bE2-X>an-B5HWJZYETZ$T5ISph8^@bU*_Hh*BYlg)g!&1`FV!E&_V^B^!~U zhN^%WSj9Xo-#E4)h}>2z})6tpRf@Lo7*Q8)0WaL-A`K zde{=!f#~NC7(jt~08|E50a9e}f3O%Iy5PSO+*<_Y0U-#*x`pBx6MvsTfI1&Y(ccbV zT7d)D01tlU0|CfJU4%XopvQVRv6gA@d0y|Drjw@`c0Ndjt->0}K{#Hr6;LHmW8IUm zE=6SRp@q=-h=C*!L}C#MNeSeDje0(qf>>OP1XK##fVt})dGd<*7#^08d5Bb(^)X_( zreRs818Z-1*q}zZH>cON8n`A5QxC_~g_x2YQ^~=!iZEmrhFl0O1_eNep{g-t4G82H9e5E)Rj5bnSsFPxhNAkmdoQnN8 z8~HRAA!$OJyEhaAboc-Vn~%B45RyTtlj0AJK;o05EfBT$ufMW;`?xSpQbG`7S?H6G<9WaW z+YYS22Are~p&W^R;Xn_68;H+gn-R8|up?k=p*mnfn;4--N*3%;9J4?(&?X@v36#Kz zHBvy;Kn3JL21p6VdTOzbq-dZ9Ai>(|p<-x0&dmjRK!-LF+Hx?TQmnBVVa&$5lTw1Z z3vhbt2CTatNU-)gXc^X03*{pYc)$pIA=aIN5Y;0N<|CXlp_yneLW*64V;md{M|zuz z5KcyXkm8S@st_C!H5wC$U;0=K^9`bLSlm`u))@0-L=2~X5)Ty!5pAL zJrSygT0thrMJ&ui+bocUI&=GPn8UWdOw{wR=1vj=&?2Y{WP^N=0}2rrE>H?`QO^S< zunVBYPzUM-q%XN1G#{D`A52Aj8pUL0=m* z3-ugm6zZf*gAWbx;Y?^2@g*<=6VL+-umdZwfk?zxEc!-3Gf{T{1!71Iv_J#0upTm~ z3ST+ly)<_Dqp{|57ul^37UFkc;gqIk=MXWgxgEqi}?T@x#5D9`n1hC>*DAW!O zfrbMH2m}_ig+WQNBkrs~h*+>dbASV6Abv$?%YtnJq?n-+wAr9yXg1V<*tLQn#8Ch+ z!d{G+wm}y`Ezm5m5Vje*0BVAgl7?7kfpkDh3N!?uSv;=KXZW^btTAy%{=PGnBM4XhtC-BMKb)yg&#ziUnmd&A<$yZ zQJ6*z|ID_ zz>WEpf>_MKKO3(@fRq3cevSlXI97~#JMp}@FgG{Ihg}LS0Wml)AM?%yIe?T|@I@Z% z+0bJ6!GQ4@feW?+F|UW6gBYdYpC}Lm_=xl9UVk~^mqJhgND0B*9Pm#r$Obup2OovO zFU*>%5Aa*feRGk!wTKlR$OMt_Qvr@s@L4d{-VUERG2cMUZyLsI!Wgtz13s=Z6@6pz zI$}UPrNe)r*qf7ao&)EUVUBY#4>S6c5{ohFde<`#;}GEdZ1mH@*9+m>MW6`xDS)pF zK@fb%z&(RNAZ${c@Xb72GYi+W0t;}%H>IEiWa9cMh=Y7wKNNFc0$YUp2tgFaT8Me+ z5D$TPbiUBDLQ7?j>2o2C6Fk$;clTdfV zE(IaAx(gNpFI1)7Ir z4rl?$M||6%HV}y8{-6wNTYx@JFdsu>UR;J-mE@qBk8ZOOT1h~JM_~?>ltkzPAV%A~ z-nN-gCoVq&Iv*r}Le%4+Ob`!*=q~`pXrG4qbTAi?;zAoKvruQ=slyQP-z!7Nx$wBT zK~8UY8=+86$u$2U$jg-9J^Gb0{ zigpItb9>u@U^D-y$9UM;XevbX7XVTs@f48a?yVO?OFKd{hh`a}yr% zA{;V9V^KFkGXW{nP&dHVgC$5?%tPd~c~Uf|qM8C^ut_n)CdC9bf-K;~u|#AzCWu3J zoK1E|@>9yjW?ZJDZxAwz06%HuCF7RJEH>;WIj{||lcKP5z&61)_GXJsyO@o(7ErVX&t>%@gPs07wZ( zTO4u&DGA6Kk*LR_J_Gg)*c7orJcvbo7TQUfj(QA80MTG3j?E-W@(%1M*m1C@!;Xhe zLp=sI^JpvlqnnOA5emXUBnStj1odh<9_|p>(I5gOqfSb6Z@!5|8wFxekAX74R1gJH z(02-yxwj3svN*}lBuEZrB#-FfRV0fN0_tuk0}m$y?Jm@Vp=D?bfChn3;19xp8^?=D zAM_8vpX&=jTL^3^k_0I(oX6a{61VK`<3@rA#t@W95JDhBA1+i54Z*)98UQj-7l0Iy zfp#&J2l#-2;|rl_KnBWiJqeT)4m23Y<v}r9cdyRStS}8jrt5Q4Y1G_0rdxE$UGd>r@)>H!a)Ft!8sw&gx+fg!e*mi z7<2}Xg+fUQf>OOU18PEUiG@xFksuhD(Pja9FcnFHlw8=^APRK{)DDaw6J&urU;tJ? zN+I%1DaZv*kb(1xp`-*LvDkY1<)O_D0?}3k%>gBV6c^MV?Pa7L{R^PkARiRtdM+{+ z*jD7ceDt$`Jdh1?Ko+n8CvX5eu!8BxP`OZ2(t0ykI#hvnHk1XpfCH?+0z#0*!jQ#6 zp%io)bRja_5|ZUmpM!b|$$B@}AclMyNOH^v#C+68hP`Me+&UA>P=XM>3d=q%a4}0yFWr%mA@?q9gEV#la4Tk`jc+O^wi1Ae2=E*kK4= zQk1Cs;}gO>gai{Lf;fzWi?B$*SY#MS0o=gD^rA6^d4P#&gkW5Y83;x8pZADBf{enr zrh){FZ63xn7jTeG;xU$BjDZ12QRAL+%r_s)6_0B%|5yhfbo2?uHA|4R15)wAh3k=` z!B_(@z95VtgnTxL$Gma?^WmN(un;T&3QU7}kQ^?Lhu8jb zC1?WR!GliBFbshgOhymn@FpLgw1FgyloTNoHbyfWBhX^D&SX3g_(!92P@jqsOaWn- z-4xt@Dws_kR9wrAYpD>70$j@um>;}=VI1*wAWG(7rgH%)^KtELv}GZJ!Z4dCT#v$a z=3tC`jBze>HVDHt)wo_El$0EtLrNmXF%QfI6wZynSi-?H*s&l6M1yc#TZi#4hFg?y z%OdDJT(<~5CSS| zBFsSwBtQ&e@nn&bM4pJFo3NHqa}k`v-mNC_n*HVxX~L8kpYO zri7}18fbtP=)e?QV=9OO^FShCg83i`kfMcJfeqLJbMH=!>4!eyIG+?Nxfa?@q)%_# zTJumlJH z8p()`lB#beF+V2e*@>Tyo#=BJTnD7|`CqEg{&_Tg|358#0;%Yj*lE*e%#4fIXmy!- zgVAKpvRG|)M|MtbUcR%Su&CI@Oq#!7;iARKOHxwP(phW{m&X?fMPi9G!)F70NW+2; z2XM1bI0ywZz!n^v1sw|1fc#tRBt`8&JN`hOPYT!tn+|;*1cC?<24;dcaBMbo7|;N+ zO_YI=e)vT;Xe#glhavBQBj6}F2Hpo#aqL-e0`?f_Dd;HZ8R&=LBk(a;h_*Cv4)%HQ zDYyVkXuAl-KZ5l60(uEt248}&z!lI3$F4!IgB#!`xCL&5C>(nZd;@zd^gHNi=w0YN z@B{b}EJ9m4xDWdQ_yzn5%xHTEB`*#=&`018@EAM+acJKFo#^M|^CI*mun|l`eKVB! zpN#)yAVS}5(CvWue;`+l1V102*P;6W@jto$n?Q{74?qusx4}Dr%#o}; z@iSS6e&DJ9iN8rqJoP_b#Qx!X5+fuwNSu(^AaOAtkToFwC+qOk|DT~we9r_KfW!>( zKiLvV91;JM*dcx<>(C!O^*`}9iK(alC)+FWJ&7?ATO`g%Y>~KH0LU5;|C4oi>i^$R zC%#VtGC*RE_#gY>KjLt#-=F^PJITk#7ZCqHgJXlhGpG~)S3rsXtDu9x&)}*5vCsNU zLVYsugY6FzVKV{ozX)0h#Go3e!F^BzYJmnELchb{KZ^h3X#W6^_&*6q{GSGYjeq>N z=6ueg?Gr%!|JV4>!u3h~d=CB|{{=XY`2Q-n2L7Y?{~GOg0Ez!^0g32@xR^A$7d7jB(8}6$@&uizXJXq|F5F$ z@9|IK>aX!n@(qdqw*ZNM9_oBR*6v-@4}rtr|E>Q?{`pt_C-MKU{Qnh>{a5&(Fd+W#i#o|a{h;qd|1}@3f{5Af$sQ-%dNzTE4vgDuQpX9djxc^`Me-U-! z|BX0r4wQ_Y#Q#=6)&f89`ecHq{wIEZ>VL9!mvBDu|6cT;3nlkHj<)@%lV?Z;^nk3} zmuM&JLi{fPhtcOf@YMhDXd`Pt{Qorn6Q7a%GY)zNO7`Euu%G&WG3=-L=c)fm{7cY| zzsUEG{6p4)u_!=PdBl|0Mp&yGQ^q0OEfV|4;M()A%RvIK=Yy6XU zi9lckDS*U(D)0e^Ate5f0OJ2+faITl_x>4|3!ej_mKCZ2RQGq?>{8}lXsxM?!V-{ z)B>LRzYh)1KJW!JKnMLme=q{zyQG@1cZVx5Dp?hB$xuGf+#?NXb=Np!89-(%m6b%9Eb-A zU>2AS=770i9!LaCkOby~1z;gq1Qvs2umq%lRFDSJ0SmCfD1ZEw8z>L(fdB}B2#A3M zNI?dW0XZOXt%Rz;2K>x>4nNuU*@z!;i9vt1AMr4=@jNPh$M?fGMPk_}qnQ+cXaEQV zL4W~*K?n#1VIUktfJiU}Oa)PZ0?{A_#DZyHI+y`wf;bQl5^&cIpW?15iKsC_5||Gb zfQ4WYSPYWE5|9E?K^jO0EWidFzy&;V#S6IN@4g!_i7|eN3P3XMcIc~MGwi2NJbB}D z`Tmb@d}#W|PmWLDIG$$Q8uY6LO99Eab!<3IDp{dC9MhyKL>WXB_K+$8(|k3VrT*IXizJlYRGw$rg~flt6W za2|XLE`ZO#MesTJ0$c)@!I$7Ga0Ofi*T8jf1Kb3+z-{m~xC6cc-_r31*Dm9(m--FH zZHE9-Hh>qvi{K^juYB;I{i)+$`QYhK9S3m_5`*u6cflcW82m@O&T+K=yIr5WiTr)n z|NE}<_g(+#Tg=~g{TsO7O>hg`2491Jx9gKPnZNJ)f8TZfzUx1I3-aRnK8(JMXBk5o zBN$^C6Bt2^NX9hAY(@p6hEd08WHd8c7_E#phF{dNXwTCav@x`?v~jfYvrI&lDdI zJ=jl9m(i86LUIy^7AKSJMUb8oH2POBd0X(lh9fy@Mu9 z^ce{zfl$D#xPfQv`+>v$O&RJ#4JC!5uo>Zh!~gF>p@|ww(f(yY2b?(IUlwxNq2B+^ z3wbo~X!-O7BwgbL!3SB)ryuAK27rO!e>Tl$aC{JW7CZ+AgCXF5cFuq0vH!pC|6e(m z|Gw7$ULH^fX@aytx}eM;eUKr@7-R}E2W16Wf~-NdAbXG_C_5-8C^slCNbRrj*ZS-H zGyV1c27jZ!$=~dc7unbmu>rB^v14LGVtr$0#ByWBvCqW@#|Fkm#HPf~id_@CHg;X? zirA*uqp>f<;+GM=N79>J5<8KaOpWqC6YKB4F=kWD=9n!pTVtYQVq)TB%3|HIrLnvK zO+ZAz)PP~w%Qgl01xyZjH(+`|SU`9Hei`mAuJLe?r))xfa$8;N<(d=h1KH7r4@|$e zJ~Av+g|e=({$TmAecADB5xbS`VXtPdWS?OtasoJB_9V_CPBtfrvy$_GbCHw6&E&4- zzQg^VJCe7Cx0!c{cZui2@6Qk7=knY5yZK-82luQIcmyvCyn>}dsaP-GF8)A#Ts)*_ zXwN#yZpk1iUn-L-q&n$F>045f?2s(Vc~SPgY?6Gl{4Mz}@(=}IF{~#^VN>i^ys7wD z;jfyeGOFHCeWg;UYtw!6B zipTVf?HSjzvUq$?ckx-**RBaY-?`S6OzcT^%iV9dH@Gjjd1Z^sUnrl{)2CWnU0!{> z`q%2@n!PprT4}ANc5=_ITE8Cup8j>e)D8E{^b~uxc;4|`@dWhz>ftw(H~iT6pmF%} zg5`ldAFT-LVe}ZAziJNd8QBuj@`8+cvhn z-}Y78!?x&^3s)wuY+ZHv_pqL|?XR}ScFgLS-;v(I?%;L^JH(y(&hVayo{+A{o^@TU z)t|4vyxQ5F+uhXtTK9o&pEcQQEo-Orj9qtj9rhcaZ2uhpT>m`(e1E5Zfq$WYk$B%s}7jpo#ZtH7y~8+ObbW~P7L1V6XO@_=j(sVOY^>nACu``UvEF} zGhRRM7N35>^x#vBj~E{^jx*k8yujGN*u&V(c$;yMG0Sf_)#~5u-{Rlq|2*Zx-1!Le z8#*9hP{7iFWdT(I)!6pJutHo zFCZ(xf{k-dz(j1C5do3tweAn}8WQ18`8k4Z!CAq6e*S*@e3<)4bKf5rKFkZm8Zp#6 z%sbrsymy3mq<55ew0DemtQY@E2st**-y7f!^agnu-e7NtH`E*E4fjTPBfV3+Q@v4M z${X#C@y2?md8d14cxQU!yz$-yoV))qIhW~8^3L}z@GkT&@-Fr!dzW}qys6$aZ@QP| zWqUbZu9xTKdj(#hSL79YC0?mF1Lr;<=Wg!9q>`xl)BFNlv+mBQT3FEYM>ga z<$b~_;coBq0`(&G619=qL~W+FP+O^&saL3N)OKnIwUc_4+C{xa z?WXond#Tr{ebgJ&e(Fu?E$RSukb0YXhkBPfL>;EyqmEEVsbkdp)N$$q>I8L?Iz^qP z&QKpxA5kAuXQ@x9bJTh2Q|bcs8Fi8Roce;gL|vx7q`soAP*I3cZ=^{ycaQI0-`9Qj z`M%-1-}g=5w|o!y9`t?N_Z{DNeGmB__C4Zz)c2V0`@YA0Kk&sjHs;nUoR>tt1q{bm z0P;1U4}RVs{ZC&5o_-4m!k2cYttw6NtnYfvNabfIt6TO|C?~O2puM1oO7nU@u#CYcmI?U067-J` zEPWWhj3JEY8RHqF8G(#gMg(IPBbDLDh+>2?W-{h6CNd}ngAvC_!XtFF372_g>KfK4 zp>M{#_Ctd4no!-Z(tu`X&4g->>lO7i9m9TCZ>ZT^^-Fh~DMb8&K1bUv`&e4C^g*ZA z{f>J@_bBc9(l_erWv?p->N*U`rsJ!Ycd(7OSkJK2*=yNLI6sSKO3zFCWDJyFQ4i5% zYo0gI&2MG1o!QPu#XHu{N=;h<8^UZvLUjhxL=>MSEOx zj4QOdp(<((lbg+dTX0QqRrE+YQuTA^cea}qQ);#C+3g$JA9V~8+~+ToeU$xn`Fl-w z+8uoP+P7T8SZzgrR0i9}h-kuzmT|SS*4&c5%s1FB=QpiN61A{Wn}2R+S3lczjlWMw z$#PVFhWiGZDb9M|8fKH_e^9`3P3!!rN>-=#+-==$+vYr3aI9;yx=({=`R-LK%sco? zxx?}FE|Bh({i+OAzpQ(pd)GR`u_Aj!jx^`f9Q@v8SwYp=s*YN9v#fReTC?P!KEujz z{?45$)k`Z>msJO~J^Jvh5X)XmL*C(XQGMjv!E2AMdqLiAEvcq)Q|0?K?^hO>G`Uh% z54(tOR)^WyuKOK>Sflv&SVHz3_6zJh_6FV${DGn&(!&}1WY=V8i>1wCcj@AF9t)8i*=;cFG8Njg zv(ubQ3!LsvRlhH5Shb>kZR1becX*?udjxxAqZB4hmHAcM@}g5U;<{YVmbU$?t+uUQ zpD%q$>@|M4bZ~1mZ<&ZDIH$a(eKT{mDb94jlAHHdk;S#T{*!vka^I%A%`dH5*>3JI z$o9zH=JZZhXSdF;BqFOkYoF=4H7Z9gZ>=y}{k?XUt-t-OT~;%+enHa+R{WY@`QyzA zSv4KuCOP+rYj@4%mc}-jD0FRriC!IDv#E3d?^xCC{4!QGdjt0q*)zP0ysvqW6sv{d zlH1ZoS*PrhELT~qd`Uf7qtm>jxunzT&l>rr9@AV4-y*gKI652)9lP?!IBygTD)hQu zDDf}-#yz9_$MUrmhN^Ydd+JYnwl&r?b62*lYFYK-Dt-I8j?k_#RdK8c!G8H^#mjkV z1+xoZmVZ}1X!+sxVV#0bNoODSV0I3FjnE|O5igbwlpU2d%b!)2DNn2J=@N{e>96Z2 z8&8>znp9bo@|b0`)om?zCKu~uJ}w{k+p4DeF`m7Rh09N`nAmi^bMWff-4!f1$A{Y{ zT_cOqR%pM^Ot5UoZE-Fxe!2Y7vV)%NhV8nO)f+kn3Va3IgaVT!E87!N>Sk|XpXDs({_4u%{>l~b z{rTnm@A%t=)sk!SnW_|3l$xWqsVD2C`qZq$*7tJn=KfIlu!3GWpo&%dTl2LxZ-=-m zWA%@$FS%3Xl?IzRQU0^RX|B)Xm?}$;ac=S!i=QZh+cxS0Epsf>@+*tqE>0~u>3*~7 zbai>1sy@EqY}476$%2Yj1#1T97C(XiS#EpYH-)#WUS08i*9TpnbQN;PX_QNM30<;kgQuPPmF$}Z!YtZhH@#tXL9KJVFB zerCnBW&^*jj#>O3`yI|O-U2RPI7R$zUW1q`)v9V#PIZCCsCiklTbGb&)jJGHrswSj z=N#9g(lmFMJGIPGKDaui`pnV+9-YU~@OZ_z&Zf2dt3GVH)4hy0SzDcX$kEl#G_`R2 zEH10Sk?-QT6YBy!1B}12;yJ+_J*Si#$J6n)2#1L2lG7PI%H5iWn)}*Z-2`)3mOFQQ z?$o>yMUJ9k_p^mBS2Wa*ZMfd}$qHSwv(42m?0kN8(YpEE_53~j5@oPzyuI08llLTV zzI$eskEh4OX=kwpac=TU1wEp((oES;ifzgeRh)LA{#B#M{&DWf(!F&rR9vh0v6{7X zndi>(nXSj$jh)Z0U&(4^J;zSwFA>ZYL}fIpUQn%9Z!xXN%E+%QTIbp5DQswNQL;{S zZ)BCSUuBQwjN&ZeTDj|aZ}Oh-R`YN0hY1D?>V;hKi(kaeZ2Y6~WV5p+r*&S@AFUf#rMJ^NySgr} zp0!rS+s6BiKS1!QY%>CJVi+*!O7!DCUPtFT4A_LFrB@&-DxD~CBBtG-Zg zU41F{U{j{WxAP?HM^UEu9Z5!pNqt;1#L&+WZ+gx2o9$C)g4tj42P)ZI+cgf7EbnOeeIi@_z0J}T; zcuPg@$fDpPTk#4#<-S~fxNcxmcY7u;RLn7EmA}xqmzyLGZ%>eT%zG<#3kECx5U(og zSu1C!@EQbjGeZp{jK3IbT%wWycT}6)w4*z|WGvsqoyof*`&GL$^LFMG<6D-OYtObf z7hLF0)AeiH*8Oe)&oGeH$$5{TBfq0=&D7~trrS9u^8%e6B~@jsmR2`hYAk9Q+O=K3 z&Cp=^ly#n!z%FMe@E-Di=HC!r5`8B*B|RbaN;$H0d0%CO@-x*$b$?xyUM_o8|F-^) zeyve!DX|Q(F3ej}e7N{w=~#D!`^AdBmG>*#>y;j}$KYx7-18i7yxe%Y{f|zErGYh@ zy&S*qESB}ik~MvFNd|w*DfD zEY<~noh(%wZS+{a$-SC4)n%!CX*sW@y=yr4Gk%u9E34DRXKi=;bbKNDkZ%%n$fD(6 zDekfRXr5?eY=??Z6(_mV%RVW;TRFL^xn@yaZhdn@{)(uk=;qWGYs>rXYg!Jm*zAQ| zCcjNJSbN^cv<|ZC@`B6Gv{bjA=Z}@XD?4jb6i+SdE-jO+&*|av>wauH$$lhf7`7MQ za80Q4cD>JiMfJVjVXn8_x3$|d9Zw2IxUVUk&C6Q)b>8MqF|dD13jvr4GG*_zq@24^z&OP(KpG5>r19l;`Dv~aY@Bz;FZJL7d( zKlu>(F!?xnjnbpMs?1iEYiqQZw2it#U4O%~hAD;uLz(eK)8wq_SqH6kwt;queRfW8 zjxp!BvrnO-s86xJ_{ZX_u3;rxO5@$_6&I=-YL?V0>h9M~_RRJOJb4~X<5!IvTMVsb zZDUrhY47ZKhBbgSi6v%raI<+Iil<3VO9EtZ%46y$nHr}%}T+5Lrn8DGl2ksVR7G*P-; z`c%U`Q@6Ru_LD8v`KEJnp|bdPajg4B<*QY%)V@-m;MumKyD6sm%a;BfZ?O)ue0fgE z_mV;Kan3n%R^>CEV@vQX7yxi3L8qVmS@)` zH49pXwvB0PYFFkTUEN<{R%Gj6G;UpfsokzyVjOEeRz14&Q2Ud*8iyKKyo$S0+@J^|y;z!Bjy7KxBo;J@Z z&&1}|7G8(6qh3GQ)vxkE`xND6^*HS&{Rl&|@qS^tE4_4X*)x^f8#9+*TdrF1a#4TY z=h{uWq|8q36i>D5P|0@Bx9tV)XRDSh`<#``ozGYEUy}8ekCK0>2-Ysv?#g`LG|hCv zy3jV-cFrhwuyWivr}X8n9VK75Q_8lMyDG<5#aC^vwR=8n{AGDjb7Aw2)|S@lRXe-W zc{Rc~$BY~kx3*YVwx{yL(lilQvQ_?y?up^CA;bK6Zj*C`b8xY!_)2j{sh@j+yZ_Q@ zo>}dhX211cbDX@>{OkOIoL7YRBy8!N+y+^ud?Npb`o3DOtJcla9nhW0{6_z~;fCUj z`LTJV<5o^R>l^38f;QKc(vRG0+?t9d)skv!&B2;Swa4nRm-lJ5HFva4=or5GBTk28 zh2~u4^x6T-{hE)k^Er!od3=X@iB4sVwC`Cyx%o4;Qhu`WBmHVOkKbNbz&)aq$SksF zITtZ~wCX||Q?nJXMA*(Ci@&DS0_POlQ06Wfn=g|6na`$?Y2hE}{Lk5bmE z{M4zMX)*l=J`J+8?D-S!Kc;c$R=005dE&m(-BDSD;S5uZWy7IB&Ti3fy zUzlb#KFm#CGbd}8C!QtY_Y)b!$Fwi%ZtGc=Yc`pENA}&qA6&1L9B|L6c)#M*(p4T= z+YQli$z0VAeY>F|>vhXa=W$OE=T;#l9TT_8!%xOLR?E`Dx>+7p%l+1myGCaPXNTu~ zT_vu0wXqLt5%(0gLHLVolrmOXsT`r2uCl21s(#iC)4gbzXtX z{R4YV!T1t$^Vzny>^}?MRBg;mZ@SyGptXo=k%UQw@($%ATT|Ht z=fTG7D`cH-W=~|lYkAEd?!L{`QiBE7f-!M>IcfPH$rr zB^15F+pL@{&X*2X59efXw{y>MeRxBK0*OQ-madZhDsNC6RIk!b$;>g%Hyt!xF@08W z(dMvs+Z@>+yX|f)2D_zsfDe_;}d{=c$wxnfJc9F;-Kdv_D8?70Q%;x7ixq{<{=US7c zFE!V4(^=ngyJ`nFNU~kJ)HbboZx^ks&?)At%~w|3XjfPpS+nIsRo^uA<)3Y=uP9#X zRo>F)vGm+3={)(pjz=ty^o(k`=bB?zv9|bYSx!wv-fKDe%3o9^y49ISaym=rv;I(~ zvM!5X6uqoI;&{&exFWXl-OAlf9rYWRK2UhHJ2IEm7aFfy=h|lEPb*rK;Vj=#wY}>; z`-t*OZL3bKcNmWpq~)Hjc&j3;DZS-6&hO&Zj9OEkIWy;R?i-CiORhF%wU2EsUv{(j z>%y>_D7K!L!9Sz@$avD~E?8Nzs&qzGP3?D0UmE-z{c^{bZL2=qwRzoR?rSBvMf*#Z zRV0_($?xrR4p@Jv`o(*Sh%8m*7}pi(XM!YgY)icgKBN%Pt~0jvsK4bTIZsY z+091Nchc^Rq3*JR$cA6oS*o#FGp&6c*Yi!qraGagxbceeBi%9QC&iytg|_|Nx~Ast z(kW{W3#_U}z1%i3drRZF##xalT~}CxsRN0-rDJ^5!Vi3J9sav z7Al`JHWe3F_OD-B|BG$3N~qm${fK4GZSC&In?U8KM*tO$w?9%$uuS&;JED;rKDPr(86%MOiTEgZGlrGLa zUUJ9%R@3>W^yYWjCwO5QeN;O-zGRQC`nJ_qEYz7T5zfnXBbt(2S9om_q2?LwPQw|? zywY!~133@bbp9eiv}B2Nt?Wnn5ArZYyYe-yQ8!orrhbs|Q|mSB@7Xa$5oKRh?5TRT z=KGqy%ZAs7dr}%VH-FOlxbyxR>smJJ1=ezoh?gSXDxIUesQO$rPrKJJ-uSWc6H_bK z-~CF()=Hm-#>RIW%UWaF{REMnqxqk5#j##}?;BG>JfBfJ-^OD#TkOQ{p$JA%@k)4=vvaJ~s=MYbsY6U+I2glp0CXlgc}!j-&d?E*)D%yHep$c{cOz$*MQ0{>GINH zR=>i}c>z-Y998b6!jKNl+Ck>>j4>ITxX%gPg29F>1-~_Qwmw+%tyGbF%%09YVS3m7 zy<6My*1Doh|E#{%HBy!Al4X3}&jq{Pqbs^FowdRLHqmbR>PS0h`v zPd&(8v8oSW#oEW6AWg`fQSo65Lv_8dhF`3rxwqHGdX}#cb=)`ZtmUs9s2QMn)5xpZM5^~w$+~d4c{7o{qa)Y``b3r%I_=VAEZ?w(Go0%8w!}Sf@9>Rz17(xAyTijeAZ_ zR!a`c$>%6&mhT*AYNssSQXj?}BGAiO#;vA)`PKQ?ogdX*t2^Cty}hWtLA5OJl#5lf zL8o`t^O&|Z_JR3Qr=_U1bZPr#*YfrI*mlh^y?p6X)=t(J9Dmkn?mbzTzS4BiHaRb; zU`OEu*VmIGy|s<0;$6IkEY7D#M#zY8S6rzfPUclyupm z+{(_ItQqVE_8Z*ScyB2tsCVbhESj%#V@b~3(g$uw#l4!q=E$}rfus9eR(DbF-W}H;gRHKch=9T6w+YpB~ z_mAAWC4DN&DpHqy*lgprt*a?+sEBF1;F-c{6y$iaEJqvrSDsaGF#f!@i`B^*y2j!; zTx+WJF_+mpiiDN;Wd065ng22ES=CV1NLDy2nl*zpn>CM>#1gS2EPSV8SsFd8;Z@J6 zReaJe)I?8&V^&aap)>o{%tShYFSOeJ^Y>F*oE7)T8Vs-($ zj@`uWWS6kb>}+-m+reJSZfB3-o@ZZSf5^VbzQjJu{(}86`zHGqdmJZ}GlCP&VQ}c2 z3G83l{+uvQBvYB_s3yE!K~CpmjK z?{O}0zT({C+~wTh+~fSt`Gqr(+lSkiJBmA!JAylo>(5Q#&g9PK&f?DFCUSY)G_HWF zBX=|RMefVoSGe1_d$_N0cXM}fU+2Ef zJ;pu3y~MrB6)ydTdzbqo_ZRLHE{!*cH-a~q7s3nYP36V%;(2V|0$wUFji=-Zcv-xB zo|%`&E9bd+%Xuq#t-Ksw9j}GAwP{P!cHR!&LEh`U!@M)R&v;+)Zt!mN?si_~-RJ$n zd&v8p*N;DdALo3IKa@X&KaxL=AIOj5NAqL(ar{L7BK|`DXx0*bI{yM!$v5-u{4vrJ zej&e#-_GB_-^|~{-^t&_-^V|~A71)-`xX8lhI={p_;>hs`91tTf;oajL8M@cV76eY zV1^(}Fj2q~Gzpx76#|tYM^Grp7PJaV1Qmh;L5-kUuvBnd@SEH1@{DZ1wDf6f_Pz~P$x_iP8G_93xy(~SQsaa6)J>X z!V2N50*`RLutZoU>=dpO?i7{^tA#HMmkGBDzYrc1UJ)J@UKZXIo)?Y~{U#hGdLn!* z954D^$P#fxS8}F_W{6@$aUzQ-Qxqk#in2sYMHM2CXoF~_s7bU*v{STCv{&?==%DDZ z=!oc$=mXJ*qO+oNqR&M4M8AuC#9k3iJWxD9JV^YU_<8Xd@hI_e;RJE8c&0c`%o5KM zCyLo(v-ps>POK4^i|fU0;tk?G;*H{0#Jj{t#P5sGi$4*c6F(!lAig0UBpEB2D9M%h zOSF z$q$kq$?uX!l0PJmC4HsONQX+tOE;Ss(n#qPX^b>ZI#>FMODN??S<(!tM5>jlrADb$ zYL*sBE2V3tO7=GPOVZua_oa8Fm!-?4pG&{MZxc_>7?v?1V_?R(jKmCU#*&Qb88b4p z8Ce;tGY)3FlW{8Jy^OarZe)CxaXaIij0+h(8ILlal?{@OlEuhA&Ip&ykj<6Nmo1bf z%D6J2EJG%f>1AeFwk%KPloiS9^e$P2tXj5NwqJHcc3gHsc3$?e?56Ct?7HkL*)7?3 zvL9u?%I?eP^8WGx^5^8w%l+g5@=$r4JYLR}FOsw5d^tzXmgmTAcw5n|ctdeeaYAuMaZd4x;)3Fm z;ycC9ieD6il;f0RmBW*%7g35l^c|Y zmG3D(P=2iZNO?hdL;0oh3*{x{b>%hX9pyL5@0C9(?<;>)K2SbXK2iFr2C5V)xoVJV zm}-QpVNWvX?mE>)*$ zgKDd4hw7l}g6fg#rs|>UC)Jm#J!-GYU#(V;RS#9;kL{?V)#KG8)e-7o^$>M}Iz!D= zXQ>O-Ds_r_kvd(iQ_ojts*}`KwM8veSE`q*zgAbPSF3B(-RgFAhq_h0Mctsjrrxi< zsy?UQtNu~-w)%bb>*|Z@bj?UjKh3Y|-_$;u2kIWRuf|{VNd1%gIn7|rV$EDls3t^{ zqM4_et%=l3)6CH%X%=YmG=&<8MykosSTy+>heof-(Wo>E4PWEbbZOc(%QV|HD>bV% z9!-m8n`WoxwC1GdgyuKR2bv?A_cd>6PHBqE&uDIIZfJhh^k^Pvyqd?FKQvD?KH34= zf!gP^&uT|#$7?5P{k7rRsai@Kqm9)vwJfbttJBJ~YOP6Is;$!2Ys<8)+BR*w_Pn-Q zyHfj^_N?}R_9LxV`@Z&k<_Fr#+SA&T+V`}_wcXki+Gln5v_EM>bbWOLbU$c+(QE0K)O4rK%|DKmm=hFAnU(gTIkJJC5pQK-+f1w|x zw`PoB)Mm6`^kR%;bYiw)^kFn%uo+^8ic!Ys$4oNfjAe{f3=d;3;}+u*;~3)vV-Mp7 z<1phr;~Ar#?E&K2%#s|g^Mh)g~Mq6e_W-Vq9W_M|-92lEK?IP(zmDDw>S67x3mCi4OF zA@e;`#;(sQV*O;w*`=(JtP!k^EGTO_YYuA)i^L+b7%Vo6!y>b2ED6ib@~}cIFU!Ho zunMe0tX-^=to^LLtfQ=*tZS@WtOu+~tf#COtaq%>tgoyl?AGiOb}x2s_UQB=_9XU5 z_7wJL_9*sDHi=DP#(|$?40P%vr!0#wp`$;q>R=ICPGhW9C$G!kl%S1gF3O zICjo@-Y$-UvyHQmvzya|8|0Wc5bh~XUG5D|H*PQPLrz2PS zA8<$Uo%4Y6meYsZkK3Nxo!garoTKHcxfNUum(N9VOi)+@?LT4^P2Mx@w)R`@TT(`@?^Y`JPmIakH*9CSiIT1(Y$WF z2rtN6$aC-(^Oo?^yf&^qyd%8Byq&x)ytTZ0yoo{MGz5 z{0;og{7w8V{2lzg{Nw!7{LB3N{MY>T?1%SXL;0WY`m>?oJDtIrrEZ8TwE;uH*D_AesB-k(5Ex0XsE4V3mDd;R*;2A0G zFPtD8Eo>(&6%H3R7d8~qg>fN6h!<*wIAKVb6h0O^h2Mp(MD<16geQbgg*%1Eg|CJ8 zglB}$g_nfKgg=Bgg^z_-g)fC~gabt)(I8PfkxWDuO%!z(@kRYbD$xQ_XVEm#SW%g% zhv=`UlW4TaCR#1Zh)#-jh%Srvi8hFiiZ+X`h^~slqGh7PqAJl8aWnCJ$!pO!(I3$y z@dwdR@mtX_@fp!XaSQQRkxQ%-Ys6NuMJyH*#2>{%u}y3cW5pqHRD4*>5^oVN5ib%i z74H%s7q1rI7he^>7GDwH5Wg3{5#JWqlQfY05I2)RBuylL#2qBmz z$uJ3ALYHJEG06tWd&yeKPRSO@ddYpsX~|v5O-ViJZ%IdKJ1J9&l6s^pDNQqNn1Ue3)Xa0;QOwAS-Z+DT)dOS0Pc*6+DGXVN&=Nm5LRL zQ;PG7D~k8>2a10b&lE2dZxkOC?-cJ9-xOaJ#mXXOEoDPxV`U>{D`g91iL#e+fO5QY zx^jVXu5yl&pq#11E4fOBlC9(`g-VT5rF1FXN`=y=^eS!2gfgcrD3>XhC=V;QD32(& zDfcOND)%ZkDbFfTDK9B+D*sX5Q~pu@RsK>!RPU5OlpmBIl?_ylRP|JyRlQYRR9#iw zR6SH9R6|tbRI^mGRWnr;Dy)jCqNzA4u8OB(s{|^EN~Th&G%AD2qOz+zD!(eEN~z+i ztSYD4sM@O9soJI5tvakatGcGTq`IeisCuG$rh2Iw?E0yytFEIiR`*r+P?xBCs(YzB zs7I+st7ob4YL1$(Ca9Tev)ZKAszYkOI;vi%u2gSSZ&&Y9A5iaA?^EwlpHQDwUsvB! z-%80(W>8G8c3277>m&TyUX#$!hnr)iZnhlzZn&X<&nk$<9n!TE1 znp2wBnrE6@n%|mFnmXF%+Gg5z+5y`B+R0jq7NaF=@miF&T&vTXwLWb@yFxp!YPEK~ zc8hkGcDMGV_Nw-o_OePbq{rq zbWe5v>fY&U>YM26>uc+W>)Yzv=}Yvb`ab%RdYE3PFV-*6H_*@5&(JINOua(S)=TtK zy+AM07xWo@l|HD?>vMX)KBf=riTbSmwEmF(jQ+fStNytDuKtC-nW3fOss4$cVyI!L zV`yRcsQ;>OV`yafqVI0#ZRls{Y#3$eZMb~Ls!);G>D&NB`&4l_b+pIC$ z%q}x{HpT2V2h0g`rMY0vnU|P1m^Yhunb(`Qn|GR}{$u9j=2PaY<}2oh=BMTt=8xv@ z<~y0%mSRf-OLI$GOFK(POIJ%D%OuM<%UsJ$3&Mi6;4Nee&BC$BEi#M5qOxc$MvK|v zu(&Kv3t)*`a+YwL?gSD@C8X{%+cW206ZyRkJZkuew z*|0XE4R0gc7&e-XW8>NQwm~+jO>NWIOtzpcW?N&cvhA_0wLP@`W4mv=Wcy_MX!~J{ z+l%Z!ZQpJ8Y_;uoZ1wCnZKd`R_SW`c_M!I4_Az#teTIFoy}!MUy{+A8&)HYotL%&I zDSLN&$nLiL><0TbyWFm{FSL8@EA5}`EgY}x=j^}jMUETx2987aul72Q2lfy4MviWd zE{=Wn(T>{ApLU_6pJTiO?{qlS4!&cZL*%eIxQ>~Q0S>W4>nL@ca?l*R90wd#j+>6N zjy;ZBjth=Mj^mDNjzx~H&cBXNjyBG=&H>KO&Q{Kr&R>qnPP!B8ob8hw8RI)%=J6L7wCx}ABa+G%n|oF|>To#&mqoEMx|op+s2oOhhxo%LNUTn$`* zoIjkkUEN&mT|-=xTnk*NGNg;_V!NcSxNC`Pm20)j?+UoKyEeFvx{kXxx=y;fd)BzF zxbC@LxL&*NyKcMQx|+LdyX(4ZxQpCBUCrF}+>PAdUG?1~+>_j++~eFm-F@Bd-4r+3 zt#QwHm$?;gjGN;YxpD4tH{H#1*YYfOSGjHO4erzKeeQ$q3+`*FHSVMCE$$QU7J<`ga_v#d1xNK z$LcY8Dm_Y%(X-7X^VmFTPt3F4ll3h21U*YV8$Aa+n>JO z`9Aud`5yb;`&#-R_#XMb`tJE|`x^S|_}lv*`da&&`rG)s_=o$~qU|(Q!U`t?qV0)lCa47IN@K4}Y;CJ9h z;AfyXSSwgRSSQ#d*eKXESXR{{cs9^7*gD7#3WL(1JZKGOgNK9rgS&(0gSUd$f@gxa zgQtTpgRg@3gZ~771?z_Dh5iORg-SwAL!CoYL#3f1p%J0Ep;@6hq4^W6EETZNm4+l5<%JBB-lJA@mCdxeLG$A!m)XN0GQCx+*T=Y(g5%fgs& zMVJ<*hZ*5~xGKCPye_;Uyd!)o{3QG+{4)GD?2dd2*NS`({|GmWw2E|%G>Vi&T1Og0 zdPhb^N+V+;-@?!cECP=pB8?++A`>I%2sT2Ba3bP}DzY*qi`XK@h&5t~_#)m&II=Rb zA+jm5E%GSxI5L}dJ5n>+JlZZgEIK4QH;Rs8qx2{<%8kmSvZz1mjoPA%qidoYqN}6Z zqFbZ8qX(mhq9>!LqZgvrqW7Z@qqn2KqMxH*q9w7v(U!3Ru~xBWF;WZ@n-QB6W5j01 zlCep#c`;ZlA4|pJF(8JIosaE`?TEdIHHrU-O^*+Xw~Kd+w~u#^kByhc$Hgn+l(-=- zilgHj<7?yV;)(dK__g@;`1AOa_>K6H_}%!0cy;`7ynUi&qD7)8Q76$fF*4CVQJUzQ z7@L@qKqRIo2nkApmLMf~iM}yOLYYt}j0t?gkT4~z33I}hbSHhuL^74kB(uqd$(6|! z$#u!S$vw$k$^FSw$uHs~$+O8b$*ajL$!p0w$%n}&$w$eqsXnPesllnKsre~rYFePzVrqt%t#?;o-_SDYQuGG2I>D0;8+0+8>om8Xr z)ztS?ak_T8Zn{Ofak^Q$NxF5qUAjlQUwTM-OnO3kVtRUdW_osdYI;t(B27s%(yTNm zeF?!&OVir4Gi^v))4H@P?N5i(k#s)2GQB*#B)uiQHGL#~JYAhWoxYR)Hw~@&kiM_` zlKz}-l4+P3o#~P3ni-XukeQi*X69x18F5CEk!BPbd1iHHLuONEd**27NalFvMdlT_ zVW^jFo^6?Jo9&wIlr72j$acvN$PUU*$WF{o&Cbcr$ilMovhXY-J3oucrn8ysvh2F- z`t089{p{`R-RzC*#q7V?H`({u580pDZ&^sLNv>AzQMO&Ke{NK6Ms8|ua&B5~Vh)vC zkR#+UIdYDcW9Aq+ZjPVh<<{jk=Jw_e=FaCX<}T;19&4I1gL|E&=}lkATO(72qK-Hva*554;0f5u`shRyFe_E3XB5004v}MvVynZF03ht3%WwCu(YtM zu(@!waHz1Su(PncaJ+E7aJX=@aJlfU@U-x6;cek}p?zhC%92WDrMA*oX|42B`YQvK zvC3p+w6ajSta4T5&dSx5>nf?~GnMBm&sSckyi$3m@?PcL$_JHCDxX)rt^8E^rSfa# z_sXA@zbb!M)~TvnwL{gas%zDNs)MB{4sw!EP zuUc3&7<+547J8UH!f}hE>uqa{{J0_;__l-F{&7RhER+x#uej>3B?t~;3GNkj)i~0J31f# zPuJ=Nf(XOFpDB<@;P1JR8~+)OEXX}DM)u!rPeBChU5(z5p^)K_(U7T-$&fjad5~`) z^LQWRzW#urQ_HCu4c0>rf$YjrkX)$=ISZ))DTW*a!LQnox{!vD6Ckl!Ml!-5=b{l7f27tSrFbl52APH!J%G1$RJ1`$OyS3z123qeEhkO~L|LV_?LG{`NGV!Hz}v;xRwhy=oe$RHvJ z2XY;98*&qJ6{3LL1zAcJL<=!OKw54}#`fRaepurH=(9Wmb-Z(+E?f)p1a!jcKLWleS1-DuY3pt8YbL&{3aCYMbqn_f1n3|@vWt0<$Famu)5iZW%Hw#-}>EK8N8 z%L-*1%663FPP z3*86Z4?PGy1U&{l4y}fsgr0_;0hjsbp_ia{pbwyrpzoj`pueEMp?{$@U=Ua_tPZR` ztRbv1tSPJotPQL!tOKkgtP`vRT=MsZ4T24U4TBAbmBJ>&rhtq78Q`*iE^I!m3;o_$FQfc z=dc&Bx3KrHFR&l5Kd>TrZFn7cU3dd{LwF;2WB3PHQ+OMAJ9r0pM|dZA3A{VJH@pvg z0DK^PFnlO{ID7=W6h0b020j%&7Y>D&!@(2!a4eh*+5{}P32uiw;C^@ro&lwTMerr? zb?}|=-SEAjT5te<7+wuO55EY%1iuWw3cmrr2Y&>A0)GSl0RIU81pf+$AZj9NA(|sv zAX*_>BibUmA^ISOB8DMK5#tdv5OWYH1O|ac;1LxF@Z>*&ieMo`2sJ{3&>}1d8^Ve3 zAp(dvB8f;L(ufQq2O0@W5z9a)VFh9XVk2TZVh3U;VmD$BVjn0c97P;QR3pwH&Lb`& zt{|>~lENLtL&OurbHoe8OT=r$JH&g$C&U-TS5R0eDz9JOpuAyuv+@?@ZOc29cPuX{ z?_A!qymxt@^1kK$%LkMXEFV%nth}^*eEEd(iRDwv=an(_^x-mtZNTltRio#ngB_mv+kKURLe{8IVl z@~h>yK-b}3`GfMO<A*Ul}Ar~N_ND`8U zWFT2cHj<0vBZWv2Qh_uhtw=l4iS!`7$RIL`Od?arJhBS82)P`&0@NZ_BiA9W>8NuP-)Z>)Kb(s)MnHH)FIRn)N#~F)M?Zi)H&2e)Fsqq)OFMi)NRx~)Fadj z)ECrWR4sH}bbWLqbYpZAbW?OQbaQk&^Z@h_^l)@3dK7vLdK`K@dIEY9dNO(ndK!8< zdM0`fdLDWK8j41uNoWe1il(9IXcn4_7NW&yDO!eBq8(@_+Jp9^1L!0=i_W17=t^`I zdO3OpdL?=ldJTFldL4QbdJB37dO!LY`Xu@k`ZW4H`U3h4`Yie;`VRUo`ab$0`Z4+m z`YHMu`Z@YN`W5qz z5IYPz20IBm2Rk3T01L&!uqZ4UOT{v!5Xk;tOaYuy0IRt7wf|Yut97X8^I>9 zDQp3|5W5Jw7`q(13cCrENRDFnVh>}hv1hU8uotkGuvf6xu(z;xu@AA2urIJ5v9)lu zaSd<{am{fpa4m6DT%B-Taouq}aD8xtaYJy!aizGCxJkHaxS2QvXqw>uQ%y)XGL8z` zCVZR_C&tNeN}LL(#p!VdoF5m!g>W%k5|_qRf%eG?+&bKP+y>l6+!ovpP(s;@JA^xe zJBq8uox+{PUBcbP-NW6-{eydqdxm?1dy9LI`+)m|`-%gNM|?wkBYb0gb9@VY3BEhN z2fjDH556CMAbtpbI(`Oz7JfEgDQqp467)u7+HaC1@KuB>Vikpos)~gbiz}9Z*39aP%@tcKwt?o%$%@kz zmn!a7T(5Xj@xJ0i#it4gu{N<0u{p6nu{*H`u@|v7aVT*FaSU++aT0MVaT;+ZaW)Y} zgcEVZxkQkqAySDnB7?{S%^C?&OVklfL^IJ!v=coMp{W)O>YfJR`~D$P>tu$dk#_$ur2a$P36YGLnoX6UY=Yoy-7@9x+)) zR*;os4OvGvl1*eUIY%C~Yb2 zDV-@jC<7_ODW#Ojlv$M7lsT076gUM*K~pdkB85s}Q=}9V#Z0kLToiCYO$kw=lsF|x z$xsTEO3Gr&Qpz&QO3FscCdv-V9?E{oVaicTHRUAb6y-GK9OXRa3MdWTq}-<51>YJX5B8cHpt zjs%UOG1Mv48Pu87IaCsrLKRSDR1H;6HBik|3)M=sQyo-4HAsz7^%3Zh>RT#= zRzxeN)uFYZwW4*Tb)j{mb*J^F^`-TvjiF7TO{GnvO{dMI&8NX=a2kS!q@iheS_O?k z6Vk*qIZa11(t@-QEli7mp3+L%7TR{&4%%+oe%b-rQQA4$RoXS$E!s=k2ihmvFWPTf z5xtmRpWcAph~AXmg5H|mmfn}%k3NuIN*_rdLmy9{LZ3>XMxRcfNuNufM=zrz=;d@I z9ZM(BnRFIiKo`=bbOl{W*U$}gBi&55(H(R*-A9km6Z9lKOV80O=}YO$>Fen0=^N<# z=!fXX=+*Rd^o#V%^egnM^gHwi^e6O}^w;zc^pEt<^l$X<^m>f?jHZm{jFybHj1oo{ zMmI(eMo&gxMnA@2#t=p+V*+CmV;%#_fHM$`at4xtXMk%Q29ZH#P#9DOogrk%848A; zVPrTNZbq09VMG}jMwS79wp0~k5n~BsIb$VbEn^E~A7ek`0OKg*B;yq0G~)~?PhDVK zWL#xjXFO&+VZ30xWcrlU%+Abi z%wEjC%t6ed%(2Yz%n8hC%vsDiOc)cvL^8qs3X{#`Gj&WO)5>%*easj$$;>bd%!SM) z%;n7W%+1U#%&p7=%)`uT=1Jx`<^|>z<~8OG=6&Wn<_G2{=4a-2<{#!?(8MZc)dfwg zMyzJ6=Ae(&n$-!^vAVLlvATmsRxegxRzFsM)&S7V8p0aN8qONS8pWE-n!%dMn#-Ec zg0sp%MGFf$S_D=Fi^8I^ezJHhK1;wdvE(cz%gj=JUEy8jUE|&1-38^fXS~Nz-@KaqB7SXt9ezE26Mj>EGkzO> z2Yv~^2fq)$KYsv!Fu#;Pl0S|=i9eG+m%o6I;G_9iK9Nu1v-y0!h%ezQ`9{8pZ{s`p zX+FTO;xFVc<}cx|(mqf;WN>f={4FS4UW1*jU&^*i6_$ z*k0I6*jv~~$QBF|4i*j-juDO*P7-2-Bq3Qy6*7fv(5{mR4MH2J*hPggVFHxw(!z{z zHR#!G748u367CZo5FQm)3r`8pfx_K2;cekv;eFu);UnP_;S1qg;XC0c;TKT7t05{D zm5925^4&1eNYNP4I8eZwE}9{lEt(^mCxVLLB7~@1gcM;w9gip?iD)9ah$E7V^dh4u zD2j`+qJ^RrqIIJ6qD`VLqCKFVcTjXlbVPJQR4qCsIx9LSIxl)9`d9Qu^j-8*^jlOc zt}CuDZYXXfZY^#rZZGa2?j`Ok?k65B9wHtt9w{Ct9xom!hKk{0gt%Oc5#z*oF;Pqs zQ^hnfM=TH<#U`;`>=t{(esMq?6i37{aa^1br^GpNm3X0enRvN)g?OcSy?BFoBk1^T z7w;7x6Q2-Qi%*GfiSLP@i(iP}fx6#!@h|ajaScf=No~;iYb0qS=_2Va87vtg86_Db z884Y8nJ$?vnIoAinI}O?P!ghqBq@_HBut4wB9bU2Dv3#A1$97|Bq2#kQj)YJBLO5! zK`n5jWRqm8WQXLG?RMe3Bgr2%P7nv(+3h0?{+ z4bqL$&C)H>-O>ZngVICNqtesTGt$e_Ytoz2ThcqyZ=hCKLsmytS5{BfLe@ssUe-z0 zS=K|=Up81aLN;19Mm9w@RW?mFLslk(%3!i`8A^th;bj#vl8hpw%Q!N=Oe7P_q%yTk zBh$+aGPBGf^U8vV?1}87?33(= z?5FIHtfstJUQ1p_-ay_+-dx^7-d5gDULx-%?;-Ck?;{@|A1WUvFO`p#kCRW3Pm?c@ z!{i7#T8@;-PLZ?ZY&loXmkZ<~xmYfhtL0j`L2i*-<#xGK?vjV(5qVsml&9qx zd0t*AuaYm6FP1NpFPE>DuaU2lZEeL?H7 zzhZ!5Am}{~Rt!-LRg6(gR!mb&SIkt*Qp{57s53ZX)zkSb&f zi^8gKDqIRT=tPDU5k*uHQ)CobMNW|i-N=QCMT#Yg<%*SxRf^S$HH!6$4T?>Q&5CV` zU5Y)51Bz4aF_RZN)vseZ^zNbHz)=E5%#IC&drNPsK0AUqx+Yb7gB~ z8)X+|S7i@nZ)IO)KjmQMNaYyi1m#5KB;{n~H03PiY-O1eTs12(N|KVSq=IIpRH;?! zlzOE>X;hk&R;5!JQO1;UWm1_{=9P<;OO;!dyOjr&2bG7EN0rBwXO!oZ=atu$ca-;) z50np;kCo4qua$3i&M^z_P ziK@G*r>d8#uWF!bm}(|Ik5NxhPgGA;&rr`)&s8r_m#Lv@gc_~Js4LVYHCatj)6@(#Tg_7o z)DpE!EmtelI<--4Q9IP2rlU@%lj@W@r>;^jRC_+=AA!#TYs)i1VqZ|!SBLdw~lg6hBYZ97_W|5|#snk?y zmTFdN)@s&iHflC$Hfy$M_GtEL4roqjsx>DyXEf(Dmo%3(S2fo(k2SY7_caeR4>eCU zFEt-DA2l_!Uo>AeKQuoze>JtW4Yf_R?X?}XCECu~F4~^j-rBy}f!d+k5!zDiIPC=O zB<*zV4DC$qT+YO6@A`8tn${Chb=3PVFA;VeL`v32n9Zl=i&#iuRiJmiDgpp7w$Ek@ku9rS_Hf zU+sJCH|;NNOCifyu0luDk#!UuQ^(fvbV8j{r_q^o7M)G!)VXv%onIHxMRf^XrEZ~a ziEgcKi*B24mu`=4ukN_+r0$IFobICTw(hy^h3=K^weG#{lkTVPx9*Rwj=rV7v%b5& zx4y5wpT56-pni~kuzrYssD6Zgf_{>IvVMwwmcC4n(o^&dJxkBk^YlW!STEDd^=iFC z@70I&5q(sj(gXTR{X+dR{aXD7{YL#}{Wkq}{cimp{a*b({bBtveYO6S{)+yZ{<{9A z{+9l>{<;38{)7IL{NEj*&3k}N+8x7kHI}E!GdklLG2Mk9ICk)kwlZLZ~^M=cYD~79v z>xP?#TZX%ar-m1XSBB4qB4Zt6U1L3C6Js-Db7Ko*Yhx#4iLtw}m$9F5pmC^iym5kY zqH(fuigA{4wsC|`ng0S)5tdRj1r^9s59z~W~0?;Gun+#qs!)RSZQ2tTwz>o++y4gy1ToKhmA*!M~%mf$Bk!zbOHnweUe+L$_;I+?nddYk%~2ABq#2AhVPMw%v>rkiG% zW|_)NFcZRrHIYqJ6V1dl@l7I=*d#Y;OeT}najrIFjts~W~!NPW|)~~mRV?)nvG_Y*=)9${pO%KY>t?t=9D>Y z&Vz37V)JtIYV$htR`Xu-0rNrg5p%WqocX-@w)wvKAM+FQbMtHS8}nQ92lEf}Z}T7X zUvnKxT}ypSBTHjT6H7Bo3rkB&YfC3fiKVlpi=~I9mt}xukY$Kvgr(Fn$}+|>)-v8Q z(K6XG-9oW2EG&!ABDE+jR*T0Hvg9q5mgSZemNk~0mR*)=%UR2L%O%Sd%T>#D%MHr| z%fFU4mUos9mXDS%mhYAymOqvvYXfU*Ya44@Ye#E|wTrcfwYPPEb%?dpI@UVgI>S24 zI@dbiim+m=6f4!rwsNdotI#U8s;yRQ#Okm*tuCwI8nULW87p9|v@W);w{Es>weGQ= zwjQw_v!1e^v!1tJwO+U0w%)bgvp%#ww!X5yw!X8zw|=mGwtlgGvwpY!w*Ix&uoc;w z*jm_H+S=LL+dA30+Pc~L*oN6g*v8tX*{0iO*k;=1*~)BC8{CGrRoEytx{YlU+7vdu z&1f^*EH|w_T2W;_OI=&?ThWJ?YHfZt%e<9uVb%kuWxT) zN7_5sJK0O@o$X!i-RuMG1MP$CL+r!tqwHhtD zU1K+bmbArgvpeiAd(a-UC+tak#-6nU_Po7dUv6JvUu9ow-)}!)KM0!BC++9$7wi}9 zSL}D~<@V?Hm!LxZ&Hml~%MNkWcGPz?aWr$Za&wa zZ0Kz4Z0hXjEOB;oc6au0_H_1k_H*`k4t5TAj&P22PIAt4LY*)t+=+0OJJFz{UEw4; zK?}u6aZ;T$Cj)e~#ZIkL=hQomPP5bMbUIy5uhZ`gIK$4kGvh2ctDFm+i=E4yE1X-M z+nqa{JDq!-`<(lo2b_nUC!D98r=91V>zp^7x19H#51db(&z=7|KRUlSe>wj;Yq*MC zwOox{ja^M$&0Ni0ZC&kL9b6@@uCCs$zOIq3(XO$s@vaH3$*!rcnJ$E@+=X^wTv!** zMRZYIR2R)fcQIUCm%t@J%D8f_ylatbxod@MrE8sQlWU7>t81HU zhij*6m+OG*pzDz9i0hc^qU)0Ds_VMzmg|n|f$JaF6W24B$MwVY%k|q;?5^dm<8I(? z>~7+2>Tcm~>2BvPad&oib$567aSw72b`NzAbB}S4b&q#Xa8Gnkc29H9a4&FU-9$Il z&2Tf_Vz<;SbL-u9x5MppyWDQK$L)3d-2r#R9d{?)X?Mn*byvC@;3H1@wW1| z_O|u5^S1YP^mg&~^7i)j@ec70^$zovddGOjdMA1(d#8G5cxQU&c%fc|7vsfy3Em1X z)l2izy?n38EAh&`O0UkV_ZqxLuh$#&M!X4c(hGR=-YV}x?=tU3?^f?N?{@DF?_Tc} z?^W+L?{)7D?-TC}?*-Y?$o-rwH8-eO-ZUmaf)Uo&5GUrS#rUx}}aubZ!j zua~dCZ-8&GuN2hdC-^4%Ci|xOX830L=J*!)%6#QMv=8IM`YL=xAJxb7v3*LP%BKdM zd7V%1Gx^Lui_h+J`TV}HFXD^&Qogh=>#G74`c=O5z74)DzU{spzCEBxf5dm(SM59L zJLS9RyX?E-yXw2{y9-M7uYK=)pM0NvUwprOe|@$5wfznJ&HNqxCH~I-`u>6bA^uVR z@&2j)Y5wW{8UC66*?xq-+>i9*{0safKix0%tNa?j)^G5e{8qoi@AUiqL4Vkv@F)Fw zf2F_5KRPfbFd;B8Fe5N4FeflC01dzc>6Tk)t0b&3bpa&QMR)7=W28025Kp9X4 z^Z`@A6>taqfk+@0hzGI(Adn9%4eSc+4jc;{51b5~4xA5M3tSD{4BQPo3_K6K4!jM# z3w#KC4tx!K3;YTE4M2iL!Fs{w!8XATL1vH}6a+;+tqQFRtq*MpZ42!V?Fk(W9SR)@9Sxlboey0MT?yR@JrBJJy$ih$eGPpN z{RsUVsu8Xkt`n{sZW3-9ZXIqDZW}HMcL{e5cMtar_YU_74+swo4+@V6mxf1%M}^0R zCx@qmr-f&Qp<#F!5iSoS!>BMeObnC4%y1#RFuW+dG`uXlJiINuJ-jo#KYTEJD11D8 zDttP8Hhdv`DSSD6HT)p_Pxx{8dH7BEefV?uOZaE_Pq=2JI8ry#Fw!>CA<`$(H!?WV zFESu9Ffu$cA~Gs6DKafGJu*K+h!7*R2q=?91QAI@5z$7R5l_S)2}DAXNF*6aM>3IY z1c)q*EQ&0SEQ@T6Y>sS+Y>jM>?2DXw zrJ-+hP;_u~Xmmt$WOP(?Omu8?d~`x|T69))b`%;dk7A;@C_YMvQlpG0J1UGSqS~k~ zs*hTu_NX)Jiu$6VXfzs+CZfq`CR!O?6kQ%&8C@G)7hNCS7~K@z9NiM#9^Dh&8{HQ@ z5Ir0{5RcbpjfL$FN{~q9R6&QDW2>Gscc_V%(T0CXPvB%9!fE8ih8d zj~Qadm^tQ&d1JmV40PQ;+xF3HMe;R)l{~rGeRylsef5v~uA&Hua;zZpNWn?&ctpv2(B(8RFB@WhD3xWuHygv7M}Djsta^Ao59E>V#nC#VT}f|KAUgb7hX zoRB7D2}i=7&?L1D{GL$SNE0a~pMakvKRmnBUwaKl??aAHAeaQpKizeh2+KLrR3%0&E&1*-Q>OG{p5q>DNG8RqNYSCMM|GCq)aJu%9^sJ>?uden~J7Vsa&d%s!AuhWV&a1W%_3ZWd>)4WQJviXG$|YGZQn@GqW;tGw=)|Q=UO*Fd1A1pP^;wU~`3) z;bjDwHJNpp^_h*Ct(hH}otfR4J(&ZU!dcwU!^}UKCz+?2XPK9okC`u-n%O$p zy4hygR@v6sHre*s4%v>`&e?9+UfJH+{@J0~VcFr?5!ur0nC#f>xa|1s{$TfHzhYcH#avgH$PXFgXfSrbdH!?om-n*pWBezoZFh)mfN1& zmD`ispF5B{lsl3;o~zEC%U#G_%3aM}%U#di25U4Aa*uOQa?f%va<6kAavyV_bKi46 za=&wbb2R`6P!lKuih)`{U7#M&0B8s_0vZENf#yJKpdHWw=m>NHdI9}`fxvKJ1W*c$ z0>%JifeFBDU>-0ZKmlj~0}ucbKn3Uk6JP-xfCuma0U!iKfE-W)YCr>M0W)9$9DoyW z0dBwx_y9i;1p7D5O4yh2F?K& zfa|~w;4W|EAS2Y4*URq1AoENPR)FSe3N{$eCvGMe7k)6e8+rA zzFWR~zE{3?zE8eyzF&T5zBE5FKPo>VKP5jcKRrJqKPNvoUzUgFVfperGLOz<^MpJx zPs)??^gK7u%U9(2c}`xGm*i!6WnP`v=bz?3=NlAi7Mc~>6xtR#7CIG53WEzn z3d0J+3nL0+3*!qj3KI%b3)2d-3UdqP1!RF-pciNbW`SGafjuBeK~+!}^aVq~RInEu z1y{jW2o^$xSRr0W7E*|X0!b*K1So-o z5TFXGoO4)jucxQS>v4N}yA|yu*9Y$m-XDB2_;m2u;ETbRgRchP4t^N?Z-euP{%q)f z82TTFel+x#Lq8t+tD&C^{oA3x9{QW1e>e2+hw_J*LyLwM4;2j+4{?ULLuEsPA>mN@ zP{mN?kaVbesAfnuR6A5R)Hc*H)H&2Oq#o)X>K)Pz4GgUwT0gX5XyeePq0K{Ehqe#x z8QMSePeZ>M`Y%KOJoMY4-wpj=LxV#HhlYm^4ILSxq{Dac)9SC-GI~CC2mB5@1AY&? z0{%I61pEu^`1b?s_V+{V^!Fp`FR33>{}c6B)W4yALj7Cnr_^6le?$E{>TfCR*GT<) z>Sq-8TA>zD461-)QY`F1xsX~!EvD$*Cznx06q_ohI8+J6rFc{+RYvhC0VSkFR5?{a ziK$9TLP@DAs+y{yWK=CxN7Yjel$>g$ny6+9zsaVsv^<4h#Zve+D1|kGC^dy&#!)?# zmcp;6s6Gm7qEJSvpTasF)Jkd zzn9ua;r$);zfjU!_iz=skzsmwsTaf81b28>UQyoD;U}P*^077iuw!^_o-U8xgK8<_ z-H=(KdpwMtWA4ND=YJL(9yT2`9X6RvhfHIpgJUO5Hj~xlFxgEZQ_vJKg|YE#&UDH& zYdT}PU^;E;%R4r9+jPrx*L279%48YKjt!d+nh%>z=0oN&b9n58*=Dwy9cH^ZWDc4m z=CCTMvUdm;1nLQ?t*=cf`y(X`D!Zcy_oBU=UN*OQ(%!kKf zV+m8jJZYLF__!%rmQ(NW*(a!J8wEqe4I0#Ganzzj9oNcG+#DdHeWJbGG8%WF<&)ZHD5PfH(xVd zGv74bG~Y1YFrOTo8GB-SVt#0PXufBRnM@Y5khze#h`E@#gt?Ttj9J8FGmDw{n+dao$z}4GrOYxWpLuuW(a6h@ zS0k@S-i&-6kus~8)yx{Ej9JU9W7abpm~v(#vx(WvY+<%C6-*`b!-$HBbupP8%uZ$( zQ_Xxk@@eG#$j6Z{BWSsAP`toA7ArCu9gU4nj>bn5qsh^!(bVYlXnGVoG>>LS^H}+; z1uO=ufW>4LvKF!yu@0eIco)LC2JLHfVG;1?L}DY zSnF9ESQ}ZJSesecv7Gg4^!4bQ(YK@TM&FNq82vcNfcx(Z8gXVtP3a&3-F_*JG zUq~nsjs8aa?nN%YrKumTAR7FF38mFSe}b0&K%U>2FU^ z@%J>P19js+f%@~j!X<_Ig-Z*uI~C1uSWrlNT2{y)X;C4Qq{W2=BxM(}3d;#qMq*Ck z!a^~j1SIAb7Lt@-SV7W~!bKz%7FLp!SGbs@A`(lG>$_jlK09n%*$isGZruyi~VQ?8dMk%9=!Dk2Krh?{zmV(v-1=%nA|9iLW|M$JJ z*B5Lk*jTWsU~|Eif~^JH3bq&Qz~)fr#&H5-W?p$-NgfyFU&r24eb7=?K5RK;p{RY0 zE5&Tl3UN8-u%*4BvYDdt6-C8IpxIEeK*5kysXBQ=IVJs9FTDI}-YW43RN@wj8nqk+ zRVAmWF{BKI3GvEmv*noOxTQd`r<86KCoD__MfGyo)fBa=oCTVq3Kb_U7Ry2fug+@e z;!%_hcJxtJhvryY%`a)hATcLvSiMLwAYQECaU761Eh|bl@mDv|XlAF&f_={>P^jfv}R8M*Jt4&zamZW9MvZBh+B4^XM6wb}-hv#Kdg_tvKsVPlcR#j(!&ssK? zRV!!=?hLN$j3sB8wVbl7<({^jfz=DzYROqkjiQl#&T`(O=da`LY2egrco$$zQ5P+j zESEuDv1~@^Rw<-1O6m*1X5CfGy1H7$HRx_w%Ij}hj4ih;ODk_%>O^-eJ4F)CU1;th z+_xxeXixdoa>WD7Lr5N39$T8&{WYQru8`6E#L`mr)KbZLW@%77w}_i%Sm|_wuwKFF zcwxB?G`6fqIc-7YxkaIP1<7lKH z*Jk!{>j`Uqsg#4^EQFkQ6m(!l+PI-%8|nl_orDEN6;+nCSU_13Y*xF~VRc&7a+lR@ z<(CyyE$4Ww9h;>pVuqdPNLIlU4<8Vrjzwj5YyYij$996V`Q#q;<-g0)nEZtt%B9 z6=~2aX~tT^&sw#0GuAqN&bmR-E1R|U!*&P%l=ZZAJKvxldsc;fo8rFpf%PG{t%{wBM@S!AcL2SdRF5atr;t3eK1aNz z?1l9uQi^(oc$eZeq2E~FT4g9DvuZ`n4&=WZm*-LxIX9J(2DC@<9=H$IkJf#PPsD2j+^?t+qLo*m2G}f+;ojQ>xCl1T45i)Xu(hIKPH=h3d?g+MY(=$h z+diqswgB>Ro7dLdSOED15EbZkd^W$0sSFTLLEA!Q$i`BJZ7tG>ElOnQBbAGkG0>B? zSt41YjFWV+GGVJn1)!)T_%hxy{Eu_WR>VPHV4Jq3ZA+0$#+J3s*mBUHLfD2&$H9L+ z*~-(lPQ@8piSn%Nob9~rg6#m#hYS2gpy=b0?J}qWocR^oRZ!OuuG=(CH*7a;w?LOF zZ`LnB!3u*u))n5yzH8(0MP=m`d#f3x1CpKmd$tXNa%Fu}t?a&SH`<~|`M_48 zdLfbz9hmi!np4tx7J_E;C_noa(`QFy7tY~Ths=Gm9C!m4%rXek02ef%T%atpeU+GS+Gr3 zdK9!)scRe~GLwCvVqX=mj&gY|jpZl&sQ|_NLlB#R}wudRA{l zP6nC9Znd{o_A71nCGu`bK9`~va+gDck(k87GP~VjU!io`UG}XlZaXFYmlUe`{M8kh zy38Px&R8>^C9IGW1 zB~?jO3&aL~wMty?akw2du%QoaJ-2E@RUv7@8)}QI#~mB$yp9%3n`(hrBbk6-AA;Y( zLxV=+C3XQv&{3~iQoNnLo*Qx$Rw;R#(Iqvi$~a+QDaSrCil-nc<+rG&ky2FJp}>meXmOQ-;*28;nXXu= znsKNg%Q?#UvyM}aHq~jz8EDQrHekp(N9@ic=7`#Xxxc=u3N5czBw{i7|DmJB|ikZ3%q_Xt{!VUSCZ?adEA< zDNnGwxlVQfXL=Wx;kT!N{?R>05iam5l(oN9-gqDKW3*h|TmQiE(6LhW$f4sJR7TZu z)nkp+QMDeJ1x;TaYp_oI27*VG zR@L$=abv$Zwx|v|(U&^6sSY`JKzrDE1pFppRqKdzE!LLbt{Qc2B34J8V@^C~ob=sWbHauxKR||{huA{@bTjg}RoNi}9 z+YUCP&EqU!%Nz26+6N!w&Yf7rzFz1hz9*bM;iq%A}&i{?hLFyZjx0Jw;Aaa+_Gb51(rM9M8rI7@}>%A|9O@G0lC zGwod1W}LHK)RuAPvoUEohg|n$oil&3YFmJ&!V>44Lin6@o`O_>)eI==wDXMftg{-u zbaC4`g56kE+Qt;02YtbL5phY|CB(~{E<3LvEhi1K3~TLQ1$WJP-N|bcwcP-H(|HRq zr|mZ4JGcVp&Z7joq*#$3bMm&k&Wg5s&il@~wqkVJ51b8c51sjf%C`M@{zIqedV>l!>ntqg;$f4!qND~Z`_od){hhCfen*+St-h^ID(5XJeeIM%yA2Kh z4bfrjFQ%l|E+GG=w~)L;c<*e%dJP|(tagg}2>z4vGvY4@=p3EjoCjS>lEbj;kPDqk z+hJEL_#>`nA{}uxi4?e(wu|sNe-xXPr)lc1j=I{QR}&1n{I-s^G3XxAx@9I82j^yX z$vDU05wk|u3D-%N#btHbz^h=>-c~3sDYk>_qJ3Y2m0HK4u?}KkY;(HyiFIu*m$uFA z>TUD5`r5{!@wz5lKBRtEz!h{=6o*`4a1mk?MI3Vpq?0a9Tin$>SF!|3^}EaPFWFN< z`%eNjpD*~&T3 zXIy7pE81iw=YUz&cHVV?VAtS${_zTM^{d-15(#FJuFHhF;=1a(<{E�FN#dwYKfL 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%0A9M$<`U`jZd>h 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

q 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

    6znM=P4tv_1yA2@!as-@f`8o^jz~a@xJqX@O1Oy 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 z�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⁣z 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

    >c;42N*#+>Ma_IF^3m4&rFITyligQ^ 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%0DDVml&?U8H+)0H<*l{?t3gMo+SL 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 |hNV^^S#|3@dTic-SehGKbv)I~5jm*hE+_SlD5c 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⁡gT+xEOxRLnc9vPy32GJO5+J-9jiRUg44&NcfUsrZL7ab& zLp0PzYlrtj2|-$bk2dE}mmrOSu)NLz64^(ohCpcH`SdzL>M74<n_28bDYZ|3JB? z1gWe%XQ2io`=O^wSs=_w9*YFWNgAGjY9K?X3;-IlxGt(ekdPvuaGW4WNfqLnT?2lB zR5k$GJAk!GApGNE|LW4T7GNB|Ab=*R!W2h0pXRp07y!Z zmw>P=%Tnth@PvB;Vac7OKG6qZ=IArX#L1EKtRm;LnI#E@9tFf|D}b7`AVol^cm%|v zzk(;j{H`nvS{Sc;Y2ceV#Rqh8s zQ~I*g$MKK~pl^*n$27XC1mBpC3v#=%l!q@QiG({SPg}q93fzJ)^Xs9`B0Z?3y~^Bx zD^`q1_N9s}K!$~-tpYbQ!-BK~LSxGSi9FAQ8UW!Ca=2!%iH7Twu`f-~KYCIu2MEgzv*dU^k4Tm(;?v(Gk?>Co{odjgP5dartdDz; zr${ey>{8?=E$tr=W}B!%t>g%8RgOC#lN97@AS|l{d?78!7s}HSJkj3NyF!ue;N$U` zhC6{HL5|Qr-}FbRPa;Ptk(mr0KGeaDlpKo@W-+|QJikDh35t}&bD+2&F(CB!8`uvB z@&*u=R7v_Wk#K(?w6_VB;fNy4N}33cSRZg?_flj(j3W?w8UPzj7pP4U$?pb)Mb}LW zs=JC@s9yLO!qk5hI{Q+^tpMoh>rj#jL9PM98oPiw7UT*bRC+t><3&ofQ{+}4F+o}Y zVXqZn$qCW~2$MR@i5fvp2f`e2iN8oc>Zt~Vw+X*dk06y)>Q?qjM8dg>G+=q-)y47% zvz*Gn5z``*hwCs?ngqSk{?vN{c$m^+lwDkqVyfkAdYvGL7x=jCCL){6cDR`PtekW%u*zRqKm!)p74h%c87L`)0BgACJEsfp~xY1-O&is z2`96OkfX*x<(Q=zd{a5_v5VYp#iF$4CFR0^)=LQTf+7#oX#{yrkt{TV$N<{c9SDne z4Ne}9A8U39jYWrB>PU4`4t8V%Pq>nXA#j?Dbx`NOX~&JwIEliP%|J& zK`sQs_IC-3k4U&F5GLMGi=rjMEa3hyCN_|I3xH5>PZpmb4U}g&d?-aE=M*5U|Jtno z$RLWK#B# zWIWUm2oC^2b5E>;KR5_=D8ul)cO&7z@d=I ztpSAoy&u+co+M5*R0SxVs0g}~M8d^^&}Q6o%25tsrZpVhO5|;F9GK_J=*x_O!w8e( z18~I25&97bQ*Xk26UqKgdG;XN!miw>jEMip8EBreDXAS|reFgHmgcNq}g zMsNy*nMe!YHQD}qe>YRtJJhv6b(Kc}#RZuSghtj!_taV?>#EhhItgE3lN%e4=a;Ml^d0(vR3Bp2s1wi zVBEV*=2B%St*z-Qgjp?hpdv0DEr8HNZcsy7BFrk7gW66BM*|>C_ADKf7N`!s#vdI? zQ|l_nyYxFjssUj+KE`qsqyi8YK}lpMO{7Y;NvZKCY8Ws2#zs+XaRvU#awL*_=u^K2 zfyixnO8CA7$_I_tqV6N_k?%_&Y|M0W`caH%_Gdt8!Xl_65L&K4dsd4e3lza~dc2|s zp71mv%*iAjBg|HghuI5|BQ#Nw59=VWf{a$=4dgy8$Os@T!+9*T(bW4I5b9l{7v8rK zW<9VgPmm+@vT7LxBqhi*KzIS*+Z2&8OAE3Y2rrN?0Ev!cQfq*)`bzwUKRCWX zn9lwI@}3|^C;^0dk0Gg)ATw2_DpHD!2T$%OAS?+i((k(l(W-9&W$9n4z8KT+G8vJP zB{WD?&1R(v@{%Ig(8LMg2|ojbmHM7KOK;`41Xtq(IYN&CVF9jZrHah$Kv>9ln_rFx z5vD0u^9nu@GC8*ZVMd#T?yq5DH840m+%A z$RzqlLZBIdm{2{|QcC1L1jMASLCzynAy?&HMeq%r93N=-DHI+V!mlfEoplQcvoI$k zLn(5EUQv#TFeWmMNIxJzU*qiBwaLn_zovCOC2{C<0UE%8(!$DhZT> zogA7g$k92zc{QLr@)3A)egneNtHyeZ5o)jl5KYF{GjjZhFbn1h&Eo+T8P01YCBo~0 zFxRzJVzX-KgG@y~rYT9)fj8W}xFAbZ2J@_5Qjkv-S<5blNO&X=_ExW|-WdpMVS2Gy z)cdx|T#uqi5UJ4<2;H|iGQ^{=>cE3?e^5oP@VzS6#b*jUgfQKKOPt3(A;--?LO}5N zMvkrsQ|~%f6gfiID>980B{Js$VfSCHmWTw}Bg}HCg*?V)LngbK%A5;x354^NWxW<| zfrd|oA!*?_2?$*bZ_&tcvU2>0Vv5ayj+_&L(6mpbIT8wG17e*$gj!7rQe2U1dBsbB zr|N;(>I_;2zavaFchME%WC?!{h~9zkXyo`2VX9pO>r&(h?NH<@s+~)j)j)U|+NIsw zR@E_4~+V?@F?17RL+S8u&jIUWweI+5w1NLdtCT9Au@(7Ml{H@bj&J>@A4p12?_fY9EP znM*;=07Bp7TvJ+*d?2(K?}*|}JnE^fQnD1HAQgacSjf4Aq#(IKXz?bN7LoALPkbax zovoy5sRbX8Eh5Kh)F`&>+O$Sbb zckzg9RVL1nCyC^IrN|X@le92x07TV=tjr}~%3h<$=g>nSyjX#Nj+0g*Ocy>EmxmNN zLQk&ryVD*}5?M-QE_hfDw;=79ARnt1S)4$S4}fr>!u26if(!@3yNPMYd1M*%G^{n|1WE~ndMXPaIYgEN33moU7qJCivK|Nvdo=QxAQE1v$QT`Mu0ohOss@g<$b6z49{`Casbz{HV}Zm4 z8LP-RAW1<+C^DXUh=gBLWP+wN3}IH|owRN>IeIC_MCEuHVcOD)jY2q{QREt}kssdh zoseZ2Swq_%0|#rdD@raV$ODShLk%Q|gu4J?W1ESV#G{*PZOj@WN6u}^aSIzw^fN%` zT%t_ZY0`ztaxFFCxK_i{wUfU=`8ltXqK41~KxkSC=!~o-a=s#`(O5ywRw=fsgdk@D zVKEJWaVbF>0HG^Pg)2nXQP0VWoQJ}W2~t({gn=Z8gpYjeuW^sp8Re)54x0WWw4{Y2 z1rE9)7QT_=CxqEQeu*5!)LWJ_kVK@>xzPLZMZFXk7zV$>&6t0AaqH zFqeWXP_gQ~r4b|ngqratC|0gk{60 z(=kCRDUt+|5Tu+U6@a9OWS3Ed#kYxSN&=wyi=cQok!%38el~qXSPp&Uvz!C#Qbcn0 z0b$y!c+rV$rk-p(IHA~waGV&C@D4B$X{cHFUe)YHN=cDPDRLgPqy^ciiZ1|9^ebwa zcz#XMf*Ef))~VL1kV%julvJ5vbP_?9DRL7WDe^UW7Ao>Kcw&M~1wxlVKZ)1y$TJZL z?R|vVBoclL2yaM>wC5R(Fw3eqiYA((%xfxxFPiWg9+6iR8B!a$B$C}nrLZtfT3C7l zplj4)Cbxhk_W>YmV|)%MGps~&?o+-zHlrk=@Ew3?N0HFa>fTRRj4TRm&59ov<-%`&qAT*mR z)Wigt1%y{-JgCD3_GjA(dY~%=a zQyHwqjo0yjWZ$XCJQ%o(N;(2yMr_6OTM%aExmsnM9HFZf$wTIof?T08XLEckNIT`h zof#J6quw)ta83o@AQ^9?9Q%>Q1UVX11VW#ij*~|%gjo=+)HmuP%&QE)EsE@hL{1(M z+Ik-AJVq##1Bm7}0g@1;q%v_5IweR@k&|IuWDli&o8e30GZeh42PF4rAgmXR3&jx= zg6;*%1Udb{Mwud-vrEy1()E2$h1&tq_5xH_j7Zf@igeZ7q*SPzv}CemuLHyyU5!!{ zEvo=9GkiZax|ezvD+_mSj0-YXkr=X$3%+ngp!BFM60y5DwIC2LnB6-A{C~=~p{y>>6tgVOl^@#LQ zO?;-BCX)S}^0bDkAIb8B0$eaIF35w5EMrEARJ})$ll5wH$J728?{w(`exjO=V4>Gx z-VO`$0m;1*2)#_N=XgsGXt*s<=B*a9jN=l7SwhW_d|EWM1j1bKt~L5Ib+-UQ_Q#+* zE=Utasxqg7oUT&2b)ZL(nm{=0FHJrBsHYMTx>_f=W1L8KIo0zd)Cfyy05s=2B$XEA z*XjP{VK#cH=za)Q`5p*)y5PJU=g$b!U@#=e5ZVNQoe`ZpMWn_&MeqTL9BUD#CFb7I zUnn7h$&u4v zks8t>2!);n#H;N?%(oy90bwVQ4J3LHJh^uQ;bjJH=wB#_hOPq2%jW>_C5eRF0g>|Y z`2trUOam68DMb!ZrWp_x&~C`Y1Zku)Jz0o?G*rYxWu*kEr^uD;O@4)*>>5B=@>`&W zK&X-e@1f)qf|LP5FT4#&r35)a)rlE3ZA3N(F|dx zaU+|?bL7ZZBu5+1`S1GuSS~vRa-35R9E?;W0+kSEs%2~84~`ldzfr5Wj%uvWeDr{Z zP>xDmgxtpj$x@!{>DxrYho|~(ut&87R4Z>E)57r`IB5G%nwK=foZ?!A+{T`#j?F-5 z+38vy+f?FnmIpaP>y=|C>rRk0Kk($=s@H+7eW0O1 zLm=!vafc|!xd@ZFtcF`7%-r1qDxEXbRRWC2MM$sPoRss92s!qOW6{e3&z#LHCE0|=A4 z97Pcql!-8m(dOSrqH53=*97WdACP5l2l8dy`f}9S7R#pZQ9Y8&GfiNc+ zl;K@HAmK_tX!Ad{Qfneii=To_N@U6cp*5dDCh{s|va=QW3I0SN^y_5*3Yvo~B#4Cf z0-;dNI{1TQKf+YIi+3*M$oUQki@6a;A<=<^wkuOdLUBT<O%OHz~*$K&YAD@TG}_ zSE#0POaRAfgqfu$VQ_2^wJcDCW1xf}(}3_6ZeDF)2FLrX|2)zr0ww%sN5M&4t7O+R_1bG5TO(2bdL|>;=Hy}*=cKWFxx2x3i)Fa3( zK$tc!ENLR)%Ye{PXKR0PgL2>w9{c1{@A*KecQlZMAg2RipL0DdP6=`<5Ej!oR_0*p ztqg>DSb>vAO@x_)bHEW7j$9zL|SF;!j*uq{tnl} z9~}A0fiGI|ZXRWFfzVz|31F*SBBhk)D6~X}6WRZvf4|uQQgI^Ldx0?R_n<~tb|`Qy z)d;c?2_ zi{(-8SRgd!XJ|K&j`Cj>=pV6cYE(K>R3`U7Dl@Kv#- zAQ2$U6JLu>6Uli}c|N4KMMn{O6cB4FBu+sn{7*o%a0gBvMH=RiAVrSQovNoax~a%} zL^`RO#kdN^1i1kS%dZBc5`tU-g!T-f9ziYu!U0J$Ad&Z}rv(t+lyL|UBa+($2=ir= zunD5sXDW*An^PiK9{}5N2M9(+Q&nvsG~i^6c4C55Q=vCuWI~XN%EPbNQi7BQLIXPS zrS>t@lLdsu!5f{JAVDB3v*z&S1d;H;xR2PV{V>8bx-MkWBJ(2Uj<3#07}}p@DhKry!33VZLetNfQa*qf#HLfknzO40>Y|sJ9CcmJQ!`OAx7g zGZ2=AzAPHJU3D~NrqUvGy|SE*grXB6bVD5=eD0dki$)9OIFp)iv{WUPG~5PZ8h^dk z^`!{2Vk@elS0PNZW}vJiaT*#{iBT{#CP;aenTO0I1Sze^sjw?0NC_Y;k_W&O`H*^k zo#?yfK9}uSXF^fQuy^36p!cGaYQ;| z$3GCJkL+RTiOhLGn9}96ZaVdzt;pBli3?H>2-_%YH%TP7rt;in_ZGqz2FeV4fEtd@ zpsosvaOy8kB)b$4&f?*c*xFEX}Y0U~1WD^i7 zz8FTP1^FBZ%_*RskErJ}Aan!1;1w5SrSgz20}OJ$_9@a@)*(Zi$GZ+-)c7y zMVOU37&a$Gu7@H$z`^HYX`-QLfHH5N!KUaZK&m_dgjTjvn;u7)7R-cqkRksz08DBS z<#61k;czVp2JTgXNw9b}1uj!y2Ksm&?GdI6;vy-}acTlpyB= zVRlZTAI~9Aa}}zGi&%_ExFHbQb(I?4NVVJznIt)KPEnbgrJaeIn##0O$Zqg316{zA7UXLn?6$g~_M@LdDrX}Q8kWl}#0iDg0HQgVZow;cM3$?fDd@w~ zg3JZNB7Yw|(Rt*Vp;FtCt+*g@AS~kn)I%gZLV56*PL8n%GZWIM&!?7wK-eEnLB?Z( z^iwVSfh358y8&T8&^}+31fEivX-Fq6GIyxVd^+I*>b(UBQ+feNT#)OO=M7pX$dy3o zCHJwoh=f}LVF6;jYB?@Mn7QUxfU$+($Y}wDdf(x2BS9$CM4=#(N(pir5EjI0Bo$di zp1O)$1D+U>oSG_iA?qPQs7447?Xe}I^AP53EmD_;nkH9vapl^DtS+YR{kRt=8=u?9 z1xf4sdTmhaNg_GB6#>z$w60?6eJ3S)=sBwM8eOhnlrRTzkslKI(#;^oNAv|nKUYaK#W5?Mi>F3K~QZb2m60SNn4+|$c(8^X-=m&IV5$P}tf2UdU}7XzU& zji4pEl6ubuLPy`o3Lw(AY{3sz0+BtnO3*pudRs=fcgvpc8a0GW}YWe@l| zTkCHp{f+9c=}I7+!WlTIWvRawZ@;Y-@5Eo6F`P-9X@>uzo@yOB7B4(5{D+K#$3Q2X z@E<(TpK|cPuT=uIa5BEN{*o?o=%_=xdj5)zgExsY?Z_1ThPH&W2i74JUbv z^f#)%CePpaaai)Wu<@o9FMBj&KjR7zE^@Fa=s3Gr-SSFr)wVZHkrHk}8>cquCr<|~*QMNeJ#aW26 z2&dupn@}u;-$02>d@ZFr;Wwsq0>6PQ=)+lvQ*`KW48KX7X`E$CX7m&&U5MW(&bSk2 zHYAV3%ASysZ*4SwV@9J~l1ir?%=DElm60!S=uV)cPMG|0C!7SG##uHyBTt?J4Hq7V zTYB=VadG@6kK;>gxNOMRTY%p}oJBaJipBLeiQlx+$LNP047)2&euWW1mE(7n$vla{ zJEa_oWHynJkx0PVWX6k= ziHUB3o+|fz=Z}oW_|^q7&seaqBN*Hd>r(_m?nm>HZ^&{nbZ~U|DTZGJ!d<@cfu*X{ zed{+#j*z=!Oj?w<`z>z;OM}e1kiM4p%KP_M4RuWCZZVUjM96sw81Ir2ara}6ZUd6- zd_5m05OTMeNeausE&h=6dyEVPa9+)gZl{tZyZropgK?n%F^I4PzQgcR0B2j|v;fWv zw$X2yuCu`lc5em}&g_%yXW0GBJtZ>kXYP?5)Z%W>5+joBe8ip*7I(jvl(0C@A0j&` z<1D}!6TtmYoxm|$ucQQVwpzh!qSVp^rNTk>Hn;(Sko(PfLJ;>G^OPX&V}i(cRFj$R z$C`}oS$7dHg)(9HMc6$| z*xBtw)Vj|U;^YWTPWh%?$h#mxdIMppjN=py5qF8j==W5c*}PY@2As`(v2r6hGLIL0 z4)=ZAG&w@Yyj{DOGLLI1EzwePcl%9{Bl~9M_zJgHBH}!dkaTWQ+XvOgEzu8D>bxf_ z9PR^)1Ua(XLn&|Awn8a^&^4-L8g2t4X(Bbi!Xhb-B8ds&>~!KK1aa18^io9JZ^a`& z5^&y)jS&cEJ{1?+0`3+jNpghT)f>|ybNsjB?ry@dpCD5uy~DTmRlRA=Y)9fH$q;rv z`IdCILV%sYNyuL0XC~_|+ZYqXeFBmYo2yoIt& z5DCAX@Ds=9+HxGT0HY{zHX4cUrxJIgk+>l4ez!>??w8qV0u3J4loNh30p~G;Anpda z@n4wCF&p9v;;zt`CX$`mBG-!^pwM$)`#I)Q<2aE9|6(^>N!VS|F-?hV_k-|*RC$gcfk}E>L^Jj5a^_)RYv289b!UPDhC#GNf0<@50I3w zIO{b=ekF_h&TEXwpEkpF*K16QjJrN#nuxneNc1tYNc3yWeT6kmiEMX;#G_Q|u7?;G#C@kVNhI6ZPa`dW zv;1K+vJ)KZxBCSfLk0zK_SZ-fIA&?Xv>@)2g6MPPY4nv}OsBvD<3zGEThn5(MzU<& z?6cg)Ni0E}cTv4)4+=Tc{c!>fGSm5fvHXkaf4t%eiEw5<-p~jMGaHJuxW*F$yjA@K4^~ihK6is4Z}Erkh9GOHc=+xyb+4` zIf0yW{2QOnB)+7Rt7UeZj%VF(q7yGL+21$$)jJZGQURPDY9oEfaS$9V_bDhs0u7wk zE+rA?b7u)VpF?B)MoMHpe-?(oHmKx`@;iC~ahFhx^@YSS-$y5i{Ap{Buc3n#i6;+o zxSQlgUW7#0SyE9r+^sp{!1kM0%6zS+IUDZ^ z;(q)ceTh1|s;P&dlR(IM)`1s5sWh`{qp!7;x+$J;%i(?<9(@@SVdvFT;c%W{VAo~p z%sj2|bvR#!3*c_j8+nCxovT^915Gc2`$ZP5$?oJ*_avbyOssN32{+*8xqU6Y| z%!rpnsWh|fqHmb{@FOK0&Z7=tIc8nP0aWTf+8_{e-&aivi}TnbEr7do@2iwKX6If( z++`V)M8eKT)MASJq$4sA990Hy^*!-3KQ{sAxkj7}?$^*s0h~8g(*#2H9%=)4W^@n{ zchilyAnv9cNkN>26TP$`?sv}7*O<1mP-2`w$bC^YDJ;!kKU?r_vJ#d($flKywktN#%}9f;V(10(mwyM3?Xzgg0^+x%@Tvy;&0QXPEHzBVvwb6}G?} z73Q4^&x8G~lx_pMtxq$~&cb#XtngCsT#*SI&;R^p%Im*FSrnE-JyyV3S?j*4{?-6i z8)sdd^>H@9c{_Cf|9zSN)n(@G8Of$&cav;7{_FwPV`S6uZ;rfe4CLE9 z5V>rCLE6Tvr2Sb#Z^nC6Yr}m;_;>BzK1NixX*EXJGUTNFS7W@9?~}=b68;~;K&mejGB;eo5dLw5t#=q6__DH}Vb6|Ba#`yPk z-k{kCG_|Q!8ero+(l((-+U_t(`*TTnGlrV{JAZG`d}^|ZYjW8LpR`R}lC~Rk(*D$) zw{|f#`4a@*9tQGk^g=FweiE-zkjtML_C_;M-R=;`WfPL5{b>PjgGl((FH`&~=oyQ5PfpF}k;UJt9iT4WGA@be2El z@S+rb?J zYky$CpC0iJO28lC;(K+<+k*+p`**e8p8XWDOZhM4`m0O%L2}upTmpJ2U;7(k4wbT5 z0cy5|4oQzhv2dux!{+8l+ua{&n|mT{v-hNJBuCn2pGezN9nv-`CT(}Rr0r&sw2kga z+uRFjn|CH{wHDC2e<8r0vNHX}eb=ZIc$HZOBgA9tDuL z*w5{hv+Md;swx`+n~@@Iw{WCwBA&F}xRJJp zy`*iPkhD!X39g?llD4T((l%X5+GYnx+nq6Kd$>p1_A4Z9PZvqsq$X*9;>sJ>dlxz_ zo04OMKX>4*eSr}+mC6WzO3~Zb7ZF+hY@#==KLh@A5O3%J2K+}W-pGLr_*-3jvB3x| z2-?$YYO{~FN!yba(l+Nv+NKjo+XFVzHmyL~9+!}|hg78PZkO~_eIh~Ho}iJoCpx6< z;X7%Y=pt>;CP@1;dEUV{k(g3|=;Q5bQ1NJQEm z?~}IKA=38HfwWC;k+%6k()PfYw9U4YwuuYU_8fw=&9#uWN4BK>N0(k~7)mS89)mN& ze}?I8VnmidHIGl<5IA~5axLEc_#Ee#I5*==;oOSzTb#Ra?#bNcB!58oCqJCr5Bea^ z-*En(;rU;Er}O_by}~_V@f6X!|ycYFyJ}bjghwweQQj4BlZ1^bOhuW#rnhHpA5i zFGQIk_R%YOY!!FXOIK!iV)|5qcvRoeBHd+mhNl~zHk(fSB1d>;5%&hiVNurW7%U+W zXW;U&x_Aq@Y{w_kGe65{I;?MN5VvnRN!tR~r2XyMz37Kf`t%$6)(<0W)ictzMIhBwZ0TVmxQ!nUvACo-29Ig3}s))0Y|Ac9SKK zt<6UI9=sD^{Ac2Z*l64Cj6Ajs2k91QP{wnCGtRP|D#&A>+mc@9*jxz>&17wj{FIy!u^F9y|tgRV*gmp z90K>Ch4a}kk1=SxM(4m2_~4m`ze@~eBq5yt=ZR~d$rb=&$Y1&glamnWZeQ3l;wUQ6 zwEm8w;1^9irt7;&q-}!<(*OSaH@UF~Jgx^N1Ky0KwDiw&;XYG)C$Vqf%MjQ{f$D=$ zko;7T$6w8nFC&v}$3UjPnj;sc|6q2ekkSlbv$g50@C-PW3u|N-Rp?=g>iedlpOWCx&ZDh);?sVY(vUFab z?UX(l)ndJnZ30bcf7=po2ARAH=sL~vCqSF!wp0rRY^PAtw#q2!lJX+D7u^9x`DGB` zvW`4#KN8ZLCS>aHFs`B@H0YfW=o_@Xl*nZp0g<*1lStccKcsD69MZO_3u)UviL`AJ zLfSS>B5nKOkhX0@Nc-D5c!TzeMSu6q=mhwrb)|oPW<)($M`n@#=`?BEU5NCf=)<`h z1CLh7ztOfF2k|8+JAOCJ<8xe_P`BfLfJM?6qil?`80}aDBsVy78YSJ zU@mG)+LEU!oXpylZS79nJ`pE<6WqQu?ljU!7~iC36xkjtWSROnMHC zI5FT2`Vorq8#`mCAx^72fRZs^^|w~Rg1Hc=ZtvhylYPid+F#q&>;Ds&1{7b5?!+p{ z7Wp7o5!99;f#Vw_ZG~?ufDvzw3$)4F>czxufo0Nj(Xp6p1GIbNw>^Q#^R;8c42Q=y z#37HZ2TeLh8Zjw61DTk)Ry9EX&sCjx%tWVW^aB`Dnv?VcZZ_D$OXRne5lP#Q;-qaa zJ<_(U2Wk7tfVAyp3nxt+gQpqD&Au573+i@U&s2(-Enou27khjKUCR<5E=f4p`L`j7AFLB~HsTRBKI z)h|VxHP_q@l}6j6)*P%36oV$@r_Zm5@a$zqO4#c2r2qT` zmME_Nc+1TC+B`AI+eAgxe{zOr_AVj?{M{?P{=b1K>l7J0V#9j`>i_wPE&1^k2S&>* zFn$Y=WMQPpe!uO$MV58WsBO&>|C=S^P0)dvb+$$T@yQq<8~#_1fSFVpN%0_Emi^U+ z!$@{`(DoE&+&omWUCg>K$uxJ{yoNlhP%8XLpU0!4#s$*NKC8{eOq0jT^%tbF`-Df$1&GOaU^(gLI)o7crBIDO%swd?%aj zR7-jY+=jMMG`gC8N%lJiqc|<4ou~?Z1GYr3Md4_&boQBHr_{v*)EebKnB6MY;NVNKW;sUS}q zl$ll5KIaPLFD;5igP}Cf_86hSZqzO=b0Zm%wGb&_G`N_7s{7&R)>tpcMaasqkk;)H z{!h@=;@TAH0sb4Aqar64QHPE@bkd>I4qevq-2#X1#OAY&N$d#Pg2=S|4A^Atp#%KM zvR%QssoVqFifIUpwM*M@To+6>jvH0uX^iWuRk&>&&a}GW4#@Nuha=eN+tzU>k1eD~ z+BVW4ZR>rKj>FNoraX_0NSAB8@OVH+d@RE#^Sibu@>{8Fu%OUZxHf+%*9!7a48`opMgu3;e-IO^k6pQifyb1_;mhvMS+cN6l2#lQLuh&cVvX0jmu#qIme)&FBr(ITip%<`}-bQz2#;-wn zSQXmVhg5$(EHixZLef|V8A>~E)s{ylTZxTyca**LSGEfRaa+%av@IP@+I9dY-3g7v zd_iAG8Qlkob^i^sHfFUgTuK33o}Kh8cCxD1=K6<`czxa~7Z{*?}H`)LyQmz46x z^<_!t!y+3M*(ky9|-G1qw;` zM-I%MtDwhd+y8+)4>(@j#JQx}jwj^#C$0hJi<3cH8+;SZ)O6aG7UZ|Zv`9|}zjZCP z5hd}F7!g>$9#>D1#?>mNn1sjUe} zwYJD3>35I?tJk046IM6B3XR33naCuJYplYXqtbE%-V{c3cHcMqYH{WQl8eH#+AjlP z^CH{coGE{dp3aooCLhEHAftw_oFKi}xL0XKJ{qajh`(c)mz0Rp(B@3S-%S8-T0kPd z48~L@Ve7Uti6(Gh!~ONFy*(7jvqeYA^rVc2@KpdKY*Btjq)}w0Q2wtWBI_HeBCPhz zz%aQF@)k?L-%-ySIg~L^!~ZZ)A2giGdZ4<^UVk%kZ$2ZcUx=bIueM!;n4-ULqc?IC znDS#NXY1y=poih*ipMfoVr9MxC4!laJru~Ai~#H%{T>6S;);d9!LbZ9fmImwOqs|) z8C-3O;gUOrffl%YpqBSY;7eo}*OF~h8RPHv=?$93fWJMcH(vt&O8VYD3HS^4dn2cl z&0h!J>p6n~e<^uyn*{t_`Mmiv8RKtW=Z*Y`0e=m8Z_q3R))jjW4rN{DRSs>Nxv~IO z!J(`bUFx(h+eel>UphRuI6StM19`qc-c3(?+=Uq345J^TcR4)093ETipL*IkJfAtV z?OZ^fD;#{QL#I)hmX>W$N&cstk=Y=J$F^c5PaTKHHftc>&C!2UXm4$TMLi482jB)h z=Q7}L*y2r*fWJDL7yA@3)vv?F&}_Qbp&yjHA#6KK@mjdO!JPN<`3U44o|kcSf1ees zc*lq?Q!~}M1A|sb#1>FI&(}4Bf$Arr1=>je6LdR9A3(*yhxd^wuPSQP#*+TRnO=M$ zrT0RwwG-RxhsDqmMq#wRhfH}jq1I+J5^|&9Enmb4TUeeFKciXVi}7ts5s_697fYDi zXBh*lXG*i)$3WBH(SWRcDoRg4VcfKRoWZN1+^xa->t%b<6-@6rsRLhN0+`U=4l^Pv zEY}8a?HUGp;_8XS_edZ;PT1D2V~oG>v3F1c_KNO$YIa}I{dzn*7;iZvvi!9*y)*;W z*B}{dU}JFqZy8An?ala-68^?~-cAWrMl*!htlh{Mf7v{5(`E+z&CI-gDF#M>Ee{ij zTM@{MqAN1Z=lL0%vYioaq)PqlM=&ZyUpaIqB0AbenT)E9ag$Z`FK~YALv8rbPogh^gkUx%lJ*yN2&Lpaa&ccnl>DP!!XhKMYG14nNP1Np0* zp;CD?N*hhsJ_nTUh^`Rb)L{y2FWwTaZ{3k?6+*6SaXIIX@jSYrd0OupOY3celeH@bs!C4U}cBIt#gpRRE4@H?`2chlcd zIwWu3emYS}6r4re0;TBA2LFPHremGE=93+!4zS1so{i5&Y(F4?K+mz6})@T># zeK#<|dm5T7Z!Mh*$pex!*|E?!hKgqQBnRJ&Mg{YRAB3XT@ORT=djeB7-@-u6Kw27X-B4Sr?oZ}0&<1qC;gVHct-$5r~ zv~8(P9@|Wt^e3}2Ezma1CT?40leSH=N!#|=q-`T?(zXv0=^F4^OLrRT+33+IUu*4O z%*@aOor~u6nCCGcFOQ)&|#y6EN^=}swy_tolVUaQUJAPxy3`8`wO^PT{Vq1o3 z3OW#T8r!;*JpPis-i#L@+}$=}XT(m}ZFyJjw`kqQZ#xVT z-;8=QJc;%I?_1o5*%^kbuvu3YWx??*Bl-ph;qqh-`zD4uMt4VrS^?NraZKV-r~4fy z!*Zf{7i&_+>~&~BmId2}lRP&#CEpcYx>>Y$qL@19MOc(|laz}$g8{D^tg|Lp1EU9< z{C*P-VAhrUHepHolc|-d% zuzS21xLgAM8t>j72K-lLR-&aIX0WQQ56<*g>P3+aJ4u$(Y65#)3vRnNRM{B z-H><6;8#_X?ng2HTOU6*xc8l zAA+cr)tOEQVS8{esfJF^^u^pv-nVKUG1&sg9}1c5VJ2I(ING9FR^+fm$ueUgSat+$ z7cC}L8RKdz+AVNTbB7}IOJ-&>T;uKj=q{9k(O;uOuz9$vkrkt3psi>hMVD^0ZPLng z2O(QlbuG|d%vE=yDvb6V{E&nHEZsh}WVSVDkrX;LQ3To>{TlL{XIsdV{RHVFy|s)e zPnoDA6Q@j{*Aewv@D^MsEdOUa^fZj?%#Amqyo|O@0-4CCXwH^5+oq6szJp)sj7DC< zCEoHp9bKmBY%YTZN@AQfjrMpw2gACo*Cb(YCiw4j*N#-hk1o<=|ei+S@>Z z&dt%fEy8wUWfDi>rH0pYT4I0DmcTaf7=5ynol#D)_1~rN*Cc}#xcMcE zo$0KB9o(57m%Ow@UXRNHBRM@=VyhpC>DlO8l;kcAjHL7JhDF%a1eSPli5vzmVS$%3qd?tp3HMVjc_Op}`^GmXlDyR(g(gkO@<>x6xw9Q3Su4%aFEJ8T7JY|l z?m-{NNOlfQPzj90r93W?x1yJ^$Y;?DXk=0%-^Nv%k#v(cQ9>+u=2If~YY8#3IVxKt zqcNu0Pko5RR|Cz1YEgV~i5!9QG;8N;t-#u(L~@A&MnWKP7W@`lz^IPHUN_L>@)A!$=n24bVbs@k(A=BA-Q{!ASaT zXI$bKNxvPzG;hUil1Wwot!m>E$^CyVvLmX`(v-;FXvd7?^u!R{2WVE(64?=XVl4i(E|G7+H7xQDTv=!>+loYTzeq;1IlO?zOSP;|i5#kF zQf;=nCM2UHndUO6q9iN(RBWuG9C=V&C0?{|%4ni9!v(M_@!DuI0hsw^#$!!Yz< zB(w#7!?i{YijHEMT)Bdg^xFqvkVeKO@(e9LMovY)OoQOmNr|k2%P1w8mA>dZ8OgRH zk*7cvBWW%7Zep$QRqOYdW^puFi#&wN*2p*`Ykvi&VtPEQpxsa{lh}mbl*S?blrZL? zK8^7KG-@)kp07g#Q^x4~OsKcC2~p+KTYQQHAFT>Bnl)thG}w3O0)KR)Eu)y_mRkirpZCgevCOoND~*M#0QYf zYlpgJHh3IHfxvZA;}Fp|Xd9?A#@6&DJq2B?Ni;%T+eP$eIHJ++`X8r_%Uq1V!nKgO z<533nVe~=VQ<}~nV3FZn&_SYj4v(j)FFQ9TU!c(<_x&d#qVZ3-EYaI|G=n=*nx&Br zRwX2K*}O){TE3 zdQn(Ccrq0E!v+}Q4W5c%^-+%Ai_p24t{8fFxX{`eVA>V>|9UNyb+Ce64Uhi{YoXXS zthDFv)?1O8ym;D6Ra@yq1@%(YPbyf4#x zZ-!bqbP&Ci^>VMEmoxeTj5ExCUPr%fbOl`QjmNe`rp|%5q8m?Xhwkn4{kH?R-my4v z)6;TMhHi|@w&5qDT^l_MvPK`qz}o0mxD;Bt3t$_1=}q&{hO1N;C)|nU+8od?6TjL+-&UpWr793x}X`sY=ND2qpC@B`zqO#q2s;^4N4AMq!h z(NihMVLN@9(NoFE%^c+3a?{qKf5TwN(%pgqyU~AMB#EhFTFMy~Hg}q3MaN&yhF_YV zdoh4B+BUSMo-IyoB%RtAh(VayndQ(!omy(-c+fXaEuHSrjnL>V-6fMU^d)FNrhk(R zM`;aiX<(<}ccO6{JyF_~&vT+f`)ft{_^urp{p+2stuETFwYHj0hjiH|8Ge5|N^jgM zc#W+&m0ZKXI!Vn-ZeXB`B;oD+ih&0)>PK52nnEDYcKx6!BTxy5*tZ1{-h!=}T#Sfh zKFqnz8NdfI)HVw*2fw|TZ~Y5*SktXY5u>z z+?BVQ0{epSf2)Q6YU^F?$K;c>qrY44>I$?wv;RM{-qp{@{9mnim6V8|@HovT?&ByS z+#inIM~RkBSMZs1ao(U`7*QGX1@@SrBKl3-fF&iO4=yeCj>~C~#w&EG1CZz&`~}^g znZ5%F8htUkZ=>&Vx}myr)wb3gkXXr!d=nNl)+!(#t83C2WbeLJu(z#E66c-fZ z?U6Wl!Va>&|Mh)J1W8G(~x_k+hX`&^fl;Fj4p>f8od}LXLO!J z+h*Cc;YX(<-H+jkN^6M(>5!7~OwihW-ZiVtRU^=8e7+!yMxeewd+);ID>{!x-J@mAG&iZJQ&r zOa{Yd!xV{{K(n2f$eHunOL(S0!2Yji#M zkI}uI0Z9$`s+E5=XBgEKWny>_)TyPl684*(85nV+WyFq3Ta7`J#SBG_8T}wqGx|NJ z^%P1M!1BSHdGID{Z|j{_)eb3}6+b!pSEKcq&YztN=`viDVbQF}9`rZOoWv@jx)HJV zc}8%yipTe8@pt1F*W@%KDsa7AMsn6~vNM6(laY&c=A8E22i4na$&_GRBDuJ(NuIXh zj|t2qBP$>M9?uxN-v7}34|cu3s8-`M3IfgBTyl8{*pp`b!QeUl3%+^z@wP47O`J94 zr_Y~g`O^1OV+R(-TmIN}YoDnHx3xU|f@-_JIXm3y@R%RhTz-3Dt0zyIaPgKWdbS$! zCXbn|U=fbA{?=_R!9Yj;6+8t3I*9g@r$SvwmCn(hFZ*cX`QG>BxmBfZiy8 zx&@8SYTTsh+0B}_xb5~k?(E#Hp79l@K27^q8jqct9%gDiTcZhEsG&sQGYArmp)zNPJieX*;rFN zsw!}LVyksE=@+p+NV9t!AfM&&#pKbYYvV80bE;ocewj!aOpnc09)6f)Ja0lN5Ax)I zXQ}d3MA&#-J-Oid0z7yiGrBJlzLFN62ymAQR&oSg<$2)wO?fK+4NqC{cwfE`mg5?e@|^SAmV|8WAbC^URrEM-R`kxJqJ@kb&R zA=H|G{(J=f4E;Ala=X-!=VmkT@o@6@T2gNHfbpn>vm$EsB81C>J_!$AjOU8Z*hg*K zt0==(mB4ZfSm?d3nj%$0cc%kAf-t@JPin>ugqq^z=szivHEX|IBk%_L--1w8X*3WD zoT}Ki$=GeB&mgenG*T!{C{C!vQ5@)>Nf+O=rY0T?2-yOh-dd6;Hjnz5W1BgjaGLPG zP-}$$yPPeLvy~ll6P!(Po{h5^&gM8<;5-NCxj4_mc|Ok8&KYrN;yhR`?8w+PpbDh3 z;w6a_^c-Dt(w^@+aBR*G&iOEoeHRDVynp1AJ3fdNhrusvoc$5I7Iq!jZT%P|Ihh9WpJDicx^7Yu5MBTH0>wd7Bqh;e<^6@o%EHU`OEV< z(9~m3hbzC2y4f}obyL0p$RW_rD2^`9VpN||jJoi+sLL2NPNHsfqBt79gHcI|df17g z!lxOvk5SWuFFSD@=bqcOrd*78QCjQ_*x!Od^be|j9WuNyp6u{&O#L>(L+8S3Du`d5eb`@>_XaDKrQmp$4P@C-JOrLEG^r*I z5APq$9O~JwJWU-QH(O<3&d=as^Jsn?4LM2D|=X_4=GRn zzu@VoJPjNkx14!PmJb(W-Y;>=(B)y?-+~_6O#57W5R`H*i!vMs9=ZmbCV9N&V^QDl z2ie?M#vhx#f0Ir*@T@d@|AvR@e62h;KyUoS+W70=!*3p7OA_ zEqG{0C*{Es>ae8}i;h{oPNQ$K=qZ0h=OMbQrchwf8yI~nrAwj8x+A(C=uJ4g=K2Np z@|V7m>=)?-&uI!99G(%lt>M8wm3`5x;5h|!SDaE{^Cy~-^pTN><{0@-i{AN1G@Hg` zMAMz`vFQGBlcoXl5KT`$&7$LsK9_mOM)cd0{DN++(fA4Uc-L<<9LTdXSOFERjCMH1 zzJpZ3x8dNEB?4b+H1AieK5tYN><8!*opBjxfX@Uzgka4b5a7W`Hp=f1ZV383oT7gl z*?fng@BzfLA+`M*=cN%PKJXh-q3Xa-pfWHXOoz@;Re81{Z1t7z@RR}1X$Ui~m*Es! z_DzBqrL!+-z72fhcqS?U4YV`FMon~|n>y&LP zfoQM)R6ykyfaF1MErF<2jEXbrf-f|R1x#n!gfJ_rr<3zzd;5}sz2KoQ_A#>~)1a!1 z-=<0i4j}q;JScKNl-bxCxD)ge1S^z5fCr0`-cb(WGcl%MWcg|uX%^K)*o#g_lw^(5 zaHkU*N2tQN%FR1kI{LK;7vP)TKlrPnAjh1FNr-)fipvE#G6UoZd0;Pvi=;Q0K|f}s z#GHtjU#B8w7K3jU@2-i^B=$KEAnG)*U$8U|tDdJE zo)gFUX_=n#2-BWI@SK|G+fz$<07-XpGQzyok2-qJQl3)4Sw80?OnU}7JX0R?dsU{z z9-$q0I9)K*;ki!raL7qt@SdB6Ittao&R@8&@#5w!Cvq{Bzlq>NoZE5k#aZ$_Orqhe zi?apJ%W>X<^Ff?Xy4sLtMR1wqNw>^B%L$&UI_@SbQAF9>$w)^h9r}G1F>)D9?B{w>+Mqnt;aX4q= zY`S;j=?TfW9b}TZdLe28)f^#ZVfvo@UMx}Ng-2)A!%N;#h z5^e0NK&JpDn#+_Fg7qf@R7=V5}5yo9$(wo;DMvfj*I{|!yAJQi(ML6 z5?Bh%|5s1>8{_v3p{G>wg3XS67HELK`N1#XgX;qu1J5ADf2HudE$~P+FZf8cITaqM z_DHouS(8f~%4!*G8O#r~4Av~q+y{dB!BcQuCF=fbU#v{9ak25PYE6fk0KH z)$GXV;KXu%ZaW7{m%Bgsb?^bT;b{5eYwur&YoWHO>EqzIGIJ{MEG8-3f70K{`RRJ$ zITgAGi^63BHOqf}Qckg&<=3OG8AlBjP!e-0EJGfe9qAi<2fWRWyc}E^?iW0z*dx_; zR;?H~68815)JT;o+3d({P^sY0M@IxU2L=bvMJR@oS__IbJJJ?)+8Dp5Red)&8=4mc zKMF1iZVCP(sr+!Xd!>a!H9N8d60<-z4=z!}Ps{%stK`?-ZP4{dwMvqIzYIENm4~0q zsc><%p(W2hA$7v@rRroa$nF}lfA9`7a-Xr+lQ=66vh|i?rNy|No)= zoNWqz1s_fZ{oik3DRCf`+7~;N^>_c89XXT*{|$Z_Y+vmEV(&}PbQJ{!jsB2f0f$!Em}f~ z-gyc=xr(ndA*D4ZapKjmF44k%bo6~Hp>O#GsEil7y@iYF;$RZXxhRUTD>^}niiC3EL{7V)k{hgxOvlN=;h zVb&aV%!$9)s%RZ?YUgJBN{+=Ht13%9t=8nOw$<0FY4v2ej#bynuj*T`8qc2-T+pwP z>jLU~{G=qUoseUs-^Td3({q<|y){9-W{Y(d9_`5YRjaFY)$!iSf6>|`FM4NJvhn_% ztZppTN$pO9a;l;MY$?ZkomEiTc1hN{AdMU^WtRMw2S0nCm2r?ccxmGi9Oz$XzjN?Vw+1! z3+}cQS01EA6}>Zsv|>W?rs!lHLV0zVEcdZ%R~S3Vb{S&X-urr$j>tT_Sj^Htq-o2J7vC>IK*GR8iIXHvp5m#LsZu|kCT+U(8G=JHWy}6d zj-1ct$(yg}^TkV)ELFNp+0ZcGPv~EJy+Ol9jqiDIe9t50-hKMM{Z4ql{sRUM8vO2% zp~HrccyHvW(PPGr8$V&R@5 zmFET595qNM=KPS9RFgQV$^RVit|e*vt6E$$FncHUaOcc zuY$Q){Zj44E3<0DFHN}GP?Jb~261188QcZdX1S{shMcP2q%>6snMGJF?#C;smq;_v z7A>BgRdrAuRdfBR)lz+KWh8b7)ySGbUDQ%rd7W5W^-!}(Wi;2C{m~*+kX>8#Q#JJf zd>2^d@#v3lUzU!j%B-a(%Til2nQIX`hq*5CB3RC;OW9MMkoknoBi{=gUkP2RmZ{~) zm1>t-rfcCfLyfd&;x&so!ufxQ|0DD)uIt1$OASy1)u-w+LYLsV)slLdNp8!lgV+YD zLCRmxQ1ewiYclJb3bOoz`c8FLUDP?&Fv^~*_c4 zySkxns$1$0bz9w0Q7W3JY+75|*70Mde_KvZTOL3TXHa)jnTL|| z;d-X3u4+)*Q`H!9bcdRlqv}&tl8&|~DL-p6t^9djPA8MLWY4kZ+6|rUEA6)@rCe(F zrtKwDEA0rgPt79tvZZUO;noPkHd-^Oi!tmUwbXbeDQ83rRw3LIW#$oKR-Ue9=h0UV zuE28fgeW&p2J$-ll>D5>Rc@{y)m&nIYXzy!mbBkjD2cR|FjdTI?d(dtwotu@LrMy-?>kht_-A%RRJk^sYe9{K`sv@?ly!EL8sf#ey z-NUMHjj@{YU*tJ<`BX)RJqbFkD_4XkJF*^bwILYiBXtlI3&Gbn#J zrJaK|M>Swinn}I%qn?wg`dD7Dms-nM>mc^_UUn72`{DhzU0HRp_gk|$_xe*RSL>XO zR#(l&Dw@98%;oLVPEy&D7wBga@%@k2&pQCcZnY`Q&kiEwz>23b)T& z#qF$Wpl#WM?T@V?tal*$_GOAb{IL{ zVfpJkI;kFI7u30Rm?b}$aZN34+c}TRmNN4OPR`a5ch&xbiUW?$Ts6g}q6vGx#sZT2Pw)k(TMLE0t6MOVa=KSP3COppBzZ@6km?+a&A+R~fO692zi z{I3>0pD{>n#QpAAykn;S+Tx?#k;K%XX#dsX|9UOnyFGm`{dacxC+|pNwu$>3Eta~@ zRl%!qxHb^)4tM?Ty^@o+%$`?raoMA@nzUSRnWwQdgI_ARpG3LN(GT;4Uh?Of{vG9W z=jPtG=zo3r>QQG;YWu}pL&kPT`PY|E>hVdH&%Mo}qsQ^fD%aBAz5V_xUreq4mB$x% zs{dEF-@WB?9Y4k9I?Mjk$4__eTvE;t_gWtHiqG{##n(ODz0X=Q@>{mYedF%VaTvd! zbnExa2S01^^nWtXT4K)3vpjyM9kUm>b0kmlA7}bss*~twcf0W{v9CILwBN4zN?qPf zdah0MM@!vz?(a|iQPcO8``LGYB@t7Gzb^N_QvbK+KBoL`?f%@y>~rpI<+>Vn$9Omy z`=0q%>~pi#lRgf4)`{$M4_6z1=KWXHiCkg2e`ou5J_q-;r$tBKUnh^Yr}<9({^P{| zM(VR@Cx2hw|IXCqF81%s`+uoRUmp22i+6kfuV$W1&A5-}(#n&tC1R`hM>(UnFra~h={z(P?lDHXtb-q_sbT$2j=J3w7J0Hn%zj1Z<=m@8$OIUPFKaTg* zNHt20r6<%(K1^K(fXKGF1m!Sq{~Lv)r;w&w%e+!>)Czm{(6;KMZd|;>a4X& zy%xPu<+MxK{q0aYrTw;*!%9YPJ6pBXt@IlD^4zd)TI=ag*e$BH?m>UTAlv^%A(rn&gwipCp+u@ zs;EB0x(D&LS?a1Yz2QV=qc7rctALfxYG~KcA5%Xy$?YmUi)(o+J%;{UrFEz-r)x%) z*8^1xYpp65y_|knWuu?hx$IhYZM&p?iI94_sr9OErb=4%?Y?$@D^xYqP4otO?Y$O# z#TrXJ53pR-c1_-%?;@j`?Io}?%1DSE1&rl;!}dZwPGBlK)NN6*#s^nATQFVu_lV*R|e zlp0t@4VGq`6=VwzQVH0C0aijQ&`LyK{v=jXE18v?zWPsDDXmmilrBZT=R*2v>wuL* zFQ7g%5_>GYEoEzbO3gG=`&2e7yCqwAsI}Z)VK1hSsZDKvu8NTMm#T%G*_y6e+k@zv zxmVrRXZc`MppH*Tr(0F%i&*LZ+m3H#Wm)R(AU!f;??3vwwNJeq)kTeFZH=vXRud~*^eKA2)uhce zvvTUzR`sZ7X+du|=@hW@>h{*xR&Je1XQoeSji`n8B73o2N{8zg$Ysr_%~l1y%>K}N zIjW*wZC8(S^@Dv8&&v80>UWg2&#D@A$!dz_u+>aA*KcUaVWeuIAFi(~{i*pXLVumw z9-%i-ikeaT={+hX4qyxZ?$r4}RoWV^w_D5fb*q*2o~~-8aXdTfF65+&I&1}5?W}>s zokicx__m*&!1lKT?1XkswoVrMQ0BItwkOh)a-W(?zrca2s8!9XZgsIr&~LC8-?9m_ z`dC@*7p(*I6F#IWkk(t)OIE0U$I55dvI^RP_DU<#N@Qnu_VP)puHDHgZ!=ZJD$U$b z*Rxh~v?^^iGe@fv*2{cjp)N#2u-?YZF)&}+kYa;8IWdCYSv43E157lkyRXCPC>`i@{??2qO z2GUp6vh&z&wX)wN^i3Vl?xIrJRa6=~tvx_xup8*9R*>CHh1i+wnkuuM#a?AUV|#8h zPhE18-!5bqu}j&d?c(-Jb`HC&U5;Lil}V$eUBiBZl6b~wPrt-wDxCZV+WqW-b|U(U z4q^MfAKgqPvbR|k?4jg;gx$`5&mL)yvM1XScISK6zr>zyZ>2xHw)e8dqpdo+4D}kO z$66QE&sG(?q@CVA$Co%7+4HQL_A^#zdpLQpJou&))F0JX|{J3z6vtlVhpDPochuavfVuf$+=iQvK_iZT$;T@Vq>5g z#%3yKlxz0xe$IylwP%&ct#&i@a}>#G`Dj>Dx~C?;?}G$6$cwJT2i!%;=IX8^-Y8la4Lb7rI;2Oi8H0KdHTI;`lGAy@5x_i`3poQGC?iNh_O{F8cS>-WG8# zF0~g)%X^f18~8OT# zC;sl8R=xmuU+sM+&X3jXMxP*shi!JdB+|d6;*OjoFH&)*Me$K_&v8n)ui{3Y!r7@f zIa55!{(3}G*r*?Fhjlf8#e5=0ZZcidlWDESD_lKnTdv?~|Li&WYTQQ}%@3ohcE-@SXr<-<#^Hg;L! z#Sd_fXQ8)bfivizUiQxW0mp~0ufJu_TziSUNPTS;#YcTrr&-^3IJ+#)dENE(=bx!^ z)z+#XiIqSOVa|o_c3F%|eO(gAhpVr5?Z4?rcIz^Ek@_0=6N-=elB4E*^|eNv@79<5 zZYpO~Y@hXV)z@zlE2h2%UtuvW^|eYIAFjUswj=-ctK>!MYquyq>T9;I_H{#?6S&(~ z==Mk!U6-kQM2$-&{3ee7l1do-3we=B7%hsAN|@uT61IwSOeGBdl|@%2j1@I5m9Rw| z|0R{M=NfsDN;o2lk4l*9s}crY$2q1F_Q;~E5{`-*mrCgW8;<{yN*Mb)d67z(E{cyz znCGh!c8haNC5*knqN@^SiW-+n_)HxCC6#dWCV7!cI3r5I`|sM;+^vKadZk{aSL-#L zG~U;1^#^*LUeEKA^S6j;Z9wb)2U_q(zP+r}X1zs!$TxYn>FxR>y+eQOTrKa^S@?p! zxV8L5@8T29pYa*y-TDi?M}MjJ>V0~@KA;ckL;A4(N*~c*>!bP@pBVmzj}xEdGsWNP z(|pwVj6SQ+>F@PL2ta{UiEi{gb|;uj)wsv;IZ@s;}wmWNPYd))sQ_L$=@a z@7jGtlas^^{C0?+uE_`cMR9G?@H?n+*`!Ov@n5n@H}Txw*`zx~@zJh*o)&)*=a_aq zk#S`M`E;-f-6Wc;I(CT~m+FWVN1i2y-WH|K-*bZ)dOG|H<2ID#^Kth*K@9IlkTmOI zqQtchHi&af9h{Iwt2cEJ-XG0X2O~s{OC78eN2!AyqWoQTuwVd*`>ums5+rr7UzE7k zL6kVh)WMvAELuCMgI%Jz>foTLajApb;wW`6WDv^VRR@=);l zI+#3yMOVq^i5i!Z?-fTW`EgPHu99zkkHmeK{FDSq$uEi$*OE^hiE~WJPsyUI#p2=^BRX-A9hkB*QZ7Cs%#l?iprikPS!}S=ZRA6Q7T*UNoO{elMq?I zBFf`teeHP37FpjeidWWUlalpYjt^NMI02tOt#F^01Un@v?Zls_=`uZLjgOybvK=9c z?`$7;e584c@@UzfH_4Ul^nXpZuSs%F^PU`Qwl_(T)4WCb(`;wpHv#uufDN1?X-M-H z<#F4{VJ9_d-lF)f?5R^_jnceD`O{qcY$NBKG^AyVVsh;|lt`0#$V186X_6yp*`oN) z^)1JTT#ucOk1fZ%(0QWzKAP{8AgR{9qO`lW4ZD7><34J{a=S(`BKbkvqr5QMKZA9~ z3t;#nDoFI82i@v*;96nwOuYK(Cv&S8Q{Y^7%>8Lc`*&SMg)W#yPOMJk>Aa&kx2q9x zDZ?`HYX4-4z<|8Y&;y~1X0y`xChwbMq0}(@(SFciQXDdeMEG?T=K;}5Jz8RSGkE@P za<@b)@o34JyzQJz67gPfa(7hp$IacGd6M93PJ$amf4uzlpD)REaFUxSdXYyfF2^q? zrS48jzlfeXrq$m2RAu`DLalY&bR2gyX|TVE_Q0KPCtfob;?-ZTx1LO!^<4mY!opEv zkrYC*K5Vgf);)i#BnQ`N?3-)FtL>A?w`qH;maxiruI%m*{qdU0$fYFVY~Bdb9xt)W zcN2?x{KR%GBR_r#xfYazzzJD;yxh%OE(yMD65J$9kC$Nh3X<^ePJ*sHPL}1zOY)SH zWNPQyNs9g3<0rXgrQ|a0-6Rjo^5f-l>MBVx*WD!7$nxVQdBaIE&)pJC19{%dgB)awk5_JwgyF`2B^VHaN?sOtVOHiE}uoOGc zS|^|z+F{Ys?Q{0lVS2S%!?27~bPe^P9-}7dk$6OjN1~;ADL%ac89H@6wu^eXdS87Y z)v8>-?4NCZ+pkn372zZ~nbA3999PB2AB%J~#-^#uZ<_giEMw8Ust)t(W5zsX#45$u zo*VhUfKe_NBA3G^otO6$n{{hFj0`DtNx$v9AduGsU3GWeQ`h15?DY2Fg~KrXS3#%_ z({1=Ydt2R(o(moLz5bh6l{(D-gS?v9uXE|)jGi)ro(Ve`k+YD#M(D4seL4l}bO2e!M%hH7>J}8gsOPXL((zouYLuGD z|8dCij0Gc`X5?l(8;nwthD@VfLOr8%8jFmHGR?8JQ12n9Qj%WA%T=Z(EH#6XsvSLC zR`4RGox1A8UQfCkdATAhncz2v7djGg1uu8z^NOc7qq)e9OEatk8JR`KWs&bD_E%l# z=b`wis!~6Y=8x==GJOSo)lpSJSJW>$DYeq&>BUeUZ-$gJriZd?^fnnI$~A(U>&Mdab7UDQ&GofN8P&~uJU99A zbViS#JjaYT<+~SFDd#89GI~pX=cm!GpFYbtIH9U6V`9BP$ttL-YBBH4q@+uDdnWP= z{(s3kHPH)b8569CE~cN?#dQf?QkPR|eXZdNdOk4F8C(e3jiIz{eqHl^)@ABSo2yYLS+Q9q6g1q9B_LyI9Rv+t~`ZU}1 zAYOgdetIP_)-!(6TBWT}3(Uh*W<6UBw1iauK>)I#;0I-@@4MWm~2N3cu%$XZ?N@2fsx6tXX{3NlS0 z2i=@fN?zVn;}|cG5v_^wyUNG^hV*pmqYqJ*W7yBCaMrp=EmmI>7Osa#66}TYzpwh3 z5x_zx?qKhz_Nik~ssjUl$sk6OoNMs7rx{2t6%mr@wG2roQwsf*zQZcdVEtNMz;Z#I zR7;S*qa8qQ<1$>5oos#1(q6iE^raiqEOf;HhDvqfgQk*Y*`OKVZJkoDBQ}|0sjogo zXkXn|eZ;Ux6R_@5yGh|oG)2d@Hfn{Uiva`UDU}ib8)8-=Xvy_OM<0kTk5Kr1p7VdF z+QX1ZO4XpTM=QA=m67!1KR;w;r%dnYH_6X3)-#Bueysglbg3pL?do(PY7qXxj(>mW z{|;=4oWb}47?dxQG$zSAL(=iXeg+xrrQgyQoN^^5O)1|WbkJfz&QGYIpKXf~{roG`+j!dNy#OFAo-;P?pw;@i%oEr!Qbe%jBrEw0)* zSP>(!(##22CTVBbNoSBsZ4oz~%yztZ@m2hIq{r}@+V)Fe`w_#A=f^4}H_Eak9abvq zCuK5~$Yr2M94nSgkaIj;5r~7kBrhS7a}_|j{3wsO-<^nk&$1KXWz_LWLu}3@)kD9v z#B2k$E8|eILMvW8r_MMw%gV%dcVY}US+pfcGRR*%CTBtNB01#0E5udB@hrc17Hc6P zn=WEfqWBoZMma*qe$JLZlVAb+|Du1zyqM!d%)EqMd8sodri_Xy^NM@sl`O5g$Ff?< zrPvy-uijT{nLl7&$Go0-1M^1aP0X8_w=jR`F>ht8&p(^D-Q%%cZRf!7k=nuhG4oE2 zk-L~bW&WJQ%x;il_8#WF95nWG_&LCQkogevVKaZl8T|H01BbZ0`z+uRrIpAMAC)9yD5#!J%W*pKaj0%`kCu2@-<`h~^El+VWkp8DKr*=j$ecBnx zG!3Jf#y+QIq*EE|)HT{^24}?6jLxX1L5zIrnu9rT%NVFKXJXFmF=x>-XLaUmIy>_- z%sD*foLrO2oa>(XS?!v0b4437=i#b7FS~m90e1DV&aljDql@0j6+Ieg zIOJ4KbhK7C^)3A>Ck5Adi(U0mHNvW`x2ba0d)6UqyBcZ9-u?l5q?}9#S;MTn_Lr7i zarf32t&DabuI+X^_h^0f7hFv2Q5CJqjQBdhdeOedDBMG=&#Y(dzLt#LDBqM>Wv#Z> zSnpeFtq-g+c0N5w57u%Vkx>}q$jyW2hNp7u&Rsh!MDZl|z|+QsbG z?APse&au0UE~}@gJh}Fj29b6dXKK8>*%PpbUd_5JqMT(-Qy#gBW0 zNExNp&l+dOU_H#SsHWA4@tzw~H9NkdYR)EE$U)fic0pbRC3X5b7KvpjMpu7E*Nubw z)0=g;iH-TBPGhp#oEyTJjL5)t@)`La<`eSn4;sj4;qLu({5U?CAj443;7TrnTP+!U zQce*oI6Qyi9CY_^xZUR*H06LP2cm@R+9}LH#GbN)pF(M96mzWsROvVlS6Mp9YhK#NnH+;0eUM-?m56Y zSjb?$n>n+m(-EX515!_=OshGOt#?jZau^RGzH8pi31z>d*XH4XYfxM{AV{255I~3f zS5zvUQ@^5el41xUGdL~uvb`GG+oH*mo!L}iNe(7{FNuR4oQVJ2qq=JMPW zl;=h@g0y}0uyysXmEn#PQ|crt8~=kTMG~%_88)00E~wO6QkX;<$*|4BGaX){HKZJJ zLXjHZjP4rn+T}Hi)AuY&x{=2UGW_x~PW$VzNIXGyBiUAR_zTc7AhFEZ*iN#x@jTM1 zM~cDJkLb&Yv639jUJCiUOf;k&rvR5SICNecAxpc$~A#MN<00Y??GnGv%nCWb*mPm=G zxv`aDy(8F`Qwf>nY}HM)dw(wF1o02&0xD34a|tD}3gBOx1MaibW_h-p%rcDn45YN7 zwS>!BxA30<-&tn>_ds)Kb#okTHf>}ki2VSz+0J&|>UeMEFdxq;Z+Xgc7_V(?^9U}` z0`+#}YEA@lNjVjLCwa+BO3PJ0F6<(ZbR?$qGIVqRd<=^x+#%;b@Z9A`2*^}pP? zl#|OixrCGaXXB>%G_8B4)53#kv9iC+WZhf2KxD9J2N`rjPDLA?nu*{dcO!OL>lG|= z43W~zA~#!|mU^1hWq|3dT%gXxOX{)_<(tF$4m)WdVSUHU03XMQJA+i#Qo`A!Ej1Zo z9t62sV>gESn9Zf6dsz78Tv{>|Ff}bhPAAc4*ke8=P7?N7DYKNO1*ywEBYVzqyq9zF zyalJkm+#2&@-`M3eEK~3IFJ1b|D^`xQn?xNC50^1Xu){VJ}oBP7*kSehvJ;3R17JoCO*|Mwauz3-CJh zfH3UCkuM?_AwPiw@C?h(LTV@k`JgB?gOh}pLEc3A9SKrTK@JFmhR_4X!eXd~-wxzH zI0WCpuW%cZeI2AipdeI$hR_KHLjphgH#aYhl)@SIzfM!2=iba?158o8T`HpQt2QE6o)F%5cb$pCxTRZ$OA7xeP|Ewz$91+pTk+W2~VG-zTq|K24moTH~_ywf>YE5l!1EC z0s28(>bfHgMX!ad3$5TimeV0iKo=Op@+4RRTi{bT4nI5}tbRcL4u3#2_#zuZ;%G^ zK^dqH4WSeChjB0imcbS{0LS1Lh=RmtXw$`lRd!@y$U*r^BVU4g&$3sPwz3*>=Nr~$P>U8a7>Qv>u) z5Dp_?3M_$j@N&*zwG(*^&cZLCzYkKSi1#!y1oA>Tr~!@OO?V52!DN^ZrE>+V)yR+F zE4T``!0&vJN)B0|G*pGqn?G?3i=Q=~Qt{|xc7+9wy`d4J?AJ$+PBs%a6EclK9UUpfElY7l*{{RzPEs1CyUX_}PUxS6KOp$N^!^qD z1^eayYQe5iu*p_r-#%$EU226qzz-i80)-vgJ#RS8`pncXUOXoSE%C= z`m+-=cb+_XWy+T?zf1)R6f9VFp0rrj5Ia$zqQ^>RTj7kTcBKe@o`4RRqi9+trt z*bPS^66C@oJ|u_C5E>apS+6H_oyqwh!AaYkx9{3eBE!Q+J9D_F)zQWLpo!22I>@>1 zLGhnR*g*F*B7ERL{=BCV7`G4P8?I(rdv`M4^J1L_ZVw+gZ(yv!^V~`Pqq2HUGu19z zvnGGuQ|;>2YwoXEJsHB8-nu*0tj=7sX6INZ0;_j^P`E1rSGxby|FZ6ByW(oly$~a} z$EXjlsfUm9q+{H@;FPOe{_dNwJM;ZvVt&v>=mQ<(1oEKxPb7?=2lBXy-z!OGpe4x9 z)+#|+CkS$>FsekZ(N{{aIB4SsjX z&|$+zyf<>x=rLo*jh`@a(&Q;qr%j(Rb5_LcIdkXDU$Ah|;w4L$Enl&6)#^3xul-=% z`VAX5ZQkCrQB1iH}Xi7DGCfJeET*Rjq%k&zXKAMQnOW<_2wFD+1 za3u*y|IvCFRwZ>MFy)(Io+!J0ELA6OFkfX2y(|e-lQpL#;#L!}zDGn!+#T^Ld=45P zX;&jE-k*4KT3zVrF(jKsnyEBHX_l=^1*`ligVkR2GDvB9(sV;dkHs}GDhq3&2*oz= zS=xDyDKKlWn&~!e5L0kkOtUbJ{xZE&ShAq9V~cRRoffx4x-hoc*j9P?mB2O!+kR}a zv&mEr+gxmFZ+d5c65C7I=6U(m!8YH^uL-sV*zyyX>T)L8oC~p4_pm+RELbhV*2!ZX zEs47rTZD&S2W(5QZTGPC#I_WhQ!87>Q?{jgD7Ix@ep9h6$99^y?y@bywgOwSeKEET z*j8dI>tXu@+bS>H5p1imb@K2#i){_I2yE{1{)+8=Y}>I(8%45wV_T0cWPi+RD`MM#t*nQw9=46x8hhB@z_tlnI5u~+ z^z>mHfNe8=t33QBVB3PtDaM9LS>?8Eacn79V%zW7=xlewv9%Pxi;mh>)bQz&jLon4MX{aW$&Ts- z&vVpHPU4OyE8HSV!18C^$Li1%j?)Ybp^=UgYrE~(7VvyIbjS=zxpYa?@s7GytP!G0 z{+Bs6$8(RP%0V;qv=dB1mt$-<9CeDs9z9cH6FglMJFnOlIjTI;4&CkqllUITmQ`#= z9W|UM=b@4A;M>S=fIWyiKT2euJ&B%#ToMu;l4yUelW=YSu&!BM-5y59+= zc279A_1m!Bc2s$n5;}dZB=j+jHFTAzQo=2cZLQc&IO-TtZ#$~ZNjr4NJc-m?tjiqL zv2KX5?swFm@=FS$`pFYAi=@NnOU#B92pA!1pb1bd#T0Rm=~XeUy~k8rOrPCjdRa^- z#1ylV1uRv4iM2b^Vb`&X)vLP37UE%RVr*rx$?-z`+TI^GG*VKvJLh9{w?$3o&iZ0Z zGMzqTR+NdlT!=@COtoDhm$`(HNowG@K3)Wms8g_##xP{1KwqJ;WB_wk?aX zZFg+av}0^X9o5-qBOSH>bCO9>@7C{oVj8{J(=}^o0RW_mrV+I(#s|#Jmq0yi!Gyo*`+Ms zVsA`YG|g%M+fcPas*j8`}MYo!c_R_qP;#2 z4O0Q~PkIhU?-`LSQU?6)s6 zygbi>SCaK-O!TKa#Q)%f4dW_Yzggx7yIQfA3uerJvtp0_ua?}_<(-q&Qgx#}ihGVN zLyt~cb8vdeLJJptmF2fe&zD+wt^A#&^9#I}lvy_EIc#U~i}bMlfbAT%kYlc6f$Y(vSFlAlB`UCsFpq1RsqFj&uj#jtL&JhBOmKk&rVHH$p73-escL z9k|O0-7e}cR!c7Y)3G9XV=X5pIo-)wAP)?uCgj}l9NZ$#N%#f!!}lO>tL0{*M!jHF z8!3kyIYQS*Zw}HPrS(Z;l*TJ}Sp8uL)aV+lMj^+;6qpHfVKJ-1-UDeJF>4q ze$8+Neg&E2Sbv_{Ex*xqJe92=r-Tb$HaWjs^s-4_fAF%&N#~N6Ed%BH5!?Rb=8~6n z6eu06E@O-Iuw}yUC$G42z`Am;Ep-0}W^9*Z=Y=wyyI(i+!AH5|zYFP+1 zup>FQ=;e`edoGBr0{F5?m^UwCt7wogc^38(R5pmM3cL(e4PvVni_JTIS(c|u(#KVh z<(g2-=$`(yvB~o|!EN_tbBB4#SBO*BAohAtA6_+xO?n2t4h;-qYZ!~oGi|rt2;asA zu{D9F(99sV=FkFK8pPHr7Mp~5(;8bFgM_^S(gm)aL2T09t^;&5h)tf{`LcPZFUxO2 zXM-$D4`1n{*v%le?jZdvdm6+h{b+sJB+Q$)u=O@bSRdol7b%GCZFmR54PxsDzHHv< z%W{7hV36g3FbKST2V;BJ;12U;bBB4#A;cSM5c@C~4xT=ukAU|K?l50AcbKOfNxV@8 zv5$r^;OQg!SQuw;hxxL(!#w49;!QA!eIiVP$p*1afvGUfAhzis&(l295`8AjGPuKh z+1z2CGJ<%s4Pu`IbHUR`^m#Df%f5i+g|NuW?j3hA;Y(nt@mq#mZgfxI71&mK*;lc= z8rFE(J>!Y~KCFcgjNdxsdZT;#ZoszD;I{j+xx+l=CgN>2hH=kqMZIG}pU=Mt05ZhkZ2m1|TI}nS_ zJAGL`2!{-^d>FohBk(nd?I;|B~&QtI$oQCh+9ZuSj}(I^SQ&k1PNMp%4`I(#4nVkIs6EAd5mVv+SAPlhU7O-Nm5HHmOayZ zQhIgPT?1-DEvOB3ymZOSE7(NVMaoN1d7tUdsRJEzPoLdQVDk#kyNV8+ZfSLOU;A^3oog$PUPk(8(-|?M)B8b1b@NdAi`! z6}mxp=m9;UmzOSa-ohrbH?j}NhdDgcdXoCvtot1Zhkno>26*X`pMls!4nhuwcg?cc zhIr^hW6?d!Gz_2NFaq9#kuVBId+8Eq3^tKtk>g;zS@ultN$C?<_e7WklVJ)>_0lCT z)3Ax0j+_BA&9c~LdFTf_N|BgH2QZQ%V&&!*28wr=-+$T z-03~8JWrYz;3E70m*7Wmr+XRwCy!;fJvMm-->VP_Kf^EZE4clypHu;L_vydC)^P_noALNGuAm0xy z1m*B8jFiD`i$GB*W++FPFPTXkjQvoR;XVptV74ZO}!=g*WhRYY_i-=pwyokG+FI!aAahj0>IcebXTR zozc5MSA*EPp?8NK2C*>|mFfj=L2oFBtq-yvP zV5mWC!(y>Xm^Z`m9bu5L_s~beD1+EWqmO~H2C0rbd?ETGSZom667;38%pkVq z=qq5QL2RqgMaG5I_^vU$k6a7oe8l|#`#QsV&UXzR#4lbfe!kWjA74L%geO4vhX8}v5~2q}B7@ixqbGr+ z2C*eWPYx*zVtXnUn}m7eD{e~Sr-Ib*G^ByFkPgyA2FM6O5DXz8>1IM^hAf7x$ZU`u zo-yP==7e1EEaV1>n+KT}@)^XIA6S46J_FB!yE8NCX;Y!F-3SZu!5AwT?g z#+OD)cnxGts0Fp54)}`aX?w-^)J4{V`UdfN75z1M9U4GG5PKtJV`yR!TT}FA&>UJA z#NHCU6|{yn@CLMncF-O=fcSMpGSrKD6FNf|gM@WO?*`qW2lRwq@D@mTT9h;0CRT+$bxf%pzG$ns$HcVUP@Y(vq9!El4vMxcv~3-94O(jfk$ z&_}}Y6C_W$kk3MH z$OCyHALKWPPXY9Tz#x1MVk;brO~Sl+4&NdM2`h^3?enCT87EUc55=Jbl!Q`Vy5yxa zHj!nJWg*loJNfj`!(!1r%Tpeo7oY;X2o<3cyyT@zoXXflRzbcDRiPSGhZ+V6uZdm@ zY8%8>2mKYOYYZe82t?++alXNz~*Zm?Tvp2WJjZSGV)DiXQOv9vMaLN18lz5(cSp>K=w3x zFC*VV_BMJSBl{xXet^x_I^Hq<;mCeQ?{DM)@g2zSc3-_)kMlH~I`CXCh}A zJ;KP@$T<(N`C7+Z<3A5M-{=dBT!>s`^u@>}uoRZTa##T?4U)F#t6;T3Y@)A$_hBuF z?E~aGSPvVFZ6k6MY=$lHA#8PM(%`9%(B>a8U0h_XYe`fhA#}_vj_c4 z5Z#--*!LMEOmts1?|8BtSHJzFdB7m?ME7O$wT`&@9VE>|21!SBUp8Osh|TXXX$TTW z8}5Lo?wKD?dlY`rpyG2s4Hnp5x@TNZpT~*ondZalf7N>9QO@|_2cEiTemw07 z@biZNNC<(D$V>N(>*@12aXr&~SpBbBZ(_=s1d@WM?wKD?douizLkf5bQbH;(-7~JI z&*Q}PO!Hy&ziPdyDd*FW20V4o{CL{a;+GE6Lk7qQL0-CNTu-0JiR+o>!|IQ--eAfW z0+}E)WPz-Z4YI>CkOOi;E_fDlLmtQr`5-?OfPx0ezvzXaut991i+m0#xb-6FMGayT z-IqJRSsKbfSqO!4eBNahV?BK6rut7PFeSdFW)e0lKEq_Nya1LGZzuN8VJ{pa{4jh4N8j+|4COrj8@OffH~NPQkZu8ondW`2?2w5g7^BiI>FR zR?qlrl^gkje{xj~y|%xl>ihGw54{mIM{j|A13E%imb*cB{CfNQtG@6K^dpU_@ILH; z@BI^~rU5+t3$RrmWM6n2-U-lZAaW24hIe5|Kmrv%p{;@v@{}4vAX7rEvLl~?9FP-o z!LyJX^59=eT8>XzS9q~vrI#vKdAVw}>NRTCs$J)my7lV6`akjY#7^BZsGZ$2 zsN6j=s3C9;!l!3Y6=!5nTVVUj464ssJ`i|%Bh|G$UhA&y+cj#@xpT+PT}tIo*ttck zHeI^5=-jAD=T^<+U-wc461HjIsa>09ZMrsU*{)lc))+c=>)NSX*G5gdwQSj(ILx`z8^VI2XVDWIdl3))dGsX4UeQCZ zjLyF2OtsPTsL+V5w3s$$ib_O*FVjiE6$h zbz5}1D#?V7-WFq?F1nqf3+7d#wq5!r-&=uouo@vMT&BdpGZv09Mfe?a?9_S zwmYVHw57XVkz#VUK+#=IZS-fT(N=RZ^)BE2kt54!Na;}06)BxcMj@pG$wFjk#20Lb-^-TF)VyP}uDv?72$6GB z>5}GuizdxWm+ac6Yr7Vuvo#ON)}>@V*Mch9rE4#Y37d9o-YcYcNYf_G+P3Q4v0I1c zd75=>*RgZ)kSr~m$y_4Dz3dv)p+rb~PH=5H6c5Q?BBWE3=FK^i6-Vuxuyp~_Y1y$u z*F0U?yw#$3NP)c1wP;_$W$DqPO{>;ji-&aR*tva^b|rkR?s=wWtgd~V4tZL;+zU$l zc5OPexW~}6W9Q~AI_GKHv1`|k?O9Eyo*`{IbZOBwq-i?}aZmmvQ@KMrkuQ_eJndSv zBpU_tcj_rwZq~7Ri@e=BxAR>AEu6`epknCR1kXbms0$6CEA)U7FacJ;8rTi{;2d0nXo%OBbRYztgW^yPYC$t-1#d%tmP>2+QC@_!!Q^RqzkzkP0~<50rx!;dN*XZyMPh*&Bw# zD41j90^}0d1Y6;2Bfl~7TO-dJdEUq$jr`fj>qg!*GRjD+pDWz}WMaq&nV<}WK`p2c z9icl6GjgnvQ;dv2&WCld368@lxB|aGqW-}u8RRlDFR~z1f|sE&G>6_szJnY9vtSOa zh4pX{j=*Jzg!lu3MRoaSOq)bGdK7Zbh5^_Qws01&=8_)rU!AMvND`6Y#f*&9f z(hR0eLVhR=m5i*4tO0L82Y3(0!dzGkTVV$rfo~uZu0z6iX^)WE$lS>M@FG-(*3b?{ z!dO@f8{jCMgd1=hG7h1gKp4CTZJ<32hG8(r$VJFya1nljR6~PRS}0^>F=R=26&k@? z5DwEJ0(QY}h=gm9d>Cm!aVQP-;B^=XLtqi=Y55Z6dUVx_15{APlSOP2HQ}_Zdz>g5{o=YY+GP#kdj7*CRftR5+41%FB zAC|*z*bA57DkL5mtWv=9P#T&;8yF1}U<+)A^Kc2`jiT*BCddY*p*%E#=FkiJ!VH)V zn~mIV@I1U?9!0?;!O!_B9BB(hv%-8`;#z)<(8Rz6tNa7+4OgVILfVpW!;B9M3)sMWF<|28|#b z2ErUz0J~u?+=M%jW&(MEQVf2a8}i?1#f}*~m!b z?~r0TZ59eb5vT=q;Z5iUV_*WTHF5)T3mkAHITP@QabZ8F|adC?l;oEdwFcXfzH;`gJ*S=7|$mfv7p)GWR z*)Sir8o9&BT}JLk?uGB+2k>9Oc7V)~9m+s?Xbi2OFZ6@Cun@Kw`4RFHxCoaa(L%2G zAP*FRI`BFSg^{ot*1>T&1%E&^WLQL*p%jF|8_)qFU>@v;!w?Pe7PCJ?NoWo2U^dK$ zy>JlXEull8JvTQkZdXYIE2BA&=dN=B3KH$U^kqHOORq2`!O_umarIB zz;(CpLJ_DA zb)X$|gkdlemcRYoucm`g9D!btyv;=LzKo9^XfXQH!Ah$v81oy#XP;L*#6|e@)K~K;N zB!bZ(11tr{!71<*yad(vV%&gMz#jAg1HgDN32X&Bz(qk`g}ez~fp@@QpH9|*GzKj} zThIp#07+mhSP!;d96X*zfgMnZK7!Bru#oz!q3~qos;2Zb}>Kw%Q0xdvm z&;xh@4HycN!9=hUtOcjQS@06P1vL+0+yf8b4dTH_umr3CdEgu<5abic=RhwTV-%=B zW8er}fDh;kBEbkS3(NuAz)o-)oChz!8&K&m`VLqNvbi8z3DO?Y5%dFtz$lOc=7FVP z4>$lW2=XfA4e$cI0o)OtEC;C%>Iu?Zko5)GNRUk-ZGkK30yJPK7z@UOMPM1&3l4#c z;0kyGo`Z5nb+RI4RnQdJ0(U`n6QqYAy#?7@ko^TYSdc-2422vD#)9!+F<1`h2SyHo z+u%NU2R;J59JDPk1s1>_ID!GdAB+JhU?Ernc7na&k|3`N@}?l~LKc9};2WrM4D$@M z1`ePn=nW!4JeUFIfVE&FI0SORQ}7a$KaTPND_{dU0(THB$RUu!z*sOIWD0UEW3NJG#Z zv;w_=A4mdYzzi@4tOXlE9ykYHfHy!3*IQ70=vRsqI>G=WrtcEAbv39`Q+2MaP7G7KaNax`Qzm=6|#^s!0_t7Dya!I8Bk%=%!7vaF#)HXV5m*McfE^$k1JDMv2Ohu&go2@98khw# z!CEl%HpVPu9w2!RTmUx&d0UY81^G~rj|KTukS`%$gCBy_3Q~Sum#zm{8JL6mzy`Dg z&Oi-31?dCX2WUVzhzE&a3YZ3#f=sX#>;Tyy2b>3&!9DO0yaw+<3E*zPH!uWs1!)dh zA2buB9b_BeB1ktuc7yZ;{RKH#kU@eB735IJC@>O?2GayN3vw=4E67cd+rSAyo`Jjo z3IzEC@;Ue}NG+uNCe}ef(iB*LR=^&(gKl7;AOj#nz$7pgEEVKR$hBZMH~>z7)8HDo z1)hNC;1ehYidz`#ppGET1ZfG`5ZHk>z)g@{A$x*>z#l|{;UER1g1KNJSO+$NgCGZ7 z0XM)S@D%(4^tr7JY0!PB5Qc!DzrPhRHW0k<4Hk(Gm|uX6CDRSq6`$-xs;IflRpR0GvP4Nw!*0=0oL zr~~SPdcXvj0yBUs6sXgRmS<1vG+%1oL~7WRkE7VUw&HJ2)`|DB>uRx5gtr3G;D6DJMc5phOJr~ z8XEo6(dM5N|Ks$wbf&$L?uV`aFRVBVMgC`D zBal=EUrGGG4H_BwQP$r7ZT^4C*XN%Ul5~1fRT7m12TH=aAfB_EgMqCS2l_ur{2D3c zYx7I1)gx%^FojZ~)h6Q<;_r`KEglW_!XsOAarPQcNvE*_N0*yg?T^wkj+TbRfV@Nu zNhE_~ZL*C1YI!@_qkCzV>QQO5dX$Xgmo`@y(EWX9{_CN3g*cm8p;RZ=&2hcvsD`#g zi+Ki#pP@T34~2cg{X_yCMe@=LzS9;w)Lzp5`t^3jH?8*P$;T`DrDR<~9p6r&cx3LB zIICcr8)#ZQlctxEYvl4~Du|QSyYujsW zdw-?&BgL_H@SCQfd9+&dUs^de6hi3#1*q(N86r56zmewIF@#*SEh*)wlKyJH@_*@1 zhvW`?nEy+WWIhUoAhlD-A$5_MKz{gMD@*wIp%r}T#2(dZ^Ejq0Fn~RQf+~XTOX#l@ zLtT}rsj=!5oP*|%i@V{q% z$v|s<4;}P?@|BmRpgj>QqFA-m5?d#)!`hF9orG4#s9m=h8m}Ck0Sp2@kSzJD)9`=I zM^@(bLhov|WL=xgl7)jZQ7H4*)N1#k z!mwUuU&xA0UY*1<1W>*D;GIT*$iH;gWNhid7bX@>>{%c69lrRiJ(#m}eY ziu}p+2lK0lQmn)jsx>X#LW80@luPW=JT0y!S0R68F~1p&By|p@nd#Eti0{O|G+r`1 zQLZZDnIuu5^wmh@f0r2Z6u*3pm~L3|h0CXS4e=CnDhxUZUw%eGib%)7d-@s#GIXPl z&rrbs#h-$Z2ijNYQvNvlte^ma(f%cT`|1+^!(V6Uk(;IwD1ZRT5CoYa({~BA6kRA0JU0+0(vXaw78aKxR&L=tw7&!pl>rw0!)e5G9UwTpaA7S zc~Al9gNnckGzR{FHAmIg!SW|g&6IU>m=f>PI9of8E9by*2HiNWSrWoAa!x*5t~6RL zSL!o`m!Y9TsSHqX7Jn$X*2ffFm3#%~T%#OUy+yg^4KtB{7stu*4LgGe9A{L_ag8ix zoY5^gR~ui+o1baM`ByM6u3&6lT;2-O9&|xC3^EO5fDK^3d9m!E`Ci#+^G$dcR4lt= zzEt)c@}+sYtk^t7_T7Af%w5Lm8-!@(9)^qylkeQGcT4h~Segi81MBWuoocrJ>TAFj=_(2&hex$`mhOY~9 zsoW%PGUqFs!liLjx!$rrxIVIJ+;naxcb}WZ^^>J@17x$gIow<>KsJvHmM!4IWed45 zSq8U=TgpYtmT|GN6)n(`5U&IkNrS z0WO<6%$?v)fs^=mip%59fYbPQhC9oh2j}qbJolda2tMH7NA45%nft=c=e}}BIi+kl zH(9<#o+jTapDN!b|3kiAK3#rZK2v@{K1+U4zDVu{j+n2OAD4fX7t6oPf5-#OmY6L! zD`5T1dzlX~_c0%2?q}|A-p4%Ke3$uo^IY@S=6{-(n13{HC(~HBmpRHh$QE->vQTTa ztfQ=xEQNEGO_jOHrprFb_shS@KgfT|N6UZ7$KWDitUO0?Nzu^ajJ%1(FxJ%KPiAM~ zVKLDn)gr(;&^pL^m@L?OtZ9h#SXrcXFIklJa9Omqmn_EGTNY~_XPsa@!g`#wvn<)# zMfSn^qxIPJNv6}*PhUS{y+*caeW)zYuu-!MhRvFdkSEHQ%J*PX(R_J^{IYzV{JK0- zenY-kUL;>Be=nae|17^G$CiZZlr8A&6h$?|zr3+CG_lq0kx>i0 zpRsG%s&$*T_6|n>^6o%PXeS2#cV&A+#|}=;F6#e@)sFvgQYS-0S3`V#&#;SOSIRAdOB|IQ(OkNCf1@h?{BD~N`Mef#|-S%~&G6u+A&>hb!Mg@NEq3+}%= zusq`0oc}=&`hLbpifexq;71Bm5W?kOF`233h!?uT?PZ1v_@L4yi>a6IKnBhQt2YH? z*sf81jzab6M-K6&)L+QTT)OfRV^*N$zgI&sjyW>*cgkvLSjd^N0PRse6Mtd0Y$wtU zifKbpe7{pkuVwh9XZ2x9=1Q14j{+48nbHi)J6@e{QoK6iWTHg(0*|lXAg=x@W+fF$ zH)WS_D#d>?^&*PvDJe!Tv>PdE#7CKy5^?Z$&XnbImNE5hidI+X)O@ZKd>mYWmn!u) zQW==@iTpbsx=g@2yc@}tbUPjT1_F`#bn0hazRBn#$O}3?T>9XM&rOB$cVCo+f z(mz4nh;wj#G<`1_;8@`bvXShJqESi{LsXu>%F$JaUWjqHu*yZcP!9dxB^|JFi_Xx~ z($$BBA%+e``HPffyo+Y)h5HcS!)3|~8T|`Lp{rEg1yr(m$@^sLWTc?W@fVj|qviR> zws&Ne&9nJJ;#Hs0|Jy@%6%UittGq?sna+G^sY*05|Et5CTE1jIO0OuKBLBtIGY=pv z<5DooD5Sd(OXe?OC~gm{KgukZy`Lyc6GK!Qt$`V$T*qWTK<@*S@ve`;Mmf$UXbs)B)giE* zt$K0}6mnyH$5x#|LD@t2+)E*<>P0>P-Fse_g4H7B7<66vBLCwbXTD0we?PeSii)SA zg$l`_ftWz0rTM4MIF4is^bz$rP(pwd2m%TMWAg!JY$MzOk=UV8iW?~?1-b+We|s)j z@T1Fz>MYGA?>R{3-&Rwv(EF4eO72OSu`d7#I?Q>K2ozwbk%kg+B>%&k6q-_WIPG7t(oM0wbalB3WQWOjsbpm-C{AvEZoq*a#L9 zJ|sMz4T%km31bn_iJDjzgD=F#vzUaa;CRM=y^bZs#2|g7E~`50B>&)rCxckrg|HkS6!#rsD zJhYUt5#9&lA{9-=%F!R)dqaHfU7d0odJ7|FP!W20MLot<*RO;HM!!7%RAS}n96D3I zgEDeB;~)jdBAr3+FJ(-hRwR97CyTH6jCcY6N`adEYaRbbpZ`nmLZMuHhRjukT?*8s zFVrjO57XCu!5M#{EZ}qDRqz!B%=jx3{*OLhPjTQc{^Ro?R;^k!re1XxxvGj$K8HS2 zU!_zkc>x7#(xBnr7VC;lWu{`!I7hiqvPBda_xHtS&GGq-?m}O;!-cPfWt}ScwzpAt zlgfsQN~YD!8ihqg#|#frmMd?7F;llfEj_CSwT<;FR;_2Qsy}hU*oIA-(gk~`&fR*J z?S>H?q6r-mK6F?_EWR^3YV;VqB%VhpZdUCY5uq6p7@-VGiq|OPG{X}#QNbGK8XXxJ z9;M_roM7IXxP*v!e3dp{8LNqj)x>F{;sb*sG|U4jfy(&!B<7`wjSP>A!=@6-5KUCL zCWLunHU-iy6a0CIM25%5Bi$of8J7?orVI^_&?uv0l_BA=n&9~8*rZZTOl)+pCN7S- zQx45YY;+OFdIv@%Xq55M(aH#X8CZkw_~OjKcsR!wkohy|E3!)ZvaOOY!-#Oy!ZQJ} zP-UbhlI)`z(Fw806_gN{#JWad|BTp#7?epFmxRqUB9*~`5fNp%kP;Ie8yJf(;VKiN z0!IXfNAQ*I8Z{y?A{-}aG{ab@*yy;pW+57KM_(KshVuhMnng$9B)*0^)67+@CEpsb zj5g~O9TkPDQxj2};_Jjo$`}pSpt7c;{WwCD*vI4d%%KT!Xvr?oaq-IVIAut5VpM4) zAu3iA7#zlzR2>om!*TesvJxj?Gll43nkZ#VI9jZ$t*6krVt)vAK)d2A)^r-{7!e&j z4Bg4sEfymKbtvmUUAiy?$~v)Y97aT0)K@byUe^$Oqq|}25$e0hz<9yE*qZ3ogh-4l zrWOKdO;nHX@#v@_%qJ-_C>qnio$469Pq%bTflP|_cWMEX1GCBqorS|75 zFZ2Ow%6CbKCN4NOJO*P9Wi9R2j)5V6Rnxc%4hxS6QHn#7GKtN@56{vOS>~HYK^&b* z%_sFxI{rd1MEJH%j81^@=-}XlSmqNShzY2hW5LlQFnMT(dBvjnqZ8tk=wl5{mfvPp za3JPt1d`n8bxfRVv=5Ai+EUkBk?6}nOc_iB)SUWIH)*7mtw?NfqHIT3Jg8xoB+C$P^}-E_)meWqy{$u^wm$WmsUGGDw5oh|{1>@Zl93 z9UqNv_zV3{Eh>~yH{r{AhsJFX)N#}@!a$2dn`+`w(75>UDBbcR^amUZBebVb;j+Fd z^_dupVZv9RUqJ+GrE0$7r6c0EA5)k)Q9{vb^Hl z{5vJT5D3l0#Eid}%|jEP7#%yTboz^N>Gc1*^(9Joo^&}0#P$ZlP|@uaq~x!MBvV7E zF_xNO-I7(-3RJ4H#7==xe2ZwJFik?SzAAMstc(jwi07B7vZXCB0>cYCL7YAqVZaw85yk6grIO3vsgF76C%;e*kFS7 z;k#W(5??X+*EYD$q{CwS;+2gJPMX$(w5~5g7`0`EAus$fN zZ&(6zj}2!&f$e4*ONe0V1T3DK80Lu!U61Gym^#6fKOqpWh&U&f58%Y$Fgi6nLOfYRXD89=32`Wz z1}~J6LG%sqm=MpTE*U%^sox;{jq(`8k~DEFDjJ`h+(*-H(Bn86e~7|z zo7K$>+dn#9(7dZZ+qLa*+x9(QU;2@=C;RTy@oVqyd11e&%f|u7dpp$0FSqx-(ffW& zJnL*qvBr8#iELwdp&bcpRD3qQRrx+UvPvEBi%H z9sMDG(2>|33u?9hwc|lb>uPzb_2us^nb$DRuHh+L|qTHM5{cVwXl6x-5CPCp)WEaQ`zWcU3lVIQNJ8akovkJmMY) zCwiV;I$-twoi{#4+k}aeCFsvB4F$Rrz*Ak>PAqud_+@)|H0WOC77I z|2grl)!YVoE~7V}waY$ore?(>%N=`EFe%GYf;P{{fOxVmnF<~<~m){P?(We{j+VdYa=rl69qFi~s3i|*09$2S0F*P$6 zcj&Te+@vW!F0s|EBfQ?m_MbNi{O5hUBny!`|0xRUA{wRg{ZA~S!p~sGu*|Z~J8q#+ z`a+o;3!6fqJmkc0tC*`t6f0?5lU?r9h~01XnFZa=VUCODBS9*42UCS3T{g*b(WX@&w%Jdg&yu*Y&cUsRrx1PXU581G#FH+g=hPZt=&Y#_w z?ZA8{I(y*qIcc5R31R zLH4a_0iF6ZozNf+iIhn^p$Ed$`*h!gdY|srF!d+O%RixlONrNI;pviah9ta363&u@ zvnAovlJGT2xRAo80by{CqmRBR|7+hl;n)ytjILZgar@#8G8ubR;>*XOI^T8K`Eo02l( zP;=>;WD6fJvzSBiDh~`zS=O7%;z_qCk-r5)jZZgm42>=54h-EBN__`qWwKaiWhtfU z6(^XnoFZh|%}41*5uL9t{F^h1DNUdDlQR5R88>>==|xB|qT5P)tC`a6C#Hl?+?C8G zg`@`ODK2#CElKzZg|US%e|!BCA0aC=#@<6yiS8)rH8JH;XHXIc-5LsP#(gK<-6pCl z-Atph)A*u;P9(jkqcVy*CBifYMIGJt5_OcWl;|jrsH5~Wd}$)BwkgZh^0%>gJNHJK zuwp=ZxH+kj0#5?#6r-CG#TiibZOzqAWafF=t5jt zc$#Hm0V$pIqD?%(U8?7YBpQk&+I^C+G4qD`el zN9lD}nenjpG*@(X&co(&!LHb87SOd6^r9_G#HE9f^rEi5L`UiKFaU|^W2m8Yep(^y z1!f?f4$3F`Yk+VoAgz}Qaj8Gji~br)bd){-ZAExFmep$weB}Vri+=DSN9jhoqAe?l zE%NUTL|tQq%L6(nJrzFQ*F(SD`i_3_lzCy{9c#j@fDhEt;{Vkw>1zO*uT21%9S$gc znrJrbhiEngCR2bf)c?*b=|!_m5f;r-`dra$T8U^j8zyf7zyDyC^kO53r9~2d-g41w zVX4^~<4jm{(EC4_CB10Y8ew{Eq=VAeiDvizL}{l~rpAqc%``x5FZN+GgsIWQxDCQo zTrqBoFxeC1%@HPFV!VYAm$s@M(xhXJ@{8qcDbZ2-Hk6ZyNH$>s7;m&l)j+s8*o$;J zdI72ZR)|aOlU}snTB4)$Bd|dPIF*g%c-T${q!;Va2H_q+>ZdK@Qa_{@{m}J?sH5~d z@Ij&}{(++Xb7NwJ3^h4LIqK?uZV!odQnedYZWG>i}H3e-4 zNH6+vM7R@>`sskUXp7QGFZ!WtWl=}zMs-Yi6yr@;Or8Ogx!`yB;Nvu?4V@XFgYt?# z>AKerNPW5>F50DZ(u+RT5*?*m!X_~iKIxFTFs4M<5i~)1OTj1Qtp=)tjsjAjR3@oU z$|L%8mFOs44Vztn*A)X617t{>2Y*?B^r9a(ge`#7k2~U0KcpA^be8BS{SEqzh`9zo zS9N|$;KO)=32#^Q(*=1gfz%H@X(jbTdeKiegew3#D18#@LVmJgSM(Eta0-|$v>)Y@ z`lHtiG2R_vic9^|_?7x6z39KEL`UhLgnBwoG+~)Hb@hA#-wg3(@V`MQ1GSIThlj)t zrITLt;VIEk`VQD2GH)5MEFeQ#7uXL0q!;Vrg|I7-`k^^5tqbWzKi(1@rC)>(BEN1m zRtU&X7JQrsq!<0r`bm92erf@_Afs0deGm&Mo%Es~T3_jEn+{6<0v|+7s&3q~06aN{ za4VpwYs!BunetL!OY1`Gva~Lw7k%_WxDud)()D4dGEkqM`hiut#L3V&V_-i6kY21y zUxZr#sh@s`OZ|{u^wS^V%76|^uMHpcn(jDBn8Wb%1U?wz4WSeBiT(y4fnH;z{{A}N zNiX`NvWnxK((PcAP-jjnt(Px+#Q@Taeg-1k97z2PLR?xe(u;luBP?F4P}2SzsjmPZa7#c}1Tg2-E9@)Tah< zsZY|2K0_rsO8)~kiGV4(wj?_h5N-e#AbpkKlk!S^((8-V=McoDK1nb743p?6eIslV z*Cam2Ae;gA2>vLa)SnCDQh(uyOZ|~v^fy$Zqx562Nw}t!)$uiaRY3d#(r*hsDX-M0 z8gZ%5VTen8l3w%~A<b~Hw~73hj|U%@BkmHMP>NvY2SiCs!3z36j?UkIDTd5O<>gww$)q;C~`QeLS~N5rK*M@#HdI_X89VmLFZ!J%(NX#@ES*F#{Ln#mG7-)O zl>Sp_Ldq-poQyDv_nXfth)aEvUi6tJ(NTIO6H}gm7GzOpr^ZaY{RN~K{Y*ueE+<BaMA zNOY8b3C%U?@390B^nUx?t7@`^rZBis;3ea=B#>XY=M&$&Vvf#CR5 z^91}Af=0;m@9dKP@9a|gcEN6;#I8v??s@{N|6rH&e`lA{UkP@LBzEIrGaXPp#de{- zpmIp#biOp+7;$O+<{>U^H`0scn2)d#po7xen(ErkcXrwMC_x#F5qE*E2cV+~koxF~ zxYP&fMIYS|t^nwu^Z|m8{SqGm2#*08=%NH4WS=kwb-)5Z^`wJrOZ_iITqLVb_S?&6e4ONY%ZpbElLyGs$5+9kbccbP;-=~=KzxXcw+C>VMU zn+nADBK;JggO((zkL8F33n0@STTwH?bCf7oh|;jS(+E zIvtdcI;A>T4Qc_Yzcq+U8;A6wzqJw_rT+<=#0l7^!v#bjoCaPC{%RvlYJVN#Qv0O; zJNuO0$p#zy0d>YE8jmhWIuFy&0Zl2X+4YD^&5~X;yFsF(^d2xtsEf$#b}j{J4d!Ec z0Msl}yBiUg+9kbccaua%=^s#K;u`Gm2MmotI0JkWnu8{+)c$6~rS?hxclIg01Td_)(#9dZ=x-;&y46p2 zUPahcpWcQl9977WsRVwE7n<G)`rd#_23+To3Wnuyq-z(|2JU(ZdW&De#IT zrSxKUKjLD?c_1vU+yRM>(n&8??w~|R>5t)zFkDQ<)7jaNie3Yh{u0nZdBwsWLYT@T z^_h*hSRP83mi4eiN9iA7lSq~Lv_`lKxRY*%%I`s)D=l)M*@jPIkgVQ9N%EV0uu5c8 zu%1|YMUV zn5H%PA!wNi#W_*Jc|8#q{ZVTVM>_Eu<&~b7Ampc>OGbE(5U0yYvP)&6cF92c7D4AG z=%~KbE<2HaNYHs9F8ZaH$0JCmeLU&t07M-vH>aS>7tW*6BkBestb0yu-T`z@v#ZFH zGP4#tj`Un`0-OXi9_dk|k&yOSDyZc#Hg3^LVf3hy5(!jUD#$622dF6Y0(%-L0U4(} zGytfh@zPRy*+dOTPLzQ1Q02rh6d-K8JbRDYrbJqw(` zKNyvHi1L>`oRvj!;nAjSURP!-pW=;2jmN7{QEmPQI$?$XfzI=gmV!yDPe2_Dyk}L< z%l_T?8j1_Xvn1hc3OhEyiMm$9n^x3Tg?K|iM?z2&8~f9CUqRjcH`^cXUofuWP`C6k2Nxwo&DYYS@)7=RyA%HFsnX1`5A8D09g)Oa2|)Zwh(Uc=2zS`9qE`{Hx8(e}x{E9bt59b;7E?XD)- z(ZPdGZfyFcg>if>r-2vE=1y7C^5Bi_11~j*81G{@Dsl3BtBfwQ+HXJ5eOSHcM^DVP zunIk|e=BhIMvET-TgG&;OL;wL(4f?JI}#?nkkxN^FRh;D)p)0=^-peDaP?z!q=7@n zPZKA&RN4)qFxU}++qO_}CarL->#}a>vED(Ou6mSDbZ!${@T*=2*^-V8Zsxb`QmtbC)t3f$m*l+f zdM4IKZ*;vyDYufYslGmV{-v(hugC3sB<($17_snR`5eVw&yB}U1gvm5zI@=|;08nM zY>)mCw#O&J>D5k$>d~*g+ne{o^WgKFFL8Ane_sFa;O&b1$47p4YxzLW${=)CcbhtW zHk`{bh(GP-;9u#=-5*yE9L`Ddt7sQc_Y_-sBPrI}<(F#3kn^j}e-yu1JG0o*?ruS? z1jm}g0)L)1^RnISU2g05Jss=EaXLZVM$d))i&*@o>285sPd-l+v)!K)dMn(HGI(#?WKhff6#GaCF1Fl|fmh{AD zvBs@{v+u5sV5ijoK?Q#dL*{_wR~LuZu9p|d)~P_ zKVx?Kw&63kzRbKncUb=AnfZmPyzRCF9B1yEmoW3kqc5{UnpXQzZGT#tNl}&b%)whd zO>$?2&3=FB^44P;b{SjR+9uYndgNELgqJJLWz!7KXa4y-K6=lMk6VlvJ(_y4&~wA? zeTCJ3j&FZr%w}+ z#l}UQ4^|keH!12x%&6|Jjd$&_(NDNrzhRvdS?i*``YSxZ8AyKa~inqLGo+Yu`~C7sMV+KopxDODti?v%uR~4yO^x*=gQl5#_w_L zJ8Gipu!a7;Z`EgC{$jgvOk8KXd0gkumgE2Yv)#Qr$J@3VvFG&q`yUs(2fA*oD$h4? z$~*m9ZI-ZR(FOZQwpCxYUwJ6SuEj1VWBX~o9u*EmddjPGj6SNU_$9sCe(R($3me2{ zCH3Aub$hmX;^GH}73SWqwr$!j8|O>+%wwzhH5fk3=IQ;qUQ;flt}yQ0cU0{=72>lO zugIQ0w)=~AuSdQ9ZaV31Xea&PE4d*jIvbn3t8lxfUEB7Z?$ueec$aVR@@>wl_9%)L+}6-1`QqR1SB1=Q(=95@4eNke~tRJ z^;M{O?#uaZ*^eil9=+~z+vFWq+UeZ8`*yi&`$rs^WYJe6%h()du=e8H_VaD;ZXNrs zNvdts0IR(gHDdzx8YgtV|JtzTiooU@&R1V>IPjI(uU7I)!SYS%1LO8MtcvMTY5DT& zH6Cm_mp%FX+x6B#0hiCpgx!o;G*lk_GO^>%OYE>w<4{8=og#ZqKr6ksbN&!>hh8wWnGIzOnih z=Q!r=?Hb(%J>D1cyv88Ij)m2olzSh&b$hva)9RX@5qI-F&wcOssbk)rLqp%0w)fPO zv$&vMo@90_uji!6LpyhW;uSQ$!-thYm)sl97?3$Jtz`AyykofyY9`N#KNnuv*} z-#@c(s@bhW)~u#09zXrMb>iKy{vBR?bs0a;q+yRQtr~~V`>L#|{(4O|!e-c~>@c?K z+VBPyt_}U9Y`O2+zE0Z%nU~EM2QzoK1`FdoEo!)=O*?8@GQa2c*?SgTz5gl3%{DXi zwSM-|Ned6l^CPz;D<++5v8&Om1!{+%eos5A?kui&cC%`vm({1n3ZFZZttX)YXYY+qqsEwB-1OSN?bSuAM_%mMWSC3q z<-e2%CVjlU`KH6$X&%+ufBk;Ow6}3&_ZFe68}3~A_+|X}sCIUp2HgMpOda+^Ir6N> z=ZZfT?)r6WOK%sqM)SKIY}d}mZ_12`%6%J${pvn{L4Nj-4SszW*IXIgc;oq&cONe5 z-L1*GZ>ko~CgVO09@C<6y6k!J&luZAih(r`r98H_D%YjvvH6yfr=B=hKi1{mWP`l7 zXTIqfm@Cw4k~+K8j!GN!s+Ygr<(wtgXC2G_5YpO6-D>1$Rlw3F0jr-E7u1UgHb1_* zTGi!t4`r7g|Q(;pU*#wUftFAdzZ0O8vR_BYc|8_qdK^A#dxjFqRmm!?b`k<{uFSp z+J@r$uU7VWSZ`64VNrJt{YIZ^Yds{g{WVP^#q<1oc~u&}U#(^5=NLHbsr1Gm{KtyX zp-ac!y;$ke?9A1JYu-+?t$wJ%)&aeaCe0iD>PGt!yKEfVCiOEqzwlARlx8h#KCR!{ zF|2*lp{LIGNT_D=-ezRmj@5=f>osTJ(?cuEdj-VlUT(hbF=Ts)|AxtT(q0@r@+k8PGF89^gLl z=jAMO`!9-ZZi(kh+T3h8tmDMto6U-*s8h212Q$YbeKHdpYN zWBTk?&i1=Ly~hLDnTJ~{9mp>?;ZT>L4Mxj1#wYBple|y=-p0a}`prUHy4#(QnfHG_ z{Ya6%Dsxdc!(aHkp~Hc?1#8w;GWalgW%&CrtBH5^-TPJEq0f?wk5+moU-0Ax8+m=7 zSbqJ9J+jP3`A@4fnqItEJ=r<2e2;+KJ>@q9T8*k*R5Wa&|u7*G5)cSCm&eW zGj{iYV|7dRFTXm{&-cxqwIvmY3R!?l+lvnEE`9!fwQb_@&Gnj{?7w_S*1(Q! zS9`iNnsD{VlI%sxW*S|u8E0^GoJq4AqffBBVfCi(b4y=oab!o-&fQUMhT3lK(kCfu zUiOs{t52Oi-c|Fq*uZD(gBk9o72~d->Y3l;?jeW9UhW4sK5saGi{kO%BSqK0uUy=# z+0aMR-vwK~oxFJe@u@jqY#MahBsW{TCjZ0IgMm2{dk%fE#H;3?vu+FsIrwc=L#v1F z+O3~Fe`EI-L4NP9zO&7{^VR!nc(lT~U&Zf-51_A76_sSMy-x zr!-aIO8McUka9Jbzsg*ZFv_q1Ek{37>!Z z?U>N2xBQUf!9R==ds!9Vu6TS%uk)Mz=WIRStM>DrGw(IG59+(D?d)&LxyRE-y}UTu z=|{*#i(Ym|JQK$~-n+rQL*v|Vp9fu1o>mVrtgvlWgPoE0e>R&G9%`YdU(tQ>uKPJ| zA(tLR^xbw^X>$MTkpV6<`qoS4uAD#gc=xbzLs#8*)AnoUTCug$^$WYRH(Y!fdnh&J z`?hMKGdf2*9u0o7syzkHX>sEZTYJ4a90tZd!gv@TcND7Mj#fSQ5#oaa7k zn$+&lVU=5}hYo3(-IFf%+IPmz_RK-^%yFkp3cp;=%g#08F6C`{zOw6-^ty`=dtN*D z;7-2%or>3+HT?X5ht++&T`6~m5e1{( z%#0o(FGkwg%{O0BFz0Gv(^i>R%{~mDs*bN%Z+ffM-Ic?SoV;Z>B6r4$)&(}UiGNO%I%2(0SQWvU*{&>n(_RPtZ$n}job9C$H3!V>P-LRhwRDF zT<+V$S2x0oucc=`7`U#PO5b_K(+bD!0zLK(c$9eYalx!UPh)f2r44m%aJ9nfNj87f zsqPvVBe%5IUz6WrMdOU`HWj8uc)WgUVda)sJ>ULPsPB=8$}d{&YrG}rzSo#Dd#5Q-B)`^)s!ES?F5aJ%YS|n-3SkC6Ess0DluHqYzmoH<30_ zT)2<2TN2KZgwIRDwAtG&0|L5*d>Np~Jao7A@D?-vo;}^SSMaE(KSfOqDB%jAqf!{|_HLo%n)bWO?9ts& zIuzKXkd*Qb;mG%dg4N3*oo;Jir3^S+BcV!rMkeU<6Kc9^fbL;-hpHUxlTyAP_SO3- z$kl;aKCKs>`-FnRyepD~ODLSi(JgJdv)m3mpJm41VMdTOoMXn{TGy2tcc>Ak+v&Ow z4^R-q>0<)=^sznoGTV&*Xn=0WI)YF55Tq)k63}gRd&KEOd%D@`1ezm`u4e;*?pAvG z3lvB{eKEF^HLS<3;|HQCLC+Z(_yy$}Mdx#LTUs1Q^tifAek?gZaQ9%^Cg;Jbht=dXEuPyB11me}a>B}ykJrFz~g1P#LW zly&$Pgw*(OPIV zS_V1;YCziK^B!eBL0Z}?HlG4D+@TXkW7!ZdBAx!z`uKMFnR@I`Z24P+1oIwyYm_S{66^mCl$nKyApkYa)Yb>Cu(}x>9fdim5;!ouFfb;}(P$ilA+6UM*^+LQC zp!I-8AO~m&lf8GC~K{!U;SDjQ}0b01ay^rq1~Y0~|gQ zEu?^~2iv|2 zM_bf+6wqyuiZ8tIso2vY^_zHZ28F88_@slzs?`@I|9W?VG(uy1qA)p4`CfV=g{sn^ zrjzWy>rTp|ROl^ zE#_PPw|n2(kFbgNNbnrpbwq=4gD{zBR}DD^WjS=C9u|0gETWaLcvitoF~Cw{goU*_ zI;AESq1u==b+EqI!y1lnZeoR2V(GNRa@7FSrXi+=6-IIsbh$OU+Xh|T93MQ|VL@nx z$=?R^+8*<@9p<4Urj!$NW-fRHpd-Hf>59z?+_5lp!4quVFz0(WmG!m_G|(*mRc#W4~Mt3uQwXZtJn3Y#57Rkt~Wuvlx7tJC?<< zc$UCMuta>|oy115(QFLX5&Z5BX1h#PS!JlIp)yvPs2ZrORjpKxsuWeKDor(Am9Cnt znxmSlQr6E@)v>H=*~K!%Qe&CPEb3>moopZb%Dhy)RNksy3LllP%1_l>)koD=)lb!5 zH9$2`HAppB<*y1*1*$kjkSbUeqSB~BRYO!^s&Lg%)i70rY9sSdG*`4xxGP#IS}R-? zEfsDGdxe9doua+MQPDx+q;OVvDqIw5MMp&^MH_{kqKBfpqOGEfqNk#(qO+o#!bV}J zFj6#B)KJt^G*DDms1(MEI*PiAdI}STslrTQuCT>Vu~{fA74;Rh6x9^gil&O%3M)l3 zMPo%HMH7C&(`5ah9{>ODf35Ze9*4-olLnV@xpog%8-=)3c)}jzCGZ(m(dSr2U$Hmr zHG9k6vG?pF`@lZ2FYGh+q4~ysuo9+JX0cUx(sDhsRPMzU%{I1?Sz7F78(4tlDRzsQ zS?*voX4bMjOlE0hX<(TnZ)&-T9b_BjPq8QZQMQt8VRbF%a9u3RTW)5DSVLtd%fZ7M z*O@ox!&O(-P?{)BmBz|C%CGFKN{gRoaaC?nIw;#IxgWA07Rr6BuF_1|TzMSNI2^^6Sj<&^B6Y&*LpyDhsT+t2RH?#l9HG5q97j#(0*^1}R}xk9t1A7+)e$_I01DCTKp%*|AO zcBZJrx#5bL0&KYz~{t=CS#BzI!3dV2jvdwuCKZ z%h+|5_Hk6y6FSw1A(Y zH`<`DqMxF_Vt`_xVm%wI@aM~3SLvfLQ#Mp8l@=IT&6WBJ2W3Unpc2aOt)P)dBhXSw zV^OQMwCJa3r|b_418{yOYB?CSUc=HA>o5yA#YU!3Y{r=0in*YN_TItD!}Dy#9<~=N zW-mo83tz<{))(#Nhw}Wt9)JI-eg41q|4M%TZ&9vg0o-~P$Zcesm{|YqjOxFW?P6m& zUH!*#2Qc>!@pF45cN8=I7#_~b#e-QV@tjp2X73ry<8zq3x>=l$mFWsUldofix``F# zHb0;5vHN&GRe<&CAy%x%ShN1b#pyGwSTFcB>ory_TC<9w67W8Oc5cm$WBGd{zxV$=nWaS_*G}mJ-8gO}mx=X@ z*1t7uEu;S5fc5Y1>c1Q7ANBu!rmKH8JIsz?_50sy|Np6fj@e>UY1@eCA=q=Dw)~|( zwzSQ#xW_J|NJMy$5?cw=UgONJc?)}+<}JKC*)dDch`8t|OQkQejEauZC|$8Vcu-)R zM%i1)jIF3Ou~C5$>|e5AQ`FEv+Txt-)5*MRo6?xLNi`LyG*yXhz_BNJBUM}@Yh@zs zogRVRyfxTeISgA;i=}Af=i8|fzu9n9bfOJ&#h$VLYG2QutY5RpW+4N8yR-{$7w4r* z@8s#(y{j9GuvUgN>)EWIlGiDHb;_$zP@fAu5PZs)xu_kP=9Y9A6@o7EjuwEKM!|5k4`@R-fq7BwDYcyuezt#@5w&C z-d#O9|DNXR>DRG`8$<7FsGs?5-b1lBJmXtkXkxK3g_a|MHWFKdBsByiUu8(XUXXm1 z1X)%aDmax{bXpqd8X1|O+bUmF^{3ILcE^^&YNqD57KZe|?!ldW`6OO4wNF3j6>@6*+{i+{&X%*)N&zmun*hcC7x zCZBx$F;e-6mnJqmI)u6P?bO51)y*F*>h0@KLlQeAhhsx+Y>geQq_cDxX=COXO>BI) z2HU8|VH5na?W?^t@v-3=*rjd7|NacxqCYY^1Urle>o)5Ci-~aBfS*c+{r?kUW9erH z;#hc8a703g#vglr$Hx1IpeT}p^P7p&2Gjh8;^9#!GIru0g((*t4FkdP*ss{%A3N#O z={R$UCLVi7$Hr6nDB>0sA_hs8HjOyF?FCL==(ipMu}Qnw*XXl^sCXOZ7c~qkV-%@rvv=Xg0jyMUjWHOo&d0Mv z{Llh+x%Lmzgau+V{8$zmjvuk`j|jvcN{PY|X=*U`B#+m)$3{m|Q~U4@%)jU`&p5tiDOv0}rEWC*J}OH`BHF5KdOr=7#bv@@##bfUH-3fY8iB`r0#^TjX)GGNV z5?^O@HUB@fy;*l#$+hQsYE`dZtK7p|za#Ip+L=yK5;dh#&h#x11P6&z0-$82?ZN^9 zkbsCuH~=ZKT;Hbqp;z~7e}VpF{rm475$6D;(&>9|*(oBX6XT9O#f}{@Mn$UrwY34@ zAD^GIE3^e#^UfrvUvxy#gQ@S$Oph&8&(8GPfI)w5Da8{3d1lLn&+uvm&+{9jK970K z4bYx#zI?f{$=Jp-KIPE@U)lK$zdicPPWa3~^tL}$B)Eng)E zg#5vi=c7?C>x|_@9ariPo;(9SY#kqvX~6Qlx1o^zX(?nYY=6ot{@_{uu%he=Ap*|{ ztQ4-4TK+{}@HmnG$Nj+ntKHbQBGUxEaMsOGtG&`v*?_Minh)&FjNec6oW$?hd%W5- z`3hXTvgWo$MfLw}3!gfa_Ofk`%DL^yEM<=Y(G~PMS&sZgoqQd?2}F!Nwe4Hrn;m-; z#r7n4tv;XgI*D!AP(FqYyfUcjd1l1*CSzyEj>NEjg{kxlEr>xC^Y4px4+DR)oD4s! zZ=QcFx>jtVf7>h`kBnN5cwEPV{OEa{$#k+25HMuH(Q-vy;Qa}(d1M!tQA{1MZ zFV8>;_TtGM{OC0p<~9^r=`1R6akX{;Qy3v>hW4R zQmjuQ+#V)AzEq-p4xi9=hUNa!cS{%z_reyuTLP-=tW5wnYp~o%*!Gs*>Gixac7z8s z9O0KX^{k~Zxt=mLcAzL>*u?77*J7Z(oF%2$FrTg_sIXJJRHjH$^QkWoZ6}7-Griel zji-D|vDq}zn9@rfO=)cW$ib{uqSX{*vzj_guN>uVF*!x2)Kp@3*7AaWp_rn`bwz-% z&iZsXlW5^os=QutPoxo~*}9XH){LznX!m9CeUZX#Jz0~*5+O6pO4c1-4Pk??hoj-e zU=i4mwM6kElg?6H*PWtw(^VRZ#0xsp@qJ(1pQo?FM!py?V9|{Mg`qb@8K%dd<(c<+ z#fI0q{8g|EnDfa)9x3Zy@{pUoT6MoB;9+GY-BkgSB36=vHXyM-#qt+`QPA=IZI_nd zGeTEw*0pkAm_-dvGB*Mdv{7GwQ#p^X zgbfixcznrmXPkKktqJcAI&+v71hwhK#Dr^sb}Y2e6LOET<)W(z$#OQ-KpgF*{psxe)4N5QV@=n+9`WOQUJ7wJFilY4$nME}&>Kr=L; z(*qKQDmv6ZA|Ltv$nPb;m-?mPh<{@h8mlWpv;5&7*<)&+C~KmBWK5KBOU_KGGkrcA zDXP*l{j)!m`b1>Tzg(lq)o-DqT#YX@)CK?0VZi;6f6b7tHJod;eoevaA#Boc(b1pm znw%Roc%y$>5lY?A2y4Z;FRR9x?SvhZex|A##vF0jM zXtky+c(#$NH-LJ3@rxEr4NI*iNbsJe)n=`%u$M8%`nH;5yOb$HYDah*4CicIp0;DN zo)6FYo5L~l7ePcDxG#k3e+L;6dJX{)n(8TApXc1~v5$Ic`>=K-%V zyZIvzcYWmHt_}}(SpfH}helvH9A?9->}tq=_K)c2>@#7ivFE&~%HQ=G z+q+&Jd)JG4`>GfW;%|DXVt=`d+U-p*TJQv#@xYkjvjO|vJR1*35Ky0uQaI24zyCMS zUE$hV4B8=eBA(lS@(gKiZhyo;-soR$`X2j}GvD*Y#3nX{JaJH@ zdXSn8kJ{fH`~ViyA4^x&WMqr*q#D085T8{e#6pCp)d+yt?RhnR*ecTX?BPjNtz&DZbgA8p%U>2LCBsSB+05xFHpwykn+jDy1N)F zvt*!pU$@Go9K!D}1%`+-UTlW@i$h$&3)es>)!q59>}cc-OfzfbyxzVZ6-cKsO4~%Xi0QV{{Fte?Q@qu;}n}CU}3}D!ix5$oSX=B$DKuYfXI&CNIaSLx#a8)pYv!kFV`LpKP!WdXnZ15 zc?B{%sPM??QV7M9;L%ha?-cWhc`vK{r$-N8|KV{NAdHTE^<(Ae^xzjf zuIF6K4>>`@TRj{0MAKrl+nsk(q}PKfuAV`dQ_|>yXK3>j&FOKGnX_S2Y^yWwTux)j zt8i09?(3AN5}o|>w4 za$e-+!QCRekM1m$olZKJQjdG}+nq}YP>Rgk{k+}mj5?@yW8%l*8PDgY&cmUQA9L%Y zcC|Bv(1g-E;Q58#c@FViz1k}IBEqwt28*OBNq4&zRp%K1fv`EOX{5 zmOi9QXKB63ioqXFFFL>!lsnAE;dC;ea*`3_M_S0U)a((kiNe0f z9uiGUcf>+mb_df1Z&CYV9xppIFkN0uQwt|BCesbxKutYtcBbuCY3!{buynadU$l5~ zng^_7oh=luX%^oPC%wUx=ftbwV5HjXlp+&)Gv^8CB3n>D612qf9F<%wOL2-XJG_uw zl;G8L3QanXw|L=w$_C^mXgUxpNZB>elGw)kKCMkrJ~f6{ogO>q{sQyfRB(2u+Ba-2 zrua_!L8sjqPCwrF$stOF>Fs?ve9_(o3HA*V@6^dg)5g3febRmdNPZ#fV5t?k^Hpov zUGk{-Jvpa&kn;1jztQb|=VhL_XJa!m^Xe<;4y8I-EBSR3@#1NRlZ+Um?X zB-QqdUtx5@zAa)%>_t@QYNH9-D)nM(+G)Q-j4ri2z2Noa;;X4NPpQiLprzIspTR?2 z^yy)-sHDzV7xZ(SiN)`0bU|n=^spvQqBNkp&{pf*^ub-FFK)`SUmKu=x?tDE3I{_L zf&YpW_R6RYLIk~nf@8VqDrD9W>jioxIIpoG7Nwc0Er&*)}tJrHf0T!7b#Ik=|>2Qa|%_6Zg+G8>A0J_J&SMOO|11?XTY8~t{<^n3{FD`jKr zG#P$EJ5W>zHH6bDe}sJyh_xuPMy4QJ+QI!&B@#GGz3B7(r79`a@p;&tt^&%TI#R~m z%r$zNQp3zWheYCB!m?;JIMV3#OH)7+MlHquQ5kqCDNW;NN2rub3xCwVZhx4TcJ9$| z#yk}b9~qky+B^~;Iw*!hd@*Rl|3Xt9Z}pd>4mz%)Y>`(3zDj6tFh>lx#4iMlFXS!yE%i0T1lO@ zs~iumCB5s92BkKZ7%fdjTFPk{y0ojpfCVHqsQiX7aYu+Z90eCOOmilph&K_2I_-TVntlNpmN+lXxe|tDVylE{+Xz$% z4T|$U;n=rSJyuXiA2(8%r9LzVL+lB=1r}%y%luDs0RaJY#LyHFO)A0+dc!z465b9M zn9`II4wjsUloMKm>9{n}eDlumYB8nFYgD-Hn%Nx|sjdD6RU!P$it1W}r9{L4!NkOp zt&eAh(!9kfrTn%z?B&GdSuSZhATaHLe?9h}<~C~|YL z18fPTQaXccbkngaC%z#xLhr)pWl&Zf8y9Io*pM4~XW>r^VZIPV2_C}v-~!%{>9w4E za0$D^ftg3qBgBukIv0ap%z$Y}!xI|cVu8H8loT-jF@g!YloYCXs}Cm^8bMt#xD=OY z8Dj8|6&0>^M&0E?47$aDjTD>?&pM-Aw8*oVi%-%fg(%1nWD=v((R3_SsG{2#sfJp% z!I61aRM9d9CXibYT~$a#tVu!m-ASCL9lpK5_9;}g+Y#5OZ^eDbiP+;XLd3(;p>cy@ z`*1jcD0l)kH*e{8j9!IF-k$^C9R69UeVUk@#aVkJ-AZip4gBHEbT+E)4N8LC>4u_j zJLw}-9;h)5;dl_>^>0T(mq{%qcx6A8}STj|`PLp5}gQ4j|X&vI?9x`aCbf^i&W+;qeUo6qX zhKi1cUAWzlA??KF@^;cs^Qe@3c!v3G=;N`@SFM&~xHJ!)4B%hdC;hlYC!hy(>{3Xm zxsx01I6&H?KQRHJQ$O9@-i#2lLi3Qai)mc=#_*=o3v1r&I5(l%njLl)I#I8zDSC~B z9AKc?M?oKQnD~o9gu*7X*qK3NLgrj&IhWJXO&U(C1GWsy+d}2Usdbp5)){b}$E-d( zHZ%^a-mYG8ux7)=tQ-AJ5uQoAq#n1Xmp5UpQ1`^?JLPok0xF2QE6&X6r~}Y;iuoa7 z0^z_$+-o|WFUOxkM^5v_#*raNwefB!U5#nDEILBH#mX7lQ-UG?*z^a@a~Q*iJ^%@~ z$!3w}&&u|(a?u#0L2dO`#JPxXAtEicXt4kydqSNkYr$3*r#8;vi zm9`Hh$QNH6BJB-D0b&)6{>|k_s1a}#lbj^%_NS1;Qc39d9&CX~Y$^#t7>Tka$k*xN71hOiMvkx~r@Y@PNVVoj;oVSgkohQ#w!&KTu#y!pNqNBo!#pt2zHAQqoHj;y#^Vx_)S}+rj zMVg(QU4m)gHQOQ-`LMiX57p|e4Ei+cKduSsO=wvSTZ*^4?^9W8wqDk@DJ+Fwov-Q_ zvVlM`)6cl5q<=5!{BNvWQ;H!C6IoE;IptT&3E#;5@hjSX2kGM_*K`5F|TWiRVS@< zh)IDT>O$)_J*|&Y})`|Ow35T6QzX*@u%;2U%;lmCC zT4;V!!VL$BseGf)u^;Nej1LV%9IP#>q+(a-$1QQNDw(w(X54Csm%sH!M> zZ3<(;7N?yZY+&ttJSH-UsQtO16s}#>2FvATiaCKSqUUg;MNC=~n9`e+vV%Y~#gI8x zwln-VEF#NE=Uj*5F_+W6&dipuNEx4DG*Fb_H~~qSbsv?}irxY;-1mT7#2QSoB!y~B zcstbMp))AjeLK}66(!Q@#BUBeAK5~w02lzREe4iF%CL8hqCb{D0z!%|91TG;DQh}E zN1`mnm*al1Mkfp(2?NDj`~Wozl)d_IjIIi*UZB|HvI%|UViCs8NtioyYaTRk*j#({)!3I*5 zh37-evn@IDmy{3)Z}`r&tjKGUwa37)up|`nH=2-M20+RoI1CzL6(@d_^e_)95`xHh z*NQ?qm_=LzWbZecr`dZpxp6Y)&)`MY`gwT%)c!uRzhxUiaTR8ah0T!J4ke>3x39&J zXF+-H7QnyuD%{`Z%6GJ$WxxD~|M(yO*Z&bOVgKPj{ty4#pI`s*`mcY@{`~rn`uXWE z_3T}}(cC{i%C_q}`$u(pxbx~8{pC;XBmeUp_xRA$G8TxZi5;)vG5zhVWsvRojb^?fOY8MH=Qlkn65AjkfT6fMe=9T*A8C;#bPvqZJn#&m^ZQ-BD76!pN z`J1qMfJM6oi~MXJD=d*YNT14{OP99nmM>`kq*32(pHy3|dgG{l+}N%+JgJErgi`c) zXGbZu>PhRgQTHOJM>cQu?RK@ZEFHG>$|6_K(!#>Onbet6F=D=YrbXwl8t1cv{E1SzFcZwg7LnrjQnTR;r1~ zlqZAQ+m$w0!*&E_&3TNp536s~<&~uUqnKosot~T=Ge`l$qq9!;60xCs$qk_~`nt_0 z_CL?G+w5A_mCOtPxoEq|UlDAB;5=vEpXo$>CDP_D&PZ+DpBgTDSZ(LSkg z_TZ=G6nbl^@LV$w*{u@0NR}O%$lH5ZIa}iAWIDwradM-Zlt@MJ_<42|@2twKkrDJi zXZ7)Haig$7KE|H`^0RHcurM3_xm#fd>s-!FkggzFFm-;Pzk7*{ln=76|NLKnsC@I+ z|Mo}wlO0VfIuVv7WUAa4WIb(zSroVXT-?sFW#WeFYOybtvYBg(8bDn+=#&kD%t>v^ zxIpEVYxMH;gT-{bQeV7bv^IuwKufpQ%A-6AaKbSzWC}P8J@)&)Wh>W49|I5|FL}ABJbh^Q zv>vJ}SODMYZK*bT67HOhIu~3Y_p8O&&hGXXE3LwPV6yKQyU)7J;vn0qv1tYoW-?EG zgtna{tFx}|UY>Pz@sbSm)Ms5p0fiB(&bl+iP;x&(9QX;J2+w<-3hAHcjQSi#%GHYa z9c&V~xff&cx2dBz7HoH(>1tN*5Vpmt-(v36R zM<@;sq`xT)wg}-aD!x$&o7Hv*%glKm!bq93K?rl9g=W3ZnQpa(a6S`a^>j#c`u4L| z%4KAT{6{RH(xO^KiY197!Hg{?o4Q)oX7(>GY`HgrGyen+MhAUOm(Vv2C?J zv`_GL6uvDA29CzRKf#^PJ{0))v~_X{w{R3FsI^Be&3fZqz5R2&aopa4D!0VwSzb}! z0bE}jLVmb^gukRl=z;fJTt&6fsDAK|w)S`FkP?F%CaVetp?a_%i1q$1gthL)S2CKX zTg}#f>$DXzTYHV;_iG(C5)YFB8)`Ls+?c^~0;C^rQ-}La<9*6GwN~SR>8&=(iOml< zTl!NuMXW|So;Z_o;{MSN+*kVuuS=!QoE|luS76CnA8^c6%8TPYk;kS6>vx2^r*Z+> z-F#`l*v9vfT#E=6+g!a$;S%|_ydvHn=NCpNLxu?sOb=j&#E(a2e`qYP%&Y z6K+K$+HNd>&m#hm`>?{_1cXLKE`qAp1*qb^7$)d$&G5Ww$IVhQFFijr)Q6zZ)|@5@>RxV z{f*%qy?Z(R)ys_ACGD5bUp^YnuU>C{|NW*Ch;N)Wxx$z2Zyi3vSpz>C`t8o_Z|*H@ zRh#vf&oj3D#*3_Wv_as7#dh}J)fKSc+R68LQaig@^q*oSV85c4#Gi-wbK7%)VZBaXFkw&PFB*stRQ<|&s^87; zpFL$j{#!edyEiJ;52Fn~7A5cHOUvU&dH%DZ-@~SA!4}6l_-ykHDebqN37RX$jUPR# z)X(nLTmEgndh+Z^c5$|`8rXP>1c4{F+D7e2^N7-uNSjE1+2!x&4SqMe6TZaX9w#iP z9Cc9O&4~)|*9&}{SsiaqR3B$9R>H$pY(vKf{)J|V{EfE_E5;8c`0Ev2a)3Z)>%C?2 zLnePcb8(%OZkz434i7f!_@ry?L!1=L_I~C+#;{?11)Au>)2ADB>#!-{QtZu%hf|jI zc%|&|*8V~LpWkk8@9U#fa5aH0li7at>IE{pIbxa^0B?8-OPO+UcnE(qF@O)*&q~=A z4(ZQJ>CgSMSEZyE3WuV;f4sF))lZA!PrU+5@sCQ)KJ&~{3{|`#Y@-HPqC$HrTZgpliQ}+}|1X|9Shkc6@m3Ng>RABDiNN*%-pA_5obgxB;8{ zak$Y#u|J-!RADe>by}$S{E~}lt6y76x%uYtPHU@rgx*oTOtGSle0sjX$l!9do|I~z zjj`fB>~!CB(5rH{j-tdiQq;=W4pGPhHbgaP(bF0MTanEthP*9K>eDRpgH~h<1)j1F z{MSLN_~f~A?a#*ZQ1rQq?$w0No_{aB9~2R159j<<1ms7AzlwaP@OKJ+x3Pa%Jy8^b zL=G>%uB?`)h27YNU;U93S+3KE-j9?UXH#hR_^q)ek7G3 zi?HOTi?LqjyRBkSzHw?lr`f;!n7ukf)pBhD_vyFV6ZYq+{eAXr_8!vkEm;5CY+neX zz4>kSFW+Y9vcAp!_kaG3oBdtvY|s${q1))8a~*HPfME5Pfv3~za}(+w7{H0>UpNBi>=4ZlcP@Jsj*Sh9ZU>?nTrusLdq1=cr5w;Wn-kM#DjVEn(v_>> zQ`}~7!b>7X^5dWh$_|kvIeUTwit5cGC1?`320^R%2s|5~osXadtrOTKF6=pDCKd;! zne0wXaC*>tWdFqvlK6yvTwEOJbns3_&Jc{b_2G~iN_6>t%Kr9evZs)OsbRKywxiHBS5V^q8c z$LNa>tNT1tQA!9hX*mgxov$dZOxzY4iU1qX=NknWmY2V|VD~Z;kUCyxm2YJr8j08p}N5T#RciXjvv; z5*_)b9G9H{JdRt7)WKpgL(RzkTuVbIw328Jtk6)pL`rvx^0prMyOe{pbOe>!UD+SS zM}|?Urd`Gc=_BiwcY!6HT(!sCHpt_@v{2&@oHu#GN6p?dkRMrB45vl8zPc zpoxIC&^f~Z0NrUt3E%0F3al)l$I{}3(Wg~!e_^fAC1c*By{Q_*#LJ?2WWdq}k71F5 zENlzWmcXonl$Vu;eMA^z^pJXu3!^~@563AM#}*e~B?4TQlcaD>aAue+=AtGXGB1`E zD+BwBLZ9jHk0%Yi0(AU^gA7>e_C0@ zkZuc%Gh00L;UQM1G2A>ri)LQD^DZU^slo=jo1Jky?cegV4Bs9Djt=wNZ)ICs0-JDH3e!}An>Y+O!wJX-9tx^QYgzs`=67U2#nK67 zkaYXiS+?(so6dx?The2TVSmw(=@hT}Xf9KuJ%6|%&yLNRyO6kgnYJ6#9FMsiD(>0A zsrf_-i*+cDn1C2=9bqIg&vJa==7_S`jFjBb(lnbxdzZO|oWB=BRfkqmnF_xD+vqEP zES&%C%z_x33I;j4W#Uj}%F~gC0%M2_z(m7uUVx$RAQ`s2Pmyulem-0cF67mGU+2EX zXVL*n8w#pp7l`fTgjNuw^HZl7u3a_VFouVIw#(t1V>1UJI*TS6EhEdCV9J2)LH-Au zW46tY4^Zei*q|zvM^9AOI=ObAIgIwPFm57boG6-`9L_k|+sr}qgikH5YQ3klW>*3M zXNo#Bi=SxZC1&2RfYvunL|W{W67h!*G{>S3F%6CM;2k9_bKwE$tAB!wDxX>4=7BDhQqMHb)3GFeR#~aV0nQ-{}jQN zbT*|hCP>wTQY$siKXPS=``)i%_falg|I>P6F$CZ0rK(QCsX!^oY6mcZQt(glZ9R&n zrL>=s@``kr1WkZkbiWHHi3F=$Z)6?`oi+~iQ=86E;>kDd< zuES?s@aO{iL9UjuL5kAypJinro);Cn1%G&u|FM#-l_Ed6qQaIGBzk*`&+A(9e->bE z?hr<=LkL)V{aUBH9Ag)y`=7z9facvo9Ahxh2!Q6mJkF>^_K)`K95L~rh)syrvlP@M zS_Wq;43j;fg2NnBtej4ZEDZA&$O#W0Sds?2fS$0)IZ^_bf{*Q>7J&$t`QiTr%hQ$p zz^QPk?T^_HxSR0W2v4SMsaF{DAG4A|;-4SjK0i;o0fK+6{MX-Pzo|fM%N7*50tHc>sV^^cXAD~f*0T>N0Vx9)JEDGM%~2`a1dSB*c8-4~yZ z^BQ55UKyby4~=!c zCdy1%oC(KaI#}DIvbR?S`uTwy;am#ElI+G0aT$$Izroy{Wo8xQLIao&@{J0w0m+3k zeS%St;h{dC;c}iQzdOHKKNl8wyb7z?v_41O(!J2Gk(Am7*vEcI#};r6y(y{ zGhO^IrdPa57Q)v-d3PpyZ6Ur`##chw;15t%*vdcXu_gM1?r3|zL7@4e*{UCAUXb?O zqd?_HGf?u4t6px02gX*@S?dBfQEUxKgG%4&jWMA>gFgkh)c{*yAx>26oSbrp_Rtd8 zOL%p=&-ND+;+tP7(=HZjGWl|Zz@XL}YrzoNoSPw;;}5Zd;q8`SY84(eN+xBjw_I-; zCmpIzQ?5hqyY0Z_#X&hPU?^dBaCN(=@_Lfl8uamQE1LrjivvGsIWV}Bjj$UrWy1D} zvAlk*-8a3>cHw$scPjK=+%WxZ7ywL;@nZF~7v<5tulHG1=ipyMa*s z`g{%ZNW~cdN}@S~ki|8zDt)}+@gdQ!edi}k13{GSi<2FVidEU+L@P25%*A|hAf-AP z^+_)VZ8rU7sSN(!k%G#shmgTLK!@zb;N2;3PgvxXQgMY;s^D{Cs*~o(2i;plAKK{8 zF}JevDdsdhOpdZu*2s^QvrwY*7OMtj52W3w6!RAu*I~ZHjkr;oMrxb%uYF2a!|(Bx z30q&Dtx`#38*3ee#1`;fG0dCGGXsQU9xJw&!XQjx(gK6x02(LK!4??3FPRzw6ql-C z8aSD-?YarH5?HPQ_Qj3ze~ip6eoe z7PsF-q6OpP;Oty)i)2mY{J(L<+0g+)W(gy71-9WGw!{VTEfQFG9YVr3hOR4baYeJw zFLtI>?L%~Fl^gu*cO5Iu#AnHpx>P1fl*qEihcP~lIlP}H3*fG$n{vQZKcEg$xn0F& z0I!&tb+pBm6`f;A%$4AZ`O;KgJ?=gzX6P1XVT85=Yte8%xH6H3E6cO(%8DB%+@8wx zZrK!-5#T!R3#>`GA{Q$_aK#F+ZMP*2+p~DuVu5$bYzUArjijIUW@JzzxM0kPYK9r2B>cJW3r=1!-Moh>__BVeeL;L#K*J*;CQn+ z2VQ6_Ajl-VC5FJNtX`qojU+SR*vLVYqXu~r-K`6TE38;dH?%p-ja%%=R_50U;Q{Tq z(lGKOQVh=JP|JVYmkutUKMe-9E5W*2%Sj0Y21g__*aE+@*qbUmr6N4s7LP6 zP8h!atuu-bE5CJs{3abfeEnO4UIA#4Ye(=5l0>F7^noq zULD{fWm@HXlk&C_o@@-)H|$i_76rWQw^aVlhql-5`3&f+oBo6i5}CY|AdXP*Ti!W% zqA}(r6)JRefiphGw>N5IE?8h;Vy8id%sOcC1*AqkijOY*E(?NR_&g|o3d)_z8d2y$ z^q~*;*2PX8$}Ki*?<$H)plnbP5R|dMl3tB6B&&&Go*FDsi8$;)G@8Q9HBn8K;qnNa z|M7X+SSzVfF|?Yy8gm{lijFx7FNv^uf!jb;F4h{tqRrJ<6u5*{^tEw4%<1YhIOJ8@ z?ZvcdYGJlWm<*A(mGt;TtM^1ag`L>xnusiY5bYv;*_2o^3eFbDrI%lAb@%Q<3Q8XQMVxLSeFjuZMEPZbey&Z6>~0$?Zo?Rks)V25Da39?q?55ST#QPpQ}BT%jU8Z9%4Dt~ zL1s6~pS--{Q{0XtF6sM=$zdyB!M>HOKkTtcHjLDw+23x@&Y%S%#*XJI5o?LBzRRG9 zwCFI^kGrg@PC|nj$kK2%V_dB?q4LNhGO`Ew;y2dHYH>Umag{%vCAvjH%a3Pt42Fl& z#VONc%Sqp?fQL{s8w9RGwJ@;}T9{l8xBKl9v_0Y`!ox>AW`I1<%+PE;`aN9R-$u71 z{l%Trs?^_zCxIrAvF=*g7_MGmA!{c8h6=UXJh}p*iTbF_OadKbP!Dq;iIJV)M-lZJ z2;>U*s0Y|u9CVT5_HBysX$tf3%R=rhfpsHwVTEXz!#36>f`Rx=WFpuF*U?aZMcfd# zs2NjFm?~?~#}@myhtMDUx8B!X81tA{?)S05izY#sk(GlY-kHYNulXc?&f1x5m^SR) z@|wD$YY8QD#`hT;k@Ag-KmJ&ekv9*ha%h&?ZDGpn-%sbSUvq%9v;U{|?|nAJ`!P7p zDga?Ui$!D4fGM9OU>-pMK?$F_fM#E88`CVNmPftiK_YS;fdPmYJ?PexQm!ErA9W!S z^BOYHWw#Q6`<1I9q@&}6IeemavK_mWXmuk$%8!*lW21-Ikiu$u*}Zk_wrme8G1NZA ze(i1j!&(X#;~Q8atflTB9bwsa%qDUCguu-01)j0sx}yot;h`dR*|wbyDGd!PB_V-g zP0`Zmn8Y~pFHCbHVG-$=V4JGQE9E+ln@sp9ov7=4RM!^K%80|l#|?|aGk1!^ zuEP@9gNCYT#@$Gf1NJ1nE@OXZ%L4gu9QZX=R%#tEz~myrrr3ZqKHdN?(GLh6V5Hl# zfGy@nm0$6F^A?%{Pk_vJQ8@>`A{2#ddQrIG7~j>aYo%9!%z)?47ePl${X$51-4LvT zugo$j4l5{V)C-mJ@!wZYukRk8|E=>?mUeln<4#J-IjC3P)tg)yJou0`>jyg=7B`x$ zthTq0fn^BGi9~x>UJ{g=9dl+mPZh*K{LSFK%lWD4we%WDRu}cxl2h?72R?%k$%{pfBPrIpJx z_ILMMPH`g@6p2e=5u=NlsB8$bQ7uUrfZfy{ zF524G5<29g0j}^OB=8YpiM{%5zuw@55t-0th>&9wtakQ=Vbl64Az;ycj^M2)Rq1MC zsz~gSNGv4#(cp;5sP?7`Rz>EiX6d+BPP6EZT*X+}sRULCPi_R7z zr->Yh;yUqZ_7|`nB5n5 zqD_iET1{XlnOyGKG1fMQG;8C79TP;PAwBX36;IQ6|D23@lNL!T(XEj%9!lx8cNC z)92dISGkp1(ivFYl4vt5X6INf1zFNQDGX5qQqZ<<&PFgC{ZO;FE8S#C^PmZ-P~;Nq@-UtgG8uoXMGfpPOPr3xiz&WOdd+s3D%b?k52@nNG!txll|F%`+9%E_oNu?hu_ zEa|Z2RVNW*I2=O~L%5G!^kfq}LXrt-(c6o4l{pCD053KzfIQBwIN5&Ad(8cDN(x+2 z`;fbiuwKo#SxnJ>ueSEgJ4GpNhx^z#y*MtH6Q7;IP?c&?tXu>4o45?sZhkn#lgQhq zl_p=cSqn$?_mM-xHQTnN*zCBqS8tT+Y`)z;X>a2>PPbYAWW6h4qqOVO*vgO5 zwk_nQHs#j@CX<_DRs76tXV!-ML$lOc^PN6z0acp4@VS_R0F7X-T7Jb@k{o1cXO&{k zQwXLG(EpGJWW^YKOkxK0Rn)X-iOuM}4S$!ZA+}|v4b1cJ@NkrcZ8_;A4n{%Sx5yvU zYpzI4E=}pJ?piuu)T1_5pKk$imVuIL!omIPq)dOQ5tI3WA z)Mn_Hy#*&0b#q-=vhdh9jB4m)>Y>s&d9d#7Pr_)9uVFJ)e0R>9UkX%tBGCqV7z4E! z2#194F<>)2!w_9O?mcBUGsK)z=BFW|;gbeb@Rv!yRL%Ou7bPLZ_;eKesN%M3NLQML zHD;@ah19Rp9?>fHmq!k!7sGC0cD>c; z3F{VJ3;{q`>=$ul*5mVr2xyVkK-a*`6$w_zY~+}mSd*BTb0DQiS*u1qBG*b3Pf@>< z%C`8F+1itmU4QUB)yFW?+52b+hSK%+t87{(eXbooM)gFFW-=jHSqRErae)A1idff? zWN*@g7(T7q5>q6y#7v;jyTtpQK$hY`CWigUS=YbB-!*mC!YEGxi(V$s$TO=8LnzkyI z=5!*kT-lICvP}!p;y@+z+$+cYMwRldsVSj=yrc3k0D+@Ccvu+Xl|XOVd1g2g^{=gK_9!`FKXubY=!w-&5os4iq!2kP1!M^ zNdpgVrC`TgSD?dNz&KkH7VBdO2%`@~80A*KQ$+nw5nOrJb%P=ld|R)ds3seT0yZ>M z6L=@aptJ`+W53*yQT5Se;nztn_w|sK%*+i&Hd_KbOWq7-(aH?JQ56A205^-viQZnn zGt>Uk?V;t2?e(z2?Y>zw0h1K06)2=;?&<>^y+;8&P)3;5j~{wRKvESY9(SdXbPgEO z!aFZ+e5s8}Ikeq@BCE;dJs^^?tH1ii4}A)DKF8ony&3AIMtchm$3t9nId1H?K6q@q z+NwgeYH{2+W1(gwdQ3PqbC7cl%=b7mw-SdA+AXa){=z^$JD4wpigf7nkFTipzhfrq zIgiMeC_T)ij-J?6#{YKE*Lu0T=N8UnV89oVJ6Kl7p8?Ycl7!Jr^6-UtzMCCw4{D9?pM1Bu zf4<*9&dOkTCcXSev>V(=|E;gRJQutN6zU!oKN>;A&a|5H7H7~Cw3o6wFUNy_xz)6t zcKuI?@=Z_OUyX8DhPw5*A)kFU4{YOb&_g&!I6c5sp5;fvW0BxV!NLc}Xrk-U;h&eS z;((ZIS{B(ksP3A31vJ*2QMp%zlDmc4@hL6?aSC|I7aj@j_HZHQ`UgY>{14g@m+hN7 zsS+6g`gLb#0@E5eS=1;`v8CHq@$24PWdLGK8 z;o3cV{RL{O%RHZ+9f$G^^L1^v&t`Y?c4J# z0XTzABX=qtO(qz1FN_*~ufqu^`qFv7ZE942AAdj-a+5vuT{mE-1<__>{R=R7V!I`{_{6e+Dc*HdQT zx88ItXB07zfwd#Hny{qy^}Uqs@qM@v0;*8bPqe36fp<>F~>R*BRV85ilO;Tk)KZM z4GxP#?RZGuJ;a>G5-h9T*r{!P_w3bb%Cqlrt9sbRT@>uj?$hwQ`NRT8PnCSc0~3es zlYRTsR?^9S`#C?Gp7_*%nm;vKR_JLv1rLrarG9$ATpn7wzE}RH)uhlf>rn&VN(a{1 zLY$tgr{G@oXg#g|u6`%&czZjW*)s%aJFd;Y&7v(>$R;CmQY0NgHtJr$R!s4ThUN_Z zq2G0|iZI3-I`GzTELi+=QVMn9HQ1+e3&OvrdKs3d$ate*=|3ugx1q_j6ty4*qYIp; zQ7xB5rLn};W{{~{*Ej>myUciG7>Rd(~XDlCXpu(>nB_+B*smn2z z2T?nEP`Yh0%^e-T<~u~cDS_AI%mZos=>lg@ITD+po3+u}*Y=16-L^=#6eGbB!>@U) zBizmhI8$c16c)I^7ywEZ&EYI9G&|#od$frv6Qz5(uyhAPeRF3S0faJeWcXQwqrYjp zoqhN=RuP_6$m|^s^pc%y*){UOZt>q`S6#7D&}}pyaUcZKpytfh*g6_3RR1{X^fyBk zA&h4bSVV>toEvp{mi)5qL$eA-v6|rwK*m@k$G(VLIc>RBW5>=$Qp-yW((lKqwq$?d zuUlmP16{q!aA{&zAS2i_R5}YiOlH7tUc}TJpu3w>kl+kEgzi9!Af^j{VY#_@JqK05 zmY!!<@i(TQ$AlQjMX%1YbN}&nAY&qB<{*VdnUBI=#?Nz+?2)v~@pgB{wWVGgEf;n* zI^WcJiOyTNItK#FZ^kKsh>prK_wk+c0R5;t?vAie)E|VP^!R3pCAOc>lRIC08!|L^7V2=E~mW?h4~ZDfk!6r*Z) zj+RpFXaE3REeE=i=2rlPW~-eXtriJk<+$LGb^Bm^4ldABo8AP-#iklO0-us~6zM32 zOhJf01N-|_#iX5vK6s+VRTTfKpJ!uCiKiEvXxDPEo$S{Xg68N4knkiu+CgC}`XsZ* zI|es14$pf1i>G=8lYdVMi=5GAQ8WEay9@pBPo#|>67(a2r-=l;*vK>I(jxvi*R->; zdNzc!!$o_tVDDIHrf2Dfv!~{`P=B5d?Z~Xpmc(JBewch*CkS{2JVNB1E8H~>yFi6# zC5if-p7&6k5#f1KokQS5_7gB*SgMD|KiZe_Bd+_M^Z)^Isc=KBoiF-Do$YYq(iT%G z1kzTM;V~qXnH(?y41N*o?o=F#IZ1RaM)$5;?97v%({0IIVHC-*)h9@3oC-! z+M```Eptx*F<*<7)dr+Wofl>Iq=g$HwBPRWJbR`9%dVsOULQHLeT!bhvuuLexIVO3 zQ>vjW?54p&fEF^dE-recEP8fXBp0_nn7eWYFUk!@_7sdU9*7p#ZFex0 z6bU%px2d@D0^xs^YJ`KV_UiNaKDVi>4I(U~$%CAj4khj+S^r6alss zT}cQf@099Jxsz;)R4{Rfr1jSUkyP72LoWZgSm}p|9X^=9Kq|&{uC7w;Dz&P%r!CY@q=sULM$>16vP;4(I*?jk|#+ovvbco zXYXd`^ssAxbN|baiUZbSz0VU_I*+C#P*0$rzcMg5=Y9!W!1?BL^9RE>7$s)1pJ6Q7 zVmz~^^~b=QiI$vAJ4&Ifu$QL*ZHSO8q1=#($SY>KpD9HQth$yeoWROR@LbE$F1|lU z-?&$p`@Zp_v#@$a)=y^RSBF)fSH5fihu&FeYC~b~o1$;Oi*$Gn_)B0Gz9magyGzTmhzth-_ zqT_$JG#zV6YBM0n^ND#*1QjrehAw7BP|x0k0=LCR5NB?nnbUP1Xt zS(5CyGwBfx7Re>V61E^NQE`aVv!Y%RZ^mNYqx0-i>f7vcZa?S|;;(#OTDaqXy?}*1 zxU}%nvzJ~?6yHrP+rIAbC~^^G58L4%OoebaIQ$A&WOu;);$9!Y%FE`kg&3@a(=8YX z4j>>~o(WKmO2M|BQ+pN%y$haCVl*B%dxj8%KlhMZH+VSOI)og}Q$G}gH-Ibj3=5Y! z@2OF+Uy0o*RqCFOIb5IMpD1qJutyDq5RY_T?)-*BRgq)|OR+g=l41wZBrQ|VCChsu zod?DG%#>S`1yC2?0Ry3cqzfR}KSZ=p?P<v=^Bkf#jx^8oN1y{f#hrVW zoGW|CsALRJc>oeMrv5w?m78bR7y+P6(2Pir+C%q)^kiYCEJq>) z5o^mx&kb&YqjMA?&fcEswOO~*6we^OsikKaZAZx#a>N))24WDOhYv; zSV{!r;m|r40_wOF3Kb*Pw&8 zAt;TL42kk$GL;I0je?*Jtwl9#>YEsm=F@b1tfJ@|OC^dYcKBRpCo)nhv5*36_egLp z8v$dJVW;{d>P^oqQ-Rn!*;cx~(-g=dtbKr1#YBqCMGBa2#G~-ux$&r|*JN0&y~&i~ zora?BvY*3wFx)L~Qqp-fQ&FNj z+^{qCuf$H3v@wxIK}80f=khQXsfaqX0)$|VI2DeGK6b7;kL>!uBkQ@v2RuiSS%?>; zGyn@>iQUYbmdRHpsm?g% zH^?h0W{?EZO{qi2KhQ<`p(D*-=|YBIi`G8k@lBA|yEkiwZU402FOfUjm8QtH$bsS^`v4*;$nVDsu8 z18<9?guDE6R@wSUX8yNos|&CSZ)1WjI!RC!a5OC z-P-~XK(;iihn0krfO|bNrM{zZfS%f^Y#h8v+jImy8SD@`347E^)ZI^Vp`7|miYv?x zFfNFe6rgpd^*wYkmTI&|CI_|xA7^p{knkM%8>Rtee0b&wsx2L~9kS5j8^S$ZGSI#; zJg8Tlq?Ccl;zXn=^9&5Su)dH1lrk#p>cSE{9Q?THpqXw24n|f{fq|(QkR)@^HM1ra zEPeRPh06t_x1(UX#R=&}zw$)g{Qmpz(?8j?d6(=)ezI9L4vUp?e(NY%gq1n3`@2ky zZfiwLPf7-|v6*NYyfV(!k7yL=H3Es*@u-)cd9w@{C+Gw~ienaplCK-#nB7hNR7?qa`|$?MlFkiIAUP1d{|&M;q*8#Pg6Xal~Nbg)?o9JQ?S96?mL3gdiq z?1i%fd}BmFnjSqkY4&C9>aJ|G*5Y*3>6w65tPS5hjBJiBAGq&MNfH&v6Z39svK@SR zZn;9VQtQlkRoDFDH{GF5zQW)`E#-lu%=3#qGXbI2_;Au{H>(G&HdkMFF*6G(T)D^U zKEyESFU1bGd05-N+rn~wXTO;~+N(Z&!Ryjq=U(*%&q6n&jdadIUK}S2B)4%aEp1>% z8+`o8c$W37KmbIpfG2$;?A=*B(qldrFUX&^STgl|R54>>*}XGiSmL@(0_zt%Nyhph zX>N|JWfj3G*d4YEZA-nR64Kw z(v_2%IlnjAnCFjeey|N72Z zssytWj15cCCU%b$Yum*MZe-wEMvr{0BjaFktQEniCu2mD4$=gR8iK@V|K z;BzDNy~M2Mf_q>bJtWIS-t6+rnV2EqmT~w^q9v&bt|I8-2$;B25wjmMzOf+y4zEkp zEahxw5f~28m&*-M1vF6_u^o}=)s}xn z7tF@2vcJs)+~0w6fnRLCSm-;W_bH0c+Z=?Y7xvc?#j=o#IiDL;q+YV;Q4G4Pu4Y-^ zockwN&t>$_@5@S*X!i7_fh4|-b?=Zo-A50B73JH+!yUO>R9=&wz30-J8jh0QftS0$yxUrR!dXC z@d1|-S5uqV%Y6tu9ylrk( zG`Z_3_IEX-+Wc@-TVJ5?(b}>ZM|s>nthe@#%@aY}%cUB{ai;uc^Wf^~-!1X%@0NJ_ z%SBoTc=59_-ro)KuQuCHenpwhUs2|l2ZVD5wo8LmzrQa&C4aBPv%g=*FBj32{8A%v zO8$PC&0kRu_fPH{GW!Zx(1@R{O@`-$PW(dN<}c(S(Ku3Q?wz*UjkG5$`aVs6$So31 zcG!$UX#RDGzAVM%MJPu1PrR?(whkY}6ts=&NvGR)lJ;wdchYoADfZoPsP$weX?wR( zJzPn-^HKe$lWOg4F%Ud`yk#2FS0`ZZSi|vgLdU*R?X7(RLFB?REreK4FG6&u z%3Z3RBhiZ>eJG-~%@34CK&8i2NxH6x<2q^^ZKOS?fu*aRDNFIhp>Ou`iMdWkuPVm@ zrXZ8~3%n?9_rgoS>HG_}-3hc=(wMPn_UJF){{CP7{9pe1Ta+Z(M*Gq0EU*%PS8HQF z59*&$zDa9=kkGy4@fhf^U9E+yMYmuQH_8Be6#_#F44AxD*JcRq9~qj$exSwcj>-?{%r#bi!gR z9lA_ef2p>k=uAy#=5a{HFyUa!j@e2p^c5O|J6ArLHkn%jR#7z<^-O?9r*I%>-@2+W z!Kc>s*L|E+&Pg?i2mhoUzb{vE8Zu^42tBVK{N7u|eYtn5Fi!ja@7J^b-p5794$K@4 zi9h;V(B_g5A&D`pRdH5XX4cV~n*+alnD!OP`^0r}EByMe{kG`V(|A=~d*043Btvl~ zQMwZh@L1RFz|2eu1sD{wcNsQNuG?MPuo>*my+#^}V~zNa6i1%_#o~IWQZ^Ie#S!ZV zTRdvqY!_+Upf^AZvpqC*w61$`W=}uqB;TrQ8RryeZ!#SiqTl50wI~7k@l%3`71g&P zPJhw-UL>o0yP92`Dm>`%>KG?m(tm%s(z_qE5LeIp*J)$rSwjwvFi+{Bq>2@~My5Bs z&?BkWQd3&W1|b4Pxg?;62?dVA^fbFLZb>}O3WM5q8x;cmF9dS%xh^pn@>Z6q zXOM1nQ^Evo$cU7x0n}YR_2a`oRQ}Wd@|*wZe_kyZv{*rQWCG0Px}?5yt|dXQzfI(^T#v1Wpro*()35h~;=ZvuOZ#Y_~OV3Wg>CTEsEM*1e5 zX92>M4wpB?Arv|*vpLJcaI#RRuFr@S!EF(zchtuQ2jr(06UbZ7oQ6o50HCn7bqH{` zMoz(WhsDbNQn9HHfKcv69U7N>1%Rb`%})+vkh3P8HDVxy>7oo0|M|(Y@3UPn2!pE2 zWx)Z*Kz`zQhDsgXe~){Ahr`J-KY`WC%zmYRk?Xj#%ax*u4u3ff=JH#{rJZbldVxm1 zH$S`Va9TrBClU5{-1%&Ad$?&F4_9u-90qerm~kS{%jaD_m}G7qr4+P+8HLWX(^)>` zNGcn5?XKcQ_8AJxi9WW0`jjJCJ-8`?0LMAX`raA2P~=cw=5pL6?k^_&PoJ{G>FgYa zj@mHNJLMDgQOe0|TeZ!5OpaX~4&~)7s6WTP$4g4%148a_=+Mg!`sa(&**3)Cof(;B zoSs~H!4X*?XKWdmB}fv3q-P}3s?LaM7;m#&{iP38>qGz36^Xg*$!1*o(iJs$?h&)6 z@^tgSDM6byb?mWy#Sor)$;(U7yu0<18CZVBh9bj=}oOUxsxgb9OfU%zsQf z({Nnp8k_DPtCMf{m|Q)Xp-#Q^Mek}#aOtMm)8tY4GY)Ljsr<|*YW6fc7!OqenVVS+ zOT6#_?W-!;G-{5ySTXk{$d|16#TnM&T+7Qls%JLm+zGSq$;Eteb*8(Q9BAMxAUgvG zXFoIUeKiq{CNQAvVcq3{B#?=osEL>-9PpxWDASyA=4`D7}E*&Jjy6ANus^0-FMY-7b@at+duP z69{;#L%RA-bE}R3q#X873>ILevO`U$jG6^F4YgafsnO-qV{5wAsBYJ@*!3-1RXu4? z*qIIUUiKNaYWBIOF?9)IHG`$r+@S&pjiAfAIA9Stn(C1QmbjlcQ35Y) z*JmH9jOS+?6ZhYd*<`2!Cy;@bSnyG=+sQ7jCiUzyW6ZhDInNrHt^iGfnv5&#^Rsi# zZMLV}tQlaXf^pbq`m5&3BVwvK64dQCn|k}hx7>8emYTViHD@*@!Ym_$!R0ugX&+fr zR|Y5EuPZumElAO|(+QB64H<&CtNA$w9-JH5RsoBF#P+!&!Yw_flqvHu+O$u07u=Ii zV1B~snXE{`I1VU1{Wwr&+DfWmkMl}Ob%o6*vK{lCJsVN|7!_UwWVZ<}8owLFMKm#a8 zL;{?_RE;;Kp=S4rP3M5dYHot$u`*R3y7u=BE6VeQR-Q$-YEEaZem@{J+XUbs_8RMf zb&jl;m-uK96ux8FKb;=8*unK|E*Qul4Oou?1sK9IA7F%Yl^M}w|GS7i8#4M*j zuSpScJjOYx>N{r22(rGBOLatx7@8W%r78DQ-Z7?8m=C)= zPQRC+9$Yz`XA8#G!%7#UXPMf-Szl?b>)}z8DUE_*1=j5Od2iIyEZu5Wz=3$UU{dPV z__hP3l{^!@oMW5!ky8!L^YSdsL#cyxRTEp%A-nK@w`(L;%VSem)vgvSPM2e-GFy1_ zx&J(~jRh^l>$cF-6_X7jxdO2)&kRs(ru1U6BPV5!AY^i^sV)EcYLI=-KMAe1nzW}~ znAnU%Hs*5dOvYTVy~{r?qtK*L5K&-cv*xRw|;r)Ms1Yjj{&w7cfUtdj(htQLFiC53I&DuaPNAvd^4Nv(^Ee z=?x12PQ$u3+Y;ujvCcDIzywuvZ$@2C^(T6?f!@JiWWMk16G2#Jv|in4WSBLJbwe;8 zWq3=#9+b{^XPLLxYKr0qUtBie179{E-{<3lmd%aIaSmLjX3#WvMEwytocPwtKLKdQ zDP*?;s&0yEe$u30_1wr2;?d)Zr50K6Gthj`@Uei+2NTd>oQuv9oCRv-e9>2aiKQER zMiQ>SlK?8XDdRDAH_QT?3g$sH)u-Z}HOUsdm@j2c=)^DUcvoR)#t=`?AOvP`#w|9c z&bNKw)u8@j6lTDulJ71^NM01knbOVl1{`tGU3FO(ZI_TkM;#4n0w^^N-@-K=ECMD0F!ltG8_9V7R}y zJfn+SOyOmAf~}^;ja3GG5kRet)6hap79%b_E{$e2=;#GVZDjnC=JS2&|`re@%{Hz1%(kW0ra+6f8A@H@)}VJj0-b8>xA(HpkFR7H6)Pk>$)n`a&l!n&4lRZXcLq$pPnOdotMU4;-Z<1h%cP;@}1H#LaWSx+#ErS zf;$~nO1oupfma|2rbi4M9F7^BF)O`gHe#Yrg^#tA-m8cm4n~n?#H9o4saR?Gpy=!+ zuHi!ue2?Q+DM;0$3&EwP!`kGd?q19Ms^UUkOmQdY2 z%^JQ4jAWemI`}D>O6-)Fq&Rn}8C;04i#-+I-2=TC;AW_&oMrQ>^*O{*B@|Own)MN$ ze{3HaCNe~VFei^Yu*h_5JMjjE`ax*AT*XxE7@)4%%%*)I)}I|J_H2Lv9+L;K-PX#au_?fU27)&=g-}f!FuX9t!5stnQ(~e`;b5}A zwhr?JgX17p^i8QygFgO@ud-{KkSmj_P40uegrTX4-57NQU_lMyxUE1C4)s+%?7S22 z3BpAPQE2QSQ;q%wqu0;N>IiC=lM$WqrM(w@2!(#&CfPM zHySZC3Z2n*hPbV9ifFJ-w|zV?Au5U?IK~FMCiLy2|4ELIaBFMY0Kf@5L-=_dGwTD1 zA6d(l4>ruS3v)IQy(mUqu(2A}^B0MuC}RkuY;I!8*^hPXEIV`ZF*J_V;XkTY*hDoG z54E-z3meU+W%hyD(ljE4|BT>n8h+=3;Z&t3Q1f`noQesPm2GU%(qDj*x5cML-GE~* z%X=;!gJVpbG^nO*XgsA28?6dlvcc~$@`niMM9Kl+S?tc_oz&GU}LDh%~$9x4WsWG z18-?BqX1nDZ1aT|f9^le{O4&V)y+KnK>tnA!C2)&^C&TUE_L2t1up1Os_)S%Y%sret%VwstAbm_#GWlD_K**7<9dvht-bg@sLv z(2V*8v916{Q;OJ9!L#XNfxnzc^i5*ndJ{4g>LJ_qCZFM3&LumoAl2ZBQ>y8ys{m?F ziD*2s;(bGeTrgFp7kJV&CS2D_lK_cj7rrQ%?(fZDWpMJ=lMvX*KN@UI(+G zCKBkf1=Jc#xE6P8%4O|-sfo`?1_LgxhcJdXE0OMT2cXa_1-9+-0&aMM?AGlpO@ob* zyY=PN`XaUnMIzOJy%8MTe+n!;5c;Sov8F>Xbf}e!%vH=R-5%AHF zo3av~ioGbc*O8sCrMa?Hsut~?phYm9^eKHd7CSrjNfzgK4U1$gUyCvXdT5Xc=IN?` z@Cmlb=vw4tP%O_c^U)He4~v&IHI3aR%o4O)2?*PoML1&Z_I$uq00HVmVl*cu%%XkY z%ifCP&&tBPvC83u;Yyfgzs{x-5M2d`|dpZ3=5F$@#xAed`(c9 zLqy*hGw^Pd**rKHo`T7uvRg&)?8sdlv|=}6PEp1!HK{vl@JGJ`%v-T#-u4?O=*mU=X^99_Rxiiu?Gj;bC zg%INA*(XAP0EtpafS{8pgg}T&)S!mD4nLH`ui>}wBV7Lj=3Hy->&%87K5_P35}?5- z{_z*zUySd!TPA4a6PALMVF(leDOrPw35*^&S%8Ni5N?{FnPgDklnicN< zL7xYp-9x6~3rG=6&JoICZc5q$*TPE9n*A_7>c1@#=T z7h`H2SOePjP_${rm|-RnQJL@-m?CuR4q^u052QCg(ar4W2a?Po@B|rFX$sw#pMjIA zrxIHQ%qoI5W=aGyntlxI1*sncR8$018E~J4PVT~K|9(ly55$xKj!hGC1@;&4HN@bMaQpSC znQf%7ADCocS?M;0?0cVQ$exjV=6{v_{}}2w+A_i~uY! z?7#z>qY;8~hHyVvTBMQz|3|OdO*A`o{CoT4XuxrdN@@Ula{F+tS2luoz3J~lmoUS zBi%cS0O^`N=jVCKCh^}vDQ_f5V8Z9`{@1_Pj|-Zj4rc8`N0T&(ETD?1zbP6sh;vw+ zNzBb_0Yg1~>wthG7$D7N*BQXIPy-Wwi;&4;kU#)-vqMz^s4D^WXLh1bavQJ-n8S&7 zAG1!i1EQGh3DD+eeII%?dlSHZ1GN%#;ctd7flp>uyFr)(c3gsT37Q=E{=gXpV?|mM zC;}=>Nh$%|q3&1^Lx9E!W#K>-K~z;0$S6lkhp6fNMdCB@_Gn)G2@yoT9MHNz$DFnq z`enL9Z-Mzj4f9|LAO`orBfo@?0Fa+{jCu!0URuWwr0^I zg$YeMP?`b*gwIHBp~NEK5fJ`~cDx1mp*K5pVako)ejyIPQYU(Z`=FJ)VVr*fh^KpK zxZLcZi|*h|Lz{gX{uhsj+w%lmzj#8Q|L_i2Kw5~wk2Om01kRT}AwXl|UwcHd5p;4& zzXWzT3AKE}3qZ|<&;;ldSgA;Tx}ve72w@octSN#^0Wg93}en`-YQ4LvS6nuM-KrI0Ic!hv~Z|4N4 z>t6r~tl0y$$MixIgyv+XPH56}Nr6ZeWZHe7R0R?MDLXA9tuM#g)PDr9Oo$68xRV_V z@|2&!gy{+(en0&ck1HHl0$TT9Rt@yo*^euLZB zOuRpxH1NsKD5H61(WB{X%KidDqqiapA2b>`jTS)Kj}ENqH{f-k9|3NjgDV^Yf4~I; z{(T@3q*kXt9c$0YIedYhAypoXgb5!Gfx3SR1QupsR);1mIJ-_I{(+mp%1jjZ)$SMJ zeGdm>PNqj-HQ|-_8mJVUywieA3oI1X7GxrzdbebTI$-_h*@DL=pE}ZzpsXSQ)>Gxi ziPFG4N9+--fjctrVU4o}tov%h`0wTHTYsV%`@!3%IRX-#nc)>pBocDpy2u_HH0Sl0 zX9lTJJ2a^=I2>W+=6w`Q1R23p1rt$v$iX-5%Ws!&Jh^m4M7I+p1keP+yC(63ppePb z;-&y5w0n`2H#e=Iqa9F}w$p}3GX*4%)N|C>h9H+Y492%g)iyWfHb`Q8wRfncM1;6ry|#50CC^SLU` zzJ~gNifd1ia3BFEpURi1rhFlUNOr&!z-ry65TY7QQ}X~592D3JS<6o}F&!c!$P0!b ztLq3C!L|ZAn!R9f+QJ0PU*eBqRtNU8EJ9E0V9h4!hg5dhY9N+6Bv?RsLiOpVh=q?W z?CjHQ@}Qo4u_yGL|6!x?0VVwajjZWq(8Slwg1ruByud?WRChuPFq7VlAfs7DeE_`z zOl$X^FWm^!O)#R*Bf*m#Pk$;1Qb8{Io{~s96B@YB~ZMP0x--G z9|6+T(T<(1#5oWeKp9YsKGKO{qnqD8FtpJC4Foe1xy;eUic=_})XXdo zO*tAqv;%O^v_Anz1}q%{$pPU)EAUr5P(;KBD+^Oq!4MP>Ovp4uqn-z>f6X(nVNgWi zFVty-S)L-ZcoZWBH1Li8%=3D>ebdEv_YvMSZ_?s{XbUI~p)W5`Ri*+zP^b+;ETCEB zV@I8yD18DDzcqG9+yTG{p7EDu zCKjCF04gC_gw$rJ&JKZ(&@UMC8G;P}JqOq71V{slR!;$A2r7e{aG2`6zb3=uYqLxo z1=eBKH(`j#A$Y$bf}VglDD8>DW;nDSJR${{rpFl-wLDEb2{h!7Nv5YC28=tsW_|#A z5-2sOJ}W>TlM=jzRWZO)LAG~+@W%H{n`q*o6eC*eFNQd+HpI~b&7uACi$;-8-u55z zYr6BH!`p#wkar$>o_Ano1rVnW%M;Dfno}o1Y#>-*8tZo20S213TN}WLkX4UVA9M!m zeYTuC@Lr0DK!4q7^V3rV0g7AfrceSD!1zN~nYsk;GGMfbU^_%Yzzn`ZHok0a4b1pS z2LRy|c+ z{kTrvz6n@G3po)t5-2|!vOfX|UV$Pcp`aaXEdWPhp?|1vlX2J1dKJ7^n)H5vV_|1P zGcZIrI0qCE#Ado_0Z?QrR6zm0f&$67sc(~o42uG50zw<~tuG5tL4{JjUF-m5Ly0IT zgo-@I3Iz9*u=cl)y$)SF&Bmkwdr6&Q+(0Bvh$EP@Kp7Ls0wbQdDij#2KMeR0+?zpx z$!mk&G{eXL3XTIE1k6QPsMAb|Ei?!*64ew`26^K-aw1QN*c7ZXj~#l5)QBzO`iQe5 z3jN95p=dSq{2N>OMV$QT1LB70KjaRsAq)}#55%)vH2H{J0Zqxla}P!V6o)K8jRyJ&_QVAZslkxZ{eh%J-^ zh34`JhMTYe6p{cP+M_UTQ1yP(HnU~L+;sgTBwj5eF{mZpK zh1!6WfxbY94f62770^k+u$<7^6bwb+m9rMGN30V$98g^E7UH9$9O9o4j`-zr`zih) z=^l*;JWz;VOd;%Gf=_ey)0aEFdj3$K-a7-gA*+2P|XWPI1au5!a zN}P9SE`e)87#tJ{nWXkK{Xg{}fQSIEEYPqalMmru*3@ZO^Ivi)zIN*`n+WZjpPhZe z8VzXX|AGOa5rYB?vJr(1p*Y)F7X{Yx&AVWszg26*7ANI#=JFG*{A7V>52DFVL2*N< zGORa;UI^~CIerOHJJ=C0UckS0YD!jeGx@| zS@K^>1~Tv*khfF9I~de)QC zIzrCTR4Wmp2XWKpTWe>NcHxAFzn9E5Qv^U6FkF<}Y*mFb7B% zh6$M7Ja0pUlFS>~pL~Wh90$hZ#BL^ffH?&{lt;vjToq`W&I40sn&4nY()-Nyfmjex z7xnc6G;J_%;g{`XOpVajVbYXOB`5(?%X2dlO!XXxQBN!r3Zs2kXf6~q#y7H3CrJW& z*R(=7VyR%lqJ97n7=BDqtoK=WN>FDfvn99!yaN#_;Bp6t)?ed4kjeyr zAW{f{Axx^L{{enYn4A#3=gV&!?O+kVF?bWbZwd)SI07g$KyR?3$k0K9N9%F^RthZy zmmnbw0ugeUX7?XTZV8Z|4C!jOkLTp6L+A?Pbs!fI6+t7v#4k;r5O^)D-j7`gzYQlV z6W;kv!k~_U$?^e71c(75ISp)ULXOkfPl!5)_{mSNTQCvogvSBP1mFq&`)Fb8lN_A| zY1E_!s5~G(CM;|kB*@oEtGt6Tghp|gMlp%?xuYkEL+&OC)Ljd$#e`FQSW|C)Zp&Zj z?q6vcKe^@n^vpAnjR3eZWLZp83&${x5YG!p6D-zG&1SL%^4Spj7J2~q&HH0AHb7AT z=7el*u#~p2ptCrh5^3&eqkqX0Bx64+r11R`*EMg|sq4RH416^VQx3EVA`aLFD0B_- z6T-<+C}gDWk!JOw&+CIgG-RT}6O*}!Tv92poS6fml}08lTcPBrBAnI*ngX@~Bm#^B zvV4KUC)b>WsDCmBn+eYHk+%0?qP-83g~;!}n~C5dUWgRusVh7zJPIv<>gvGjr>;y* zA$mmrO-l=45~6qHr-5ipP@dZ_+vtr<%)Ds8eTJf3zJ0^#cewnwIXx2yfb!sZ8PHHr z7r|`XLfH--P5w7M&l5etCm;J}viE1PGcP{yRpjTNxW(KiU?qT)z;Fg&;FH|?h$hYe z;{wJ2n-%umv}3>ZrpFYaj3mU5@l6H~`u0o1!=&VDMGnhxMHLEWa~oQljnMh^pzqHh z74m4no<|!7g(|_KBM%W+8q;DZ(DpaseDJWQ4=AAkrs>xXm`CkHmk~Jv-~FEWj~q#u z+y|u=={a8{`oSZ`dYJ5@Z%Kpf=)X$6+q6rI3Mg_S8Pw=@;wVQnL36m*tQ|uH?4&YH zDB>?0R6=x$JQ+W?)D2P3q(7I?T{LH392*uD6&v^~W(sSnf8!^ zIoa=j(bVSnvB`A=CNAuEi<5M6Ssu~pegxa`=tP) zS&h(){jgjnzWGx)%;F3#e(6wPf`Zus-kk{sKoSWu4}rXAx<^*Q6sj~4STF|z`*6%L zLNC0z3t`EC-%K*bfiQ(h<$l zoKu6CrvGDwfC*24HSAnuq5@e|=*{}nx();fm(cBdD*4|3E*djSBxxel!+2tihEyU4#rl#Do!b&sO;rN=yTC z2rpu<#= zh@CqMpvYfR$>xv%*lj2#3yG_5wt!%Oc~gDOINBQ)^l@6g>CR6Bd`2@rGMLnf{meXQ zihBU41HC<(Y%U~!QTi;b%xsE-P@CXR z|M{1L&QZpLbXJxBax!+@eyeamBd7VwPCM_|#$JU&&r^v&XzJtVw}SyeH$T5ZqrZGRIln$?ocLevv7iwA{2i1ugfe3Le|-fy z_Vby8!TseM@t1FxU%#=x-h-xpx##@##i;)ThGD-vabbUb>z>npxre6Wm#>y4Yr3QT za)r|^?L4OvEnkqtJtY+_Q8xJe>G>kQJ`FxZn4s$N%PtT8n9H9-e(oPJXk{ONM4%k} zfojTs{P6-+?~l5N@2J5)dwqC?cWE#ea+pJwl_|d!MuYF^yravoRM1 zf!c6THrX&>YQBET^h`;|0Y7#-o zkUxK$>jFdln&1BZ@9V!UuYdpB5^nzkLXfAm_*+x`{clY$AMx?$Z{7S@6TowD=N~@0 zkNd|j_fb0^pKveu`^VQ4@DDnE0G@@mzT0`gV}ENN(?jU*k4L8C2|iI}qCbB_MN5~r z8k&UPE~h*2i3j@%Dw(JtZ0q0E>x~7s((gu9{4pK+@QH8!ApXEUzn+o-&bgwl)mPvdlkFE}t{v{?T<`y?0zau8P@Pm8Nyzp1YWH+R`rO77MV z@u{x05`+0?Np%!PMNndA;C(Ensphf4ZbIlJre*Pq7o}Nbwz_lpP2Waz;J52y71$o@ zo=1wTnLHy0$$U!YN^=zWt~6J>syx9+$c9hyN1RC-dl%$x1w&eC{A*QHt8%Ypd2V}Y zu4(sOcclVCf%fs?IUFJ!!mFt@qwOCd^l0lQ#m2?v!3>JhEKC zm=iq&yZ&wy+rWO_aDQB3u(G-QKJ;=-HnKT}7vbDjX5M;)+k3A*6{GkFs}!#pzP;i# zY)Z?1op*1g^?G@1TA5mfS9vV=tMVoU`wIlRy?m33icW10*Hi8aOupih(N9_PO)i$* zk}qAazwjGN*b=$U2q|I+a&Df^sk&WuG_&t$>}t>(e80=hZf&0~Y`D}rzrm`G(!@>0 zJk{a4kk7Xz_pDD(0=UK^tVC$WO09Hvv`x2Pzb)U1PB*icHtfKvOdDU4^RZtwcShp9 zh{=+`#ag>xD{y1mvPpcABVZRUcr?t2#2e#H|Ei^T;@?RoJ zK4P|4&AdBjI8C&eQJCk8)8pa57iXF@!UeNzI)_)KfnD8ROX8^!>k_wzYQ3ctI@q9d zOu1OC4C)o0)@D}GZQ|7nF)|gIDT$6>ZaVRZJGWPgMNCg)HzRl2%c_=#Jy-LOfOqXp z=~J&eGc@vG$&t(R^`#@5a@8y`N4+7-U;`dUOPR~Gxu<}{3cW|2v*g*4M)-g^uMg{mzS@-16%aYIHo@cNJHxh z{nn-Dg43$5#@;4(rZ8S~W#?IqtZ6alB+y)+f)EwDv$!yP_Ed>484b`4>~wsXeCs}* zO{wdi+ z%3}2p10`~tuQg9da$?mX|kFml^i8}>b*v$H#8|LZ2-vlH>!PSLrwwG&o#uJHMtPTf9 zkNPoK1q4wDu@fF%dy6&G+U7ZBcn4noT%6-rzi(~&9bWFO95%<+3@Hk>e7~o$o?c;$ zzGk)|9?6G`oL<4$O88m*B;CVH>Q~O z>LRDa-lct3aIB(2Wj(0Yx}%nSzNKz=3CdrvLauq7XB^VZ8g7qz{}TIt^?DwQB0 z@0MiA>=OLx_->f<@;-I_4fFK(1;Jird>dheZgE&d;LQ>rqog^CB1Gx<7s{9DyWZ-2 zQ{o4uHmKzhq7=op&q7O=ca%mRUd$4c)1=NYetDMOYv7+AuN@M#Ew{((yCFCAPJqtT zcI!c6k+5W6wj9y7;-YVa;MBFd>XoR+Fz%RW^>&(vK;vsVaD?~>(Hu-``}mvR^UI55 zjG=c>V|TBp4z>vlnxVY()b9#<-(McZo>12^%mJCc7S4k2JjPVcCVLXL_Cq^sr-B3M z|H-#xDwK)fZ$UX}G-sfiyA$V%sa0y=>mp0NUVYt^oWzTY8FR|2U&qJMc(|o>Hp^G0 z9f!qAk|wY& zJsUOKE;S1{zQgFYg(Y*g=;E(7JUj2ZN|F+HC#}d)_j{`94{MxQ?fGlX5>CDr1Af_G z7CN5x<%T6ztPx(WC85Nt?*2|Fe_^e>erHpM&e#{&Hd3X2y?Sl^r+e2gm-k{FxD9iq z>Cjn|&e|%KGg|Bb|dtX@~kO*?7f! zdl@XE&4GY|5o@1*lG<|APB-;p=Na=Xg2BD#G_$r=3Uw1CD79yvu;zZhnu#aA`+nW^ zy%1Dq25XeVt{`YfQ+(}VhFopO97h%>k-cWO+roweb{37ex;+?HcO-s)d4urDmJ8Ba zGo8(s%Dyj`N3RWi##xX;3Dh|<=@^@RRqD7iaq0F0R+nS{+3QabW6ju{C6latNow7o?eR zE|aH+TePtpj>SFs@>rNs@M`ocqpsU}V-a$zQ_pK0g*4J)qFJBrtzf$@wMwVI zToX!#3`qY*FPd=WWxY}W3H%PMyLXQw8t!LCcnS_^8VtwePn>nmq{N1BFB za71IAv6DbOPj$5)?Kimxohr9v=OOpH(V&;{Q5uUPH(92xEZz%F&q_E$HJcIo5XZK+-M%^<4blg{XK8X0F6UmZ7^qz`GSYdN+t zF62lVp`m#o)0Q3o>Jo$IqZhFwLejyv%cExc?cfwxW_W6?{( z)h4TioyFfsHOFdPqn=tq>1WG!&?vjN8ZSRB1w zko9C}T}H#>FH3{ga_Vw74##W4463?yJ8?S-Y~+eZ5d6=o*xqo!8BSSrqAt((&GOYH zaV78KJ@1>v(rFhuW7k?1q~68uO?J?)iN;6x<0v!BHIu7vA6F%V99Q(-ey-okg%~r^ zn>nhyzra^_{+)=MRP;oKu8uiIC9fgoU2%Ja>5A^0B@uQ>YZQ5~$98XFDyhBATvN{} z7z4-D<5h9BrF6Nt^Wm!~!C5}oEK@CVbuT-OdTa~_4|M4aM5yX-*ES5{9E1YtZTI*4 zV!`@%|7Zs{o4t>i8OiKUQ5HcWEs#`dKmLVNFxieO$2D4Q=?C zt?*^GwY54`ldU)=SW^xJ**-a^d5QI|#=P;!oG!0-9jwdp9)VKZXs=Sd?Wk>DFRIdg z9u~T&)b@i}9OcC}Tb(!C>U8!-UdfmAmaxMeiSzH((jIOQ+W_9wKmx<;eATO%I2xu+ z-KEFFB|#j-i5V#MwtTrSV7O`dtN_1IU?8lkEOa>xyXs}`-fb!9dtzGbGhY zLE0Y3<`DGi?s>VaV}t9I_d(d}@lj5m891%2)q$=FhuS{J?NxI#qhEyAv0AM+)G$6$ zLXf2WK+d!$!hF9?ud* zaBCrFUCkglH_f-DaE#?pqwj--1@7zNzLAu~l~{l3etujWui-vf#N>-T6F%%nbN^N& zEL-?s)19B2eJ--t&XnGx;Wwoe^-QLQ+I^AxSb`DPO&wd})7vSW4K>yXH!4Vdy_bS< zv}h6II!WE!6_rxRwMG}~MZD$Naug-mFx8#zVq#^zgY*-hmKsC% zWZn;n<;?K5w3|c_%9;%yg(NMPoht1HBj2ue+w%yT+rlqRu48*Bw^4y&y?)*u?OBDG zk(bNY&L{Yl4{-x4W~ex*YOuXd&u$Dvm2W2V!sLV%eic?Y*Wg&OaTciCr4-aH)IT zjM5-!6GaKIb-y!>b9o?dk7_4rt#!VtY$b5V=XPOTxZVw(abLDWYS6UaOJXGzSyw9T ztuoxgV*yXUgD~%72d|#XzPjYQx1=9=Z_RIOMaPM@Q-)1%WWGj0w5fwRq#Nz3XfZxS zm2ffIcKv1eijt0ws7mAZriUx+kTTp5t4_JR2--5R@ppe)lB`Nr!5imEGtOVnEE4!j zN-u?B)jwsMlJoEwZ(_^2Rgkrb%fp&*!P)wDEHQQ zi`4PB_ND8FNQu63o8_RKlcm&CB;^kxcUR`@UW<1VTp)-;8yAK{%Y-Rg zb;Cb-o%F5Xa@^7{uE!mPJslS7Gp?mIUTkgLEc$GxJN^E;cwaPiL&e6D9+yLXO~AK- z@6w}x!c)GcHk+=hD4A9pZMRa-RS8DlnbgM9uB67Au)$K-5?d(Q1C}tC-RWX8Zh3t( zQAs}7}vi)npWgU#G-p=^J7>h?SG$*KIoJ+BE~IW*q(Q7Ij-u6NtWYpw)S z90c!mS44dzozlb@Tf7k$9w%}9Q zADU!noj5`2#Ffj<1rFzPB>Oc#c5ZoU$91r(NFc!NBh750Ub8jD4`z0}&~XlKij^DzCiu&++*H9cg`#_~d{)>w!|@-~i_ibT?60?7i9rHxKh> z6-&PdIm5qc43l4Wxn4yU?S!6gp5(K;8|9@y^F~X`TQeGNc+EoswmS;RS@s>vZU^E_ z#iqVWrGjh+-zEzkThx823D;D5?QDN{q2TGS*Y-ekU8{|&!p4t8;*_uvoHTt=Xj<@?_zqqB{HRviX!6lx~FFTUlRVxe< zn%mZ_ePUs-@_r)*S^X5R8-2GK3g3{Acip*p+7Vwb4MQT=jQGwJ(dT@y`Gce)IW05r zzO7io7~x>@7sS^&cxYCduPIge&I4|AmnyNM!T)ues)M!s6kLxyhRG-RtRk>1= zO&K)YTslsy zMX0C*>4egGqi46OIp7(qyWWi>bNW#N2Y=H??5U8$unCu!ZE>gI^I7Gi}0>>+KKx|5@x5xSz3h~VIx>Hm-$dKKJbiy=*`=RIr z6wmViIeNfFuUI^ps74>eizzsgdG-kp3kYHKjw}ntL+qW{gYO8rXCG460hV`5Qv;so zSJ1niVBNK<&M!@W5v*X?ECW`IAK8w;k6d-+-F4x4V^ZWxh%hMQ_cKxn`KX3(0U*9Y z-%|4Kv3Rabrtl>CeFo57l`HM_@PyN`y33Loc@S)?NGI+%ZO3@H%I=m)9szN%yp0?Y0e-aA|^-+JrZ@FsbJ&kU1}*N&{M zAR%AO7y*CP%Yw?F29+Lef&g<1EsU|eS>+9j8|T&A?cc{FBomWa*3N2ZUMGypcGzh& zEWtWl1a&`nHx+wsz12|3Y8xESfclaWD`5E=VD@KXVBMaP8GR=?vsv z?!|5CoUh^GeRj?=U_Y(5OmOwJjfn*$s;;w_6WZ6U@xJYqcC)kPg4Z zQS0B{jgC&yJJJ|wz;?Hsd~Swnm5!4B(4a8V^{|g#jY{!PE_hc5?2z5=YgpJsf0Z?+ z?yBu7y6izpW-diWLZ%zsEx4X9oL??-d~F!Y<$3SbP`pLErrB{2eRX~TCiO}mqg)&8 zIlgG_Xemvf)U@4i5f@R0pHhh8(A6sfQ0vy>i>g$Gs79ilaOukBla1!Wl z`xNhQ-SZ9}^TdKZxF8>SYsTk7)v?<`TV3cPsbNFz8s>5$WRH{H#XTeTLrJ|~+m=6< zXA@ruYMp|X_`2`*D?NG=>l_0?OOkCIN4p_X9rM*JIFYM&cf%`-yP?t~gm0d&F!?n1 zvar0x$IEMb0r1_v1Fr3?{P5rkUa=0c!+1P9MALaUJojmwiAT@5QDFx0GIhI_$ku+x z4Mh}euBM=~$8T{+Hd!lp%C>&^OIL2*M@Xm9NtfV`^gSLIt|oShwpcCl10+h3{_v0w z!{JTh>%r^sm+vr%a_<*C&a74!(7cT2`tEXfeZZqqyJNI3<7&U>efb9QOXi9Z+q-e5 z!ds}T7b2*P%k7B0LwbZx`;Hx4gk^^(#9}geCDFXu^g7z%9%i4knR?l1~iQE<#JS#&w3b%oGgP^Smj=r|Vu)qac7$`kyXOu4Tu8)K;D@mmmG(3)isgI7@W%u& zs_a!>3H51?g%DKG0yyH;NI znpTeMKuhwg8(rPe;6bx`cP?y${9z{2#$Q&oK#2SkSGhf8*uw!HPrcdVEcQ3G)I*n~110JeP{IWg?dQDwK}<|$P2753T7YY2q{Q_aNcU6k~X zj=)>yHXQ5GAw3pf@KK?w)XHzHb<=L{XQNu*fgw?0MejY02Q=tTukXw<!GDhX~b zflTQV07#>L%Sn-1Kta#3Cu`wyyIA1pkgnQE;>#;k(59ZfeZH`-`^9#dLLkkXb%YgS zG+;H?F-(KS$^<28MSyRp-1O`95!98{buFA>mQ^@ZX1CNH?)|2!3pE%;2Gh5XB5;bW zn4GQa$zw;Ia)Nlf63hP7RF%3;s7{b~mm^d>t=42p7baz68e2SNs2+Lp8pyWXReB?4 z!q6w;y?-W{^?t!ZA5MF-RBulpwL}8!Y&6-i#31mNWgmPNJOM_u+voNQsp?gl(8K6Z zk#!wjyGGBz&aJRJ%`gDm@HQJ`3;j$BH^07KhTSpQz%dRx_NcNM*4Z+|FWj_eod~;) zL*wbGp_%sm2(A!i(XTx5Y*{Z-bGAqF+&Rn8=zP0eRGzfF-7Q7G3HWl4tvQ!G9*PIY zy|qK`2GOqXyO$-mns3$MM9|55=QZI;lwR~=nV*PPPb!LF*p5SY{h{_3Fj{sZY%`Cdh?V%-yH(Okf5Jpu-4Bk7%3U>pY zfXcFOenCQ5)*2!{D^^_Py09r?M#TIOi#-S2{w`jC|4bv`GrSojYJ40le z*h{M{w^X%=*FDjLh@39s+S}@hC6|S09EjzTyQ$acn8}G>Wy>V*?cHm!IPEWOs^W|M z@np6xfzd~k&tG*u-iej7r5HYGjnrOJ&&8X%v&3VEIe6or$77%!GX9m+=34-?pSjh- zVe1!W$9L~dmteS`#{z_2%b`hiUHSkSK*qhTp;%2k#23lG)j2h zan^v^0R44uYBF@A?jW?_Te!XDe+wpZ6jYi-K- z3O)yeSSMpCB&vRH1OEN2m&WoavsTQyR|){a8-#FJ2`4VG{o}f}|3Fae_8;#A{SCaO4AF`Wf6f0xITKhRdnJB+#PU+eoYOP_1LOf<<*H&i!nrs(1bwx z=cm1hhpzFRn|efhg!7At0$(6Z&zdv2*V107*g9?s8f5me5x zziux&116G_-)^|bsuvk()n2|V${QfE?%chL4q|jjspE5fM{DPntdweD>^9-JUhH=l zhFQ_By2_Ue#W&8&&Boju%fj8Z_KAn+0YSdGbwO-z3cCj%z5zkoq`DYOfc};%7le!w zSYf<)-m1-7p((lJn1ylk?J&R}T)ejEeV+FTzFZtB$iTisF#X6z5OIBl=z|U-SA{qf zLy>uN2TO3cQZK&RK5uiKHzN#(&XE+mu+rW6i;e@h2 zI1#|9{Sao@t9!GLfvICtDTIc+U1@+=76UPkpmV;Z;Czbd{h1jzp?V;cSMUHYEN5(q zMTk)WzTIpxR*~MvYq7-xWnDaM;)&J%Mj+j?k zt_tS~&xF+ujH`zm;VWtJ=z@I@ULf4>{I$LSGtCvml)(Z_F(J4QbYN*`^=^LQ^Z0mb zird+?`p{6W@=@F_&BD>Mq=N$1S8>zkGJy4}oJtUeti1CVMrs6Y20C_5hRoGGxqiEB zI);1Fe1RJ;$yB}Ar1i?F2Ye^rcJ>ys2*wd2am{zF6Xt%wkcMVLuD0lc`;>hst91FQ z(#U&Lg^y)^V=@7lmfER0i_g-$chkEFbH`bC3uE}Iw6%P7Fm(@tv zRHRSVa}^zSql5ZX`oA;(ic8Y(Y^i zPr{AJ-ZnUD7Hg>=PvCT*VO?h*S>Y#yoPqout}P2HK*szBr@?n>utzN8Doe|SRa(* z!V@VCY`;hgwvTKd9yGciqQZ%oaCjTX#SMnzZughy4xy-H{5t5X)?D^bN>|_a?2_6? zL+2x`6RNNa=j7BLGmiW1zk{m&?SX&idA)v{lFPnx>`)rv1Ba}y(+KBUXCExo`wSo- z4=TrOU)AR)g|h6JPkjB)B=gTChDvjWP#_LY6X#H6XQ*HE`Hz1rA^&W?`j4NV|M>gw za1bR*BK#d{82#g~-)~X;m+w&5y?IPm`nY-g4o8;5$pd-tXI}icShUUWFUT$b>xEl& z|NR*^KQ8_b#ZlqOKSj-&uH8{d?ECNc4C-M1Ip>o8dfmUF0>!^xdDcb#>vuR*^L79A zLQ^DnbWHo)k+1eM$R|g&x26Zb2c1C?ndm;iHBL~r;_1(SgahoMh)eakHTEBNTs2U~ z;FE{?#gMoLC)c0mEOaPJH%(gbV~QaI7V^~L44(Vve?UohaUTE2PXjs*MLnRDc>pUg z&-%{?p)dzzszbro`ZI{DDXsk)1Yb#upQwc??G+BB`fpwRgvbR*&iz23JnAd@cQ-&{ z;gnnI-SgnT`}K38o4@|z>l%Oe+vw|aUVNM(p%8M6PuK7c2bWHbo}ls?Oo;^41oda& zlr{7w^`4>GQLi~9KBI~X1*+LMr6B)%bet7>1ZC_`3H#r3xHr1>j|t@=WAk?Z@fD2* zPz99Z`!WCfd4hv^p`5^!*@@~1{I~&=4sxviZ{|O~;njaYD)awe36RE=5DD?y$c4en z5_5l`UH$*og|TxEKU^4>V~W|D<#kW(aN0(@EkyTZ+cFB|uoh(9O(Y;Q_)D9-KXS@4ffldw(aLq?7mFd$)ITCx3ExtKWNH zW&$8tJu})>&lHjQ`TWfLo`2O*HPXI{7E40_a?~BbJ5=MFw`y;N;mycyA!{j#oFGd zRwt0}6&H`^e&qBq-%O=Si)GNy zevAeK8?JHrh{jMaRq*a3&`2I1kIqKTw!aoH`Fb}+EcU8btJMA|zgYT8_l4m7-RbdJ zYqY+)ZF#--t8%>KyYgPdTG`flJJG9No(xXMiOb94x->hV4R1TES-230VfvAXWNP=B zYGR&vf_;5?@0*`o7cM)#-bp93A0B5OhQ0oMvf0lUv)E7tuaAqfUbY{@jX`{{A57OH z`{A45#r!@WxLC9X-53h_nex*LmH)y;afZMyllHb67onT;%WyDvRzE5BGxz(o~)e1RkUL!qx34A56hd3-}O`tS9&7_H4f}^PZ*>fyI68%scaTGZ%s4+Ka&CWLjIa z6BncFvubb^n_Sh7uYBE7D-jv@dr$q|&FOOgIvWobOQ%c49zJJoTE$MFnCw4ByyIxRd>^{*`6gGROs9u5dAeNfhh{g6 zOe#-&=UBaW6FeQ~m(ye-8=8lQ?4!F*Y#h!EE|&`owbH(JvVYwPo=<#{vvR-w)Vsa% z4l*aX8LDrsV4;=24z0>}N2jghd~sI4Naa`KT&CZs)mGi`c$Uvp7nisG{QL@T%m|fN zf1r3eiK0dX`=xYs)?VLU7jtM-U#IpPXlDeM>;7pz_kc>xxHqmZakzU~j3n|$&8vru zFC6w_-E@@bpT}}%gR9li{gp4?O7EkBzCSx!X8YyzxR=9b zzn>RxQlr`3`BLE9$)LPG@?WM9{?r4Hkzu%~EhI ztE2m?qx0h@j4lh~Y9jTRh_%wqUO%?JdFr7w)(@6SbARe8GQK|DABO=}H<;JOL+u5; z)?q1q5*^+6R{7d8*z*pPcfFhaUTu(Q-ge5d5ZGe%X%dcx8&9QZYdsH-j-xOEo1-#9 z;##qH>g%5jgPHq>aw8HQUoA3m@1*%OJoR>NPj9DZ%jtvnbTXaXG_F>|``Ki18h(yK7@s1g^bY!| zhx=5sSBOPANGI_oTw1g+rY~SHklC-VhONa}sZ&3N&_3%uj?M!J9!j-U__2N^VNn;M zMtF@?&#JbFmomBZXt7R&E-q5R$GZ37GCGRZk2>RrQ1}T=zH+GD562&4q1@vPnmKSj zogU3EhuKJ?RZMwj*Y}ybSSz#c%}&Gh`pDmmrlSc=l-h$QsD*UmK7Fz*h^YAFBH6y~ zpWQwL=AC?Ke{?lG4z5d$RA6wOiD3FNzdVESxXyS(cAxNK)Ht_s!Z(_obK zPr`R7LLM~|T}&%N$Bp|&;HjCc-0|%<)}tn!L>14r;5`?Tv5H@nB}sxn0E{E(edD&T*W$bk)Go?IVUtk7*yr zHg$e_ALz~Z*O%4UW9uk-0g$kiY2=h@S<+iLavsT3|grI2hwJ@+Sr_RTd4J{`s% zkK~T~$b_@u;rK3*XytO~@3#tP!DeV&sv-r9;EMOSe|B~QdoPrmABDQvLGyUDtcUTW z(CMQp=xtsA@Yi>^gpD_kpHfect3On8IC?A_x!R}P##-gOeWbnWRn{}`{I`7f`c zsnzi6c(zP81`n;l)l+{}K535bz0kD5^;tA{JsS2q<;h7c*6(DNmuLRMv{_u;>_4!N z%IOBS2g_p^N#WVJiAKOfYPlMYy@^O`cBiVii`-}3K_hvj8-Z%Z>$1~sL{A6&v z&h(PY)%kFkO_XlpQ@@{?2~9Ho1p3i;z!c2d%q)56M(N{WvR?!{O8TP5W|kg6d=ye<_ls$f>bQK1i%Pxd-TM?QEZW`=T zXT9U(I0dObZO>1JPbaa`Rb;o}xx%}YzGCa5&MjsNlN3qdU_egvOmh@y@^=&1e@aO(SCGU9AhiuKf^CbqMRQDyI0Mkf9gB0c8|O$NL{zH zg{#36M#b~~#j<*p9X7kccsuc!uV=!s%l_>o+Z~0fv9l1a?^5B$X{;Zf`{$)qH?4eIT2=h|0p-yc1c3;s^JAMVaCTaTCH+KE4M+a2U4k7tF)Zmc;!DV4F&UpAiZ z+L#Xvv7n8nCcg13U7ehiv60BN?(Vu58B8p*-cEkKVhJ%ig?x-R`Y#Qnlj%kbT+r z%@)~ccR%!0Sfn0WDSveMuoyS|@lHNgM@#&AT6>ITZ?i!xjH~&(Kp6C}0cg2TJ+|}t z2XA3L>ttu+dUj0=pxkO1sy2PKi)AO&3thE+{(7q$y@?hc?`Mfl1fz!IcxZ;E%x%Ye z*ExxF1KH!dOgVbPwbS-ygE*`91+x45s7xmB(al&E&#?m^7gmqa`bn;j>3fm*kY`x1 z^q=y_t*86w1Y5SNYV?9e*M&HdY4bPi0IE!^QA9{Lm}_%IF;%4_G5RK z{#XQd@l#}Z(n3?RkPO^kF2{@YDtk1~PkoQxlX4+2eOkwg?EUJj6|7cIABebA!plTH zJHERPCW4Wq58IlHe*dbmJ}uq)k0#~3_vtB`7|#o1tc}yd%SGbk>y~Nn{_NEp}ENby$ zDYSab-0T->^NZkhYtaqmgC{r@o)eZv8iikw?|))nzLcimh`_Q{NTdLPCS{9^#`wG+RH;^_mxj zYNmWPd-Rnq6SZkrKfet>AK6or4(SQn0N zlXtiY;bb{4-Y*_g zgS4-=K0&z(zViN2z*kO{t8=d7(YpD#KHnz>bvtu@c3vO*qx?Im70dov?y`pSrH5vt zl#CuPbG?&Xs2q>qmZPb7A>A8bP_as!ww{ug7_&}S%~dpWlMmF++QGBvWA^BHy#!%_ zKQv$L-wqy@xx2{2tX%EY+9#pjML#>bLW&ta4xP8pI-NlK6vLYUY9+zr_^Op?4VKH= zs{Rzb>jwi7?s6+lSsE%Tf#p&TW8MiSGVodvY!~-uj`NgV7EB& zrJ9+f zQYPkq%H3qb^Wy%dM5futeasP8H@@?vKZ7dSW%KSno0ukNzQBl_$l-IhfHD;%0DJ@cd3&nyk7=_7XfS* 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%0AaGF_|e~zns3Na_urM+ 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

    d$qQT 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

    8f#lw;~ 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̭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 iHj?}DMBL*ykB~kP4Yjy{Cf`9t! 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�vb^@|JHVjBR5Ev=(i7qsb%0~l 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�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�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≧6{68omP~E<<9DNcfIIYd=EaN@~aTg!?@0 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%0DQ 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 F{vSQ|TfqPT literal 0 HcmV?d00001 From ddded622b47f5fa7bd5ec6b9eb15686703a8deb4 Mon Sep 17 00:00:00 2001 From: Syrus Date: Wed, 10 Apr 2019 11:34:18 -0700 Subject: [PATCH 191/413] Improved README with extra examples --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 35838e4f1..924b062d4 100644 --- a/README.md +++ b/README.md @@ -33,12 +33,18 @@ _**NEW ✨**: You can now embed Wasmer in your Rust application, check our [exam Wasmer can execute both the standard binary format (`.wasm`) and the text format defined by the WebAssembly reference interpreter (`.wat`). -Once installed, you will be able to run any WebAssembly files (_including nginx and Lua!_): +Once installed, you will be able to run any WebAssembly files (_including Lua, PHP, SQLite and nginx!_): ```sh # Run Lua wasmer run examples/lua.wasm +# Run PHP +wasmer run examples/php.wasm + +# Run SQLite +wasmer run examples/sqlite.wasm + # Run nginx wasmer run examples/nginx/nginx.wasm -- -p examples/nginx -c nginx.conf ``` From 4e09bda745e4cd369b0bf5ef413a0b9e98f7bd84 Mon Sep 17 00:00:00 2001 From: losfair Date: Thu, 11 Apr 2019 02:54:23 +0800 Subject: [PATCH 192/413] Fix calling convention. --- lib/dynasm-backend/src/machine.rs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/dynasm-backend/src/machine.rs b/lib/dynasm-backend/src/machine.rs index ae7163c56..7f8eb0138 100644 --- a/lib/dynasm-backend/src/machine.rs +++ b/lib/dynasm-backend/src/machine.rs @@ -47,6 +47,8 @@ impl Machine { RDI, R8, R9, + R10, + R11, ]; for r in REGS { if !self.used_gprs.contains(r) { @@ -334,12 +336,11 @@ impl Machine { // Use callee-saved registers for locals. fn get_local_location(idx: usize) -> Location { match idx { - 0 => Location::GPR(GPR::R10), - 1 => Location::GPR(GPR::R11), - 2 => Location::GPR(GPR::R12), - 3 => Location::GPR(GPR::R13), - 4 => Location::GPR(GPR::R14), - _ => Location::Memory(GPR::RBP, -(((idx - 4) * 8) as i32)), + 0 => Location::GPR(GPR::R12), + 1 => Location::GPR(GPR::R13), + 2 => Location::GPR(GPR::R14), + 3 => Location::GPR(GPR::RBX), + _ => Location::Memory(GPR::RBP, -(((idx - 3) * 8) as i32)), } } From 20297d17511b1f605dac069cc635b3dc9313cccf Mon Sep 17 00:00:00 2001 From: Ivan Enderlin Date: Wed, 10 Apr 2019 12:17:16 -0700 Subject: [PATCH 193/413] feat(runtime-core) `Instance.exports` takes `&self` instead of `&mut self`. There is no reason for `exports` to take a mutable reference. --- lib/runtime-core/src/export.rs | 4 ++-- lib/runtime-core/src/instance.rs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/runtime-core/src/export.rs b/lib/runtime-core/src/export.rs index 0a2c09136..81e0eae92 100644 --- a/lib/runtime-core/src/export.rs +++ b/lib/runtime-core/src/export.rs @@ -40,13 +40,13 @@ impl FuncPointer { } pub struct ExportIter<'a> { - inner: &'a mut InstanceInner, + inner: &'a InstanceInner, iter: hash_map::Iter<'a, String, ExportIndex>, module: &'a ModuleInner, } impl<'a> ExportIter<'a> { - pub(crate) fn new(module: &'a ModuleInner, inner: &'a mut InstanceInner) -> Self { + pub(crate) fn new(module: &'a ModuleInner, inner: &'a InstanceInner) -> Self { Self { inner, iter: module.info.exports.iter(), diff --git a/lib/runtime-core/src/instance.rs b/lib/runtime-core/src/instance.rs index 956b95d7b..e0edfba5a 100644 --- a/lib/runtime-core/src/instance.rs +++ b/lib/runtime-core/src/instance.rs @@ -279,8 +279,8 @@ impl Instance { /// Returns an iterator over all of the items /// exported from this instance. - pub fn exports(&mut self) -> ExportIter { - ExportIter::new(&self.module, &mut self.inner) + pub fn exports(&self) -> ExportIter { + ExportIter::new(&self.module, &self.inner) } /// The module used to instantiate this Instance. From 1cb3fbea0a10ad2741bab2a03c9ccb6c645c54c9 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Wed, 10 Apr 2019 14:17:10 -0700 Subject: [PATCH 194/413] Add support for panicking/returning err back to llvm --- lib/llvm-backend/cpp/object_loader.hh | 14 ++++++++++---- lib/llvm-backend/src/backend.rs | 10 +++++++--- lib/runtime/examples/call.rs | 4 ++-- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/lib/llvm-backend/cpp/object_loader.hh b/lib/llvm-backend/cpp/object_loader.hh index 0d6bcc603..f1b53f156 100644 --- a/lib/llvm-backend/cpp/object_loader.hh +++ b/lib/llvm-backend/cpp/object_loader.hh @@ -61,15 +61,15 @@ struct UncatchableException : WasmException struct UserException : UncatchableException { public: - UserException(std::string msg) : msg(msg) {} + UserException(size_t data, size_t vtable) : data(data), vtable(vtable) {} virtual std::string description() const noexcept override { - return std::string("user exception: ") + msg; + return "user exception"; } - private: - std::string msg; + // The parts of a `Box`. + size_t data, vtable; }; struct WasmTrap : UncatchableException @@ -176,6 +176,12 @@ extern "C" delete module; } + // Throw a fat pointer that's assumed to be `*mut dyn Any` on the rust + // side. + [[noreturn]] void throw_any(size_t data, size_t vtable) { + throw UserException(data, vtable); + } + bool invoke_trampoline( trampoline_t trampoline, void *ctx, diff --git a/lib/llvm-backend/src/backend.rs b/lib/llvm-backend/src/backend.rs index 1a82cfaf2..f40a6dfb2 100644 --- a/lib/llvm-backend/src/backend.rs +++ b/lib/llvm-backend/src/backend.rs @@ -75,7 +75,11 @@ extern "C" { fn module_delete(module: *mut LLVMModule); fn get_func_symbol(module: *mut LLVMModule, name: *const c_char) -> *const vm::Func; - fn throw_trap(ty: i32); + fn throw_trap(ty: i32) -> !; + + /// This should be the same as spliting up the fat pointer into two arguments, + /// but this is cleaner, I think? + fn throw_any(data: *mut dyn Any) -> !; #[allow(improper_ctypes)] fn invoke_trampoline( @@ -433,8 +437,8 @@ impl ProtectedCaller for LLVMProtectedCaller { } impl UserTrapper for Placeholder { - unsafe fn do_early_trap(&self, _data: Box) -> ! { - unimplemented!("do early trap") + unsafe fn do_early_trap(&self, data: Box) -> ! { + throw_any(Box::leak(data)) } } diff --git a/lib/runtime/examples/call.rs b/lib/runtime/examples/call.rs index 104fa9692..12f149062 100644 --- a/lib/runtime/examples/call.rs +++ b/lib/runtime/examples/call.rs @@ -32,11 +32,11 @@ fn get_wasm() -> Vec { wat2wasm(WAT).unwrap() } -fn foobar(ctx: &mut Ctx) -> i32 { +fn foobar(_ctx: &mut Ctx) -> i32 { 42 } -fn do_panic(ctx: &mut Ctx) -> Result { +fn do_panic(_ctx: &mut Ctx) -> Result { Err("error".to_string()) } From fba279f9d5eff3f23602e392e04824c27911d518 Mon Sep 17 00:00:00 2001 From: Syrus Date: Wed, 10 Apr 2019 14:34:58 -0700 Subject: [PATCH 195/413] Updated lua example --- examples/lua.wasm | Bin 514327 -> 520025 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/examples/lua.wasm b/examples/lua.wasm index 1a424ae532ef6ebac4e8784e91f5be5e0840ed14..c0e65b22a2d3bfcc4381fb41c6ba4849521052fd 100644 GIT binary patch literal 520025 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

    ;Zc}6#X%YMU=9EUE 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%0A}pRGPmp^Q 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

    -# Wasmer dynasm backend +# Wasmer singlepass backend Wasmer is a standalone JIT WebAssembly runtime, aiming to be fully compatible with Emscripten, Rust and Go. [Learn more](https://github.com/wasmerio/wasmer). -This crate represents the dynasm backend. +This crate represents the singlepass backend. diff --git a/lib/dynasm-backend/src/codegen.rs b/lib/singlepass-backend/src/codegen.rs similarity index 100% rename from lib/dynasm-backend/src/codegen.rs rename to lib/singlepass-backend/src/codegen.rs diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/singlepass-backend/src/codegen_x64.rs similarity index 100% rename from lib/dynasm-backend/src/codegen_x64.rs rename to lib/singlepass-backend/src/codegen_x64.rs diff --git a/lib/dynasm-backend/src/emitter_x64.rs b/lib/singlepass-backend/src/emitter_x64.rs similarity index 100% rename from lib/dynasm-backend/src/emitter_x64.rs rename to lib/singlepass-backend/src/emitter_x64.rs diff --git a/lib/dynasm-backend/src/lib.rs b/lib/singlepass-backend/src/lib.rs similarity index 90% rename from lib/dynasm-backend/src/lib.rs rename to lib/singlepass-backend/src/lib.rs index 0092b7302..cdb275cd3 100644 --- a/lib/dynasm-backend/src/lib.rs +++ b/lib/singlepass-backend/src/lib.rs @@ -41,7 +41,7 @@ impl CacheGen for Placeholder { _module: &ModuleInner, ) -> Result<(Box, Box<[u8]>, Memory), CacheError> { Err(CacheError::Unknown( - "the dynasm backend doesn't support caching yet".to_string(), + "the singlepass backend doesn't support caching yet".to_string(), )) } } @@ -61,7 +61,7 @@ impl Compiler for SinglePassCompiler { _: Token, ) -> CompileResult { let mut mcg = codegen_x64::X64ModuleCodeGenerator::new(); - let info = parse::read_module(wasm, Backend::Dynasm, &mut mcg, &compiler_config)?; + let info = parse::read_module(wasm, Backend::Singlepass, &mut mcg, &compiler_config)?; let (ec, resolver) = mcg.finalize(&info)?; Ok(ModuleInner { cache_gen: Box::new(Placeholder), @@ -73,7 +73,7 @@ impl Compiler for SinglePassCompiler { unsafe fn from_cache(&self, _artifact: Artifact, _: Token) -> Result { Err(CacheError::Unknown( - "the dynasm backend doesn't support caching yet".to_string(), + "the singlepass backend doesn't support caching yet".to_string(), )) } } diff --git a/lib/dynasm-backend/src/machine.rs b/lib/singlepass-backend/src/machine.rs similarity index 100% rename from lib/dynasm-backend/src/machine.rs rename to lib/singlepass-backend/src/machine.rs diff --git a/lib/dynasm-backend/src/parse.rs b/lib/singlepass-backend/src/parse.rs similarity index 100% rename from lib/dynasm-backend/src/parse.rs rename to lib/singlepass-backend/src/parse.rs diff --git a/lib/dynasm-backend/src/protect_unix.rs b/lib/singlepass-backend/src/protect_unix.rs similarity index 100% rename from lib/dynasm-backend/src/protect_unix.rs rename to lib/singlepass-backend/src/protect_unix.rs diff --git a/lib/spectests/Cargo.toml b/lib/spectests/Cargo.toml index 8dd8f83f4..d19fdab6d 100644 --- a/lib/spectests/Cargo.toml +++ b/lib/spectests/Cargo.toml @@ -12,7 +12,7 @@ build = "build/mod.rs" wasmer-runtime-core = { path = "../runtime-core", version = "0.2.0" } wasmer-clif-backend = { path = "../clif-backend", version = "0.2.0" } wasmer-llvm-backend = { path = "../llvm-backend", version = "0.1.0", optional = true } -wasmer-dynasm-backend = { path = "../dynasm-backend", version = "0.1.0", optional = true } +wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.1.0", optional = true } [build-dependencies] wabt = "0.7.2" @@ -25,4 +25,4 @@ default = ["fast-tests"] fast-tests = [] clif = [] llvm = ["wasmer-llvm-backend"] -dynasm = ["wasmer-dynasm-backend"] \ No newline at end of file +singlepass = ["wasmer-singlepass-backend"] diff --git a/lib/spectests/build/spectests.rs b/lib/spectests/build/spectests.rs index a13faefd1..10fb45678 100644 --- a/lib/spectests/build/spectests.rs +++ b/lib/spectests/build/spectests.rs @@ -107,13 +107,13 @@ fn get_compiler() -> impl Compiler { LLVMCompiler::new() } -#[cfg(feature = "dynasm")] +#[cfg(feature = "singlepass")] fn get_compiler() -> impl Compiler { - use wasmer_dynasm_backend::SinglePassCompiler; + use wasmer_singlepass_backend::SinglePassCompiler; SinglePassCompiler::new() } -#[cfg(not(any(feature = "llvm", feature = "clif", feature = "dynasm")))] +#[cfg(not(any(feature = "llvm", feature = "clif", feature = "singlepass")))] fn get_compiler() -> impl Compiler { panic!("compiler not specified, activate a compiler via features"); use wasmer_clif_backend::CraneliftCompiler; diff --git a/lib/spectests/examples/simple/main.rs b/lib/spectests/examples/simple/main.rs index c61cdb18f..357adb5f7 100644 --- a/lib/spectests/examples/simple/main.rs +++ b/lib/spectests/examples/simple/main.rs @@ -22,13 +22,13 @@ fn get_compiler() -> impl Compiler { LLVMCompiler::new() } -#[cfg(feature = "dynasm")] +#[cfg(feature = "singlepass")] fn get_compiler() -> impl Compiler { - use wasmer_dynasm_backend::SinglePassCompiler; + use wasmer_singlepass_backend::SinglePassCompiler; SinglePassCompiler::new() } -#[cfg(not(any(feature = "llvm", feature = "clif", feature = "dynasm")))] +#[cfg(not(any(feature = "llvm", feature = "clif", feature = "singlepass")))] fn get_compiler() -> impl Compiler { panic!("compiler not specified, activate a compiler via features"); use wasmer_clif_backend::CraneliftCompiler; diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index 345503558..b6211a801 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -6,6 +6,7 @@ use std::io; use std::io::Read; use std::path::PathBuf; use std::process::exit; +use std::str::FromStr; use hashbrown::HashMap; use structopt::StructOpt; @@ -62,13 +63,36 @@ struct Run { #[structopt(parse(from_os_str))] path: PathBuf, - /// Application arguments - #[structopt(name = "--", raw(multiple = "true"))] - args: Vec, + // Disable the cache + #[structopt(long = "backend", default_value="cranelift")] + backend: Backend, /// Emscripten symbol map #[structopt(long = "em-symbol-map", parse(from_os_str))] em_symbol_map: Option, + + /// Application arguments + #[structopt(name = "--", raw(multiple = "true"))] + args: Vec, +} + +#[derive(Debug)] +enum Backend { + Cranelift, + Singlepass, + LLVM, +} + +impl FromStr for Backend { + type Err = String; + fn from_str(s: &str) -> Result { + match s { + "singlepass" => Ok(Backend::Singlepass), + "cranelift" => Ok(Backend::Cranelift), + "llvm" => Ok(Backend::LLVM), + _ => Err(format!("The backend {} doesn't exist", s)) + } + } } #[derive(Debug, StructOpt)] From b724dd0a9b128869e9ba46c0baada037fb49758c Mon Sep 17 00:00:00 2001 From: Syrus Date: Thu, 11 Apr 2019 13:17:19 -0700 Subject: [PATCH 216/413] Fix format --- src/bin/wasmer.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index b6211a801..9f425457d 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -64,7 +64,7 @@ struct Run { path: PathBuf, // Disable the cache - #[structopt(long = "backend", default_value="cranelift")] + #[structopt(long = "backend", default_value = "cranelift")] backend: Backend, /// Emscripten symbol map @@ -90,7 +90,7 @@ impl FromStr for Backend { "singlepass" => Ok(Backend::Singlepass), "cranelift" => Ok(Backend::Cranelift), "llvm" => Ok(Backend::LLVM), - _ => Err(format!("The backend {} doesn't exist", s)) + _ => Err(format!("The backend {} doesn't exist", s)), } } } From 4740b2467f9d7fce6bab7d5516c574efd181055c Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Thu, 11 Apr 2019 14:34:54 -0700 Subject: [PATCH 217/413] Add backend selection to cli --- Cargo.toml | 2 +- lib/runtime/src/lib.rs | 10 ++++++++++ src/bin/wasmer.rs | 40 ++++++++++++++++++++++++++++++++++------ src/webassembly.rs | 19 ++++++++++--------- 4 files changed, 55 insertions(+), 16 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 5624b659a..19c679be3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,7 +40,7 @@ wabt = "0.7.2" glob = "0.2.11" [features] -default = ["fast-tests", "wasi"] +default = ["fast-tests", "wasi", "singlepass"] debug = ["wasmer-clif-backend/debug", "wasmer-runtime-core/debug"] # This feature will allow cargo test to run much faster fast-tests = [] diff --git a/lib/runtime/src/lib.rs b/lib/runtime/src/lib.rs index f9a9ce819..1836bb206 100644 --- a/lib/runtime/src/lib.rs +++ b/lib/runtime/src/lib.rs @@ -141,6 +141,16 @@ pub fn compile_with_config( wasmer_runtime_core::compile_with_config(&wasm[..], default_compiler(), compiler_config) } +/// The same as `compile_with_config` but takes a `Compiler` for the purpose of +/// changing the backend. +pub fn compile_with_config_with( + wasm: &[u8], + compiler_config: CompilerConfig, + compiler: &dyn Compiler, +) -> error::CompileResult { + wasmer_runtime_core::compile_with_config(&wasm[..], compiler, compiler_config) +} + /// Compile and instantiate WebAssembly code without /// creating a [`Module`]. /// diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index 9f425457d..0c09b8a95 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -13,8 +13,13 @@ use structopt::StructOpt; use wasmer::webassembly::InstanceABI; use wasmer::*; +use wasmer_clif_backend::CraneliftCompiler; use wasmer_runtime::cache::{Cache as BaseCache, FileSystemCache, WasmHash, WASMER_VERSION_HASH}; -use wasmer_runtime_core::{self, backend::CompilerConfig}; +use wasmer_runtime_core::{ + self, + backend::{Compiler, CompilerConfig}, +}; +use wasmer_singlepass_backend::SinglePassCompiler; #[cfg(feature = "wasi")] use wasmer_wasi; @@ -64,7 +69,11 @@ struct Run { path: PathBuf, // Disable the cache - #[structopt(long = "backend", default_value = "cranelift")] + #[structopt( + long = "backend", + default_value = "cranelift", + raw(possible_values = "Backend::variants()", case_insensitive = "true") + )] backend: Backend, /// Emscripten symbol map @@ -76,6 +85,7 @@ struct Run { args: Vec, } +#[allow(dead_code)] #[derive(Debug)] enum Backend { Cranelift, @@ -83,13 +93,23 @@ enum Backend { LLVM, } +impl Backend { + pub fn variants() -> &'static [&'static str] { + &["singlepass", "cranelift", "llvm"] + } +} + impl FromStr for Backend { type Err = String; fn from_str(s: &str) -> Result { - match s { + match s.to_lowercase().as_str() { "singlepass" => Ok(Backend::Singlepass), "cranelift" => Ok(Backend::Cranelift), - "llvm" => Ok(Backend::LLVM), + // "llvm" => Ok(Backend::LLVM), + "llvm" => Err( + "The LLVM backend option is not enabled by default due to binary size constraints" + .to_string(), + ), _ => Err(format!("The backend {} doesn't exist", s)), } } @@ -201,6 +221,12 @@ fn execute_wasm(options: &Run) -> Result<(), String> { .map_err(|e| format!("Can't convert from wast to wasm: {:?}", e))?; } + let compiler: Box = match options.backend { + Backend::Singlepass => Box::new(SinglePassCompiler::new()), + Backend::Cranelift => Box::new(CraneliftCompiler::new()), + Backend::LLVM => unimplemented!(), + }; + let module = if !disable_cache { // If we have cache enabled @@ -226,11 +252,12 @@ fn execute_wasm(options: &Run) -> Result<(), String> { module } Err(_) => { - let module = webassembly::compile_with_config( + let module = webassembly::compile_with_config_with( &wasm_binary[..], CompilerConfig { symbol_map: em_symbol_map, }, + &*compiler, ) .map_err(|e| format!("Can't compile module: {:?}", e))?; // We try to save the module into a cache file @@ -241,11 +268,12 @@ fn execute_wasm(options: &Run) -> Result<(), String> { }; module } else { - webassembly::compile_with_config( + webassembly::compile_with_config_with( &wasm_binary[..], CompilerConfig { symbol_map: em_symbol_map, }, + &*compiler, ) .map_err(|e| format!("Can't compile module: {:?}", e))? }; diff --git a/src/webassembly.rs b/src/webassembly.rs index 01367795a..fc32b3299 100644 --- a/src/webassembly.rs +++ b/src/webassembly.rs @@ -1,4 +1,5 @@ use std::panic; +pub use wasmer_runtime::compile_with_config_with; use wasmer_runtime::{ self as runtime, error::{CallResult, Result}, @@ -78,15 +79,15 @@ pub fn compile(buffer_source: &[u8]) -> Result { Ok(module) } -/// The same as `compile` but takes a `CompilerConfig` for the purpose of -/// changing the compiler's behavior -pub fn compile_with_config( - buffer_source: &[u8], - compiler_config: CompilerConfig, -) -> Result { - let module = runtime::compile_with_config(buffer_source, compiler_config)?; - Ok(module) -} +// /// The same as `compile` but takes a `CompilerConfig` for the purpose of +// /// changing the compiler's behavior +// pub fn compile_with_config_with( +// buffer_source: &[u8], +// compiler_config: CompilerConfig, +// ) -> Result { +// let module = runtime::compile_with_config(buffer_source, compiler_config)?; +// Ok(module) +// } /// Performs common instance operations needed when an instance is first run /// including data setup, handling arguments and calling a main function From 81807712d8157b970a8055108ae13adbfd5570e9 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Thu, 11 Apr 2019 14:44:43 -0700 Subject: [PATCH 218/413] Enable llvm backend --- Cargo.toml | 6 +++--- src/bin/wasmer.rs | 13 +++++++------ 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 19c679be3..a82a52ef1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,11 +40,11 @@ wabt = "0.7.2" glob = "0.2.11" [features] -default = ["fast-tests", "wasi", "singlepass"] +default = ["fast-tests", "wasi", "singlepass", "llvm"] debug = ["wasmer-clif-backend/debug", "wasmer-runtime-core/debug"] # This feature will allow cargo test to run much faster fast-tests = [] -llvm = ["wasmer-llvm-backend", "wasmer-runtime/llvm"] -singlepass = ["wasmer-singlepass-backend", "wasmer-runtime/singlepass"] +llvm = ["wasmer-llvm-backend"] +singlepass = ["wasmer-singlepass-backend"] wasi = ["wasmer-wasi"] vfs = ["wasmer-runtime-abi"] diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index 0c09b8a95..d8ac1cbd7 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -14,6 +14,7 @@ use structopt::StructOpt; use wasmer::webassembly::InstanceABI; use wasmer::*; use wasmer_clif_backend::CraneliftCompiler; +use wasmer_llvm_backend::LLVMCompiler; use wasmer_runtime::cache::{Cache as BaseCache, FileSystemCache, WasmHash, WASMER_VERSION_HASH}; use wasmer_runtime_core::{ self, @@ -105,11 +106,11 @@ impl FromStr for Backend { match s.to_lowercase().as_str() { "singlepass" => Ok(Backend::Singlepass), "cranelift" => Ok(Backend::Cranelift), - // "llvm" => Ok(Backend::LLVM), - "llvm" => Err( - "The LLVM backend option is not enabled by default due to binary size constraints" - .to_string(), - ), + "llvm" => Ok(Backend::LLVM), + // "llvm" => Err( + // "The LLVM backend option is not enabled by default due to binary size constraints" + // .to_string(), + // ), _ => Err(format!("The backend {} doesn't exist", s)), } } @@ -224,7 +225,7 @@ fn execute_wasm(options: &Run) -> Result<(), String> { let compiler: Box = match options.backend { Backend::Singlepass => Box::new(SinglePassCompiler::new()), Backend::Cranelift => Box::new(CraneliftCompiler::new()), - Backend::LLVM => unimplemented!(), + Backend::LLVM => Box::new(LLVMCompiler::new()), }; let module = if !disable_cache { From e5d0b377c102a2f5a3e55352f6089047a7fb1d8f Mon Sep 17 00:00:00 2001 From: Syrus Date: Thu, 11 Apr 2019 15:00:02 -0700 Subject: [PATCH 219/413] Improved install script --- .circleci/config.yml | 22 ++++++++++++++++++++-- .gitignore | 1 + Makefile | 10 ++++++++++ binary-name.sh | 14 +++++++------- install.sh | 17 ++++++++--------- 5 files changed, 46 insertions(+), 18 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 67309e903..15f493a09 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -142,6 +142,10 @@ jobs: - image: circleci/rust:latest steps: - checkout + # - run: + # name: "Pull dependencies" + # command: | + # git clone git@github.com:wasmerio/wapm-cli.git - restore_cache: keys: - v8-cargo-cache-linux-nightly-{{ arch }}-{{ checksum "Cargo.lock" }} @@ -170,12 +174,14 @@ jobs: command: | export LLVM_SYS_70_PREFIX="`pwd`/clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04/" make release + # cargo build --release --manifest-path wapm-cli/Cargo.toml mkdir -p artifacts VERSION=$(cargo pkgid | cut -d# -f2 | cut -d: -f2) # GIT_VERSION=$(git describe --exact-match --tags) echo "${VERSION}" >> artifacts/version echo "${CIRCLE_TAG}" >> artifacts/git_version - cp ./target/release/wasmer ./artifacts/$(./binary-name.sh) + make build-install + cp ./wasmer.tar.gz ./artifacts/$(./binary-name.sh) - run: name: Debug flag checked command: | @@ -193,6 +199,9 @@ jobs: - target/release/.fingerprint - target/release/build - target/release/deps + # - wapm-cli/target/release/.fingerprint + # - wapm-cli/target/release/build + # - wapm-cli/target/release/deps key: v8-cargo-cache-linux-nightly-{{ arch }}-{{ checksum "Cargo.lock" }} test-and-build-macos: @@ -200,6 +209,10 @@ jobs: xcode: "9.0" steps: - checkout + # - run: + # name: "Pull dependencies" + # command: | + # git clone git@github.com:wasmerio/wapm-cli.git - restore_cache: keys: - v8-cargo-cache-darwin-nightly-{{ arch }}-{{ checksum "Cargo.lock" }} @@ -250,10 +263,12 @@ jobs: export PATH="$HOME/.cargo/bin:$PATH" export LLVM_SYS_70_PREFIX="`pwd`/clang+llvm-7.0.0-x86_64-apple-darwin/" make release + # cargo build --release --manifest-path wapm-cli/Cargo.toml mkdir -p artifacts + make build-install + cp ./wasmer.tar.gz ./artifacts/$(./binary-name.sh) # VERSION=$(cargo pkgid | cut -d# -f2 | cut -d: -f2) # echo "${VERSION}" >> artifacts/version - cp ./target/release/wasmer ./artifacts/$(./binary-name.sh) - persist_to_workspace: root: . paths: @@ -267,6 +282,9 @@ jobs: - target/release/.fingerprint - target/release/build - target/release/deps + # - wapm-cli/target/release/.fingerprint + # - wapm-cli/target/release/build + # - wapm-cli/target/release/deps key: v8-cargo-cache-darwin-nightly-{ arch }}-{{ checksum "Cargo.lock" }} test-rust-nightly: diff --git a/.gitignore b/.gitignore index 141efbf78..d1122a798 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ .DS_Store .idea **/.vscode +install/ diff --git a/Makefile b/Makefile index 2b87dd7e7..4349b256e 100644 --- a/Makefile +++ b/Makefile @@ -32,6 +32,16 @@ lint: precommit: lint test +build-install: + mkdir -p ./install/bin + # cp ./wapm-cli/target/release/wapm ./install/bin/ + cp ./target/release/wasmer ./install/bin/ + tar -C ./install -zcvf wasmer.tar.gz bin/wapm bin/wasmer + +# For installing the contents locally +do-install: + tar -C ~/.wasmer -zxvf wasmer.tar.gz + test: # We use one thread so the emscripten stdouts doesn't collide cargo test --all --exclude wasmer-runtime-c-api --exclude wasmer-emscripten --exclude wasmer-spectests --exclude wasmer-singlepass-backend -- $(runargs) diff --git a/binary-name.sh b/binary-name.sh index 98a3a8497..4ac8ef8e3 100755 --- a/binary-name.sh +++ b/binary-name.sh @@ -23,8 +23,8 @@ initOS() { darwin) OS='darwin';; linux) OS='linux';; freebsd) OS='freebsd';; - mingw*) OS='windows';; - msys*) OS='windows';; + # mingw*) OS='windows';; + # msys*) OS='windows';; *) echo "OS ${OS} is not supported by this installation script"; exit 1;; esac } @@ -34,11 +34,11 @@ initArch initOS # determine install directory if required -BINARY="wasmer-${OS}-${ARCH}" - +BINARY="wasmer-${OS}-${ARCH}.tar.gz" + # add .exe if on windows -if [ "$OS" = "windows" ]; then - BINARY="$BINARY.exe" -fi +# if [ "$OS" = "windows" ]; then +# BINARY="$BINARY.exe" +# fi echo "${BINARY}" diff --git a/install.sh b/install.sh index 0b7da4ca2..e9e43d445 100755 --- a/install.sh +++ b/install.sh @@ -32,6 +32,7 @@ white="\033[37m" bold="\e[1m" dim="\e[2m" +# Warning: Remove this on the public repo RELEASES_URL="https://github.com/wasmerio/wasmer/releases" wasmer_download_json() { @@ -369,12 +370,12 @@ wasmer_download() { WASMER=INSTALL_DIRECTORY # assemble expected release artifact name - BINARY="wasmer-${OS}-${ARCH}" + BINARY="wasmer-${OS}-${ARCH}.tar.gz" # add .exe if on windows - if [ "$OS" = "windows" ]; then - BINARY="$BINARY.exe" - fi + # if [ "$OS" = "windows" ]; then + # BINARY="$BINARY.exe" + # fi # if WASMER_RELEASE_TAG was not provided, assume latest if [ -z "$WASMER_RELEASE_TAG" ]; then @@ -417,9 +418,6 @@ wasmer_download() { printf "\033[K\n\033[1A" # printf "\033[1A$cyan> Downloaded$reset\033[K\n" # echo "Setting executable permissions." - chmod +x "$DOWNLOAD_FILE" - - INSTALL_NAME="wasmer" # windows not supported yet # if [ "$OS" = "windows" ]; then @@ -428,8 +426,9 @@ wasmer_download() { # echo "Moving executable to $INSTALL_DIRECTORY/$INSTALL_NAME" - mkdir -p $INSTALL_DIRECTORY/bin - mv "$DOWNLOAD_FILE" "$INSTALL_DIRECTORY/bin/$INSTALL_NAME" + mkdir -p $INSTALL_DIRECTORY + # Untar the wasmer contents in the install directory + tar -C $INSTALL_DIRECTORY -zxvf $DOWNLOAD_FILE } wasmer_verify_or_quit() { From e31d4615ce0d5470facf8ad217dec53252f4b1ff Mon Sep 17 00:00:00 2001 From: Syrus Date: Thu, 11 Apr 2019 15:07:19 -0700 Subject: [PATCH 220/413] Added more commands to install --- .circleci/config.yml | 48 ++++++++++++++++++++++---------------------- Makefile | 2 +- install.sh | 2 +- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 15f493a09..0447882bd 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -142,10 +142,10 @@ jobs: - image: circleci/rust:latest steps: - checkout - # - run: - # name: "Pull dependencies" - # command: | - # git clone git@github.com:wasmerio/wapm-cli.git + - run: + name: "Pull dependencies" + command: | + git clone git@github.com:wasmerio/wapm-cli.git - restore_cache: keys: - v8-cargo-cache-linux-nightly-{{ arch }}-{{ checksum "Cargo.lock" }} @@ -174,7 +174,7 @@ jobs: command: | export LLVM_SYS_70_PREFIX="`pwd`/clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04/" make release - # cargo build --release --manifest-path wapm-cli/Cargo.toml + cargo build --release --manifest-path wapm-cli/Cargo.toml mkdir -p artifacts VERSION=$(cargo pkgid | cut -d# -f2 | cut -d: -f2) # GIT_VERSION=$(git describe --exact-match --tags) @@ -199,9 +199,9 @@ jobs: - target/release/.fingerprint - target/release/build - target/release/deps - # - wapm-cli/target/release/.fingerprint - # - wapm-cli/target/release/build - # - wapm-cli/target/release/deps + - wapm-cli/target/release/.fingerprint + - wapm-cli/target/release/build + - wapm-cli/target/release/deps key: v8-cargo-cache-linux-nightly-{{ arch }}-{{ checksum "Cargo.lock" }} test-and-build-macos: @@ -209,10 +209,10 @@ jobs: xcode: "9.0" steps: - checkout - # - run: - # name: "Pull dependencies" - # command: | - # git clone git@github.com:wasmerio/wapm-cli.git + - run: + name: "Pull dependencies" + command: | + git clone git@github.com:wasmerio/wapm-cli.git - restore_cache: keys: - v8-cargo-cache-darwin-nightly-{{ arch }}-{{ checksum "Cargo.lock" }} @@ -263,7 +263,7 @@ jobs: export PATH="$HOME/.cargo/bin:$PATH" export LLVM_SYS_70_PREFIX="`pwd`/clang+llvm-7.0.0-x86_64-apple-darwin/" make release - # cargo build --release --manifest-path wapm-cli/Cargo.toml + cargo build --release --manifest-path wapm-cli/Cargo.toml mkdir -p artifacts make build-install cp ./wasmer.tar.gz ./artifacts/$(./binary-name.sh) @@ -282,9 +282,9 @@ jobs: - target/release/.fingerprint - target/release/build - target/release/deps - # - wapm-cli/target/release/.fingerprint - # - wapm-cli/target/release/build - # - wapm-cli/target/release/deps + - wapm-cli/target/release/.fingerprint + - wapm-cli/target/release/build + - wapm-cli/target/release/deps key: v8-cargo-cache-darwin-nightly-{ arch }}-{{ checksum "Cargo.lock" }} test-rust-nightly: @@ -337,7 +337,7 @@ jobs: # VERSION_TAG=$(git describe --exact-match --tags) #if [ "$VERSION" == "$VERSION_TAG" ]; then # echo "Versions match, publishing to Github" - ghr -t ${GITHUB_TOKEN} -u ${CIRCLE_PROJECT_USERNAME} -r ${CIRCLE_PROJECT_REPONAME} -c ${CIRCLE_SHA1} -soft ${VERSION} ./artifacts/ + ghr -t ${GITHUB_TOKEN} -u ${CIRCLE_PROJECT_USERNAME} -r ${CIRCLE_PROJECT_REPONAME} -c ${CIRCLE_SHA1} -replace ${VERSION} ./artifacts/ #else # echo "Versions don't match. Wasmer output version (wasmer --version) is ${VERSION} while Git tag is ${VERSION_TAG}" # exit 1 @@ -400,10 +400,10 @@ workflows: filters: branches: only: master - - trigger-benchmark-build: - requires: - - test-and-build - - lint - filters: - branches: - only: master + # - trigger-benchmark-build: + # requires: + # - test-and-build + # - lint + # filters: + # branches: + # only: master diff --git a/Makefile b/Makefile index 4349b256e..6aa914bc8 100644 --- a/Makefile +++ b/Makefile @@ -34,7 +34,7 @@ precommit: lint test build-install: mkdir -p ./install/bin - # cp ./wapm-cli/target/release/wapm ./install/bin/ + cp ./wapm-cli/target/release/wapm ./install/bin/ cp ./target/release/wasmer ./install/bin/ tar -C ./install -zcvf wasmer.tar.gz bin/wapm bin/wasmer diff --git a/install.sh b/install.sh index e9e43d445..582c67113 100755 --- a/install.sh +++ b/install.sh @@ -33,7 +33,7 @@ bold="\e[1m" dim="\e[2m" # Warning: Remove this on the public repo -RELEASES_URL="https://github.com/wasmerio/wasmer/releases" +RELEASES_URL="https://github.com/oimpaw/wasmer/releases" wasmer_download_json() { url="$2" From a100b2a72e31876e4b0d83dc5918d6d992d9773e Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Thu, 11 Apr 2019 15:31:02 -0700 Subject: [PATCH 221/413] feature cfg away singlepass and llvm backends in cli --- Cargo.lock | 1 + Cargo.toml | 7 ++++--- src/bin/wasmer.rs | 8 ++++++++ src/webassembly.rs | 1 - 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fec3babbb..bcd7f4790 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2227,6 +2227,7 @@ dependencies = [ "errno 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "structopt 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)", "wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", "wasmer-clif-backend 0.2.0", diff --git a/Cargo.toml b/Cargo.toml index a82a52ef1..de45b1ab7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -38,13 +38,14 @@ members = ["lib/clif-backend", "lib/singlepass-backend", "lib/runtime", "lib/run [build-dependencies] wabt = "0.7.2" glob = "0.2.11" +rustc_version = "0.2.3" [features] -default = ["fast-tests", "wasi", "singlepass", "llvm"] +default = ["fast-tests", "wasi"] debug = ["wasmer-clif-backend/debug", "wasmer-runtime-core/debug"] # This feature will allow cargo test to run much faster fast-tests = [] -llvm = ["wasmer-llvm-backend"] -singlepass = ["wasmer-singlepass-backend"] +"backend:llvm" = ["wasmer-llvm-backend"] +"backend:singlepass" = ["wasmer-singlepass-backend"] wasi = ["wasmer-wasi"] vfs = ["wasmer-runtime-abi"] diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index d8ac1cbd7..cc97810a9 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -14,12 +14,14 @@ use structopt::StructOpt; use wasmer::webassembly::InstanceABI; use wasmer::*; use wasmer_clif_backend::CraneliftCompiler; +#[cfg(feature = "backend:llvm")] use wasmer_llvm_backend::LLVMCompiler; use wasmer_runtime::cache::{Cache as BaseCache, FileSystemCache, WasmHash, WASMER_VERSION_HASH}; use wasmer_runtime_core::{ self, backend::{Compiler, CompilerConfig}, }; +#[cfg(feature = "backend:singlepass")] use wasmer_singlepass_backend::SinglePassCompiler; #[cfg(feature = "wasi")] use wasmer_wasi; @@ -223,9 +225,15 @@ fn execute_wasm(options: &Run) -> Result<(), String> { } let compiler: Box = match options.backend { + #[cfg(feature = "backend:singlepass")] Backend::Singlepass => Box::new(SinglePassCompiler::new()), + #[cfg(not(feature = "backend:singlepass"))] + Backend::Singlepass => return Err("The singlepass backend is not enabled".to_string()), Backend::Cranelift => Box::new(CraneliftCompiler::new()), + #[cfg(feature = "backend:llvm")] Backend::LLVM => Box::new(LLVMCompiler::new()), + #[cfg(not(feature = "backend:llvm"))] + Backend::LLVM => return Err("the llvm backend is not enabled".to_string()), }; let module = if !disable_cache { diff --git a/src/webassembly.rs b/src/webassembly.rs index fc32b3299..354136ead 100644 --- a/src/webassembly.rs +++ b/src/webassembly.rs @@ -5,7 +5,6 @@ use wasmer_runtime::{ error::{CallResult, Result}, ImportObject, Instance, Module, }; -use wasmer_runtime_core::backend::CompilerConfig; use wasmer_runtime_core::types::Value; use wasmer_emscripten::run_emscripten_instance; From a5fc32fced982a920f6c484884873abb3ee2c2ed Mon Sep 17 00:00:00 2001 From: Syrus Date: Thu, 11 Apr 2019 15:33:02 -0700 Subject: [PATCH 222/413] Add production-release to Makefile --- .circleci/config.yml | 4 ++-- Makefile | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 67309e903..805677027 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -169,7 +169,7 @@ jobs: name: Release Build command: | export LLVM_SYS_70_PREFIX="`pwd`/clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04/" - make release + make production-release mkdir -p artifacts VERSION=$(cargo pkgid | cut -d# -f2 | cut -d: -f2) # GIT_VERSION=$(git describe --exact-match --tags) @@ -249,7 +249,7 @@ jobs: export PATH="`pwd`/cmake-3.4.1-Darwin-x86_64/CMake.app/Contents/bin:$PATH" export PATH="$HOME/.cargo/bin:$PATH" export LLVM_SYS_70_PREFIX="`pwd`/clang+llvm-7.0.0-x86_64-apple-darwin/" - make release + make production-release mkdir -p artifacts # VERSION=$(cargo pkgid | cut -d# -f2 | cut -d: -f2) # echo "${VERSION}" >> artifacts/version diff --git a/Makefile b/Makefile index 2b87dd7e7..76cbc6043 100644 --- a/Makefile +++ b/Makefile @@ -67,6 +67,9 @@ release: # brew install mingw-w64 cargo build --release +production-release: + cargo build --release --features backend:singlepass,backend:llvm + debug-release: cargo build --release --features "debug" From 0cbb6de552eaed4f419112a863d4dedbab646063 Mon Sep 17 00:00:00 2001 From: Syrus Date: Thu, 11 Apr 2019 16:24:14 -0700 Subject: [PATCH 223/413] Improved Rustup installer in mac --- .circleci/config.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 37fd8e223..9fbaad147 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -222,7 +222,11 @@ jobs: export PATH="$HOME/.cargo/bin:$PATH" cargo --version # Use rust nightly (for singlepass, for now) - - run: rustup default nightly-2019-04-11 + - run: + name: Install Rust nightly + command: | + export PATH="$HOME/.rustup/bin:$PATH" + rustup default nightly-2019-04-11 - run: name: Tests command: | From 2d01ff0a6d689bacefd409bab4d5691cdbf2b601 Mon Sep 17 00:00:00 2001 From: Syrus Date: Thu, 11 Apr 2019 16:54:49 -0700 Subject: [PATCH 224/413] Install rust nightly by default in mac --- .circleci/config.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 9fbaad147..b1d76a212 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -218,15 +218,15 @@ jobs: - run: name: Install Rust command: | - curl https://sh.rustup.rs -sSf | sh -s -- -y + curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain nightly-2019-04-11 export PATH="$HOME/.cargo/bin:$PATH" cargo --version # Use rust nightly (for singlepass, for now) - - run: - name: Install Rust nightly - command: | - export PATH="$HOME/.rustup/bin:$PATH" - rustup default nightly-2019-04-11 + # - run: + # name: Install Rust nightly + # command: | + # export PATH="$HOME/.rustup/bin:$PATH" + # rustup default nightly-2019-04-11 - run: name: Tests command: | From 94fac3dd8bd1012a5307fd7627996d4316ea0a0a Mon Sep 17 00:00:00 2001 From: Syrus Date: Thu, 11 Apr 2019 17:19:39 -0700 Subject: [PATCH 225/413] =?UTF-8?q?Updated=20version=20to=200.3.0=20?= =?UTF-8?q?=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bcd7f4790..71c131da9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2222,7 +2222,7 @@ dependencies = [ [[package]] name = "wasmer" -version = "0.2.1" +version = "0.3.0" dependencies = [ "errno 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/Cargo.toml b/Cargo.toml index de45b1ab7..2fbe15ccd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer" -version = "0.2.1" +version = "0.3.0" authors = ["The Wasmer Engineering Team "] edition = "2018" repository = "https://github.com/wasmerio/wasmer" From d8c6f76846bd0d02a00ef656e97e31d509581980 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Thu, 11 Apr 2019 18:01:54 -0700 Subject: [PATCH 226/413] Redesign the interface between the runtime and the backends. This removes the ProtectedCaller and FuncResolver traits, simplifying call implementations and improving dynamic call throughput. --- Cargo.lock | 1 + lib/runtime-core/Cargo.toml | 1 + lib/runtime-core/src/backend.rs | 58 ++---- lib/runtime-core/src/backing.rs | 12 +- lib/runtime-core/src/instance.rs | 273 +++++++++++++++++++++-------- lib/runtime-core/src/module.rs | 8 +- lib/runtime-core/src/typed_func.rs | 6 +- lib/runtime-core/src/vm.rs | 36 +--- 8 files changed, 230 insertions(+), 165 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bcd7f4790..55ccf93c9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2363,6 +2363,7 @@ dependencies = [ "serde-bench 0.0.7 (registry+https://github.com/rust-lang/crates.io-index)", "serde_bytes 0.10.5 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", "wasmparser 0.29.2 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] diff --git a/lib/runtime-core/Cargo.toml b/lib/runtime-core/Cargo.toml index 41d472626..321ee501f 100644 --- a/lib/runtime-core/Cargo.toml +++ b/lib/runtime-core/Cargo.toml @@ -17,6 +17,7 @@ indexmap = "1.0.2" errno = "0.2.4" libc = "0.2.49" hex = "0.3.2" +smallvec = "0.6.9" # Dependencies for caching. [dependencies.serde] diff --git a/lib/runtime-core/src/backend.rs b/lib/runtime-core/src/backend.rs index 1044a7ee5..c6ecffcb0 100644 --- a/lib/runtime-core/src/backend.rs +++ b/lib/runtime-core/src/backend.rs @@ -1,10 +1,8 @@ use crate::{ - backing::ImportBacking, error::CompileResult, - error::RuntimeResult, module::ModuleInner, typed_func::Wasm, - types::{FuncIndex, LocalFuncIndex, SigIndex, Value}, + types::{LocalFuncIndex, SigIndex}, vm, }; @@ -67,59 +65,25 @@ pub trait Compiler { unsafe fn from_cache(&self, cache: Artifact, _: Token) -> Result; } -/// The functionality exposed by this trait is expected to be used -/// for calling functions exported by a webassembly module from -/// host code only. -pub trait ProtectedCaller: Send + Sync { - /// This calls the exported function designated by `local_func_index`. - /// Important to note, this supports calling imported functions that are - /// then exported. - /// - /// It's invalid to attempt to call a local function that isn't exported and - /// the implementation is expected to check for that. The implementation - /// is also expected to check for correct parameter types and correct - /// parameter number. - /// - /// The `returns` parameter is filled with dummy values when passed in and upon function - /// return, will be filled with the return values of the wasm function, as long as the - /// call completed successfully. - /// - /// The existance of the Token parameter ensures that this can only be called from - /// within the runtime crate. - /// - /// TODO(lachlan): Now that `get_wasm_trampoline` exists, `ProtectedCaller::call` - /// can be removed. That should speed up calls a little bit, since sanity checks - /// would only occur once. - fn call( - &self, - module: &ModuleInner, - func_index: FuncIndex, - params: &[Value], - import_backing: &ImportBacking, - vmctx: *mut vm::Ctx, - _: Token, - ) -> RuntimeResult>; - - /// A wasm trampoline contains the necesarry data to dynamically call an exported wasm function. - /// Given a particular signature index, we are returned a trampoline that is matched with that - /// signature and an invoke function that can call the trampoline. - fn get_wasm_trampoline(&self, module: &ModuleInner, sig_index: SigIndex) -> Option; - - fn get_early_trapper(&self) -> Box; -} - pub trait UserTrapper { unsafe fn do_early_trap(&self, data: Box) -> !; } -pub trait FuncResolver: Send + Sync { +pub trait RunnableModule: Send + Sync { /// This returns a pointer to the function designated by the `local_func_index` /// parameter. - fn get( + fn get_func( &self, - module: &ModuleInner, + info: &ModuleInfo, local_func_index: LocalFuncIndex, ) -> Option>; + + /// A wasm trampoline contains the necesarry data to dynamically call an exported wasm function. + /// Given a particular signature index, we are returned a trampoline that is matched with that + /// signature and an invoke function that can call the trampoline. + fn get_trampoline(&self, info: &ModuleInfo, sig_index: SigIndex) -> Option; + + fn get_early_trapper(&self) -> Box; } pub trait CacheGen: Send + Sync { diff --git a/lib/runtime-core/src/backing.rs b/lib/runtime-core/src/backing.rs index 48f2d2256..b79180ad6 100644 --- a/lib/runtime-core/src/backing.rs +++ b/lib/runtime-core/src/backing.rs @@ -72,8 +72,8 @@ impl LocalBacking { (0..module.info.func_assoc.len() - module.info.imported_functions.len()) .map(|index| { module - .func_resolver - .get(module, LocalFuncIndex::new(index)) + .runnable_module + .get_func(&module.info, LocalFuncIndex::new(index)) .unwrap() .as_ptr() as *const _ }) @@ -216,8 +216,8 @@ impl LocalBacking { let (func, ctx) = match func_index.local_or_import(&module.info) { LocalOrImport::Local(local_func_index) => ( module - .func_resolver - .get(module, local_func_index) + .runnable_module + .get_func(&module.info, local_func_index) .unwrap() .as_ptr() as *const vm::Func, @@ -255,8 +255,8 @@ impl LocalBacking { let (func, ctx) = match func_index.local_or_import(&module.info) { LocalOrImport::Local(local_func_index) => ( module - .func_resolver - .get(module, local_func_index) + .runnable_module + .get_func(&module.info, local_func_index) .unwrap() .as_ptr() as *const vm::Func, diff --git a/lib/runtime-core/src/instance.rs b/lib/runtime-core/src/instance.rs index 1249998cc..2cdc738da 100644 --- a/lib/runtime-core/src/instance.rs +++ b/lib/runtime-core/src/instance.rs @@ -1,18 +1,19 @@ use crate::{ - backend::Token, + backend::{RunnableModule, Token}, backing::{ImportBacking, LocalBacking}, - error::{CallError, CallResult, ResolveError, ResolveResult, Result}, + error::{CallError, CallResult, ResolveError, ResolveResult, Result, RuntimeError}, export::{Context, Export, ExportIter, FuncPointer}, global::Global, import::{ImportObject, LikeNamespace}, memory::Memory, - module::{ExportIndex, Module, ModuleInner}, + module::{ExportIndex, Module, ModuleInfo, ModuleInner}, sig_registry::SigRegistry, table::Table, - typed_func::{Func, Wasm, WasmTypeList}, - types::{FuncIndex, FuncSig, GlobalIndex, LocalOrImport, MemoryIndex, TableIndex, Value}, + typed_func::{Func, Wasm, WasmTrapInfo, WasmTypeList}, + types::{FuncIndex, FuncSig, GlobalIndex, LocalOrImport, MemoryIndex, TableIndex, Type, Value}, vm, }; +use smallvec::{smallvec, SmallVec}; use std::{mem, ptr::NonNull, sync::Arc}; pub(crate) struct InstanceInner { @@ -82,7 +83,45 @@ impl Instance { }; if let Some(start_index) = instance.module.info.start_func { - instance.call_with_index(start_index, &[])?; + // We know that the start function takes no arguments and returns no values. + // Therefore, we can call it without doing any signature checking, etc. + + let func_ptr = match start_index.local_or_import(&instance.module.info) { + LocalOrImport::Local(local_func_index) => instance + .module + .runnable_module + .get_func(&instance.module.info, local_func_index) + .unwrap(), + LocalOrImport::Import(import_func_index) => NonNull::new( + instance.inner.import_backing.vm_functions[import_func_index].func as *mut _, + ) + .unwrap(), + }; + + let ctx_ptr = match start_index.local_or_import(&instance.module.info) { + LocalOrImport::Local(_) => instance.inner.vmctx, + LocalOrImport::Import(imported_func_index) => { + instance.inner.import_backing.vm_functions[imported_func_index].vmctx + } + }; + + let sig_index = *instance + .module + .info + .func_assoc + .get(start_index) + .expect("broken invariant, incorrect func index"); + + let wasm_trampoline = instance + .module + .runnable_module + .get_trampoline(&instance.module.info, sig_index) + .expect("wasm trampoline"); + + let start_func: Func<(), (), Wasm> = + unsafe { Func::from_raw_parts(wasm_trampoline, func_ptr, ctx_ptr) }; + + start_func.call()?; } Ok(instance) @@ -147,15 +186,15 @@ impl Instance { let func_wasm_inner = self .module - .protected_caller - .get_wasm_trampoline(&self.module, sig_index) + .runnable_module + .get_trampoline(&self.module.info, sig_index) .unwrap(); let func_ptr = match func_index.local_or_import(&self.module.info) { LocalOrImport::Local(local_func_index) => self .module - .func_resolver - .get(&self.module, local_func_index) + .runnable_module + .get_func(&self.module.info, local_func_index) .unwrap(), LocalOrImport::Import(import_func_index) => NonNull::new( self.inner.import_backing.vm_functions[import_func_index].func as *mut _, @@ -245,7 +284,7 @@ impl Instance { /// # Ok(()) /// # } /// ``` - pub fn call(&self, name: &str, args: &[Value]) -> CallResult> { + pub fn call(&self, name: &str, params: &[Value]) -> CallResult> { let export_index = self.module .info @@ -264,7 +303,19 @@ impl Instance { .into()); }; - self.call_with_index(func_index, args) + let mut results = Vec::new(); + + call_func_with_index( + &self.module.info, + &*self.module.runnable_module, + &self.inner.import_backing, + self.inner.vmctx, + func_index, + params, + &mut results, + )?; + + Ok(results) } /// Returns an immutable reference to the @@ -295,45 +346,6 @@ impl Instance { } } -impl Instance { - fn call_with_index(&self, func_index: FuncIndex, args: &[Value]) -> CallResult> { - let sig_index = *self - .module - .info - .func_assoc - .get(func_index) - .expect("broken invariant, incorrect func index"); - let signature = &self.module.info.signatures[sig_index]; - - if !signature.check_param_value_types(args) { - Err(ResolveError::Signature { - expected: signature.clone(), - found: args.iter().map(|val| val.ty()).collect(), - })? - } - - let vmctx = match func_index.local_or_import(&self.module.info) { - LocalOrImport::Local(_) => self.inner.vmctx, - LocalOrImport::Import(imported_func_index) => { - self.inner.import_backing.vm_functions[imported_func_index].vmctx - } - }; - - let token = Token::generate(); - - let returns = self.module.protected_caller.call( - &self.module, - func_index, - args, - &self.inner.import_backing, - vmctx, - token, - )?; - - Ok(returns) - } -} - impl InstanceInner { pub(crate) fn get_export_from_index( &self, @@ -382,8 +394,8 @@ impl InstanceInner { let (func_ptr, ctx) = match func_index.local_or_import(&module.info) { LocalOrImport::Local(local_func_index) => ( module - .func_resolver - .get(&module, local_func_index) + .runnable_module + .get_func(&module.info, local_func_index) .expect("broken invariant, func resolver not synced with module.exports") .cast() .as_ptr() as *const _, @@ -452,6 +464,128 @@ impl LikeNamespace for Instance { } } +#[must_use] +fn call_func_with_index( + info: &ModuleInfo, + runnable: &dyn RunnableModule, + import_backing: &ImportBacking, + local_ctx: *mut vm::Ctx, + func_index: FuncIndex, + args: &[Value], + rets: &mut Vec, +) -> CallResult<()> { + rets.clear(); + + let sig_index = *info + .func_assoc + .get(func_index) + .expect("broken invariant, incorrect func index"); + + let signature = &info.signatures[sig_index]; + let num_results = signature.returns().len(); + rets.reserve(num_results); + + if !signature.check_param_value_types(args) { + Err(ResolveError::Signature { + expected: signature.clone(), + found: args.iter().map(|val| val.ty()).collect(), + })? + } + + let func_ptr = match func_index.local_or_import(info) { + LocalOrImport::Local(local_func_index) => { + runnable.get_func(info, local_func_index).unwrap() + } + LocalOrImport::Import(import_func_index) => { + NonNull::new(import_backing.vm_functions[import_func_index].func as *mut _).unwrap() + } + }; + + let ctx_ptr = match func_index.local_or_import(info) { + LocalOrImport::Local(_) => local_ctx, + LocalOrImport::Import(imported_func_index) => { + import_backing.vm_functions[imported_func_index].vmctx + } + }; + + let raw_args: SmallVec<[u64; 8]> = args + .iter() + .map(|v| match v { + Value::I32(i) => *i as u64, + Value::I64(i) => *i as u64, + Value::F32(f) => f.to_bits() as u64, + Value::F64(f) => f.to_bits(), + }) + .collect(); + + let Wasm { + trampoline, + invoke, + invoke_env, + } = runnable + .get_trampoline(info, sig_index) + .expect("wasm trampoline"); + + let run_wasm = |result_space: *mut u64| unsafe { + let mut trap_info = WasmTrapInfo::Unknown; + + let success = invoke( + trampoline, + ctx_ptr, + func_ptr, + raw_args.as_ptr(), + result_space, + &mut trap_info, + invoke_env, + ); + + if success { + Ok(()) + } else { + Err(RuntimeError::Trap { + msg: trap_info.to_string().into(), + }) + } + }; + + let raw_to_value = |raw, ty| match ty { + Type::I32 => Value::I32(raw as i32), + Type::I64 => Value::I64(raw as i64), + Type::F32 => Value::F32(f32::from_bits(raw as u32)), + Type::F64 => Value::F64(f64::from_bits(raw)), + }; + + match signature.returns() { + &[] => { + run_wasm(0 as *mut u64)?; + Ok(()) + } + &[ty] => { + let mut result = 0u64; + + run_wasm(&mut result)?; + + rets.push(raw_to_value(result, ty)); + + Ok(()) + } + result_tys @ _ => { + let mut results: SmallVec<[u64; 8]> = smallvec![0; num_results]; + + run_wasm(results.as_mut_ptr())?; + + rets.extend( + results + .iter() + .zip(result_tys.iter()) + .map(|(&raw, &ty)| raw_to_value(raw, ty)), + ); + + Ok(()) + } + } +} + /// A representation of an exported WebAssembly function. pub struct DynFunc<'a> { pub(crate) signature: Arc, @@ -484,32 +618,19 @@ impl<'a> DynFunc<'a> { /// # } /// ``` pub fn call(&self, params: &[Value]) -> CallResult> { - if !self.signature.check_param_value_types(params) { - Err(ResolveError::Signature { - expected: (*self.signature).clone(), - found: params.iter().map(|val| val.ty()).collect(), - })? - } + let mut results = Vec::new(); - let vmctx = match self.func_index.local_or_import(&self.module.info) { - LocalOrImport::Local(_) => self.instance_inner.vmctx, - LocalOrImport::Import(imported_func_index) => { - self.instance_inner.import_backing.vm_functions[imported_func_index].vmctx - } - }; - - let token = Token::generate(); - - let returns = self.module.protected_caller.call( - &self.module, + call_func_with_index( + &self.module.info, + &*self.module.runnable_module, + &self.instance_inner.import_backing, + self.instance_inner.vmctx, self.func_index, params, - &self.instance_inner.import_backing, - vmctx, - token, + &mut results, )?; - Ok(returns) + Ok(results) } pub fn signature(&self) -> &FuncSig { @@ -520,8 +641,8 @@ impl<'a> DynFunc<'a> { match self.func_index.local_or_import(&self.module.info) { LocalOrImport::Local(local_func_index) => self .module - .func_resolver - .get(self.module, local_func_index) + .runnable_module + .get_func(&self.module.info, local_func_index) .unwrap() .as_ptr(), LocalOrImport::Import(import_func_index) => { diff --git a/lib/runtime-core/src/module.rs b/lib/runtime-core/src/module.rs index 65817399d..9e9e93052 100644 --- a/lib/runtime-core/src/module.rs +++ b/lib/runtime-core/src/module.rs @@ -1,5 +1,5 @@ use crate::{ - backend::{Backend, FuncResolver, ProtectedCaller}, + backend::{Backend, RunnableModule}, cache::{Artifact, Error as CacheError}, error, import::ImportObject, @@ -22,9 +22,7 @@ use std::sync::Arc; /// This is used to instantiate a new WebAssembly module. #[doc(hidden)] pub struct ModuleInner { - pub func_resolver: Box, - pub protected_caller: Box, - + pub runnable_module: Box, pub cache_gen: Box, pub info: ModuleInfo, @@ -96,7 +94,7 @@ impl Module { pub(crate) fn new(inner: Arc) -> Self { unsafe { EARLY_TRAPPER - .with(|ucell| *ucell.get() = Some(inner.protected_caller.get_early_trapper())); + .with(|ucell| *ucell.get() = Some(inner.runnable_module.get_early_trapper())); } Module { inner } } diff --git a/lib/runtime-core/src/typed_func.rs b/lib/runtime-core/src/typed_func.rs index d18055ba1..5e38db628 100644 --- a/lib/runtime-core/src/typed_func.rs +++ b/lib/runtime-core/src/typed_func.rs @@ -71,9 +71,9 @@ pub type Invoke = unsafe extern "C" fn( /// as well as the environment that the invoke function may or may not require. #[derive(Copy, Clone)] pub struct Wasm { - trampoline: Trampoline, - invoke: Invoke, - invoke_env: Option>, + pub(crate) trampoline: Trampoline, + pub(crate) invoke: Invoke, + pub(crate) invoke_env: Option>, } impl Wasm { diff --git a/lib/runtime-core/src/vm.rs b/lib/runtime-core/src/vm.rs index 3b2ca9938..1d955d40d 100644 --- a/lib/runtime-core/src/vm.rs +++ b/lib/runtime-core/src/vm.rs @@ -544,42 +544,23 @@ mod vm_ctx_tests { fn generate_module() -> ModuleInner { use super::Func; - use crate::backend::{ - sys::Memory, Backend, CacheGen, FuncResolver, ProtectedCaller, Token, UserTrapper, - }; + use crate::backend::{sys::Memory, Backend, CacheGen, RunnableModule, UserTrapper}; use crate::cache::Error as CacheError; - use crate::error::RuntimeResult; use crate::typed_func::Wasm; - use crate::types::{FuncIndex, LocalFuncIndex, SigIndex, Value}; + use crate::types::{LocalFuncIndex, SigIndex}; use hashbrown::HashMap; use std::ptr::NonNull; struct Placeholder; - impl FuncResolver for Placeholder { - fn get( + impl RunnableModule for Placeholder { + fn get_func( &self, - _module: &ModuleInner, + _module: &ModuleInfo, _local_func_index: LocalFuncIndex, ) -> Option> { None } - } - impl ProtectedCaller for Placeholder { - fn call( - &self, - _module: &ModuleInner, - _func_index: FuncIndex, - _params: &[Value], - _import_backing: &ImportBacking, - _vmctx: *mut Ctx, - _: Token, - ) -> RuntimeResult> { - Ok(vec![]) - } - fn get_wasm_trampoline( - &self, - _module: &ModuleInner, - _sig_index: SigIndex, - ) -> Option { + + fn get_trampoline(&self, _module: &ModuleInfo, _sig_index: SigIndex) -> Option { unimplemented!() } fn get_early_trapper(&self) -> Box { @@ -596,8 +577,7 @@ mod vm_ctx_tests { } ModuleInner { - func_resolver: Box::new(Placeholder), - protected_caller: Box::new(Placeholder), + runnable_module: Box::new(Placeholder), cache_gen: Box::new(Placeholder), info: ModuleInfo { memories: Map::new(), From 8b5da1d86e885f45e8f7261874f29a0ab7d184ce Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Fri, 12 Apr 2019 09:58:29 -0700 Subject: [PATCH 227/413] Update cranelift backend to new backend abstraction --- lib/clif-backend/src/module.rs | 14 ++--- lib/clif-backend/src/resolver.rs | 9 +-- lib/clif-backend/src/signal/mod.rs | 97 ++++-------------------------- 3 files changed, 20 insertions(+), 100 deletions(-) diff --git a/lib/clif-backend/src/module.rs b/lib/clif-backend/src/module.rs index 11f93342e..44076aca7 100644 --- a/lib/clif-backend/src/module.rs +++ b/lib/clif-backend/src/module.rs @@ -73,16 +73,15 @@ impl Module { handler_data.clone(), )?; - let protected_caller = Caller::new(&self.info, handler_data, trampolines); - let cache_gen = Box::new(CacheGenerator::new( backend_cache, Arc::clone(&func_resolver.memory), )); + let runnable_module = Caller::new(&self.info, handler_data, trampolines, func_resolver); + Ok(ModuleInner { - func_resolver: Box::new(func_resolver), - protected_caller: Box::new(protected_caller), + runnable_module: Box::new(runnable_module), cache_gen, info: self.info, @@ -103,16 +102,15 @@ impl Module { ) .map_err(|e| CacheError::Unknown(format!("{:?}", e)))?; - let protected_caller = Caller::new(&info, handler_data, trampolines); - let cache_gen = Box::new(CacheGenerator::new( backend_cache, Arc::clone(&func_resolver.memory), )); + let runnable_module = Caller::new(&info, handler_data, trampolines, func_resolver); + Ok(ModuleInner { - func_resolver: Box::new(func_resolver), - protected_caller: Box::new(protected_caller), + runnable_module: Box::new(runnable_module), cache_gen, info, diff --git a/lib/clif-backend/src/resolver.rs b/lib/clif-backend/src/resolver.rs index e2706b6e1..6e5623f25 100644 --- a/lib/clif-backend/src/resolver.rs +++ b/lib/clif-backend/src/resolver.rs @@ -357,13 +357,8 @@ pub struct FuncResolver { pub(crate) memory: Arc, } -// Implements FuncResolver trait. -impl backend::FuncResolver for FuncResolver { - fn get( - &self, - _module: &wasmer_runtime_core::module::ModuleInner, - index: LocalFuncIndex, - ) -> Option> { +impl FuncResolver { + pub fn lookup(&self, index: LocalFuncIndex) -> Option> { lookup_func(&self.map, &self.memory, index) } } diff --git a/lib/clif-backend/src/signal/mod.rs b/lib/clif-backend/src/signal/mod.rs index 766ad75fb..66d347c21 100644 --- a/lib/clif-backend/src/signal/mod.rs +++ b/lib/clif-backend/src/signal/mod.rs @@ -1,15 +1,15 @@ use crate::relocation::{TrapData, TrapSink}; +use crate::resolver::FuncResolver; use crate::trampoline::Trampolines; use hashbrown::HashSet; use libc::c_void; use std::{any::Any, cell::Cell, ptr::NonNull, sync::Arc}; use wasmer_runtime_core::{ - backend::{ProtectedCaller, Token, UserTrapper}, - error::RuntimeResult, + backend::{RunnableModule, UserTrapper}, export::Context, module::{ExportIndex, ModuleInfo, ModuleInner}, typed_func::{Wasm, WasmTrapInfo}, - types::{FuncIndex, FuncSig, LocalOrImport, SigIndex, Type, Value}, + types::{FuncIndex, FuncSig, LocalFuncIndex, LocalOrImport, SigIndex, Type, Value}, vm::{self, ImportBacking}, }; @@ -42,6 +42,7 @@ pub struct Caller { func_export_set: HashSet, handler_data: HandlerData, trampolines: Arc, + resolver: FuncResolver, } impl Caller { @@ -49,6 +50,7 @@ impl Caller { module: &ModuleInfo, handler_data: HandlerData, trampolines: Arc, + resolver: FuncResolver, ) -> Self { let mut func_export_set = HashSet::new(); for export_index in module.exports.values() { @@ -64,92 +66,17 @@ impl Caller { func_export_set, handler_data, trampolines, + resolver, } } } -impl ProtectedCaller for Caller { - fn call( - &self, - module: &ModuleInner, - func_index: FuncIndex, - params: &[Value], - import_backing: &ImportBacking, - vmctx: *mut vm::Ctx, - _: Token, - ) -> RuntimeResult> { - let (func_ptr, ctx, signature, sig_index) = - get_func_from_index(&module, import_backing, func_index); - - let vmctx_ptr = match ctx { - Context::External(external_vmctx) => external_vmctx, - Context::Internal => vmctx, - }; - - assert!(self.func_export_set.contains(&func_index)); - - assert!( - signature.returns().len() <= 1, - "multi-value returns not yet supported" - ); - - assert!( - signature.check_param_value_types(params), - "incorrect signature" - ); - - let param_vec: Vec = params - .iter() - .map(|val| match val { - Value::I32(x) => *x as u64, - Value::I64(x) => *x as u64, - Value::F32(x) => x.to_bits() as u64, - Value::F64(x) => x.to_bits(), - }) - .collect(); - - let mut return_vec = vec![0; signature.returns().len()]; - - let trampoline = self - .trampolines - .lookup(sig_index) - .expect("that trampoline doesn't exist"); - - #[cfg(not(target_os = "windows"))] - call_protected(&self.handler_data, || unsafe { - // Leap of faith. - trampoline( - vmctx_ptr, - func_ptr, - param_vec.as_ptr(), - return_vec.as_mut_ptr(), - ); - })?; - - // the trampoline is called from C on windows - #[cfg(target_os = "windows")] - call_protected( - &self.handler_data, - trampoline, - vmctx_ptr, - func_ptr, - param_vec.as_ptr(), - return_vec.as_mut_ptr(), - )?; - - Ok(return_vec - .iter() - .zip(signature.returns().iter()) - .map(|(&x, ty)| match ty { - Type::I32 => Value::I32(x as i32), - Type::I64 => Value::I64(x as i64), - Type::F32 => Value::F32(f32::from_bits(x as u32)), - Type::F64 => Value::F64(f64::from_bits(x as u64)), - }) - .collect()) +impl RunnableModule for Caller { + fn get_func(&self, _: &ModuleInfo, func_index: LocalFuncIndex) -> Option> { + self.resolver.lookup(func_index) } - fn get_wasm_trampoline(&self, module: &ModuleInner, sig_index: SigIndex) -> Option { + fn get_trampoline(&self, _: &ModuleInfo, sig_index: SigIndex) -> Option { unsafe extern "C" fn invoke( trampoline: unsafe extern "C" fn(*mut vm::Ctx, NonNull, *const u64, *mut u64), ctx: *mut vm::Ctx, @@ -208,8 +135,8 @@ fn get_func_from_index<'a>( let (func_ptr, ctx) = match func_index.local_or_import(&module.info) { LocalOrImport::Local(local_func_index) => ( module - .func_resolver - .get(&module, local_func_index) + .runnable_module + .get_func(&module.info, local_func_index) .expect("broken invariant, func resolver not synced with module.exports") .cast(), Context::Internal, From 75cc65a8c52ed2d31b1c4483727ffedc6c348e98 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Fri, 12 Apr 2019 10:05:50 -0700 Subject: [PATCH 228/413] Update llvm backend to new backend abstraction --- lib/llvm-backend/src/backend.rs | 190 ++++---------------------------- lib/llvm-backend/src/lib.rs | 5 +- 2 files changed, 23 insertions(+), 172 deletions(-) diff --git a/lib/llvm-backend/src/backend.rs b/lib/llvm-backend/src/backend.rs index 927dbeca5..172d66726 100644 --- a/lib/llvm-backend/src/backend.rs +++ b/lib/llvm-backend/src/backend.rs @@ -18,15 +18,12 @@ use std::{ sync::Once, }; use wasmer_runtime_core::{ - backend::{FuncResolver, ProtectedCaller, Token, UserTrapper}, - error::{RuntimeError, RuntimeResult}, - export::Context, - module::{ModuleInfo, ModuleInner}, + backend::{RunnableModule, UserTrapper}, + module::ModuleInfo, structures::TypedIndex, typed_func::{Wasm, WasmTrapInfo}, - types::{FuncIndex, FuncSig, LocalFuncIndex, LocalOrImport, SigIndex, Type, Value}, - vm::{self, ImportBacking}, - vmcalls, + types::{LocalFuncIndex, SigIndex}, + vm, vmcalls, }; #[repr(C)] @@ -216,7 +213,7 @@ pub struct LLVMBackend { } impl LLVMBackend { - pub fn new(module: Module, _intrinsics: Intrinsics) -> (Self, LLVMProtectedCaller) { + pub fn new(module: Module, _intrinsics: Intrinsics) -> Self { Target::initialize_x86(&InitializationConfig { asm_parser: true, asm_printer: true, @@ -265,16 +262,21 @@ impl LLVMBackend { panic!("failed to load object") } - ( - Self { - module, - memory_buffer, - }, - LLVMProtectedCaller { module }, - ) + Self { + module, + memory_buffer, + } } +} - pub fn get_func( +impl Drop for LLVMBackend { + fn drop(&mut self) { + unsafe { module_delete(self.module) } + } +} + +impl RunnableModule for LLVMBackend { + fn get_func( &self, info: &ModuleInfo, local_func_index: LocalFuncIndex, @@ -291,126 +293,8 @@ impl LLVMBackend { NonNull::new(ptr as _) } -} -impl Drop for LLVMBackend { - fn drop(&mut self) { - unsafe { module_delete(self.module) } - } -} - -impl FuncResolver for LLVMBackend { - fn get( - &self, - module: &ModuleInner, - local_func_index: LocalFuncIndex, - ) -> Option> { - self.get_func(&module.info, local_func_index) - } -} - -struct Placeholder; - -unsafe impl Send for LLVMProtectedCaller {} -unsafe impl Sync for LLVMProtectedCaller {} - -pub struct LLVMProtectedCaller { - module: *mut LLVMModule, -} - -impl ProtectedCaller for LLVMProtectedCaller { - fn call( - &self, - module: &ModuleInner, - func_index: FuncIndex, - params: &[Value], - import_backing: &ImportBacking, - vmctx: *mut vm::Ctx, - _: Token, - ) -> RuntimeResult> { - let (func_ptr, ctx, signature, sig_index) = - get_func_from_index(&module, import_backing, func_index); - - let vmctx_ptr = match ctx { - Context::External(external_vmctx) => external_vmctx, - Context::Internal => vmctx, - }; - - assert!( - signature.returns().len() <= 1, - "multi-value returns not yet supported" - ); - - assert!( - signature.check_param_value_types(params), - "incorrect signature" - ); - - let param_vec: Vec = params - .iter() - .map(|val| match val { - Value::I32(x) => *x as u64, - Value::I64(x) => *x as u64, - Value::F32(x) => x.to_bits() as u64, - Value::F64(x) => x.to_bits(), - }) - .collect(); - - let mut return_vec = vec![0; signature.returns().len()]; - - let trampoline: unsafe extern "C" fn( - *mut vm::Ctx, - NonNull, - *const u64, - *mut u64, - ) = unsafe { - let name = if cfg!(target_os = "macos") { - format!("_trmp{}", sig_index.index()) - } else { - format!("trmp{}", sig_index.index()) - }; - - let c_str = CString::new(name).unwrap(); - let symbol = get_func_symbol(self.module, c_str.as_ptr()); - assert!(!symbol.is_null()); - - mem::transmute(symbol) - }; - - let mut trap_out = WasmTrapInfo::Unknown; - - // Here we go. - let success = unsafe { - invoke_trampoline( - trampoline, - vmctx_ptr, - func_ptr, - param_vec.as_ptr(), - return_vec.as_mut_ptr(), - &mut trap_out, - None, - ) - }; - - if success { - Ok(return_vec - .iter() - .zip(signature.returns().iter()) - .map(|(&x, ty)| match ty { - Type::I32 => Value::I32(x as i32), - Type::I64 => Value::I64(x as i64), - Type::F32 => Value::F32(f32::from_bits(x as u32)), - Type::F64 => Value::F64(f64::from_bits(x as u64)), - }) - .collect()) - } else { - Err(RuntimeError::Trap { - msg: trap_out.to_string().into(), - }) - } - } - - fn get_wasm_trampoline(&self, _module: &ModuleInner, sig_index: SigIndex) -> Option { + fn get_trampoline(&self, _: &ModuleInfo, sig_index: SigIndex) -> Option { let trampoline: unsafe extern "C" fn( *mut vm::Ctx, NonNull, @@ -438,46 +322,14 @@ impl ProtectedCaller for LLVMProtectedCaller { } } +struct Placeholder; + impl UserTrapper for Placeholder { unsafe fn do_early_trap(&self, data: Box) -> ! { throw_any(Box::leak(data)) } } -fn get_func_from_index<'a>( - module: &'a ModuleInner, - import_backing: &ImportBacking, - func_index: FuncIndex, -) -> (NonNull, Context, &'a FuncSig, SigIndex) { - let sig_index = *module - .info - .func_assoc - .get(func_index) - .expect("broken invariant, incorrect func index"); - - let (func_ptr, ctx) = match func_index.local_or_import(&module.info) { - LocalOrImport::Local(local_func_index) => ( - module - .func_resolver - .get(&module, local_func_index) - .expect("broken invariant, func resolver not synced with module.exports") - .cast(), - Context::Internal, - ), - LocalOrImport::Import(imported_func_index) => { - let imported_func = import_backing.imported_func(imported_func_index); - ( - NonNull::new(imported_func.func as *mut _).unwrap(), - Context::External(imported_func.vmctx), - ) - } - }; - - let signature = &module.info.signatures[sig_index]; - - (func_ptr, ctx, signature, sig_index) -} - #[cfg(feature = "disasm")] unsafe fn disass_ptr(ptr: *const u8, size: usize, inst_count: usize) { use capstone::arch::BuildsCapstone; diff --git a/lib/llvm-backend/src/lib.rs b/lib/llvm-backend/src/lib.rs index 50b061731..2df195ecd 100644 --- a/lib/llvm-backend/src/lib.rs +++ b/lib/llvm-backend/src/lib.rs @@ -38,7 +38,7 @@ impl Compiler for LLVMCompiler { let (info, code_reader) = read_info::read_module(wasm, compiler_config).unwrap(); let (module, intrinsics) = code::parse_function_bodies(&info, code_reader).unwrap(); - let (backend, protected_caller) = backend::LLVMBackend::new(module, intrinsics); + let backend = backend::LLVMBackend::new(module, intrinsics); // Create placeholder values here. let cache_gen = { @@ -61,8 +61,7 @@ impl Compiler for LLVMCompiler { }; Ok(ModuleInner { - func_resolver: Box::new(backend), - protected_caller: Box::new(protected_caller), + runnable_module: Box::new(backend), cache_gen, info, From 4e17ff85712ca7c7ac83d19c36b64e08d7d14b69 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Fri, 12 Apr 2019 10:21:40 -0700 Subject: [PATCH 229/413] Update singlepass backend to new backend abstraction --- lib/singlepass-backend/src/codegen.rs | 6 +- lib/singlepass-backend/src/codegen_x64.rs | 116 +++++----------------- lib/singlepass-backend/src/lib.rs | 5 +- lib/singlepass-backend/src/parse.rs | 7 +- 4 files changed, 33 insertions(+), 101 deletions(-) diff --git a/lib/singlepass-backend/src/codegen.rs b/lib/singlepass-backend/src/codegen.rs index 798dea114..ee3ad277e 100644 --- a/lib/singlepass-backend/src/codegen.rs +++ b/lib/singlepass-backend/src/codegen.rs @@ -1,15 +1,15 @@ use wasmer_runtime_core::{ - backend::{FuncResolver, ProtectedCaller}, + backend::RunnableModule, module::ModuleInfo, structures::Map, types::{FuncIndex, FuncSig, SigIndex}, }; use wasmparser::{Operator, Type as WpType}; -pub trait ModuleCodeGenerator { +pub trait ModuleCodeGenerator { fn check_precondition(&mut self, module_info: &ModuleInfo) -> Result<(), CodegenError>; fn next_function(&mut self) -> Result<&mut FCG, CodegenError>; - fn finalize(self, module_info: &ModuleInfo) -> Result<(PC, FR), CodegenError>; + fn finalize(self, module_info: &ModuleInfo) -> Result; fn feed_signatures(&mut self, signatures: Map) -> Result<(), CodegenError>; fn feed_function_signatures( &mut self, diff --git a/lib/singlepass-backend/src/codegen_x64.rs b/lib/singlepass-backend/src/codegen_x64.rs index c574bfc14..0bd3e4dac 100644 --- a/lib/singlepass-backend/src/codegen_x64.rs +++ b/lib/singlepass-backend/src/codegen_x64.rs @@ -11,17 +11,16 @@ use smallvec::SmallVec; use std::ptr::NonNull; use std::{any::Any, collections::HashMap, sync::Arc}; use wasmer_runtime_core::{ - backend::{FuncResolver, ProtectedCaller, Token, UserTrapper}, - error::RuntimeResult, + backend::{RunnableModule, UserTrapper}, memory::MemoryType, - module::{ModuleInfo, ModuleInner}, + module::ModuleInfo, structures::{Map, TypedIndex}, typed_func::Wasm, types::{ FuncIndex, FuncSig, GlobalIndex, LocalFuncIndex, LocalOrImport, MemoryIndex, SigIndex, - TableIndex, Type, Value, + TableIndex, Type, }, - vm::{self, ImportBacking, LocalGlobal, LocalMemory, LocalTable}, + vm::{self, LocalGlobal, LocalMemory, LocalTable}, vmcalls, }; use wasmparser::{Operator, Type as WpType}; @@ -132,7 +131,6 @@ pub struct X64FunctionCode { signatures: Arc>, function_signatures: Arc>, - begin_offset: AssemblyOffset, assembler: Option, function_labels: Option)>>, br_table_data: Option>>, @@ -154,7 +152,9 @@ unsafe impl Send for FuncPtr {} unsafe impl Sync for FuncPtr {} pub struct X64ExecutionContext { + #[allow(dead_code)] code: ExecutableBuffer, + #[allow(dead_code)] functions: Vec, function_pointers: Vec, signatures: Arc>, @@ -162,10 +162,6 @@ pub struct X64ExecutionContext { func_import_count: usize, } -pub struct X64RuntimeResolver { - local_function_pointers: Vec, -} - #[derive(Debug)] pub struct ControlFrame { pub label: DynamicLabel, @@ -182,86 +178,33 @@ pub enum IfElseState { Else, } -impl X64ExecutionContext { - fn get_runtime_resolver( +impl RunnableModule for X64ExecutionContext { + fn get_func( &self, - _module_info: &ModuleInfo, - ) -> Result { - Ok(X64RuntimeResolver { - local_function_pointers: self.function_pointers[self.func_import_count..].to_vec(), - }) - } -} - -impl FuncResolver for X64RuntimeResolver { - fn get( - &self, - _module: &ModuleInner, - _local_func_index: LocalFuncIndex, + _: &ModuleInfo, + local_func_index: LocalFuncIndex, ) -> Option> { - NonNull::new( - self.local_function_pointers[_local_func_index.index() as usize].0 as *mut vm::Func, - ) - } -} - -impl ProtectedCaller for X64ExecutionContext { - fn call( - &self, - _module: &ModuleInner, - _func_index: FuncIndex, - _params: &[Value], - _import_backing: &ImportBacking, - _vmctx: *mut vm::Ctx, - _: Token, - ) -> RuntimeResult> { - let index = _func_index.index() - self.func_import_count; - let ptr = self.code.ptr(self.functions[index].begin_offset); - let return_ty = self.functions[index].returns.last().cloned(); - let buffer: Vec = _params - .iter() - .rev() - .map(|x| match *x { - Value::I32(x) => x as u32 as u64, - Value::I64(x) => x as u64, - Value::F32(x) => f32::to_bits(x) as u64, - Value::F64(x) => f64::to_bits(x), - }) - .collect(); - let ret = unsafe { - protect_unix::call_protected(|| { - CONSTRUCT_STACK_AND_CALL_WASM( - buffer.as_ptr(), - buffer.as_ptr().offset(buffer.len() as isize), - _vmctx, - ptr as _, - ) - }) - }?; - Ok(if let Some(ty) = return_ty { - vec![match ty { - WpType::I32 => Value::I32(ret as i32), - WpType::I64 => Value::I64(ret as i64), - WpType::F32 => Value::F32(f32::from_bits(ret as u32)), - WpType::F64 => Value::F64(f64::from_bits(ret as u64)), - _ => unreachable!(), - }] - } else { - vec![] - }) + self.function_pointers[self.func_import_count..] + .get(local_func_index.index()) + .and_then(|ptr| NonNull::new(ptr.0 as *mut vm::Func)) } - fn get_wasm_trampoline(&self, module: &ModuleInner, sig_index: SigIndex) -> Option { + fn get_trampoline(&self, _: &ModuleInfo, sig_index: SigIndex) -> Option { use std::ffi::c_void; use wasmer_runtime_core::typed_func::WasmTrapInfo; unsafe extern "C" fn invoke( - trampoline: unsafe extern "C" fn(*mut vm::Ctx, NonNull, *const u64, *mut u64), + _trampoline: unsafe extern "C" fn( + *mut vm::Ctx, + NonNull, + *const u64, + *mut u64, + ), ctx: *mut vm::Ctx, func: NonNull, args: *const u64, rets: *mut u64, - trap_info: *mut WasmTrapInfo, + _trap_info: *mut WasmTrapInfo, num_params_plus_one: Option>, ) -> bool { let args = ::std::slice::from_raw_parts( @@ -330,9 +273,7 @@ impl X64ModuleCodeGenerator { } } -impl ModuleCodeGenerator - for X64ModuleCodeGenerator -{ +impl ModuleCodeGenerator for X64ModuleCodeGenerator { fn check_precondition(&mut self, _module_info: &ModuleInfo) -> Result<(), CodegenError> { Ok(()) } @@ -367,7 +308,6 @@ impl ModuleCodeGenerator Result<(X64ExecutionContext, X64RuntimeResolver), CodegenError> { + fn finalize(mut self, _: &ModuleInfo) -> Result { let (assembler, mut br_table_data) = match self.functions.last_mut() { Some(x) => (x.assembler.take().unwrap(), x.br_table_data.take().unwrap()), None => { @@ -431,17 +368,14 @@ impl ModuleCodeGenerator) -> Result<(), CodegenError> { diff --git a/lib/singlepass-backend/src/lib.rs b/lib/singlepass-backend/src/lib.rs index cdb275cd3..c388bee49 100644 --- a/lib/singlepass-backend/src/lib.rs +++ b/lib/singlepass-backend/src/lib.rs @@ -62,11 +62,10 @@ impl Compiler for SinglePassCompiler { ) -> CompileResult { let mut mcg = codegen_x64::X64ModuleCodeGenerator::new(); let info = parse::read_module(wasm, Backend::Singlepass, &mut mcg, &compiler_config)?; - let (ec, resolver) = mcg.finalize(&info)?; + let exec_context = mcg.finalize(&info)?; Ok(ModuleInner { cache_gen: Box::new(Placeholder), - func_resolver: Box::new(resolver), - protected_caller: Box::new(ec), + runnable_module: Box::new(exec_context), info: info, }) } diff --git a/lib/singlepass-backend/src/parse.rs b/lib/singlepass-backend/src/parse.rs index b198ea4c5..cb4d93296 100644 --- a/lib/singlepass-backend/src/parse.rs +++ b/lib/singlepass-backend/src/parse.rs @@ -1,7 +1,7 @@ use crate::codegen::{CodegenError, FunctionCodeGenerator, ModuleCodeGenerator}; use hashbrown::HashMap; use wasmer_runtime_core::{ - backend::{Backend, CompilerConfig, FuncResolver, ProtectedCaller}, + backend::{Backend, CompilerConfig, RunnableModule}, module::{ DataInitializer, ExportIndex, ImportName, ModuleInfo, StringTable, StringTableBuilder, TableInitializer, @@ -63,10 +63,9 @@ fn validate(bytes: &[u8]) -> Result<(), LoadError> { } pub fn read_module< - MCG: ModuleCodeGenerator, + MCG: ModuleCodeGenerator, FCG: FunctionCodeGenerator, - PC: ProtectedCaller, - FR: FuncResolver, + RM: RunnableModule, >( wasm: &[u8], backend: Backend, From 051d435423f1693679255190c4e65d80f17f12e1 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Fri, 12 Apr 2019 10:27:14 -0700 Subject: [PATCH 230/413] Warnings and unused code cleanup --- lib/clif-backend/src/module.rs | 4 +- lib/clif-backend/src/resolver.rs | 1 - lib/clif-backend/src/signal/mod.rs | 59 +++--------------------------- lib/clif-backend/src/trampoline.rs | 1 - lib/runtime-core/src/instance.rs | 2 +- 5 files changed, 8 insertions(+), 59 deletions(-) diff --git a/lib/clif-backend/src/module.rs b/lib/clif-backend/src/module.rs index 44076aca7..ad0576e59 100644 --- a/lib/clif-backend/src/module.rs +++ b/lib/clif-backend/src/module.rs @@ -78,7 +78,7 @@ impl Module { Arc::clone(&func_resolver.memory), )); - let runnable_module = Caller::new(&self.info, handler_data, trampolines, func_resolver); + let runnable_module = Caller::new(handler_data, trampolines, func_resolver); Ok(ModuleInner { runnable_module: Box::new(runnable_module), @@ -107,7 +107,7 @@ impl Module { Arc::clone(&func_resolver.memory), )); - let runnable_module = Caller::new(&info, handler_data, trampolines, func_resolver); + let runnable_module = Caller::new(handler_data, trampolines, func_resolver); Ok(ModuleInner { runnable_module: Box::new(runnable_module), diff --git a/lib/clif-backend/src/resolver.rs b/lib/clif-backend/src/resolver.rs index 6e5623f25..a55bf56d7 100644 --- a/lib/clif-backend/src/resolver.rs +++ b/lib/clif-backend/src/resolver.rs @@ -21,7 +21,6 @@ use wasmer_runtime_core::cache::Error as CacheError; use wasmer_runtime_core::{ self, backend::{ - self, sys::{Memory, Protect}, SigRegistry, }, diff --git a/lib/clif-backend/src/signal/mod.rs b/lib/clif-backend/src/signal/mod.rs index 66d347c21..f5fcf5d52 100644 --- a/lib/clif-backend/src/signal/mod.rs +++ b/lib/clif-backend/src/signal/mod.rs @@ -1,16 +1,14 @@ use crate::relocation::{TrapData, TrapSink}; use crate::resolver::FuncResolver; use crate::trampoline::Trampolines; -use hashbrown::HashSet; use libc::c_void; use std::{any::Any, cell::Cell, ptr::NonNull, sync::Arc}; use wasmer_runtime_core::{ backend::{RunnableModule, UserTrapper}, - export::Context, - module::{ExportIndex, ModuleInfo, ModuleInner}, + module::ModuleInfo, typed_func::{Wasm, WasmTrapInfo}, - types::{FuncIndex, FuncSig, LocalFuncIndex, LocalOrImport, SigIndex, Type, Value}, - vm::{self, ImportBacking}, + types::{LocalFuncIndex, SigIndex}, + vm, }; #[cfg(unix)] @@ -39,7 +37,6 @@ impl UserTrapper for Trapper { } pub struct Caller { - func_export_set: HashSet, handler_data: HandlerData, trampolines: Arc, resolver: FuncResolver, @@ -47,23 +44,11 @@ pub struct Caller { impl Caller { pub fn new( - module: &ModuleInfo, handler_data: HandlerData, trampolines: Arc, resolver: FuncResolver, ) -> Self { - let mut func_export_set = HashSet::new(); - for export_index in module.exports.values() { - if let ExportIndex::Func(func_index) = export_index { - func_export_set.insert(*func_index); - } - } - if let Some(start_func_index) = module.start_func { - func_export_set.insert(start_func_index); - } - Self { - func_export_set, handler_data, trampolines, resolver, @@ -83,13 +68,13 @@ impl RunnableModule for Caller { func: NonNull, args: *const u64, rets: *mut u64, - trap_info: *mut WasmTrapInfo, + _trap_info: *mut WasmTrapInfo, invoke_env: Option>, ) -> bool { let handler_data = &*invoke_env.unwrap().cast().as_ptr(); #[cfg(not(target_os = "windows"))] - let res = call_protected(handler_data, || unsafe { + let res = call_protected(handler_data, || { // Leap of faith. trampoline(ctx, func, args, rets); }) @@ -121,40 +106,6 @@ impl RunnableModule for Caller { } } -fn get_func_from_index<'a>( - module: &'a ModuleInner, - import_backing: &ImportBacking, - func_index: FuncIndex, -) -> (NonNull, Context, &'a FuncSig, SigIndex) { - let sig_index = *module - .info - .func_assoc - .get(func_index) - .expect("broken invariant, incorrect func index"); - - let (func_ptr, ctx) = match func_index.local_or_import(&module.info) { - LocalOrImport::Local(local_func_index) => ( - module - .runnable_module - .get_func(&module.info, local_func_index) - .expect("broken invariant, func resolver not synced with module.exports") - .cast(), - Context::Internal, - ), - LocalOrImport::Import(imported_func_index) => { - let imported_func = import_backing.imported_func(imported_func_index); - ( - NonNull::new(imported_func.func as *mut _).unwrap(), - Context::External(imported_func.vmctx), - ) - } - }; - - let signature = &module.info.signatures[sig_index]; - - (func_ptr, ctx, signature, sig_index) -} - unsafe impl Send for HandlerData {} unsafe impl Sync for HandlerData {} diff --git a/lib/clif-backend/src/trampoline.rs b/lib/clif-backend/src/trampoline.rs index 696a0b624..09ee4cf74 100644 --- a/lib/clif-backend/src/trampoline.rs +++ b/lib/clif-backend/src/trampoline.rs @@ -6,7 +6,6 @@ use cranelift_codegen::{ isa, Context, }; use hashbrown::HashMap; -use std::ffi::c_void; use std::{iter, mem, ptr::NonNull}; use wasmer_runtime_core::{ backend::sys::{Memory, Protect}, diff --git a/lib/runtime-core/src/instance.rs b/lib/runtime-core/src/instance.rs index 2cdc738da..db9a2847f 100644 --- a/lib/runtime-core/src/instance.rs +++ b/lib/runtime-core/src/instance.rs @@ -1,5 +1,5 @@ use crate::{ - backend::{RunnableModule, Token}, + backend::RunnableModule, backing::{ImportBacking, LocalBacking}, error::{CallError, CallResult, ResolveError, ResolveResult, Result, RuntimeError}, export::{Context, Export, ExportIter, FuncPointer}, From 0d30c957a2abf1ed214844df464604d6cbd84f6e Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Fri, 12 Apr 2019 10:33:30 -0700 Subject: [PATCH 231/413] Fix llvm test --- lib/llvm-backend/src/lib.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/llvm-backend/src/lib.rs b/lib/llvm-backend/src/lib.rs index 2df195ecd..bc43c5773 100644 --- a/lib/llvm-backend/src/lib.rs +++ b/lib/llvm-backend/src/lib.rs @@ -103,7 +103,9 @@ fn validate(bytes: &[u8]) -> Result<(), CompileError> { fn test_read_module() { use std::mem::transmute; use wabt::wat2wasm; - use wasmer_runtime_core::{structures::TypedIndex, types::LocalFuncIndex, vm, vmcalls}; + use wasmer_runtime_core::{ + backend::RunnableModule, structures::TypedIndex, types::LocalFuncIndex, vm, + }; // let wasm = include_bytes!("../../spectests/examples/simple/simple.wasm") as &[u8]; let wat = r#" (module @@ -121,7 +123,7 @@ fn test_read_module() { let (module, intrinsics) = code::parse_function_bodies(&info, code_reader).unwrap(); - let (backend, _caller) = backend::LLVMBackend::new(module, intrinsics); + let backend = backend::LLVMBackend::new(module, intrinsics); let func_ptr = backend.get_func(&info, LocalFuncIndex::new(0)).unwrap(); From 15fca21995a8145b8d3805c818fbba97f44f7a4a Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Fri, 12 Apr 2019 10:46:29 -0700 Subject: [PATCH 232/413] Add CHANGELOG.md --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..386a3d5ef --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,8 @@ +# Changelog + +All PRs to the Wasmer repository must add to this file. + +Blocks of changes will separated by version increments. + +## **[Unreleased]** +- #0000 Add [CHANGELOG.md](CHANGELOG.md). From d026530f01fee2103670f7aa6f38b72935760407 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Fri, 12 Apr 2019 10:48:34 -0700 Subject: [PATCH 233/413] Add link to PR. --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 386a3d5ef..e3d1826c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,4 +5,4 @@ All PRs to the Wasmer repository must add to this file. Blocks of changes will separated by version increments. ## **[Unreleased]** -- #0000 Add [CHANGELOG.md](CHANGELOG.md). +- [#349](https://github.com/wasmerio/wasmer/pull/349) Add [CHANGELOG.md](https://github.com/wasmerio/wasmer/blob/master/CHANGELOG.md). From b568d303334100cf9a808aa9e9989415db709dda Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Fri, 12 Apr 2019 11:08:20 -0700 Subject: [PATCH 234/413] Update circleci config --- .circleci/config.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index b1d76a212..2a9bdee64 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -12,6 +12,14 @@ run_install_dependencies: &run_install_dependencies version: 2 jobs: + changelog: + docker: + - image: docker:stable-git + steps: + - checkout + - run: + command: ! git diff --exit-code CHANGELOG.md + # Job used for testing lint: docker: From 0711f924f78b47c2ea8ab22e8c459dbe4874f8c5 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Fri, 12 Apr 2019 11:09:31 -0700 Subject: [PATCH 235/413] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e3d1826c3..4c683f657 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,4 +5,5 @@ All PRs to the Wasmer repository must add to this file. Blocks of changes will separated by version increments. ## **[Unreleased]** +- [#0000]() Enforce that CHANGELOG.md is updated through CI. - [#349](https://github.com/wasmerio/wasmer/pull/349) Add [CHANGELOG.md](https://github.com/wasmerio/wasmer/blob/master/CHANGELOG.md). From b13844a1a362d0c43ef14d8dc10654389d5105cc Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Fri, 12 Apr 2019 11:10:55 -0700 Subject: [PATCH 236/413] Update config.yml --- .circleci/config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 2a9bdee64..676e8fb36 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -359,6 +359,7 @@ workflows: version: 2 main: jobs: + - changelog - lint - test: filters: From b035c333d80d51ebce4d8bcc02aad84010a051a0 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Fri, 12 Apr 2019 11:11:33 -0700 Subject: [PATCH 237/413] Fix indentation --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 676e8fb36..9f186b434 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -18,7 +18,7 @@ jobs: steps: - checkout - run: - command: ! git diff --exit-code CHANGELOG.md + command: ! git diff --exit-code CHANGELOG.md # Job used for testing lint: From 8af4888ced7f504e1c1dc372009b43b61fb9c7b3 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Fri, 12 Apr 2019 11:12:46 -0700 Subject: [PATCH 238/413] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c683f657..9c15babfb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,5 +5,5 @@ All PRs to the Wasmer repository must add to this file. Blocks of changes will separated by version increments. ## **[Unreleased]** -- [#0000]() Enforce that CHANGELOG.md is updated through CI. +- [#350](https://github.com/wasmerio/wasmer/pull/350) Enforce that CHANGELOG.md is updated through CI. - [#349](https://github.com/wasmerio/wasmer/pull/349) Add [CHANGELOG.md](https://github.com/wasmerio/wasmer/blob/master/CHANGELOG.md). From 9ae3559da4f7bd6210654d3e2adfc4ebe4791fe3 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 12 Apr 2019 11:17:02 -0700 Subject: [PATCH 239/413] add hidden option to specify command name --- src/bin/wasmer.rs | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index cc97810a9..414099f40 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -83,6 +83,9 @@ struct Run { #[structopt(long = "em-symbol-map", parse(from_os_str))] em_symbol_map: Option, + #[structopt(long = "command-name", hidden = true)] + command_name: Option, + /// Application arguments #[structopt(name = "--", raw(multiple = "true"))] args: Vec, @@ -300,12 +303,16 @@ fn execute_wasm(options: &Run) -> Result<(), String> { ( InstanceABI::WASI, wasmer_wasi::generate_import_object( - [options.path.to_str().unwrap().to_owned()] - .iter() - .chain(options.args.iter()) - .cloned() - .map(|arg| arg.into_bytes()) - .collect(), + if let Some(cn) = &options.command_name { + [cn.clone()] + } else { + [options.path.to_str().unwrap().to_owned()] + } + .iter() + .chain(options.args.iter()) + .cloned() + .map(|arg| arg.into_bytes()) + .collect(), env::vars() .map(|(k, v)| format!("{}={}", k, v).into_bytes()) .collect(), @@ -329,7 +336,11 @@ fn execute_wasm(options: &Run) -> Result<(), String> { &module, &mut instance, abi, - options.path.to_str().unwrap(), + if let Some(cn) = &options.command_name { + cn + } else { + options.path.to_str().unwrap() + }, options.args.iter().map(|arg| arg.as_str()).collect(), ) .map_err(|e| format!("{:?}", e))?; From 9c12b3f7f130ade140602d6dfb97f272f29af6e5 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 12 Apr 2019 11:22:01 -0700 Subject: [PATCH 240/413] update changelog --- CHANGELOG.md | 1 + lib/emscripten/a.txt | 0 lib/emscripten/foo.txt | 0 3 files changed, 1 insertion(+) delete mode 100644 lib/emscripten/a.txt delete mode 100644 lib/emscripten/foo.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index e3d1826c3..3b210c550 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,4 +5,5 @@ All PRs to the Wasmer repository must add to this file. Blocks of changes will separated by version increments. ## **[Unreleased]** +- [#351](https://github.com/wasmerio/wasmer/pull/351) Add hidden option to specify wasm program name (can be used to improve error messages) - [#349](https://github.com/wasmerio/wasmer/pull/349) Add [CHANGELOG.md](https://github.com/wasmerio/wasmer/blob/master/CHANGELOG.md). diff --git a/lib/emscripten/a.txt b/lib/emscripten/a.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/lib/emscripten/foo.txt b/lib/emscripten/foo.txt deleted file mode 100644 index e69de29bb..000000000 From 5854e651615a9f37ea72d3a6baf7d0f840c0335d Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Fri, 12 Apr 2019 11:31:48 -0700 Subject: [PATCH 241/413] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c15babfb..9d5b916e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,5 +5,6 @@ All PRs to the Wasmer repository must add to this file. Blocks of changes will separated by version increments. ## **[Unreleased]** +- [#348](https://github.com/wasmerio/wasmer/pull/348) Refactor internal runtime ↔️ backend abstraction. - [#350](https://github.com/wasmerio/wasmer/pull/350) Enforce that CHANGELOG.md is updated through CI. - [#349](https://github.com/wasmerio/wasmer/pull/349) Add [CHANGELOG.md](https://github.com/wasmerio/wasmer/blob/master/CHANGELOG.md). From 9bab2e62c852ccc7ffc3775ee4d4f7736a8cee90 Mon Sep 17 00:00:00 2001 From: Syrus Akbary Date: Fri, 12 Apr 2019 12:09:23 -0700 Subject: [PATCH 242/413] Require test-rust-nightly in bors to merge --- bors.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bors.toml b/bors.toml index c56141cd5..3ccbdc008 100644 --- a/bors.toml +++ b/bors.toml @@ -2,8 +2,9 @@ status = [ "ci/circleci: lint", "ci/circleci: test", "ci/circleci: test-macos", + "ci/circleci: test-rust-nightly", "continuous-integration/appveyor/branch" ] required_approvals = 1 timeout_sec = 900 -delete_merged_branches = true \ No newline at end of file +delete_merged_branches = true From d50725337291630f154ca8d33e74dd2cd5d207a5 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 12 Apr 2019 12:19:46 -0700 Subject: [PATCH 243/413] update crate version numbers to 0.3.0 --- Cargo.lock | 80 ++++++++++++++-------------- lib/clif-backend/Cargo.toml | 6 +-- lib/emscripten/Cargo.toml | 10 ++-- lib/llvm-backend/Cargo.toml | 6 +-- lib/runtime-abi/Cargo.toml | 2 +- lib/runtime-c-api/Cargo.toml | 8 +-- lib/runtime-core/Cargo.toml | 2 +- lib/runtime/Cargo.toml | 6 +-- lib/singlepass-backend/Cargo.toml | 2 +- lib/spectests/Cargo.toml | 10 ++-- lib/wasi/Cargo.toml | 4 +- lib/win-exception-handler/Cargo.toml | 4 +- update_version_numbers.sh | 17 ++++++ 13 files changed, 87 insertions(+), 70 deletions(-) create mode 100755 update_version_numbers.sh diff --git a/Cargo.lock b/Cargo.lock index 71c131da9..a1c6b5b28 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2230,19 +2230,19 @@ dependencies = [ "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "structopt 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)", "wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-clif-backend 0.2.0", - "wasmer-emscripten 0.2.1", - "wasmer-llvm-backend 0.1.0", - "wasmer-runtime 0.2.1", - "wasmer-runtime-abi 0.2.1", - "wasmer-runtime-core 0.2.1", - "wasmer-singlepass-backend 0.1.0", - "wasmer-wasi 0.2.1", + "wasmer-clif-backend 0.3.0", + "wasmer-emscripten 0.3.0", + "wasmer-llvm-backend 0.3.0", + "wasmer-runtime 0.3.0", + "wasmer-runtime-abi 0.3.0", + "wasmer-runtime-core 0.3.0", + "wasmer-singlepass-backend 0.3.0", + "wasmer-wasi 0.3.0", ] [[package]] name = "wasmer-clif-backend" -version = "0.2.0" +version = "0.3.0" dependencies = [ "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "cranelift-codegen 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2258,15 +2258,15 @@ dependencies = [ "serde_bytes 0.10.5 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", "target-lexicon 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-runtime-core 0.2.1", - "wasmer-win-exception-handler 0.2.0", + "wasmer-runtime-core 0.3.0", + "wasmer-win-exception-handler 0.3.0", "wasmparser 0.23.0 (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-emscripten" -version = "0.2.1" +version = "0.3.0" dependencies = [ "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2275,15 +2275,15 @@ dependencies = [ "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)", "wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-clif-backend 0.2.0", - "wasmer-llvm-backend 0.1.0", - "wasmer-runtime-core 0.2.1", - "wasmer-singlepass-backend 0.1.0", + "wasmer-clif-backend 0.3.0", + "wasmer-llvm-backend 0.3.0", + "wasmer-runtime-core 0.3.0", + "wasmer-singlepass-backend 0.3.0", ] [[package]] name = "wasmer-llvm-backend" -version = "0.1.0" +version = "0.3.0" dependencies = [ "capstone 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2298,35 +2298,35 @@ 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.7.4 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-runtime-core 0.2.1", + "wasmer-runtime-core 0.3.0", "wasmparser 0.28.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasmer-runtime" -version = "0.2.1" +version = "0.3.0" dependencies = [ "criterion 0.2.10 (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.7 (registry+https://github.com/rust-lang/crates.io-index)", "wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-clif-backend 0.2.0", - "wasmer-llvm-backend 0.1.0", - "wasmer-runtime-core 0.2.1", - "wasmer-singlepass-backend 0.1.0", + "wasmer-clif-backend 0.3.0", + "wasmer-llvm-backend 0.3.0", + "wasmer-runtime-core 0.3.0", + "wasmer-singlepass-backend 0.3.0", ] [[package]] name = "wasmer-runtime-abi" -version = "0.2.1" +version = "0.3.0" dependencies = [ "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "tar 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-runtime-core 0.2.1", + "wasmer-runtime-core 0.3.0", "wasmparser 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)", "zbox 0.6.1 (git+https://github.com/wasmerio/zbox?branch=bundle-libsodium)", "zstd 0.4.22+zstd.1.3.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2334,17 +2334,17 @@ dependencies = [ [[package]] name = "wasmer-runtime-c-api" -version = "0.2.1" +version = "0.3.0" dependencies = [ "cbindgen 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-runtime 0.2.1", - "wasmer-runtime-core 0.2.1", + "wasmer-runtime 0.3.0", + "wasmer-runtime-core 0.3.0", ] [[package]] name = "wasmer-runtime-core" -version = "0.2.1" +version = "0.3.0" dependencies = [ "blake2b_simd 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2369,7 +2369,7 @@ dependencies = [ [[package]] name = "wasmer-singlepass-backend" -version = "0.1.0" +version = "0.3.0" dependencies = [ "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "dynasm 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2379,24 +2379,24 @@ dependencies = [ "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "nix 0.13.0 (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.2.1", + "wasmer-runtime-core 0.3.0", "wasmparser 0.28.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasmer-spectests" -version = "0.2.0" +version = "0.3.0" dependencies = [ "wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-clif-backend 0.2.0", - "wasmer-llvm-backend 0.1.0", - "wasmer-runtime-core 0.2.1", - "wasmer-singlepass-backend 0.1.0", + "wasmer-clif-backend 0.3.0", + "wasmer-llvm-backend 0.3.0", + "wasmer-runtime-core 0.3.0", + "wasmer-singlepass-backend 0.3.0", ] [[package]] name = "wasmer-wasi" -version = "0.2.1" +version = "0.3.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)", @@ -2404,19 +2404,19 @@ dependencies = [ "libc 0.2.51 (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.2.1", + "wasmer-runtime-core 0.3.0", "zbox 0.6.1 (git+https://github.com/wasmerio/zbox?branch=bundle-libsodium)", ] [[package]] name = "wasmer-win-exception-handler" -version = "0.2.0" +version = "0.3.0" dependencies = [ "bindgen 0.46.0 (registry+https://github.com/rust-lang/crates.io-index)", "cmake 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-runtime-core 0.2.1", + "wasmer-runtime-core 0.3.0", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] diff --git a/lib/clif-backend/Cargo.toml b/lib/clif-backend/Cargo.toml index ff151a220..9259a1903 100644 --- a/lib/clif-backend/Cargo.toml +++ b/lib/clif-backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-clif-backend" -version = "0.2.0" +version = "0.3.0" description = "Wasmer runtime Cranelift compiler backend" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -8,7 +8,7 @@ repository = "https://github.com/wasmerio/wasmer" edition = "2018" [dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.2.1" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.3.0" } cranelift-native = "0.30.0" cranelift-codegen = "0.30.0" cranelift-entity = "0.30.0" @@ -33,7 +33,7 @@ version = "0.0.7" [target.'cfg(windows)'.dependencies] winapi = { version = "0.3", features = ["errhandlingapi", "minwindef", "minwinbase", "winnt"] } -wasmer-win-exception-handler = { path = "../win-exception-handler", version = "0.2.0" } +wasmer-win-exception-handler = { path = "../win-exception-handler", version = "0.3.0" } [features] debug = ["wasmer-runtime-core/debug"] diff --git a/lib/emscripten/Cargo.toml b/lib/emscripten/Cargo.toml index 8b19340b0..6f37da948 100644 --- a/lib/emscripten/Cargo.toml +++ b/lib/emscripten/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-emscripten" -version = "0.2.1" +version = "0.3.0" description = "Wasmer runtime emscripten implementation library" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -9,14 +9,14 @@ edition = "2018" build = "build/mod.rs" [dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.2.1" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.3.0" } lazy_static = "1.2.0" libc = "0.2.49" byteorder = "1" time = "0.1.41" -wasmer-clif-backend = { path = "../clif-backend", version = "0.2.0" } -wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.1.0", optional = true } -wasmer-llvm-backend = { path = "../llvm-backend", version = "0.1.0", optional = true } +wasmer-clif-backend = { path = "../clif-backend", version = "0.3.0" } +wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.3.0", optional = true } +wasmer-llvm-backend = { path = "../llvm-backend", version = "0.3.0", optional = true } [target.'cfg(windows)'.dependencies] rand = "0.6" diff --git a/lib/llvm-backend/Cargo.toml b/lib/llvm-backend/Cargo.toml index 8be5aaa32..944db6d41 100644 --- a/lib/llvm-backend/Cargo.toml +++ b/lib/llvm-backend/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "wasmer-llvm-backend" -version = "0.1.0" +version = "0.3.0" authors = ["Lachlan Sneff "] edition = "2018" [dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.2.1" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.3.0" } inkwell = { git = "https://github.com/wasmerio/inkwell", branch = "llvm7-0" } wasmparser = "0.28.0" hashbrown = "0.1.8" @@ -27,4 +27,4 @@ wabt = "0.7.4" [features] debug = ["wasmer-runtime-core/debug"] -disasm = ["capstone"] \ No newline at end of file +disasm = ["capstone"] diff --git a/lib/runtime-abi/Cargo.toml b/lib/runtime-abi/Cargo.toml index 19384647d..459c08de2 100644 --- a/lib/runtime-abi/Cargo.toml +++ b/lib/runtime-abi/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-runtime-abi" -version = "0.2.1" +version = "0.3.0" description = "Wasmer runtime core library" license = "MIT" authors = ["The Wasmer Engineering Team "] diff --git a/lib/runtime-c-api/Cargo.toml b/lib/runtime-c-api/Cargo.toml index c0f5cdef2..881c37fcb 100644 --- a/lib/runtime-c-api/Cargo.toml +++ b/lib/runtime-c-api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-runtime-c-api" -version = "0.2.1" +version = "0.3.0" description = "Wasmer C API library" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -16,15 +16,15 @@ libc = "0.2" [dependencies.wasmer-runtime] path = "../runtime" -version = "0.2.1" +version = "0.3.0" [dependencies.wasmer-runtime-core] path = "../runtime-core" -version = "0.2.1" +version = "0.3.0" [features] debug = ["wasmer-runtime/debug"] llvm = ["wasmer-runtime/llvm"] [build-dependencies] -cbindgen = "0.8" \ No newline at end of file +cbindgen = "0.8" diff --git a/lib/runtime-core/Cargo.toml b/lib/runtime-core/Cargo.toml index 41d472626..a78a69324 100644 --- a/lib/runtime-core/Cargo.toml +++ b/lib/runtime-core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-runtime-core" -version = "0.2.1" +version = "0.3.0" description = "Wasmer runtime core library" license = "MIT" authors = ["The Wasmer Engineering Team "] diff --git a/lib/runtime/Cargo.toml b/lib/runtime/Cargo.toml index f34798bf5..783953153 100644 --- a/lib/runtime/Cargo.toml +++ b/lib/runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-runtime" -version = "0.2.1" +version = "0.3.0" description = "Wasmer runtime library" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -15,11 +15,11 @@ memmap = "0.7.0" [dependencies.wasmer-runtime-core] path = "../runtime-core" -version = "0.2.1" +version = "0.3.0" [dependencies.wasmer-clif-backend] path = "../clif-backend" -version = "0.2.0" +version = "0.3.0" optional = true [dev-dependencies] diff --git a/lib/singlepass-backend/Cargo.toml b/lib/singlepass-backend/Cargo.toml index 977a3eac6..319f262d2 100644 --- a/lib/singlepass-backend/Cargo.toml +++ b/lib/singlepass-backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-singlepass-backend" -version = "0.1.0" +version = "0.3.0" repository = "https://github.com/wasmerio/wasmer" description = "Wasmer runtime single pass compiler backend" license = "MIT" diff --git a/lib/spectests/Cargo.toml b/lib/spectests/Cargo.toml index d19fdab6d..390e7ebe9 100644 --- a/lib/spectests/Cargo.toml +++ b/lib/spectests/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-spectests" -version = "0.2.0" +version = "0.3.0" description = "Wasmer spectests library" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -9,10 +9,10 @@ edition = "2018" build = "build/mod.rs" [dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.2.0" } -wasmer-clif-backend = { path = "../clif-backend", version = "0.2.0" } -wasmer-llvm-backend = { path = "../llvm-backend", version = "0.1.0", optional = true } -wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.1.0", optional = true } +wasmer-runtime-core = { path = "../runtime-core", version = "0.3.0" } +wasmer-clif-backend = { path = "../clif-backend", version = "0.3.0" } +wasmer-llvm-backend = { path = "../llvm-backend", version = "0.3.0", optional = true } +wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.3.0", optional = true } [build-dependencies] wabt = "0.7.2" diff --git a/lib/wasi/Cargo.toml b/lib/wasi/Cargo.toml index cdf1a45b4..58b12b9ed 100644 --- a/lib/wasi/Cargo.toml +++ b/lib/wasi/Cargo.toml @@ -1,13 +1,13 @@ [package] name = "wasmer-wasi" -version = "0.2.1" +version = "0.3.0" license = "MIT" authors = ["The Wasmer Engineering Team "] repository = "https://github.com/wasmerio/wasmer" edition = "2018" [dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.2.1" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.3.0" } libc = "0.2.50" rand = "0.6.5" # wasmer-runtime-abi = { path = "../runtime-abi" } diff --git a/lib/win-exception-handler/Cargo.toml b/lib/win-exception-handler/Cargo.toml index 18855212b..c11d497bd 100644 --- a/lib/win-exception-handler/Cargo.toml +++ b/lib/win-exception-handler/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-win-exception-handler" -version = "0.2.0" +version = "0.3.0" description = "Wasmer runtime exception handling for Windows" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -8,7 +8,7 @@ repository = "https://github.com/wasmerio/wasmer" edition = "2018" [target.'cfg(windows)'.dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.2.0" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.3.0" } winapi = { version = "0.3", features = ["winbase", "errhandlingapi", "minwindef", "minwinbase", "winnt"] } libc = "0.2.49" diff --git a/update_version_numbers.sh b/update_version_numbers.sh new file mode 100755 index 000000000..df7f38952 --- /dev/null +++ b/update_version_numbers.sh @@ -0,0 +1,17 @@ +PREVIOUS_VERSION='0.2.1' +NEXT_VERSION='0.3.0' + +# quick hack +fd Cargo.toml --exec sed -i '' "s/version = \"$PREVIOUS_VERSION\"/version = \"$NEXT_VERSION\"/" +echo "manually check changes to Cargo.toml" + +# Order to upload packages in +## runtime-core +## win-exception-handler +## clif-backend +## llvm-backend +## singlepass-backend +## emscripten +## wasi +## runtime +## runtime-c-api From 5dd6b0686432e8aac525e298e4e7148e12299776 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 12 Apr 2019 12:27:51 -0700 Subject: [PATCH 244/413] update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b2c106e5..ea1ec69d5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ All PRs to the Wasmer repository must add to this file. Blocks of changes will separated by version increments. ## **[Unreleased]** +- [#352](https://github.com/wasmerio/wasmer/pull/352) Bump version numbers to 0.3.0 - [#351](https://github.com/wasmerio/wasmer/pull/351) Add hidden option to specify wasm program name (can be used to improve error messages) - [#350](https://github.com/wasmerio/wasmer/pull/350) Enforce that CHANGELOG.md is updated through CI. - [#349](https://github.com/wasmerio/wasmer/pull/349) Add [CHANGELOG.md](https://github.com/wasmerio/wasmer/blob/master/CHANGELOG.md). From a36ab1cd788ede023ad022fd1f692c689fd5974f Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 12 Apr 2019 14:07:25 -0700 Subject: [PATCH 245/413] add misc changes to Cargo.tomls for publishing --- Cargo.lock | 88 ++++++++++++++++++++++++++++++- lib/runtime/Cargo.toml | 2 +- lib/singlepass-backend/Cargo.toml | 2 +- lib/wasi/Cargo.toml | 8 +-- 4 files changed, 94 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a1c6b5b28..eada87efb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -123,6 +123,11 @@ dependencies = [ "which 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "bitflags" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "bitflags" version = "1.0.4" @@ -574,6 +579,18 @@ dependencies = [ "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "env_logger" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "env_logger" version = "0.6.1" @@ -722,6 +739,14 @@ dependencies = [ "typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "getopts" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "glob" version = "0.2.11" @@ -978,6 +1003,16 @@ dependencies = [ "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "lz4" +version = "1.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", + "lz4-sys 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "skeptic 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "lz4" version = "1.23.1" @@ -987,6 +1022,15 @@ dependencies = [ "lz4-sys 1.8.3 (git+https://github.com/zboxfs/lz4-rs.git)", ] +[[package]] +name = "lz4-sys" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "lz4-sys" version = "1.8.3" @@ -1330,6 +1374,15 @@ dependencies = [ "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "pulldown-cmark" +version = "0.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "getopts 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "quick-error" version = "1.2.2" @@ -1755,6 +1808,15 @@ name = "siphasher" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "skeptic" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "pulldown-cmark 0.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "slab" version = "0.4.2" @@ -2405,7 +2467,7 @@ dependencies = [ "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.3.0", - "zbox 0.6.1 (git+https://github.com/wasmerio/zbox?branch=bundle-libsodium)", + "zbox 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2530,6 +2592,22 @@ dependencies = [ "zip 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "zbox" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)", + "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lz4 1.22.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "rmp-serde 0.13.7 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "zip" version = "0.5.1" @@ -2585,6 +2663,7 @@ dependencies = [ "checksum backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "797c830ac25ccc92a7f8a7b9862bde440715531514594a6154e3d4a54dd769b6" "checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" "checksum bindgen 0.46.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8f7f7f0701772b17de73e4f5cbcb1dd6926f4706cba4c1ab62c5367f8bdc94e1" +"checksum bitflags 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4f67931368edf3a9a51d29886d245f1c3db2f1ef0dcc9e35ff70341b78c10d23" "checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" "checksum blake2b_simd 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce2571a6cd634670daa2977cc894c1cc2ba57c563c498e5a82c35446f34d056e" "checksum blob 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "19803aa44ff8b43123bbe369efaddcb638ea7dc332e543972dd95ac7cb148b92" @@ -2634,6 +2713,7 @@ dependencies = [ "checksum either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5527cfe0d098f36e3f8839852688e63c8fff1c90b2b405aef730615f9a7bcf7b" "checksum encoding_rs 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)" = "4155785c79f2f6701f185eb2e6b4caf0555ec03477cb4c70db67b465311620ed" "checksum enum-methods 0.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7798e7da2d4cb0d6d6fc467e8d6b5bf247e9e989f786dde1732d79899c32bb10" +"checksum env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)" = "15b0a4d2e39f8420210be8b27eeda28029729e2fd4291019455016c348240c38" "checksum env_logger 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b61fa891024a945da30a9581546e8cfaf5602c7b3f4c137a2805cf388f92075a" "checksum errno 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c2a071601ed01b988f896ab14b95e67335d1eeb50190932a1320f7fe3cadc84e" "checksum errno-dragonfly 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "14ca354e36190500e1e1fb267c647932382b54053c50b14970856c0b00a35067" @@ -2653,6 +2733,7 @@ dependencies = [ "checksum gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)" = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" "checksum generational-arena 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4024f96ffa0ebaaf36aa589cd41f2fd69f3a5e6fd02c86e11e12cdf41d5b46a3" "checksum generic-array 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3c0f28c2f5bfb5960175af447a2da7c18900693738343dc896ffbcabd9839592" +"checksum getopts 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "0a7292d30132fb5424b354f5dc02512a86e4c516fe544bb7a25e7f266951b797" "checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb" "checksum goblin 0.0.20 (registry+https://github.com/rust-lang/crates.io-index)" = "84473a5302fa5094d3d9911c2f312f522f9a37462a777f195f63fae1bf7faf4d" "checksum h2 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "910a5e7be6283a9c91b3982fa5188368c8719cce2a3cf3b86048673bf9d9c36b" @@ -2681,7 +2762,9 @@ dependencies = [ "checksum llvm-sys 70.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60a9ee82fe0fa72ae6ef6d018b407296085863836451c7a97384f84ed7e26b9f" "checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" "checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6" +"checksum lz4 1.22.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fe55d2ebbc2e4fc987e6fbfc13f416d97b06d06e50bc1124d613aa790842f80c" "checksum lz4 1.23.1 (git+https://github.com/zboxfs/lz4-rs.git)" = "" +"checksum lz4-sys 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a59044c3ba3994f3d2aa2270ddd6c5947922219501e67efde5604d36aad462b5" "checksum lz4-sys 1.8.3 (git+https://github.com/zboxfs/lz4-rs.git)" = "" "checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" "checksum memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2efc7bc57c883d4a4d6e3246905283d8dae951bb3bd32f49d6ef297f546e1c39" @@ -2721,6 +2804,7 @@ dependencies = [ "checksum plain 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" "checksum podio 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "780fb4b6698bbf9cf2444ea5d22411cef2953f0824b98f33cf454ec5615645bd" "checksum proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)" = "4d317f9caece796be1980837fd5cb3dfec5613ebdb04ad0956deea83ce168915" +"checksum pulldown-cmark 0.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "1058d7bb927ca067656537eec4e02c2b4b70eaaa129664c5b90c111e20326f41" "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" "checksum quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a" "checksum quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "cdd8e04bd9c52e0342b406469d494fcb033be4bdbe5c606016defbb1681411e1" @@ -2768,6 +2852,7 @@ dependencies = [ "checksum serde_test 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce17ed207fa61e7f4701a778a6c111da84a441ca9a8f50b92808f4223dd240b" "checksum serde_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d48f9f99cd749a2de71d29da5f948de7f2764cc5a9d7f3c97e3514d4ee6eabf2" "checksum siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" +"checksum skeptic 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "dd7d8dc1315094150052d0ab767840376335a98ac66ef313ff911cdf439a5b69" "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" "checksum smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c4488ae950c49d403731982257768f48fada354a5203fe81f9bb6f43ca9002be" "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" @@ -2837,6 +2922,7 @@ dependencies = [ "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" "checksum xattr 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c" "checksum zbox 0.6.1 (git+https://github.com/wasmerio/zbox?branch=bundle-libsodium)" = "" +"checksum zbox 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4a969b504de4ee47ac68bbd035b0c5a53818edb1edd6737131de001de2a09e64" "checksum zip 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1cbbddef6339155bc4fa8e2609040078ff18f3011117b55caa9f0516d544a357" "checksum zstd 0.4.22+zstd.1.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6f042dd18d52854d302d3d92f66d0a63c2d520d7b7034a9d43cde7441d1b4ddd" "checksum zstd-safe 1.4.7+zstd.1.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "63febf0b0dcd076db81e6b3110ed254cfb8ed54378a4c3cfbb68956e839d4f59" diff --git a/lib/runtime/Cargo.toml b/lib/runtime/Cargo.toml index 783953153..678d6861c 100644 --- a/lib/runtime/Cargo.toml +++ b/lib/runtime/Cargo.toml @@ -9,7 +9,7 @@ edition = "2018" readme = "README.md" [dependencies] -wasmer-singlepass-backend = { path = "../singlepass-backend", optional = true } +wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.3.0", optional = true } lazy_static = "1.2.0" memmap = "0.7.0" diff --git a/lib/singlepass-backend/Cargo.toml b/lib/singlepass-backend/Cargo.toml index 319f262d2..51fa61319 100644 --- a/lib/singlepass-backend/Cargo.toml +++ b/lib/singlepass-backend/Cargo.toml @@ -8,7 +8,7 @@ authors = ["The Wasmer Engineering Team "] edition = "2018" [dependencies] -wasmer-runtime-core = { path = "../runtime-core" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.3.0" } wasmparser = "0.28.0" dynasm = "0.3.1" dynasmrt = "0.3.1" diff --git a/lib/wasi/Cargo.toml b/lib/wasi/Cargo.toml index 58b12b9ed..850507b1d 100644 --- a/lib/wasi/Cargo.toml +++ b/lib/wasi/Cargo.toml @@ -1,6 +1,7 @@ [package] name = "wasmer-wasi" version = "0.3.0" +description = "Wasmer runtime WASI implementation library" license = "MIT" authors = ["The Wasmer Engineering Team "] repository = "https://github.com/wasmerio/wasmer" @@ -17,6 +18,7 @@ log = "0.4.6" byteorder = "1.3.1" [dependencies.zbox] -git = "https://github.com/wasmerio/zbox" -branch = "bundle-libsodium" -features = ["libsodium-bundled"] +#git = "https://github.com/wasmerio/zbox" +#branch = "bundle-libsodium" +#features = ["libsodium-bundled"] +version = "0.6.1" From 5771c904f8c38d80941906731efd3d3e0cc8bf33 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 12 Apr 2019 14:16:42 -0700 Subject: [PATCH 246/413] add changelog entry --- CHANGELOG.md | 1 + lib/wasi/Cargo.toml | 7 +++---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ea1ec69d5..113ad0c3e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ All PRs to the Wasmer repository must add to this file. Blocks of changes will separated by version increments. ## **[Unreleased]** +- [#355](https://github.com/wasmerio/wasmer/pull/355) Misc changes to `Cargo.toml`s for publishing - [#352](https://github.com/wasmerio/wasmer/pull/352) Bump version numbers to 0.3.0 - [#351](https://github.com/wasmerio/wasmer/pull/351) Add hidden option to specify wasm program name (can be used to improve error messages) - [#350](https://github.com/wasmerio/wasmer/pull/350) Enforce that CHANGELOG.md is updated through CI. diff --git a/lib/wasi/Cargo.toml b/lib/wasi/Cargo.toml index 850507b1d..87224d529 100644 --- a/lib/wasi/Cargo.toml +++ b/lib/wasi/Cargo.toml @@ -18,7 +18,6 @@ log = "0.4.6" byteorder = "1.3.1" [dependencies.zbox] -#git = "https://github.com/wasmerio/zbox" -#branch = "bundle-libsodium" -#features = ["libsodium-bundled"] -version = "0.6.1" +git = "https://github.com/wasmerio/zbox" +branch = "bundle-libsodium" +features = ["libsodium-bundled"] From c47eb6eaa25dde27701c35689e94109435a7e5b7 Mon Sep 17 00:00:00 2001 From: losfair Date: Tue, 16 Apr 2019 22:45:32 +0800 Subject: [PATCH 247/413] Fix corner cases. --- lib/singlepass-backend/src/codegen_x64.rs | 68 ++++++++++++++++------- 1 file changed, 48 insertions(+), 20 deletions(-) diff --git a/lib/singlepass-backend/src/codegen_x64.rs b/lib/singlepass-backend/src/codegen_x64.rs index c574bfc14..9663a4740 100644 --- a/lib/singlepass-backend/src/codegen_x64.rs +++ b/lib/singlepass-backend/src/codegen_x64.rs @@ -1230,11 +1230,27 @@ impl X64FunctionCode { if need_check { a.emit_mov(Size::S32, addr, Location::GPR(tmp_addr)); - a.emit_add( - Size::S64, - Location::Imm32((offset + value_size) as u32), - Location::GPR(tmp_addr), - ); + match (offset as u32).checked_add(value_size as u32) { + Some(x) => { + a.emit_add( + Size::S64, + Location::Imm32(x), + Location::GPR(tmp_addr), + ); + } + None => { + a.emit_add( + Size::S64, + Location::Imm32(offset as u32), + Location::GPR(tmp_addr), + ); + a.emit_add( + Size::S64, + Location::Imm32(value_size as u32), + Location::GPR(tmp_addr), + ); + } + } a.emit_add(Size::S64, Location::GPR(tmp_base), Location::GPR(tmp_addr)); a.emit_cmp(Size::S64, Location::GPR(tmp_bound), Location::GPR(tmp_addr)); a.emit_conditional_trap(Condition::Above); @@ -1275,18 +1291,18 @@ impl X64FunctionCode { // Underflow. a.emit_mov(Size::S32, Location::Imm32(lower_bound), Location::GPR(tmp)); a.emit_mov(Size::S32, Location::GPR(tmp), Location::XMM(tmp_x)); - a.emit_vcmpltss(tmp_x, XMMOrMemory::XMM(reg), tmp_x); + a.emit_vcmpless(reg, XMMOrMemory::XMM(tmp_x), tmp_x); a.emit_mov(Size::S32, Location::XMM(tmp_x), Location::GPR(tmp)); - a.emit_cmp(Size::S32, Location::Imm32(1), Location::GPR(tmp)); - a.emit_jmp(Condition::Equal, trap); + a.emit_cmp(Size::S32, Location::Imm32(0), Location::GPR(tmp)); + a.emit_jmp(Condition::NotEqual, trap); // Overflow. a.emit_mov(Size::S32, Location::Imm32(upper_bound), Location::GPR(tmp)); a.emit_mov(Size::S32, Location::GPR(tmp), Location::XMM(tmp_x)); - a.emit_vcmpgtss(tmp_x, XMMOrMemory::XMM(reg), tmp_x); + a.emit_vcmpgess(reg, XMMOrMemory::XMM(tmp_x), tmp_x); a.emit_mov(Size::S32, Location::XMM(tmp_x), Location::GPR(tmp)); - a.emit_cmp(Size::S32, Location::Imm32(1), Location::GPR(tmp)); - a.emit_jmp(Condition::Equal, trap); + a.emit_cmp(Size::S32, Location::Imm32(0), Location::GPR(tmp)); + a.emit_jmp(Condition::NotEqual, trap); // NaN. a.emit_vcmpeqss(reg, XMMOrMemory::XMM(reg), tmp_x); @@ -1322,18 +1338,18 @@ impl X64FunctionCode { // Underflow. a.emit_mov(Size::S64, Location::Imm64(lower_bound), Location::GPR(tmp)); a.emit_mov(Size::S64, Location::GPR(tmp), Location::XMM(tmp_x)); - a.emit_vcmpltsd(tmp_x, XMMOrMemory::XMM(reg), tmp_x); + a.emit_vcmplesd(reg, XMMOrMemory::XMM(tmp_x), tmp_x); a.emit_mov(Size::S32, Location::XMM(tmp_x), Location::GPR(tmp)); - a.emit_cmp(Size::S32, Location::Imm32(1), Location::GPR(tmp)); - a.emit_jmp(Condition::Equal, trap); + a.emit_cmp(Size::S32, Location::Imm32(0), Location::GPR(tmp)); + a.emit_jmp(Condition::NotEqual, trap); // Overflow. a.emit_mov(Size::S64, Location::Imm64(upper_bound), Location::GPR(tmp)); a.emit_mov(Size::S64, Location::GPR(tmp), Location::XMM(tmp_x)); - a.emit_vcmpgtsd(tmp_x, XMMOrMemory::XMM(reg), tmp_x); + a.emit_vcmpgesd(reg, XMMOrMemory::XMM(tmp_x), tmp_x); a.emit_mov(Size::S32, Location::XMM(tmp_x), Location::GPR(tmp)); - a.emit_cmp(Size::S32, Location::Imm32(1), Location::GPR(tmp)); - a.emit_jmp(Condition::Equal, trap); + a.emit_cmp(Size::S32, Location::Imm32(0), Location::GPR(tmp)); + a.emit_jmp(Condition::NotEqual, trap); // NaN. a.emit_vcmpeqsd(reg, XMMOrMemory::XMM(reg), tmp_x); @@ -2697,16 +2713,28 @@ impl FunctionCodeGenerator for X64FunctionCode { let tmp_out = self.machine.acquire_temp_gpr().unwrap(); let tmp_in = self.machine.acquire_temp_xmm().unwrap(); - a.emit_mov(Size::S64, loc, Location::XMM(tmp_in)); + let real_in = match loc { + Location::Imm32(_) | Location::Imm64(_) => { + a.emit_mov(Size::S64, loc, Location::GPR(tmp_out)); + a.emit_mov(Size::S64, Location::GPR(tmp_out), Location::XMM(tmp_in)); + tmp_in + } + Location::XMM(x) => x, + _ => { + a.emit_mov(Size::S64, loc, Location::XMM(tmp_in)); + tmp_in + } + }; + Self::emit_f64_int_conv_check( a, &mut self.machine, - tmp_in, + real_in, -2147483649.0, 2147483648.0, ); - a.emit_cvttsd2si_32(XMMOrMemory::XMM(tmp_in), tmp_out); + a.emit_cvttsd2si_32(XMMOrMemory::XMM(real_in), tmp_out); a.emit_mov(Size::S32, Location::GPR(tmp_out), ret); self.machine.release_temp_xmm(tmp_in); From 0da2442be1a1933ab10c3822aefd8147ce054493 Mon Sep 17 00:00:00 2001 From: losfair Date: Wed, 17 Apr 2019 02:10:36 +0800 Subject: [PATCH 248/413] Parse input in a single pass. --- lib/singlepass-backend/src/codegen.rs | 2 +- lib/singlepass-backend/src/codegen_x64.rs | 60 ++- lib/singlepass-backend/src/emitter_x64.rs | 24 ++ lib/singlepass-backend/src/parse.rs | 497 ++++++++++------------ 4 files changed, 275 insertions(+), 308 deletions(-) diff --git a/lib/singlepass-backend/src/codegen.rs b/lib/singlepass-backend/src/codegen.rs index 798dea114..586fd0851 100644 --- a/lib/singlepass-backend/src/codegen.rs +++ b/lib/singlepass-backend/src/codegen.rs @@ -23,7 +23,7 @@ pub trait FunctionCodeGenerator { fn feed_param(&mut self, ty: WpType) -> Result<(), CodegenError>; fn feed_local(&mut self, ty: WpType, n: usize) -> Result<(), CodegenError>; fn begin_body(&mut self) -> Result<(), CodegenError>; - fn feed_opcode(&mut self, op: Operator, module_info: &ModuleInfo) -> Result<(), CodegenError>; + fn feed_opcode(&mut self, op: &Operator, module_info: &ModuleInfo) -> Result<(), CodegenError>; fn finalize(&mut self) -> Result<(), CodegenError>; } diff --git a/lib/singlepass-backend/src/codegen_x64.rs b/lib/singlepass-backend/src/codegen_x64.rs index 9663a4740..b0b2fdc27 100644 --- a/lib/singlepass-backend/src/codegen_x64.rs +++ b/lib/singlepass-backend/src/codegen_x64.rs @@ -1232,11 +1232,7 @@ impl X64FunctionCode { a.emit_mov(Size::S32, addr, Location::GPR(tmp_addr)); match (offset as u32).checked_add(value_size as u32) { Some(x) => { - a.emit_add( - Size::S64, - Location::Imm32(x), - Location::GPR(tmp_addr), - ); + a.emit_add(Size::S64, Location::Imm32(x), Location::GPR(tmp_addr)); } None => { a.emit_add( @@ -1409,13 +1405,13 @@ impl FunctionCodeGenerator for X64FunctionCode { Ok(()) } - fn feed_opcode(&mut self, op: Operator, module_info: &ModuleInfo) -> Result<(), CodegenError> { + fn feed_opcode(&mut self, op: &Operator, module_info: &ModuleInfo) -> Result<(), CodegenError> { //println!("{:?} {}", op, self.value_stack.len()); let was_unreachable; if self.unreachable_depth > 0 { was_unreachable = true; - match op { + match *op { Operator::Block { .. } | Operator::Loop { .. } | Operator::If { .. } => { self.unreachable_depth += 1; } @@ -1442,7 +1438,7 @@ impl FunctionCodeGenerator for X64FunctionCode { } let a = self.assembler.as_mut().unwrap(); - match op { + match *op { Operator::GetGlobal { global_index } => { let global_index = global_index as usize; @@ -3344,7 +3340,7 @@ impl FunctionCodeGenerator for X64FunctionCode { self.value_stack.push((ret, LocalOrTemp::Temp)); a.emit_mov(Size::S64, Location::GPR(GPR::RAX), ret); } - Operator::I32Load { memarg } => { + Operator::I32Load { ref memarg } => { let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; @@ -3369,7 +3365,7 @@ impl FunctionCodeGenerator for X64FunctionCode { }, ); } - Operator::F32Load { memarg } => { + Operator::F32Load { ref memarg } => { let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::F32], false)[0]; @@ -3394,7 +3390,7 @@ impl FunctionCodeGenerator for X64FunctionCode { }, ); } - Operator::I32Load8U { memarg } => { + Operator::I32Load8U { ref memarg } => { let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; @@ -3420,7 +3416,7 @@ impl FunctionCodeGenerator for X64FunctionCode { }, ); } - Operator::I32Load8S { memarg } => { + Operator::I32Load8S { ref memarg } => { let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; @@ -3446,7 +3442,7 @@ impl FunctionCodeGenerator for X64FunctionCode { }, ); } - Operator::I32Load16U { memarg } => { + Operator::I32Load16U { ref memarg } => { let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; @@ -3472,7 +3468,7 @@ impl FunctionCodeGenerator for X64FunctionCode { }, ); } - Operator::I32Load16S { memarg } => { + Operator::I32Load16S { ref memarg } => { let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; @@ -3498,7 +3494,7 @@ impl FunctionCodeGenerator for X64FunctionCode { }, ); } - Operator::I32Store { memarg } => { + Operator::I32Store { ref memarg } => { let target_value = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let target_addr = @@ -3523,7 +3519,7 @@ impl FunctionCodeGenerator for X64FunctionCode { }, ); } - Operator::F32Store { memarg } => { + Operator::F32Store { ref memarg } => { let target_value = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let target_addr = @@ -3548,7 +3544,7 @@ impl FunctionCodeGenerator for X64FunctionCode { }, ); } - Operator::I32Store8 { memarg } => { + Operator::I32Store8 { ref memarg } => { let target_value = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let target_addr = @@ -3573,7 +3569,7 @@ impl FunctionCodeGenerator for X64FunctionCode { }, ); } - Operator::I32Store16 { memarg } => { + Operator::I32Store16 { ref memarg } => { let target_value = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let target_addr = @@ -3598,7 +3594,7 @@ impl FunctionCodeGenerator for X64FunctionCode { }, ); } - Operator::I64Load { memarg } => { + Operator::I64Load { ref memarg } => { let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; @@ -3623,7 +3619,7 @@ impl FunctionCodeGenerator for X64FunctionCode { }, ); } - Operator::F64Load { memarg } => { + Operator::F64Load { ref memarg } => { let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::F64], false)[0]; @@ -3648,7 +3644,7 @@ impl FunctionCodeGenerator for X64FunctionCode { }, ); } - Operator::I64Load8U { memarg } => { + Operator::I64Load8U { ref memarg } => { let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; @@ -3674,7 +3670,7 @@ impl FunctionCodeGenerator for X64FunctionCode { }, ); } - Operator::I64Load8S { memarg } => { + Operator::I64Load8S { ref memarg } => { let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; @@ -3700,7 +3696,7 @@ impl FunctionCodeGenerator for X64FunctionCode { }, ); } - Operator::I64Load16U { memarg } => { + Operator::I64Load16U { ref memarg } => { let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; @@ -3726,7 +3722,7 @@ impl FunctionCodeGenerator for X64FunctionCode { }, ); } - Operator::I64Load16S { memarg } => { + Operator::I64Load16S { ref memarg } => { let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; @@ -3752,7 +3748,7 @@ impl FunctionCodeGenerator for X64FunctionCode { }, ); } - Operator::I64Load32U { memarg } => { + Operator::I64Load32U { ref memarg } => { let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; @@ -3783,7 +3779,7 @@ impl FunctionCodeGenerator for X64FunctionCode { }, ); } - Operator::I64Load32S { memarg } => { + Operator::I64Load32S { ref memarg } => { let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; @@ -3809,7 +3805,7 @@ impl FunctionCodeGenerator for X64FunctionCode { }, ); } - Operator::I64Store { memarg } => { + Operator::I64Store { ref memarg } => { let target_value = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let target_addr = @@ -3834,7 +3830,7 @@ impl FunctionCodeGenerator for X64FunctionCode { }, ); } - Operator::F64Store { memarg } => { + Operator::F64Store { ref memarg } => { let target_value = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let target_addr = @@ -3859,7 +3855,7 @@ impl FunctionCodeGenerator for X64FunctionCode { }, ); } - Operator::I64Store8 { memarg } => { + Operator::I64Store8 { ref memarg } => { let target_value = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let target_addr = @@ -3884,7 +3880,7 @@ impl FunctionCodeGenerator for X64FunctionCode { }, ); } - Operator::I64Store16 { memarg } => { + Operator::I64Store16 { ref memarg } => { let target_value = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let target_addr = @@ -3909,7 +3905,7 @@ impl FunctionCodeGenerator for X64FunctionCode { }, ); } - Operator::I64Store32 { memarg } => { + Operator::I64Store32 { ref memarg } => { let target_value = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let target_addr = @@ -4009,7 +4005,7 @@ impl FunctionCodeGenerator for X64FunctionCode { a.emit_label(after); } - Operator::BrTable { table } => { + Operator::BrTable { ref table } => { let (targets, default_target) = table.read_table().unwrap(); let cond = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); diff --git a/lib/singlepass-backend/src/emitter_x64.rs b/lib/singlepass-backend/src/emitter_x64.rs index 420a44123..8a949f8a5 100644 --- a/lib/singlepass-backend/src/emitter_x64.rs +++ b/lib/singlepass-backend/src/emitter_x64.rs @@ -502,18 +502,42 @@ impl Emitter for Assembler { (Size::S8, Location::Memory(src, disp), Location::GPR(dst)) => { dynasm!(self ; mov Rb(dst as u8), [Rq(src as u8) + disp]); } + (Size::S8, Location::Imm32(src), Location::GPR(dst)) => { + dynasm!(self ; mov Rb(dst as u8), src as i8); + } + (Size::S8, Location::Imm64(src), Location::GPR(dst)) => { + dynasm!(self ; mov Rb(dst as u8), src as i8); + } (Size::S8, Location::Imm32(src), Location::Memory(dst, disp)) => { dynasm!(self ; mov BYTE [Rq(dst as u8) + disp], src as i8); } + (Size::S8, Location::Imm64(src), Location::Memory(dst, disp)) => { + dynasm!(self ; mov BYTE [Rq(dst as u8) + disp], src as i8); + } (Size::S16, Location::GPR(src), Location::Memory(dst, disp)) => { dynasm!(self ; mov [Rq(dst as u8) + disp], Rw(src as u8)); } (Size::S16, Location::Memory(src, disp), Location::GPR(dst)) => { dynasm!(self ; mov Rw(dst as u8), [Rq(src as u8) + disp]); } + (Size::S16, Location::Imm32(src), Location::GPR(dst)) => { + dynasm!(self ; mov Rw(dst as u8), src as i16); + } + (Size::S16, Location::Imm64(src), Location::GPR(dst)) => { + dynasm!(self ; mov Rw(dst as u8), src as i16); + } (Size::S16, Location::Imm32(src), Location::Memory(dst, disp)) => { dynasm!(self ; mov WORD [Rq(dst as u8) + disp], src as i16); } + (Size::S16, Location::Imm64(src), Location::Memory(dst, disp)) => { + dynasm!(self ; mov WORD [Rq(dst as u8) + disp], src as i16); + } + (Size::S32, Location::Imm64(src), Location::GPR(dst)) => { + dynasm!(self ; mov Rd(dst as u8), src as i32); + } + (Size::S32, Location::Imm64(src), Location::Memory(dst, disp)) => { + dynasm!(self ; mov DWORD [Rq(dst as u8) + disp], src as i32); + } (Size::S32, Location::GPR(src), Location::XMM(dst)) => { dynasm!(self ; movd Rx(dst as u8), Rd(src as u8)); } diff --git a/lib/singlepass-backend/src/parse.rs b/lib/singlepass-backend/src/parse.rs index b198ea4c5..13b633117 100644 --- a/lib/singlepass-backend/src/parse.rs +++ b/lib/singlepass-backend/src/parse.rs @@ -38,30 +38,6 @@ impl From for LoadError { } } -fn validate(bytes: &[u8]) -> Result<(), LoadError> { - let mut parser = wasmparser::ValidatingParser::new( - bytes, - Some(wasmparser::ValidatingParserConfig { - operator_config: wasmparser::OperatorValidatorConfig { - enable_threads: false, - enable_reference_types: false, - enable_simd: false, - enable_bulk_memory: false, - }, - mutable_global_imports: false, - }), - ); - - loop { - let state = parser.read(); - match *state { - wasmparser::ParserState::EndWasm => break Ok(()), - wasmparser::ParserState::Error(err) => Err(LoadError::Parse(err))?, - _ => {} - } - } -} - pub fn read_module< MCG: ModuleCodeGenerator, FCG: FunctionCodeGenerator, @@ -73,7 +49,6 @@ pub fn read_module< mcg: &mut MCG, compiler_config: &CompilerConfig, ) -> Result { - validate(wasm)?; let mut info = ModuleInfo { memories: Map::new(), globals: Map::new(), @@ -103,277 +78,251 @@ pub fn read_module< custom_sections: HashMap::new(), }; - let mut reader = ModuleReader::new(wasm)?; + let mut parser = wasmparser::ValidatingParser::new( + wasm, + Some(wasmparser::ValidatingParserConfig { + operator_config: wasmparser::OperatorValidatorConfig { + enable_threads: false, + enable_reference_types: false, + enable_simd: false, + enable_bulk_memory: false, + }, + mutable_global_imports: false, + }), + ); + + let mut namespace_builder = Some(StringTableBuilder::new()); + let mut name_builder = Some(StringTableBuilder::new()); + let mut func_count: usize = ::std::usize::MAX; loop { - if reader.eof() { - return Ok(info); - } - - let section = reader.read()?; - - match section.code { - SectionCode::Type => { - let type_reader = section.get_type_section_reader()?; - - for ty in type_reader { - let ty = ty?; - info.signatures.push(func_type_to_func_sig(ty)?); - } - - mcg.feed_signatures(info.signatures.clone())?; + use wasmparser::ParserState; + let state = parser.read(); + match *state { + ParserState::EndWasm => break Ok(info), + ParserState::Error(err) => Err(LoadError::Parse(err))?, + ParserState::TypeSectionEntry(ref ty) => { + info.signatures.push(func_type_to_func_sig(ty)?); } - SectionCode::Import => { - let import_reader = section.get_import_section_reader()?; - let mut namespace_builder = StringTableBuilder::new(); - let mut name_builder = StringTableBuilder::new(); + ParserState::ImportSectionEntry { module, field, ty } => { + let namespace_index = namespace_builder.as_mut().unwrap().register(module); + let name_index = name_builder.as_mut().unwrap().register(field); + let import_name = ImportName { + namespace_index, + name_index, + }; - for import in import_reader { - let Import { module, field, ty } = import?; + match ty { + ImportSectionEntryType::Function(sigindex) => { + let sigindex = SigIndex::new(sigindex as usize); + info.imported_functions.push(import_name); + info.func_assoc.push(sigindex); + mcg.feed_import_function()?; + } + ImportSectionEntryType::Table(table_ty) => { + assert_eq!(table_ty.element_type, WpType::AnyFunc); + let table_desc = TableDescriptor { + element: ElementType::Anyfunc, + minimum: table_ty.limits.initial, + maximum: table_ty.limits.maximum, + }; - let namespace_index = namespace_builder.register(module); - let name_index = name_builder.register(field); - let import_name = ImportName { - namespace_index, - name_index, - }; - - match ty { - ImportSectionEntryType::Function(sigindex) => { - let sigindex = SigIndex::new(sigindex as usize); - info.imported_functions.push(import_name); - info.func_assoc.push(sigindex); - mcg.feed_import_function()?; - } - ImportSectionEntryType::Table(table_ty) => { - assert_eq!(table_ty.element_type, WpType::AnyFunc); - let table_desc = TableDescriptor { - element: ElementType::Anyfunc, - minimum: table_ty.limits.initial, - maximum: table_ty.limits.maximum, - }; - - info.imported_tables.push((import_name, table_desc)); - } - ImportSectionEntryType::Memory(memory_ty) => { - let mem_desc = MemoryDescriptor { - minimum: Pages(memory_ty.limits.initial), - maximum: memory_ty.limits.maximum.map(|max| Pages(max)), - shared: memory_ty.shared, - }; - info.imported_memories.push((import_name, mem_desc)); - } - ImportSectionEntryType::Global(global_ty) => { - let global_desc = GlobalDescriptor { - mutable: global_ty.mutable, - ty: wp_type_to_type(global_ty.content_type)?, - }; - info.imported_globals.push((import_name, global_desc)); - } + info.imported_tables.push((import_name, table_desc)); + } + ImportSectionEntryType::Memory(memory_ty) => { + let mem_desc = MemoryDescriptor { + minimum: Pages(memory_ty.limits.initial), + maximum: memory_ty.limits.maximum.map(|max| Pages(max)), + shared: memory_ty.shared, + }; + info.imported_memories.push((import_name, mem_desc)); + } + ImportSectionEntryType::Global(global_ty) => { + let global_desc = GlobalDescriptor { + mutable: global_ty.mutable, + ty: wp_type_to_type(global_ty.content_type)?, + }; + info.imported_globals.push((import_name, global_desc)); } } - - info.namespace_table = namespace_builder.finish(); - info.name_table = name_builder.finish(); } - SectionCode::Function => { - let func_decl_reader = section.get_function_section_reader()?; - - for sigindex in func_decl_reader { - let sigindex = sigindex?; - - let sigindex = SigIndex::new(sigindex as usize); - info.func_assoc.push(sigindex); - } - - mcg.feed_function_signatures(info.func_assoc.clone())?; + ParserState::FunctionSectionEntry(sigindex) => { + let sigindex = SigIndex::new(sigindex as usize); + info.func_assoc.push(sigindex); } - SectionCode::Table => { - let table_decl_reader = section.get_table_section_reader()?; + ParserState::TableSectionEntry(table_ty) => { + let table_desc = TableDescriptor { + element: ElementType::Anyfunc, + minimum: table_ty.limits.initial, + maximum: table_ty.limits.maximum, + }; - for table_ty in table_decl_reader { - let table_ty = table_ty?; - - let table_desc = TableDescriptor { - element: ElementType::Anyfunc, - minimum: table_ty.limits.initial, - maximum: table_ty.limits.maximum, - }; - - info.tables.push(table_desc); - } + info.tables.push(table_desc); } - SectionCode::Memory => { - let mem_decl_reader = section.get_memory_section_reader()?; + ParserState::MemorySectionEntry(memory_ty) => { + let mem_desc = MemoryDescriptor { + minimum: Pages(memory_ty.limits.initial), + maximum: memory_ty.limits.maximum.map(|max| Pages(max)), + shared: memory_ty.shared, + }; - for memory_ty in mem_decl_reader { - let memory_ty = memory_ty?; - - let mem_desc = MemoryDescriptor { - minimum: Pages(memory_ty.limits.initial), - maximum: memory_ty.limits.maximum.map(|max| Pages(max)), - shared: memory_ty.shared, - }; - - info.memories.push(mem_desc); - } + info.memories.push(mem_desc); } - SectionCode::Global => { - let global_decl_reader = section.get_global_section_reader()?; + ParserState::ExportSectionEntry { field, kind, index } => { + let export_index = match kind { + ExternalKind::Function => ExportIndex::Func(FuncIndex::new(index as usize)), + ExternalKind::Table => ExportIndex::Table(TableIndex::new(index as usize)), + ExternalKind::Memory => ExportIndex::Memory(MemoryIndex::new(index as usize)), + ExternalKind::Global => ExportIndex::Global(GlobalIndex::new(index as usize)), + }; - for global in global_decl_reader { - let global = global?; - - let desc = GlobalDescriptor { - mutable: global.ty.mutable, - ty: wp_type_to_type(global.ty.content_type)?, - }; - - let global_init = GlobalInit { - desc, - init: eval_init_expr(&global.init_expr)?, - }; - - info.globals.push(global_init); - } + info.exports.insert(field.to_string(), export_index); } - SectionCode::Export => { - let export_reader = section.get_export_section_reader()?; - - for export in export_reader { - let Export { field, kind, index } = export?; - - let export_index = match kind { - ExternalKind::Function => ExportIndex::Func(FuncIndex::new(index as usize)), - ExternalKind::Table => ExportIndex::Table(TableIndex::new(index as usize)), - ExternalKind::Memory => { - ExportIndex::Memory(MemoryIndex::new(index as usize)) - } - ExternalKind::Global => { - ExportIndex::Global(GlobalIndex::new(index as usize)) - } - }; - - info.exports.insert(field.to_string(), export_index); - } - } - SectionCode::Start => { - let start_index = section.get_start_section_content()?; - + ParserState::StartSectionEntry(start_index) => { info.start_func = Some(FuncIndex::new(start_index as usize)); } - SectionCode::Element => { - let element_reader = section.get_element_section_reader()?; + ParserState::BeginFunctionBody { .. } => { + let id = func_count.wrapping_add(1); + func_count = id; + if func_count == 0 { + info.namespace_table = namespace_builder.take().unwrap().finish(); + info.name_table = name_builder.take().unwrap().finish(); + mcg.feed_signatures(info.signatures.clone())?; + mcg.feed_function_signatures(info.func_assoc.clone())?; + mcg.check_precondition(&info)?; + } - for element in element_reader { - let Element { kind, items } = element?; + let fcg = mcg.next_function()?; + let sig = info + .signatures + .get( + *info + .func_assoc + .get(FuncIndex::new(id as usize + info.imported_functions.len())) + .unwrap(), + ) + .unwrap(); + for ret in sig.returns() { + fcg.feed_return(type_to_wp_type(*ret))?; + } + for param in sig.params() { + fcg.feed_param(type_to_wp_type(*param))?; + } - match kind { - ElementKind::Active { - table_index, - init_expr, - } => { - let table_index = TableIndex::new(table_index as usize); - let base = eval_init_expr(&init_expr)?; - let items_reader = items.get_items_reader()?; + let mut body_begun = false; - let elements: Vec<_> = items_reader - .into_iter() - .map(|res| res.map(|index| FuncIndex::new(index as usize))) - .collect::>()?; - - let table_init = TableInitializer { - table_index, - base, - elements, - }; - - info.elem_initializers.push(table_init); - } - ElementKind::Passive(_ty) => { - return Err(BinaryReaderError { - message: "passive tables are not yet supported", - offset: -1isize as usize, + loop { + let state = parser.read(); + match *state { + ParserState::Error(err) => return Err(LoadError::Parse(err)), + ParserState::FunctionBodyLocals { ref locals } => { + for &(count, ty) in locals.iter() { + fcg.feed_local(ty, count as usize)?; } - .into()); } - } - } - } - SectionCode::Code => { - let mut code_reader = section.get_code_section_reader()?; - if code_reader.get_count() as usize > info.func_assoc.len() { - return Err(BinaryReaderError { - message: "code_reader.get_count() > info.func_assoc.len()", - offset: ::std::usize::MAX, - } - .into()); - } - mcg.check_precondition(&info)?; - for i in 0..code_reader.get_count() { - let item = code_reader.read()?; - let fcg = mcg.next_function()?; - let sig = info - .signatures - .get( - *info - .func_assoc - .get(FuncIndex::new(i as usize + info.imported_functions.len())) - .unwrap(), - ) - .unwrap(); - for ret in sig.returns() { - fcg.feed_return(type_to_wp_type(*ret))?; - } - for param in sig.params() { - fcg.feed_param(type_to_wp_type(*param))?; - } - for local in item.get_locals_reader()? { - let (count, ty) = local?; - fcg.feed_local(ty, count as usize)?; - } - fcg.begin_body()?; - for op in item.get_operators_reader()? { - let op = op?; - fcg.feed_opcode(op, &info)?; - } - fcg.finalize()?; - } - } - SectionCode::Data => { - let data_reader = section.get_data_section_reader()?; - - for data in data_reader { - let Data { kind, data } = data?; - - match kind { - DataKind::Active { - memory_index, - init_expr, - } => { - let memory_index = MemoryIndex::new(memory_index as usize); - let base = eval_init_expr(&init_expr)?; - - let data_init = DataInitializer { - memory_index, - base, - data: data.to_vec(), - }; - - info.data_initializers.push(data_init); - } - DataKind::Passive => { - return Err(BinaryReaderError { - message: "passive memories are not yet supported", - offset: -1isize as usize, + ParserState::CodeOperator(ref op) => { + if !body_begun { + body_begun = true; + fcg.begin_body()?; } - .into()); + fcg.feed_opcode(op, &info)?; } + ParserState::EndFunctionBody => break, + _ => unreachable!(), } } + fcg.finalize()?; } - SectionCode::DataCount => {} - SectionCode::Custom { .. } => {} + ParserState::BeginActiveElementSectionEntry(table_index) => { + let table_index = TableIndex::new(table_index as usize); + let mut elements: Option> = None; + let mut base: Option = None; + + loop { + let state = parser.read(); + match *state { + ParserState::Error(err) => return Err(LoadError::Parse(err)), + ParserState::InitExpressionOperator(ref op) => { + base = Some(eval_init_expr(op)?) + } + ParserState::ElementSectionEntryBody(ref _elements) => { + elements = Some( + _elements + .iter() + .cloned() + .map(|index| FuncIndex::new(index as usize)) + .collect(), + ); + } + ParserState::BeginInitExpressionBody + | ParserState::EndInitExpressionBody => {} + ParserState::EndElementSectionEntry => break, + _ => unreachable!(), + } + } + + let table_init = TableInitializer { + table_index, + base: base.unwrap(), + elements: elements.unwrap(), + }; + + info.elem_initializers.push(table_init); + } + ParserState::BeginActiveDataSectionEntry(memory_index) => { + let memory_index = MemoryIndex::new(memory_index as usize); + let mut base: Option = None; + let mut data: Vec = vec![]; + + loop { + let state = parser.read(); + match *state { + ParserState::Error(err) => return Err(LoadError::Parse(err)), + ParserState::InitExpressionOperator(ref op) => { + base = Some(eval_init_expr(op)?) + } + ParserState::DataSectionEntryBodyChunk(chunk) => { + data = chunk.to_vec(); + } + ParserState::BeginInitExpressionBody + | ParserState::EndInitExpressionBody => {} + ParserState::BeginDataSectionEntryBody(_) + | ParserState::EndDataSectionEntryBody => {} + ParserState::EndDataSectionEntry => break, + _ => unreachable!(), + } + } + + let data_init = DataInitializer { + memory_index, + base: base.unwrap(), + data, + }; + info.data_initializers.push(data_init); + } + ParserState::BeginGlobalSectionEntry(ty) => { + let init = loop { + let state = parser.read(); + match *state { + ParserState::Error(err) => return Err(LoadError::Parse(err)), + ParserState::InitExpressionOperator(ref op) => { + break eval_init_expr(op)?; + } + ParserState::BeginInitExpressionBody => {} + _ => unreachable!(), + } + }; + let desc = GlobalDescriptor { + mutable: ty.mutable, + ty: wp_type_to_type(ty.content_type)?, + }; + + let global_init = GlobalInit { desc, init }; + + info.globals.push(global_init); + } + + _ => {} } } } @@ -403,7 +352,7 @@ pub fn type_to_wp_type(ty: Type) -> WpType { } } -fn func_type_to_func_sig(func_ty: FuncType) -> Result { +fn func_type_to_func_sig(func_ty: &FuncType) -> Result { assert_eq!(func_ty.form, WpType::Func); Ok(FuncSig::new( @@ -422,10 +371,8 @@ fn func_type_to_func_sig(func_ty: FuncType) -> Result Result { - let mut reader = expr.get_operators_reader(); - let (op, offset) = reader.read_with_offset()?; - Ok(match op { +fn eval_init_expr(op: &Operator) -> Result { + Ok(match *op { Operator::GetGlobal { global_index } => { Initializer::GetGlobal(ImportedGlobalIndex::new(global_index as usize)) } @@ -440,7 +387,7 @@ fn eval_init_expr(expr: &InitExpr) -> Result { _ => { return Err(BinaryReaderError { message: "init expr evaluation failed: unsupported opcode", - offset, + offset: -1isize as usize, }); } }) From c55952b450a3f77a14baf8df27d4ce52eeddd66a Mon Sep 17 00:00:00 2001 From: Syrus Akbary Date: Tue, 16 Apr 2019 12:11:00 -0700 Subject: [PATCH 249/413] Update LICENSE author --- LICENSE | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 7e40523b0..079740dd3 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,6 @@ -Copyright (c) 2019 Syrus Akbary +MIT License + +Copyright (c) 2019 Wasmer, Inc. and its affiliates. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From e71da1cdf1d133d2cb8f91b4a19b246817a7cec1 Mon Sep 17 00:00:00 2001 From: losfair Date: Thu, 18 Apr 2019 02:28:08 +0800 Subject: [PATCH 250/413] Some documentation on the code generator. --- lib/singlepass-backend/src/codegen.rs | 25 +++++++++++++++ lib/singlepass-backend/src/codegen_x64.rs | 39 ++++++++++++++++++++++- 2 files changed, 63 insertions(+), 1 deletion(-) diff --git a/lib/singlepass-backend/src/codegen.rs b/lib/singlepass-backend/src/codegen.rs index 586fd0851..fd43f1a86 100644 --- a/lib/singlepass-backend/src/codegen.rs +++ b/lib/singlepass-backend/src/codegen.rs @@ -6,24 +6,49 @@ use wasmer_runtime_core::{ }; use wasmparser::{Operator, Type as WpType}; +/// The module-scope code generator trait. pub trait ModuleCodeGenerator { + /// Verifies that the module satisfies a precondition before generating code for it. + /// This method is called just before the first call to `next_function`. fn check_precondition(&mut self, module_info: &ModuleInfo) -> Result<(), CodegenError>; + + /// Creates a new function and returns the function-scope code generator for it. fn next_function(&mut self) -> Result<&mut FCG, CodegenError>; + + /// Finalizes code generation, returning runtime structures. fn finalize(self, module_info: &ModuleInfo) -> Result<(PC, FR), CodegenError>; + + /// Sets signatures. fn feed_signatures(&mut self, signatures: Map) -> Result<(), CodegenError>; + + /// Sets function signatures. fn feed_function_signatures( &mut self, assoc: Map, ) -> Result<(), CodegenError>; + + /// Adds an import function. fn feed_import_function(&mut self) -> Result<(), CodegenError>; } +/// The function-scope code generator trait. pub trait FunctionCodeGenerator { + /// Sets the return type. fn feed_return(&mut self, ty: WpType) -> Result<(), CodegenError>; + + /// Adds a parameter to the function. fn feed_param(&mut self, ty: WpType) -> Result<(), CodegenError>; + + /// Adds `n` locals to the function. fn feed_local(&mut self, ty: WpType, n: usize) -> Result<(), CodegenError>; + + /// Called before the first call to `feed_opcode`. fn begin_body(&mut self) -> Result<(), CodegenError>; + + /// Called for each operator. fn feed_opcode(&mut self, op: &Operator, module_info: &ModuleInfo) -> Result<(), CodegenError>; + + /// Finalizes the function. fn finalize(&mut self) -> Result<(), CodegenError>; } diff --git a/lib/singlepass-backend/src/codegen_x64.rs b/lib/singlepass-backend/src/codegen_x64.rs index b0b2fdc27..f0bf448fb 100644 --- a/lib/singlepass-backend/src/codegen_x64.rs +++ b/lib/singlepass-backend/src/codegen_x64.rs @@ -27,6 +27,7 @@ use wasmer_runtime_core::{ use wasmparser::{Operator, Type as WpType}; lazy_static! { + /// Performs a System V call to `target` with [stack_top..stack_base] as the argument list, from right to left. static ref CONSTRUCT_STACK_AND_CALL_WASM: unsafe extern "C" fn (stack_top: *const u64, stack_base: *const u64, ctx: *mut vm::Ctx, target: *const vm::Func) -> u64 = { let mut assembler = Assembler::new().unwrap(); let offset = assembler.offset(); @@ -467,6 +468,9 @@ impl ModuleCodeGenerator( a: &mut Assembler, m: &mut Machine, @@ -697,6 +706,7 @@ impl X64FunctionCode { m.release_temp_xmm(tmp1); } + /// I32 binary operation with both operands popped from the virtual stack. fn emit_binop_i32( a: &mut Assembler, m: &mut Machine, @@ -735,6 +745,7 @@ impl X64FunctionCode { value_stack.push((ret, LocalOrTemp::Temp)); } + /// I64 binary operation with both operands popped from the virtual stack. fn emit_binop_i64( a: &mut Assembler, m: &mut Machine, @@ -773,6 +784,7 @@ impl X64FunctionCode { value_stack.push((ret, LocalOrTemp::Temp)); } + /// I32 comparison with `loc_b` from input. fn emit_cmpop_i32_dynamic_b( a: &mut Assembler, m: &mut Machine, @@ -803,6 +815,7 @@ impl X64FunctionCode { value_stack.push((ret, LocalOrTemp::Temp)); } + /// I32 comparison with both operands popped from the virtual stack. fn emit_cmpop_i32( a: &mut Assembler, m: &mut Machine, @@ -813,6 +826,7 @@ impl X64FunctionCode { Self::emit_cmpop_i32_dynamic_b(a, m, value_stack, c, loc_b); } + /// I64 comparison with `loc_b` from input. fn emit_cmpop_i64_dynamic_b( a: &mut Assembler, m: &mut Machine, @@ -843,6 +857,7 @@ impl X64FunctionCode { value_stack.push((ret, LocalOrTemp::Temp)); } + /// I64 comparison with both operands popped from the virtual stack. fn emit_cmpop_i64( a: &mut Assembler, m: &mut Machine, @@ -853,6 +868,7 @@ impl X64FunctionCode { Self::emit_cmpop_i64_dynamic_b(a, m, value_stack, c, loc_b); } + /// I32 `lzcnt`/`tzcnt`/`popcnt` with operand popped from the virtual stack. fn emit_xcnt_i32( a: &mut Assembler, m: &mut Machine, @@ -891,6 +907,7 @@ impl X64FunctionCode { value_stack.push((ret, LocalOrTemp::Temp)); } + /// I64 `lzcnt`/`tzcnt`/`popcnt` with operand popped from the virtual stack. fn emit_xcnt_i64( a: &mut Assembler, m: &mut Machine, @@ -929,6 +946,7 @@ impl X64FunctionCode { value_stack.push((ret, LocalOrTemp::Temp)); } + /// I32 shift with both operands popped from the virtual stack. fn emit_shift_i32( a: &mut Assembler, m: &mut Machine, @@ -949,6 +967,7 @@ impl X64FunctionCode { value_stack.push((ret, LocalOrTemp::Temp)); } + /// I64 shift with both operands popped from the virtual stack. fn emit_shift_i64( a: &mut Assembler, m: &mut Machine, @@ -969,6 +988,7 @@ impl X64FunctionCode { value_stack.push((ret, LocalOrTemp::Temp)); } + /// Floating point (AVX) binary operation with both operands popped from the virtual stack. fn emit_fp_binop_avx( a: &mut Assembler, m: &mut Machine, @@ -983,6 +1003,7 @@ impl X64FunctionCode { Self::emit_relaxed_avx(a, m, f, loc_a, loc_b, ret); } + /// Floating point (AVX) comparison with both operands popped from the virtual stack. fn emit_fp_cmpop_avx( a: &mut Assembler, m: &mut Machine, @@ -998,6 +1019,7 @@ impl X64FunctionCode { a.emit_and(Size::S32, Location::Imm32(1), ret); // FIXME: Why? } + /// Floating point (AVX) binary operation with both operands popped from the virtual stack. fn emit_fp_unop_avx( a: &mut Assembler, m: &mut Machine, @@ -1011,7 +1033,9 @@ impl X64FunctionCode { Self::emit_relaxed_avx(a, m, f, loc, loc, ret); } - // This function must not use RAX before `cb` is called. + /// Emits a System V call sequence. + /// + /// This function must not use RAX before `cb` is called. fn emit_call_sysv, F: FnOnce(&mut Assembler)>( a: &mut Assembler, m: &mut Machine, @@ -1167,6 +1191,7 @@ impl X64FunctionCode { } } + /// Emits a System V call sequence, specialized for labels as the call target. fn emit_call_sysv_label>( a: &mut Assembler, m: &mut Machine, @@ -1176,6 +1201,7 @@ impl X64FunctionCode { Self::emit_call_sysv(a, m, |a| a.emit_call_label(label), params) } + /// Emits a memory operation. fn emit_memory_op( module_info: &ModuleInfo, a: &mut Assembler, @@ -1189,6 +1215,7 @@ impl X64FunctionCode { let tmp_base = m.acquire_temp_gpr().unwrap(); let tmp_bound = m.acquire_temp_gpr().unwrap(); + // Loads both base and bound into temporary registers. a.emit_mov( Size::S64, Location::Memory( @@ -1215,8 +1242,11 @@ impl X64FunctionCode { Location::Memory(tmp_base, LocalMemory::offset_base() as i32), Location::GPR(tmp_base), ); + + // Adds base to bound so `tmp_bound` now holds the end of linear memory. a.emit_add(Size::S64, Location::GPR(tmp_base), Location::GPR(tmp_bound)); + // If the memory is dynamic, we need to do bound checking at runtime. let mem_desc = match MemoryIndex::new(0).local_or_import(module_info) { LocalOrImport::Local(local_mem_index) => &module_info.memories[local_mem_index], LocalOrImport::Import(import_mem_index) => { @@ -1230,6 +1260,8 @@ impl X64FunctionCode { if need_check { a.emit_mov(Size::S32, addr, Location::GPR(tmp_addr)); + + // This branch is used for emitting "faster" code for the special case of (offset + value_size) not exceeding u32 range. match (offset as u32).checked_add(value_size as u32) { Some(x) => { a.emit_add(Size::S64, Location::Imm32(x), Location::GPR(tmp_addr)); @@ -1247,6 +1279,8 @@ impl X64FunctionCode { ); } } + + // Trap if the end address of the requested area is above that of the linear memory. a.emit_add(Size::S64, Location::GPR(tmp_base), Location::GPR(tmp_addr)); a.emit_cmp(Size::S64, Location::GPR(tmp_bound), Location::GPR(tmp_addr)); a.emit_conditional_trap(Condition::Above); @@ -1254,6 +1288,7 @@ impl X64FunctionCode { m.release_temp_gpr(tmp_bound); + // Calculates the real address, and loads from it. a.emit_mov(Size::S32, addr, Location::GPR(tmp_addr)); a.emit_add( Size::S64, @@ -1268,6 +1303,7 @@ impl X64FunctionCode { m.release_temp_gpr(tmp_addr); } + // Checks for underflow/overflow/nan before IxxTrunc{U/S}F32. fn emit_f32_int_conv_check( a: &mut Assembler, m: &mut Machine, @@ -1315,6 +1351,7 @@ impl X64FunctionCode { m.release_temp_gpr(tmp); } + // Checks for underflow/overflow/nan before IxxTrunc{U/S}F64. fn emit_f64_int_conv_check( a: &mut Assembler, m: &mut Machine, From f0a20151f6745c7d55848f630c9cabaa5464ca4f Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Wed, 17 Apr 2019 14:14:01 -0700 Subject: [PATCH 251/413] Fix returning the result from dynamic calls on the singlepass backend --- lib/singlepass-backend/src/codegen_x64.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/singlepass-backend/src/codegen_x64.rs b/lib/singlepass-backend/src/codegen_x64.rs index 0bd3e4dac..b79aafd83 100644 --- a/lib/singlepass-backend/src/codegen_x64.rs +++ b/lib/singlepass-backend/src/codegen_x64.rs @@ -221,7 +221,9 @@ impl RunnableModule for X64ExecutionContext { ) }) { Ok(x) => { - *rets = x; + if !rets.is_null() { + *rets = x; + } true } Err(_) => false, From 61f31ae7e8f697b8d05756e6a86ea452486fe0bd Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Wed, 17 Apr 2019 15:17:16 -0700 Subject: [PATCH 252/413] Fix lint (just two lines) --- lib/singlepass-backend/src/codegen.rs | 2 +- lib/singlepass-backend/src/codegen_x64.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/singlepass-backend/src/codegen.rs b/lib/singlepass-backend/src/codegen.rs index fd43f1a86..b484a17f0 100644 --- a/lib/singlepass-backend/src/codegen.rs +++ b/lib/singlepass-backend/src/codegen.rs @@ -14,7 +14,7 @@ pub trait ModuleCodeGenerator Result<&mut FCG, CodegenError>; - + /// Finalizes code generation, returning runtime structures. fn finalize(self, module_info: &ModuleInfo) -> Result<(PC, FR), CodegenError>; diff --git a/lib/singlepass-backend/src/codegen_x64.rs b/lib/singlepass-backend/src/codegen_x64.rs index f0bf448fb..7b214bbb6 100644 --- a/lib/singlepass-backend/src/codegen_x64.rs +++ b/lib/singlepass-backend/src/codegen_x64.rs @@ -1034,7 +1034,7 @@ impl X64FunctionCode { } /// Emits a System V call sequence. - /// + /// /// This function must not use RAX before `cb` is called. fn emit_call_sysv, F: FnOnce(&mut Assembler)>( a: &mut Assembler, From 6c158a93bff19e5ef4efece89b59e32a4c12e99a Mon Sep 17 00:00:00 2001 From: Syrus Date: Thu, 11 Apr 2019 23:42:42 -0700 Subject: [PATCH 253/413] Added imports to be able to run Imagemagick --- Cargo.lock | 88 +--------------- lib/emscripten/src/emscripten_target.rs | 128 ++++++++++++++++++++++-- lib/emscripten/src/env/mod.rs | 7 ++ lib/emscripten/src/lib.rs | 33 ++++++ lib/emscripten/src/math.rs | 10 ++ 5 files changed, 169 insertions(+), 97 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0fda11748..bf77b0390 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -123,11 +123,6 @@ dependencies = [ "which 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "bitflags" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "bitflags" version = "1.0.4" @@ -579,18 +574,6 @@ dependencies = [ "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "env_logger" -version = "0.5.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "env_logger" version = "0.6.1" @@ -739,14 +722,6 @@ dependencies = [ "typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "getopts" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "glob" version = "0.2.11" @@ -1003,16 +978,6 @@ dependencies = [ "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "lz4" -version = "1.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", - "lz4-sys 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "skeptic 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "lz4" version = "1.23.1" @@ -1022,15 +987,6 @@ dependencies = [ "lz4-sys 1.8.3 (git+https://github.com/zboxfs/lz4-rs.git)", ] -[[package]] -name = "lz4-sys" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "lz4-sys" version = "1.8.3" @@ -1374,15 +1330,6 @@ dependencies = [ "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "pulldown-cmark" -version = "0.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bitflags 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "getopts 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "quick-error" version = "1.2.2" @@ -1808,15 +1755,6 @@ name = "siphasher" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "skeptic" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "pulldown-cmark 0.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "slab" version = "0.4.2" @@ -2468,7 +2406,7 @@ dependencies = [ "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.3.0", - "zbox 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "zbox 0.6.1 (git+https://github.com/wasmerio/zbox?branch=bundle-libsodium)", ] [[package]] @@ -2593,22 +2531,6 @@ dependencies = [ "zip 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "zbox" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)", - "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "lz4 1.22.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", - "rmp-serde 0.13.7 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "zip" version = "0.5.1" @@ -2664,7 +2586,6 @@ dependencies = [ "checksum backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "797c830ac25ccc92a7f8a7b9862bde440715531514594a6154e3d4a54dd769b6" "checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" "checksum bindgen 0.46.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8f7f7f0701772b17de73e4f5cbcb1dd6926f4706cba4c1ab62c5367f8bdc94e1" -"checksum bitflags 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4f67931368edf3a9a51d29886d245f1c3db2f1ef0dcc9e35ff70341b78c10d23" "checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" "checksum blake2b_simd 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce2571a6cd634670daa2977cc894c1cc2ba57c563c498e5a82c35446f34d056e" "checksum blob 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "19803aa44ff8b43123bbe369efaddcb638ea7dc332e543972dd95ac7cb148b92" @@ -2714,7 +2635,6 @@ dependencies = [ "checksum either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5527cfe0d098f36e3f8839852688e63c8fff1c90b2b405aef730615f9a7bcf7b" "checksum encoding_rs 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)" = "4155785c79f2f6701f185eb2e6b4caf0555ec03477cb4c70db67b465311620ed" "checksum enum-methods 0.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7798e7da2d4cb0d6d6fc467e8d6b5bf247e9e989f786dde1732d79899c32bb10" -"checksum env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)" = "15b0a4d2e39f8420210be8b27eeda28029729e2fd4291019455016c348240c38" "checksum env_logger 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b61fa891024a945da30a9581546e8cfaf5602c7b3f4c137a2805cf388f92075a" "checksum errno 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c2a071601ed01b988f896ab14b95e67335d1eeb50190932a1320f7fe3cadc84e" "checksum errno-dragonfly 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "14ca354e36190500e1e1fb267c647932382b54053c50b14970856c0b00a35067" @@ -2734,7 +2654,6 @@ dependencies = [ "checksum gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)" = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" "checksum generational-arena 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4024f96ffa0ebaaf36aa589cd41f2fd69f3a5e6fd02c86e11e12cdf41d5b46a3" "checksum generic-array 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3c0f28c2f5bfb5960175af447a2da7c18900693738343dc896ffbcabd9839592" -"checksum getopts 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "0a7292d30132fb5424b354f5dc02512a86e4c516fe544bb7a25e7f266951b797" "checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb" "checksum goblin 0.0.20 (registry+https://github.com/rust-lang/crates.io-index)" = "84473a5302fa5094d3d9911c2f312f522f9a37462a777f195f63fae1bf7faf4d" "checksum h2 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "910a5e7be6283a9c91b3982fa5188368c8719cce2a3cf3b86048673bf9d9c36b" @@ -2763,9 +2682,7 @@ dependencies = [ "checksum llvm-sys 70.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60a9ee82fe0fa72ae6ef6d018b407296085863836451c7a97384f84ed7e26b9f" "checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" "checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6" -"checksum lz4 1.22.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fe55d2ebbc2e4fc987e6fbfc13f416d97b06d06e50bc1124d613aa790842f80c" "checksum lz4 1.23.1 (git+https://github.com/zboxfs/lz4-rs.git)" = "" -"checksum lz4-sys 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a59044c3ba3994f3d2aa2270ddd6c5947922219501e67efde5604d36aad462b5" "checksum lz4-sys 1.8.3 (git+https://github.com/zboxfs/lz4-rs.git)" = "" "checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" "checksum memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2efc7bc57c883d4a4d6e3246905283d8dae951bb3bd32f49d6ef297f546e1c39" @@ -2805,7 +2722,6 @@ dependencies = [ "checksum plain 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" "checksum podio 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "780fb4b6698bbf9cf2444ea5d22411cef2953f0824b98f33cf454ec5615645bd" "checksum proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)" = "4d317f9caece796be1980837fd5cb3dfec5613ebdb04ad0956deea83ce168915" -"checksum pulldown-cmark 0.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "1058d7bb927ca067656537eec4e02c2b4b70eaaa129664c5b90c111e20326f41" "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" "checksum quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a" "checksum quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "cdd8e04bd9c52e0342b406469d494fcb033be4bdbe5c606016defbb1681411e1" @@ -2853,7 +2769,6 @@ dependencies = [ "checksum serde_test 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce17ed207fa61e7f4701a778a6c111da84a441ca9a8f50b92808f4223dd240b" "checksum serde_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d48f9f99cd749a2de71d29da5f948de7f2764cc5a9d7f3c97e3514d4ee6eabf2" "checksum siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" -"checksum skeptic 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "dd7d8dc1315094150052d0ab767840376335a98ac66ef313ff911cdf439a5b69" "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" "checksum smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c4488ae950c49d403731982257768f48fada354a5203fe81f9bb6f43ca9002be" "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" @@ -2923,7 +2838,6 @@ dependencies = [ "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" "checksum xattr 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c" "checksum zbox 0.6.1 (git+https://github.com/wasmerio/zbox?branch=bundle-libsodium)" = "" -"checksum zbox 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4a969b504de4ee47ac68bbd035b0c5a53818edb1edd6737131de001de2a09e64" "checksum zip 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1cbbddef6339155bc4fa8e2609040078ff18f3011117b55caa9f0516d544a357" "checksum zstd 0.4.22+zstd.1.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6f042dd18d52854d302d3d92f66d0a63c2d520d7b7034a9d43cde7441d1b4ddd" "checksum zstd-safe 1.4.7+zstd.1.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "63febf0b0dcd076db81e6b3110ed254cfb8ed54378a4c3cfbb68956e839d4f59" diff --git a/lib/emscripten/src/emscripten_target.rs b/lib/emscripten/src/emscripten_target.rs index 81444e2f9..5b14a1099 100644 --- a/lib/emscripten/src/emscripten_target.rs +++ b/lib/emscripten/src/emscripten_target.rs @@ -226,6 +226,10 @@ pub fn invoke_iiii(ctx: &mut Ctx, index: i32, a1: i32, a2: i32, a3: i32) -> i32 debug!("emscripten::invoke_iiii"); invoke!(ctx, dyn_call_iiii, index, a1, a2, a3) } +pub fn invoke_iifi(ctx: &mut Ctx, index: i32, a1: i32, a2: f64, a3: i32) -> i32 { + debug!("emscripten::invoke_iifi"); + invoke!(ctx, dyn_call_iifi, index, a1, a2, a3) +} pub fn invoke_v(ctx: &mut Ctx, index: i32) { debug!("emscripten::invoke_v"); invoke_no_return!(ctx, dyn_call_v, index); @@ -298,6 +302,33 @@ pub fn invoke_iiiiiiii( debug!("emscripten::invoke_iiiiiiii"); invoke!(ctx, dyn_call_iiiiiiii, index, a1, a2, a3, a4, a5, a6, a7) } +pub fn invoke_iiiiiiiii( + ctx: &mut Ctx, + index: i32, + a1: i32, + a2: i32, + a3: i32, + a4: i32, + a5: i32, + a6: i32, + a7: i32, + a8: i32, +) -> i32 { + debug!("emscripten::invoke_iiiiiiiii"); + invoke!( + ctx, + dyn_call_iiiiiiiii, + index, + a1, + a2, + a3, + a4, + a5, + a6, + a7, + a8 + ) +} pub fn invoke_iiiiiiiiii( ctx: &mut Ctx, index: i32, @@ -327,6 +358,37 @@ pub fn invoke_iiiiiiiiii( a9 ) } +pub fn invoke_iiiiiiiiiii( + ctx: &mut Ctx, + index: i32, + a1: i32, + a2: i32, + a3: i32, + a4: i32, + a5: i32, + a6: i32, + a7: i32, + a8: i32, + a9: i32, + a10: i32, +) -> i32 { + debug!("emscripten::invoke_iiiiiiiiiii"); + invoke!( + ctx, + dyn_call_iiiiiiiiiii, + index, + a1, + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9, + a10 + ) +} pub fn invoke_vd(ctx: &mut Ctx, index: i32, a1: f64) { debug!("emscripten::invoke_vd"); invoke_no_return!(ctx, dyn_call_vd, index, a1) @@ -450,13 +512,28 @@ pub fn invoke_viiiiiiiiii( ) } +pub fn invoke_iij(ctx: &mut Ctx, index: i32, a1: i32, a2: i32, a3: i32) -> i32 { + debug!("emscripten::invoke_iij"); + invoke!(ctx, dyn_call_iij, index, a1, a2, a3) +} + pub fn invoke_iiji(ctx: &mut Ctx, index: i32, a1: i32, a2: i32, a3: i32, a4: i32) -> i32 { debug!("emscripten::invoke_iiji"); - if let Some(dyn_call_iiji) = &get_emscripten_data(ctx).dyn_call_iiji { - dyn_call_iiji.call(index, a1, a2, a3, a4).unwrap() - } else { - panic!("dyn_call_iiji is set to None"); - } + invoke!(ctx, dyn_call_iiji, index, a1, a2, a3, a4) +} + +pub fn invoke_iiijj( + ctx: &mut Ctx, + index: i32, + a1: i32, + a2: i32, + a3: i32, + a4: i32, + a5: i32, + a6: i32, +) -> i32 { + debug!("emscripten::invoke_iiijj"); + invoke!(ctx, dyn_call_iiijj, index, a1, a2, a3, a4, a5, a6) } pub fn invoke_j(ctx: &mut Ctx, index: i32) -> i32 { debug!("emscripten::invoke_j"); @@ -655,11 +732,42 @@ pub fn invoke_vijj(ctx: &mut Ctx, index: i32, a1: i32, a2: i32, a3: i32, a4: i32 panic!("dyn_call_vijj is set to None"); } } +pub fn invoke_viid(ctx: &mut Ctx, index: i32, a1: i32, a2: i32, a3: f64) { + debug!("emscripten::invoke_viid"); + invoke_no_return!(ctx, dyn_call_viid, index, a1, a2, a3); +} pub fn invoke_viidii(ctx: &mut Ctx, index: i32, a1: i32, a2: i32, a3: f64, a4: i32, a5: i32) { debug!("emscripten::invoke_viidii"); - if let Some(dyn_call_viidii) = &get_emscripten_data(ctx).dyn_call_viidii { - dyn_call_viidii.call(index, a1, a2, a3, a4, a5).unwrap(); - } else { - panic!("dyn_call_viidii is set to None"); - } + invoke_no_return!(ctx, dyn_call_viidii, index, a1, a2, a3, a4, a5); +} +pub fn invoke_viidddddddd( + ctx: &mut Ctx, + index: i32, + a1: i32, + a2: i32, + a3: f64, + a4: f64, + a5: f64, + a6: f64, + a7: f64, + a8: f64, + a9: f64, + a10: f64, +) { + debug!("emscripten::invoke_viidddddddd"); + invoke_no_return!( + ctx, + dyn_call_viidddddddd, + index, + a1, + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9, + a10 + ); } diff --git a/lib/emscripten/src/env/mod.rs b/lib/emscripten/src/env/mod.rs index 662d4ba94..2f799a679 100644 --- a/lib/emscripten/src/env/mod.rs +++ b/lib/emscripten/src/env/mod.rs @@ -47,6 +47,13 @@ pub fn _getpagesize(_ctx: &mut Ctx) -> u32 { 16384 } +pub fn _times(ctx: &mut Ctx, buffer: u32) -> u32 { + if buffer != 0 { + call_memset(ctx, buffer, 0, 16); + } + 0 +} + #[allow(clippy::cast_ptr_alignment)] pub fn ___build_environment(ctx: &mut Ctx, environ: c_int) { debug!("emscripten::___build_environment {}", environ); diff --git a/lib/emscripten/src/lib.rs b/lib/emscripten/src/lib.rs index 2086595e4..b3484770b 100644 --- a/lib/emscripten/src/lib.rs +++ b/lib/emscripten/src/lib.rs @@ -83,6 +83,7 @@ pub struct EmscriptenData<'a> { pub dyn_call_ii: Option>, pub dyn_call_iii: Option>, pub dyn_call_iiii: Option>, + pub dyn_call_iifi: Option>, pub dyn_call_v: Option>, pub dyn_call_vi: Option>, pub dyn_call_vii: Option>, @@ -96,8 +97,11 @@ pub struct EmscriptenData<'a> { pub dyn_call_iiiiii: Option>, pub dyn_call_iiiiiii: Option>, pub dyn_call_iiiiiiii: Option>, + pub dyn_call_iiiiiiiii: Option>, pub dyn_call_iiiiiiiiii: Option>, + pub dyn_call_iiiiiiiiiii: + Option>, pub dyn_call_vd: Option>, pub dyn_call_viiiii: Option>, pub dyn_call_viiiiii: Option>, @@ -106,7 +110,9 @@ pub struct EmscriptenData<'a> { pub dyn_call_viiiiiiiii: Option>, pub dyn_call_viiiiiiiiii: Option>, + pub dyn_call_iij: Option>, pub dyn_call_iiji: Option>, + pub dyn_call_iiijj: Option>, pub dyn_call_j: Option>, pub dyn_call_ji: Option>, pub dyn_call_jii: Option>, @@ -125,7 +131,10 @@ pub struct EmscriptenData<'a> { pub dyn_call_viji: Option>, pub dyn_call_vijiii: Option>, pub dyn_call_vijj: Option>, + pub dyn_call_viid: Option>, pub dyn_call_viidii: Option>, + pub dyn_call_viidddddddd: + Option>, pub temp_ret_0: i32, pub stack_save: Option>, @@ -149,6 +158,7 @@ impl<'a> EmscriptenData<'a> { let dyn_call_ii = instance.func("dynCall_ii").ok(); let dyn_call_iii = instance.func("dynCall_iii").ok(); let dyn_call_iiii = instance.func("dynCall_iiii").ok(); + let dyn_call_iifi = instance.func("dynCall_iifi").ok(); let dyn_call_v = instance.func("dynCall_v").ok(); let dyn_call_vi = instance.func("dynCall_vi").ok(); let dyn_call_vii = instance.func("dynCall_vii").ok(); @@ -162,7 +172,9 @@ impl<'a> EmscriptenData<'a> { let dyn_call_iiiiii = instance.func("dynCall_iiiiii").ok(); let dyn_call_iiiiiii = instance.func("dynCall_iiiiiii").ok(); let dyn_call_iiiiiiii = instance.func("dynCall_iiiiiiii").ok(); + let dyn_call_iiiiiiiii = instance.func("dynCall_iiiiiiiii").ok(); let dyn_call_iiiiiiiiii = instance.func("dynCall_iiiiiiiiii").ok(); + let dyn_call_iiiiiiiiiii = instance.func("dynCall_iiiiiiiiiii").ok(); let dyn_call_vd = instance.func("dynCall_vd").ok(); let dyn_call_viiiii = instance.func("dynCall_viiiii").ok(); let dyn_call_viiiiii = instance.func("dynCall_viiiiii").ok(); @@ -170,7 +182,9 @@ impl<'a> EmscriptenData<'a> { let dyn_call_viiiiiiii = instance.func("dynCall_viiiiiiii").ok(); let dyn_call_viiiiiiiii = instance.func("dynCall_viiiiiiiii").ok(); let dyn_call_viiiiiiiiii = instance.func("dynCall_viiiiiiiiii").ok(); + let dyn_call_iij = instance.func("dynCall_iij").ok(); let dyn_call_iiji = instance.func("dynCall_iiji").ok(); + let dyn_call_iiijj = instance.func("dynCall_iiijj").ok(); let dyn_call_j = instance.func("dynCall_j").ok(); let dyn_call_ji = instance.func("dynCall_ji").ok(); let dyn_call_jii = instance.func("dynCall_jii").ok(); @@ -188,7 +202,9 @@ impl<'a> EmscriptenData<'a> { let dyn_call_viji = instance.func("dynCall_viji").ok(); let dyn_call_vijiii = instance.func("dynCall_vijiii").ok(); let dyn_call_vijj = instance.func("dynCall_vijj").ok(); + let dyn_call_viid = instance.func("dynCall_viid").ok(); let dyn_call_viidii = instance.func("dynCall_viidii").ok(); + let dyn_call_viidddddddd = instance.func("dynCall_viidddddddd").ok(); let stack_save = instance.func("stackSave").ok(); let stack_restore = instance.func("stackRestore").ok(); @@ -205,6 +221,7 @@ impl<'a> EmscriptenData<'a> { dyn_call_ii, dyn_call_iii, dyn_call_iiii, + dyn_call_iifi, dyn_call_v, dyn_call_vi, dyn_call_vii, @@ -218,7 +235,9 @@ impl<'a> EmscriptenData<'a> { dyn_call_iiiiii, dyn_call_iiiiiii, dyn_call_iiiiiiii, + dyn_call_iiiiiiiii, dyn_call_iiiiiiiiii, + dyn_call_iiiiiiiiiii, dyn_call_vd, dyn_call_viiiii, dyn_call_viiiiii, @@ -226,7 +245,9 @@ impl<'a> EmscriptenData<'a> { dyn_call_viiiiiiii, dyn_call_viiiiiiiii, dyn_call_viiiiiiiiii, + dyn_call_iij, dyn_call_iiji, + dyn_call_iiijj, dyn_call_j, dyn_call_ji, dyn_call_jii, @@ -244,7 +265,9 @@ impl<'a> EmscriptenData<'a> { dyn_call_viji, dyn_call_vijiii, dyn_call_vijj, + dyn_call_viid, dyn_call_viidii, + dyn_call_viidddddddd, temp_ret_0: 0, stack_save, @@ -506,6 +529,7 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject "_getpagesize" => func!(crate::env::_getpagesize), "_sysconf" => func!(crate::env::_sysconf), "_getaddrinfo" => func!(crate::env::_getaddrinfo), + "_times" => func!(crate::env::_times), // Syscalls "___syscall1" => func!(crate::syscalls::___syscall1), @@ -657,6 +681,8 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject "_llvm_log2_f32" => func!(crate::math::_llvm_log2_f64), "_llvm_sin_f64" => func!(crate::math::_llvm_sin_f64), "_llvm_cos_f64" => func!(crate::math::_llvm_cos_f64), + "_llvm_exp2_f32" => func!(crate::math::_llvm_exp2_f32), + "_llvm_exp2_f64" => func!(crate::math::_llvm_exp2_f64), "_emscripten_random" => func!(crate::math::_emscripten_random), // Jump @@ -681,6 +707,7 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject "invoke_ii" => func!(crate::emscripten_target::invoke_ii), "invoke_iii" => func!(crate::emscripten_target::invoke_iii), "invoke_iiii" => func!(crate::emscripten_target::invoke_iiii), + "invoke_iifi" => func!(crate::emscripten_target::invoke_iifi), "invoke_v" => func!(crate::emscripten_target::invoke_v), "invoke_vi" => func!(crate::emscripten_target::invoke_vi), "invoke_vj" => func!(crate::emscripten_target::invoke_vj), @@ -727,7 +754,9 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject "invoke_iiiiii" => func!(crate::emscripten_target::invoke_iiiiii), "invoke_iiiiiii" => func!(crate::emscripten_target::invoke_iiiiiii), "invoke_iiiiiiii" => func!(crate::emscripten_target::invoke_iiiiiiii), + "invoke_iiiiiiiii" => func!(crate::emscripten_target::invoke_iiiiiiiii), "invoke_iiiiiiiiii" => func!(crate::emscripten_target::invoke_iiiiiiiiii), + "invoke_iiiiiiiiiii" => func!(crate::emscripten_target::invoke_iiiiiiiiiii), "invoke_vd" => func!(crate::emscripten_target::invoke_vd), "invoke_viiiii" => func!(crate::emscripten_target::invoke_viiiii), "invoke_viiiiii" => func!(crate::emscripten_target::invoke_viiiiii), @@ -736,7 +765,9 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject "invoke_viiiiiiiii" => func!(crate::emscripten_target::invoke_viiiiiiiii), "invoke_viiiiiiiii" => func!(crate::emscripten_target::invoke_viiiiiiiii), "invoke_viiiiiiiiii" => func!(crate::emscripten_target::invoke_viiiiiiiiii), + "invoke_iij" => func!(crate::emscripten_target::invoke_iij), "invoke_iiji" => func!(crate::emscripten_target::invoke_iiji), + "invoke_iiijj" => func!(crate::emscripten_target::invoke_iiijj), "invoke_j" => func!(crate::emscripten_target::invoke_j), "invoke_ji" => func!(crate::emscripten_target::invoke_ji), "invoke_jii" => func!(crate::emscripten_target::invoke_jii), @@ -753,7 +784,9 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject "invoke_viji" => func!(crate::emscripten_target::invoke_viji), "invoke_vijiii" => func!(crate::emscripten_target::invoke_vijiii), "invoke_vijj" => func!(crate::emscripten_target::invoke_vijj), + "invoke_viid" => func!(crate::emscripten_target::invoke_viid), "invoke_viidii" => func!(crate::emscripten_target::invoke_viidii), + "invoke_viidddddddd" => func!(crate::emscripten_target::invoke_viidddddddd), }; for null_func_name in globals.null_func_names.iter() { diff --git a/lib/emscripten/src/math.rs b/lib/emscripten/src/math.rs index 704a58854..e0eb10c7d 100644 --- a/lib/emscripten/src/math.rs +++ b/lib/emscripten/src/math.rs @@ -34,6 +34,16 @@ pub fn _llvm_log2_f32(_ctx: &mut Ctx, _value: f64) -> f64 { -1.0 } +pub fn _llvm_exp2_f32(_ctx: &mut Ctx, value: f32) -> f32 { + debug!("emscripten::_llvm_exp2_f32"); + 2f32.powf(value) +} + +pub fn _llvm_exp2_f64(_ctx: &mut Ctx, value: f64) -> f64 { + debug!("emscripten::_llvm_exp2_f64"); + 2f64.powf(value) +} + pub fn _emscripten_random(_ctx: &mut Ctx) -> f64 { debug!("emscripten::_emscripten_random"); -1.0 From 4dd64ed72e3e5bee94e2f75675d7d3ccb152d62d Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Thu, 18 Apr 2019 10:00:15 -0700 Subject: [PATCH 254/413] Remove UserTrapper trait --- lib/clif-backend/src/signal/mod.rs | 16 ++++------------ lib/llvm-backend/src/backend.rs | 10 +--------- lib/runtime-core/src/backend.rs | 6 +----- lib/runtime-core/src/module.rs | 5 ----- lib/runtime-core/src/typed_func.rs | 13 +------------ lib/runtime-core/src/vm.rs | 2 +- lib/runtime/examples/call.rs | 4 ++-- lib/singlepass-backend/src/codegen_x64.rs | 16 ++++------------ 8 files changed, 14 insertions(+), 58 deletions(-) diff --git a/lib/clif-backend/src/signal/mod.rs b/lib/clif-backend/src/signal/mod.rs index f5fcf5d52..8081f7cf8 100644 --- a/lib/clif-backend/src/signal/mod.rs +++ b/lib/clif-backend/src/signal/mod.rs @@ -4,7 +4,7 @@ use crate::trampoline::Trampolines; use libc::c_void; use std::{any::Any, cell::Cell, ptr::NonNull, sync::Arc}; use wasmer_runtime_core::{ - backend::{RunnableModule, UserTrapper}, + backend::RunnableModule, module::ModuleInfo, typed_func::{Wasm, WasmTrapInfo}, types::{LocalFuncIndex, SigIndex}, @@ -27,15 +27,6 @@ thread_local! { pub static TRAP_EARLY_DATA: Cell>> = Cell::new(None); } -pub struct Trapper; - -impl UserTrapper for Trapper { - unsafe fn do_early_trap(&self, data: Box) -> ! { - TRAP_EARLY_DATA.with(|cell| cell.set(Some(data))); - trigger_trap() - } -} - pub struct Caller { handler_data: HandlerData, trampolines: Arc, @@ -101,8 +92,9 @@ impl RunnableModule for Caller { }) } - fn get_early_trapper(&self) -> Box { - Box::new(Trapper) + unsafe fn do_early_trap(&self, data: Box) -> ! { + TRAP_EARLY_DATA.with(|cell| cell.set(Some(data))); + trigger_trap() } } diff --git a/lib/llvm-backend/src/backend.rs b/lib/llvm-backend/src/backend.rs index 172d66726..0baaeacff 100644 --- a/lib/llvm-backend/src/backend.rs +++ b/lib/llvm-backend/src/backend.rs @@ -18,7 +18,7 @@ use std::{ sync::Once, }; use wasmer_runtime_core::{ - backend::{RunnableModule, UserTrapper}, + backend::RunnableModule, module::ModuleInfo, structures::TypedIndex, typed_func::{Wasm, WasmTrapInfo}, @@ -317,14 +317,6 @@ impl RunnableModule for LLVMBackend { Some(unsafe { Wasm::from_raw_parts(trampoline, invoke_trampoline, None) }) } - fn get_early_trapper(&self) -> Box { - Box::new(Placeholder) - } -} - -struct Placeholder; - -impl UserTrapper for Placeholder { unsafe fn do_early_trap(&self, data: Box) -> ! { throw_any(Box::leak(data)) } diff --git a/lib/runtime-core/src/backend.rs b/lib/runtime-core/src/backend.rs index c6ecffcb0..48c7e1c5f 100644 --- a/lib/runtime-core/src/backend.rs +++ b/lib/runtime-core/src/backend.rs @@ -65,10 +65,6 @@ pub trait Compiler { unsafe fn from_cache(&self, cache: Artifact, _: Token) -> Result; } -pub trait UserTrapper { - unsafe fn do_early_trap(&self, data: Box) -> !; -} - pub trait RunnableModule: Send + Sync { /// This returns a pointer to the function designated by the `local_func_index` /// parameter. @@ -83,7 +79,7 @@ pub trait RunnableModule: Send + Sync { /// signature and an invoke function that can call the trampoline. fn get_trampoline(&self, info: &ModuleInfo, sig_index: SigIndex) -> Option; - fn get_early_trapper(&self) -> Box; + unsafe fn do_early_trap(&self, data: Box) -> !; } pub trait CacheGen: Send + Sync { diff --git a/lib/runtime-core/src/module.rs b/lib/runtime-core/src/module.rs index 9e9e93052..40cde6fbf 100644 --- a/lib/runtime-core/src/module.rs +++ b/lib/runtime-core/src/module.rs @@ -4,7 +4,6 @@ use crate::{ error, import::ImportObject, structures::{Map, TypedIndex}, - typed_func::EARLY_TRAPPER, types::{ FuncIndex, FuncSig, GlobalDescriptor, GlobalIndex, GlobalInit, ImportedFuncIndex, ImportedGlobalIndex, ImportedMemoryIndex, ImportedTableIndex, Initializer, @@ -92,10 +91,6 @@ pub struct Module { impl Module { pub(crate) fn new(inner: Arc) -> Self { - unsafe { - EARLY_TRAPPER - .with(|ucell| *ucell.get() = Some(inner.runnable_module.get_early_trapper())); - } Module { inner } } diff --git a/lib/runtime-core/src/typed_func.rs b/lib/runtime-core/src/typed_func.rs index 5e38db628..59c610773 100644 --- a/lib/runtime-core/src/typed_func.rs +++ b/lib/runtime-core/src/typed_func.rs @@ -1,5 +1,4 @@ use crate::{ - backend::UserTrapper, error::RuntimeError, export::{Context, Export, FuncPointer}, import::IsExport, @@ -8,7 +7,6 @@ use crate::{ }; use std::{ any::Any, - cell::UnsafeCell, ffi::c_void, fmt, marker::PhantomData, @@ -17,10 +15,6 @@ use std::{ sync::Arc, }; -thread_local! { - pub static EARLY_TRAPPER: UnsafeCell>> = UnsafeCell::new(None); -} - #[repr(C)] pub enum WasmTrapInfo { Unreachable = 0, @@ -354,12 +348,7 @@ macro_rules! impl_traits { }; unsafe { - if let Some(early_trapper) = &*EARLY_TRAPPER.with(|ucell| ucell.get()) { - early_trapper.do_early_trap(err) - } else { - eprintln!("panic handling not setup"); - std::process::exit(1) - } + (&*ctx.module).runnable_module.do_early_trap(err) } } diff --git a/lib/runtime-core/src/vm.rs b/lib/runtime-core/src/vm.rs index 1d955d40d..0c9676358 100644 --- a/lib/runtime-core/src/vm.rs +++ b/lib/runtime-core/src/vm.rs @@ -22,7 +22,7 @@ pub struct Ctx { local_backing: *mut LocalBacking, import_backing: *mut ImportBacking, - module: *const ModuleInner, + pub(crate) module: *const ModuleInner, pub data: *mut c_void, pub data_finalizer: Option, diff --git a/lib/runtime/examples/call.rs b/lib/runtime/examples/call.rs index 894fa4ab1..12f149062 100644 --- a/lib/runtime/examples/call.rs +++ b/lib/runtime/examples/call.rs @@ -59,9 +59,9 @@ fn main() -> Result<(), error::Error> { }, })?; - let foo = instance.dyn_func("dbz")?; + let foo: Func<(), i32> = instance.func("dbz")?; - let result = foo.call(&[]); + let result = foo.call(); println!("result: {:?}", result); diff --git a/lib/singlepass-backend/src/codegen_x64.rs b/lib/singlepass-backend/src/codegen_x64.rs index 8c6a18857..10f9f16af 100644 --- a/lib/singlepass-backend/src/codegen_x64.rs +++ b/lib/singlepass-backend/src/codegen_x64.rs @@ -11,7 +11,7 @@ use smallvec::SmallVec; use std::ptr::NonNull; use std::{any::Any, collections::HashMap, sync::Arc}; use wasmer_runtime_core::{ - backend::{RunnableModule, UserTrapper}, + backend::RunnableModule, memory::MemoryType, module::ModuleInfo, structures::{Map, TypedIndex}, @@ -249,17 +249,9 @@ impl RunnableModule for X64ExecutionContext { }) } - fn get_early_trapper(&self) -> Box { - pub struct Trapper; - - impl UserTrapper for Trapper { - unsafe fn do_early_trap(&self, data: Box) -> ! { - protect_unix::TRAP_EARLY_DATA.with(|x| x.set(Some(data))); - protect_unix::trigger_trap(); - } - } - - Box::new(Trapper) + unsafe fn do_early_trap(&self, data: Box) -> ! { + protect_unix::TRAP_EARLY_DATA.with(|x| x.set(Some(data))); + protect_unix::trigger_trap(); } } From f0e0255b3ffc62bddedd1e61c3e61499d3fdcee4 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Thu, 18 Apr 2019 10:08:17 -0700 Subject: [PATCH 255/413] Fix vm test --- lib/runtime-core/src/vm.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/runtime-core/src/vm.rs b/lib/runtime-core/src/vm.rs index 0c9676358..344d2e64c 100644 --- a/lib/runtime-core/src/vm.rs +++ b/lib/runtime-core/src/vm.rs @@ -563,7 +563,7 @@ mod vm_ctx_tests { fn get_trampoline(&self, _module: &ModuleInfo, _sig_index: SigIndex) -> Option { unimplemented!() } - fn get_early_trapper(&self) -> Box { + unsafe fn do_early_trap(&self, _: Box) -> ! { unimplemented!() } } From 6279dd8e82385c9a7390cf59ea260b0ab81fa177 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Thu, 18 Apr 2019 10:14:25 -0700 Subject: [PATCH 256/413] Fix test again, whoops --- lib/runtime-core/src/vm.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/runtime-core/src/vm.rs b/lib/runtime-core/src/vm.rs index 344d2e64c..6a408cd04 100644 --- a/lib/runtime-core/src/vm.rs +++ b/lib/runtime-core/src/vm.rs @@ -544,11 +544,12 @@ mod vm_ctx_tests { fn generate_module() -> ModuleInner { use super::Func; - use crate::backend::{sys::Memory, Backend, CacheGen, RunnableModule, UserTrapper}; + use crate::backend::{sys::Memory, Backend, CacheGen, RunnableModule}; use crate::cache::Error as CacheError; use crate::typed_func::Wasm; use crate::types::{LocalFuncIndex, SigIndex}; use hashbrown::HashMap; + use std::any::Any; use std::ptr::NonNull; struct Placeholder; impl RunnableModule for Placeholder { From 016ef1c7b94895b0caee94c9f7690a53a735f4d0 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Thu, 18 Apr 2019 10:16:11 -0700 Subject: [PATCH 257/413] Add changelog item --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c283e930..de55c4233 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ All PRs to the Wasmer repository must add to this file. Blocks of changes will separated by version increments. ## **[Unreleased]** +- [#000]() Remove `UserTrapper` trait to fix [#365](https://github.com/wasmerio/wasmer/issues/365). - [#348](https://github.com/wasmerio/wasmer/pull/348) Refactor internal runtime ↔️ backend abstraction. - [#355](https://github.com/wasmerio/wasmer/pull/355) Misc changes to `Cargo.toml`s for publishing - [#352](https://github.com/wasmerio/wasmer/pull/352) Bump version numbers to 0.3.0 From 36d73d1b48856b99c4caf991ec1a79d1c5d107b6 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Thu, 18 Apr 2019 10:18:36 -0700 Subject: [PATCH 258/413] Update changelog to point to pr --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index de55c4233..2545d0926 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All PRs to the Wasmer repository must add to this file. Blocks of changes will separated by version increments. ## **[Unreleased]** -- [#000]() Remove `UserTrapper` trait to fix [#365](https://github.com/wasmerio/wasmer/issues/365). +- [#366](https://github.com/wasmerio/wasmer/pull/366) Remove `UserTrapper` trait to fix [#365](https://github.com/wasmerio/wasmer/issues/365). - [#348](https://github.com/wasmerio/wasmer/pull/348) Refactor internal runtime ↔️ backend abstraction. - [#355](https://github.com/wasmerio/wasmer/pull/355) Misc changes to `Cargo.toml`s for publishing - [#352](https://github.com/wasmerio/wasmer/pull/352) Bump version numbers to 0.3.0 From ed651055f3d55ead1558096f1a743130df893305 Mon Sep 17 00:00:00 2001 From: Syrus Date: Thu, 18 Apr 2019 13:01:55 -0700 Subject: [PATCH 259/413] Fixed singlepass make release --- Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 497961204..18b5e080f 100644 --- a/Makefile +++ b/Makefile @@ -63,13 +63,13 @@ test-emscripten-singlepass: cargo test --manifest-path lib/emscripten/Cargo.toml --features singlepass -- --test-threads=1 $(runargs) singlepass-debug-release: - cargo +nightly build --features "singlepass debug" --release + cargo +nightly build --features "backend:singlepass debug" --release singlepass-release: - cargo +nightly build --features "singlepass" --release + cargo +nightly build --features "backend:singlepass" --release singlepass-build: - cargo +nightly build --features "singlepass debug" + cargo +nightly build --features "backend:singlepass debug" release: # If you are in OS-X, you will need mingw-w64 for cross compiling to windows From 19e830d25a193dfbdc190e4d187f22f9dd458217 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Thu, 18 Apr 2019 17:48:14 -0700 Subject: [PATCH 260/413] fix memory access in WasmPtr --- lib/wasi/src/ptr.rs | 9 ++++--- lib/wasi/src/state.rs | 47 ++++++++++++++++++++++++++++++------ lib/wasi/src/syscalls/mod.rs | 42 ++++++++++++++++++++------------ src/bin/wasmer.rs | 1 - 4 files changed, 71 insertions(+), 28 deletions(-) diff --git a/lib/wasi/src/ptr.rs b/lib/wasi/src/ptr.rs index da892d1bf..32c19655e 100644 --- a/lib/wasi/src/ptr.rs +++ b/lib/wasi/src/ptr.rs @@ -36,10 +36,11 @@ impl WasmPtr { return Err(__WASI_EFAULT); } unsafe { - let cell_ptr = memory - .view::() - .get_unchecked((self.offset() as usize) / mem::size_of::()) - as *const _; + let aligner = |ptr: usize, align: usize| ptr & !(align - 1); + let cell_ptr = aligner( + memory.view::().as_ptr().add(self.offset as usize) as usize, + mem::align_of::(), + ) as *const Cell; Ok(&*cell_ptr) } } diff --git a/lib/wasi/src/state.rs b/lib/wasi/src/state.rs index 43b2c9399..6cb684b85 100644 --- a/lib/wasi/src/state.rs +++ b/lib/wasi/src/state.rs @@ -16,6 +16,7 @@ use zbox::{init_env as zbox_init_env, FileType, OpenOptions, Repo, RepoOpener}; pub const MAX_SYMLINKS: usize = 100; +#[derive(Debug)] pub enum WasiFile { ZboxFile(zbox::File), HostFile(fs::File), @@ -90,6 +91,7 @@ impl Seek for WasiFile { } } +#[derive(Debug)] pub struct InodeVal { pub stat: __wasi_filestat_t, pub is_preopened: bool, @@ -98,6 +100,7 @@ pub struct InodeVal { } #[allow(dead_code)] +#[derive(Debug)] pub enum Kind { File { handle: WasiFile, @@ -155,9 +158,13 @@ impl WasiFs { for file in preopened_files { debug!("Attempting to preopen {}", &file); // TODO: think about this - let default_rights = 0x1FFFFFFF; - let cur_file: fs::File = fs::File::open(file).expect("Could not find file"); - let kind = if cur_file.metadata().unwrap().is_dir() { + let default_rights = 0x1FFFFFFF; // all rights + let cur_file: fs::File = fs::OpenOptions::new() + .read(true) + .open(file) + .expect("Could not find file"); + let cur_file_metadata = cur_file.metadata().unwrap(); + let kind = if cur_file_metadata.is_dir() { // it seems bad to open every file recursively; can do it lazily though Kind::Dir { handle: WasiFile::HostFile(cur_file), @@ -173,13 +180,36 @@ impl WasiFs { )); }; let inode_val = InodeVal { - stat: __wasi_filestat_t::default(), + stat: __wasi_filestat_t { + st_filetype: __WASI_FILETYPE_DIRECTORY, + st_size: cur_file_metadata.len(), + st_atim: cur_file_metadata + .accessed() + .ok() + .and_then(|sys_time| sys_time.duration_since(SystemTime::UNIX_EPOCH).ok()) + .map(|duration| duration.as_nanos() as u64) + .unwrap_or(0), + st_ctim: cur_file_metadata + .created() + .ok() + .and_then(|sys_time| sys_time.duration_since(SystemTime::UNIX_EPOCH).ok()) + .map(|duration| duration.as_nanos() as u64) + .unwrap_or(0), + st_mtim: cur_file_metadata + .modified() + .ok() + .and_then(|sys_time| sys_time.duration_since(SystemTime::UNIX_EPOCH).ok()) + .map(|duration| duration.as_nanos() as u64) + .unwrap_or(0), + ..__wasi_filestat_t::default() + }, is_preopened: true, // this is incorrect name: file.clone(), kind, }; let inode = wasi_fs.inodes.insert(inode_val); + wasi_fs.inodes[inode].stat.st_ino = wasi_fs.inode_counter.get(); wasi_fs .create_fd(default_rights, default_rights, 0, inode) .expect("Could not open fd"); @@ -304,7 +334,7 @@ impl WasiFs { debug!("fdstat: {:?}", fd); - dbg!(Ok(__wasi_fdstat_t { + Ok(__wasi_fdstat_t { fs_filetype: match self.inodes[fd.inode].kind { Kind::File { .. } => __WASI_FILETYPE_REGULAR_FILE, Kind::Dir { .. } => __WASI_FILETYPE_DIRECTORY, @@ -313,8 +343,8 @@ impl WasiFs { }, fs_flags: fd.flags, fs_rights_base: fd.rights, - fs_rights_inheriting: fd.rights, // TODO(lachlan): Is this right? - })) + fs_rights_inheriting: fd.rights_inheriting, // TODO(lachlan): Is this right? + }) } pub fn prestat_fd(&self, fd: __wasi_fd_t) -> Result<__wasi_prestat_t, __wasi_errno_t> { @@ -327,7 +357,8 @@ impl WasiFs { Ok(__wasi_prestat_t { pr_type: __WASI_PREOPENTYPE_DIR, u: PrestatEnum::Dir { - pr_name_len: inode_val.name.len() as u32, + // REVIEW: + pr_name_len: inode_val.name.len() as u32 + 1, } .untagged(), }) diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 45b626346..2416b3a7a 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -324,15 +324,18 @@ pub fn fd_datasync(ctx: &mut Ctx, fd: __wasi_fd_t) -> __wasi_errno_t { pub fn fd_fdstat_get( ctx: &mut Ctx, fd: __wasi_fd_t, - buf: WasmPtr<__wasi_fdstat_t>, + buf_ptr: WasmPtr<__wasi_fdstat_t>, ) -> __wasi_errno_t { - debug!("wasi::fd_fdstat_get: fd={}", fd); + debug!( + "wasi::fd_fdstat_get: fd={}, buf_ptr={}", + fd, + buf_ptr.offset() + ); let mut state = get_wasi_state(ctx); let memory = ctx.memory(0); - let stat = wasi_try!(state.fs.fdstat(fd)); + let buf = wasi_try!(buf_ptr.deref(memory)); - let buf = wasi_try!(buf.deref(memory)); buf.set(stat); __WASI_ESUCCESS @@ -543,9 +546,19 @@ pub fn fd_prestat_dir_name( if let Kind::Dir { .. } = inode_val.kind { // TODO: verify this: null termination, etc if inode_val.name.len() <= path_len as usize { - for (i, c) in inode_val.name.bytes().enumerate() { + let mut i = 0; + for c in inode_val.name.bytes() { path_chars[i].set(c); + i += 1 } + path_chars[i].set(0); + + debug!( + "=> result: \"{}\"", + ::std::str::from_utf8(unsafe { &*(&path_chars[..] as *const [_] as *const [u8]) }) + .unwrap() + ); + __WASI_ESUCCESS } else { __WASI_EOVERFLOW @@ -669,13 +682,10 @@ pub fn fd_read( for iov in iovs_arr_cell { let iov_inner = iov.get(); - let bytes = iov_inner.buf.deref(memory, 0, dbg!(iov_inner.buf_len))?; + let bytes = iov_inner.buf.deref(memory, 0, iov_inner.buf_len)?; let mut raw_bytes: &mut [u8] = unsafe { &mut *(bytes as *const [_] as *mut [_] as *mut [u8]) }; - bytes_read += dbg!(reader.read(raw_bytes).map_err(|e| { - dbg!(e); - __WASI_EIO - })? as u32); + bytes_read += reader.read(raw_bytes).map_err(|e| __WASI_EIO)? as u32; } Ok(bytes_read) } @@ -722,7 +732,7 @@ pub fn fd_read( } }; - nread_cell.set(dbg!(bytes_read)); + nread_cell.set(bytes_read); __WASI_ESUCCESS } @@ -819,7 +829,7 @@ pub fn fd_seek( // TODO: handle case if fd is a dir? match whence { - __WASI_WHENCE_CUR => fd_entry.offset = (dbg!(fd_entry.offset) as i64 + offset) as u64, + __WASI_WHENCE_CUR => fd_entry.offset = (fd_entry.offset as i64 + offset) as u64, __WASI_WHENCE_END => unimplemented!(), __WASI_WHENCE_SET => fd_entry.offset = offset as u64, _ => return __WASI_EINVAL, @@ -838,7 +848,7 @@ pub fn fd_seek( /// Errors: /// TODO: figure out which errors this should return /// - `__WASI_EPERM` -/// - `__WAIS_ENOTCAPABLE` +/// - `__WASI_ENOTCAPABLE` pub fn fd_sync(ctx: &mut Ctx, fd: __wasi_fd_t) -> __wasi_errno_t { debug!("wasi::fd_sync"); // TODO: check __WASI_RIGHT_FD_SYNC @@ -949,7 +959,7 @@ pub fn fd_write( } }; - nwritten_cell.set(dbg!(bytes_written)); + nwritten_cell.set(bytes_written); __WASI_ESUCCESS } @@ -1042,7 +1052,9 @@ pub fn path_filestat_get( return __WASI_ELOOP; } } - _ => return __WASI_ENOTDIR, + _ => { + return __WASI_ENOTDIR; + } } } } diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index 32692a59e..54f588405 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -123,7 +123,6 @@ impl FromStr for Backend { _ => Err(format!("The backend {} doesn't exist", s)), } } ->>>>>>> origin/master } #[derive(Debug, StructOpt)] From c75f055b0971c8d0fa2553459d07313ce104ca33 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 19 Apr 2019 09:25:29 -0700 Subject: [PATCH 261/413] disable ZFS again; clean up simple-path's control-flow-path in path_open --- lib/wasi/src/state.rs | 18 ++--- lib/wasi/src/syscalls/mod.rs | 134 ++++++++++++++--------------------- 2 files changed, 61 insertions(+), 91 deletions(-) diff --git a/lib/wasi/src/state.rs b/lib/wasi/src/state.rs index 6cb684b85..72f31db77 100644 --- a/lib/wasi/src/state.rs +++ b/lib/wasi/src/state.rs @@ -128,7 +128,7 @@ pub struct Fd { } pub struct WasiFs { - pub repo: Repo, + //pub repo: Repo, pub name_map: HashMap, pub inodes: Arena, pub fd_map: HashMap, @@ -141,14 +141,14 @@ impl WasiFs { debug!("wasi::fs::init"); zbox_init_env(); debug!("wasi::fs::repo"); - let repo = RepoOpener::new() - .create(true) - .open("mem://wasmer-test-fs", "") - .map_err(|e| e.to_string())?; + /*let repo = RepoOpener::new() + .create(true) + .open("mem://wasmer-test-fs", "") + .map_err(|e| e.to_string())?;*/ debug!("wasi::fs::inodes"); let inodes = Arena::new(); let mut wasi_fs = Self { - repo: repo, + //repo: repo, name_map: HashMap::new(), inodes: inodes, fd_map: HashMap::new(), @@ -165,15 +165,11 @@ impl WasiFs { .expect("Could not find file"); let cur_file_metadata = cur_file.metadata().unwrap(); let kind = if cur_file_metadata.is_dir() { - // it seems bad to open every file recursively; can do it lazily though Kind::Dir { handle: WasiFile::HostFile(cur_file), entries: Default::default(), } } else { - /*Kind::File { - handle: WasiFile::HostFile(cur_file), - }*/ return Err(format!( "WASI only supports pre-opened directories right now; found \"{}\"", file @@ -204,7 +200,7 @@ impl WasiFs { ..__wasi_filestat_t::default() }, is_preopened: true, - // this is incorrect + // TODO: handle nested paths name: file.clone(), kind, }; diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 2416b3a7a..672370a0c 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -1166,13 +1166,11 @@ pub fn path_open( ) -> __wasi_errno_t { debug!("wasi::path_open"); let memory = ctx.memory(0); - if path_len > 1024 /* TODO: find actual upper bound on name size (also this is a path, not a name :think-fish:) */ - { + if path_len > 1024 * 1024 { return __WASI_ENAMETOOLONG; } - // check for __WASI_RIGHT_PATH_OPEN somewhere, probably via dirfd let fd_cell = wasi_try!(fd.deref(memory)); let path_cells = wasi_try!(path.deref(memory, 0, path_len)); let state = get_wasi_state(ctx); @@ -1185,26 +1183,27 @@ pub fn path_open( let working_dir = wasi_try!(state.fs.fd_map.get(&dirfd).ok_or(__WASI_EBADF)); - // ASSUMPTION: open rights cascade down + // ASSUMPTION: open rights apply recursively if !has_rights(working_dir.rights, __WASI_RIGHT_PATH_OPEN) { return __WASI_EACCES; } - let path_vec = + let path_string = wasi_try!( ::std::str::from_utf8(unsafe { &*(path_cells as *const [_] as *const [u8]) }) .map_err(|_| __WASI_EINVAL) - ) + ); + let path_vec = path_string .split('/') .map(|str| str.to_string()) .collect::>(); + debug!("Path vec: {:#?}", path_vec); if path_vec.is_empty() { return __WASI_EINVAL; } let working_dir_inode = &mut state.fs.inodes[working_dir.inode]; - let mut cur_dir = working_dir; // TODO: refactor single path segment logic out and do traversing before @@ -1221,7 +1220,9 @@ pub fn path_open( if o_flags & __WASI_O_DIRECTORY != 0 { match &child_inode_val.kind { Kind::Dir { .. } => (), - Kind::Symlink { .. } => unimplemented!(), + Kind::Symlink { .. } => { + unimplemented!("Symlinks not yet supported in path_open") + } _ => return __WASI_ENOTDIR, } } @@ -1230,87 +1231,60 @@ pub fn path_open( .fs .create_fd(fs_rights_base, fs_rights_inheriting, fs_flags, child)) } else { - // entry does not exist in parent directory - // check to see if we should create it - if o_flags & __WASI_O_CREAT != 0 { - // REVIEW: the code in this branch was written while very tired - // insert in to directory and set values - //entries.insert(path_segment[0], ) + // if entry does not exist in parent directory, try to lazily + // load it; possibly creating or truncating it if flags set + let real_opened_file = { + let mut open_options = std::fs::OpenOptions::new(); + let open_options = open_options.read(true).write(true); + let open_options = if o_flags & __WASI_O_CREAT != 0 { + debug!( + "File {} may be created when opened if it does not exist", + &path_string + ); + open_options.create(true) + } else { + open_options + }; + let open_options = if o_flags & __WASI_O_TRUNC != 0 { + debug!("File {} will be truncated when opened", &path_string); + open_options.truncate(true) + } else { + open_options + }; + let real_open_file = + wasi_try!(open_options.open(&path_vec[0]).map_err(|_| __WASI_EIO)); + debug!("Opening host file {}", &path_string); - let real_opened_file = wasi_try!(::std::fs::OpenOptions::new() - .read(true) - .write(true) - .create(true) - .open(&path_vec[0]) - .map_err(|_| __WASI_EIO)); - debug!("Creating host file {}", &path_vec[0]); - let new_inode = state.fs.inodes.insert(InodeVal { - stat: __wasi_filestat_t::default(), - is_preopened: false, - name: path_vec[0].clone(), - kind: Kind::File { - handle: WasiFile::HostFile(real_opened_file), - }, - }); - // reborrow - if let Kind::Dir { entries, .. } = &mut state.fs.inodes[working_dir.inode].kind - { - entries.insert(path_vec[0].clone(), new_inode); - } - let new_fd = wasi_try!(state.fs.create_fd( - fs_rights_base, - fs_rights_inheriting, - fs_flags, - new_inode, - )); - - new_fd - - // TODO: technically this could just not be lazily loaded... - /*wasi_try!(state.fs.create_file_at_fd( - dirfd, - path_vec[0], + real_open_file + }; + // record lazily loaded or newly created fd + let new_inode = state.fs.inodes.insert(InodeVal { + stat: __wasi_filestat_t::default(), + is_preopened: false, + name: path_vec[0].clone(), + kind: Kind::File { + handle: WasiFile::HostFile(real_opened_file), + }, + }); + // reborrow to insert entry + if let Kind::Dir { entries, .. } = &mut state.fs.inodes[working_dir.inode].kind { + entries.insert(path_vec[0].clone(), new_inode); + } + let new_fd = wasi_try!(state.fs.create_fd( fs_rights_base, fs_rights_inheriting, - fs_flags - ));*/ - } else { - // attempt to load it - let real_opened_file = wasi_try!(::std::fs::OpenOptions::new() - .read(true) - .write(true) - .open(&path_vec[0]) - .map_err(|_| __WASI_ENOENT)); + fs_flags, + new_inode, + )); - debug!("Opening host file {}", &path_vec[0]); - let new_inode = state.fs.inodes.insert(InodeVal { - stat: __wasi_filestat_t::default(), - is_preopened: false, - name: path_vec[0].clone(), - kind: Kind::File { - handle: WasiFile::HostFile(real_opened_file), - }, - }); - // reborrow - if let Kind::Dir { entries, .. } = &mut state.fs.inodes[working_dir.inode].kind - { - entries.insert(path_vec[0].clone(), new_inode); - } - let new_fd = wasi_try!(state.fs.create_fd( - fs_rights_base, - fs_rights_inheriting, - fs_flags, - new_inode, - )); - - new_fd - } + new_fd } } else { - // working_dir is not a directory + // working_dir did not match on Kind::Dir return __WASI_ENOTDIR; } } else { + unimplemented!("Path_open is not implemented for anything other simple paths (i.e. file, not /path/to/file); this will be fixed soon -- if you're seeing this error message and it's not 2019/04/19 in America, pull from master and try again"); // traverse the pieces of the path // TODO: lots of testing on this for path_segment in &path_vec[..(path_vec.len() - 1)] { From 35f8d69d4ba956e10885b52d896c85e66ea6bf39 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 19 Apr 2019 09:26:47 -0700 Subject: [PATCH 262/413] fix typo; thanks Kerollmops! --- src/bin/wasmer.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index 54f588405..26ed97fec 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -79,7 +79,7 @@ struct Run { )] backend: Backend, - /// Emscripten symbol ma>p + /// Emscripten symbol map #[structopt(long = "em-symbol-map", parse(from_os_str), group = "emscripten")] em_symbol_map: Option, From 5e504b77cd27eee444bd9b69f10872e56df7b667 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 19 Apr 2019 12:48:29 -0700 Subject: [PATCH 263/413] add support for more complex paths in `path_open` --- lib/wasi/src/state.rs | 56 ++++++-- lib/wasi/src/syscalls/mod.rs | 251 +++++++++++++++++++++-------------- src/bin/wasmer.rs | 8 +- 3 files changed, 199 insertions(+), 116 deletions(-) diff --git a/lib/wasi/src/state.rs b/lib/wasi/src/state.rs index 72f31db77..5b3b5e415 100644 --- a/lib/wasi/src/state.rs +++ b/lib/wasi/src/state.rs @@ -99,6 +99,49 @@ pub struct InodeVal { pub kind: Kind, } +impl InodeVal { + // TODO: clean this up + pub fn from_file_metadata( + metadata: &std::fs::Metadata, + name: String, + is_preopened: bool, + kind: Kind, + ) -> Self { + InodeVal { + stat: __wasi_filestat_t { + st_filetype: if metadata.is_dir() { + __WASI_FILETYPE_DIRECTORY + } else { + __WASI_FILETYPE_REGULAR_FILE + }, + st_size: metadata.len(), + st_atim: metadata + .accessed() + .ok() + .and_then(|sys_time| sys_time.duration_since(SystemTime::UNIX_EPOCH).ok()) + .map(|duration| duration.as_nanos() as u64) + .unwrap_or(0), + st_ctim: metadata + .created() + .ok() + .and_then(|sys_time| sys_time.duration_since(SystemTime::UNIX_EPOCH).ok()) + .map(|duration| duration.as_nanos() as u64) + .unwrap_or(0), + st_mtim: metadata + .modified() + .ok() + .and_then(|sys_time| sys_time.duration_since(SystemTime::UNIX_EPOCH).ok()) + .map(|duration| duration.as_nanos() as u64) + .unwrap_or(0), + ..__wasi_filestat_t::default() + }, + is_preopened, + name, + kind, + } + } +} + #[allow(dead_code)] #[derive(Debug)] pub enum Kind { @@ -409,19 +452,6 @@ impl WasiFs { ); Ok(idx) } - - /*pub fn create_file_at_fd( - &mut self, - parent: __wasi_fd_t, - path: String, - fs_rights_base: __wasi_rights_t, - fs_rights_inheriting: __wasi_rights_t, - fs_flags: fs_flags, - ) -> Result<__wasi_fd_t, __wasi_errno_t> { - - let fd = self.fd_map.get(&fd).ok_or(__WASI_EBADF)?; - Ok() - }*/ } pub struct WasiState<'a> { diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 672370a0c..455d210d4 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -685,12 +685,11 @@ pub fn fd_read( let bytes = iov_inner.buf.deref(memory, 0, iov_inner.buf_len)?; let mut raw_bytes: &mut [u8] = unsafe { &mut *(bytes as *const [_] as *mut [_] as *mut [u8]) }; - bytes_read += reader.read(raw_bytes).map_err(|e| __WASI_EIO)? as u32; + bytes_read += reader.read(raw_bytes).map_err(|_| __WASI_EIO)? as u32; } Ok(bytes_read) } - debug!("think-fish"); let bytes_read = match fd { 0 => { let stdin = io::stdin(); @@ -825,8 +824,6 @@ pub fn fd_seek( return __WASI_EACCES; } - debug!("Hmml"); - // TODO: handle case if fd is a dir? match whence { __WASI_WHENCE_CUR => fd_entry.offset = (fd_entry.offset as i64 + offset) as u64, @@ -1190,119 +1187,175 @@ pub fn path_open( let path_string = wasi_try!( - ::std::str::from_utf8(unsafe { &*(path_cells as *const [_] as *const [u8]) }) + std::str::from_utf8(unsafe { &*(path_cells as *const [_] as *const [u8]) }) .map_err(|_| __WASI_EINVAL) ); - let path_vec = path_string - .split('/') - .map(|str| str.to_string()) - .collect::>(); + let path = std::path::PathBuf::from(path_string); + let path_vec = wasi_try!(path + .components() + .map(|comp| { + comp.as_os_str() + .to_str() + .map(|inner_str| inner_str.to_string()) + .ok_or(__WASI_EINVAL) + }) + .collect::, __wasi_errno_t>>()); debug!("Path vec: {:#?}", path_vec); if path_vec.is_empty() { return __WASI_EINVAL; } - let working_dir_inode = &mut state.fs.inodes[working_dir.inode]; - let mut cur_dir = working_dir; + let mut cur_dir_inode = working_dir.inode; + let mut cumulative_path = std::path::PathBuf::from("."); - // TODO: refactor single path segment logic out and do traversing before - // as necessary - let out_fd = if path_vec.len() == 1 { - // just the file or dir - if let Kind::Dir { entries, .. } = &mut working_dir_inode.kind { - if let Some(child) = entries.get(&path_vec[0]).cloned() { - let child_inode_val = &state.fs.inodes[child]; - // early return based on flags - if o_flags & __WASI_O_EXCL != 0 { - return __WASI_EEXIST; - } - if o_flags & __WASI_O_DIRECTORY != 0 { - match &child_inode_val.kind { - Kind::Dir { .. } => (), - Kind::Symlink { .. } => { - unimplemented!("Symlinks not yet supported in path_open") - } - _ => return __WASI_ENOTDIR, - } - } - // do logic on child - wasi_try!(state - .fs - .create_fd(fs_rights_base, fs_rights_inheriting, fs_flags, child)) - } else { - // if entry does not exist in parent directory, try to lazily - // load it; possibly creating or truncating it if flags set - let real_opened_file = { - let mut open_options = std::fs::OpenOptions::new(); - let open_options = open_options.read(true).write(true); - let open_options = if o_flags & __WASI_O_CREAT != 0 { - debug!( - "File {} may be created when opened if it does not exist", - &path_string - ); - open_options.create(true) - } else { - open_options - }; - let open_options = if o_flags & __WASI_O_TRUNC != 0 { - debug!("File {} will be truncated when opened", &path_string); - open_options.truncate(true) - } else { - open_options - }; - let real_open_file = - wasi_try!(open_options.open(&path_vec[0]).map_err(|_| __WASI_EIO)); - debug!("Opening host file {}", &path_string); - - real_open_file - }; - // record lazily loaded or newly created fd - let new_inode = state.fs.inodes.insert(InodeVal { - stat: __wasi_filestat_t::default(), - is_preopened: false, - name: path_vec[0].clone(), - kind: Kind::File { - handle: WasiFile::HostFile(real_opened_file), - }, - }); - // reborrow to insert entry - if let Kind::Dir { entries, .. } = &mut state.fs.inodes[working_dir.inode].kind { - entries.insert(path_vec[0].clone(), new_inode); - } - let new_fd = wasi_try!(state.fs.create_fd( - fs_rights_base, - fs_rights_inheriting, - fs_flags, - new_inode, - )); - - new_fd - } - } else { - // working_dir did not match on Kind::Dir - return __WASI_ENOTDIR; - } - } else { - unimplemented!("Path_open is not implemented for anything other simple paths (i.e. file, not /path/to/file); this will be fixed soon -- if you're seeing this error message and it's not 2019/04/19 in America, pull from master and try again"); - // traverse the pieces of the path - // TODO: lots of testing on this + // traverse path + if path_vec.len() > 1 { for path_segment in &path_vec[..(path_vec.len() - 1)] { - match &working_dir_inode.kind { + match &state.fs.inodes[cur_dir_inode].kind { Kind::Dir { entries, .. } => { if let Some(child) = entries.get(path_segment) { - unimplemented!(); + let inode_val = *child; + cur_dir_inode = inode_val; } else { - // Is __WASI_O_FLAG_CREAT recursive? - // ASSUMPTION: it's not - return __WASI_EINVAL; + // attempt to lazily load or create + if path_segment == ".." { + unimplemented!( + "\"..\" in paths in `path_open` has not been implemented yet" + ); + } + // lazily load + cumulative_path.push(path_segment); + let mut open_options = std::fs::OpenOptions::new(); + let open_options = open_options.read(true); + // ASSUMPTION: __WASI_O_CREAT applies recursively + let open_options = if o_flags & __WASI_O_CREAT != 0 { + open_options.create(true) + } else { + open_options + }; + // TODO: handle __WASI_O_TRUNC on directories + + let cur_dir = wasi_try!(open_options + .open(&cumulative_path) + .map_err(|_| __WASI_EINVAL)); + + // TODO: refactor and reuse + let cur_file_metadata = cur_dir.metadata().unwrap(); + let kind = if cur_file_metadata.is_dir() { + Kind::Dir { + handle: WasiFile::HostFile(cur_dir), + entries: Default::default(), + } + } else { + return __WASI_ENOTDIR; + }; + let inode_val = InodeVal::from_file_metadata( + &cur_file_metadata, + path_segment.clone(), + false, + kind, + ); + + let new_inode = state.fs.inodes.insert(inode_val); + let inode_idx = state.fs.inode_counter.get(); + state.fs.inode_counter.replace(inode_idx + 1); + // reborrow to insert entry + if let Kind::Dir { entries, .. } = &mut state.fs.inodes[cur_dir_inode].kind + { + assert!(entries.insert(path_segment.clone(), new_inode).is_none()); + state.fs.inodes[new_inode].stat.st_ino = state.fs.inode_counter.get(); + cur_dir_inode = new_inode; + } } } - Kind::Symlink { .. } => unimplemented!(), + Kind::Symlink { .. } => unimplemented!("Symlinks not yet supported in `path_open`"), _ => return __WASI_ENOTDIR, } } - unimplemented!() + } + + let file_name = path_vec.last().unwrap(); + + debug!( + "Looking for file {} in directory {:#?}", + file_name, cumulative_path + ); + cumulative_path.push(file_name); + let file_path = cumulative_path; + + let out_fd = if let Kind::Dir { entries, .. } = &mut state.fs.inodes[cur_dir_inode].kind { + if let Some(child) = entries.get(file_name).cloned() { + let child_inode_val = &state.fs.inodes[child]; + // early return based on flags + if o_flags & __WASI_O_EXCL != 0 { + return __WASI_EEXIST; + } + if o_flags & __WASI_O_DIRECTORY != 0 { + match &child_inode_val.kind { + Kind::Dir { .. } => (), + Kind::Symlink { .. } => { + unimplemented!("Symlinks not yet supported in path_open") + } + _ => return __WASI_ENOTDIR, + } + } + // do logic on child + wasi_try!(state + .fs + .create_fd(fs_rights_base, fs_rights_inheriting, fs_flags, child)) + } else { + // if entry does not exist in parent directory, try to lazily + // load it; possibly creating or truncating it if flags set + let real_opened_file = { + let mut open_options = std::fs::OpenOptions::new(); + let open_options = open_options.read(true).write(true); + let open_options = if o_flags & __WASI_O_CREAT != 0 { + debug!( + "File {} may be created when opened if it does not exist", + &path_string + ); + open_options.create(true) + } else { + open_options + }; + let open_options = if o_flags & __WASI_O_TRUNC != 0 { + debug!("File {} will be truncated when opened", &path_string); + open_options.truncate(true) + } else { + open_options + }; + let real_open_file = + wasi_try!(open_options.open(&file_path).map_err(|_| __WASI_EIO)); + debug!("Opening host file {}", &path_string); + + real_open_file + }; + // record lazily loaded or newly created fd + let new_inode = state.fs.inodes.insert(InodeVal { + stat: __wasi_filestat_t::default(), + is_preopened: false, + name: file_name.clone(), + kind: Kind::File { + handle: WasiFile::HostFile(real_opened_file), + }, + }); + // reborrow to insert entry + if let Kind::Dir { entries, .. } = &mut state.fs.inodes[working_dir.inode].kind { + entries.insert(file_name.clone(), new_inode); + } + let new_fd = wasi_try!(state.fs.create_fd( + fs_rights_base, + fs_rights_inheriting, + fs_flags, + new_inode, + )); + + new_fd + } + } else { + // working_dir did not match on Kind::Dir + return __WASI_ENOTDIR; }; fd_cell.set(out_fd); diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index 26ed97fec..b9606a225 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -83,9 +83,9 @@ struct Run { #[structopt(long = "em-symbol-map", parse(from_os_str), group = "emscripten")] em_symbol_map: Option, - /// WASI pre-opened file - #[structopt(long = "pre-open", group = "wasi")] - pre_opened_files: Vec, + /// WASI pre-opened directory + #[structopt(long = "dir", multiple = true, group = "wasi")] + pre_opened_directories: Vec, #[structopt(long = "command-name", hidden = true)] command_name: Option, @@ -320,7 +320,7 @@ fn execute_wasm(options: &Run) -> Result<(), String> { env::vars() .map(|(k, v)| format!("{}={}", k, v).into_bytes()) .collect(), - options.pre_opened_files.clone(), + options.pre_opened_directories.clone(), ), None, ) From 52279afbe2ae185debe1527ed2a0d7fff28c80ef Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 19 Apr 2019 13:24:41 -0700 Subject: [PATCH 264/413] add comment and reduce code in pre-open loading section --- lib/wasi/src/ptr.rs | 1 + lib/wasi/src/state.rs | 33 ++++----------------------------- 2 files changed, 5 insertions(+), 29 deletions(-) diff --git a/lib/wasi/src/ptr.rs b/lib/wasi/src/ptr.rs index 32c19655e..85a582df0 100644 --- a/lib/wasi/src/ptr.rs +++ b/lib/wasi/src/ptr.rs @@ -36,6 +36,7 @@ impl WasmPtr { return Err(__WASI_EFAULT); } unsafe { + // clears bits below aligment amount (assumes power of 2) to align pointer let aligner = |ptr: usize, align: usize| ptr & !(align - 1); let cell_ptr = aligner( memory.view::().as_ptr().add(self.offset as usize) as usize, diff --git a/lib/wasi/src/state.rs b/lib/wasi/src/state.rs index 5b3b5e415..8594009a0 100644 --- a/lib/wasi/src/state.rs +++ b/lib/wasi/src/state.rs @@ -218,35 +218,10 @@ impl WasiFs { file )); }; - let inode_val = InodeVal { - stat: __wasi_filestat_t { - st_filetype: __WASI_FILETYPE_DIRECTORY, - st_size: cur_file_metadata.len(), - st_atim: cur_file_metadata - .accessed() - .ok() - .and_then(|sys_time| sys_time.duration_since(SystemTime::UNIX_EPOCH).ok()) - .map(|duration| duration.as_nanos() as u64) - .unwrap_or(0), - st_ctim: cur_file_metadata - .created() - .ok() - .and_then(|sys_time| sys_time.duration_since(SystemTime::UNIX_EPOCH).ok()) - .map(|duration| duration.as_nanos() as u64) - .unwrap_or(0), - st_mtim: cur_file_metadata - .modified() - .ok() - .and_then(|sys_time| sys_time.duration_since(SystemTime::UNIX_EPOCH).ok()) - .map(|duration| duration.as_nanos() as u64) - .unwrap_or(0), - ..__wasi_filestat_t::default() - }, - is_preopened: true, - // TODO: handle nested paths - name: file.clone(), - kind, - }; + // TODO: handle nested pats in `file` + let inode_val = + InodeVal::from_file_metadata(cur_file_metadata, file.clone(), true, kind); + let inode = wasi_fs.inodes.insert(inode_val); wasi_fs.inodes[inode].stat.st_ino = wasi_fs.inode_counter.get(); wasi_fs From b141d7f80eba3cad28d7bed5606d1cd7140f1963 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 19 Apr 2019 13:25:23 -0700 Subject: [PATCH 265/413] fix typo --- lib/wasi/src/state.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/wasi/src/state.rs b/lib/wasi/src/state.rs index 8594009a0..d703e2032 100644 --- a/lib/wasi/src/state.rs +++ b/lib/wasi/src/state.rs @@ -220,7 +220,7 @@ impl WasiFs { }; // TODO: handle nested pats in `file` let inode_val = - InodeVal::from_file_metadata(cur_file_metadata, file.clone(), true, kind); + InodeVal::from_file_metadata(&cur_file_metadata, file.clone(), true, kind); let inode = wasi_fs.inodes.insert(inode_val); wasi_fs.inodes[inode].stat.st_ino = wasi_fs.inode_counter.get(); From 443663aa3f5f6f47ed1e6e3008ac7faff8bb3d0a Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Fri, 19 Apr 2019 13:54:48 -0700 Subject: [PATCH 266/413] Add caching support to llvm backend --- lib/clif-backend/src/cache.rs | 8 +-- lib/llvm-backend/cpp/object_loader.cpp | 27 ++++---- lib/llvm-backend/cpp/object_loader.hh | 5 ++ lib/llvm-backend/src/backend.rs | 90 ++++++++++++++++++++++++-- lib/llvm-backend/src/lib.rs | 47 ++++++++------ lib/runtime-core/src/backend.rs | 5 +- lib/runtime-core/src/module.rs | 8 ++- lib/runtime/examples/call.rs | 2 - lib/singlepass-backend/src/lib.rs | 5 +- 9 files changed, 141 insertions(+), 56 deletions(-) diff --git a/lib/clif-backend/src/cache.rs b/lib/clif-backend/src/cache.rs index 5af708703..8b6cb4684 100644 --- a/lib/clif-backend/src/cache.rs +++ b/lib/clif-backend/src/cache.rs @@ -27,18 +27,12 @@ impl CacheGenerator { } impl CacheGen for CacheGenerator { - fn generate_cache( - &self, - module: &ModuleInner, - ) -> Result<(Box, Box<[u8]>, Memory), Error> { - let info = Box::new(module.info.clone()); - + fn generate_cache(&self) -> Result<(Box<[u8]>, Memory), Error> { // Clone the memory to a new location. This could take a long time, // depending on the throughput of your memcpy implementation. let compiled_code = (*self.memory).clone(); Ok(( - info, self.backend_cache.into_backend_data()?.into_boxed_slice(), compiled_code, )) diff --git a/lib/llvm-backend/cpp/object_loader.cpp b/lib/llvm-backend/cpp/object_loader.cpp index cef7c7214..28bea6354 100644 --- a/lib/llvm-backend/cpp/object_loader.cpp +++ b/lib/llvm-backend/cpp/object_loader.cpp @@ -175,21 +175,26 @@ WasmModule::WasmModule( callbacks_t callbacks ) : memory_manager(std::unique_ptr(new MemoryManager(callbacks))) { - object_file = llvm::cantFail(llvm::object::ObjectFile::createObjectFile(llvm::MemoryBufferRef( + + + if (auto created_object_file = llvm::object::ObjectFile::createObjectFile(llvm::MemoryBufferRef( llvm::StringRef((const char *)object_start, object_size), "object" - ))); + ))) { + object_file = cantFail(std::move(created_object_file)); + SymbolLookup symbol_resolver(callbacks); + runtime_dyld = std::unique_ptr(new llvm::RuntimeDyld(*memory_manager, symbol_resolver)); - SymbolLookup symbol_resolver(callbacks); - runtime_dyld = std::unique_ptr(new llvm::RuntimeDyld(*memory_manager, symbol_resolver)); + runtime_dyld->setProcessAllSections(true); - runtime_dyld->setProcessAllSections(true); + runtime_dyld->loadObject(*object_file); + runtime_dyld->finalizeWithMemoryManagerLocking(); - runtime_dyld->loadObject(*object_file); - runtime_dyld->finalizeWithMemoryManagerLocking(); - - if (runtime_dyld->hasError()) { - std::cout << "RuntimeDyld error: " << (std::string)runtime_dyld->getErrorString() << std::endl; - abort(); + if (runtime_dyld->hasError()) { + _init_failed = true; + return; + } + } else { + _init_failed = true; } } diff --git a/lib/llvm-backend/cpp/object_loader.hh b/lib/llvm-backend/cpp/object_loader.hh index f1b53f156..134396b78 100644 --- a/lib/llvm-backend/cpp/object_loader.hh +++ b/lib/llvm-backend/cpp/object_loader.hh @@ -152,6 +152,7 @@ struct WasmModule void *get_func(llvm::StringRef name) const; + bool _init_failed = false; private: std::unique_ptr memory_manager; std::unique_ptr object_file; @@ -164,6 +165,10 @@ extern "C" { *module_out = new WasmModule(mem_ptr, mem_size, callbacks); + if ((*module_out)->_init_failed) { + return RESULT_OBJECT_LOAD_FAILURE; + } + return RESULT_OK; } diff --git a/lib/llvm-backend/src/backend.rs b/lib/llvm-backend/src/backend.rs index 0baaeacff..783a432ff 100644 --- a/lib/llvm-backend/src/backend.rs +++ b/lib/llvm-backend/src/backend.rs @@ -13,12 +13,17 @@ use std::{ any::Any, ffi::{c_void, CString}, mem, + ops::Deref, ptr::{self, NonNull}, slice, str, - sync::Once, + sync::{Arc, Once}, }; use wasmer_runtime_core::{ - backend::RunnableModule, + backend::{ + sys::{Memory, Protect}, + CacheGen, RunnableModule, + }, + cache::Error as CacheError, module::ModuleInfo, structures::TypedIndex, typed_func::{Wasm, WasmTrapInfo}, @@ -203,17 +208,32 @@ fn get_callbacks() -> Callbacks { } } +pub enum Buffer { + LlvmMemory(MemoryBuffer), + Memory(Memory), +} + +impl Deref for Buffer { + type Target = [u8]; + fn deref(&self) -> &[u8] { + match self { + Buffer::LlvmMemory(mem_buffer) => mem_buffer.as_slice(), + Buffer::Memory(memory) => unsafe { memory.as_slice() }, + } + } +} + unsafe impl Send for LLVMBackend {} unsafe impl Sync for LLVMBackend {} pub struct LLVMBackend { module: *mut LLVMModule, #[allow(dead_code)] - memory_buffer: MemoryBuffer, + buffer: Arc, } impl LLVMBackend { - pub fn new(module: Module, _intrinsics: Intrinsics) -> Self { + pub fn new(module: Module, _intrinsics: Intrinsics) -> (Self, LLVMCache) { Target::initialize_x86(&InitializationConfig { asm_parser: true, asm_printer: true, @@ -262,10 +282,44 @@ impl LLVMBackend { panic!("failed to load object") } - Self { - module, - memory_buffer, + let buffer = Arc::new(Buffer::LlvmMemory(memory_buffer)); + + ( + Self { + module, + buffer: Arc::clone(&buffer), + }, + LLVMCache { buffer }, + ) + } + + pub unsafe fn from_buffer(memory: Memory) -> Result<(Self, LLVMCache), String> { + let callbacks = get_callbacks(); + let mut module: *mut LLVMModule = ptr::null_mut(); + + let slice = unsafe { memory.as_slice() }; + + let res = module_load(slice.as_ptr(), slice.len(), callbacks, &mut module); + + if res != LLVMResult::OK { + return Err("failed to load object".to_string()); } + + static SIGNAL_HANDLER_INSTALLED: Once = Once::new(); + + SIGNAL_HANDLER_INSTALLED.call_once(|| unsafe { + crate::platform::install_signal_handler(); + }); + + let buffer = Arc::new(Buffer::Memory(memory)); + + Ok(( + Self { + module, + buffer: Arc::clone(&buffer), + }, + LLVMCache { buffer }, + )) } } @@ -322,6 +376,28 @@ impl RunnableModule for LLVMBackend { } } +unsafe impl Send for LLVMCache {} +unsafe impl Sync for LLVMCache {} + +pub struct LLVMCache { + buffer: Arc, +} + +impl CacheGen for LLVMCache { + fn generate_cache(&self) -> Result<(Box<[u8]>, Memory), CacheError> { + let mut memory = Memory::with_size_protect(self.buffer.len(), Protect::ReadWrite) + .map_err(CacheError::SerializeError)?; + + let buffer = self.buffer.deref(); + + unsafe { + memory.as_slice_mut()[..buffer.len()].copy_from_slice(buffer); + } + + Ok(([].as_ref().into(), memory)) + } +} + #[cfg(feature = "disasm")] unsafe fn disass_ptr(ptr: *const u8, size: usize, inst_count: usize) { use capstone::arch::BuildsCapstone; diff --git a/lib/llvm-backend/src/lib.rs b/lib/llvm-backend/src/lib.rs index bc43c5773..5a04a4019 100644 --- a/lib/llvm-backend/src/lib.rs +++ b/lib/llvm-backend/src/lib.rs @@ -38,38 +38,47 @@ impl Compiler for LLVMCompiler { let (info, code_reader) = read_info::read_module(wasm, compiler_config).unwrap(); let (module, intrinsics) = code::parse_function_bodies(&info, code_reader).unwrap(); - let backend = backend::LLVMBackend::new(module, intrinsics); + let (backend, cache_gen) = backend::LLVMBackend::new(module, intrinsics); // Create placeholder values here. - let cache_gen = { - use wasmer_runtime_core::backend::{sys::Memory, CacheGen}; - use wasmer_runtime_core::cache::Error as CacheError; - use wasmer_runtime_core::module::ModuleInfo; + // let cache_gen = { + // use wasmer_runtime_core::backend::{sys::Memory, CacheGen}; + // use wasmer_runtime_core::cache::Error as CacheError; + // use wasmer_runtime_core::module::ModuleInfo; - struct Placeholder; + // struct Placeholder; - impl CacheGen for Placeholder { - fn generate_cache( - &self, - _module: &ModuleInner, - ) -> Result<(Box, Box<[u8]>, Memory), CacheError> { - unimplemented!() - } - } + // impl CacheGen for Placeholder { + // fn generate_cache( + // &self, + // _module: &ModuleInner, + // ) -> Result<(Box, Box<[u8]>, Memory), CacheError> { + // unimplemented!() + // } + // } - Box::new(Placeholder) - }; + // Box::new(Placeholder) + // }; Ok(ModuleInner { runnable_module: Box::new(backend), - cache_gen, + cache_gen: Box::new(cache_gen), info, }) } - unsafe fn from_cache(&self, _artifact: Artifact, _: Token) -> Result { - unimplemented!("the llvm backend doesn't support caching yet") + unsafe fn from_cache(&self, artifact: Artifact, _: Token) -> Result { + let (info, _, memory) = artifact.consume(); + let (backend, cache_gen) = + backend::LLVMBackend::from_buffer(memory).map_err(CacheError::DeserializeError)?; + + Ok(ModuleInner { + runnable_module: Box::new(backend), + cache_gen: Box::new(cache_gen), + + info, + }) } } diff --git a/lib/runtime-core/src/backend.rs b/lib/runtime-core/src/backend.rs index 48c7e1c5f..d465cda58 100644 --- a/lib/runtime-core/src/backend.rs +++ b/lib/runtime-core/src/backend.rs @@ -83,8 +83,5 @@ pub trait RunnableModule: Send + Sync { } pub trait CacheGen: Send + Sync { - fn generate_cache( - &self, - module: &ModuleInner, - ) -> Result<(Box, Box<[u8]>, Memory), CacheError>; + fn generate_cache(&self) -> Result<(Box<[u8]>, Memory), CacheError>; } diff --git a/lib/runtime-core/src/module.rs b/lib/runtime-core/src/module.rs index 40cde6fbf..1ffbc71fc 100644 --- a/lib/runtime-core/src/module.rs +++ b/lib/runtime-core/src/module.rs @@ -121,8 +121,12 @@ impl Module { } pub fn cache(&self) -> Result { - let (info, backend_metadata, code) = self.inner.cache_gen.generate_cache(&self.inner)?; - Ok(Artifact::from_parts(info, backend_metadata, code)) + let (backend_metadata, code) = self.inner.cache_gen.generate_cache()?; + Ok(Artifact::from_parts( + Box::new(self.inner.info.clone()), + backend_metadata, + code, + )) } pub fn info(&self) -> &ModuleInfo { diff --git a/lib/runtime/examples/call.rs b/lib/runtime/examples/call.rs index 12f149062..a8f27b4c0 100644 --- a/lib/runtime/examples/call.rs +++ b/lib/runtime/examples/call.rs @@ -7,8 +7,6 @@ static WAT: &'static str = r#" (type (;0;) (func (result i32))) (import "env" "do_panic" (func $do_panic (type 0))) (func $dbz (result i32) - call $do_panic - drop i32.const 42 i32.const 0 i32.div_u diff --git a/lib/singlepass-backend/src/lib.rs b/lib/singlepass-backend/src/lib.rs index c388bee49..7ecd029e4 100644 --- a/lib/singlepass-backend/src/lib.rs +++ b/lib/singlepass-backend/src/lib.rs @@ -36,10 +36,7 @@ use wasmer_runtime_core::{ struct Placeholder; impl CacheGen for Placeholder { - fn generate_cache( - &self, - _module: &ModuleInner, - ) -> Result<(Box, Box<[u8]>, Memory), CacheError> { + fn generate_cache(&self) -> Result<(Box<[u8]>, Memory), CacheError> { Err(CacheError::Unknown( "the singlepass backend doesn't support caching yet".to_string(), )) From 65838fe148ad4d116283e92f9ed855b9c70a5586 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Fri, 19 Apr 2019 13:57:05 -0700 Subject: [PATCH 267/413] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2545d0926..d7efb6241 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ All PRs to the Wasmer repository must add to this file. Blocks of changes will separated by version increments. ## **[Unreleased]** +- [#367](https://github.com/wasmerio/wasmer/pull/367) Add caching support to the LLVM backend. - [#366](https://github.com/wasmerio/wasmer/pull/366) Remove `UserTrapper` trait to fix [#365](https://github.com/wasmerio/wasmer/issues/365). - [#348](https://github.com/wasmerio/wasmer/pull/348) Refactor internal runtime ↔️ backend abstraction. - [#355](https://github.com/wasmerio/wasmer/pull/355) Misc changes to `Cargo.toml`s for publishing From c3ef1f842177f78b76e77cbeae2f4a97b2f3a146 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Fri, 19 Apr 2019 14:00:03 -0700 Subject: [PATCH 268/413] Remove commented-out code --- lib/llvm-backend/src/lib.rs | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/lib/llvm-backend/src/lib.rs b/lib/llvm-backend/src/lib.rs index 5a04a4019..8bc858a7a 100644 --- a/lib/llvm-backend/src/lib.rs +++ b/lib/llvm-backend/src/lib.rs @@ -40,26 +40,6 @@ impl Compiler for LLVMCompiler { let (backend, cache_gen) = backend::LLVMBackend::new(module, intrinsics); - // Create placeholder values here. - // let cache_gen = { - // use wasmer_runtime_core::backend::{sys::Memory, CacheGen}; - // use wasmer_runtime_core::cache::Error as CacheError; - // use wasmer_runtime_core::module::ModuleInfo; - - // struct Placeholder; - - // impl CacheGen for Placeholder { - // fn generate_cache( - // &self, - // _module: &ModuleInner, - // ) -> Result<(Box, Box<[u8]>, Memory), CacheError> { - // unimplemented!() - // } - // } - - // Box::new(Placeholder) - // }; - Ok(ModuleInner { runnable_module: Box::new(backend), cache_gen: Box::new(cache_gen), From 3b9e12b24839a0da87bb233584916b89ed2aabef Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Fri, 19 Apr 2019 14:02:21 -0700 Subject: [PATCH 269/413] fix test --- lib/runtime-core/src/vm.rs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lib/runtime-core/src/vm.rs b/lib/runtime-core/src/vm.rs index 6a408cd04..a1e493f8c 100644 --- a/lib/runtime-core/src/vm.rs +++ b/lib/runtime-core/src/vm.rs @@ -569,10 +569,7 @@ mod vm_ctx_tests { } } impl CacheGen for Placeholder { - fn generate_cache( - &self, - module: &ModuleInner, - ) -> Result<(Box, Box<[u8]>, Memory), CacheError> { + fn generate_cache(&self) -> Result<(Box<[u8]>, Memory), CacheError> { unimplemented!() } } From eef2bc6a21acee244ac1cd4b819e5197dcd520ae Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 19 Apr 2019 14:07:41 -0700 Subject: [PATCH 270/413] update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 113ad0c3e..329a92f8c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ All PRs to the Wasmer repository must add to this file. Blocks of changes will separated by version increments. ## **[Unreleased]** +- [#343](https://github.com/wasmerio/wasmer/pull/343) Implement preopened files for WASI and fix aligment issue when accessing WASI memory - [#355](https://github.com/wasmerio/wasmer/pull/355) Misc changes to `Cargo.toml`s for publishing - [#352](https://github.com/wasmerio/wasmer/pull/352) Bump version numbers to 0.3.0 - [#351](https://github.com/wasmerio/wasmer/pull/351) Add hidden option to specify wasm program name (can be used to improve error messages) From 087a826222af018f9f61dabea598b6b7102e5bf5 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Fri, 19 Apr 2019 14:09:41 -0700 Subject: [PATCH 271/413] fix tests on more time uh huh --- lib/llvm-backend/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/llvm-backend/src/lib.rs b/lib/llvm-backend/src/lib.rs index 8bc858a7a..6ce8139c3 100644 --- a/lib/llvm-backend/src/lib.rs +++ b/lib/llvm-backend/src/lib.rs @@ -112,7 +112,7 @@ fn test_read_module() { let (module, intrinsics) = code::parse_function_bodies(&info, code_reader).unwrap(); - let backend = backend::LLVMBackend::new(module, intrinsics); + let (backend, _) = backend::LLVMBackend::new(module, intrinsics); let func_ptr = backend.get_func(&info, LocalFuncIndex::new(0)).unwrap(); From 8095d70957a9f152eeea580bfc4345070b54634e Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 19 Apr 2019 15:57:51 -0700 Subject: [PATCH 272/413] fix write to flush buffer; fix warnings --- lib/wasi/src/state.rs | 5 +++-- lib/wasi/src/syscalls/mod.rs | 6 +++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/wasi/src/state.rs b/lib/wasi/src/state.rs index d703e2032..65cc3e6a8 100644 --- a/lib/wasi/src/state.rs +++ b/lib/wasi/src/state.rs @@ -12,12 +12,13 @@ use std::{ time::SystemTime, }; use wasmer_runtime_core::debug; -use zbox::{init_env as zbox_init_env, FileType, OpenOptions, Repo, RepoOpener}; +use zbox::init_env as zbox_init_env; pub const MAX_SYMLINKS: usize = 100; #[derive(Debug)] pub enum WasiFile { + #[allow(dead_code)] ZboxFile(zbox::File), HostFile(fs::File), } @@ -236,7 +237,7 @@ impl WasiFs { fn get_inode(&mut self, path: &str) -> Option { Some(match self.name_map.entry(path.to_string()) { Entry::Occupied(o) => *o.get(), - Entry::Vacant(v) => { + Entry::Vacant(_v) => { return None; // let file = if let Ok(file) = OpenOptions::new() // .read(true) diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 455d210d4..a436444fb 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -37,11 +37,15 @@ fn write_bytes( let bytes = iov_inner.buf.deref(memory, 0, iov_inner.buf_len)?; write_loc .write(&bytes.iter().map(|b_cell| b_cell.get()).collect::>()) - .map_err(|_| __WASI_EIO)?; + .map_err(|_| { + write_loc.flush(); + __WASI_EIO + })?; // TODO: handle failure more accurately bytes_written += iov_inner.buf_len; } + write_loc.flush(); Ok(bytes_written) } From 9256f6e60a90f5822225cc050150fd4b3a6229ae Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 19 Apr 2019 16:48:30 -0700 Subject: [PATCH 273/413] update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 14462c4fc..01163915a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ All PRs to the Wasmer repository must add to this file. Blocks of changes will separated by version increments. ## **[Unreleased]** +- [#368](https://github.com/wasmerio/wasmer/pull/368) Fix issue with write buffering - [#343](https://github.com/wasmerio/wasmer/pull/343) Implement preopened files for WASI and fix aligment issue when accessing WASI memory - [#367](https://github.com/wasmerio/wasmer/pull/367) Add caching support to the LLVM backend. - [#366](https://github.com/wasmerio/wasmer/pull/366) Remove `UserTrapper` trait to fix [#365](https://github.com/wasmerio/wasmer/issues/365). From 0aa35a675b95aecb82a18671af2550bbaae68133 Mon Sep 17 00:00:00 2001 From: Syrus Date: Sat, 20 Apr 2019 11:47:06 -0700 Subject: [PATCH 274/413] Fix WASI by using u32 everywhere instead of u16 --- lib/wasi/src/syscalls/types.rs | 208 ++++++++++++++++----------------- 1 file changed, 104 insertions(+), 104 deletions(-) diff --git a/lib/wasi/src/syscalls/types.rs b/lib/wasi/src/syscalls/types.rs index 5afd3148f..6e16e03c6 100644 --- a/lib/wasi/src/syscalls/types.rs +++ b/lib/wasi/src/syscalls/types.rs @@ -42,84 +42,84 @@ pub struct __wasi_dirent_t { pub d_type: __wasi_filetype_t, } -pub type __wasi_errno_t = u16; -pub const __WASI_ESUCCESS: u16 = 0; -pub const __WASI_E2BIG: u16 = 1; -pub const __WASI_EACCES: u16 = 2; -pub const __WASI_EADDRINUSE: u16 = 3; -pub const __WASI_EADDRNOTAVAIL: u16 = 4; -pub const __WASI_EAFNOSUPPORT: u16 = 5; -pub const __WASI_EAGAIN: u16 = 6; -pub const __WASI_EALREADY: u16 = 7; -pub const __WASI_EBADF: u16 = 8; -pub const __WASI_EBADMSG: u16 = 9; -pub const __WASI_EBUSY: u16 = 10; -pub const __WASI_ECANCELED: u16 = 11; -pub const __WASI_ECHILD: u16 = 12; -pub const __WASI_ECONNABORTED: u16 = 13; -pub const __WASI_ECONNREFUSED: u16 = 14; -pub const __WASI_ECONNRESET: u16 = 15; -pub const __WASI_EDEADLK: u16 = 16; -pub const __WASI_EDESTADDRREQ: u16 = 17; -pub const __WASI_EDOM: u16 = 18; -pub const __WASI_EDQUOT: u16 = 19; -pub const __WASI_EEXIST: u16 = 20; -pub const __WASI_EFAULT: u16 = 21; -pub const __WASI_EFBIG: u16 = 22; -pub const __WASI_EHOSTUNREACH: u16 = 23; -pub const __WASI_EIDRM: u16 = 24; -pub const __WASI_EILSEQ: u16 = 25; -pub const __WASI_EINPROGRESS: u16 = 26; -pub const __WASI_EINTR: u16 = 27; -pub const __WASI_EINVAL: u16 = 28; -pub const __WASI_EIO: u16 = 29; -pub const __WASI_EISCONN: u16 = 30; -pub const __WASI_EISDIR: u16 = 31; -pub const __WASI_ELOOP: u16 = 32; -pub const __WASI_EMFILE: u16 = 33; -pub const __WASI_EMLINK: u16 = 34; -pub const __WASI_EMSGSIZE: u16 = 35; -pub const __WASI_EMULTIHOP: u16 = 36; -pub const __WASI_ENAMETOOLONG: u16 = 37; -pub const __WASI_ENETDOWN: u16 = 38; -pub const __WASI_ENETRESET: u16 = 39; -pub const __WASI_ENETUNREACH: u16 = 40; -pub const __WASI_ENFILE: u16 = 41; -pub const __WASI_ENOBUFS: u16 = 42; -pub const __WASI_ENODEV: u16 = 43; -pub const __WASI_ENOENT: u16 = 44; -pub const __WASI_ENOEXEC: u16 = 45; -pub const __WASI_ENOLCK: u16 = 46; -pub const __WASI_ENOLINK: u16 = 47; -pub const __WASI_ENOMEM: u16 = 48; -pub const __WASI_ENOMSG: u16 = 49; -pub const __WASI_ENOPROTOOPT: u16 = 50; -pub const __WASI_ENOSPC: u16 = 51; -pub const __WASI_ENOSYS: u16 = 52; -pub const __WASI_ENOTCONN: u16 = 53; -pub const __WASI_ENOTDIR: u16 = 54; -pub const __WASI_ENOTEMPTY: u16 = 55; -pub const __WASI_ENOTRECOVERABLE: u16 = 56; -pub const __WASI_ENOTSOCK: u16 = 57; -pub const __WASI_ENOTSUP: u16 = 58; -pub const __WASI_ENOTTY: u16 = 59; -pub const __WASI_ENXIO: u16 = 60; -pub const __WASI_EOVERFLOW: u16 = 61; -pub const __WASI_EOWNERDEAD: u16 = 62; -pub const __WASI_EPERM: u16 = 63; -pub const __WASI_EPIPE: u16 = 64; -pub const __WASI_EPROTO: u16 = 65; -pub const __WASI_EPROTONOSUPPORT: u16 = 66; -pub const __WASI_EPROTOTYPE: u16 = 67; -pub const __WASI_ERANGE: u16 = 68; -pub const __WASI_EROFS: u16 = 69; -pub const __WASI_ESPIPE: u16 = 70; -pub const __WASI_ESRCH: u16 = 71; -pub const __WASI_ESTALE: u16 = 72; -pub const __WASI_ETIMEDOUT: u16 = 73; -pub const __WASI_ETXTBSY: u16 = 74; -pub const __WASI_EXDEV: u16 = 75; -pub const __WASI_ENOTCAPABLE: u16 = 76; +pub type __wasi_errno_t = u32; +pub const __WASI_ESUCCESS: u32 = 0; +pub const __WASI_E2BIG: u32 = 1; +pub const __WASI_EACCES: u32 = 2; +pub const __WASI_EADDRINUSE: u32 = 3; +pub const __WASI_EADDRNOTAVAIL: u32 = 4; +pub const __WASI_EAFNOSUPPORT: u32 = 5; +pub const __WASI_EAGAIN: u32 = 6; +pub const __WASI_EALREADY: u32 = 7; +pub const __WASI_EBADF: u32 = 8; +pub const __WASI_EBADMSG: u32 = 9; +pub const __WASI_EBUSY: u32 = 10; +pub const __WASI_ECANCELED: u32 = 11; +pub const __WASI_ECHILD: u32 = 12; +pub const __WASI_ECONNABORTED: u32 = 13; +pub const __WASI_ECONNREFUSED: u32 = 14; +pub const __WASI_ECONNRESET: u32 = 15; +pub const __WASI_EDEADLK: u32 = 16; +pub const __WASI_EDESTADDRREQ: u32 = 17; +pub const __WASI_EDOM: u32 = 18; +pub const __WASI_EDQUOT: u32 = 19; +pub const __WASI_EEXIST: u32 = 20; +pub const __WASI_EFAULT: u32 = 21; +pub const __WASI_EFBIG: u32 = 22; +pub const __WASI_EHOSTUNREACH: u32 = 23; +pub const __WASI_EIDRM: u32 = 24; +pub const __WASI_EILSEQ: u32 = 25; +pub const __WASI_EINPROGRESS: u32 = 26; +pub const __WASI_EINTR: u32 = 27; +pub const __WASI_EINVAL: u32 = 28; +pub const __WASI_EIO: u32 = 29; +pub const __WASI_EISCONN: u32 = 30; +pub const __WASI_EISDIR: u32 = 31; +pub const __WASI_ELOOP: u32 = 32; +pub const __WASI_EMFILE: u32 = 33; +pub const __WASI_EMLINK: u32 = 34; +pub const __WASI_EMSGSIZE: u32 = 35; +pub const __WASI_EMULTIHOP: u32 = 36; +pub const __WASI_ENAMETOOLONG: u32 = 37; +pub const __WASI_ENETDOWN: u32 = 38; +pub const __WASI_ENETRESET: u32 = 39; +pub const __WASI_ENETUNREACH: u32 = 40; +pub const __WASI_ENFILE: u32 = 41; +pub const __WASI_ENOBUFS: u32 = 42; +pub const __WASI_ENODEV: u32 = 43; +pub const __WASI_ENOENT: u32 = 44; +pub const __WASI_ENOEXEC: u32 = 45; +pub const __WASI_ENOLCK: u32 = 46; +pub const __WASI_ENOLINK: u32 = 47; +pub const __WASI_ENOMEM: u32 = 48; +pub const __WASI_ENOMSG: u32 = 49; +pub const __WASI_ENOPROTOOPT: u32 = 50; +pub const __WASI_ENOSPC: u32 = 51; +pub const __WASI_ENOSYS: u32 = 52; +pub const __WASI_ENOTCONN: u32 = 53; +pub const __WASI_ENOTDIR: u32 = 54; +pub const __WASI_ENOTEMPTY: u32 = 55; +pub const __WASI_ENOTRECOVERABLE: u32 = 56; +pub const __WASI_ENOTSOCK: u32 = 57; +pub const __WASI_ENOTSUP: u32 = 58; +pub const __WASI_ENOTTY: u32 = 59; +pub const __WASI_ENXIO: u32 = 60; +pub const __WASI_EOVERFLOW: u32 = 61; +pub const __WASI_EOWNERDEAD: u32 = 62; +pub const __WASI_EPERM: u32 = 63; +pub const __WASI_EPIPE: u32 = 64; +pub const __WASI_EPROTO: u32 = 65; +pub const __WASI_EPROTONOSUPPORT: u32 = 66; +pub const __WASI_EPROTOTYPE: u32 = 67; +pub const __WASI_ERANGE: u32 = 68; +pub const __WASI_EROFS: u32 = 69; +pub const __WASI_ESPIPE: u32 = 70; +pub const __WASI_ESRCH: u32 = 71; +pub const __WASI_ESTALE: u32 = 72; +pub const __WASI_ETIMEDOUT: u32 = 73; +pub const __WASI_ETXTBSY: u32 = 74; +pub const __WASI_EXDEV: u32 = 75; +pub const __WASI_ENOTCAPABLE: u32 = 76; #[derive(Debug, Copy, Clone, PartialEq, Eq)] #[repr(C)] @@ -173,8 +173,8 @@ impl __wasi_event_t { } } -pub type __wasi_eventrwflags_t = u16; -pub const __WASI_EVENT_FD_READWRITE_HANGUP: u16 = 1 << 0; +pub type __wasi_eventrwflags_t = u32; +pub const __WASI_EVENT_FD_READWRITE_HANGUP: u32 = 1 << 0; pub type __wasi_eventtype_t = u8; pub const __WASI_EVENTTYPE_CLOCK: u8 = 0; @@ -188,12 +188,12 @@ pub const __WASI_STDIN_FILENO: u32 = 0; pub const __WASI_STDOUT_FILENO: u32 = 1; pub const __WASI_STDERR_FILENO: u32 = 2; -pub type __wasi_fdflags_t = u16; -pub const __WASI_FDFLAG_APPEND: u16 = 1 << 0; -pub const __WASI_FDFLAG_DSYNC: u16 = 1 << 1; -pub const __WASI_FDFLAG_NONBLOCK: u16 = 1 << 2; -pub const __WASI_FDFLAG_RSYNC: u16 = 1 << 3; -pub const __WASI_FDFLAG_SYNC: u16 = 1 << 4; +pub type __wasi_fdflags_t = u32; +pub const __WASI_FDFLAG_APPEND: u32 = 1 << 0; +pub const __WASI_FDFLAG_DSYNC: u32 = 1 << 1; +pub const __WASI_FDFLAG_NONBLOCK: u32 = 1 << 2; +pub const __WASI_FDFLAG_RSYNC: u32 = 1 << 3; +pub const __WASI_FDFLAG_SYNC: u32 = 1 << 4; pub type __wasi_preopentype_t = u8; pub const __WASI_PREOPENTYPE_DIR: u8 = 0; @@ -289,11 +289,11 @@ pub const __WASI_FILETYPE_SOCKET_DGRAM: u8 = 5; pub const __WASI_FILETYPE_SOCKET_STREAM: u8 = 6; pub const __WASI_FILETYPE_SYMBOLIC_LINK: u8 = 7; -pub type __wasi_fstflags_t = u16; -pub const __WASI_FILESTAT_SET_ATIM: u16 = 1 << 0; -pub const __WASI_FILESTAT_SET_ATIM_NOW: u16 = 1 << 1; -pub const __WASI_FILESTAT_SET_MTIM: u16 = 1 << 2; -pub const __WASI_FILESTAT_SET_MTIM_NOW: u16 = 1 << 3; +pub type __wasi_fstflags_t = u32; +pub const __WASI_FILESTAT_SET_ATIM: u32 = 1 << 0; +pub const __WASI_FILESTAT_SET_ATIM_NOW: u32 = 1 << 1; +pub const __WASI_FILESTAT_SET_MTIM: u32 = 1 << 2; +pub const __WASI_FILESTAT_SET_MTIM_NOW: u32 = 1 << 3; pub type __wasi_inode_t = u64; @@ -311,15 +311,15 @@ pub type __wasi_linkcount_t = u32; pub type __wasi_lookupflags_t = u32; pub const __WASI_LOOKUP_SYMLINK_FOLLOW: u32 = 1 << 0; -pub type __wasi_oflags_t = u16; -pub const __WASI_O_CREAT: u16 = 1 << 0; -pub const __WASI_O_DIRECTORY: u16 = 1 << 1; -pub const __WASI_O_EXCL: u16 = 1 << 2; -pub const __WASI_O_TRUNC: u16 = 1 << 3; +pub type __wasi_oflags_t = u32; +pub const __WASI_O_CREAT: u32 = 1 << 0; +pub const __WASI_O_DIRECTORY: u32 = 1 << 1; +pub const __WASI_O_EXCL: u32 = 1 << 2; +pub const __WASI_O_TRUNC: u32 = 1 << 3; -pub type __wasi_riflags_t = u16; -pub const __WASI_SOCK_RECV_PEEK: u16 = 1 << 0; -pub const __WASI_SOCK_RECV_WAITALL: u16 = 1 << 1; +pub type __wasi_riflags_t = u32; +pub const __WASI_SOCK_RECV_PEEK: u32 = 1 << 0; +pub const __WASI_SOCK_RECV_WAITALL: u32 = 1 << 1; pub type __wasi_rights_t = u64; pub const __WASI_RIGHT_FD_DATASYNC: u64 = 1 << 0; @@ -352,14 +352,14 @@ pub const __WASI_RIGHT_PATH_REMOVE_DIRECTORY: u64 = 1 << 26; pub const __WASI_RIGHT_POLL_FD_READWRITE: u64 = 1 << 27; pub const __WASI_RIGHT_SOCK_SHUTDOWN: u64 = 1 << 28; -pub type __wasi_roflags_t = u16; -pub const __WASI_SOCK_RECV_DATA_TRUNCATED: u16 = 1 << 0; +pub type __wasi_roflags_t = u32; +pub const __WASI_SOCK_RECV_DATA_TRUNCATED: u32 = 1 << 0; pub type __wasi_sdflags_t = u8; pub const __WASI_SHUT_RD: u8 = 1 << 0; pub const __WASI_SHUT_WR: u8 = 1 << 1; -pub type __wasi_siflags_t = u16; +pub type __wasi_siflags_t = u32; pub type __wasi_signal_t = u8; pub const __WASI_SIGABRT: u8 = 0; @@ -389,8 +389,8 @@ pub const __WASI_SIGVTALRM: u8 = 23; pub const __WASI_SIGXCPU: u8 = 24; pub const __WASI_SIGXFSZ: u8 = 25; -pub type __wasi_subclockflags_t = u16; -pub const __WASI_SUBSCRIPTION_CLOCK_ABSTIME: u16 = 1 << 0; +pub type __wasi_subclockflags_t = u32; +pub const __WASI_SUBSCRIPTION_CLOCK_ABSTIME: u32 = 1 << 0; #[derive(Debug, Copy, Clone, PartialEq, Eq)] #[repr(C)] From 962c9c859679275d7ddef5e4d425b19c15696ef4 Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Sat, 20 Apr 2019 14:22:31 -0500 Subject: [PATCH 275/413] Add more Debug impl for WASI types --- CHANGELOG.md | 1 + lib/wasi/src/macros.rs | 10 ++++++++-- lib/wasi/src/state.rs | 2 ++ lib/wasi/src/syscalls/types.rs | 9 ++++++++- 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 01163915a..9284916aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ All PRs to the Wasmer repository must add to this file. Blocks of changes will separated by version increments. ## **[Unreleased]** +- [#371](https://github.com/wasmerio/wasmer/pull/371) Add more Debug impl for WASI types - [#368](https://github.com/wasmerio/wasmer/pull/368) Fix issue with write buffering - [#343](https://github.com/wasmerio/wasmer/pull/343) Implement preopened files for WASI and fix aligment issue when accessing WASI memory - [#367](https://github.com/wasmerio/wasmer/pull/367) Add caching support to the LLVM backend. diff --git a/lib/wasi/src/macros.rs b/lib/wasi/src/macros.rs index 0e00e77b3..1420b8f2d 100644 --- a/lib/wasi/src/macros.rs +++ b/lib/wasi/src/macros.rs @@ -2,8 +2,14 @@ macro_rules! wasi_try { ($expr:expr) => {{ let res: Result<_, crate::syscalls::types::__wasi_errno_t> = $expr; match res { - Ok(val) => val, - Err(err) => return err, + Ok(val) => { + debug!("wasi::wasi_try::val: {:?}", val); + val + } + Err(err) => { + debug!("wasi::wasi_try::err: {:?}", err); + return err; + } } }}; ($expr:expr; $e:expr) => {{ diff --git a/lib/wasi/src/state.rs b/lib/wasi/src/state.rs index 65cc3e6a8..813250c57 100644 --- a/lib/wasi/src/state.rs +++ b/lib/wasi/src/state.rs @@ -171,6 +171,7 @@ pub struct Fd { pub inode: Inode, } +#[derive(Debug)] pub struct WasiFs { //pub repo: Repo, pub name_map: HashMap, @@ -430,6 +431,7 @@ impl WasiFs { } } +#[derive(Debug)] pub struct WasiState<'a> { pub fs: WasiFs, pub args: &'a [Vec], diff --git a/lib/wasi/src/syscalls/types.rs b/lib/wasi/src/syscalls/types.rs index 5afd3148f..636e1858e 100644 --- a/lib/wasi/src/syscalls/types.rs +++ b/lib/wasi/src/syscalls/types.rs @@ -2,6 +2,7 @@ use crate::ptr::{Array, WasmPtr}; use byteorder::{ReadBytesExt, WriteBytesExt, LE}; +use std::fmt; use std::mem; use wasmer_runtime_core::types::ValueType; @@ -212,9 +213,15 @@ pub union __wasi_prestat_u { dir: __wasi_prestat_u_dir_t, } +impl fmt::Debug for __wasi_prestat_u { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "__wasi_prestat_u") + } +} + unsafe impl ValueType for __wasi_prestat_u {} -#[derive(Copy, Clone)] +#[derive(Debug, Copy, Clone)] #[repr(C)] pub struct __wasi_prestat_t { pub pr_type: __wasi_preopentype_t, From 9e93565a4945bd50c7552051aa57f13226c55a94 Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Sat, 20 Apr 2019 20:37:39 -0500 Subject: [PATCH 276/413] Cleanup build warnings imports and unnecessary unsafe --- lib/clif-backend/src/cache.rs | 2 +- lib/llvm-backend/src/backend.rs | 4 ++-- lib/singlepass-backend/src/lib.rs | 2 +- lib/singlepass-backend/src/parse.rs | 3 +-- lib/win-exception-handler/build.rs | 3 +-- 5 files changed, 6 insertions(+), 8 deletions(-) diff --git a/lib/clif-backend/src/cache.rs b/lib/clif-backend/src/cache.rs index 8b6cb4684..b4f647372 100644 --- a/lib/clif-backend/src/cache.rs +++ b/lib/clif-backend/src/cache.rs @@ -5,7 +5,7 @@ use std::sync::Arc; use wasmer_runtime_core::{ backend::{sys::Memory, CacheGen}, cache::{Artifact, Error}, - module::{ModuleInfo, ModuleInner}, + module::ModuleInfo, structures::Map, types::{LocalFuncIndex, SigIndex}, }; diff --git a/lib/llvm-backend/src/backend.rs b/lib/llvm-backend/src/backend.rs index 783a432ff..bbfed68a0 100644 --- a/lib/llvm-backend/src/backend.rs +++ b/lib/llvm-backend/src/backend.rs @@ -297,7 +297,7 @@ impl LLVMBackend { let callbacks = get_callbacks(); let mut module: *mut LLVMModule = ptr::null_mut(); - let slice = unsafe { memory.as_slice() }; + let slice = memory.as_slice(); let res = module_load(slice.as_ptr(), slice.len(), callbacks, &mut module); @@ -307,7 +307,7 @@ impl LLVMBackend { static SIGNAL_HANDLER_INSTALLED: Once = Once::new(); - SIGNAL_HANDLER_INSTALLED.call_once(|| unsafe { + SIGNAL_HANDLER_INSTALLED.call_once(|| { crate::platform::install_signal_handler(); }); diff --git a/lib/singlepass-backend/src/lib.rs b/lib/singlepass-backend/src/lib.rs index 7ecd029e4..967401cc9 100644 --- a/lib/singlepass-backend/src/lib.rs +++ b/lib/singlepass-backend/src/lib.rs @@ -31,7 +31,7 @@ use wasmer_runtime_core::{ backend::{sys::Memory, Backend, CacheGen, Compiler, CompilerConfig, Token}, cache::{Artifact, Error as CacheError}, error::{CompileError, CompileResult}, - module::{ModuleInfo, ModuleInner}, + module::ModuleInner, }; struct Placeholder; diff --git a/lib/singlepass-backend/src/parse.rs b/lib/singlepass-backend/src/parse.rs index e02b4b8c1..6e330490e 100644 --- a/lib/singlepass-backend/src/parse.rs +++ b/lib/singlepass-backend/src/parse.rs @@ -15,8 +15,7 @@ use wasmer_runtime_core::{ units::Pages, }; use wasmparser::{ - BinaryReaderError, Data, DataKind, Element, ElementKind, Export, ExternalKind, FuncType, - Import, ImportSectionEntryType, InitExpr, ModuleReader, Operator, SectionCode, Type as WpType, + BinaryReaderError, ExternalKind, FuncType, ImportSectionEntryType, Operator, Type as WpType, WasmDecoder, }; diff --git a/lib/win-exception-handler/build.rs b/lib/win-exception-handler/build.rs index 7376c6329..1ed351206 100644 --- a/lib/win-exception-handler/build.rs +++ b/lib/win-exception-handler/build.rs @@ -1,8 +1,7 @@ -use cmake::Config; - fn main() { #[cfg(target_os = "windows")] { + use cmake::Config; let project_name = "exception_handling"; let dst = Config::new(project_name).build(); println!("cargo:rustc-link-search=native={}", dst.display()); From 21bd55c30d69f21b2fa2bd6d8d69f5406d876d27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Renault?= Date: Sun, 21 Apr 2019 12:58:48 +0200 Subject: [PATCH 277/413] Make the slice::from_raw_parts call safe --- lib/runtime-core/src/memory/atomic.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/runtime-core/src/memory/atomic.rs b/lib/runtime-core/src/memory/atomic.rs index f4ed3d3d0..f14415def 100644 --- a/lib/runtime-core/src/memory/atomic.rs +++ b/lib/runtime-core/src/memory/atomic.rs @@ -52,6 +52,7 @@ macro_rules! intcast { } intcast! { u8 i8 u16 i16 u32 i32 u64 i64 } +#[repr(transparent)] pub struct Atomic { v: UnsafeCell>, } From 85d9ca9ad2879d6575caedc2d304a9d5e38de6c3 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Mon, 22 Apr 2019 10:35:55 -0700 Subject: [PATCH 278/413] Add NativeWasmType trait and modify WasmExternType --- lib/runtime-core/src/typed_func.rs | 46 ++++----- lib/runtime-core/src/types.rs | 150 +++++++++++++++++++---------- 2 files changed, 116 insertions(+), 80 deletions(-) diff --git a/lib/runtime-core/src/typed_func.rs b/lib/runtime-core/src/typed_func.rs index 59c610773..5f14a8fa1 100644 --- a/lib/runtime-core/src/typed_func.rs +++ b/lib/runtime-core/src/typed_func.rs @@ -2,7 +2,7 @@ use crate::{ error::RuntimeError, export::{Context, Export, FuncPointer}, import::IsExport, - types::{FuncSig, Type, WasmExternType}, + types::{FuncSig, NativeWasmType, Type, WasmExternType}, vm::{self, Ctx}, }; use std::{ @@ -135,10 +135,10 @@ where impl TrapEarly for Result where Rets: WasmTypeList, - E: Any, + E: Into> + 'static, { fn report(self) -> Result> { - self.map_err(|err| Box::new(err) as Box) + self.map_err(|err| err.into()) } } @@ -213,22 +213,24 @@ impl WasmTypeList for (A,) { type CStruct = S1; type RetArray = [u64; 1]; fn from_ret_array(array: Self::RetArray) -> Self { - (WasmExternType::from_bits(array[0]),) + (WasmExternType::from_native(NativeWasmType::from_bits( + array[0], + )),) } fn empty_ret_array() -> Self::RetArray { [0u64] } fn from_c_struct(c_struct: Self::CStruct) -> Self { let S1(a) = c_struct; - (a,) + (WasmExternType::from_native(a),) } fn into_c_struct(self) -> Self::CStruct { #[allow(unused_parens, non_snake_case)] let (a,) = self; - S1(a) + S1(WasmExternType::to_native(a)) } fn types() -> &'static [Type] { - &[A::TYPE] + &[A::Native::TYPE] } #[allow(non_snake_case)] unsafe fn call( @@ -237,11 +239,8 @@ impl WasmTypeList for (A,) { wasm: Wasm, ctx: *mut Ctx, ) -> Result { - // type Trampoline = extern "C" fn(*mut Ctx, *const c_void, *const u64, *mut u64); - // type Invoke = extern "C" fn(Trampoline, *mut Ctx, *const c_void, *const u64, *mut u64, &mut WasmTrapInfo) -> bool; - let (a,) = self; - let args = [a.to_bits()]; + let args = [a.to_native().to_bits()]; let mut rets = Rets::empty_ret_array(); let mut trap = WasmTrapInfo::Unknown; @@ -277,7 +276,7 @@ where macro_rules! impl_traits { ( [$repr:ident] $struct_name:ident, $( $x:ident ),* ) => { #[repr($repr)] - pub struct $struct_name <$( $x ),*> ( $( $x ),* ); + pub struct $struct_name <$( $x: WasmExternType ),*> ( $( <$x as WasmExternType>::Native ),* ); impl< $( $x: WasmExternType, )* > WasmTypeList for ( $( $x ),* ) { type CStruct = $struct_name<$( $x ),*>; @@ -285,7 +284,7 @@ macro_rules! impl_traits { fn from_ret_array(array: Self::RetArray) -> Self { #[allow(non_snake_case)] let [ $( $x ),* ] = array; - ( $( WasmExternType::from_bits($x) ),* ) + ( $( WasmExternType::from_native(NativeWasmType::from_bits($x)) ),* ) } fn empty_ret_array() -> Self::RetArray { [0; count_idents!( $( $x ),* )] @@ -293,24 +292,21 @@ macro_rules! impl_traits { fn from_c_struct(c_struct: Self::CStruct) -> Self { #[allow(non_snake_case)] let $struct_name ( $( $x ),* ) = c_struct; - ( $( $x ),* ) + ( $( WasmExternType::from_native($x) ),* ) } fn into_c_struct(self) -> Self::CStruct { #[allow(unused_parens, non_snake_case)] let ( $( $x ),* ) = self; - $struct_name ( $( $x ),* ) + $struct_name ( $( WasmExternType::to_native($x) ),* ) } fn types() -> &'static [Type] { - &[$( $x::TYPE, )*] + &[$( $x::Native::TYPE, )*] } #[allow(non_snake_case)] unsafe fn call(self, f: NonNull, wasm: Wasm, ctx: *mut Ctx) -> Result { - // type Trampoline = extern "C" fn(*mut Ctx, *const c_void, *const u64, *mut u64); - // type Invoke = extern "C" fn(Trampoline, *mut Ctx, *const c_void, *const u64, *mut u64, &mut WasmTrapInfo) -> bool; - #[allow(unused_parens)] let ( $( $x ),* ) = self; - let args = [ $( $x.to_bits() ),* ]; + let args = [ $( $x.to_native().to_bits() ),* ]; let mut rets = Rets::empty_ret_array(); let mut trap = WasmTrapInfo::Unknown; @@ -319,12 +315,6 @@ macro_rules! impl_traits { } else { Err(trap) } - - // let f: extern fn(*mut Ctx $( ,$x )*) -> Rets::CStruct = mem::transmute(f); - // #[allow(unused_parens)] - // let ( $( $x ),* ) = self; - // let c_struct = f(ctx $( ,$x )*); - // Rets::from_c_struct(c_struct) } } @@ -335,11 +325,11 @@ macro_rules! impl_traits { /// This is required for the llvm backend to be able to unwind through this function. #[cfg_attr(nightly, unwind(allowed))] - extern fn wrap<$( $x: WasmExternType, )* Rets: WasmTypeList, Trap: TrapEarly, FN: Fn( &mut Ctx $( ,$x )* ) -> Trap>( ctx: &mut Ctx $( ,$x: $x )* ) -> Rets::CStruct { + extern fn wrap<$( $x: WasmExternType, )* Rets: WasmTypeList, Trap: TrapEarly, FN: Fn( &mut Ctx $( ,$x )* ) -> Trap>( ctx: &mut Ctx $( ,$x: <$x as WasmExternType>::Native )* ) -> Rets::CStruct { let f: FN = unsafe { mem::transmute_copy(&()) }; let err = match panic::catch_unwind(panic::AssertUnwindSafe(|| { - let res = f( ctx $( ,$x )* ).report(); + let res = f( ctx $( ,WasmExternType::from_native($x) )* ).report(); res })) { Ok(Ok(returns)) => return returns.into_c_struct(), diff --git a/lib/runtime-core/src/types.rs b/lib/runtime-core/src/types.rs index 79ef5da7f..bf5df2183 100644 --- a/lib/runtime-core/src/types.rs +++ b/lib/runtime-core/src/types.rs @@ -71,103 +71,149 @@ impl From for Value { } } -pub unsafe trait WasmExternType: Copy + Clone +pub unsafe trait NativeWasmType: Copy + Into where Self: Sized, { const TYPE: Type; + fn from_bits(bits: u64) -> Self; fn to_bits(self) -> u64; - fn from_bits(n: u64) -> Self; +} + +unsafe impl NativeWasmType for i32 { + const TYPE: Type = Type::I32; + fn from_bits(bits: u64) -> Self { + bits as _ + } + fn to_bits(self) -> u64 { + self as _ + } +} +unsafe impl NativeWasmType for i64 { + const TYPE: Type = Type::I64; + fn from_bits(bits: u64) -> Self { + bits as _ + } + fn to_bits(self) -> u64 { + self as _ + } +} +unsafe impl NativeWasmType for f32 { + const TYPE: Type = Type::F32; + fn from_bits(bits: u64) -> Self { + bits as _ + } + fn to_bits(self) -> u64 { + self as _ + } +} +unsafe impl NativeWasmType for f64 { + const TYPE: Type = Type::F64; + fn from_bits(bits: u64) -> Self { + bits as _ + } + fn to_bits(self) -> u64 { + self as _ + } +} + +pub unsafe trait WasmExternType: Copy +where + Self: Sized, +{ + type Native: NativeWasmType; + fn from_native(native: Self::Native) -> Self; + fn to_native(self) -> Self::Native; } unsafe impl WasmExternType for i8 { - const TYPE: Type = Type::I32; - fn to_bits(self) -> u64 { - self as u64 + type Native = i32; + fn from_native(native: Self::Native) -> Self { + native as _ } - fn from_bits(n: u64) -> Self { - n as _ + fn to_native(self) -> Self::Native { + self as _ } } unsafe impl WasmExternType for u8 { - const TYPE: Type = Type::I32; - fn to_bits(self) -> u64 { - self as u64 + type Native = i32; + fn from_native(native: Self::Native) -> Self { + native as _ } - fn from_bits(n: u64) -> Self { - n as _ + fn to_native(self) -> Self::Native { + self as _ } } unsafe impl WasmExternType for i16 { - const TYPE: Type = Type::I32; - fn to_bits(self) -> u64 { - self as u64 + type Native = i32; + fn from_native(native: Self::Native) -> Self { + native as _ } - fn from_bits(n: u64) -> Self { - n as _ + fn to_native(self) -> Self::Native { + self as _ } } unsafe impl WasmExternType for u16 { - const TYPE: Type = Type::I32; - fn to_bits(self) -> u64 { - self as u64 + type Native = i32; + fn from_native(native: Self::Native) -> Self { + native as _ } - fn from_bits(n: u64) -> Self { - n as _ + fn to_native(self) -> Self::Native { + self as _ } } unsafe impl WasmExternType for i32 { - const TYPE: Type = Type::I32; - fn to_bits(self) -> u64 { - self as u64 + type Native = i32; + fn from_native(native: Self::Native) -> Self { + native } - fn from_bits(n: u64) -> Self { - n as _ + fn to_native(self) -> Self::Native { + self } } unsafe impl WasmExternType for u32 { - const TYPE: Type = Type::I32; - fn to_bits(self) -> u64 { - self as u64 + type Native = i32; + fn from_native(native: Self::Native) -> Self { + native as _ } - fn from_bits(n: u64) -> Self { - n as _ + fn to_native(self) -> Self::Native { + self as _ } } unsafe impl WasmExternType for i64 { - const TYPE: Type = Type::I64; - fn to_bits(self) -> u64 { - self as u64 + type Native = i64; + fn from_native(native: Self::Native) -> Self { + native } - fn from_bits(n: u64) -> Self { - n as _ + fn to_native(self) -> Self::Native { + self } } unsafe impl WasmExternType for u64 { - const TYPE: Type = Type::I64; - fn to_bits(self) -> u64 { - self + type Native = i64; + fn from_native(native: Self::Native) -> Self { + native as _ } - fn from_bits(n: u64) -> Self { - n + fn to_native(self) -> Self::Native { + self as _ } } unsafe impl WasmExternType for f32 { - const TYPE: Type = Type::F32; - fn to_bits(self) -> u64 { - self.to_bits() as u64 + type Native = f32; + fn from_native(native: Self::Native) -> Self { + native } - fn from_bits(n: u64) -> Self { - f32::from_bits(n as u32) + fn to_native(self) -> Self::Native { + self } } unsafe impl WasmExternType for f64 { - const TYPE: Type = Type::F64; - fn to_bits(self) -> u64 { - self.to_bits() + type Native = f64; + fn from_native(native: Self::Native) -> Self { + native } - fn from_bits(n: u64) -> Self { - f64::from_bits(n) + fn to_native(self) -> Self::Native { + self } } From 74b6ba4eaf307091e34c957ede66b1579e180378 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Mon, 22 Apr 2019 11:42:52 -0700 Subject: [PATCH 279/413] Return type normalization, and change return errors from imported functions --- lib/clif-backend/src/signal/unix.rs | 2 +- lib/emscripten/src/varargs.rs | 13 +-- lib/runtime-core/src/error.rs | 10 +- lib/runtime-core/src/typed_func.rs | 22 ++-- lib/wasi/src/lib.rs | 6 ++ lib/wasi/src/ptr.rs | 10 +- lib/wasi/src/syscalls/mod.rs | 5 +- lib/wasi/src/syscalls/types.rs | 156 ++++++++++++++-------------- 8 files changed, 115 insertions(+), 109 deletions(-) diff --git a/lib/clif-backend/src/signal/unix.rs b/lib/clif-backend/src/signal/unix.rs index feaf4e2e2..3e57a1588 100644 --- a/lib/clif-backend/src/signal/unix.rs +++ b/lib/clif-backend/src/signal/unix.rs @@ -76,7 +76,7 @@ pub fn call_protected(handler_data: &HandlerData, f: impl FnOnce() -> T) -> R *jmp_buf = prev_jmp_buf; if let Some(data) = super::TRAP_EARLY_DATA.with(|cell| cell.replace(None)) { - Err(RuntimeError::Panic { data }) + Err(RuntimeError::Error { data }) } else { let (faulting_addr, inst_ptr) = CAUGHT_ADDRESSES.with(|cell| cell.get()); diff --git a/lib/emscripten/src/varargs.rs b/lib/emscripten/src/varargs.rs index 3775d102c..a6a1fe46b 100644 --- a/lib/emscripten/src/varargs.rs +++ b/lib/emscripten/src/varargs.rs @@ -1,8 +1,5 @@ use std::mem; -use wasmer_runtime_core::{ - types::{Type, WasmExternType}, - vm::Ctx, -}; +use wasmer_runtime_core::{types::WasmExternType, vm::Ctx}; #[repr(transparent)] #[derive(Copy, Clone)] @@ -19,12 +16,12 @@ impl VarArgs { } unsafe impl WasmExternType for VarArgs { - const TYPE: Type = Type::I32; + type Native = i32; - fn to_bits(self) -> u64 { - self.pointer as u64 + fn to_native(self) -> Self::Native { + self.pointer as _ } - fn from_bits(n: u64) -> Self { + fn from_native(n: Self::Native) -> Self { Self { pointer: n as u32 } } } diff --git a/lib/runtime-core/src/error.rs b/lib/runtime-core/src/error.rs index 090214834..84ea04bc2 100644 --- a/lib/runtime-core/src/error.rs +++ b/lib/runtime-core/src/error.rs @@ -1,4 +1,4 @@ -use crate::types::{FuncSig, GlobalDescriptor, MemoryDescriptor, TableDescriptor, Type, Value}; +use crate::types::{FuncSig, GlobalDescriptor, MemoryDescriptor, TableDescriptor, Type}; use core::borrow::Borrow; use std::any::Any; @@ -121,8 +121,7 @@ impl std::error::Error for LinkError {} /// Comparing two `RuntimeError`s always evaluates to false. pub enum RuntimeError { Trap { msg: Box }, - Exception { data: Box<[Value]> }, - Panic { data: Box }, + Error { data: Box }, } impl PartialEq for RuntimeError { @@ -137,10 +136,7 @@ impl std::fmt::Display for RuntimeError { RuntimeError::Trap { ref msg } => { write!(f, "WebAssembly trap occured during runtime: {}", msg) } - RuntimeError::Exception { ref data } => { - write!(f, "Uncaught WebAssembly exception: {:?}", data) - } - RuntimeError::Panic { data } => { + RuntimeError::Error { data } => { let msg = if let Some(s) = data.downcast_ref::() { s } else if let Some(s) = data.downcast_ref::<&str>() { diff --git a/lib/runtime-core/src/typed_func.rs b/lib/runtime-core/src/typed_func.rs index 5f14a8fa1..ef1b3c077 100644 --- a/lib/runtime-core/src/typed_func.rs +++ b/lib/runtime-core/src/typed_func.rs @@ -7,6 +7,7 @@ use crate::{ }; use std::{ any::Any, + convert::Infallible, ffi::c_void, fmt, marker::PhantomData, @@ -120,14 +121,16 @@ pub trait TrapEarly where Rets: WasmTypeList, { - fn report(self) -> Result>; + type Error: 'static; + fn report(self) -> Result; } impl TrapEarly for Rets where Rets: WasmTypeList, { - fn report(self) -> Result> { + type Error = Infallible; + fn report(self) -> Result { Ok(self) } } @@ -135,10 +138,11 @@ where impl TrapEarly for Result where Rets: WasmTypeList, - E: Into> + 'static, + E: 'static, { - fn report(self) -> Result> { - self.map_err(|err| err.into()) + type Error = E; + fn report(self) -> Result { + self } } @@ -329,11 +333,13 @@ macro_rules! impl_traits { let f: FN = unsafe { mem::transmute_copy(&()) }; let err = match panic::catch_unwind(panic::AssertUnwindSafe(|| { - let res = f( ctx $( ,WasmExternType::from_native($x) )* ).report(); - res + f( ctx $( ,WasmExternType::from_native($x) )* ).report() })) { Ok(Ok(returns)) => return returns.into_c_struct(), - Ok(Err(err)) => err, + Ok(Err(err)) => { + let b: Box<_> = err.into(); + b as Box + }, Err(err) => err, }; diff --git a/lib/wasi/src/lib.rs b/lib/wasi/src/lib.rs index c08428dbe..82de5ad1f 100644 --- a/lib/wasi/src/lib.rs +++ b/lib/wasi/src/lib.rs @@ -17,6 +17,12 @@ pub use self::utils::is_wasi_module; use wasmer_runtime_core::{func, import::ImportObject, imports}; +/// This is returned in the Box RuntimeError::Error variant. +/// Use `downcast` or `downcast_ref` to retrieve the `ExitCode`. +pub struct ExitCode { + pub code: syscalls::types::__wasi_exitcode_t, +} + pub fn generate_import_object( args: Vec>, envs: Vec>, diff --git a/lib/wasi/src/ptr.rs b/lib/wasi/src/ptr.rs index 85a582df0..55a16d40c 100644 --- a/lib/wasi/src/ptr.rs +++ b/lib/wasi/src/ptr.rs @@ -2,7 +2,7 @@ use crate::syscalls::types::{__wasi_errno_t, __WASI_EFAULT}; use std::{cell::Cell, fmt, marker::PhantomData, mem}; use wasmer_runtime_core::{ memory::Memory, - types::{Type, ValueType, WasmExternType}, + types::{ValueType, WasmExternType}, }; pub struct Array; @@ -73,12 +73,12 @@ impl WasmPtr { } unsafe impl WasmExternType for WasmPtr { - const TYPE: Type = Type::I32; + type Native = i32; - fn to_bits(self) -> u64 { - self.offset as u64 + fn to_native(self) -> Self::Native { + self.offset as i32 } - fn from_bits(n: u64) -> Self { + fn from_native(n: Self::Native) -> Self { Self { offset: n as u32, _phantom: PhantomData, diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index a436444fb..ba9d66b5d 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -9,6 +9,7 @@ use self::types::*; use crate::{ ptr::{Array, WasmPtr}, state::{Fd, InodeVal, Kind, WasiFile, WasiState, MAX_SYMLINKS}, + ExitCode, }; use rand::{thread_rng, Rng}; use std::cell::Cell; @@ -1430,9 +1431,9 @@ pub fn poll_oneoff( debug!("wasi::poll_oneoff"); unimplemented!() } -pub fn proc_exit(ctx: &mut Ctx, rval: __wasi_exitcode_t) -> Result<(), &'static str> { +pub fn proc_exit(ctx: &mut Ctx, code: __wasi_exitcode_t) -> Result<(), ExitCode> { debug!("wasi::proc_exit, {}", rval); - Err("Instance exited") + Err(ExitCode { code }) } pub fn proc_raise(ctx: &mut Ctx, sig: __wasi_signal_t) -> __wasi_errno_t { debug!("wasi::proc_raise"); diff --git a/lib/wasi/src/syscalls/types.rs b/lib/wasi/src/syscalls/types.rs index c030df312..c239031a4 100644 --- a/lib/wasi/src/syscalls/types.rs +++ b/lib/wasi/src/syscalls/types.rs @@ -43,84 +43,84 @@ pub struct __wasi_dirent_t { pub d_type: __wasi_filetype_t, } -pub type __wasi_errno_t = u32; -pub const __WASI_ESUCCESS: u32 = 0; -pub const __WASI_E2BIG: u32 = 1; -pub const __WASI_EACCES: u32 = 2; -pub const __WASI_EADDRINUSE: u32 = 3; -pub const __WASI_EADDRNOTAVAIL: u32 = 4; -pub const __WASI_EAFNOSUPPORT: u32 = 5; -pub const __WASI_EAGAIN: u32 = 6; -pub const __WASI_EALREADY: u32 = 7; -pub const __WASI_EBADF: u32 = 8; -pub const __WASI_EBADMSG: u32 = 9; -pub const __WASI_EBUSY: u32 = 10; -pub const __WASI_ECANCELED: u32 = 11; -pub const __WASI_ECHILD: u32 = 12; -pub const __WASI_ECONNABORTED: u32 = 13; -pub const __WASI_ECONNREFUSED: u32 = 14; -pub const __WASI_ECONNRESET: u32 = 15; -pub const __WASI_EDEADLK: u32 = 16; -pub const __WASI_EDESTADDRREQ: u32 = 17; -pub const __WASI_EDOM: u32 = 18; -pub const __WASI_EDQUOT: u32 = 19; -pub const __WASI_EEXIST: u32 = 20; -pub const __WASI_EFAULT: u32 = 21; -pub const __WASI_EFBIG: u32 = 22; -pub const __WASI_EHOSTUNREACH: u32 = 23; -pub const __WASI_EIDRM: u32 = 24; -pub const __WASI_EILSEQ: u32 = 25; -pub const __WASI_EINPROGRESS: u32 = 26; -pub const __WASI_EINTR: u32 = 27; -pub const __WASI_EINVAL: u32 = 28; -pub const __WASI_EIO: u32 = 29; -pub const __WASI_EISCONN: u32 = 30; -pub const __WASI_EISDIR: u32 = 31; -pub const __WASI_ELOOP: u32 = 32; -pub const __WASI_EMFILE: u32 = 33; -pub const __WASI_EMLINK: u32 = 34; -pub const __WASI_EMSGSIZE: u32 = 35; -pub const __WASI_EMULTIHOP: u32 = 36; -pub const __WASI_ENAMETOOLONG: u32 = 37; -pub const __WASI_ENETDOWN: u32 = 38; -pub const __WASI_ENETRESET: u32 = 39; -pub const __WASI_ENETUNREACH: u32 = 40; -pub const __WASI_ENFILE: u32 = 41; -pub const __WASI_ENOBUFS: u32 = 42; -pub const __WASI_ENODEV: u32 = 43; -pub const __WASI_ENOENT: u32 = 44; -pub const __WASI_ENOEXEC: u32 = 45; -pub const __WASI_ENOLCK: u32 = 46; -pub const __WASI_ENOLINK: u32 = 47; -pub const __WASI_ENOMEM: u32 = 48; -pub const __WASI_ENOMSG: u32 = 49; -pub const __WASI_ENOPROTOOPT: u32 = 50; -pub const __WASI_ENOSPC: u32 = 51; -pub const __WASI_ENOSYS: u32 = 52; -pub const __WASI_ENOTCONN: u32 = 53; -pub const __WASI_ENOTDIR: u32 = 54; -pub const __WASI_ENOTEMPTY: u32 = 55; -pub const __WASI_ENOTRECOVERABLE: u32 = 56; -pub const __WASI_ENOTSOCK: u32 = 57; -pub const __WASI_ENOTSUP: u32 = 58; -pub const __WASI_ENOTTY: u32 = 59; -pub const __WASI_ENXIO: u32 = 60; -pub const __WASI_EOVERFLOW: u32 = 61; -pub const __WASI_EOWNERDEAD: u32 = 62; -pub const __WASI_EPERM: u32 = 63; -pub const __WASI_EPIPE: u32 = 64; -pub const __WASI_EPROTO: u32 = 65; -pub const __WASI_EPROTONOSUPPORT: u32 = 66; -pub const __WASI_EPROTOTYPE: u32 = 67; -pub const __WASI_ERANGE: u32 = 68; -pub const __WASI_EROFS: u32 = 69; -pub const __WASI_ESPIPE: u32 = 70; -pub const __WASI_ESRCH: u32 = 71; -pub const __WASI_ESTALE: u32 = 72; -pub const __WASI_ETIMEDOUT: u32 = 73; -pub const __WASI_ETXTBSY: u32 = 74; -pub const __WASI_EXDEV: u32 = 75; -pub const __WASI_ENOTCAPABLE: u32 = 76; +pub type __wasi_errno_t = u16; +pub const __WASI_ESUCCESS: u16 = 0; +pub const __WASI_E2BIG: u16 = 1; +pub const __WASI_EACCES: u16 = 2; +pub const __WASI_EADDRINUSE: u16 = 3; +pub const __WASI_EADDRNOTAVAIL: u16 = 4; +pub const __WASI_EAFNOSUPPORT: u16 = 5; +pub const __WASI_EAGAIN: u16 = 6; +pub const __WASI_EALREADY: u16 = 7; +pub const __WASI_EBADF: u16 = 8; +pub const __WASI_EBADMSG: u16 = 9; +pub const __WASI_EBUSY: u16 = 10; +pub const __WASI_ECANCELED: u16 = 11; +pub const __WASI_ECHILD: u16 = 12; +pub const __WASI_ECONNABORTED: u16 = 13; +pub const __WASI_ECONNREFUSED: u16 = 14; +pub const __WASI_ECONNRESET: u16 = 15; +pub const __WASI_EDEADLK: u16 = 16; +pub const __WASI_EDESTADDRREQ: u16 = 17; +pub const __WASI_EDOM: u16 = 18; +pub const __WASI_EDQUOT: u16 = 19; +pub const __WASI_EEXIST: u16 = 20; +pub const __WASI_EFAULT: u16 = 21; +pub const __WASI_EFBIG: u16 = 22; +pub const __WASI_EHOSTUNREACH: u16 = 23; +pub const __WASI_EIDRM: u16 = 24; +pub const __WASI_EILSEQ: u16 = 25; +pub const __WASI_EINPROGRESS: u16 = 26; +pub const __WASI_EINTR: u16 = 27; +pub const __WASI_EINVAL: u16 = 28; +pub const __WASI_EIO: u16 = 29; +pub const __WASI_EISCONN: u16 = 30; +pub const __WASI_EISDIR: u16 = 31; +pub const __WASI_ELOOP: u16 = 32; +pub const __WASI_EMFILE: u16 = 33; +pub const __WASI_EMLINK: u16 = 34; +pub const __WASI_EMSGSIZE: u16 = 35; +pub const __WASI_EMULTIHOP: u16 = 36; +pub const __WASI_ENAMETOOLONG: u16 = 37; +pub const __WASI_ENETDOWN: u16 = 38; +pub const __WASI_ENETRESET: u16 = 39; +pub const __WASI_ENETUNREACH: u16 = 40; +pub const __WASI_ENFILE: u16 = 41; +pub const __WASI_ENOBUFS: u16 = 42; +pub const __WASI_ENODEV: u16 = 43; +pub const __WASI_ENOENT: u16 = 44; +pub const __WASI_ENOEXEC: u16 = 45; +pub const __WASI_ENOLCK: u16 = 46; +pub const __WASI_ENOLINK: u16 = 47; +pub const __WASI_ENOMEM: u16 = 48; +pub const __WASI_ENOMSG: u16 = 49; +pub const __WASI_ENOPROTOOPT: u16 = 50; +pub const __WASI_ENOSPC: u16 = 51; +pub const __WASI_ENOSYS: u16 = 52; +pub const __WASI_ENOTCONN: u16 = 53; +pub const __WASI_ENOTDIR: u16 = 54; +pub const __WASI_ENOTEMPTY: u16 = 55; +pub const __WASI_ENOTRECOVERABLE: u16 = 56; +pub const __WASI_ENOTSOCK: u16 = 57; +pub const __WASI_ENOTSUP: u16 = 58; +pub const __WASI_ENOTTY: u16 = 59; +pub const __WASI_ENXIO: u16 = 60; +pub const __WASI_EOVERFLOW: u16 = 61; +pub const __WASI_EOWNERDEAD: u16 = 62; +pub const __WASI_EPERM: u16 = 63; +pub const __WASI_EPIPE: u16 = 64; +pub const __WASI_EPROTO: u16 = 65; +pub const __WASI_EPROTONOSUPPORT: u16 = 66; +pub const __WASI_EPROTOTYPE: u16 = 67; +pub const __WASI_ERANGE: u16 = 68; +pub const __WASI_EROFS: u16 = 69; +pub const __WASI_ESPIPE: u16 = 70; +pub const __WASI_ESRCH: u16 = 71; +pub const __WASI_ESTALE: u16 = 72; +pub const __WASI_ETIMEDOUT: u16 = 73; +pub const __WASI_ETXTBSY: u16 = 74; +pub const __WASI_EXDEV: u16 = 75; +pub const __WASI_ENOTCAPABLE: u16 = 76; #[derive(Debug, Copy, Clone, PartialEq, Eq)] #[repr(C)] From 39ebca366cd5ce93a3904e6eeb426b303a9d37a2 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Mon, 22 Apr 2019 11:44:31 -0700 Subject: [PATCH 280/413] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9284916aa..4a96a0999 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ All PRs to the Wasmer repository must add to this file. Blocks of changes will separated by version increments. ## **[Unreleased]** +- [#379](https://github.com/wasmerio/wasmer/pull/379) Fix small return types from imported functions. - [#371](https://github.com/wasmerio/wasmer/pull/371) Add more Debug impl for WASI types - [#368](https://github.com/wasmerio/wasmer/pull/368) Fix issue with write buffering - [#343](https://github.com/wasmerio/wasmer/pull/343) Implement preopened files for WASI and fix aligment issue when accessing WASI memory From ecdcab5de9c2f0a9140604458e33e99c0370a3b6 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Mon, 22 Apr 2019 11:47:47 -0700 Subject: [PATCH 281/413] Update singlepass to renamed enum discrimant --- lib/singlepass-backend/src/protect_unix.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/singlepass-backend/src/protect_unix.rs b/lib/singlepass-backend/src/protect_unix.rs index 918df5346..30019db13 100644 --- a/lib/singlepass-backend/src/protect_unix.rs +++ b/lib/singlepass-backend/src/protect_unix.rs @@ -76,7 +76,7 @@ pub fn call_protected(f: impl FnOnce() -> T) -> RuntimeResult { *jmp_buf = prev_jmp_buf; if let Some(data) = TRAP_EARLY_DATA.with(|cell| cell.replace(None)) { - Err(RuntimeError::Panic { data }) + Err(RuntimeError::Error { data }) } else { let (faulting_addr, _inst_ptr) = CAUGHT_ADDRESSES.with(|cell| cell.get()); From 7940aa7e426f2b7728c31ddb54cb8c94916df32b Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Mon, 22 Apr 2019 11:57:50 -0700 Subject: [PATCH 282/413] Fix renamed variable --- lib/wasi/src/syscalls/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index ba9d66b5d..ddbb0e517 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -1432,7 +1432,7 @@ pub fn poll_oneoff( unimplemented!() } pub fn proc_exit(ctx: &mut Ctx, code: __wasi_exitcode_t) -> Result<(), ExitCode> { - debug!("wasi::proc_exit, {}", rval); + debug!("wasi::proc_exit, {}", code); Err(ExitCode { code }) } pub fn proc_raise(ctx: &mut Ctx, sig: __wasi_signal_t) -> __wasi_errno_t { From 878a0e6687067ed26987c3d15d379ae495c9d43d Mon Sep 17 00:00:00 2001 From: Syrus Date: Mon, 22 Apr 2019 12:09:30 -0700 Subject: [PATCH 283/413] =?UTF-8?q?Partial=20Revert=20of=20types=20?= =?UTF-8?q?=E2=80=9CReturn=20type=20normalization,=20and=20change=20return?= =?UTF-8?q?=20errors=20from=20imported=20functions"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 74b6ba4eaf307091e34c957ede66b1579e180378. # Conflicts: # lib/wasi/src/syscalls/mod.rs --- lib/wasi/src/syscalls/types.rs | 156 ++++++++++++++++----------------- 1 file changed, 78 insertions(+), 78 deletions(-) diff --git a/lib/wasi/src/syscalls/types.rs b/lib/wasi/src/syscalls/types.rs index c239031a4..c030df312 100644 --- a/lib/wasi/src/syscalls/types.rs +++ b/lib/wasi/src/syscalls/types.rs @@ -43,84 +43,84 @@ pub struct __wasi_dirent_t { pub d_type: __wasi_filetype_t, } -pub type __wasi_errno_t = u16; -pub const __WASI_ESUCCESS: u16 = 0; -pub const __WASI_E2BIG: u16 = 1; -pub const __WASI_EACCES: u16 = 2; -pub const __WASI_EADDRINUSE: u16 = 3; -pub const __WASI_EADDRNOTAVAIL: u16 = 4; -pub const __WASI_EAFNOSUPPORT: u16 = 5; -pub const __WASI_EAGAIN: u16 = 6; -pub const __WASI_EALREADY: u16 = 7; -pub const __WASI_EBADF: u16 = 8; -pub const __WASI_EBADMSG: u16 = 9; -pub const __WASI_EBUSY: u16 = 10; -pub const __WASI_ECANCELED: u16 = 11; -pub const __WASI_ECHILD: u16 = 12; -pub const __WASI_ECONNABORTED: u16 = 13; -pub const __WASI_ECONNREFUSED: u16 = 14; -pub const __WASI_ECONNRESET: u16 = 15; -pub const __WASI_EDEADLK: u16 = 16; -pub const __WASI_EDESTADDRREQ: u16 = 17; -pub const __WASI_EDOM: u16 = 18; -pub const __WASI_EDQUOT: u16 = 19; -pub const __WASI_EEXIST: u16 = 20; -pub const __WASI_EFAULT: u16 = 21; -pub const __WASI_EFBIG: u16 = 22; -pub const __WASI_EHOSTUNREACH: u16 = 23; -pub const __WASI_EIDRM: u16 = 24; -pub const __WASI_EILSEQ: u16 = 25; -pub const __WASI_EINPROGRESS: u16 = 26; -pub const __WASI_EINTR: u16 = 27; -pub const __WASI_EINVAL: u16 = 28; -pub const __WASI_EIO: u16 = 29; -pub const __WASI_EISCONN: u16 = 30; -pub const __WASI_EISDIR: u16 = 31; -pub const __WASI_ELOOP: u16 = 32; -pub const __WASI_EMFILE: u16 = 33; -pub const __WASI_EMLINK: u16 = 34; -pub const __WASI_EMSGSIZE: u16 = 35; -pub const __WASI_EMULTIHOP: u16 = 36; -pub const __WASI_ENAMETOOLONG: u16 = 37; -pub const __WASI_ENETDOWN: u16 = 38; -pub const __WASI_ENETRESET: u16 = 39; -pub const __WASI_ENETUNREACH: u16 = 40; -pub const __WASI_ENFILE: u16 = 41; -pub const __WASI_ENOBUFS: u16 = 42; -pub const __WASI_ENODEV: u16 = 43; -pub const __WASI_ENOENT: u16 = 44; -pub const __WASI_ENOEXEC: u16 = 45; -pub const __WASI_ENOLCK: u16 = 46; -pub const __WASI_ENOLINK: u16 = 47; -pub const __WASI_ENOMEM: u16 = 48; -pub const __WASI_ENOMSG: u16 = 49; -pub const __WASI_ENOPROTOOPT: u16 = 50; -pub const __WASI_ENOSPC: u16 = 51; -pub const __WASI_ENOSYS: u16 = 52; -pub const __WASI_ENOTCONN: u16 = 53; -pub const __WASI_ENOTDIR: u16 = 54; -pub const __WASI_ENOTEMPTY: u16 = 55; -pub const __WASI_ENOTRECOVERABLE: u16 = 56; -pub const __WASI_ENOTSOCK: u16 = 57; -pub const __WASI_ENOTSUP: u16 = 58; -pub const __WASI_ENOTTY: u16 = 59; -pub const __WASI_ENXIO: u16 = 60; -pub const __WASI_EOVERFLOW: u16 = 61; -pub const __WASI_EOWNERDEAD: u16 = 62; -pub const __WASI_EPERM: u16 = 63; -pub const __WASI_EPIPE: u16 = 64; -pub const __WASI_EPROTO: u16 = 65; -pub const __WASI_EPROTONOSUPPORT: u16 = 66; -pub const __WASI_EPROTOTYPE: u16 = 67; -pub const __WASI_ERANGE: u16 = 68; -pub const __WASI_EROFS: u16 = 69; -pub const __WASI_ESPIPE: u16 = 70; -pub const __WASI_ESRCH: u16 = 71; -pub const __WASI_ESTALE: u16 = 72; -pub const __WASI_ETIMEDOUT: u16 = 73; -pub const __WASI_ETXTBSY: u16 = 74; -pub const __WASI_EXDEV: u16 = 75; -pub const __WASI_ENOTCAPABLE: u16 = 76; +pub type __wasi_errno_t = u32; +pub const __WASI_ESUCCESS: u32 = 0; +pub const __WASI_E2BIG: u32 = 1; +pub const __WASI_EACCES: u32 = 2; +pub const __WASI_EADDRINUSE: u32 = 3; +pub const __WASI_EADDRNOTAVAIL: u32 = 4; +pub const __WASI_EAFNOSUPPORT: u32 = 5; +pub const __WASI_EAGAIN: u32 = 6; +pub const __WASI_EALREADY: u32 = 7; +pub const __WASI_EBADF: u32 = 8; +pub const __WASI_EBADMSG: u32 = 9; +pub const __WASI_EBUSY: u32 = 10; +pub const __WASI_ECANCELED: u32 = 11; +pub const __WASI_ECHILD: u32 = 12; +pub const __WASI_ECONNABORTED: u32 = 13; +pub const __WASI_ECONNREFUSED: u32 = 14; +pub const __WASI_ECONNRESET: u32 = 15; +pub const __WASI_EDEADLK: u32 = 16; +pub const __WASI_EDESTADDRREQ: u32 = 17; +pub const __WASI_EDOM: u32 = 18; +pub const __WASI_EDQUOT: u32 = 19; +pub const __WASI_EEXIST: u32 = 20; +pub const __WASI_EFAULT: u32 = 21; +pub const __WASI_EFBIG: u32 = 22; +pub const __WASI_EHOSTUNREACH: u32 = 23; +pub const __WASI_EIDRM: u32 = 24; +pub const __WASI_EILSEQ: u32 = 25; +pub const __WASI_EINPROGRESS: u32 = 26; +pub const __WASI_EINTR: u32 = 27; +pub const __WASI_EINVAL: u32 = 28; +pub const __WASI_EIO: u32 = 29; +pub const __WASI_EISCONN: u32 = 30; +pub const __WASI_EISDIR: u32 = 31; +pub const __WASI_ELOOP: u32 = 32; +pub const __WASI_EMFILE: u32 = 33; +pub const __WASI_EMLINK: u32 = 34; +pub const __WASI_EMSGSIZE: u32 = 35; +pub const __WASI_EMULTIHOP: u32 = 36; +pub const __WASI_ENAMETOOLONG: u32 = 37; +pub const __WASI_ENETDOWN: u32 = 38; +pub const __WASI_ENETRESET: u32 = 39; +pub const __WASI_ENETUNREACH: u32 = 40; +pub const __WASI_ENFILE: u32 = 41; +pub const __WASI_ENOBUFS: u32 = 42; +pub const __WASI_ENODEV: u32 = 43; +pub const __WASI_ENOENT: u32 = 44; +pub const __WASI_ENOEXEC: u32 = 45; +pub const __WASI_ENOLCK: u32 = 46; +pub const __WASI_ENOLINK: u32 = 47; +pub const __WASI_ENOMEM: u32 = 48; +pub const __WASI_ENOMSG: u32 = 49; +pub const __WASI_ENOPROTOOPT: u32 = 50; +pub const __WASI_ENOSPC: u32 = 51; +pub const __WASI_ENOSYS: u32 = 52; +pub const __WASI_ENOTCONN: u32 = 53; +pub const __WASI_ENOTDIR: u32 = 54; +pub const __WASI_ENOTEMPTY: u32 = 55; +pub const __WASI_ENOTRECOVERABLE: u32 = 56; +pub const __WASI_ENOTSOCK: u32 = 57; +pub const __WASI_ENOTSUP: u32 = 58; +pub const __WASI_ENOTTY: u32 = 59; +pub const __WASI_ENXIO: u32 = 60; +pub const __WASI_EOVERFLOW: u32 = 61; +pub const __WASI_EOWNERDEAD: u32 = 62; +pub const __WASI_EPERM: u32 = 63; +pub const __WASI_EPIPE: u32 = 64; +pub const __WASI_EPROTO: u32 = 65; +pub const __WASI_EPROTONOSUPPORT: u32 = 66; +pub const __WASI_EPROTOTYPE: u32 = 67; +pub const __WASI_ERANGE: u32 = 68; +pub const __WASI_EROFS: u32 = 69; +pub const __WASI_ESPIPE: u32 = 70; +pub const __WASI_ESRCH: u32 = 71; +pub const __WASI_ESTALE: u32 = 72; +pub const __WASI_ETIMEDOUT: u32 = 73; +pub const __WASI_ETXTBSY: u32 = 74; +pub const __WASI_EXDEV: u32 = 75; +pub const __WASI_ENOTCAPABLE: u32 = 76; #[derive(Debug, Copy, Clone, PartialEq, Eq)] #[repr(C)] From 3729c4a8b8248b95f60815322cdd006c528220ca Mon Sep 17 00:00:00 2001 From: Syrus Date: Mon, 22 Apr 2019 12:10:39 -0700 Subject: [PATCH 284/413] Revert "Merge #370" This reverts commit 48a8391f5d199dfaf88fac7cc4eefa194a88c572, reversing changes made to 363b46eca7f43ddaf35ee43e4816bc8c1db9b233. --- lib/wasi/src/syscalls/types.rs | 208 ++++++++++++++++----------------- 1 file changed, 104 insertions(+), 104 deletions(-) diff --git a/lib/wasi/src/syscalls/types.rs b/lib/wasi/src/syscalls/types.rs index c030df312..636e1858e 100644 --- a/lib/wasi/src/syscalls/types.rs +++ b/lib/wasi/src/syscalls/types.rs @@ -43,84 +43,84 @@ pub struct __wasi_dirent_t { pub d_type: __wasi_filetype_t, } -pub type __wasi_errno_t = u32; -pub const __WASI_ESUCCESS: u32 = 0; -pub const __WASI_E2BIG: u32 = 1; -pub const __WASI_EACCES: u32 = 2; -pub const __WASI_EADDRINUSE: u32 = 3; -pub const __WASI_EADDRNOTAVAIL: u32 = 4; -pub const __WASI_EAFNOSUPPORT: u32 = 5; -pub const __WASI_EAGAIN: u32 = 6; -pub const __WASI_EALREADY: u32 = 7; -pub const __WASI_EBADF: u32 = 8; -pub const __WASI_EBADMSG: u32 = 9; -pub const __WASI_EBUSY: u32 = 10; -pub const __WASI_ECANCELED: u32 = 11; -pub const __WASI_ECHILD: u32 = 12; -pub const __WASI_ECONNABORTED: u32 = 13; -pub const __WASI_ECONNREFUSED: u32 = 14; -pub const __WASI_ECONNRESET: u32 = 15; -pub const __WASI_EDEADLK: u32 = 16; -pub const __WASI_EDESTADDRREQ: u32 = 17; -pub const __WASI_EDOM: u32 = 18; -pub const __WASI_EDQUOT: u32 = 19; -pub const __WASI_EEXIST: u32 = 20; -pub const __WASI_EFAULT: u32 = 21; -pub const __WASI_EFBIG: u32 = 22; -pub const __WASI_EHOSTUNREACH: u32 = 23; -pub const __WASI_EIDRM: u32 = 24; -pub const __WASI_EILSEQ: u32 = 25; -pub const __WASI_EINPROGRESS: u32 = 26; -pub const __WASI_EINTR: u32 = 27; -pub const __WASI_EINVAL: u32 = 28; -pub const __WASI_EIO: u32 = 29; -pub const __WASI_EISCONN: u32 = 30; -pub const __WASI_EISDIR: u32 = 31; -pub const __WASI_ELOOP: u32 = 32; -pub const __WASI_EMFILE: u32 = 33; -pub const __WASI_EMLINK: u32 = 34; -pub const __WASI_EMSGSIZE: u32 = 35; -pub const __WASI_EMULTIHOP: u32 = 36; -pub const __WASI_ENAMETOOLONG: u32 = 37; -pub const __WASI_ENETDOWN: u32 = 38; -pub const __WASI_ENETRESET: u32 = 39; -pub const __WASI_ENETUNREACH: u32 = 40; -pub const __WASI_ENFILE: u32 = 41; -pub const __WASI_ENOBUFS: u32 = 42; -pub const __WASI_ENODEV: u32 = 43; -pub const __WASI_ENOENT: u32 = 44; -pub const __WASI_ENOEXEC: u32 = 45; -pub const __WASI_ENOLCK: u32 = 46; -pub const __WASI_ENOLINK: u32 = 47; -pub const __WASI_ENOMEM: u32 = 48; -pub const __WASI_ENOMSG: u32 = 49; -pub const __WASI_ENOPROTOOPT: u32 = 50; -pub const __WASI_ENOSPC: u32 = 51; -pub const __WASI_ENOSYS: u32 = 52; -pub const __WASI_ENOTCONN: u32 = 53; -pub const __WASI_ENOTDIR: u32 = 54; -pub const __WASI_ENOTEMPTY: u32 = 55; -pub const __WASI_ENOTRECOVERABLE: u32 = 56; -pub const __WASI_ENOTSOCK: u32 = 57; -pub const __WASI_ENOTSUP: u32 = 58; -pub const __WASI_ENOTTY: u32 = 59; -pub const __WASI_ENXIO: u32 = 60; -pub const __WASI_EOVERFLOW: u32 = 61; -pub const __WASI_EOWNERDEAD: u32 = 62; -pub const __WASI_EPERM: u32 = 63; -pub const __WASI_EPIPE: u32 = 64; -pub const __WASI_EPROTO: u32 = 65; -pub const __WASI_EPROTONOSUPPORT: u32 = 66; -pub const __WASI_EPROTOTYPE: u32 = 67; -pub const __WASI_ERANGE: u32 = 68; -pub const __WASI_EROFS: u32 = 69; -pub const __WASI_ESPIPE: u32 = 70; -pub const __WASI_ESRCH: u32 = 71; -pub const __WASI_ESTALE: u32 = 72; -pub const __WASI_ETIMEDOUT: u32 = 73; -pub const __WASI_ETXTBSY: u32 = 74; -pub const __WASI_EXDEV: u32 = 75; -pub const __WASI_ENOTCAPABLE: u32 = 76; +pub type __wasi_errno_t = u16; +pub const __WASI_ESUCCESS: u16 = 0; +pub const __WASI_E2BIG: u16 = 1; +pub const __WASI_EACCES: u16 = 2; +pub const __WASI_EADDRINUSE: u16 = 3; +pub const __WASI_EADDRNOTAVAIL: u16 = 4; +pub const __WASI_EAFNOSUPPORT: u16 = 5; +pub const __WASI_EAGAIN: u16 = 6; +pub const __WASI_EALREADY: u16 = 7; +pub const __WASI_EBADF: u16 = 8; +pub const __WASI_EBADMSG: u16 = 9; +pub const __WASI_EBUSY: u16 = 10; +pub const __WASI_ECANCELED: u16 = 11; +pub const __WASI_ECHILD: u16 = 12; +pub const __WASI_ECONNABORTED: u16 = 13; +pub const __WASI_ECONNREFUSED: u16 = 14; +pub const __WASI_ECONNRESET: u16 = 15; +pub const __WASI_EDEADLK: u16 = 16; +pub const __WASI_EDESTADDRREQ: u16 = 17; +pub const __WASI_EDOM: u16 = 18; +pub const __WASI_EDQUOT: u16 = 19; +pub const __WASI_EEXIST: u16 = 20; +pub const __WASI_EFAULT: u16 = 21; +pub const __WASI_EFBIG: u16 = 22; +pub const __WASI_EHOSTUNREACH: u16 = 23; +pub const __WASI_EIDRM: u16 = 24; +pub const __WASI_EILSEQ: u16 = 25; +pub const __WASI_EINPROGRESS: u16 = 26; +pub const __WASI_EINTR: u16 = 27; +pub const __WASI_EINVAL: u16 = 28; +pub const __WASI_EIO: u16 = 29; +pub const __WASI_EISCONN: u16 = 30; +pub const __WASI_EISDIR: u16 = 31; +pub const __WASI_ELOOP: u16 = 32; +pub const __WASI_EMFILE: u16 = 33; +pub const __WASI_EMLINK: u16 = 34; +pub const __WASI_EMSGSIZE: u16 = 35; +pub const __WASI_EMULTIHOP: u16 = 36; +pub const __WASI_ENAMETOOLONG: u16 = 37; +pub const __WASI_ENETDOWN: u16 = 38; +pub const __WASI_ENETRESET: u16 = 39; +pub const __WASI_ENETUNREACH: u16 = 40; +pub const __WASI_ENFILE: u16 = 41; +pub const __WASI_ENOBUFS: u16 = 42; +pub const __WASI_ENODEV: u16 = 43; +pub const __WASI_ENOENT: u16 = 44; +pub const __WASI_ENOEXEC: u16 = 45; +pub const __WASI_ENOLCK: u16 = 46; +pub const __WASI_ENOLINK: u16 = 47; +pub const __WASI_ENOMEM: u16 = 48; +pub const __WASI_ENOMSG: u16 = 49; +pub const __WASI_ENOPROTOOPT: u16 = 50; +pub const __WASI_ENOSPC: u16 = 51; +pub const __WASI_ENOSYS: u16 = 52; +pub const __WASI_ENOTCONN: u16 = 53; +pub const __WASI_ENOTDIR: u16 = 54; +pub const __WASI_ENOTEMPTY: u16 = 55; +pub const __WASI_ENOTRECOVERABLE: u16 = 56; +pub const __WASI_ENOTSOCK: u16 = 57; +pub const __WASI_ENOTSUP: u16 = 58; +pub const __WASI_ENOTTY: u16 = 59; +pub const __WASI_ENXIO: u16 = 60; +pub const __WASI_EOVERFLOW: u16 = 61; +pub const __WASI_EOWNERDEAD: u16 = 62; +pub const __WASI_EPERM: u16 = 63; +pub const __WASI_EPIPE: u16 = 64; +pub const __WASI_EPROTO: u16 = 65; +pub const __WASI_EPROTONOSUPPORT: u16 = 66; +pub const __WASI_EPROTOTYPE: u16 = 67; +pub const __WASI_ERANGE: u16 = 68; +pub const __WASI_EROFS: u16 = 69; +pub const __WASI_ESPIPE: u16 = 70; +pub const __WASI_ESRCH: u16 = 71; +pub const __WASI_ESTALE: u16 = 72; +pub const __WASI_ETIMEDOUT: u16 = 73; +pub const __WASI_ETXTBSY: u16 = 74; +pub const __WASI_EXDEV: u16 = 75; +pub const __WASI_ENOTCAPABLE: u16 = 76; #[derive(Debug, Copy, Clone, PartialEq, Eq)] #[repr(C)] @@ -174,8 +174,8 @@ impl __wasi_event_t { } } -pub type __wasi_eventrwflags_t = u32; -pub const __WASI_EVENT_FD_READWRITE_HANGUP: u32 = 1 << 0; +pub type __wasi_eventrwflags_t = u16; +pub const __WASI_EVENT_FD_READWRITE_HANGUP: u16 = 1 << 0; pub type __wasi_eventtype_t = u8; pub const __WASI_EVENTTYPE_CLOCK: u8 = 0; @@ -189,12 +189,12 @@ pub const __WASI_STDIN_FILENO: u32 = 0; pub const __WASI_STDOUT_FILENO: u32 = 1; pub const __WASI_STDERR_FILENO: u32 = 2; -pub type __wasi_fdflags_t = u32; -pub const __WASI_FDFLAG_APPEND: u32 = 1 << 0; -pub const __WASI_FDFLAG_DSYNC: u32 = 1 << 1; -pub const __WASI_FDFLAG_NONBLOCK: u32 = 1 << 2; -pub const __WASI_FDFLAG_RSYNC: u32 = 1 << 3; -pub const __WASI_FDFLAG_SYNC: u32 = 1 << 4; +pub type __wasi_fdflags_t = u16; +pub const __WASI_FDFLAG_APPEND: u16 = 1 << 0; +pub const __WASI_FDFLAG_DSYNC: u16 = 1 << 1; +pub const __WASI_FDFLAG_NONBLOCK: u16 = 1 << 2; +pub const __WASI_FDFLAG_RSYNC: u16 = 1 << 3; +pub const __WASI_FDFLAG_SYNC: u16 = 1 << 4; pub type __wasi_preopentype_t = u8; pub const __WASI_PREOPENTYPE_DIR: u8 = 0; @@ -296,11 +296,11 @@ pub const __WASI_FILETYPE_SOCKET_DGRAM: u8 = 5; pub const __WASI_FILETYPE_SOCKET_STREAM: u8 = 6; pub const __WASI_FILETYPE_SYMBOLIC_LINK: u8 = 7; -pub type __wasi_fstflags_t = u32; -pub const __WASI_FILESTAT_SET_ATIM: u32 = 1 << 0; -pub const __WASI_FILESTAT_SET_ATIM_NOW: u32 = 1 << 1; -pub const __WASI_FILESTAT_SET_MTIM: u32 = 1 << 2; -pub const __WASI_FILESTAT_SET_MTIM_NOW: u32 = 1 << 3; +pub type __wasi_fstflags_t = u16; +pub const __WASI_FILESTAT_SET_ATIM: u16 = 1 << 0; +pub const __WASI_FILESTAT_SET_ATIM_NOW: u16 = 1 << 1; +pub const __WASI_FILESTAT_SET_MTIM: u16 = 1 << 2; +pub const __WASI_FILESTAT_SET_MTIM_NOW: u16 = 1 << 3; pub type __wasi_inode_t = u64; @@ -318,15 +318,15 @@ pub type __wasi_linkcount_t = u32; pub type __wasi_lookupflags_t = u32; pub const __WASI_LOOKUP_SYMLINK_FOLLOW: u32 = 1 << 0; -pub type __wasi_oflags_t = u32; -pub const __WASI_O_CREAT: u32 = 1 << 0; -pub const __WASI_O_DIRECTORY: u32 = 1 << 1; -pub const __WASI_O_EXCL: u32 = 1 << 2; -pub const __WASI_O_TRUNC: u32 = 1 << 3; +pub type __wasi_oflags_t = u16; +pub const __WASI_O_CREAT: u16 = 1 << 0; +pub const __WASI_O_DIRECTORY: u16 = 1 << 1; +pub const __WASI_O_EXCL: u16 = 1 << 2; +pub const __WASI_O_TRUNC: u16 = 1 << 3; -pub type __wasi_riflags_t = u32; -pub const __WASI_SOCK_RECV_PEEK: u32 = 1 << 0; -pub const __WASI_SOCK_RECV_WAITALL: u32 = 1 << 1; +pub type __wasi_riflags_t = u16; +pub const __WASI_SOCK_RECV_PEEK: u16 = 1 << 0; +pub const __WASI_SOCK_RECV_WAITALL: u16 = 1 << 1; pub type __wasi_rights_t = u64; pub const __WASI_RIGHT_FD_DATASYNC: u64 = 1 << 0; @@ -359,14 +359,14 @@ pub const __WASI_RIGHT_PATH_REMOVE_DIRECTORY: u64 = 1 << 26; pub const __WASI_RIGHT_POLL_FD_READWRITE: u64 = 1 << 27; pub const __WASI_RIGHT_SOCK_SHUTDOWN: u64 = 1 << 28; -pub type __wasi_roflags_t = u32; -pub const __WASI_SOCK_RECV_DATA_TRUNCATED: u32 = 1 << 0; +pub type __wasi_roflags_t = u16; +pub const __WASI_SOCK_RECV_DATA_TRUNCATED: u16 = 1 << 0; pub type __wasi_sdflags_t = u8; pub const __WASI_SHUT_RD: u8 = 1 << 0; pub const __WASI_SHUT_WR: u8 = 1 << 1; -pub type __wasi_siflags_t = u32; +pub type __wasi_siflags_t = u16; pub type __wasi_signal_t = u8; pub const __WASI_SIGABRT: u8 = 0; @@ -396,8 +396,8 @@ pub const __WASI_SIGVTALRM: u8 = 23; pub const __WASI_SIGXCPU: u8 = 24; pub const __WASI_SIGXFSZ: u8 = 25; -pub type __wasi_subclockflags_t = u32; -pub const __WASI_SUBSCRIPTION_CLOCK_ABSTIME: u32 = 1 << 0; +pub type __wasi_subclockflags_t = u16; +pub const __WASI_SUBSCRIPTION_CLOCK_ABSTIME: u16 = 1 << 0; #[derive(Debug, Copy, Clone, PartialEq, Eq)] #[repr(C)] From 706ddabf61ea23b66c461ea40068d56011847e1e Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Mon, 22 Apr 2019 15:06:40 -0700 Subject: [PATCH 285/413] Hook up error propagation --- lib/clif-backend/src/signal/mod.rs | 24 ++++++-- lib/clif-backend/src/signal/unix.rs | 47 +++++---------- lib/clif-backend/src/signal/windows.rs | 56 +++++++----------- lib/llvm-backend/build.rs | 2 + lib/llvm-backend/cpp/object_loader.hh | 15 ++++- lib/llvm-backend/src/backend.rs | 1 + lib/runtime-core/src/error.rs | 12 ++-- lib/runtime-core/src/instance.rs | 12 +++- lib/runtime-core/src/typed_func.rs | 67 ++++++++++++++++------ lib/runtime/examples/call.rs | 19 +++++- lib/singlepass-backend/src/codegen_x64.rs | 11 +++- lib/singlepass-backend/src/protect_unix.rs | 40 +++++++------ lib/wasi/src/syscalls/mod.rs | 3 +- 13 files changed, 185 insertions(+), 124 deletions(-) diff --git a/lib/clif-backend/src/signal/mod.rs b/lib/clif-backend/src/signal/mod.rs index 8081f7cf8..660a8ed15 100644 --- a/lib/clif-backend/src/signal/mod.rs +++ b/lib/clif-backend/src/signal/mod.rs @@ -27,6 +27,11 @@ thread_local! { pub static TRAP_EARLY_DATA: Cell>> = Cell::new(None); } +pub enum RunErr { + Trap(WasmTrapInfo), + Error(Box), +} + pub struct Caller { handler_data: HandlerData, trampolines: Arc, @@ -59,7 +64,8 @@ impl RunnableModule for Caller { func: NonNull, args: *const u64, rets: *mut u64, - _trap_info: *mut WasmTrapInfo, + trap_info: *mut WasmTrapInfo, + user_error: *mut Option>, invoke_env: Option>, ) -> bool { let handler_data = &*invoke_env.unwrap().cast().as_ptr(); @@ -68,14 +74,22 @@ impl RunnableModule for Caller { let res = call_protected(handler_data, || { // Leap of faith. trampoline(ctx, func, args, rets); - }) - .is_ok(); + }); // the trampoline is called from C on windows #[cfg(target_os = "windows")] - let res = call_protected(handler_data, trampoline, ctx, func, args, rets).is_ok(); + let res = call_protected(handler_data, trampoline, ctx, func, args, rets); - res + match res { + Err(err) => { + match err { + RunErr::Trap(info) => *trap_info = info, + RunErr::Error(data) => *user_error = Some(data), + } + false + } + Ok(()) => true, + } } let trampoline = self diff --git a/lib/clif-backend/src/signal/unix.rs b/lib/clif-backend/src/signal/unix.rs index 3e57a1588..aa587b757 100644 --- a/lib/clif-backend/src/signal/unix.rs +++ b/lib/clif-backend/src/signal/unix.rs @@ -10,7 +10,7 @@ //! unless you have memory unsafety elsewhere in your code. //! use crate::relocation::{TrapCode, TrapData}; -use crate::signal::HandlerData; +use crate::signal::{HandlerData, RunErr}; use libc::{c_int, c_void, siginfo_t}; use nix::sys::signal::{ sigaction, SaFlags, SigAction, SigHandler, SigSet, Signal, SIGBUS, SIGFPE, SIGILL, SIGSEGV, @@ -18,7 +18,7 @@ use nix::sys::signal::{ use std::cell::{Cell, UnsafeCell}; use std::ptr; use std::sync::Once; -use wasmer_runtime_core::error::{RuntimeError, RuntimeResult}; +use wasmer_runtime_core::typed_func::WasmTrapInfo; extern "C" fn signal_trap_handler( signum: ::nix::libc::c_int, @@ -62,7 +62,7 @@ pub unsafe fn trigger_trap() -> ! { longjmp(jmp_buf as *mut c_void, 0) } -pub fn call_protected(handler_data: &HandlerData, f: impl FnOnce() -> T) -> RuntimeResult { +pub fn call_protected(handler_data: &HandlerData, f: impl FnOnce() -> T) -> Result { unsafe { let jmp_buf = SETJMP_BUFFER.with(|buf| buf.get()); let prev_jmp_buf = *jmp_buf; @@ -76,7 +76,7 @@ pub fn call_protected(handler_data: &HandlerData, f: impl FnOnce() -> T) -> R *jmp_buf = prev_jmp_buf; if let Some(data) = super::TRAP_EARLY_DATA.with(|cell| cell.replace(None)) { - Err(RuntimeError::Error { data }) + Err(RunErr::Error(data)) } else { let (faulting_addr, inst_ptr) = CAUGHT_ADDRESSES.with(|cell| cell.get()); @@ -85,33 +85,18 @@ pub fn call_protected(handler_data: &HandlerData, f: impl FnOnce() -> T) -> R srcloc: _, }) = handler_data.lookup(inst_ptr) { - Err(match Signal::from_c_int(signum) { + Err(RunErr::Trap(match Signal::from_c_int(signum) { Ok(SIGILL) => match trapcode { - TrapCode::BadSignature => RuntimeError::Trap { - msg: "incorrect call_indirect signature".into(), - }, - TrapCode::IndirectCallToNull => RuntimeError::Trap { - msg: "indirect call to null".into(), - }, - TrapCode::HeapOutOfBounds => RuntimeError::Trap { - msg: "memory out-of-bounds access".into(), - }, - TrapCode::TableOutOfBounds => RuntimeError::Trap { - msg: "table out-of-bounds access".into(), - }, - _ => RuntimeError::Trap { - msg: "unknown trap".into(), - }, - }, - Ok(SIGSEGV) | Ok(SIGBUS) => RuntimeError::Trap { - msg: "memory out-of-bounds access".into(), - }, - Ok(SIGFPE) => RuntimeError::Trap { - msg: "illegal arithmetic operation".into(), + TrapCode::BadSignature => WasmTrapInfo::IncorrectCallIndirectSignature, + TrapCode::IndirectCallToNull => WasmTrapInfo::CallIndirectOOB, + TrapCode::HeapOutOfBounds => WasmTrapInfo::MemoryOutOfBounds, + TrapCode::TableOutOfBounds => WasmTrapInfo::CallIndirectOOB, + _ => WasmTrapInfo::Unknown, }, + Ok(SIGSEGV) | Ok(SIGBUS) => WasmTrapInfo::MemoryOutOfBounds, + Ok(SIGFPE) => WasmTrapInfo::IllegalArithmetic, _ => unimplemented!(), - } - .into()) + })) } else { let signal = match Signal::from_c_int(signum) { Ok(SIGFPE) => "floating-point exception", @@ -122,10 +107,8 @@ pub fn call_protected(handler_data: &HandlerData, f: impl FnOnce() -> T) -> R _ => "unkown trapped signal", }; // When the trap-handler is fully implemented, this will return more information. - Err(RuntimeError::Trap { - msg: format!("unknown trap at {:p} - {}", faulting_addr, signal).into(), - } - .into()) + let s = format!("unknown trap at {:p} - {}", faulting_addr, signal); + Err(RunErr::Error(Box::new(s))) } } } else { diff --git a/lib/clif-backend/src/signal/windows.rs b/lib/clif-backend/src/signal/windows.rs index 358b73236..ec117e356 100644 --- a/lib/clif-backend/src/signal/windows.rs +++ b/lib/clif-backend/src/signal/windows.rs @@ -1,10 +1,11 @@ use crate::relocation::{TrapCode, TrapData}; -use crate::signal::HandlerData; +use crate::signal::{HandlerData, RunErr}; use crate::trampoline::Trampoline; use std::cell::Cell; use std::ffi::c_void; use std::ptr::{self, NonNull}; use wasmer_runtime_core::error::{RuntimeError, RuntimeResult}; +use wasmer_runtime_core::typed_func::WasmTrapInfo; use wasmer_runtime_core::vm::Ctx; use wasmer_runtime_core::vm::Func; use wasmer_win_exception_handler::CallProtectedData; @@ -28,7 +29,7 @@ pub fn call_protected( func: NonNull, param_vec: *const u64, return_vec: *mut u64, -) -> RuntimeResult<()> { +) -> Result<(), RunErr> { // TODO: trap early // user code error // if let Some(msg) = super::TRAP_EARLY_DATA.with(|cell| cell.replace(None)) { @@ -52,38 +53,22 @@ pub fn call_protected( srcloc: _, }) = handler_data.lookup(instruction_pointer as _) { - Err(match signum as DWORD { - EXCEPTION_ACCESS_VIOLATION => RuntimeError::Trap { - msg: "memory out-of-bounds access".into(), - }, + Err(RunErr::Trap(match signum as DWORD { + EXCEPTION_ACCESS_VIOLATION => WasmTrapInfo::MemoryOutOfBounds, EXCEPTION_ILLEGAL_INSTRUCTION => match trapcode { - TrapCode::BadSignature => RuntimeError::Trap { - msg: "incorrect call_indirect signature".into(), - }, - TrapCode::IndirectCallToNull => RuntimeError::Trap { - msg: "indirect call to null".into(), - }, - TrapCode::HeapOutOfBounds => RuntimeError::Trap { - msg: "memory out-of-bounds access".into(), - }, - TrapCode::TableOutOfBounds => RuntimeError::Trap { - msg: "table out-of-bounds access".into(), - }, - _ => RuntimeError::Trap { - msg: "unknown trap".into(), - }, + TrapCode::BadSignature => WasmTrapInfo::IncorrectCallIndirectSignature, + TrapCode::IndirectCallToNull => WasmTrapInfo::CallIndirectOOB, + TrapCode::HeapOutOfBounds => WasmTrapInfo::MemoryOutOfBounds, + TrapCode::TableOutOfBounds => WasmTrapInfo::CallIndirectOOB, + TrapCode::UnreachableCodeReached => WasmTrapInfo::Unreachable, + _ => WasmTrapInfo::Unknown, }, - EXCEPTION_STACK_OVERFLOW => RuntimeError::Trap { - msg: "stack overflow trap".into(), - }, - EXCEPTION_INT_DIVIDE_BY_ZERO | EXCEPTION_INT_OVERFLOW => RuntimeError::Trap { - msg: "illegal arithmetic operation".into(), - }, - _ => RuntimeError::Trap { - msg: "unknown trap".into(), - }, - } - .into()) + EXCEPTION_STACK_OVERFLOW => WasmTrapInfo::Unknown, + EXCEPTION_INT_DIVIDE_BY_ZERO | EXCEPTION_INT_OVERFLOW => { + WasmTrapInfo::IllegalArithmetic + } + _ => WasmTrapInfo::Unknown, + })) } else { let signal = match signum as DWORD { EXCEPTION_FLT_DENORMAL_OPERAND @@ -98,10 +83,9 @@ pub fn call_protected( _ => "unkown trapped signal", }; - Err(RuntimeError::Trap { - msg: format!("unknown trap at {} - {}", exception_address, signal).into(), - } - .into()) + let s = format!("unknown trap at {} - {}", exception_address, signal); + + Err(RunErr::Error(Box::new(s))) } } diff --git a/lib/llvm-backend/build.rs b/lib/llvm-backend/build.rs index ed96cae9d..ab59748b1 100644 --- a/lib/llvm-backend/build.rs +++ b/lib/llvm-backend/build.rs @@ -213,6 +213,8 @@ fn main() { println!("cargo:rustc-link-lib=static=llvm-backend"); println!("cargo:rerun-if-changed=build.rs"); + println!("cargo:rerun-if-changed=cpp/object_loader.cpp"); + println!("cargo:rerun-if-changed=cpp/object_loader.hh"); // Enable "nightly" cfg if the current compiler is nightly. if rustc_version::version_meta().unwrap().channel == rustc_version::Channel::Nightly { diff --git a/lib/llvm-backend/cpp/object_loader.hh b/lib/llvm-backend/cpp/object_loader.hh index 134396b78..63630a479 100644 --- a/lib/llvm-backend/cpp/object_loader.hh +++ b/lib/llvm-backend/cpp/object_loader.hh @@ -43,6 +43,11 @@ typedef struct visit_fde_t visit_fde; } callbacks_t; +typedef struct +{ + size_t data, vtable; +} box_any_t; + struct WasmException { public: @@ -61,7 +66,7 @@ struct UncatchableException : WasmException struct UserException : UncatchableException { public: - UserException(size_t data, size_t vtable) : data(data), vtable(vtable) {} + UserException(size_t data, size_t vtable) : error_data({ data, vtable }) {} virtual std::string description() const noexcept override { @@ -69,7 +74,7 @@ struct UserException : UncatchableException } // The parts of a `Box`. - size_t data, vtable; + box_any_t error_data; }; struct WasmTrap : UncatchableException @@ -194,6 +199,7 @@ extern "C" void *params, void *results, WasmTrap::Type *trap_out, + box_any_t *user_error, void *invoke_env) throw() { try @@ -206,6 +212,11 @@ extern "C" *trap_out = e.type; return false; } + catch (const UserException &e) + { + *user_error = e.error_data; + return false; + } catch (const WasmException &e) { *trap_out = WasmTrap::Type::Unknown; diff --git a/lib/llvm-backend/src/backend.rs b/lib/llvm-backend/src/backend.rs index 783a432ff..8d908509e 100644 --- a/lib/llvm-backend/src/backend.rs +++ b/lib/llvm-backend/src/backend.rs @@ -93,6 +93,7 @@ extern "C" { params: *const u64, results: *mut u64, trap_out: *mut WasmTrapInfo, + user_error: *mut Option>, invoke_env: Option>, ) -> bool; } diff --git a/lib/runtime-core/src/error.rs b/lib/runtime-core/src/error.rs index 84ea04bc2..fb25acdb8 100644 --- a/lib/runtime-core/src/error.rs +++ b/lib/runtime-core/src/error.rs @@ -137,15 +137,13 @@ impl std::fmt::Display for RuntimeError { write!(f, "WebAssembly trap occured during runtime: {}", msg) } RuntimeError::Error { data } => { - let msg = if let Some(s) = data.downcast_ref::() { - s + if let Some(s) = data.downcast_ref::() { + write!(f, "\"{}\"", s) } else if let Some(s) = data.downcast_ref::<&str>() { - s + write!(f, "\"{}\"", s) } else { - "user-defined, opaque" - }; - - write!(f, "{}", msg) + write!(f, "unknown error") + } } } } diff --git a/lib/runtime-core/src/instance.rs b/lib/runtime-core/src/instance.rs index db9a2847f..78d0f7d91 100644 --- a/lib/runtime-core/src/instance.rs +++ b/lib/runtime-core/src/instance.rs @@ -528,6 +528,7 @@ fn call_func_with_index( let run_wasm = |result_space: *mut u64| unsafe { let mut trap_info = WasmTrapInfo::Unknown; + let mut user_error = None; let success = invoke( trampoline, @@ -536,15 +537,20 @@ fn call_func_with_index( raw_args.as_ptr(), result_space, &mut trap_info, + &mut user_error, invoke_env, ); if success { Ok(()) } else { - Err(RuntimeError::Trap { - msg: trap_info.to_string().into(), - }) + if let Some(data) = user_error { + Err(RuntimeError::Error { data }) + } else { + Err(RuntimeError::Trap { + msg: trap_info.to_string().into(), + }) + } } }; diff --git a/lib/runtime-core/src/typed_func.rs b/lib/runtime-core/src/typed_func.rs index ef1b3c077..c5ece8594 100644 --- a/lib/runtime-core/src/typed_func.rs +++ b/lib/runtime-core/src/typed_func.rs @@ -58,6 +58,7 @@ pub type Invoke = unsafe extern "C" fn( *const u64, *mut u64, *mut WasmTrapInfo, + *mut Option>, Option>, ) -> bool; @@ -104,7 +105,7 @@ pub trait WasmTypeList { f: NonNull, wasm: Wasm, ctx: *mut Ctx, - ) -> Result + ) -> Result where Rets: WasmTypeList; } @@ -213,6 +214,35 @@ where } } +impl WasmTypeList for Infallible { + type CStruct = Infallible; + type RetArray = [u64; 0]; + fn from_ret_array(_: Self::RetArray) -> Self { + unreachable!() + } + fn empty_ret_array() -> Self::RetArray { + unreachable!() + } + fn from_c_struct(_: Self::CStruct) -> Self { + unreachable!() + } + fn into_c_struct(self) -> Self::CStruct { + unreachable!() + } + fn types() -> &'static [Type] { + unreachable!() + } + #[allow(non_snake_case)] + unsafe fn call( + self, + _: NonNull, + _: Wasm, + _: *mut Ctx, + ) -> Result { + unreachable!() + } +} + impl WasmTypeList for (A,) { type CStruct = S1; type RetArray = [u64; 1]; @@ -242,11 +272,12 @@ impl WasmTypeList for (A,) { f: NonNull, wasm: Wasm, ctx: *mut Ctx, - ) -> Result { + ) -> Result { let (a,) = self; let args = [a.to_native().to_bits()]; let mut rets = Rets::empty_ret_array(); let mut trap = WasmTrapInfo::Unknown; + let mut user_error = None; if (wasm.invoke)( wasm.trampoline, @@ -255,11 +286,18 @@ impl WasmTypeList for (A,) { args.as_ptr(), rets.as_mut().as_mut_ptr(), &mut trap, + &mut user_error, wasm.invoke_env, ) { Ok(Rets::from_ret_array(rets)) } else { - Err(trap) + if let Some(data) = user_error { + Err(RuntimeError::Error { data }) + } else { + Err(RuntimeError::Trap { + msg: trap.to_string().into(), + }) + } } } } @@ -269,11 +307,7 @@ where Rets: WasmTypeList, { pub fn call(&self, a: A) -> Result { - unsafe { ::call(a, self.f, self.inner, self.ctx) }.map_err(|e| { - RuntimeError::Trap { - msg: e.to_string().into(), - } - }) + unsafe { ::call(a, self.f, self.inner, self.ctx) } } } @@ -307,17 +341,22 @@ macro_rules! impl_traits { &[$( $x::Native::TYPE, )*] } #[allow(non_snake_case)] - unsafe fn call(self, f: NonNull, wasm: Wasm, ctx: *mut Ctx) -> Result { + unsafe fn call(self, f: NonNull, wasm: Wasm, ctx: *mut Ctx) -> Result { #[allow(unused_parens)] let ( $( $x ),* ) = self; let args = [ $( $x.to_native().to_bits() ),* ]; let mut rets = Rets::empty_ret_array(); let mut trap = WasmTrapInfo::Unknown; + let mut user_error = None; - if (wasm.invoke)(wasm.trampoline, ctx, f, args.as_ptr(), rets.as_mut().as_mut_ptr(), &mut trap, wasm.invoke_env) { + if (wasm.invoke)(wasm.trampoline, ctx, f, args.as_ptr(), rets.as_mut().as_mut_ptr(), &mut trap, &mut user_error, wasm.invoke_env) { Ok(Rets::from_ret_array(rets)) } else { - Err(trap) + if let Some(data) = user_error { + Err(RuntimeError::Error { data }) + } else { + Err(RuntimeError::Trap { msg: trap.to_string().into() }) + } } } } @@ -359,11 +398,7 @@ macro_rules! impl_traits { #[allow(non_snake_case)] pub fn call(&self, $( $x: $x, )* ) -> Result { #[allow(unused_parens)] - unsafe { <( $( $x ),* ) as WasmTypeList>::call(( $($x),* ), self.f, self.inner, self.ctx) }.map_err(|e| { - RuntimeError::Trap { - msg: e.to_string().into(), - } - }) + unsafe { <( $( $x ),* ) as WasmTypeList>::call(( $($x),* ), self.f, self.inner, self.ctx) } } } }; diff --git a/lib/runtime/examples/call.rs b/lib/runtime/examples/call.rs index a8f27b4c0..cbc632d2e 100644 --- a/lib/runtime/examples/call.rs +++ b/lib/runtime/examples/call.rs @@ -1,4 +1,4 @@ -use wasmer_runtime::{compile, error, imports, Ctx, Func, Value}; +use wasmer_runtime::{compile, error, error::RuntimeError, imports, Ctx, Func, Value}; use wabt::wat2wasm; @@ -7,6 +7,8 @@ static WAT: &'static str = r#" (type (;0;) (func (result i32))) (import "env" "do_panic" (func $do_panic (type 0))) (func $dbz (result i32) + call $do_panic + drop i32.const 42 i32.const 0 i32.div_u @@ -34,8 +36,13 @@ fn foobar(_ctx: &mut Ctx) -> i32 { 42 } -fn do_panic(_ctx: &mut Ctx) -> Result { - Err("error".to_string()) +#[derive(Debug)] +struct ExitCode { + code: i32, +} + +fn do_panic(_ctx: &mut Ctx) -> Result { + Err(ExitCode { code: 42 }) } fn main() -> Result<(), error::Error> { @@ -63,5 +70,11 @@ fn main() -> Result<(), error::Error> { println!("result: {:?}", result); + if let Err(RuntimeError::Error { data }) = result { + if let Ok(exit_code) = data.downcast::() { + println!("exit code: {:?}", exit_code); + } + } + Ok(()) } diff --git a/lib/singlepass-backend/src/codegen_x64.rs b/lib/singlepass-backend/src/codegen_x64.rs index 10f9f16af..acf74e451 100644 --- a/lib/singlepass-backend/src/codegen_x64.rs +++ b/lib/singlepass-backend/src/codegen_x64.rs @@ -205,7 +205,8 @@ impl RunnableModule for X64ExecutionContext { func: NonNull, args: *const u64, rets: *mut u64, - _trap_info: *mut WasmTrapInfo, + trap_info: *mut WasmTrapInfo, + user_error: *mut Option>, num_params_plus_one: Option>, ) -> bool { let args = ::std::slice::from_raw_parts( @@ -227,7 +228,13 @@ impl RunnableModule for X64ExecutionContext { } true } - Err(_) => false, + Err(err) => { + match err { + protect_unix::RunErr::Trap(info) => *trap_info = info, + protect_unix::RunErr::Error(data) => *user_error = Some(data), + } + false + } } } diff --git a/lib/singlepass-backend/src/protect_unix.rs b/lib/singlepass-backend/src/protect_unix.rs index 30019db13..3db54824a 100644 --- a/lib/singlepass-backend/src/protect_unix.rs +++ b/lib/singlepass-backend/src/protect_unix.rs @@ -17,7 +17,7 @@ use std::any::Any; use std::cell::{Cell, UnsafeCell}; use std::ptr; use std::sync::Once; -use wasmer_runtime_core::error::{RuntimeError, RuntimeResult}; +use wasmer_runtime_core::typed_func::WasmTrapInfo; extern "C" fn signal_trap_handler( signum: ::nix::libc::c_int, @@ -62,7 +62,12 @@ pub unsafe fn trigger_trap() -> ! { longjmp(jmp_buf as *mut c_void, 0) } -pub fn call_protected(f: impl FnOnce() -> T) -> RuntimeResult { +pub enum RunErr { + Trap(WasmTrapInfo), + Error(Box), +} + +pub fn call_protected(f: impl FnOnce() -> T) -> Result { unsafe { let jmp_buf = SETJMP_BUFFER.with(|buf| buf.get()); let prev_jmp_buf = *jmp_buf; @@ -76,23 +81,24 @@ pub fn call_protected(f: impl FnOnce() -> T) -> RuntimeResult { *jmp_buf = prev_jmp_buf; if let Some(data) = TRAP_EARLY_DATA.with(|cell| cell.replace(None)) { - Err(RuntimeError::Error { data }) + Err(RunErr::Error(data)) } else { - let (faulting_addr, _inst_ptr) = CAUGHT_ADDRESSES.with(|cell| cell.get()); + // let (faulting_addr, _inst_ptr) = CAUGHT_ADDRESSES.with(|cell| cell.get()); - let signal = match Signal::from_c_int(signum) { - Ok(SIGFPE) => "floating-point exception", - Ok(SIGILL) => "illegal instruction", - Ok(SIGSEGV) => "segmentation violation", - Ok(SIGBUS) => "bus error", - Err(_) => "error while getting the Signal", - _ => "unkown trapped signal", - }; - // When the trap-handler is fully implemented, this will return more information. - Err(RuntimeError::Trap { - msg: format!("unknown trap at {:p} - {}", faulting_addr, signal).into(), - } - .into()) + // let signal = match Signal::from_c_int(signum) { + // Ok(SIGFPE) => "floating-point exception", + // Ok(SIGILL) => "illegal instruction", + // Ok(SIGSEGV) => "segmentation violation", + // Ok(SIGBUS) => "bus error", + // Err(_) => "error while getting the Signal", + // _ => "unkown trapped signal", + // }; + // // When the trap-handler is fully implemented, this will return more information. + // Err(RuntimeError::Trap { + // msg: format!("unknown trap at {:p} - {}", faulting_addr, signal).into(), + // } + // .into()) + Err(RunErr::Trap(WasmTrapInfo::Unknown)) } } else { let ret = f(); // TODO: Switch stack? diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index ddbb0e517..ad2835d77 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -13,6 +13,7 @@ use crate::{ }; use rand::{thread_rng, Rng}; use std::cell::Cell; +use std::convert::Infallible; use std::io::{self, Read, Seek, Write}; use wasmer_runtime_core::{debug, memory::Memory, vm::Ctx}; @@ -1431,7 +1432,7 @@ pub fn poll_oneoff( debug!("wasi::poll_oneoff"); unimplemented!() } -pub fn proc_exit(ctx: &mut Ctx, code: __wasi_exitcode_t) -> Result<(), ExitCode> { +pub fn proc_exit(ctx: &mut Ctx, code: __wasi_exitcode_t) -> Result { debug!("wasi::proc_exit, {}", code); Err(ExitCode { code }) } From aa9cd840857301a200caa7f628b18a34d9e2221e Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Mon, 22 Apr 2019 15:17:47 -0700 Subject: [PATCH 286/413] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a96a0999..c65439f0d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ All PRs to the Wasmer repository must add to this file. Blocks of changes will separated by version increments. ## **[Unreleased]** +- [#381](https://github.com/wasmerio/wasmer/pull/381) Allow retrieving propagated user errors. - [#379](https://github.com/wasmerio/wasmer/pull/379) Fix small return types from imported functions. - [#371](https://github.com/wasmerio/wasmer/pull/371) Add more Debug impl for WASI types - [#368](https://github.com/wasmerio/wasmer/pull/368) Fix issue with write buffering From 14325c975e6611edd11163e9cbdf766336acc9a3 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Mon, 22 Apr 2019 15:36:47 -0700 Subject: [PATCH 287/413] Rename internal enum to make less confusing --- lib/clif-backend/src/signal/mod.rs | 6 +++--- lib/clif-backend/src/signal/unix.rs | 13 ++++++++----- lib/clif-backend/src/signal/windows.rs | 8 ++++---- lib/singlepass-backend/src/codegen_x64.rs | 4 ++-- lib/singlepass-backend/src/protect_unix.rs | 8 ++++---- 5 files changed, 21 insertions(+), 18 deletions(-) diff --git a/lib/clif-backend/src/signal/mod.rs b/lib/clif-backend/src/signal/mod.rs index 660a8ed15..3facce2ad 100644 --- a/lib/clif-backend/src/signal/mod.rs +++ b/lib/clif-backend/src/signal/mod.rs @@ -27,7 +27,7 @@ thread_local! { pub static TRAP_EARLY_DATA: Cell>> = Cell::new(None); } -pub enum RunErr { +pub enum CallProtError { Trap(WasmTrapInfo), Error(Box), } @@ -83,8 +83,8 @@ impl RunnableModule for Caller { match res { Err(err) => { match err { - RunErr::Trap(info) => *trap_info = info, - RunErr::Error(data) => *user_error = Some(data), + CallProtError::Trap(info) => *trap_info = info, + CallProtError::Error(data) => *user_error = Some(data), } false } diff --git a/lib/clif-backend/src/signal/unix.rs b/lib/clif-backend/src/signal/unix.rs index aa587b757..343203b9c 100644 --- a/lib/clif-backend/src/signal/unix.rs +++ b/lib/clif-backend/src/signal/unix.rs @@ -10,7 +10,7 @@ //! unless you have memory unsafety elsewhere in your code. //! use crate::relocation::{TrapCode, TrapData}; -use crate::signal::{HandlerData, RunErr}; +use crate::signal::{CallProtError, HandlerData}; use libc::{c_int, c_void, siginfo_t}; use nix::sys::signal::{ sigaction, SaFlags, SigAction, SigHandler, SigSet, Signal, SIGBUS, SIGFPE, SIGILL, SIGSEGV, @@ -62,7 +62,10 @@ pub unsafe fn trigger_trap() -> ! { longjmp(jmp_buf as *mut c_void, 0) } -pub fn call_protected(handler_data: &HandlerData, f: impl FnOnce() -> T) -> Result { +pub fn call_protected( + handler_data: &HandlerData, + f: impl FnOnce() -> T, +) -> Result { unsafe { let jmp_buf = SETJMP_BUFFER.with(|buf| buf.get()); let prev_jmp_buf = *jmp_buf; @@ -76,7 +79,7 @@ pub fn call_protected(handler_data: &HandlerData, f: impl FnOnce() -> T) -> R *jmp_buf = prev_jmp_buf; if let Some(data) = super::TRAP_EARLY_DATA.with(|cell| cell.replace(None)) { - Err(RunErr::Error(data)) + Err(CallProtError::Error(data)) } else { let (faulting_addr, inst_ptr) = CAUGHT_ADDRESSES.with(|cell| cell.get()); @@ -85,7 +88,7 @@ pub fn call_protected(handler_data: &HandlerData, f: impl FnOnce() -> T) -> R srcloc: _, }) = handler_data.lookup(inst_ptr) { - Err(RunErr::Trap(match Signal::from_c_int(signum) { + Err(CallProtError::Trap(match Signal::from_c_int(signum) { Ok(SIGILL) => match trapcode { TrapCode::BadSignature => WasmTrapInfo::IncorrectCallIndirectSignature, TrapCode::IndirectCallToNull => WasmTrapInfo::CallIndirectOOB, @@ -108,7 +111,7 @@ pub fn call_protected(handler_data: &HandlerData, f: impl FnOnce() -> T) -> R }; // When the trap-handler is fully implemented, this will return more information. let s = format!("unknown trap at {:p} - {}", faulting_addr, signal); - Err(RunErr::Error(Box::new(s))) + Err(CallProtError::Error(Box::new(s))) } } } else { diff --git a/lib/clif-backend/src/signal/windows.rs b/lib/clif-backend/src/signal/windows.rs index ec117e356..30cb44ce6 100644 --- a/lib/clif-backend/src/signal/windows.rs +++ b/lib/clif-backend/src/signal/windows.rs @@ -1,5 +1,5 @@ use crate::relocation::{TrapCode, TrapData}; -use crate::signal::{HandlerData, RunErr}; +use crate::signal::{CallProtError, HandlerData}; use crate::trampoline::Trampoline; use std::cell::Cell; use std::ffi::c_void; @@ -29,7 +29,7 @@ pub fn call_protected( func: NonNull, param_vec: *const u64, return_vec: *mut u64, -) -> Result<(), RunErr> { +) -> Result<(), CallProtError> { // TODO: trap early // user code error // if let Some(msg) = super::TRAP_EARLY_DATA.with(|cell| cell.replace(None)) { @@ -53,7 +53,7 @@ pub fn call_protected( srcloc: _, }) = handler_data.lookup(instruction_pointer as _) { - Err(RunErr::Trap(match signum as DWORD { + Err(CallProtError::Trap(match signum as DWORD { EXCEPTION_ACCESS_VIOLATION => WasmTrapInfo::MemoryOutOfBounds, EXCEPTION_ILLEGAL_INSTRUCTION => match trapcode { TrapCode::BadSignature => WasmTrapInfo::IncorrectCallIndirectSignature, @@ -85,7 +85,7 @@ pub fn call_protected( let s = format!("unknown trap at {} - {}", exception_address, signal); - Err(RunErr::Error(Box::new(s))) + Err(CallProtError::Error(Box::new(s))) } } diff --git a/lib/singlepass-backend/src/codegen_x64.rs b/lib/singlepass-backend/src/codegen_x64.rs index acf74e451..ad4963214 100644 --- a/lib/singlepass-backend/src/codegen_x64.rs +++ b/lib/singlepass-backend/src/codegen_x64.rs @@ -230,8 +230,8 @@ impl RunnableModule for X64ExecutionContext { } Err(err) => { match err { - protect_unix::RunErr::Trap(info) => *trap_info = info, - protect_unix::RunErr::Error(data) => *user_error = Some(data), + protect_unix::CallProtError::Trap(info) => *trap_info = info, + protect_unix::CallProtError::Error(data) => *user_error = Some(data), } false } diff --git a/lib/singlepass-backend/src/protect_unix.rs b/lib/singlepass-backend/src/protect_unix.rs index 3db54824a..213db5f6a 100644 --- a/lib/singlepass-backend/src/protect_unix.rs +++ b/lib/singlepass-backend/src/protect_unix.rs @@ -62,12 +62,12 @@ pub unsafe fn trigger_trap() -> ! { longjmp(jmp_buf as *mut c_void, 0) } -pub enum RunErr { +pub enum CallProtError { Trap(WasmTrapInfo), Error(Box), } -pub fn call_protected(f: impl FnOnce() -> T) -> Result { +pub fn call_protected(f: impl FnOnce() -> T) -> Result { unsafe { let jmp_buf = SETJMP_BUFFER.with(|buf| buf.get()); let prev_jmp_buf = *jmp_buf; @@ -81,7 +81,7 @@ pub fn call_protected(f: impl FnOnce() -> T) -> Result { *jmp_buf = prev_jmp_buf; if let Some(data) = TRAP_EARLY_DATA.with(|cell| cell.replace(None)) { - Err(RunErr::Error(data)) + Err(CallProtError::Error(data)) } else { // let (faulting_addr, _inst_ptr) = CAUGHT_ADDRESSES.with(|cell| cell.get()); @@ -98,7 +98,7 @@ pub fn call_protected(f: impl FnOnce() -> T) -> Result { // msg: format!("unknown trap at {:p} - {}", faulting_addr, signal).into(), // } // .into()) - Err(RunErr::Trap(WasmTrapInfo::Unknown)) + Err(CallProtError::Trap(WasmTrapInfo::Unknown)) } } else { let ret = f(); // TODO: Switch stack? From ff9de181f1aefcf1a1f751dd57573e0cd9b0381f Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Mon, 22 Apr 2019 15:53:21 -0700 Subject: [PATCH 288/413] Add error propagation test --- lib/runtime-core/src/typed_func.rs | 2 +- lib/runtime/tests/error_propagation.rs | 49 ++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 lib/runtime/tests/error_propagation.rs diff --git a/lib/runtime-core/src/typed_func.rs b/lib/runtime-core/src/typed_func.rs index c5ece8594..23a848738 100644 --- a/lib/runtime-core/src/typed_func.rs +++ b/lib/runtime-core/src/typed_func.rs @@ -230,7 +230,7 @@ impl WasmTypeList for Infallible { unreachable!() } fn types() -> &'static [Type] { - unreachable!() + &[] } #[allow(non_snake_case)] unsafe fn call( diff --git a/lib/runtime/tests/error_propagation.rs b/lib/runtime/tests/error_propagation.rs new file mode 100644 index 000000000..1b9f9fccf --- /dev/null +++ b/lib/runtime/tests/error_propagation.rs @@ -0,0 +1,49 @@ +#[test] +fn error_propagation() { + use std::convert::Infallible; + use wabt::wat2wasm; + use wasmer_runtime::{compile, error::RuntimeError, imports, Ctx, Func}; + + static WAT: &'static str = r#" + (module + (type (;0;) (func)) + (import "env" "ret_err" (func $ret_err (type 0))) + (func $call_panic + call $ret_err + ) + (export "call_err" (func $call_panic)) + ) + "#; + + #[derive(Debug)] + struct ExitCode { + code: i32, + } + + fn ret_err(_ctx: &mut Ctx) -> Result { + Err(ExitCode { code: 42 }) + } + + let wasm = wat2wasm(WAT).unwrap(); + + let module = compile(&wasm).unwrap(); + + let instance = module + .instantiate(&imports! { + "env" => { + "ret_err" => Func::new(ret_err), + }, + }) + .unwrap(); + + let foo: Func<(), ()> = instance.func("call_err").unwrap(); + + let result = foo.call(); + + if let Err(RuntimeError::Error { data }) = result { + let exit_code = data.downcast::().unwrap(); + assert_eq!(exit_code.code, 42); + } else { + panic!("didn't return RuntimeError::Error") + } +} From 51cf0d1be718469cbf48ee97d4b17ab6d0e26ee5 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 22 Apr 2019 16:03:04 -0700 Subject: [PATCH 289/413] reduce suggested backends to the ones compiled into wasmer --- src/bin/wasmer.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index b9606a225..4b1908933 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -105,7 +105,22 @@ enum Backend { impl Backend { pub fn variants() -> &'static [&'static str] { - &["singlepass", "cranelift", "llvm"] + #[cfg(all(feature = "backend:singlepass", feature = "backend:llvm"))] + { + &["cranelift", "singlepass", "llvm"] + } + #[cfg(all(not(feature = "backend:singlepass"), feature = "backend:llvm"))] + { + &["cranelift", "llvm"] + } + #[cfg(all(feature = "backend:singlepass", not(feature = "backend:llvm")))] + { + &["cranelift", "singlepass"] + } + #[cfg(all(not(feature = "backend:singlepass"), not(feature = "backend:llvm")))] + { + &["cranelift"] + } } } From 015bf7895374222d6cd39b51218cf6f1f77980d7 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 22 Apr 2019 16:06:22 -0700 Subject: [PATCH 290/413] update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a96a0999..e66436c72 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ All PRs to the Wasmer repository must add to this file. Blocks of changes will separated by version increments. ## **[Unreleased]** +- [#382](https://github.com/wasmerio/wasmer/pull/382) Improve error message on `--backend` flag to only suggest currently enabled backends - [#379](https://github.com/wasmerio/wasmer/pull/379) Fix small return types from imported functions. - [#371](https://github.com/wasmerio/wasmer/pull/371) Add more Debug impl for WASI types - [#368](https://github.com/wasmerio/wasmer/pull/368) Fix issue with write buffering From e8b2660eb7ddcd89fa3d517ed68d9c5479eff3a9 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 22 Apr 2019 16:14:12 -0700 Subject: [PATCH 291/413] greatly simplify logic -- thanks Lachlan! --- src/bin/wasmer.rs | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index 4b1908933..4ab012045 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -105,22 +105,13 @@ enum Backend { impl Backend { pub fn variants() -> &'static [&'static str] { - #[cfg(all(feature = "backend:singlepass", feature = "backend:llvm"))] - { - &["cranelift", "singlepass", "llvm"] - } - #[cfg(all(not(feature = "backend:singlepass"), feature = "backend:llvm"))] - { - &["cranelift", "llvm"] - } - #[cfg(all(feature = "backend:singlepass", not(feature = "backend:llvm")))] - { - &["cranelift", "singlepass"] - } - #[cfg(all(not(feature = "backend:singlepass"), not(feature = "backend:llvm")))] - { - &["cranelift"] - } + &[ + "cranelift", + #[cfg(feature = "backend:singlepass")] + "singlepass", + #[cfg(feature = "backend:llvm")] + "llvm", + ] } } From 76f479843666259f3f482be247252e9f913cd993 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Mon, 22 Apr 2019 16:45:36 -0700 Subject: [PATCH 292/413] Hook up wasi exit code to wasmer cli --- examples/exit.wat | 11 +++++ src/bin/wasmer.rs | 121 +++++++++++++++++++++++++++------------------- 2 files changed, 83 insertions(+), 49 deletions(-) create mode 100644 examples/exit.wat diff --git a/examples/exit.wat b/examples/exit.wat new file mode 100644 index 000000000..b2f832cb3 --- /dev/null +++ b/examples/exit.wat @@ -0,0 +1,11 @@ +(module + (import "wasi_unstable" "proc_exit" (func $proc_exit (param i32))) + (export "_start" (func $_start)) + + (memory 10) + (export "memory" (memory 0)) + + (func $_start + (call $proc_exit (i32.const 7)) + ) +) diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index b9606a225..721192a13 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -11,12 +11,14 @@ use std::str::FromStr; use hashbrown::HashMap; use structopt::StructOpt; -use wasmer::webassembly::InstanceABI; use wasmer::*; use wasmer_clif_backend::CraneliftCompiler; #[cfg(feature = "backend:llvm")] use wasmer_llvm_backend::LLVMCompiler; -use wasmer_runtime::cache::{Cache as BaseCache, FileSystemCache, WasmHash, WASMER_VERSION_HASH}; +use wasmer_runtime::{ + cache::{Cache as BaseCache, FileSystemCache, WasmHash, WASMER_VERSION_HASH}, + Func, Value, error::RuntimeError, +}; use wasmer_runtime_core::{ self, backend::{Compiler, CompilerConfig}, @@ -295,60 +297,81 @@ fn execute_wasm(options: &Run) -> Result<(), String> { }; // TODO: refactor this - let (abi, import_object, _em_globals) = if wasmer_emscripten::is_emscripten_module(&module) { + if wasmer_emscripten::is_emscripten_module(&module) { let mut emscripten_globals = wasmer_emscripten::EmscriptenGlobals::new(&module); - ( - InstanceABI::Emscripten, - wasmer_emscripten::generate_emscripten_env(&mut emscripten_globals), - Some(emscripten_globals), // TODO Em Globals is here to extend, lifetime, find better solution + let import_object = wasmer_emscripten::generate_emscripten_env(&mut emscripten_globals); + let mut instance = module + .instantiate(&import_object) + .map_err(|e| format!("Can't instantiate module: {:?}", e))?; + + wasmer_emscripten::run_emscripten_instance( + &module, + &mut instance, + if let Some(cn) = &options.command_name { + cn + } else { + options.path.to_str().unwrap() + }, + options.args.iter().map(|arg| arg.as_str()).collect(), ) + .map_err(|e| format!("{:?}", e))?; } else { if cfg!(feature = "wasi") && wasmer_wasi::is_wasi_module(&module) { - ( - InstanceABI::WASI, - wasmer_wasi::generate_import_object( - if let Some(cn) = &options.command_name { - [cn.clone()] - } else { - [options.path.to_str().unwrap().to_owned()] - } - .iter() - .chain(options.args.iter()) - .cloned() - .map(|arg| arg.into_bytes()) + let import_object = wasmer_wasi::generate_import_object( + if let Some(cn) = &options.command_name { + [cn.clone()] + } else { + [options.path.to_str().unwrap().to_owned()] + } + .iter() + .chain(options.args.iter()) + .cloned() + .map(|arg| arg.into_bytes()) + .collect(), + env::vars() + .map(|(k, v)| format!("{}={}", k, v).into_bytes()) .collect(), - env::vars() - .map(|(k, v)| format!("{}={}", k, v).into_bytes()) - .collect(), - options.pre_opened_directories.clone(), - ), - None, - ) + options.pre_opened_directories.clone(), + ); + + let instance = module + .instantiate(&import_object) + .map_err(|e| format!("Can't instantiate module: {:?}", e))?; + + let start: Func<(), ()> = instance.func("_start").map_err(|e| format!("{:?}", e))?; + + let result = start.call(); + + if let Err(ref err) = result { + match err { + RuntimeError::Trap { msg } => panic!("wasm trap occured: {}", msg), + RuntimeError::Error { data } => { + if let Some(error_code) = data.downcast_ref::() { + std::process::exit(error_code.code as i32) + } + } + } + panic!("error: {:?}", err) + } } else { - ( - InstanceABI::None, - wasmer_runtime_core::import::ImportObject::new(), - None, - ) + let import_object = wasmer_runtime_core::import::ImportObject::new(); + let instance = module + .instantiate(&import_object) + .map_err(|e| format!("Can't instantiate module: {:?}", e))?; + + let args: Vec = options + .args + .iter() + .map(|arg| arg.as_str()) + .map(|x| Value::I32(x.parse().unwrap())) + .collect(); + instance + .dyn_func("main") + .map_err(|e| format!("{:?}", e))? + .call(&args) + .map_err(|e| format!("{:?}", e))?; } - }; - - let mut instance = module - .instantiate(&import_object) - .map_err(|e| format!("Can't instantiate module: {:?}", e))?; - - webassembly::run_instance( - &module, - &mut instance, - abi, - if let Some(cn) = &options.command_name { - cn - } else { - options.path.to_str().unwrap() - }, - options.args.iter().map(|arg| arg.as_str()).collect(), - ) - .map_err(|e| format!("{:?}", e))?; + } Ok(()) } From 260c0acec6817d28a51e4d8724434d0c491a47bf Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Mon, 22 Apr 2019 16:48:44 -0700 Subject: [PATCH 293/413] Format wasmer.rs --- src/bin/wasmer.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index 721192a13..cdc88f910 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -17,7 +17,8 @@ use wasmer_clif_backend::CraneliftCompiler; use wasmer_llvm_backend::LLVMCompiler; use wasmer_runtime::{ cache::{Cache as BaseCache, FileSystemCache, WasmHash, WASMER_VERSION_HASH}, - Func, Value, error::RuntimeError, + error::RuntimeError, + Func, Value, }; use wasmer_runtime_core::{ self, From c8937c4f26ea7cd4dd59ab307efc2cbf02f9995b Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Mon, 22 Apr 2019 16:49:40 -0700 Subject: [PATCH 294/413] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3921ac8b4..c4deaceb2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ All PRs to the Wasmer repository must add to this file. Blocks of changes will separated by version increments. ## **[Unreleased]** +- [#383](https://github.com/wasmerio/wasmer/pull/383) Hook up wasi exit code to wasmer cli. - [#382](https://github.com/wasmerio/wasmer/pull/382) Improve error message on `--backend` flag to only suggest currently enabled backends - [#381](https://github.com/wasmerio/wasmer/pull/381) Allow retrieving propagated user errors. - [#379](https://github.com/wasmerio/wasmer/pull/379) Fix small return types from imported functions. From 53c576fe48ea32eaf7668030f5a848e69cb68786 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Mon, 22 Apr 2019 16:54:58 -0700 Subject: [PATCH 295/413] remove run_instance function --- src/webassembly.rs | 37 ------------------------------------- 1 file changed, 37 deletions(-) diff --git a/src/webassembly.rs b/src/webassembly.rs index 354136ead..3d051f078 100644 --- a/src/webassembly.rs +++ b/src/webassembly.rs @@ -77,40 +77,3 @@ pub fn compile(buffer_source: &[u8]) -> Result { let module = runtime::compile(buffer_source)?; Ok(module) } - -// /// The same as `compile` but takes a `CompilerConfig` for the purpose of -// /// changing the compiler's behavior -// pub fn compile_with_config_with( -// buffer_source: &[u8], -// compiler_config: CompilerConfig, -// ) -> Result { -// let module = runtime::compile_with_config(buffer_source, compiler_config)?; -// Ok(module) -// } - -/// Performs common instance operations needed when an instance is first run -/// including data setup, handling arguments and calling a main function -pub fn run_instance( - module: &Module, - instance: &mut Instance, - abi: InstanceABI, - path: &str, - args: Vec<&str>, -) -> CallResult<()> { - match abi { - InstanceABI::Emscripten => { - run_emscripten_instance(module, instance, path, args)?; - } - InstanceABI::WASI => { - instance.call("_start", &[])?; - } - InstanceABI::None => { - let args: Vec = args - .into_iter() - .map(|x| Value::I32(x.parse().unwrap())) - .collect(); - instance.call("main", &args)?; - } - } - Ok(()) -} From 2a1df0fdf1699e5d9977a7ba11abb593d94da594 Mon Sep 17 00:00:00 2001 From: Syrus Date: Mon, 22 Apr 2019 17:06:42 -0700 Subject: [PATCH 296/413] Added WASI integration tests --- Makefile | 1 + integration_tests/cowsay/README.md | 9 +++++++++ integration_tests/cowsay/test.sh | 14 ++++++++++++++ 3 files changed, 24 insertions(+) create mode 100644 integration_tests/cowsay/README.md create mode 100755 integration_tests/cowsay/test.sh diff --git a/Makefile b/Makefile index 18b5e080f..aa061b995 100644 --- a/Makefile +++ b/Makefile @@ -25,6 +25,7 @@ integration-tests: release echo "Running Integration Tests" ./integration_tests/lua/test.sh ./integration_tests/nginx/test.sh + ./integration_tests/cowsay/test.sh lint: cargo fmt --all -- --check diff --git a/integration_tests/cowsay/README.md b/integration_tests/cowsay/README.md new file mode 100644 index 000000000..f44e6e680 --- /dev/null +++ b/integration_tests/cowsay/README.md @@ -0,0 +1,9 @@ +# `cowsay` integration test + + +This starts Wasmer with the Cowsay WASI Wasm file. The test makes assertions on +the output of Wasmer. Run test with: + +```bash +./integration_tests/cowsay/test.sh +``` diff --git a/integration_tests/cowsay/test.sh b/integration_tests/cowsay/test.sh new file mode 100755 index 000000000..20c46a259 --- /dev/null +++ b/integration_tests/cowsay/test.sh @@ -0,0 +1,14 @@ +#! /bin/bash + +nohup ./target/release/wasmer run examples/cowsay.wasm --disable-cache -- "hello integration" + +if grep "hello integration" ./nohup.out +then + echo "cowsay wasi integration test succeeded" + rm ./nohup.out + exit 0 +else + echo "cowsay wasi integration test failed" + rm ./nohup.out + exit -1 +fi From addd81da19a9cbcc4a5e2744c926a4e41aeb0757 Mon Sep 17 00:00:00 2001 From: Syrus Date: Mon, 22 Apr 2019 17:22:20 -0700 Subject: [PATCH 297/413] Improved build --- .circleci/config.yml | 4 ++-- install.sh | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 3b85a39cf..fdb3e91b3 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -182,7 +182,7 @@ jobs: command: | export LLVM_SYS_70_PREFIX="`pwd`/clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04/" make production-release - cargo build --release --manifest-path wapm-cli/Cargo.toml + cargo build --release --manifest-path wapm-cli/Cargo.toml --features telemetry mkdir -p artifacts VERSION=$(cargo pkgid | cut -d# -f2 | cut -d: -f2) # GIT_VERSION=$(git describe --exact-match --tags) @@ -275,7 +275,7 @@ jobs: export PATH="$HOME/.cargo/bin:$PATH" export LLVM_SYS_70_PREFIX="`pwd`/clang+llvm-7.0.0-x86_64-apple-darwin/" make production-release - cargo build --release --manifest-path wapm-cli/Cargo.toml + cargo build --release --manifest-path wapm-cli/Cargo.toml --features telemetry mkdir -p artifacts make build-install cp ./wasmer.tar.gz ./artifacts/$(./binary-name.sh) diff --git a/install.sh b/install.sh index 582c67113..84f1030d6 100755 --- a/install.sh +++ b/install.sh @@ -33,7 +33,7 @@ bold="\e[1m" dim="\e[2m" # Warning: Remove this on the public repo -RELEASES_URL="https://github.com/oimpaw/wasmer/releases" +RELEASES_URL="https://github.com/wasmerio/wasmer/releases" wasmer_download_json() { url="$2" @@ -162,7 +162,9 @@ wasmer_link() { ) printf "$green> Successfully installed $version!\n\n${reset}If you want to have the command available now please execute:\nsource $HOME/.wasmer/wasmer.sh$reset\n" - printf "\nOtherwise, wasmer will be available the next time you open the terminal.\n" + printf "\nOtherwise, wasmer and wapm will be available the next time you open the terminal.\n" + echo "Note: during the alpha release of wapm telemetry is enabled by default; if you would like to opt out, run \`wapm config set telemetry.enabled false\`." + echo "If you notice anything wrong or have any issues, please file a bug at https://github.com/wasmerio/wapm-cli :)" fi } @@ -292,7 +294,6 @@ wasmer_install() { # exit 0 # fi # fi - wasmer_download # $1 $2 wasmer_link wasmer_reset From fef38200a596f79920dee0fa8fa1e6450332c6ca Mon Sep 17 00:00:00 2001 From: Syrus Date: Mon, 22 Apr 2019 17:25:00 -0700 Subject: [PATCH 298/413] Fixed circle config --- .circleci/config.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index fdb3e91b3..831abb956 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -349,7 +349,7 @@ jobs: # VERSION_TAG=$(git describe --exact-match --tags) #if [ "$VERSION" == "$VERSION_TAG" ]; then # echo "Versions match, publishing to Github" - ghr -t ${GITHUB_TOKEN} -u ${CIRCLE_PROJECT_USERNAME} -r ${CIRCLE_PROJECT_REPONAME} -c ${CIRCLE_SHA1} -replace ${VERSION} ./artifacts/ + ghr -t ${GITHUB_TOKEN} -u ${CIRCLE_PROJECT_USERNAME} -r ${CIRCLE_PROJECT_REPONAME} -c ${CIRCLE_SHA1} -soft ${VERSION} ./artifacts/ #else # echo "Versions don't match. Wasmer output version (wasmer --version) is ${VERSION} while Git tag is ${VERSION_TAG}" # exit 1 @@ -413,10 +413,10 @@ workflows: filters: branches: only: master - # - trigger-benchmark-build: - # requires: - # - test-and-build - # - lint - # filters: - # branches: - # only: master + - trigger-benchmark-build: + requires: + - test-and-build + - lint + filters: + branches: + only: master From 3a36768934e387c6f1fe08016cd5a801ee585472 Mon Sep 17 00:00:00 2001 From: Syrus Date: Mon, 22 Apr 2019 18:04:00 -0700 Subject: [PATCH 299/413] Added cowsay.wasm file --- examples/cowsay.wasm | Bin 0 -> 818623 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100755 examples/cowsay.wasm diff --git a/examples/cowsay.wasm b/examples/cowsay.wasm new file mode 100755 index 0000000000000000000000000000000000000000..4ff43df2c31480f6889b29cc54183acbbaf9b165 GIT binary patch literal 818623 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

    GM;!CsH3{>;e~g=*I-##j0S}C; zo`^ge zqZWMSFG4{8z@le>�L}ScBagh{=+@BxDWs0Zcl7qpdf}m?F-Dq85RydD@wE8&ErE z3IRbMW95M-LGTo7Aj~}zvxU%rZx{Qg4e&ui7aw!=V>%rjIl7%AsM-qP0?AG8o02O9 z#cV43iHQO&-0dGPdhQjQN|2G;0on+G2y|?6toX*~Xkd%kemNd@>R3ObP{KswkKz#| z_sB+d%7Q->4YUd)2MOvWdBk03F8!}EIGYJ2l&D%qAxGn2 zM=_2E>oN53Ym9^Y7y2uD;=M_SHB2Q6t!m|mVC60+h>Z7&P?m}M7y2U?cYe4=88z(Isl`%*?|e# zocIpN*J_#bFtiNsdJ0cC5u@fNboq5rmwUFW)`8I-sV8@CT)UHu5v_w(?*{3&`ywzC*}Q~kiJvRQapeLqJw zFgC=w71Qb2EFwK@mOPw-wEn1>XNaSp$~P;J!v9D&e*sLmrd(;%bWE#ks{P+Ipe7F)!-Ylv*&0JEo9$87 z&Ox-whEWGLhRYQjs{_z4$5Sp%*PhOW*U+;7^Vo%o@Y#_)SjD7xyhcZ#1GQmL)<&`i z+oOuV$sVjQ>UCPW?XpcOJXjR16*4|^sFb^C55BZe;4aP$zA$(x|G7Ol{gOTS)kR|u zj`8oH?t>L}Z(;Fb3hV8}jQEyopS=5L`<`<1O)JSkqUy7lpgoA*8!)Vo0b8Tm8oOa& zJKoAp?Mj@4FQD()#|Mo)wE}^R&B1Dxj|$UX8U=;9Y6u5I{%A*Ax%SP8eLory>~I0o z)`5W|ORdv>Cx*kGL3A)@QFO!wm+~<)RbMCK7sv4el^Am*foVKA`0XjP2+EjeT!Vmc z?;oEzvw&`31RM|^EQ6E-s5vD2i!>}(#?1_Nmn8O#AlGHs08FxVu#7h;G0E_RQ|&rL>w*kHW_k)HNx7i4_qd?HF55-+ zHyN5zT&^ZPkK3r3G4EWy(i;$F1Pjxpz#nWI3@7(bVC|*s7>FzZ3g1i3(0lw-tG99O z@O$*BRi#Sn6WwK>TK!?(`qb*P`sV`iCCY{`3R6XKgR+HJLQ$N4?2tmfu zU9~Zs9=@1gwe3j8K$OJa^j}B^KN%-gcSKV4-D08QTSMYooDD6lm`K$fMyme32;V3c zhFpGZUkf@JX@;Wvo2^f@{e!l}`(|}>bw9%0bB!(bHY}29)rY zR_BXHVlsQX#vZ%)DkZ*91TN|LxDAYt2Iw)D=CSmpuk-k}LYH;v%bQ=2Si1u~x74dejg+xC1A?8{WB4dUz`C47ph9;{DeQ#%FpuyO#h)rPP} zW@3(ev;5*HqC{i!5v+VV~7m9{aq> zh<)^tux}hZYx>U;_RS}=fA*D+jU78P9g*)vW}9&2vu}%mcrW(zkHJ1KHimf5b_zYh zyJz>j6cCKHM=1AVQmhK)UIa1;<$%SlW%wMOuhGp%4eqz9FO%bmg~K6I>ec&sb!#cn zk-#``H2q`yzfZw(o5D@D=yTy?h9Tzv{*|}JHoh2=Hi8C%qM#8!jGh`KG{y{+Hf`U?IxjPakfeEj5H(>P@KiSG zflmGTt>sKm1feD(+!u`+Xt@||Tn7g25q-Ei38j-N*b3*8Nu1JOu|UIQWfiIB$?avz zb7TTK*rMjWC`YGW)~PP(1pdAp!t`>?XQhoqj!v1>B&@ZK*HrgL7lvO^c4`Z`mPxK7%o^G>MV&PwP>~Qg1?{co-hIbxdBxp_7k0uq zop82F*vt9ifH_hSZ_S_%!WeWo+*An50)z19PYpd?cBekL0(e!${O%^4O{S9bVOUDc^)WxxI7Ubw0=d}Bu#$iqklg>MAfGHr-eJJL3VrdVu( zq4@AkDcCl=5zyMk3vc4iGI!B%+<>xk+H)gE`0>o4GV(OX4~)I33BZjNEIQRrq-i+R zvkzs$u*b+J)nfQ|V$4CsgQiW|0;-SEwNR)}a^ zU!it5?h-3>b&AMMBV*uKrvOzo(G1>b5brEX7sOn4nW!G4bZuJvj6u3SwI$bxLNP`+ z)rldxUT28~qJ|=LdCy%8(N$d^e~i%eVP@J#4KN|+J=IZo?$t3om!ErIDhkAy-88-! zvg_kpV!5cHh+S(rEf?Lv!~Biw?R)&b?2LDB%?6+KIBWZ^ z1G3KN(@*YijrXAMTzXND)%v-AVM!3&`fwokB1NP%LDzgR&$%{lhJR6%L96_)w%xtJ%{se zcxL7`emU4LL%&ph34S@qFZc7yfqpr_FRT4>U%%YPFRT1=Z@=8jFZcAz{(iZKU-t70 z31gKddf*qbWa}3>vvnbnwjyCCeI3X(EwJL~mno^^U?o48z)DQ1zzS9Y$X`mXX|f)# z$nv7>Omruwa0;GQgl$;c?yZ}(GWDD$yPBCCPAM4Ja|^v8DB-lCzXmHBn3Gg96H0!Z z^Nb95vT@FZD=g&E3=Sj%r6I(Jx$ru_l}PmZ829)TJ}FOABYOi$>)xPuvNzBs_6E6~ zn-+6>h%3ysl>JPre)2*^wZ_`OPdHNGORYQ>Bk+4YyULzLW5a2r$(Yov%-Eo)g>8j0 z9_|AueykjLBY+J5>j0#?1VAn>!bOG~+!$_L+~5YO*NO`FByYfti;Mn2J*8nA#|^T& zon8D~xS^&-xN$ZKNfK_*=AO8rhkN1%)t17Iv+YFwIBuK`qXiqDG`twxn9!^m+~DI| z;Kn|H;v8k68v*3N|2hEa>2g)J9-_)Xb`=xgsQ*+>bJTETo5@Qv9RE|30Fa@-(~3fIv8hRJa=T zp;2HlXtfmB_;RGcQW04VONW$F?)piE&F&@@wt5+a@MS-T{yJu6*h7njZlaK0g$ZDy z4~P5Z2tKCS5|}B*42RSO4yg+qQWrR+xHTM77dWIYa7bN798x@yuQ5nAp)v79IHY(Y z98!1#hZIkQLy9NDAthYEA*Z;o-nv-MKZ_%?g-cpEI$m%*br57s3?!qjO$A9sGkSp8cx>B{5cE6|EJ#eYILt+M9==+BesN5AX`wh5 zPUx&A+aG!l8gbrf+P_lGk&(4 zgWRpG0sm5xLuPeS1jnIa=kx@nF=$X3`<#GsSH2}CSbLa6^DQwP2j*Ik2f%`|<*>Tz z`Cd3s%6i_1)1_Qig%6e7)UBil_kk1zmU}IMqb-Mq+zpF+)ibipjJY+UTf(08EFxxA zPgwI#qLv-Qpi0d~p!XXklrG)~A1L-S+Hqc~Bqo;2v^!Sc-N35ustr7K}dlz0IpWdGFt^SL)d z@lN?a;da^>usV1C%8*VSD?BQNblcIwSubkjEc5scmUOVL65btfcRN_8@Oz39X+Dr8 zZV~w0vnunCUg5kD#Swp>)Qsf`iTu6PmqI#q*vBabO>xbCJ2WiOa-B1_#DW_ zlfxKy6;Zw9{d5X>Axr!mv_wER7F@Z?m zyW3Wx_M8TDtxnhHV$a}{wOMthC1849Szne{&oArkWPUFt#-3HyQ`Ole>0i!KaLEfx zzI=CXYK*Y*^Q`Af=z9JQTd{hFW+5UYRd^t z?zXrBV0?G=C7y%Cg#dzk-eJDyR}lG3s=sPQO2p3~V)s{;#6__ZOML|~$pgsEKOKD! zk!Aft8RlzZ-8i3_;wNxReG&eWzLEH)lB3h$hd#hc8aa$;16&83>#N^6^}G6X5k>vn zGI6GI5`wtoh+)|JYE752+$eL&jh?5cE8%^vzS2a9RHc5c{YK%MZo95=~8!ZW$SGFMmiDvLZ^L z)KNK!tU$2|OkM8ViH)+SvplCb@4A5-cScHl>bkr<=w{}MXJw&zeBw=_H=Ys=0KIS8z4kg9^MDUhp zN&}YT%mdDg!A+7>0hf2$><}jHPg)z}Bl4}s$E!!-c`+#6P9b*=%YHQZ@LZpc0oI*$ z*$*cXpZ)uw1;NQc`k0v&!M@4B_dGQl)=2P2X5{PEj;KVHyjY%};g`w)w;wQ%&9YXq z6nq?BnUpscrw_keZVYE$!6Nf>{-k*Samn6)4IlKh(&iyRY3w{>_2HrNiT@a67-$+? zy++ewz%0-;#YR4CK)$_t2VrG=3HX>91W8xTU!{Z}aH20*tW{hkssZ_++D^LIVRdIS zpE;qVf;?&tDclS)ZRB*~P9c?WS)d$zTkSCpDqdC$zv{*T0$2(W3LX-E!H2B5xumF{ zuuy$n2aUfdp7xEhp0C)heD}3vDZW|OS90>JpM8pM83?T z`W_sP6GZULvibr1lT_Axr9H2HB)VGtxP**WKPe%h)g81}R{u`Y!m|2l39YMsM#+h4 ztM*oP3V@lap4)+pRi}398z!r5d`7KXoyI-vxg*|wh8dF1*j@>`dQVvfGV%fV|V4%i)6NXv6-#T=K&u{ zk=^P7B{QlnH0#wxX1BVyQ~!+r<<(1N+?Hn9~G zj^$XzgtKDYgd-9l&d9mS7)jU=5LeI}p4r;}-(ImW6bi|}FuwoA6)ilM{r~3T;rVVd zI;MZvH^x5^EKJHbqey;1wi0%RVQ4fagc0iVk>TtpvII9jp!`!K%0G?A zP8>iD*ZDJ~Y&%wtlRAjf)gU<$=!@TfOr%hVn@TV+Lu=atDLw1p<3=$HwpT^qqqfN! z2XjGmv`BziGc7l4GMTX|F`F*Xu;@&|Fn!IQIkIG{?90LZa09YrpL=c^i%35L2{;=R zettU-@R`(CK@H}=l;*mg=M!?U8#!kqN1vMP4ADSU=XEytCb4D!cNy?n74b5INptAO z85OXK7PGAGn`9v3(+6y=Kvw{7_AWu%a7ps~FK3n_s-Qqh<;X3=ZOm1Ma}%6A2Z>C7rDp}AEO$) z*PkfDRzE+YpILA4alZm?g`TBZa$1jX!ca->QoQnQMCe&G97=yP~u#c7&B# zfVUF%GuRmL`4`oGJjS7WkNTu)e^}=|H)hqnHqKY~#+tbbPII4-SNDZo|CYd>RSLJF zfzFbV386DvWO*)B2UcN7`q7MWz|P;U`Dj-SsvP3FeTTWFE zM9#e5ktI9=^sOGmuhkZOzP1b%`Fu7KiXLbb2tEPekO<&Fm0QR8Q5qyk0zIY{9~Zi6 z>d{grbF*$$Z7{8=Qh&yJXLEpVx4$ZRP9h@_4H8HSsM=JDIGsJK4nrHfJxWD zVUzF?4K=eYtoQLe*oS?Xnpmw&70k40co@fwHLMzj?tJmo>QHYmX!MdTJ7IW4 z5yF8n@w!7OEO`EPtL5u?n7Gq{wuQriiMjM541{4WyQ#)whYyjhm%B$-hv~ARdT70+ zI$XDptZ}~mCe?1r7OEq_*dybjfU!q`mJb6L4+V1{47RPWpI#kZKec*zeSGx@gu4I6 zv)^LZ*-rQ^$GLFdFuhP66tZw%ZPWXP{=!fxRH9w)00KaY4FN}vmP4bL?#J(GQy;93 z6+cya)UXP(n&xnG)uGlftVCg09R{Zl?-%AwU05CNeNw!=-xUNzg!^o+4(^3}sPFwZ z4+YNsTv0GktqBJ&RKF3_Lv?=}Vf6qeaxgeFr09XD2?x{3@ZjSt3)z98l9F(LeWWbh z6BXgWs3ANcaF-4F^2}6t0Ov+YkMFtxg7_M1Y9*S%sBe9wG92Jo(X~(d9>9zTKQ$`f z#W1uG4ge&Bw~DdK{`^po=V7c&C;TRNhhkMYkTD(@4&{ai>lau^NOuMzb;5&HZU``Y zl(5_r{63IW4PM|tzS@<#R!;|p!$)0Ttq0z3I7(Z0JBLp*ZjW355mfw0H6x07gkE25 zuaEH8s@%Meo4Z?YFytLEsQ=QfQT837sYSFM)haHkOOIYx9GBMuByv6+II zJ=Q5UFr5IgVg#oZ{#so(uNy$%B`JY+$9Gf%2R5^Tp%)IS?#tXJ!$DwKBI=NMn>`qF zb2smv4C!JoU+5ASKM1m7J)C(%-7m{4*d}V#@l_6n6odCjV}l`)l+50odGf-LPeJyK z8`K^fHZ-=CVU|=|R`~eFC(MYlWYRJbfnKimUNCRPUR?Gl%vhrScmHj>m$&*DV=pX} z_d@l0stE_6muPYIUZSPdr<13SF4Dv`Lc);L(U~W;JGy?XqaCRu%(UYj-Q?xcbof5H z+9DT!oX!s876nhdmm9{WvvaH$PwLN*s6O7yu68*cuc|P4)a#G06zt6E09m9UV)d!5d3btTokce z!)K~lz14g>5ryZAJ0yLrT7T=2z4wKQ@Za zwiycqg(MzRgI`fPrU%HaH~W4yTjey$H)f~&(oq+{Vr6e|hI+|*e?boivu(CQpEeB( zr{fagnY#W=rB91Wsb&U(E_VqAbRJda)HF{93k^G16mI_Kh2(MrQGV61*m$6E{{l_n ziXrx;$BJDu-w3&+19SwckqUqqW7cUVqE5B8%;()cpTYHh?Slj%AACtO>%DEdlr}J# zW*RmPCwz$NZeRYHhG1jsT*VB_EyHg8tcAKf@v4)ClTpV(G+RJ%kTro%*GygkhN)yV zU1t?IRP`<1cPjKZ)dwlsw;S@%TNuuu!2sHY;cV#QO%AhR#u0E~*bTFK(&dTSX`3=V z7 z7;#?|rGDYNv5nQgnNA5n)lloZm<--xLcoNS{Z&w~3GKLP)iAm4~l{6~MXJis&{X4T0*+kjVX+w}(P8B16486}p zdRWd3WJ92{g2rbpR42?1-fE-cfm-W@Sv8OPrse1}@gbALwZ=Zv_}LOzM({l%r&%wk zp(3*MGOJ!{&VWzRdO4qEM`VZ)^>b*U>APorGmxRWQmjzuH3IC%{FT?O!R7K z|5*P*IHGCpV*ff2YxB*=`#%ON485;&H&L%fz!~eUPj7J9yV#pB-+F^gwPzbT$6>+) z$Dod#xK2>mP2+tERqyhO(j(j)EnE_}(B3wSIF4Dvy4-=~Y}JM;-lFZ54%yWInSNd0 z9@)n`c|$T`4%yNqv(DCK*Pe1cNm! zE!D~Y9m|i-Zb0XqwZUX1=2!zNlh;@8co$&%-f58Zs;sx}ptn)k2?`)p?8pWmFvi!x z#F<{hG(|$pADMyS+C>wr&UDL_%-7-Vd6(xi?dKsoESr9KUa-jA%{)Bs)@#~>oK(k0 zXMG5+G1`119B8W{Lr#sn`|u32S=Iwk%M$ZBK#20)BWYTcHG2__C5a#XfE-T+wZP+xK- z*TJ_%qqBDT`YgeHbY@I%)nAf1m|0r_Y26D>sZ^`RD|^KNb{xeHm~q+0EXNGAVnjM7 zj=aG_9-T4%3f@p`5LR6ztdbj_r#P+jtC}#AnvC7{mKlTz(hlhzoCQ;zPyk*q$pwe7 zye7nG$lHRwZkh|WK4^#f?Sr52HT)5DI;&vdrD2p;vrAg;G|Vs?Eh$AE2D?qHo(xmM z{aIl%T>dyV!z}cT&x}}_Fz&Edh$!Zp;Kq`-P&2BPYHiPdVOsCScYs3Z>BlTm1=639 zpTYOGv5xkG-@Jt(A$pQ-Ru_xQm-`hE5`j|>PQ-9IsHaY>R!Y;J20Ll515UC6&Vd>0 z5rjFGVWn8VIsw44bq>C(4JksN8dt03Sl57q6W|c^DPj>B;$iu$ET!wRnF_P?N^>L+ z@;W{8cNJ-IzDWK^SH^M`yU7ls0Q|KZSfO)gsEd2BF18a$AjPCln2{ z$G~V;ricgum>*##<~0D^wv5Pswxl!i=ricYtQMXiwJ9dnKvoa77|iOaE%xaNNpyxT zc)cX=O#+MI49RzD5K|r{uoz4Nhh^6f`>Fm)gQOamJ;99E=95Rd6TwggVdaeF6Pvwi zTXhdxM#sgz64duMC56D|DqQkOlARzA;EI~b!aYbt#=ePnTr5>jR2Hf}!>NZ2d4|%9 zdW!%amR>CLn0JKldVndja;R!|i`Tx(*V*`X0K5gquP1`X{hrkh06W7}nCeIJ%8w;@D zR?Fo5A;BAP_m0)Fji8scn1Z#|>s?+VU>F{mTASldstRQ9qALBVgu)IaXo$wJrC#++ zv@U7FXzq4qBC94mzeFrlO(_A$`AX_j zPj0TeTdEbxH%o`&KhhN@>Vr1Rlf)1>P?J?K5^hnur|OlP<1aXdeZI6}3-Eo!`nNZq zP+?P^qCM*C7i~`HS69E7-qx+xXGljf?@iQyvrtcnBu&(Txfm!YVP3Y0`klM7$Jo2> ziS-NK^zN;haBep5lVL(RLP@_ zgMmY#voPt}wQ#%l9J6c0wLL~70uK&v;eo<&TSy?hh>j0!>*k}gVAGm}IrCQCEGaVL zjUiCIgMF2dKAHL z98nzN($RbUuilcZ@;ORM{cr;g>5C!oB{5c91rzV*-XtAm$nn)-Q z=Q~6Croajr)Dj5YRSelvbYJxcuM_JBphBql+0oVzS5Zhqqn_>!x|sad>YaGK8%P_#}O6klw}ji0T_cD1fC%x6N){%eh7EYz^KxQlVH6J5v#gJ zxhl*9BkCnALOwwEaRE$f5qm?xtS3%D>asfmZl}Re@VNxqtFQj7pU zUmRsX<<$yN2Q9@T0J&}Uj-&FYa8Rx8tx-VFR5y+&27yIM2EW~UpN@H_|?yjmo`DRFdozuKw3vi#4qME_hXdUH{OPDx11N%)n0;tgr z+mHU0z{puPN+YuDewS<*ZxMC7FZ1p%RNxL?X!BBOcM@*l+zioOcpy|^OsndDiv!8_ z7zhIS$a;+V``z8VOcUIdZ5rll81Pp015N=vDY6k#_6XofAWM%zW_Ob4AVh1py!G8C z*aasug(1w%r(C}kxUkYfpIh{cg9BN8GN1IZS3KRNn<0*F6hb0x^vhgNH$b{=5p6th zT&-hX>v3F24JSU<$6TfqKaq>J#d3nn0dr_jTQmA^MqqXk>mI@ZVbx0g^^t{-m13mG z)gXAKdn<^zKiDk<8S-R(9L3K$IC+=6g~3lvyF;ee`eCPu_8Qw6DmM7B3b4}P3wUvvBB*_KyRVG4`YiN%U@6UzA^9&bEkxr@b zVU4|(p&_fw&0;00p^dINYvSWdrXCDgHiDs$g$yu|TOK5lg?1Vxla}gT*@7c3x-KJG zTh1R@YJsi?P0rQIiy-9nE&RlSq}%iS=_9ZcA)`E&C)YaWf;{|K&msVA?gDp!mb;_4 zdjePC-i<0e_?#hCZ!R0WP!_R}4bIgy>pgAE=aa=vmDM}{o-JL^L@KSFR1bW5nzB=A z0S=|y;5Ilgmr&O+bzTTk*2G94W0u3m6zW4dueAMas#^NK1RB|TNN)s>ZLl){6 zC5UjGCISTLvS_@fEkSEdC#e)T13@Fh=vGWE&;tGev=ZbvdWF(W^ zCvkvA$XvkcXD=8s@F642fK{n7w(ihQ;eZ>Sf*&O59y=@?XNnCqEoi3~tA{4w$w@CK zMwSRn$mPl?${gNdZQ*rL^gILyp)X{sMJR^l?~zS_BTVQ$$c{wUb);x`d3hLkUz!%8 z%6qneHIovB>=}A5>lVTfP{nzK5QK4n38Nd>zyqrGf{oV1C{2K<2fiSHO0yuzRv)F` zTp!9V(E5eWqoiNdhaGFd9g+v_wLW=S<97q#oup!hyf>gdDk*g9s{(p&CE*G0(;CE- zQg6;jBz?rQ99-IT$ep_I0VCQGXgMThB*#Q-Qx~|y11K)#rmQl4f<_!h@?gObkQ)G> z8#Qc&6f7u8kcnQ3kwdqeP04WO4>EBhu|Fi@Z;P^Jy)mcd#{NmeB0BtvU)X8+Hi?!5 zHU7O{?<3d=;Tp;_HMq*a_|g(j_rct5&1$w!5%(;R!W1s(31}VUVLX!-K7dIWizkRY zSt1-!%q7t-AjJ?mA!pPCQYr2dl>tH0KcH?JzDOGphu-*Py%MArxOoH=Cut4u6+gZo~WSQRKIg_k$dEw~CGxf>D20NNAM@7l}SG8$hBmfW|Onk`92A=uiQL zO~^60&iaEJ zvVt9`^^uH*-T*B@YchREK7b)7287z3V}Auy$+CtFgdzpkVK2 zIyoHaCgI=A{^nz;%05}kz;po6<;$KnRC;>M3}DBEKaq7;Oin;AFti(CU76_gH0B{d z1dSzBvYt40=DteEl85O{Hh;X&S}J_&@-a*!H!*jN+nR!Pvcd){_wZrI@|fcnR#n?+ zMZhL}+{}K;1tT+3ubL(wj157520+HR$4a;d7PFPwavI+rFTpIc=Qo2_>uEK^O56_j zkbH8W8z6OSe)VdlEiSHtS;jrY+k;zPd=ZfJ0Lf%$q68!>Tb-6ZqO##%m>lntd6rjhAJ%y6YML(W=wXIg1vhG^`|bf1_ZAB{@W zh8eCDGn|TKt~D*O``NUEY;uuVw_6vcf+H(@ae|o=P#CNf$>qI z;BZ1SK6Kudiu5qM8-{W?mvJeBpI&VeQOe~MFjgpSD@+T&8`c(hU$0nLn_(%R;qg5s zGSB&M6+1w`Q9d(;GU!l_uZ2!RXwjQRLJ)HqbeTnB-bvWILqcD27qTsT$xwmgHA^Bv z`yRK*%JdwuVPz_hg_Kz16`a*zCBig}$B1M@kx(^qUi9mCsK;Z6E1}(ecC=&^*iTVU z)NpQX@maPbi>r++2U3{btmHp*%TC02qaK=?a=F!|9@G~+@7=UJgL8uq8PspQMfVEx zH(LZD41Z<(%AsVKxU!>2oJNnRc!ASaEJS`v7^U`$8 zq$JTg%2()l+k}I@nUbDYq=##Q8RzM=KI_BQn~Q)Q_Q<@1L8*F@38nwah7N2lQNaY% zU-~ev`OrQN;|3K>!}tr|ODv(ZOmkg{<4FS*DnsfRdy7wn^Ru^F#k(Y}0 zlH!VB>_YUqVFi@9geOqQgmZ<6AsI~|XzCe}y_Av6XEajVv5D$~u1r@54i>uDhai>Mgw&_%)@k3+H@g)Vj(gBC9t+!ajBSo;+52u7qmx=;ioENt3Vl|UDCCEfZz zi)QS&34rBA_+>_dkIiTZCxHLK15HU=5ku2>AlQgM(1B)3x0ALi5jfUVM@>o0Ruf}^ zinJFy0Q%DipkngsRx~*UD)KyA2aj;*Sm`|8w*7w zOq_E-E7Y4p5ou8dn(~4K`)n zjFdLwRAqevD$Lau!RPu@4TB*8k2KS=HB(u0W392NS~Vu>)#60U#(dWkDllXqIIuKv0c-Wpm=hi$A4^QlBhcW2FN(j{wGoKO`FdP$`LWI77G z{J+xPh3J4bge*;V0@2+^2ky5vjN!dt;v2}|;#*{Jk(Q>yyWx>^gaU{;0CF~Osr}>a zF+jmO?tvk}0HHjV5KP+=0Sv33vsqM}$B#l5n_wDU7;dp4bdVeL?a;e4Ab1Dsglear zu)Pi^=nExM{6};3|YNX`uuOMWwp73ScTVHFTyER~vK{);@u%?S+8a0ra#<%zkh1vI#ta}=ESJVVmy>fWc3n}O-2?L)D}9@*vipaLZLlY?&hpnI!ws6X&7L=d*l?a zPrF`(=z;asx+cc43^i7;6RVm%YVdX80|;RVN~B&4gBpBO&j-8xZT+>ktL=N&+pcZ3 z4Ls#yIih$R*Yov83zOH3Rn8*Ea9ry8@q7_DL-|?``}0RXgS}^sg%Qyd@^m-;Jdr0C zdAoAT$4c_&!>QKrWV^o%HWIp3(4PiH{)Xh+->KW9?5Ujl>v>C$*VsHh=Tx`eVURnl z-aQ7naT5N`cL)Lp)MvE~w#z_QI3qIHf^Hg=XyzgSd<}RA33)S`VS*=9(_{@2?=c7i z37bQjpd5Om`2jhD|J5p-f)~!tM}qzi*h;pBiGzsb)i#m3KIn2&6pq<1G?5E_#S^(aA5(lf5v(pKDe9Y{h+v@4BZ3@1Eb6V20JjbvvzlOK z;vXeG?x~PS6eCzh;=LGDv~X=i@|7Y4aaNK&!~x#d8TslFY;&Dm08k@?7L6z0eDBop zaZdO+X&IcOJt@%N7pR8tA6i$ufW6Wn=FZR?bp*SXphyWGV=_{tfIw|NW>$W@t;&MD z(-1N zKQ{c!*r!jor@pN;BSr?>6sB+-Xgs!1c<8b@>~dR~sW5}}n+Q{z0iUeWn1|3KPuw8MO-F<3lW}~x$n0Cr zic;%23XWGVzTp%nB=Jo;vQE$UCbD{Kr`G}7_=D2R9g=Otw+7gnMy(4R6iuYO($V08=m}04%+UaQ?pa+U(DnyMC zwuBAZN>rdnP-=6jQ*~Z)6_^#6~ zeA#Qxoa=plI-f|&($;*_Fp}RI3{ii57X_z?0O3~$qGE$+j0A0&Uy`iJW-?HMiY})y zevT3{Vpxf0#$A+8NSp4eW2fHkew@HdyiwatUP7bKlHO?D03|r2bO$wJ5|56C=m#O9 zSf02OE|E)2G<=@t(Lc0?+t_IkhB!WxbX1b$5M;H3Jn{h)pm}Lg0QQc0Xxc0aX7%QC zxJuZCXEluJJlLnIvIPOsGYcU|@`hlt|Kh1X&ZquJ-e2QW-{3_DuZpr_258dhQNj<@ z@?|z!!b#9D(=4P^@Dov1AXZ;LF?K&Y*t!i;CJf#HLn>I$E^g$KF{KORm4ZQuM~==e z(FjqSLUb%(){nq}-lJM{_PjSD8Yr5iE1X`>ouUsoTVT^=qjl@&dl8UNHE{FSU;N6O zKTrG)9F{%_$+EaD`4CdXdW{N4Kb>P&!|+%Eme?k%eL)Py|MCTWq9(2J1_%$AHDau1 z8pR$Vv@$vQRz0G4lH;t5R->v$6x&t5{FyV~_3}@D=Db-|l?jt!Yx8iDiV>fq*?<;2 z)o8%0C)ucuD4tsLyx5?XiKa5(W!lP~nm@9E>Hazjbi9p)Z8VUiKp)IprwK!MwUlc- z-NwtAYN3TioBO=Y5y07~)P1++*b3_L77eMsKx4Guf6ebs{V7T7kF{F@c_q&4=`P)Z zaonQtAowzVeO$!)?hIZn#1mNemqX0~Jy3WlMZhcmlK-i`UR@0?RauRkksMJxhYN6d z)>y&qqk=q#nbI;P=8NZePaq_nOI4l{HAYyGJOnJ$5n9pGnA!z#U%#4|=BVItT7_w3 z3^ktn?2sWpDR?|BjtP?|Xid%26i?>rK1NGRW|OBd9-BZ%rW4!t*09~t41%Hp4E9dI zZdj6l4KDND4F8gA-Gl_Z_h#^6+y-W2M$i}bS4~*g;JsRGaTp1(#u;-#H{-O)b;3j; zWnSg=S^jg8z=|nNjYQMfI{0^pHNAojVJOrQ$Bn9@p^kA`2D&0kfe(A(8vCq#T&Yol z+l}(^O992saZv2ocTiZ(+A7>RDDK_Fq1U_G;pBkmTnw5h{O9IC*q70m$Y@22#&mk8 zzI2=u?R7^`(}D}>xgZz_3t;r4qrfa2PjI$h5t&8n4DBoOrL-wF`=}2K%0*(;0b`iF z`ry2c`amjHT8V50NYCNo&Up3-k7Kkj7!x$v6G}&s<&3RV>2?l_k>UhOw#IjI1eiez zGLC~?a;kC*F)bSDAFoXvN|#XCql;fbwivaJvl<+vZsXjEBcdsym^vm=6%FBppr`w9 zx8SoAEk4RSbc}JBpaC5~YJzW}YZlBRRq7E$CTd_NVnAFW7ufnN0v!?9h-`h1_O20G z2{y+sr4WhtMR2dvhyiiKd!6#Lf-%cr4N!1leL>lt*brxqORY_x@ zpw90Y?W52EIu0Z-W(`NBC2TfpXcRl;9pwloH0Q#fYYA)_M0Mf!CPwqX2@2#Q5)i<8Xz{wj~ zHf?CR_db|C+K@6g)`qnErQ0xTB%?MNHPh4{ERoIb_Gp)_Kh`dydVQe)EjvX#(k4Lh zcz;$|y1gRd%uj=5xyt#egSLiFg)l{@Yj1H(;dmWCWd3BHGIMRyI`E zu)xUGTukMVtS7)@@fA>Pvr?QuNEL6!e(~7YnUKbA@iDAOS{oL?n$T9d^MSJnTCp^2 znPjvFd=FugxqU@Goir%f17maFY`baoV%LwF%cP(Gn@3#-n% zjm%-|Rs#8Sk_ZR}C>{oR-&uAcaf%2Y$5C|wwCSJ8uR{cECI;kC*SL`8pWb7FNETrQ zhBNFE!Y+l->knL}1>gdK3WJfX|3{I}gUjJM7F{Yjs;@;WHk2Cx$|OjL8lYepGytm5 zn)ZNxSa%>lV@F6%|9IiSN?Kb}%rns&D4K%(CwOfKLP^!ien%c!pobw84h;35Yt)DI zj}BF|OQ_25>z8WXb?{nv!~ZRvb!v{vN=h??*$@WLow_4RrCrnLo7a?lg)_Y;N$aLF zL1F;aNhd9Q7%-f;j*f`po_oyH5>kMk%gof!;g>g4$F5)cObNam&6Jo=&D2-Z)DicI zO-37Eu^7&U;A}GM_-e|C1mxmsA_jn$ zxo;t?CSWk6N5lZ3oxQ`((a3#@(Kwo>h^C?`YG>ILP2tmo;}p3xQxvYI$+3C)nFu7i zAM7PwFLV_SsS&8G^2iJ8)u`4ELB@(Mdl_Ubp=uO`M`9oc?mKx_Iss{Kk4V`f9Qz8=y38KT zIQhf0aNVx7ra&M;7Zd^=?*z!VMIZxU^&`aFKcPDol|qsihZ@wDH3`}!W-+>QN=Iu? z>=%)wj{zOXqP{N?+TI$N z(ovf`Y2c2%H881@ICs*(w%6NEJBo9UdrqON?|CdxOM@$LeH@)V(C$`o_aN(JEwvA^y9aWo(O_!B6dcE-P0ne9)~`JV8?3el zYf?1QVw%8%xYGnYF2D=~q%L+%;;s8K1*cR{Ufbo`;;{AcEe^?x+j8%8wAtcLLEF2E zEK=TxwFT7}?dfy}wTyck2~v9-x$Z=Xm|^lR?d_Y=tRtbppO*;DzU}QB_twC^?Co3j z*1*2(?c4U&z`pG5ukEdYec9XJ-CG0uvbXQpTLb&Dx3_uh!BL4{j4fl_+ufgYZ=aRg z9_{U=kR|SIdePoS$BcU$CHX&mZ=b&}Q($jv*RiFW&A0a*d}V5t3gU|`pv!BM$rCwl zR3KWtN!A`3qk`{g6Y8Q!w+>q((!?~v9O*6gl;n8Y*Q=ftn6baJ_IKq-uq#rs4XFv& zI0wxdZJxViRe_w2Y!H14M;nBhU_?aopcxV|=N1)nLIWnvu89cFdL%PyCMP+!Od7qk zA4SVS$1xSkkl&aJu?3o`5Y^m5lWZJi{XFMCk43A;&T}{~V_r4s?ihX{}T6AJci<>7fku?k{UzZJZ*jp%u8dmy?(jbcwLFh*0z^3}M9Cp&GOvp24 zN(L{az)TS7cO7oB?Q#-ea-fh^*=srb9+8>mJK~zZ!a9oPM0Mnksfn1LWbw7Rc9`Xz zPACmc_GxAORVzMYbiIigi}6ud^{@jl2(c(l%TQ#oB{80$Jk~BHMNsf1IxQe&Cq%Q7 zPK6E4HHb~xKXi;+fIY!iblX7Y)1I=JMj*?CV0NO3#pNd2zztd@&PXM?WLIL`o8L12qKoOsboFdq3(7DYc z()-^~GI}%|))I>$tREIh1A{*39dG8s=waYcf|dqZITg(PS&3sMuTeeX^WL!*mBS}X z7Y45uw$oNt-{Id}u|q6b-Tt~t9xy~6-(+14xROZDE5&j6rc)}>ndaqPrQ$!2#byv`2)8+*e6Ov~f;4?3w zmZuK|iR=l#tsU9_E!miA=@7BlF{vGgWU;pv3qE#ML~pv!`|&=NMFS+Tc+mifI^MSd z(%_;2^5o|ppyCB=BqE5J!Xj*n`X!WG^bH^a7`z;zZ>?I}{8xhlDX66f6Qa$3f=Ky> zlt|F)>EW67F`?f3`=pcYq*MO#9TZX0C?v-Syf^$K)$84&bkw`nx>ElB%{m)VY-s=E zef-#w#od|jEtmkym#!GEC!s||I^AUwNkZ|K14PmAUP|Lk>Slo8a;QksmBxYxRMy{M z=iyOo>l-yVIX9C$jYAXCR>+@e0+tM{?zr2X56jvU3#+N|QJg(e($QqY&o`J`?rboU zWP?$=1W0zm){ZeJ5dDeG04<)9fpDGke30I3?C_5p5 zGUFq@6D+6|p5lt8N?R-fF5T$HmpjAEkk1LpJ31LAa80O8=-LR0s}X;YI~X&nSd?UX z+QKqSa2@3dNg)=Msxo+EW~MpCE+WZ_{I`ejF@j?c9EoaytMA&FX~+*ShZ0At&0E#M#+>7NVX(3I1N-s7O7FcP|2d5P5yIL`?r@ zq~FT{c}BMQdTV~d(Ik1&FH*oCw7K4)2gJKm8d@Zvhb#d}F|;0FZ*R3FI4NAp=GShH z&y9F<Rq=pmb%03JZ8fF#6I4Rqn+}uMgd|dlki_P4(u@pan^J>SP`#swn=H`~ zOpdnbFbc2mtVRl|pMpE!2MX9e-XqCEYtg4~lUgYu$%^cO#_^;j=_Gtl1QVj9@H6A# zX5y*JI94idl!rVeVOHmVkVt3hx1Vo!PJodq93dkXKgSr9m#mm5oIa zTYEn3Hzc}%#4rg=<7=i;0`J}(I+M3UM3@t0L*b- z0hn@#Mz#%9zsl8=mb}>%K%QSLmx0*CMR(bv1m(0!V11+cX}ulGL?4sIZt=F{W1xF( zOT!CHF}6FG*p`d7HeZvlymsUmD@mP5r}b;CtG& zn>i5Kn~#NtTzR%+L7f=!b2Qk!tcYj-p3)B)3(1=p-^`D_33}s+L@h~ptf1hq-i9#( zXrB+&VhUmRjru7muiK(cxm;~odUev2>P+SFt9w&+vpePQl};nWDwCPCH&66Q-9rtb zk>~=W1Pb03W7$p(OF0))0P7RQ@quStSzA6y?LE7h43(lLXw=qFtV6@fJXYUsgM+ez zI|S!Dx+mF3C@S@rDq2Jg zXhe&M{J$10obCQvv>>$U*P?|C({;lmoLWCN?MaNRz9~igb*5)I!D8{QCbNjM%vJli zs~0ygpBk9o#|9uVkU*)$%ZL*aBbG0MAhE`I?g~m-=s$;qmcBEl=x28A;I6amCnQD; zFKBqV(c@OpL<)7Rp`nX%Xq&rX&*GtL-fD(n#1vj3H=?FpQ#dDBGt#VRO z#mTU#-l6mLERO7f3_#kI`|ujz0=%Vx8xJ{eSCUl+!d8m~USb_$(W|>n(Q~_dZ*>R0 z`v$n%J@w_Dz@=RQmv~z_A=|)(xhodgJ$Q`2%6*bqgff#HL3ybu>f?F_W!#(w(s!T7&rA`o?I)5DDzoJN?&PYfXDYA?Y^P z>wRz7iHB}|ga5J|8;j@4a%nXQif+vnoQzw?P@TOL_lzQ2ZR@OPLwMA0gs~KC=HbF@ zm`vd1{G58j+%X1OdK=qR`V0lgq`>T@HWgTv4s9&8r5ppawP_a&@V#YFiGHBCX72uB zxn*WaLo^J)aH`K>W8w}g5>!A<2uj^-y>7kDw_a@RO#gM)T5EP^w?5x@XKd{v|8>_| z(*|xZ;4Q=kYy=rg^ zB-}}iqyf)Z=am7=cCeWk#+6FdcxIT2>$O86Ss0O#)ot|SHW*OAfF@-?U{zYfxCikw zL7|jb*aj3^5NBdQ$xuN7B~id3N^C%rm}tIlt$ohD@2Mr(vCWXmsO@*oJ!hZ&v)0<{ zZ?C;}U^ifCa-Awr;drN&vrCY||GUVlZkF0(p)WGZ`K6Q&)}71wytHTY=!fzDNPIx_ zqV(vro@M59ZKL55b9m+q(5l7F8dTxvhf}~+NVV9h^s>hmIF zC;RQp!&s5zXP2w-H*^)?b`QkRW09s+KmL4rI{a*Usu%GK)6>(nsm*iB6^slMo=#b( zVCH?5fSIIKnL0J|F6L@|!DOE(R zX^rcV7isIKmN?qEIH~Sg>VqsqS$%_OY&wf7VlOjUV=&ZEv^QqKSJA+N8CSt|$=t=> zOIHh6tcZ<%F-dW?&(A;5Pi~=y>bG*Z9_O~q4>=7E#m-rER;U0Traa@0=}@LSCW6lm zhs&z-#EwVxjQP&Jc>GzY)Vc4QN4v9BQ%lF+_`X~zp{n4+w58LGhFto9H4^CMmr>#5 z>31?kb#i~ahSP9;v<_P+D~CJAYE5J=d#nzir12EJ=|=Lrwg20!Jvth)dfrAZ11(lu zM2Jj~5C?d!@LpYnw;NR>?$*Hvyq7NqZ@*RceCDX8L4;TU{S-S(r$dc~c|UWM=_*!c zOCff88AF1(K*9@RO0fK=V#?)=dzN-`x%Ue?>7P0Jr#BHFxZ;J|`tR#Hl$;Q)fce6V zP@=nM!y;ws?UT2c+u?a5%5F7b95N!Dw9F3Js}AG1TP5dLakDqbLMGB^{BTWzYsSmW{#U&ikyS_O*Ln652nM>EBwDjrIQ2lZ+l#eM&>Hn^8pKml2W=bK0 z=UV8}_`BAIE6BC^DYs+;8zx02tIWR%B{Eo;@g|ffp{!to$ASM}R>CU)nLWUi=%=r) z)D>fHM1G4Q5jyR;s?UV(D_0j}ff^tDG&-K2S95_qokY=qvG`q6P5v-A2-9`dh+%2mtiR~QylQt8X8q5pJht4s=`_N%P-MH>(7Z#%CK2_IYN50o+rW^7!_1H`6EYigo+j+7aAw}fl%Wj zM^WvK4)#!+uJ$o7a@>Lp&WyWic#3s(0>*B|faMf6cXLF`-@%~_Op6Zap;7bUXBf>I ztg(AOYL}zoX3a~C;Y1>#30N<;%eX=utNYLP;L6^LE73F`9tv?_5oDGE;N?32ncoi~ z{6P2akN5Mu@(Ou&~kR_!G1 zL>o+fXqWZ3B10eG&;&x6Q4s@@1BpOO ztuMNdf_+A7&3~XX<`lc{;j#4%E$3yluy>GZ{?%_f3OMR-Aop4rcA8mot!ROuMV+05 zrYRp#rGLRPwYBRS^iz$D-o-MiMMEb_c~sbi`VoB(dUy zub?I-lKx2M@h>Tvj_`maIfG#S89-gWiR`v~$x0vSgJ&^R`9Q3d3`Z)!-*ljj}Ly-Kzic0=99T%GRz#+z6$a=OR zTO>YJwz!X&k`37+tc>&YURDie6W9^yTIbwxO^8uI?np3O&mGsC4l@ry`T)~n(*AXh z;ahmUCG(_T%?2<8+Y=}X>WkbXoa*Du<7_> z?$K^TGHiJl8HljDdg+lf2IUw)Ep^jDO68Q!;pE1R5r@^@uxF(#ZdXl7st+c~8rX-!6H_240$vXil~U znraKOTDyxb(ob4yR_I!@LQn6SaSOTFKPp(GL(S@*F0J21g?5{^IK=EOxVqd+#K{Gt z{RRNqC)i48A@-zM%V&gC!7f;s$Fd7*=Zri3mv${tjUh6a)*X&(aU59&D@kJ~(5!*j zp&1sykuZV=MMzkba$kUA0Z>1tL5}adKnH-zAQusWq#F8<2 zOo1drsufYYKo}rhfM38fSZjc|051a2IKIheB?Y@$x$NnA`yhvQBuoa)-Sy}U5&YNHcbe%M%2dtlrGw*UQ1A ztLc6UrXn6;vlH56GNRrD4NYimcA!7xcOnmoLziMQ1F;H-%`QRAP7gMhH2VmyfVZJ0 zd@~oci#JCX=}ltV%dQ)~h0DI{hHvIFiK4GAaEOu4zYfs&bwbsz z>D{aSa!aUGSuG>nvf*(y>`%)X|A}DBE&G^s6z+77t+?ZSYY!LQr?ds>qHGFvASpd5 zc@P3F5HUNzD|b24U<15P-$b8aI*_N{%jO{9+z+7~C=tU4n*9oZ4kPqCa0FUK1R_C1 zID?_(LRX>=>uR;lNcr0b$ zU!7LN8+cc8ua(6=Uc)ZBjg7p-V754BNu_Yl$_S3_DznJKLf1Q2IbyB8eY5kz?_rk7 z2a;zs#^_MBM;bObb*jQ9qMy|TmZVUEmO=@FU!w$-MJjmvd1QWg4RIE;h*<;V(RmG@ z6@M(Zx4t$mor?;459JLlskJ?{#*f|&_rs)Oc?MRH3!T_?l^e)HQlpN`%c@Qrmdro~ zrYO=!M9_*_4IRs0v3@o~({V$M_9YkA(kjSf*GQm(xjMJhsdFq8FRR4Cs&QN()Yc_H zsz7qe5G6d$3x#4hfD>57_CHMu?x*Xq)y-Jg(Dx4F*C=1dCjck*3#-ybWyPf8hpbgs zt9-x#d*nF24fp`_90pRzFCGGc{XFbxau*wfLLz{iW8j>TVP)b>xoHYcLr459V8CvO zB1D7)c-@&E@aw=>=%k@VTX!rTyG$T>@eKBTh2CzRoIO` zn0oumDCO!sf2}+w^D`ghSNrGNC%yJhKOIj$JZK+U zEDZVdr{vLmCct_%S2mWnKcbNq-50wDcgo)0?m3C>%qPVHQG0J5nZzOyKZtuYhq1Tt zbaNPc>kiG=#hu4PH9Vot$D=R*%ytHGG-g?Yo0~%-OCxotn@o)aTmJqB95ztxPD%ZS zh+h}M19?FZC9;2_!&jAHO4+u7Q{Z`RtEQU#B%914OkPw}lV|TNKe<197x&`_M`52W z9!@-;bR?=*#k^7MYx*x5;j^}P0?q7w-b9!7KH*HOXq9z ziM`%UY=}X+Vq!{b^itYJ2JKAuS%0+Qj@dHD!}%G`M>X4Oh)015fVBo^KwYYBI8C*E zeAJt2I`=zMjqoC@We_y%OtmFlT6|BBr@PX*!(r3&Lj&G=ERzRhaDge<*}O6uD`XtWTzc}OEdu{XElo^$>`CM6=fa! zLYCEIk97g!2HGf-446RPY>$y*MBlXQ-!et@O5p|^#O$y=h(_G9tOdXRt8X{RW>*bu zLy_jSM*$G>0>UMZqpf!)|51Jc7oir=*E5sHgkZ-uC|+m5@l!)A?LHNO@_AHd1WZy5 zPn{Gat=j(7NB`l+&cEj$|IDWcVO*NLTwlQUzy7Cx<5NHM*l+#(ljV7XN{Uwp7{ay( z+yCszANzk0`Se&GN9`A=EkFdvE(==I+_5Pm*O zqR7|h<5Bw$U|?1E>MQFT1lv`^>!BE(QYdUIUe+5e>M37yU<;JAkP}^dnNDAiwO(nV zYN0V9Z-(!Nw&5T9i|62B+lE(iOeT!6{eTm!ne1Q_O!Y+th!+ zkE?f@OY-jIPIDmdU}O;jvLbgn0jGyGUBLyeb(jl&kT-F`G4cj3|fV$5s{OG8gBej~3KGFTJ1) zS14PPC4-QRKpUvQUDaYkUDtyf6{Wf^Qx06sowQ&wFeTb}sosrR(ktlk5PMjAXzs6& zPeK$pEn`wM>73R$^`htDeQ|c|OTh+PZT6iuZwipoMq&14e@f?4=oY^*T?= zF-542r_Q2Kl4tvP;91hkIEdC&6)b@H9j%^5(<=^k29o1i7!aB!GQEtpA3IMGAZ57S zQ(4g|q*=Sk&Oq&qf9+xN<#?sxyOI4d7V{hwc76xwtv{4`}UM#oCC#p>r# zkFL;Hq6eLGX_sglzq@Af)a8dj=8La23{#mI-Bh-`$eEYr%qxX6FV8viO2?Ve1Utp;6OwuK~4Ihp2vnas{c+YT5hT2XUrNonb3m0s^g zH!}sC_5ckJc-ePF%b6_L_MsC-iWyJLm0CXtXacnP6~y|yTgp3j&eY^V~89d zOgtS4ruscN!wArb;S4t;B%%Z1=d^1ivtGBkt*>KZu1wx#g~~T7I_UWk?(tv4F(Ec| z!F#$J5ht6=kwf|_Hv4ZF+QLJVL)27>a8O80C*L1BT@9~l$;+WLnm-$pAIQg74I4gX zspkH7eR%G)qLuZ@@1!xw0>bJ!lLwu*MU?1N6K3lIml%H+e%6yE31yz5AhO3Ha#bmd zkz&}XsJ|-wny`pzeCimYYo{Y=Gg|HByBx98b8~z3?q>A@YTX@o>Nu>Gu_@Wmus`9T zI@j9Y+lau0{y>oVQfCrETCZvysvIr~oUtD+frJirSPW|wu;w)Rw|CNk^4&;Oq@n_G z_yd$xdqAX+X4cZr?IFo(T#t2^p{JeKV{pEr@5yY-R#e~6;u?Y0^3Zu^Rm}I89d>i~ z#PGq4co+^72^k%-Bi@sl**rt);I+QHo=48S4migP8Nv zEJ=Zy;cI7WoKSLFhie)AIuGe9?t*6RD7qw=!Y$2ZjNm?v*hX5M##6PXZ)yH-cmp47 z5-(w*PI(f;KNG+s?X?cf+q)ms+`gmxfz8Tsp>&fYLHR^rd+dO+95lrluv^XQX=p0= zoVwQ>ioUr)2&s(`wc@|GXicJbqOe}KLC@eY1K-j0;c z(`_eJ3>S|BtqvQUxccTcA{(jkE6j<8N1OEC2|?R$qXXad-UmKDcw77IpZte!-?@pN z-5M|H;oJDJ>*dYu*>`^Dowq9Ck-J1I={N;k)VvF}Iwr+J2Ve)g7SIy9Yl}abSc^Yl z>q5Bd0PV{;m_ddRK*Yq|Ch)BoDLVL$Y{$U`a%gTV>R9|3So^U_zbHq&{J@JCKLW5Y zqxd0UGl(x8BcIVXa`YWEDvaix_F1kmVN^iRpB#4AKnx^ zE3``{{N8~Dhe53E<}f_C7>7~&2=8S^tvGeSMu#HD8U!n*PbXqZPdo50d@LL=<`fzQ zQ!mN`yH!+K((~~^0MPeQNHEQDE{PFUkPrlDFrn-tzf+uyZ;eF6sv(+Yxnvt6I+Q+X zMv(J5kH*Y^_$uC29p&Iyk zd-kVP4z`MNkWIxn{4*-b0iSsIZX6#Cfan~PGiz}{H9W|po9D`k5|cc1^86kWr_O*fjnHvL)`j(||)qU})RN-t34)Y4&9B-SwW zbfj8`dAV3q#F&aAC-Q6@0V84MOwNS{=Wu5m=h4)P+(zigOJdOtwaO2WI{d@wmzlwb z&J2*H;{Z{~@&i~S89gM_(oG$>HnrHtYw9hGu3&#m-1_H zh)RgCB!7C4$rX!af`3?6xj-gD?P5A4t#zy&p+cU-^9fd`j8qUV*EwO-g(~QkG}Ko1 zY>3*L6w%b!TJvdxu2*+2L_wx~MByrV^gsZS4hWryGvGOy^i)Bsc}}|cwI`F_ynL4{ zZ~lQqO1^$u?12vy2jl(VP25Yv z(W~)R_hj*av_4?bA?s;qUTeZv}#;(D>RYdMr&!(?&d~ll&ggs?J{YD8KA^FLN)>Sq>7e2Hu|AeGF&eO0E7|i^|xz2iW9r*WfPWYq$Lb=Wl{poO>`(tK( z)?6ogwZL_L_>0GNUaV(de6I8Ge->QFL%uD32K(yA0` zq&#kCKt6VIVw80!XbeJRWw@OV4BfT_XX*C6!nAXPboe3}*Tb*l$|+hnQ6ll->ea+u z;|U=N13m=AhwjhFtQxObUR9cGDBWIp6A=@u1Od!e(SaizdSA0-?8YW3nx|WSfV7NS zsPc&jxy7HZ0Ttqr3MSF^Y=Z>jNV|QwkCtz_xine3)JYhtS;vW!j5j54g-V}}>h@=K z`yIe)v%hpJVn3{GV|QgS6q=zbULLrGwd$t_H{IN9-c0{8>lKaG35x7~_m>vG9XC+> z5_IYI)2!ezvaNl`R|mu4Xn2wTSQ{A*i7IaYfU+7!n^=&yFn6i0|p7D-Q3MPyt$cT5pcrFL=`YueTn|%5Z$C8xf^Y!igp=U7cwQ|xI}m95!85PJ z?MxZg2VB65GF-CE`tCBWYQ~qbViCLlu?qWBzK21k9iFKZNf}OGF!j# zXpAeodIz@8+*UH}P^+l=R#NT+s;p^uLzC_eQ=Q>3ZYGVh&>7>s`^#G0?M|i8>E2t%Lp49Rh$x`c$HEM*H#zk6uhfdCt%wmE|F$co)$NNZY>Ts}eQ9P4Ae`o&UmLs;`0*g@ z5ITeZZVC4_9gnwXSuK6~r_bDe+xgi_`{dwTX0YvB+CO*3D z$|gk{C5!$|(ehH)L_FEk4%JZ6QoHt=c_qvieT2BiaQvj7XQ6VISa%OZZ%vg)DYsom zcG{P+s5^O5p2sNWZnkE$pcenFck((C3WEifsTQzsI8g(R!4RI(?%2+SuYc-0{rZ7% z)rXLuW&i0eZwnbsNDMrjw2kRKcK>Sz?Jrfaz~HG3(cJvF7mPENBD}{B+KOLN{*igw z;`mLlD;+P1eSkh&azPXweg#Ri2oZ-i5U~_xOQ3wod4lBAF=bLcT!A+lmZm%;l!py8 zYq7Xe>nM7I%%e|({6=6rXz$ZC{04xXsflsGdVqz8{<0}G7Z2*~`nvk9JSitwyoC=V zg!tO}RvN^ZHFtIAY#qtl@aSDz|CL>pbmzo;b93?f$aLq<5UYN|+gr1ZQhARZ3IeiavFR3KXjv*99CC-!B6h|p+Q9^g~zbt}KjhUMtM z0zru`T06yHlY$?(!Y*qwDNd1;5eI|=KzJc}Vi0p!c}PougP~m%4IS7717$_TBCL$R z4^rqshJ)aFK*m@CAg?k^t(G$J<_f{_=^5URo!LGVv^4*!vg9R1+x|WRBRPKty>>{&~Wn{XVbP)^A*xL6UF- z1v9HIGM7jy?p*pUkJ`GnexbSKEF_<95LwyO5$i!bY?${8+ho|C_tWwes0<{&NFi8# z`;j@90tY=C3ZBKbLqHXNdBYtp$`|OlBvQ^8WvZGh-C>neir$g{TjUF&uF>^_{azoX zdN&B>flGPx<@t+%A2EHl+xguL#~-cdJ0s_Aac3$$KZ`oZM3s52LK!lBDO;XdO@2mr zG4Nb5rD9(51`WWK37^j@@dqG4Wr(bL(b;}>;vUXLXSc`GgnN7Oc$znBn*= z0z?4qc>ER!hAt5Sfd=HQKb#iU8g-mg|FBAQTBz2j_jq2KitRZAYeUhBX#cG-`=$8? z#dV<%-&4=m3kZl_41?DiLcd9Ch_%KfT8OI)Y>W+?xdKF>KN}LERyWId=MI@yaYc_{ z6;O(0MZP^5KfWt@l@DINurVh>{3si8Z3xPjA`#W2}?6aAYH*ygkWX!<7iMC#-dH-aZXTr#&et8|Qa>^|f2O z!$9XtFOP<{x3}O%SMW7^vZ@z0;8fS+5)s63`}(D!)a$-j&ZLij#D$m|R9}3N>c6WnFm8Yf27h-}Z39*Rd*<1}9Sip!3Ri`_ zhmE>&hq~0O2Jzq1XFPG0liohaXrHpFF4F9sbv-O8W4p?=aO1zh9dC#lv$1GxR=+_Q z&KpsvE_C4=+($%3!|vJYo!nP<^U2G#tT9(dglP3|?eeI7?AtM1x;nRFX_KeF>Qg>E zbDMDnqxNT4cP?zd+^S0dzWt6n9nX`$v@o9bvBh7}lL3vi?^}G_{@miP2W#@Vwy{sf zzDNI|7nxR&4Vit_@hGu`tri~3UQj7e8*(PE#L2N!ZWf?tMrbn)s)0vp&EMaw> zQJZ2XY491et6DzBAZBK*g&chjV=4g0*7cLL^`G-aOQ0)m{?&q6@0L^ccW0f zF{5fle5nHjq3jYD16kntC_*7NW4L3G*1Hg*_JMyO8~kmi5Nz;{s^2n=jM?4gy1gn? z4jenvm_v3jtRbpzU=5ldl^2)6p%19R-jfN%i?lF~j8r_h@hH;*lI9Q~xf@-o=Uw_I ze_@5i)Z6q|jEL^;msKA@!x|o7&K|bL3w9(CciATN7SJbHs$+J3ERnS)!ULdguClgv0=0XN?`lxds+V{^3#_d8u zjj(st6782cMzu9vLn5+lffA3}^n#CfGwfJ!$5SKIPR(LNR&Xc7<-%l}5hX8=2VhKi zd<@R};Ahb9{2w@wEx|oNAN7iA#F7g{X%+HAL%0qi;D_vF*!_T~$t5H3k((lZqN>z| zS7Ty&M(~IPOwf=6SlP@vwhps~ zMfL^2>EvgwIIS5?OyF)v`p9~K38NlhF1hspGbiaq0A^JHEY`S8>U6OoBJ>#-KBX9{ zGwCAZ+eCCTzT*uc!0gj&>I=8w9PxC=FB~GmhjoYv44?u=(ff+lMi<^O)ss&A9qT^q zw7iXdmVdkc#?3D+Q(-V*Dr{~4!aM%b=9f}rg+qSdLBKkj4xwt}y|;M#%6E}*ihZry zmww}By-m>JHu+QDK^B@of~X_P{SulXd=KwtE;lYTu<<2mJm7~zo(atl;mCwtmQAC8 zr4|tnx;fok!sJep+^|~LC+g;aM_h_jvS8G-bxAC1<_mG!zu-`9%4f2zk#!AK7)pJ< zVPRpsy?%Q$N?A~SxVp>Dk?*RWXIybU1iXUJU6eB;sE*s%J?^_xO>OD6GB znM6=Ly)A^!7M@oBZRQi1UXsA#7;b^JN%{K-P(NVDgiTUC9!6mj9B|+x`dnbbXTl_w zf>&%sm{iTdJod8;-37druy}n@b|DC?4UmGbtYW2@sT_3)6CMk-cmqt9Rbe)p)r5*& znO1aEs&;qZjHKesid889;JXe2-(V?4P_k8e{NJEPm)SICA&yciI>_^gRvw?vS-jl7 z^tGETEa&D|xBs!U!8Bqz1;;=Lyl)Gk4I2Wa@7toEkPKthvFi_#=-75`J^So}`jZO8 zEOzvl9t1t$xNTel1FtK1HP;vq;;^J+i}oa>@+#0jY@Z0O&Y|fcvxSuZQc?z};Cb_^esU z&g|7AA{5?^CeK+3FtNsDKruDRtLzNbpq;!?OLS{{a(D13ADun>$l#4L4$jYheAVYeZe1sgqp&rlkMy+wMCw_#k^#~Np#4HH`oUk4r%TP3*|-Z>?R|HC z`0QZk%TZp|e}Y0wn^$g}0M{=>8MO8w&e*-=B!xg`Ng-J#?@yA#+oy+B^JPuCtxG;R2c;j7+nJbZt|FYW10`!r#Dp(A*=3uF$JO?+_V@I z#qQ$7jYa5Z*+lwy5x>)o*|^!?v$b{lwaD1sA8ZZ%Q{ka!3QL|Fl;LLlmm%I@9~&KF z&z?Oq-9k@#)gb;0%XDe;*v3o7NE9ScCs&1Q0gVnSP3+L+DV|X5@_*pN}#b4 zXz_88KtAdv(B~+8#&hB0tpBxlybh(y?Nk_;!Cjc$!073J_#v3T8-`1&yE~A34D;M< z|LwCwT0KCz6yLHEG>vle9&fV4=Do>0K^xO_gl_$3aKv!>zhnTxYk(_(R z=3Z7|P(Oky@vF{IdWG9Db~s^9y{u}w$C)<<#pGqxgxn0P6Pa>ep}X z=l31AzIu}Ysa5-D=hW2C-YR~#wg-RdD1nfpmVHI+D%u{OGxU+0v#WP(5557pLVu6n z!B6gakt1}F>DxBPVMiIO&;>kn3(}c}Q?BDX{YUa0h;3gp`NqxXQOJ_4+2DT(1BaH8 zH)#(r1-MnvFe$y&@O%PDamy|(G{ETw!Xc6+KSK}+h@9(w*b}g^^}k!tNdH%WL*MZ` z?KCvjd+||T#wo5~p6uNPi1_Pg&V|9NNh6h#33#A`7;G9#ZnF7c7@Zoa)~Bcl&9BH6 z%Ged$qo+H$qZdy#)bD-Q=?#3n)0III?XGGAFt`)5Uk+8d}uYt)Iv@i4q<>U$i1t*UP#ge2F0)KRa zX^stg8I@Fbz^%Kv0$nPkX5@WTCr$-2K@bjgl&jP2mOJ0I{;&s`d@g2mcd>((XK)U= zKLE()~JuB-^hkJoYh|V7%>0;uq<+1>q6vOWymOIx!r&lI?Tf;`x1n zZ}CMv|J(MdyXb$n($Rk8j>TV}P)c;~z{&^2xT|Kv_D3D;we_cQX&3>eN38wyFXMvk z%y|j*+WKkU^9FLgwtm1e63v~zLb+~@nP)Fj?Rzc$SyX%fVzmWIqd8vM#~mqnzO2L4 zMan!8b(D3V=YGN0bKLfm1Why2H+ay9F67uoYp_bQ{x|=tNRYMrA=D# z>$c;L{l<(=*MHnDT{B?8tNn6(L1Fl;bW1Zjc9M!VI5Dpt9s#Ig@OJpgiM>uvan z7gtDJXkZ1ctQ>IjS`1BGBE-V`MK%{MXV=W8yi-kG#vIr-o*B-LuL8$6;;_4^_3iD~ z$--VbmcAeh-&>wOv+=oE(_^&4N=@;+aT;$!%sM?b9GTotHbvekTF0NI<$u-3;?`2hlH$$UJ8&JZ9wl2@^vwfOxM76d9C)9rc~?TdXZ6$daioAt z|N4UOZWN%eSWJ(1qiM|;hPs~=N0n}`aumeSj^q4B#>^_#@1yHoH}%WRWkB5TM*qjGe&!w(y4 zz*Ub|;xFKm!_8i?P&yKVx__8l-0Al4$B>bZIvQgkDBPy7(8%xPAWD$IQ1Qf?aaxaO z!ceDmL{}jbd~|WLA&IqK&tefj{knKb%R+crAdQ}xDI)eTRTzQ^y{J5h0C$rf(5}lV zY{4DFp5S2+L_$R%J$)Szd%6kV|%~&jPWaT%BY+Ol8u1` zN%_M$_0$rU3xsqXN`X*n@SFbd)N))SNzF$#mf8^7hpJG&I*1>c<1Tsqtq>NiEVU*f zP^Fm#kBf-@`9_=hSls*shO(9 z`xFV^HMLpxiKKHzx9_9TVW+$wAwmP;K9*sX?SXthE_`equx|+uf&&_l>bX6GzY*D`l&UeJvBN zfQRmTgj|FWg`hy)xlv3LLZrDJm{|3qKa6%p&4FY!2pQzbFp{^@);_ARbNJdR1|Gm% z6L14EA{L_Ee~T;(!r~~hO}Awfn%$an7y8`O?CwY;K7kxyU<-O^`}prI= z4HfAjtGK9F;oTYglxTv|}WfNt*&b9Yd_b$D9wlOqn& z#;pys<{*S_QwaM{_+d=9hJsfktjgydOGJ79h0iksJDfp&8-$a10|-hfgr)UoT`)uz)x6Ne7K^Gc?S29YWhtXS)Wp}v?qL?r!Ar5Ar&xjfx=+&j|7fE5q^tUkT?*c)`|bA0<|G7PZ_ge zHE?T_7sZM&`}REx1&L~6ava4TD*`Vt6b6kfd;G$G6(bI1-8sqeZC;Re6Gj^6MS_Q& z*+Hf9A*J6SPoE`#!-AK34$5W7E0m(cjA+Y;m!F;#y*|Um?9+F+HyDe!V&9 zuY+{UQH4q0weQn$!=VFFe+qV14=umMsxo;F4m1a72BS!RcnKip1T9gaeVxc-Sa8p@ zc52&_xA4&Y*azhVBSUlI@)sG{a&xfX4Zn$|b@n3>WlP~w&H}T@`T(`QdJ`8(#O0s_ zt!%DsY@r5GHo`v-B^Dy6eAQsR<>nBbH4nsU8tXvIP@5&xw&@{0i>ffZo`_rx;Lv=X z5s))&mdmHha`@HeP^5Q2H~N~*eTLr={eeWyFUb49!?|G8EzR>Z0&FBscX!|L^_#>O zMXf8m#eL-P>Fn1sF<0m$I&THX;P7yMju;XYL0_g!KVC+=%hB0PDFH>;P07ijjqD#I zja(AZzp)ykN0D!Y0b|?blQ^`HPlEN7C>g;}w#$^*ApXg@pX3pwAwM~xWPviN@?gZF zwGS9I+Cb}_=F>hDPjt+7X5ypq1RCw0Km+dV3h`NF2S@6-|Hv(i?4AFFYzQq8ZWvpW zQt|}PlwNIrDX2q=MTHH3oGrWiIon`icfaM_-47{W(r~y6ts>_cp^`U81ISn+1yf+~ z#-rVP`Sv1ntdcn@JG*Ra<9{>c%$(}>v{yUUCYwEo6LHBrt25SG(x~U@WVUu%ZpvmJ zxhV`kxGAQP+!RiW{gJi6g|L-+F0>I_SH@F)4a?9ASwUoI+7n~O1_h$L!G*(;NW&m! z0fA*QBz#1kNkvcASg#EZ9kC&t+W^@)i6a{c&@_1ol8SVLc|2$|go+4Hr+LI8T;}xz z9ui08*kEzme$>ut>gzWJV}xVVpUDo@Mva@;6)R=0$TGybFHUn40RqW*JI?hH><%q? zU%o2vOV(rh?@$Su5YAvA#sg~z`=&rfFa}md9+hH^BayKU^K^{HeS4%-KEowwrdfoA}k_ zufx{&cr|mTJy9v5adVw|tG>wCMK5W90l*C%wI3vwtYXv%NwjFCW{67|thwRkvwftu zTWqk`LK`SWQD~vWH7+(2AE^f{d=xh2TKi%K+_ zi?6x*H9OhuDwnRS_yO26ZD$*zppY|gD**uE#R$^So)30CYv9t=5Qe8MpThP9C~Rck zyLFnl$2=2Qc&chJEfq!FtN7@E#QJXh6WBTwi$ zk8&j}AqIbt?bwH8-CQr_N(4Wsi&?uKGLjwj3~Z?x6NJKq49S&qzxzvh763%`Z%3+b ziA&FEV4QO(w7do592^9B3s5dBCO)REB{%|d?Bl0whX{A`Yr%81h5+LTCb$5`g8onM zLg3Sk(C@fD|98B9Vwi~jWSkS-wfYoN*sr69!nwpot?X z*W)0Z_MX~V6>}*7{K3_~h&ON!V1ho&0QUmRR$D%*wg(?w=jL0qXv-Gz{4^%a2ot%ad`3RpkMFIB?|D@UPb0u?WaC2S>d*NS9*A zZf*e`_10j7li+rKWAdrUF&t-4F?D}Kc~93U%w(9s698k>?kON-$l!o$^*PK&8C{&Q zh7MJ7JNT2&_(V-fgZ0o@l`0ZF;8f=fta-YOuHyWLLinvvG7JlCfAa66%(T}{ezT|_ zM3kVlN17rIxrch!kUN4rxzqEIXVOkb1elXFnMfsT)Eqg%shkc}+|lU4EUGHavgR`t zR9eG4T>M~K>+)UKVVGKij8i5Fl`}0N4D^ZZ`oDz%P)Gq8k^Msl$j1m#0+?OSp)dd@ zOd>i4*(VLg`M&K1<3%a|*FPw+5C z;(l_jM48p;rDN>H%M^OJ(c-jS_(vikiu&=+>@uF1A8V{kZ7$0UaC_#;`-|5j*Y(&!BL0v02AI=~;oG-X1zQU!WZLB1W`Qo&n8dgdGoX zR2y_U00xTdKrK5@T*&95*;2Tu3u}~%g{Wj8jJ)7(hQ$gZX@x#4c=TdvYAwH{Hu+Di z@wm~eAR{tPBs@*vfI_SQa(WLyO(yPv65bScPb}er*|);Ic=!fd1BrACt(AoofZEn? zhhGBwps+)eCxhZeT|7y$7d(qHAs~Rgtj#{8x3i%H4i?cm!vIwN@J+{d%3`UNmi;w{ zOFkPwLchqhEIcj+Jj9dsC&};1g3X0O2YS5Wo;rX2_~U-Y@sfL1`ruIr&;C` z#B>bb_OCm#84$tx2q30h%2n=CtUHTdi;&(~S%1XBMb7)$gH zeYorE!M?9Qkq@uPzUt}!boSLD4WUES`B0L-#*VzAt#7=UM`R=d%58m9TfLoCetZTx z#Gm>F)rZ*j$;myDnTe<6>|gF2P%BoZSGClsn_HH0t5DkBqL))nil#P3qt!wqoT-3WJwa$Zu6~!~A1j?Fa=G=;E;($IXV>JP_}(iZdlGT!?u* zQcer993+1T8jiei6bxWM|1yZ@gW1Ia<+@>zO%E@(HeVE8kU~J?grc@?8`Rc--uh{5 zZic~m9+rCXIqm^!)0-E}k>O1^Gr!u$&$3(bZ2Svj!crDQ(x`}}(8bVf9H26q;j&=iFP5VIe`ngCqBBih zcF~armkHMFs)M^-SU}XtjbAg?3?JvZ1w~Hy|9*<-jFG+JNb8+`@}`(lxMX{er{o5+ zhlWr&M>;*8;|5!gd=4nVtk8Cf^hI2tEQa#AsUK`|(Sc~??JmdX$@xq$juc^YDSZ`hoG4RuS_CfQ%pY%A0DgyAV`+Ox?48*he*BQ z+YOh5ZZXEdX)tziOS=rMgpZdy8V+U4?Dq>M4UdIk_Gdq&xbTjekYGhq{d8Tem5{<# zTbU1G{~I9#uy(kQOm`U2Vp!#7_}Zg6Z&S5oMfEkglYm#~o(6jH6)UXtUD-hrnzVL9 zeJeX%BvxNe!Jv7T{09S~f&p3!D+)+@a&7`wJCxSsOuQp}!ooDwF5v6?lG)p1CvRl~j-ZSCw)XkYUl(G*5ZEC@mo5pE3PZq$1R!H~h#9P!F?NJ3{VI2~kOur%y{w=UH_u=mOPs|b9eK|$3RR#6}T*`|%DCdHg&yo{Kz#QMVa z@b1}&u=n$_i1V|dYwYDSjT34@Ck{k21Jek_P>BSVL|#sQS^1614OIO3+ys`P3WgEt zK*rvPu9U)CVn_a;|NB^s!@AHvq3|`DSFQ{0nYuG__=;L zXgInJcu$C2AVe}DFYqpV?gO-79~guK$@_JNn{5KbfL17JFkOQBz5}>vU4Sxr z2qa?z#WpftExV;{3J+BiV42>fJG^5|YdJ7eK0B5iT54k?U&|{aiI)&G#u2!23A-xr zk|Pc9z}%&J_#%vb#(@?rdbb=?yZTmH9dtK=${Fw*Pjj4)9d-dP=`zy z@seg1ySDg6ghV_57yzZ)fe1|#9W~;jUHD(DXX?#!@8O)M7sd=dB`bn@Dn%q#8@zY& zyK{b=XSfC%V=62-lzR^GZSyqR^MJ_YJ(|1<0J(idJmb%XHd?1$7><-xO+y`x5H2B| zyW%lnorl4kJ-TW*(RorM4o<+aSe^Wi`LJkpm`_8yil!OFKhHtbVV!S;z;qw~suc~Q zMf%3I1bU{g$wwUZ7_pzu?ty*9*EF2B{C7Aw_)L9U?~}cU-FbccssvXHtp_V+YTXi) z0EBae8{_C?eSd`pU$+D^_&lNxU`sM}UIw@1o}~*m9`pY&*M>09&;B23DGZAk@(7{E z7teMX*zhK^Z^?7UU0inoCqoIye}&%K-WeQ;A8_pUz03BEAFlY^kC27KxY|A2Eb>fO zH!@?heGArOB=F+R2CKZBxJonRXUiZ7{d=4-&{ekFej-Lq%@~92V;Of)Z*K78Bf-3u z4OO5SAQT@hHe*6C-fSE+X6^|*T>JXwmb>OWC#i34bFsP2d2^ctH5n1Hj{#(}oG+y* zgt%R3b~#43L8i(cc!a+44S)k8o3T)=i0;2326F)fU%Tni>hvcH8~JeY2G%rK02u}g zuv-`bhy55Z5&iUYqOuTWD4~W)_I*l(8id*-R6)@rRNVCl74M%tLNPi=v6yYNjqB~B zfJS=`X6vK-xQ;f+-ZyIRC8ohg#x{(IZJeVhh7dXOfbx7aAd*omw>lm`q#-OkLTA}5 zk36KyN6bB9$Z6bChO7`604bQobhA9)%;!$meXKZI0!z*>dnmb*_d=LM!|!HT9t*{c z9EHY;a*iHpHWEfAlVZmKK4e-@i(rbgv+ysXN<{J!Qt}w>9wfmek4ZK87s2%K5MBXY zb2%J7a5-LA8jb_G^Fe6N^A8B>^n*!!03V%y5c)PBga$tUU?V?R^@D}daq0x6W3i@` zmX)e5$aJC=cLEshRahRlfG!zd(xv=wUSsxl&+txUJw#2@6x;&JlV1A@K@VH(!;{+V zm#@dEUAOQMp82g=IS^>yBY%(g;df7(h|S(Hw2&|BDZEU%s-HHTxPF@G=A{6+r`uf++ofcvafqA-Et+$NsBKQ3l7?nm zulk$+tN;D0SAKI_y$$7Z3$M`lYxuMEKixdrM;1I>==&RPNITOo8;(v@56Sp)G}BnT z384w)q8f(Ck;hgEufSD4o?ryU3b$(gs2D-%EFnX(ra}arbD>s^tH5@)2hZD^a5A~`+{P*-LnNqMHnIsq77?0fzxoMS3 zEV4R3fj@ZLRM<#(%iw-QXIwKF;BdW(nenwSUQ8L7ww4r5n3b6PxFJt#|HaOEt80do zOOFp$_O9;@y@>DoG!9*ws{saRp6Lfso}TIZp-PNJIE+g+bls&JviM*gp{1tl!?W8N z5mjz5EJVJc&+GhS*C$KGvwd1}TXYIfW!WFV-W#ioI5fPxH^ND|zeQgK|5k9z#7>8B zh?tw*XcP+I*-rn<823x;Vp!}0;ql6BoKsMjn=@j)%UJLAW+IPlCiVo!d$aE}E_Vh( z=xV_ZLq9mbHHh_6!OxXrBtgPHK)Tv&h`fMaoO0R3rVQ3$&5p#`YuMtKQPMzdsQ@1a zAJ~r&tbQjV*s*Y!5>$PdU8rb2rh1%So^+Gd%vM-4(8i4#*uRnp+gCo{rwBjXTpk-E zvc<5{DD7h2zUFYe=}zKYLC9NK*Z)!rA=Oc>mF=T4PvX3cA9M_{A182LzOZ9r<>uLC zZFd4^3~#9+-OhjwG2znNw==sOR*5Tmg-r*SG%GkN4iiPA} zGH;qqH|^_3W#Tyl4i%Dq`jz())wI-H%D#z1O-JZFW$)6`^itPh=fpo^OkI(|;D4ae zgU#AQ@8|FOL+`(j%b_1{4!-}sSAApr_v^3x3AdTdCus@62@I7;9(V%GOb+1+fH@s- z*1^c4%s?bF(VRp0XqZEAhv}f3L(9#?IW)-KOnz73J5D4stDW^`EOe?yl~E0KCX%BD z7^F?YbIRwT1}B-{Tv`kyQ+f)kSY{31b8e%L0A#fwnJD03;H8$;97*gRTxQNVhq^R8 zr6Li%ZvoM(H`B93G~Pu526V~Qb}pGlEj-xqDLf)SHjI26iz+cT*oE+@g@=N%hlh?= zpu4YGG2P;_@F*Mjvl{A5ctj1AF$$`t;~t#B2J&>@Y%$=WCB&N!QbmEM%H%20|0Y}>*3LXhCmHv1kOskxdipd!li8~2%Dp) z>}K@i&C)|fXZt&^{E45qZ?^cdFZVxljz)Kak+pW7`u6b$K6Dl}tC@7`3X}KVb@r_8 zT4h}E=bx?So)8>7qZ8pD!4^{)#vAr~s*bJ=t+J}gWdqPE?yG!5rxm5H9W`Y+D2fec z?iNDp1*4q~DCxJAMCdADX=pJ1tGhZdcZC4_$q%W_Q$N}}GbC!%vWn?P?VTzd9ZH?O ztJrlFHS_k$NvK$Z@jo5aI2#W792}_URJ@d_8e243$ioFmD}72 z%{Rmheo`6bd^7o!kv6>@Ht4tbwx>?+Smpx^h zoLH_dWEt#=@t!iL3Sryn?6^B$_+l10Gb*Ef{Izjmwz+);Yeg(&Y>)0fk7kcL1OQ;f z^r%}7A{-Jgdl6JP*c`Kger9rp%;!tNBLv7xZLK zeo3mPVtO4BgnAW=AG394WpFo|w4Q*&tcpZA2$G3|BY|1vvRwz}@H|>DU{GLZ^}Vxm zey-X4?t52POu;ogv+RaPt_$%vbq+Vlg+=KkEoTm#N&Vm5_U~e0bhen`l|q#hTOdYvBlxZK+nKatVukkI_U|9 zV?F`FrOEHTGaxMdPQ^lDl=TD_)@%ZX?kkbJcz_@o-2aRvaI1Ef;2&ZXdpVc3CVAuQZnx zJg@|PvVIHN`yM=ucH<#&pnnYAYo#N@OP%eP-pLMxg~o9_(p)CmiV#9@L@z!Qj{|W~ z)b#R199x$U@e(h|>uwZ7fuJ_DU#<QneQ}O!F%J(t!TyEeQV0E~M?ba@~CC7TYaISw_uK%uFKb6-xXL#W| zxZJ4Y6$=YOuBJ<#uqH)i$WQc{q;Ir_U?CuPV`uV*Hn=D%Q7>|#tvH5K9BeQk(3(8o zp))K*1a7;43yldo*?n@W@%L223XWD6XN4VEH40+m_SvvRK@86m@Eo~%c}e$_TQ%B? zy(4K{VLOOCm&cj893`PEBmEmGx$p_9Z76^c2Y*z6_{VvTN(#5S7#ROW6)7N9$p}9Ls3jKA&Lo^F~4y1*)6E{IeEpNKG)6({eD0VeJnNy03rx_@~`F`k;OE; z8Bq`@fRqt31t;!;=J3E6#Gx+&}QuaPZ|5aFJlLq9jCt7*#G8<2D}bR*?C$pXFHCTCTH z>-aBPTw&K(N1b4b=n$r~pSgOR!V5d3%fDh~o$KSZagQ&LJF}(4j_XL6a&N?GsUJ_Wm4`mZ(V_zq=>FIkcxr=3)CLT1looy` zW!&O?w!`dnZ{L%*mvhS?eR_mjn3T69qLQn7%hrrk(6~}?p+DJgMz`?Hj-7MsL-z6B zC0Jw5l#BnRom?569lNmo%;5IfOUlH5$@$swGKr{O+1;cFpYloWoy;hu=D1Kk-p{KU z^UhzL3No6`ijIG;6YSWv^?SX}uC4Fk8Xz7t$0na~PAIeP9Zj!``HaZlZ$qi#BMsK`E;gpn@M0{zv(i4*#(J@i+5=s#kh8_<8) zE6{()Sb;d=2k8Gv2mMEebLby)6`gcEfS$rv=9>B}KtH;Ld}{3o(4QzUaPbh(1R9|I z>6L+o1U$ccR0KQ1W6+@@z5rGKCVC(uh4$lp>Z*b&VYe4mKHH0`gz+M(oTh^Y0*bEP zQ?@+D^6Cs!xy(9*V4vnR*W=>rM31lJ2pzsW^=}u#WCgDV9ghY&W;5nb)gg>@Lg#14 zil&agK4x-A`iHCOmjsUr0*Al~;*K+I{MAjH)#>rYX#>Jy+8p0CZDy1I*deY=o0-#Q z=GN&%T+SIcQXd0xvxPa+A&zi^4mfZ!@wQ!0U&0Jz8IAqa9*Gb*0am>4@hDU6utxgs zDp%l2YdkN+{~EYje-g0p@&`T$p@)A^AZN+VS=r`9Sv| zERo+KjOo4`VNk;GO(3iUMS!q}`Wd#|BP^ud;tcz&5p_?MGYf6AZa~yIu0hRUWb$l> zsC%lIVFghSF~gWPCoOzs%dZ{qwi{8i1%~z?qLz;DJk$~MLlCii$E!T^QHc4N#60VX zIeAzIo2T}|Mw#&zVDm&0^YIJYr#f0*6*NO>*?`c;6ExvO&*aQ#K?}^sUmXpPdggPF zSs4Jyd%Qx+=eV}#;Mg$H$=N#!>%V7dI)m_nr5$5Vn)>8R12{{J#9uH~g-g$UUJ7iE z5g>5QU@)C=7c1n5gJVigDIAjEF^l8J(+bb2he|v-mr!OeY zA46f-Q&v6VcpHJG!2*+S%rvf(BB>yG{!?%)`f^pFi{1~z90~1X_GP?zu0WS?W!If> ze`=KXO80wRCTEZ#NQTV`8yYIg9AExWy}61C}SDFS_4W9}Y`DHv+k}^Su zOweI_4Wo7GzzB?HmUkz+mH-3OG-~_`DtTFT?-B>3QWon}etHrLY`!!k;7cXKPy)m_ zy@3E^DoDxsuNWKSxfL4wWD?=Iz{7)a8h(dI`L9k1t@2Q zB?|v%fT&dY4A=G+-Of@8M-E&c@%UKMYRo@Z?g|A*6c4 zaPRHdxlfa(od=2dLU!@(IdFXrLdmZgXo>+K#_&@B#PFM|Z7$$QQK!~?NEE1{rqZR5 z<;|7-uXDUR(fggl`zV#`jh>XXj6Rd3e0-6V7a1x{?IH~IJ{c(_{64SD zr+c{u=a7WIGf7x#y>AJ8Yr6UY%C(I2Fu5O&qx6NP?kOlK8{7%u2Qj{Yl_;vRUOEaq zCqZnu6mXt(t{TK_iBHjV?Ba5C)r1#spy^oL)^3>Y{62bv@LlV-d4yYz#qk#3bL?IU zXU=9m!xGzBho2=F@O5(Tzg* z1D%O}6t00mP<;OH?yqR$p?IB&?&AAbUq^H;wR{QIgXJELa;aZ+ zrKjpfjSl~rJB(d@%3A-s~@w9C*pldfW`N>UPlHv-Xj9|J}24Yd!^Wu7I-EK z?2@lc%e2a$wg3|^7Qq5KzCp#QKjRxze(K&OX5&-DY0a6c$dYU8pY!?^*FgYWuK_+@ zujW7-ugJakDl$I4GGFGn!#Ri3@Xm6*t6c9c*LRicxpIAXxqerWkA?t-lxVE0)=xfxc?^ym((RN4`*fec(TxUNJ;oysM}FEKsZ3 z>Wg<3-SG(NjWXbs6IBf6V|Z6a6%UD%#lQ;a*Po<#gau!{PSHzeD^; ztLuDEnjTCd0R2^iFHvjzssZY>ys_cpxKdQ4vdO==3%N3_ENLsjeDJ!1zXjdIK%Z2uqr zv^}7){j7eR9ni9SeffROfG{$>$}!OQ+AbZPS69mCSpYdU2dt?}$F(0Cr7nGbIL7t2 z9oOXNb98Pl5EKE-NXjoX?~jqvV&CVkQ!3z8e#no$YGCeUTFh-t?ca*8gdw5rABeVk z7`BtI8XTv-Ih>Do{h61spRB)4K5E}A92J^n1q^*+Uf~Rwu(Bj*SXx@5q!DY-2hWDU zUqQME?{NPeo&vN2Z#Rc@@E&$UtK3Gx@sxoFD({~QAy9Ba^OuI0sfimBbCt65I@|)F z_{C-~#bX7GVV#(z@dzzYrr%vwMRf}FQ$?j|s_}PM7mG8>NfB!SnHoOEh4`hmA5b|d zp-1k5;yxnD0Y;?3VI8~~5PY6l6Qbm3R>%5atW7sn)Z5e--hsj@9Qw7&2VDrP%UO82 z>SqYmj3{9uB;qr|7T75MO-Ikqa#N^^4BpL=J!WZgmF=^QA@=U|ChAL02X|v)G$Swq ztip<>0Fe%ppVO=^VK{a_d?}@SOBZgVd+Z-DSMu+~JQ=s|`_*4OOR=^;1Leb&XQ0Fq zWF1}L7ELW|cc_3(`NJC;#_&+ZFSDl4mUP+SN?D#Vy<@uz8>92k?fRCTZe?IO3*eE% z8Q>SBl!>1A9~K~Q0DtC%`u`$~dB{4i+$YY@%LY0oZ{3xR58~22F6Crc>uUj3`i0qHqKTRqq{jMHY434i2@Uc zK=F3)^%1!0Yc^fCXIht)Yob-x4ei7jmmzFKPfV`Io|cwl&SX=@hpYezDuSPIjJD`o z`Kkfv3uATscPqA5=U|N1V=yBJV^~WZe-T5--qQUQy3acIuymhhOZP_*8d;&Fqv!8F zue{KFM{KI$7%(q}+l^r)Z4`EH{G z`!RQT9a{&PS5D7Nqn4%K(3Q&d-g&VNg#50O-`thNnzO=SAk6K)!ts>@>%^?h<$^G5 zCqEI(=gbDLUf9E*0@t`0Bsq$%}e-|wrtF5RD>^j*Rk*L8mU za82Ar0t*U&ql0J@TP+81g9Feg{@LHa^T{vWO+Swi&5G}|#AY}ZK$np*+&M{g(8JRo zja7F{axAN^3SM<}2<^@{&&jh<1j_wt+6rrpO@2qsd=QfAccxtxof+ zs}{~hj}in9hQcwhAmZA{@FhyOpE*jDtgIz!Glhc43egIq%pA*zp0BRpLFuj`4#B`$ z`4C-?&F8HmVi*hJ32hvxB*go7hp2nA(! z2>~v`)w5sd@2MS@GdoYzz*o-JU_DHGeqPUopD*WvKj{>ofFHlJtCJrJfkXTldpqoy zN0c5UZ$QA}dcsMa$0iT|q=$7gqvL!@s|4OqZN@FxvGaBG`GSI+59YK#7LAD2x_E|(G z4i^VXP)Ae(wo4&k{2jpW6+B;JO(E#vxgYYG!EU(|C$f-45>g_6+#|IFNR=3DnD7qf zdjNtAz7Bcp7x+Y73daK-Q4F0s%r;R(oa7bFS|Et2)IK%G1bj;sI55G*8sr=_16e;& z$XZ(KFtNogTtf<+aGOZEgu4usIS5UWP783`9N~~4LmHd)d3qxhhB6{!;UQGb)Lsj( z+e-V_asJ3Qihp-aTp@g$RW8t)d&!-Uj6Fcb?lE}*p*;?uz-&bTp!2d>2vQHuBZ4WC z2p$y#J5o~R1@vOr3_k!7aC6oI#e(e3#th1Aj-336bgj-3pZI-X+383NyS_?zih16O z`8~CCsE>p+hE1AyEzo`t`o4sKqzUA{g=(=vENl$M8Mdbuw~$%JvVOz2B#5138Ybqx zw2L#a9@Cy96+Dr7@KDA4myabIkQvL{n6Lsn5*neM#>5BF;23zbna46@!U;??J__ct z?r%1+KpEj4UzU$impGEGrGuPp6(X8#A2z}EZN8Fs#5lS&*^ zsCq%lOjeLC2jg3j6`LcIjxQ-lNee)La1o>{(gk{_qfDhzB@(DuLFDYB?>g3l!65J| ztEhKZ(R0?6eSWO=wc>1?3)HC7E(xLWAE+i>8C`D)7hKL!h?=WvqQ(PB5$p6}DpTh5Y85 zMe&R&6)F&_hA2cp3qQzEUA0!zZdNiEjcQ6k&)qe4hRp(S_iN*$$Z>>nFgQ)W&+OcE zIt?D(4U-=WsYy3UY}Bg;BPymAl>#<=M)qq9XQ82*6SGsjzvCn`Lr!#K)>nR$}h)zKR@R(N02Pr_%V4K8FT#lMtY*rp8cvv-;q&R35K7{cQY$ zlBv=s|0N7UwPe2u8Pknm2&4+pjkoe=@O2=>Wv}8nR@>)sbqkg?W(3B4d#V?^zEq|M ztFy;J)kJmPCp0zOSb6IvmYb<$ofJtR=MHnRaGrIrrTc}$8HSTa!f}SZXXy1lB2u_ z=PZ;rMHUDx$8?nP52Xqj-&=5nQ@{v2W4uOl4t0 z1PeED{)rBf0LbbPq*7$pC>4Uh5)zJqa_K6>8>4L=D?Kwkn$%ynEKpgT#7!<>dCQuv zkx}RxB_AFuD9EiT{k6e)M`F1Nl`3roP$S?P1sp0`{WhIWR{2dU;Fv-~9Y+Z4* zM31`tN9jAwzCOGi*2w?mH^sTpu@cz>T^WBKD-OiJzqlJ;>$K+_pV#`>pNy*Ug21Yi zuLE!p#E=tRAp~Fyus<0Cyx!e)ct)W#_tQb0k*04wxkOBuh|+gI9BkV3p(5Cnqor{B9{R>=8$y!8BH?DYsgw)?Doz&MWspz>LYJP(+$Sk z1?vnm6{}n+A|1ej5M57o4nD^(_=#*vspcFPT;RUx_JiSkrVFg#0(tPsB{B+x!Lf)^ znzxT+1*+W_U4A%EXhh>WI-n;$>1_NJ16qmFo)(t%tAW@<2^tn#n1K!4dDQtMyO{?4mi*7wvpcBIgMW!Mi=)#MkR?0VjoFv)aknD(E}~7&cjP9+6x|=p*$+Zzz8{ z_`;_uTMK7R3<4I+snHeftDB_)My6GCtZ79j*<`9R7}_IBu`)*@=Orknc+pCBAF=W0 zaOCHpgTzt8sfGRoUcwPB+SqkU)Gd(xjB?e^cQuqI0*J>^fyZm7s?M+hWb z!)7qz=dqAaELCJwLKGqVESOB>2#~?GOP-}(wNN*k*<@ur<4!3}INW+v3rR-_Sll+HZ%6lO}esM=YzCu>!7m+o0VaaWW{N|qW8n4rGv9c zE>TWemMGy((Gk-eHTzT;wp^H5%U*c$B$|G1{SSZw>8q%H|Mu!R_UPO$Z_3 zpKVSG1%z5!8D*S~)2VH(H>gmV4)07Yw-RZrI--NhtEkbUpn|5hD%Ossm9ep6CswSy zPHR(36-R18QE9Dj=lff0?{m)c+~;1PP+C793CTInIs5Fr_S$Q&wf0(TuRXX-ZN;h8 z5+Y4;q6fi1e40s})oP&~4_0dp-@j;5C#!9@a6d^}vT5I4Gr5nB4%ERUs8+ubJa{*vz`ifQA0MfRq& zR~#ZlQKEwr=9ZFR0B)TOLo~Ib1o6ITjqnDkP9i)iAO)oD#LT;J+O9Dhd6Q;9*EB?6 z>38dW0dkiON_-AWG1j`o2Zii( zM)D4lA>B&Pd1*E&&k9@_Fya2ntWM%FSkoFhuMBe2ppOk`R-;xkl7y;xZJ5;>P&FGf zByI7MnmekwLjz!UwyGHjN&l{gGZ^h=4_Nn|6R-_bhCD16WEs*ZN#gPQ05gRoPqU^m zIAVZtLfz~E%qm17TjKyG%EVq+C%?)nAzl~)4ltmGX5H#&yke%9#CF0&Amg%XGlW}( zG^xVf%Vwq{9Q2bUj(qPV16ZpBjO9!!Tj*MEr<6!t-QcL-88Nj^ZtBuBmOs9OT;Q^r z>>>?T_J8JFn=zD*VLG|kuhA?^P`DM8>blhwPh}}$mZ&CEIYc!r{`w#L@J9Bo$I3v=4r@`E6KhcZFO}-Y z9mO2q%$KXeT#@PAb1+p*K(S#d%`RIo}H90o$gD%aYa!MFW~&#HcJV$`U*}(2~AO{?n9{ z09ICvvECmjZn!Sl+17I&+nlZ8)_Mf>lm@I77-Tdoh#AF$VU&-BhImdsY*A;j<%*)2 zX=aTC^J-e|_NJv}Koz6aE>o6q)U5Fs2dC#sfSAgMiH2&chfPHH7BkhNt*>U9{dp9d z&{6M`eqS8=;QJQIH^AF>3_Jm=<&)b~CW%%Cr2LvLVM&}Gs5mtOM$_}fCZPdwa#o83 z$p=ra?;0;ZoiVp6HjX*~($WzOpnyyxXyuY(U`9DhQRw|}1fNA(PGaohAJ#+^o~msP(ehJr(6{AS3;E<=LJPB@NkMt*fMG;WOq#E%f?lGNpa2~=Go z%nwYcJ-M`@?$a(Hg^WMd$q(XB7KqUxR(PWuNBse%E@Q7Uwj&-(F}(4m-AlFDFmnaU ziYXsaYa$5SJ?XYiX@WH{0f1&ff^eh;*fT#`wfim2l$$^*4n~<~+?(8t`_VFk*dl6} zOTFI}b@b7wq1Mv;DuJ%WFS?SDs)aT-+jmL`6RrI#eywb@)!mP^+N^U~0aZKiSph{g ztzgwi=Nd$SF(h1=h5D^&g_9UEu~iTAm-UFSXE8nsYWq(gBFEjvsE*1eL|sCn<>3W2BR`$ z(`Zf7nYMM0nWT3_1I!aw{j?3Bo;ax8yTjizGM1#(EM^wmWU3=LlhYyBfS{L_hiuAP z(1dj{c`b9h5w1NciJG3%SdfBKhAYY5z}!WWj!C<6g;vB#$(U~4)X=n_MoeEr(=2vI zF4=usr%EPr0*x!uqfG=4qk$E;IRl~m#72HOS5bov+-7hOY|X$gzxWrv(7Mk2Tg0P? zbYp0ltOFcl!WZqlA>mSeC_Q0|Jly)!$Obgnf`AunEi}6^L!cE}%dy@f;17knCBLwa zIO2k4VOgU@CB4sRrPzdowCO|UEqJFa2<*ygVe14`_Ib6ywLU41CAYV}m~YIGR}p@6!zv+o<{sI zKgDHk*Og(jjhWsA(Dxp-^)O#vC1p?BBt@m(C&Y(<^jXNZYYzP0$txC>Dl`15!UqL< zkEMEV7aufaS=D{bJQ_~m(WZ8E-^PZwzZ%1A- zUj8Fxnxi|=eK{I(Hu!*ayPs*}q==JOMx~O3TTKAY3}1ILLM@kBIEYC#Hd6tI<2DzF)C-e#V+x^d$fHx7!_$UJ~)gTQ~s|V zGvKs|10uhjy`3;?D^ z>pH%l*!96)sM9biMW`2;tq$ZFO;a&wwBhhsEh{t2$fln<+N4B{v<0X5I33>Y{f1n) zA&pt=H;Vu#VdGVO5wrB4IsyBH7iSP@n+d8UZr%l}kAJk4I??ZLCtp=(1YEBV%9L?V zC@Sk=3;m+kHZ(dufgmg=|Pwg}Gu&=S@4i8K88q*iOv^w_GeuCOXNg!csd{N4jI$63>Ri-kRp;i)_H!CQc{9)%C$I2neGSL?WP%> zvbWeksyWl4+LcvW_&2g~6_iOitpG=cm;qxNSVRFIYScCQ^vU(|q>28z=?79#v5T5* zNX@`iR0Dx9L2;M-YQjDg>p%b!KmCu2O!U#%4}@{k+&MP~0)!*rN!GSJGTeaTVN2gbi6=DQ4stVUo9`V2on40%y`r6B8X*kqBzA$N2SJ4dzSoKWl25N5G1C zWR?ty>VzTGPJ+)H3~Xle!RD71J$Ygnut{vtdWMvP#837Y^@o7#=#nFf#*UCgHn9*L+@L}q@5C$ zF8O^(2~8ohv9#_fxBdxJF+$^W?dC+KR|s(vY4^@I)<>_gj}q+26;#lyZOb zs}oC1BB}iq$Di~34y^4bf(c3ZxEd^-JyucTVj$Ksg4t!rL; z=gUsP$Wo_%y4@OI-W?#!O}mZAS+1?rq}Ko}PY{L0{51>3)c~qFL)fpx1~z88I@XvLtupX4jyH>;? z_@|_W!>{w8fZL6gOMxCjH|Sc6rYwCFe8rWkk-kjj;2Dr<#MX_z*lXzI7rNVo5k#Hr z^R*Rxg>>y&sYgE~P5%wJhKaOEdykm zHR&heR9?uyvx$LnvAtpbP}Gp1}|vR^z|?^#6s_b*fbQ`27p4BXd5DTgAN3@weU#!XYo0$Z@5 z`2k~D(1amNgoqZ@HyAJ;Jo1}J_1cnsB*V^wF2%8_zSUB@zmm zmJdu~nKP`fqR*$&CF_t)ep`ef+%XH16+<0&6<7*Y_sOxS!{;1}#1Rf+@$p|DiN%%5 zEr-Qt|C^_T#g&>BVJw41>v#=|mzycWXfW&jjOLnHeO3}&t2p?-N>s&hWkguBkYz+~ zye@f1x+iJ=A5NRxLfZbeR*w%IFUyJxcPDtLP+eRn0s7e1;>;r+zeGWkEM+t;pc*o% zm~|+Mp91d9QN@U?+#$4ZNU>tGEHF(}^`zPp7ap!Hnb-zu6QX?eN~Q4a;o62E!tnC+ zAsVWK2;8S%#}@VKK3iCVnDy5e>;DrHta##H@G7aJP0`)?Sg6mHXCn)~QJ86iq3$V^ zQW4J#q;(79fN7z8W7*9;i4Jdq-e`GvCtDJw zf&7Y%U3UuYfoZ8gS&R{k{8Bh=+q+>g{)iNSjB*z^q7}1pf&_N9z4Sda_X!v_rp7TRp%@78&>FdMNf?bbM@A^q z1yj;pG+9ej}ueRpMOs|>S@AT5L=cRX$Zf3k+Et+6!)8V^WJ$u(h`t`x^;vDA7nbWAE~ ze0mRwU)tTLTuWhW?zbsQB;ewrdB1pVk@LdZ!5&dr<|?joqcPS^@K=yw3`lWGnZTSV z(0DUmw2IIF5i?vuG~O2D9&M={M6vEK{MVbP7v^OjJo5hZ!F+@CT_1esO{%LZ{GBRH z(ZN5O)VF2(Gh5(^iwnKxU1w|;n>P0pJ=fwdGxWVusO4R37Rn!IldQ~-dapK!^!~!I z(=3i~VzQMgwj`fCEd2hasjd&&%j2Y%+nHXr?@@+qIMM#>721;m=Mh+zjH6wI>m;3) zYgDvTB^bnULZT`&YH5s{#Vz*aSUcrHYbsA4&yQA5q}AU`l+>bh=G%E|slh}<>>Uv) zXp~y6P88~>cP*ts-as+7KI9V`3hv=Od?4bK-zSTyo^54=3>A^`SZSWAhuXL;(O@bN zSO#?Mh7b=B9+2&@-~G*R@OVV~YzY5CYBqoh8>4bWFr~)ks(gZslXd3N@d`P7rCKQa zaP8?~D|e!LB9uLdUsO4+i+A(ZP!=)eXrrG?P?pjW3uSQR5@qimLYe1h9zvP6#>75U z^|&E9qKxU$Dw-^i5{){7Q?f}{f-;71lkE-Gm-3@KSVKeY zQ_T}dTVDnS-V(ISYQ%&}`7|x^h@Xdz;ds4R!TpIRIn?sCDVcHvGb;TnQBo%t`itpI zxlfqjNr@1Uyns>aL%pcw)8qwaGcEb`qD)X|DKU>gKdMWFx^$q9fjmCt_+uIDxrLq# zxgxzI=px5t60*#B71?0~i&Kv?HNdo{pC>p?v}DhH3X+&g4U6K_5cgYRgMNZXE1(zM z2KOtN(3Aru1GzW_Hu16s6pUjV0PSrZmVH=RI+F#`vvhW&VXjpi;@x!mrLXA8qIOgW zKqq6NkxgaMa`5xxxDO?4@6dtYNs`*~4-*FB&!hJTIXjY+D49Nciat)DoP-K&2fv;% zB^uJMFw%8kAq3tO$!}ZHCgRa6v8)!O2;!@&JE1yZ*hd4>7A3mo^EVh4$Cc!~|4uYS!C*;=lB@XpE?MpNao1Y*x5cegL z0|4LMWW;cB)G0!C-eZ27VcQmxSp`l&xmfNL5jLh%T{W8Og#$7vBe+cKl8e}-i7sK2 zJDiKX?y@c-tN9qCJNw)Hw_zmiOB5bem+ec02Rq#iprcrn=0*1rz6Q2eKUp9Eg`I;R z_SbC4z{)E9%C@;QEX!;6*jQ_(ZU;Vrx4-Grn0A#)!KgW^%yDM8a~WmSEZQ)%2d#_Z zsirQUkeKv&&y+BwE1!Zxoau)k;%b=YqmNQ*MzdbirRPel5{S>@hqZuXvpPAGpxA8a z^|Q3&O~Kr5bJgOe7h+tu?IhKVX!Pe~(jiclY1SLy7V)5yVA_sWes(sAMLSUuAMpVn zHPT1MD$=o3>8lg47#(TC)uA8t9q%C=;!M-|BI)Z}c&e|t>TA630+mZ@wPY1pm=*tv z-OIVNj>{Q4{LGk0@{M}uR5<~~9=Tpt&Tcru#%X>h>w9Xq@boO7>k=Ky074knhAmfY zeyr1W076tWk0_+oCf(CNQBQ@K%^#4N z{8KkHnX{PK-d15iWveg{V?q|2K>C{bts+U*;mDu{rfX9K5QW|cTSOVyoQc{{Tvu6E zbF^WpO&r*`};*T29U+QV&}R0f#%Z>}W?{!7gQ7<*^V<5Vw$nBo%@^j9Q!| zx>md%kGks6GAmj^uLW+4HhInTEH_LWfK#C(*G46hSr#zcUYuN;GPZRJX09$a=Gs)L zY#$JeUeJKH=Gzm+tsN!)oFKQrG&Qu&bYM^|tv1*wr3za%Yt*yiKJ+qX9r+2EEHOWU2|a&} z&*K;{$l7>RSBj#K@#|iD$|p{dri73-nx_ivpo5<>v%S#DH@9LiiOXtb*%tkBsX-7A zyLpO0#Dj@eg2PbjkUS(v%+92A;NaTA*#Vtj4h86yI?Su$Wb0zH-&9B?tKtXVw+QMt zny<-M#U^TmEYxGZ5V_bon9^y@t0HFbih%M;N}6`L?`dAmFS>q(U-tQBcWCZE$Z33A z{3qL&R7QC?p)|;#m@-CIyi4#1Z%rMFwf`^KF!t!@&0c0~#2j$EBX4^($jXrElbqBo z>Z8YAfFa%bn#-tznJ-P-tT45)`I1w|ZFTDSh*QT$z6{jC`b7h$Gblj~zY2pwKaMzc zuzsH>S9qe1|M8VV9kwm0S^UY9P{+6nHBm=7$SYCD14iLCb)LOtm;(n^_1#lVjz< zIv&v!jgP!iuD+l%agsHOMRrByv_@E6~>%G>@5wTY=oK!`XU2CekR zOi}&Le(~``ZTfCk^}nGBiXd^fFcgyx970crk>8KSJ5^G@2Cr*z;-)Lj9uYgBl@_|N zg6TtO=15Vb5wcT(gs3mbMp)`!$yh=zP#K!_Kp0>8knYwVqBxIBVxwjfcZ5=>I=YS%HZTtj(j9Q%-pQXo4q@&@=SnBxT5zB z6v&?40t!>0U$ldZ48aRIA%$4v0OpFY2{J(BdsD>NLBg5zd5gc3+>f!ADlq8xJkE}g zm}#xh&>{+m-A-T-E*Ub613I>wJIGEHPp{3n6u5(@o+&_-lGhpwT7U?13I>gcp`bQE zSBRkoeL`8s+_PUmBd={`#G7atp2j_I3Rt7AL?b9|QL4M9uO%je!$Tm@WpGZ!1D3ht zw2n605g7x%N@K8GClWpkJ3a=)$QF1;;J{q$wgthV@M#&%EEks`6h?a%J+cytw8+ZI zd-gYPW}=eboR^)L@Z3z(nrAAH3lVyVQI!*zl!>8f)(2Q?X)C9>)q|oNaR9AhF{;rc zsYTZceO!4Y<0M&rsGqEWMpCIE4B?p|ToxFcCbU!`T-FbZ_9PMfRMGH>G>wxO>YKY|0n~7#lWCh`i6lg^Fmb`$0^&qndB1TIqNK4l!V~xfl zZQ+20);KAuIvcuu83j0XN`tLhBsBBSW*SZ|AKStDl*h)oIy=BV0>k#GoH7p7W_64S z{d6B;x1b4P9QlxPN_?fz>h5Q1;b7$K zYx*!XHN{H|Ml+G)PfEDq$MzJ#nY2xdrE}hhIE@%(BBSIsdVej^qb}G_{uzF*DW(1P-fg<n?qI7rZ1gLk z3<;Dy6cLE7^_1)(2kD4SNR%12XMrIJGvB4!bXh|%q%<81f7=KIu*^*3BLg3o(2jEv zsQBDA=2~c!7Te{PodIxvaI6AXi`GgzLM^g%T}%-N8=HVw#Fz%Jxv!w%-lv6p%gkca zy}{mC9v8|^0R~T?b>h(QjAO-pAA6q`GOsOKl)(tNr}=6wtZ69YyUXbAp62!b?piL3 zb|`N8{=@$L!T9l_t}=;ftSBjcO0{9qgrO|gI4^)<*@lT^Sh-;eEN0frIWVBw}N%WBi*8_ zEp1KVxs+cp>U|W96Ulg(oNc(?A)8AM9yfX?IYEHYDlcx!mpKN^Gb!k=~yQ zOh`;wN?aL>n+qT%G%~lvWEK!5qAw#=Ie7mU4zOtZFJl1rfX-H#QwVid zQ&B=ZQk%g8F`OS%M<}i3 z-I;-2h5N{SapG)3s#ru zg`8?^Xg22>ys`LitymDaO-EAOFfbyW4WjgFpnX$ueF0!8e)qPG@mr1PcX8DEYh!)PZ}E@HgEgtK7WpF}ap}Dr zN*>elw-x6^n3PD;78VIyoWG?P%TBbIl&#FNk?^s+SdzWa^AVPiMsB`?nhJh5Ax?v# zQc&OhPJM2x(BgHO!LZe;RTl>&lCb9Hq7Q*?-Q9=^VSDEcEm}E?9EcYI?Wt*_C8alo zmaMOu9vQ_rl~>r)6k)4|rpu&OaT=!TbImAU<=}E_Ner>{kjl`C1U}n9~NTv$4 z`V(5)8}o&wt6{CBoru~*=@Hf17-1}i-SEa_Xc>k=e4>KrsjNPOVVVG%m;~>d5|cDt zGEcVd2oBeP#q`BN{ZV-qx3N(xzd zz@*g#XdqQh3)T}=sO}Gbo$dZR4YN&TOGm0x3J|^MA4X99aoJ{iH|=l8I5U1{aq^qU z;BRXiw7OC=aeW22zRw7lvE&{>39x;3WDs-f=0DC2tR6OFUiXbwfO1c0ke+C8SP6P= zr?~%*O_x#fdir4}8Jyp^oL`7UO$ag@yo_Sl(y!2EPxB%kj%)MZ8UcBJ<1&78T!sH2 z0Ruly@*iKFhF;y2Vk1CZlarQo17(}VL3_NX`DSW=6rqnKH+*)Ao5jdEj+ya>wwjM~ zEk3Gv@IB2(MFTM~{*d3pdr@e_2On&(1oql`Kk;4Ep*<8=7kI2lJ_^}&inZrA4vAr?fY^A|WZD3nbto>V~px2@-cFjg?nBy^x>8BhBcOxe~lf)+6HWxSqllWh$3Ph9IYWBUcz@ zzKJVblJiD8#UJqgd0fR;brLS<%>!3-vOKRw_{r~#zs5m37BND-wA1_TI-^K6Y1kfx zKNhmZFwHZ6K{aEN_ga+mNTnWADLwipTRt#u=QnQCKtoXCTTr!G#Ay^S6^^r6%T)(q z%tK15h#{C4h0*5`kX4XCLuPrhnLzq{n>3s^nnv9GsC{plq2;vVa{ERn^znv8$^|fv zyH!(kpMN2`-fsyBYU)_*v?SA({kC1xq*K{#Y((1|zn41w&vaUlSf>;6KullL)Y9>= zSPOj?M7>9?330dnR(A)J&-!#UD>9B|;dC)=ZBT3XKFH+bpqZ`uPfd zhpHpr8v6W#jY$9N>U$a1P~a#ebCi}#7(+sKNguUKr#f@c3wtd?|1xqqQMtN)8y>fq zKWl^3KMXegu?VSqo%={+J{FfXp#bpZhd`E0=dh*y*_-!&f&W(D)F)1j8MsBTY*`7- zTKtAB7tfdwXG|a)9Z=3$sx~S{KEw z*hZ3P>?Q11^~19CvTqM4fY`d%EQhuR>4@PgKG>60H%*a|Oj9M|Aic*#F4M#oQVl+V z*oJk9Dh)+dF-9C>Nx7=%+gR_D;^0Cr&*QzM9<|fTVM*13=tgg*-lRxKG;LGA8O}i3 zNZ3*3WixA?^dd8;$Q^77M_mYT-2I-|hX~NT60t2k+d+s?OPMkt$|&2Th(Uz6s%?Fk=1IR4oO#(TPMm zI+zW(y&WmiX924qU!XyUo8k`RYsHVL?J&lJ!+Jm^#y&Mg#Xd!@;`Eq(H_d*x(VURW zG^qw@W_q2F8-w(5Px);M(!ZGKzpVJ2_fZjBcAJoQ@eEOIJiNI=uHB~hGpNBea;yzu$YIUfONZ zEqlqM+x)GF!)~j$dUTJ!)x5OZ>g^yS85AGOFp^751ldqa62SddW;~bR(~Cq$`SO5G zO+uVn%Q35oX*Kg~jm~1Rw|b2n&u%LV(@-@% z(G#~g3|i>4Bwven_~J*ZCBM*-qHMPby+=pB8}F+vm*9lX5fI5GhedNJ7fq&f-%WeR z?-M(-9(N06*S{K1~Fj^W#m6nW47uOQt&1 zQ+y~1m-dZRwL*4^t)!Yk2{nMLue@Rvl2RrWTXz2*yM6?eSb`PraIT(DwJ4vP>8ph zQwURjE=6n$iyKtx()fhFtwA6G&O(m%!`G}-q;u0zy!_%{sMQ(BjwU4+h-1B5BSg&N7q~u6P)MVqwbM*%@=0OxnJ;>OA)*k79Jc^g6r>`!DqK|y_z0a+7h9cU#{MJX}cn! z-V^#%N2LkCXGJN|ei4|Q`HrQ7+yP3!+OxpqI@1J4K5KBU5uB?PrOfD7aDMMIXU6Sm zjiB)9GAXfLtN;)HI=rN4^ge4NR;qqK;Oy&ZsD3tjJ~K_J(<(vK3nN`dsk>xmPC(tk zI@khlwMBq&NiGO9CuzBW>>=Zp5*o;*lrfpCb{M9wSx*YAUCPkW&2G|TlwmjuesnP) zaiR6Q!6(_|mGnMmeIM31n=Zk82AbOcPpRC%@*$hXyZo#XK`tU#6T%P?eBhZA0qlzv zHe0xafs(KEKJT3pPD%z?8D0%nBNbJZhb8zhlzYrd-Sk){g}oEbaFal3a>mG-^qis;QxMkv()jxe zzb9>RZ|_gEnlvM9r?}PqZ;*hN7Pr{1iV6T&9w#^@v9n2=D0!mZuzHrR=xnom^AYX7 zijOxASiX+IGOq>=ogHw=3$m-^OF6*_r?Pyt0x)cAU2QpBLX5$IrCxPG!qeR#w)yQyz2e)2$d0c10A!{T7%syBUAx$ zmaM^QY9^`Wgvqjr(KhIznjbaYp2nV}X29KTi*n80opxul`CNH6`PNp^2QfUjU6^H? z8*{b#Mq#%lgjsh@wTy0GbE=JY`!dv}HN=b^iz1Cf$j9hO9kv7?sw}~m5K>x0-tr6B z0pxX9{mSuL8!g5T(v}-mQ*(g;6)_{OD5$zTJPp@<(HPSL$#%voZcSKqSwTvme0$X1r3kuJeb@%vVvc3m9Tcg_ZmnZccA44hA@8J_nn%mAioGra zuxS!v{R0BbhG4)HCs{OXiZjJ3@q0co{F@u4bj*IAaP)|S$&~5rZ$*jlxIfbrbY^T( z(z*xGnnaM^C6!_&8(o$VYeWSCudWFN-VrK^sJAF5=HeT06%QiMuvn#4)+iolrt9U1RCT{fY>u%ICMzzN)-I!}Oe3%YX`4%9fNh#f`xw)A zeKOM7ej@i2=y~!Ma8qjCdcLwz&sHEt(aQ)VIggj?zWH~Sdnx@%CX>-C1vjRQS}A;P z#g)Qgn*+X7xS_sO&^{yjVd+r0t=0-RJdL$N!p7C^uZ$EfH%2t8ioiX<*imjBkZQOD z>9*R@o6442U@TH1L{(c1E`sF#cNV&%@jXrR|2Hk3g+)-qd&W8mZ%reR7+N8((XbSk zL6(_buQlAtc;{;(mO(`MD#}1ZMIKJR)wr+&eG49e#YXo>Gcu4i_i0-cv9`KQ^jin) z)VSt8o)fC3g_};N6Lnt?{26~pAkKDDj+ijuV(%xwML?m3>=QcmYlCgt=Z7aA%=r;sXt50vtxOTx z1nNB`#PVY&r8RgKEZtjXp+gCF{Aqd12D?gIQ&s%0Zxu*eE^}g=qz)O?N2s7|mBj&Y zsu%}b*fOW;mJa8Q-BMinO5K8Sf7!cL#lcT7yO-~ljux`p=LlH1w_Xlb3T z0>#%C+kqQW1kzXo?88qw<7T2%sKtMO#}Wd3h!0xF+50 zA{ANH449`vo1-A3v&%xpwgW0x;sF5$giM=dA*1jhWQg}K8=7c(5Ez?b%MB_cFNV78 zsPjr}EKs60w08*qO4hPG0-xH@LQB2xI!I;Wh_HqAHQ#}xO z;f|o?E4c81c3!rN4~WgMtx~a8ZJW~euf#>CcT}vt86~RN&%A^_5jhIIVhSiuMm~GD z3)?+?A0o%LHK??t{U&okFtStrBhR zKqK#}-_x8Tsg=x7qEkos9MNk46YDxisl-(mbK20c8Xh zb6S6Bh0*dY+FgZTkr2Upz!`yr^v19&C7DsdJp;m?jEn2<%9%@B#$t(k|47IX;26b?Y-o#KVJDkahBhrLQY=Q!~tnW7!YE^Zo zZy4asZgM?LTfCLv({@!fZ3f;_J!rGr3;|K&1AG5S4T0_=vLaI^h)2<)fOu0^YI#fH zSFJFe!moU!nlb#!dPggw##;E*lm=F0OKVe9exp+g`XXf)(fvLA3V<#AiYvR87$6R= zSNN6p8_kETlkfbUMU+CV1<_l}m``>QU)o<4*uPQKnk(4;7ZtSFtkTjY-0b z7Ucc9~pvvUtxAt|!QUx6D^HEK~%d&s8XAqNm|kCutxz6|{2egDc& zjL-ZlKhfMX{jp~>@vr>kUp_zi$flO`lQJd1A{t7yI`<9#xj0(~=86Z({m^EnY>F+3 zO^;)&v|Zvl`3(1q6bMR_Y*T_kCnwrDpcp_rwegf6&&%26d7Gr>y)ULb%G*A_TWhXOhJ`u$~ z_R=~6Y->8&McR`-g}{^hX`EDSvdwh!@zy?YG9AWyH*0C26iV7D-k&Ug+s^SNzlX{r zScM}JzbQ%g$0skh$X@Uz1V;dnz91%5tP}{b>Xf-=8mtPKsLOblp8CIRRcyb}tP~o^ zaMP7Eji5Y|xzxWSlae5-3p<0L3RFz=SFA3wNGR(|Jh*muxu`z;QS2>yn%D3?`ZuCh zzlA4pea&LcY%xQQjW^hm_F-w1wZ)l^!;89tsX*jF=wT4s8XU5=&$Opm7S^GN4ih2jZU>0|OJ^QJR7)wTlv!mtG{luD zYH+FdurigEgt=M<_O^<%W#oFld6Zc2Fd--TjlojZ4sbNj1${aO{Q`szSJX(gb~N@~ z&^U|201`CttcgAFmnGsG%4T1x>~1gSX_~0Oy+Ls)`t(@=>*(B4#YmxGq;!Z?$HDN)!^{*N4 zQDliO{~XVpr8v^YrOfCJ+)KDh03%%a$NXp!J(8 z4u}djdyrV6%=Lsa!2wue#aKH|;|>-hrh>o_D+@|@!A$fMn87cD3j2`V;Y>=wdf-R; z75LREPJ;t-?7bF>HVtL1@2~2;UyB%9((7dJw(i#EQ^k~|l~%5+DUE821%amb5VIGG~sG$guRKNyjJ)-@vPf0MU1*8H~{=V&{il(eLD9Kpo#1Y(6SC_pXgb z5$za8$D!+2$ndZ_0P=kE(*D}87VRf)OT%dz*0@omD`~%0Ta{xXM`|a{6Z(YfNvKPg zvA+_X>H5ALlAX}S1J$`_f9vM{jOFQ^4l{T5(daIn!Cb@Fmd#PeWw(^6vm0GfV|b(p zu^}02&plF5graJ64uz5_^zn5HAv$qa=|O$`~hN6Z-X(ov6P&Kyy?(-j%%9kU-=6yb_~`6ZI%L=(E(pJYtW6aqmif?m3s z(Ka0!likkpUdqVUpOVhRspitHZA%%M>Sfc2QkAErO+!W*eh*5PO3upX4+PkhYu1cX zIP;+})Q;AS0SQegB;<}(fEqVh+<@9?8mA!c-K(j@+sUX%2APgDxL<_iL%IyGQ=<}B z%G6;gWn{kAZNyUcWHQxEqGvl4ZoU>9rdcFf{NJU^E-BV2HEJM0fcUneH zoBb^f+Q<*p#ijMB-hFUPrLGqA3 zseEjd8)r7y1Z(bUbV<@gh&AOhuiI+`f)+Oow&Y`l)OYyIix-pdNy`{pUMM$HyEu&x z^#zStHPm@RC*{y9%a74gll+RGw-n%{n4Gce-xyo8U9XhRv4}EX?Tx``RX%E!SwFJS zh_&G2uxc&K3zbc)GJXIUc6+OcYIreseL({M#&vIG@x;+qI`oq?xhh8sybnNXH(zK7 z<_^|YvdpNO;*Z*S3zQ+NitJ4+vSEZIqrfyv2Bq8ohP9KXe(1b>qp_IVswbE0WCNrS zEBQia&kIX@HCEKi7#C7+YgJvw2HZ@YRw|ix@!>Wf+qcDGtDVl1JPYVQ|FiF3)SEwQ z_e`v@YA2bqu*YZ-us|{!;}=abEjGGGUO(Hy#xToY#Q{w4S4r9lad^vmt{wiiZrp5? zRxGxvoTP9D$tz?G^jZ+bKAUpdNE1+$S%36q!ervX(TV@-rOQbIyQ3 zOkq&vS_^t}`lh+AF}_hiSh)SAJb?=1JRD@lU$ZUbGEItp}oND}Ds zkZ3(O1UeS$P4r(qFi(l~fDBU-iq?ZpOyr?hDJ%=*&}#ZENjy(vOW{Zh@&S0h-}Mrq zvV`G@_uA4tqVI&zC-l;6g-QWpV0ijYTc$&q%(*76NgY3CXSKJBcUwVr=QEt*Orw$W8_p6@fWC7Onc!ch zSrz#s{3EG9n*FjrII5j~d^3cjuSE4De_E2P&2oJ*G|QLFX;!OC8uB?ZG`3Oh56qEA z2j+;4=Tn;_@Jf8-%#jIHUgn5q^GYNiyx~6e7a+ZKQo&aiCh@T@gGr`teU?N_ z4$SBgm>fBymv9@yWUIoYT-Z;BNfh-_0DVzIJA%d($up|{FRH_%>SxKaawnlHX(dly z$RJ$-UDTl@&&%++hw40e1fN6xh|ihqDEZuo4pC;9&y}Ghwti_A=oJJp%zl>`tcz13 z2yWFBJ@y++dJo{Uy-~MR!WZ*%opV^sL8&(^!=$AVNL*7h(rpBbj>E%Ja(szA1(^_@VSybaw?i@qrJ<{s{lzn<6e0S7 zY>AzQ#GC>eqpJp$qnFNLxg}^CPA#p{gvzT@5iJ@K|CTbO&H0054w>$+W~Gb)hQnEA zoi2*@8_oE#2K{m^EM`s_J8gdDClwYtN4m~-aU8XC{r+ZtN^x94ocRVsS-!ED$Tt%62Z1-ZaLQ*VYzt?6gD&J`%(qMP z*p_d1R@#4|$k&#~jeJL4)`#b#hYRO1bYfn)2obgKh2VP$U?Me4*Q#mC;*O@i@ul{) znYL;8+S5GBY*Nn_F;*?wy=y3Qexi`7MBL9PSp2io*K6E=ZvfF>7V#?!ufEWhI zg>_^c{-{Bd3QO2D90{9C0TZGiH^FyY`o6J!jeLp88o#@xS{boOpFS1yT2xOqDRL_5 zjZ*uPS`ZgQ%m{P2X`F6J)2yW0QIgZx;WFfU%LsC%Vx#g>=+sG<#@FE#g?2RpFxp78v7(Ih1d-HI>+P5uy0Dwp{GPHhPY+Og7g4>-QCr0Jfgex|C2to4B>Xt60-$f~s*&fT*Zu8C+0iP+uG1 zO&p{w?!I)Ei2RqI8d?H93sZy1{cOyOuf)+|}9hk{+`Gq)Oo;ueN zy^Q2EkuX+bA=Hk}P;YWVDRrL9CfSyQZrCAaqIkqs1D|a4e$-Y9GP0fyYGg&Fbe2@6!C=Wj~9`q5!{~XuDwJtn|!Ph_WWG`peyr86eg4@Y%WwQ^U@3LijjaC252ovJs z|2Eyg6?9kN>I%BePV^l>M`%R_oo?RcA^)Nw;EHhSWZQ5~>CWXF0lrIUc_{M($#{kc zz$2daJSA1dwgR?`2%CD*56HSdX5)$mvvU*>-{~>o3td^!z;?rt`D0Ouw6pLLjNpN#&oQK zlLa**wW}rpZmgIIiAZeKg;&z)>kVnO#aGvs-(R1flL*ec#`!gSOz9Oa86~wHvCZ=} zeE?x81#Jr^TTUfq;8@eP4NG5CZ;mFT`7S$8V5qJUA4%7Ag(rRNAG*FZx^}>*s~RH< zX$I~ZLBK!f1U#U!A0D6%2=2*!380O6J>PslZX_Sva8@&%O9OW^le7&2oQb#~O#SkC zRS}Be)eB3uR)zIzNnuTVFD#x@71pmMg~fTjuy9co*015h6cw2}d8Q2_PKAi+y>P44 z;ro3Zrb^0r0Rb8Z)a(^Ey+y#^0s@6i9T|~bS53Uznz_PUb}6{wTw{atT7K`*I9Npw zU;s&mkn_Uc{2ZK_<+}7vrxcbH=h22O831LJ9#Y^X5&{G;>YYMU>U#AFa2C$7+@sFU zYMce&Y~n+76%81P+{H{1U%)lIhf)LpY3>n1a!xo`;ST4T`_em46?=Ti#@wY0MCQLE ztuZa>0&NIN?!|+OAGKX4&EBV+PZ@K5Cl*ZGKIWzO^3@?Ds3F^8a85bFmK+flRB=?jJIHJk$?P@qA%wt8d5G6E z(6hW8D<%i|u7XNUuJ5by-8Yo7?V5bo2;xT0ehJ9=StI4TEKj5?>$KBTHGI!DDf^UI zLdv#yG|CZ698JnkLYqeiXp_3i9e@>WibW05CPZ;-BnocfBXxoiGI~R^=Nw9;NoLcA z3YS7QAc+Pcqs~E2Vye^-WGfLe)cQ=M)S|JV$f0Pq;!sJOsic(FDdz}dD0&igF=au? zUC@3UKa@E!Y+`+NoGoa}=tT3)S0m{>o!qXC{c{6Ha?UqjD;B>o#sG?Y!^yJr@>teS z;eq*CHpO7YY`bf)T!C|*Cw0N^^c|~zOge6kPByasIV!AZyxqF6zi^>{Ht{Zigsv3M zeplH2t{;BMAKZWci@s6So)vbfpJyMqJl~@tTABeot%N=2H`aP9sf`qQ0n~uC_G0OE z-*H`C2NTHtCm7d3X*XuMt#vPIz6m+F#1RR-Xdo(T1|CpqL>z^Vk&R|;joLWvFxsajltQ5LEB9=M&s zZ7#J$d_e%!A`eYJEgekCX6@8<&#vhN3;CwNaRd|bt(!UVZ_bt zR$18b()l~$j{V(hYtr;m$z>*oLWIw8H?p#_%ej}>2wmp&xutNwFcl=%g%zyVw;R4f z>7D&u8$oo%chVZ;XaXYDuF@CzNBfq3B-Q9BvO^0f&nD@=&kkqn%-K%w7hT=r_^)Pe zjP1T=eu3&d+RXQsTtMs#{4`-yHP12~7at?+`$Fev>)dWHwQ7DCk6unSpBcY{6MhwJ z`bBax88`eY#{WfDA@+I}4UzHXdlVzE%vdT##70!_8_x zrAkmBx;0{|G!v%r{+PIB{J;zb@%d44T#N{24>|5?14;)RViTYV?Tj@^O!c{R5_ z;k?nFs7q#g^vBkExn`#RFempQO7MFqx^hoA?`0a~l8919p56~eHC@%)+unzztZRJl zYQ~I0W!3Tfy(|?*q%Ms>8qH}vDq3Wbv*&>4-~px!Gy(U93kK%#kw~yGcO%%lAXt5T zU(*#_txrmpj+6)KQ@$#Bu(`1R?ZDsD;Z`P=!nwRL?gI;;Akr<4o4uhBr&&D&TEkwB zbkUU$Y-A{@Q7J+~!^edNpYp)~@%t_PJ?g|B9VW+e2qw78yizk9xVH-g%Q_%6Rx7i` zDkuYil7!KFfosr3Z7UoclSU3P?g4UOIkic052z5MgUVz{8WL|ByIsqYhDLoEq;cTs zKHfrX(6QsLmlxn~e|)L~Foek8YH?$JPBD{T1dSqfcDo9e zUrb=aON)m^{P`t{S~v?M^m#s8@=HBHG{1~UhOef6dI%Bbm+x=oR}=>y&^IrOK@DHS z>xWrzzud)h{$f}W@)u(TH>Y!+)o|qY@bAPN8Q;@awJ>N$Yv-1*RtIB;&8+3O_BXRt zgZ)Hn!s?gLj9El?FJHwcn?p|;%jU32$FOc@kd;)7pbCnvUFcI@O28ySOuspWbrscZ zW*e4hWwS@ChFOky5_xQPD%o0rL<{R+qJrb3u-2$KoNN@fo_-ryK;YpNH%NvJDWJg( z3lN|)5TDt0+I$Gq*FQb5O@=c)LtjA*bCvOEj*i5SEajL+zXcxQ?R5YkRRO@bI84g` z02P}y7`AeS%!HtFYbsT)+^`t@$|dB#I9-@L-OPO@gcxWr)Cxk=V1=URMHHP@qR4H>Qu2+RM8SqbfKoL zb;^)>zZG>u7v$1rX&!Y_=u}ug)%@fGSRd?@a0>~EU$884`=^Ny*`f^j!#pB(WkaM* zqg$=GwgArQ@@Ks~?6>h%nn$Oh?>QKy!+K7_HucyNlTdxHeAQE)I&?V1aetRZ;cL%X zG_IOmO2v)AiqTJ~xJBP963P}T_UY-=&b{Q8?#2!i9izv34d6 zHhg-xRP|4U%N%K{?j;NU@bdIf@_Zkn+#%ruaeckCxuUm)aLu<~;)=Z%@fTheV|*4V zp+2hQ5Ul2p3=Zomo#a;qq=22T5|TP}!7$tbGU0uOq26WVC}<_5&^Gp1#|D=;wkIG~ zzM7HQBl#!g0#~c{z^Co3i8dF9w&UApFLMU=o*&3CH{!eE$^qM;S~Ks!)m#t}_vF|tIwUt=UwQxa^| zEo*2w>D9p{ia{L1MtC_$Wq!7?;Dh3&y4gUKWK807zA~_%9nMc0Srwlhcr`Zg3eU4p zgt9I{%tc*|7oE@Mfm0gn#n!?W^f)ZQH)bu{JcXS^&>_YfmJF1=H7qTz$ul{rE!R@N zrFZPRac?qLQ-FKFu1$K%V8OCPA6-wvP}#Kktl>pGDVWl9irOi7O=*YiJ~Gbkt+*rS z1o=AK4wra6bv^KQgdor$0R?y91O0vO<5BQvN_(2HaLL<= zy)CKjPq<5m%H)7!=b@Fkngs%W2xU5BDO=E3@3&l2*LDQ$;pRZ+>m3pjPb-B8bL2|f zaVh7+cs|9X?u4mrO-sJ21NL}4#idU|4Q*1g?Tze}Dq3#}K&kDc8VfZ?A$CAI6ASjU z6MqWuE0w;$H06#E*ou%@(%}ZRx7ajk-_AD!Ja7WS~Te;Jfb9q>19OE~xPFB;sTV+3rP-04B5z7WUz0w{HE>}fFL8wQ@z`**(uQ!*b_}nnq1S)X@S5m5|DB;T`q3W`t+zBYnf$^{%<#AOO!62oa;Ytf<&oDT!KHu5cX*9GU3 zL)(eavNz9%9B7qZhR%$JR&Pkn_1yv$NV4K_avp1FnO_-+XZs>_q`V$&Bu<3l@fTEL zSt8#Mva)G(09)Rrc(L>xCSiks5hph8OZt+PGxtOa@X=a zhU|!!eZ}{x`!_5Z+P$9=wK*%HbI^FqW60f^kh$4dl$<58Pb}lmQ1O-d-8QRD$&1XpE z1NjWqVdXQtgUOr^Cp4^HO5h{WTFPiB^eLsG5D_yP3K5`{v?6*kA*c{MErW zd;|^o7QKlH4K1mzQ%NKamCz1JE-|5D)gMo2sE#l_tAvIWE^dLzldDL}aMtcmKcOK` zY;l7!p`pW+5*k|XXaz3wR^ zYuE~`Ey2DmID5-l?%PQLIr_p83~9ZwNF~h_Qz==}dMQQ3+jQVLo~lc^xs>m;Rh$@K z&~^>+3EjdR#3v4+5h%Tpy%k-6n>h+DK<7XSHxd7%Im8HgHi~ycJgc~Vew?HspvU&L zCoZ+pH8fW>8yRc)j=rh>AcxtGuB=|zCIQK zeJ9&+6w_kw1pz-1=l-*Yjz>3o)UTXJ{wL@N;Qo4LA32ouHz+$Qt zKcdC86ebGNS%b8n-mgkyr488i24D;85A^4dTxInlcaov6KM>}~0f$v%ZlOOL)++-E zeYw8BF3j?09T`Yw@7X{7mi|dG1IbBu_SY%P0L3Z*Oxq3XQciplv?`&IxJgspT!*0i zT`8JUk`=fgW=)_;OxO;G^;Cdj&G^rPQm%R(m2EP)2(mdAgA*{K;WvA^wA^`u?O44MryXHVc)K8j9uxY|W_hh29T~s)VFoK4%b;2V$+|Q(@d@ZH|RG zg2opB&~(^lSX#BL+^PNq<8b{GOg!o)gD`W^7h1IX(0HFl41g2k%JGw&vepsm0L{$6 z)Z3=nN@l&?UdRl1Q%=cI3{pemdTC+X4)8+F-$Rh7&7aI!88E$NUnazX3LSs-PicTq3b zne*C}y9SoDbp^|AT1aZ&x^2zFMkh%0X%XaHT$9c6lh*A^CegYuZ7&YX9y=kBG_%5* zcn33v;5=ozYmMU86$W*TbpeADAD>_79n~b(!3;Y08@O#ql;Md$;PHGt^Ngl9gbn)2 zEemLQGa{aWfq}A{JF>B&E6$UKj&ikz0arYszd=5P4XT!L1x)vZ;;8rji`6a&9Qz4F@?jY%&;yt964!@!lIts<@Y1BZ~;CDgu9yLUHtsB8x-U ziY%-uYFUviHd!$U8(b^dxuLrTq_IfvK=Iy^3AKv5IxJsn=HpCYB-H z;*%fJ8g_NL-(ouNQ=92Zk^}g6n65~={+6)W1m;%0JROz$jAA06$04?jM)K!FEBOnG z?|YES@-yWF+g`Nt7rKJJ!`0oKeWv+Y#pf}9?+=9I6ZFepQgq`dkUG^u_-K-bt&%zz zTo!Vc4g%sF^d*W&W7(=~e%H|~) z#@E0` zaTk1{=MtJF2y)PwM$BW^tC+^&O+L*L08aKaorhBuUj(8IqHyZACI+(GW~_cOUYjMS z4)KpBUx|OrYEFoMCjQYg{&A}D52OF;1#+5>o?6_Bhi%rkISTCdG`?qDpGKNAe_|-h!Ml9Oq>x5kD=#YXugx^w4;o^MyE{l$u0OiSv;QVMpei&$1L5&J91{ zTw@T0z%b64t-J$wu|&kV^d)s_Ts=$#V|_b18t?ctidCRR+tZxSeYhka}X7;Kg;+IaSAc;A|$y z**8nsG`49U;(tB+(4A2o0TAPhvlS?)g5fOe+q+DMK8J7iGRe*mGd=?i$n@C6Tbts* zP1RwY+a1o3579Abp0}NRvjebdo;ODQ@LZqu&-UxW3(3Ne#BRn^KeI|;STCb_zdP&^ zBj3aN4mUf&1CCtQKW{gSG}{4<>m?p6k)pm;LP93&WaUVosqv#PTyPsHUM_uwZM()l zSv6|$zRc>T<83Uc3wvl*|*| zUbA3~bBN6Y3S5%{;&WQ;giY}iG0RQP6PXk|#Q80ouaIY`7{Jeubnr`UM!+HUb&Oln zQJ`UbI)BU--fvlMI#6kOBw7U-PsH(WI7VFm} zRk%?H&+q#f>W_Rk&6K@;cW7#Z3UpLFF2ztTK4}QV7D98yz52iv1avM6^^hay+8t|3 z<@(h_S()dVsZG?#xSJ7LloO&+%;}It_9>c8!VWTZ`s;qE)s*EhQs$$T!xA@#7%a{? zixw4;sug^59uz5WFRO&La71EM|J-(SCfWuND1j zzBxs8x^vbJ;{y~CvO93CBBnwz517Xk&{c(hq|q>kY1rGcHh24%0=oQ6>=T8COFNeb zygcWuowjpsu^@N(5tDmDCrzn2WvkU);11BhKZr8CP+f`zF%05NR^Vi0*PRVDgBeM#^2`D!&+pVu;1zx%% zKmCQgz59M<+#c&-ygid{LF)6oJb_Jq$}lNqbs%aIEmVAuLPsf7HNffW=>?qlwbX@n zA;%@9FQPPUfh}(4!P^_S8pTkDNA@^hRKJ4>XBCcz05-r7%n7Dv6e(V%@JaJ5E@B2E zpwH$DZ#%v3J;>bDr;CnYt+KM-gJQ)Lq_|TFgHM@F8hrUgaL8ItANr*v!>J?m;0Eu= z^<0?f*LofNtInU9v>)?uTJ2S5RIx=i88mB+%*X(kj}sjUB}&p8k=P(x2cd+3Yz@oV<;gC3+J%2btsTkeLTX)qCI>BK;0K5A4xqd=fM$tbVoDrX%tgawHy&23qK%5+8b6>%O`^?WiSK%akA+|0C9w z2&~}t3RC@R_gcZ~TBm_~Gy@Ij7WVz3;X@w+&@pdu{p-1r$tKO&LfYVsH z;pceiN!e2#&)P0yMnq+aKY%QhDm&?mVAfbexBJ#kbF5;Y_48THyt;{%1r$?8`U&O5 zjaRs7K6&iZVX~aDA%CFek0^}Opv@x0^@N*}>;A1wqAOFfS}=_hKtiZ2HZg;cG5~h^ zQF3o*h;&cH23r;_lKLq=vA6Ym?Lf)C~RIxBfbzo5Q+=}+@ax7|HwQp}L_$w+XZV{<@+votXy1V@0 zMWH28PkqI0?=*hvqaxXHsg2KilOh@^TJntiz;%}j_dcOY4B3s|C;k3`7AGD@`8`6j z6xlYUF=|19s;Hn{0%;VqE0w{$fTo>H3C+y{CM*h%Q?Oa^c%H}fM>+|$fsIY>->N@EuiFUU)8AA08~Cey)cPxaD3wx<=u`PSmx%Ll^FV*X z)fAYB%_-!Y<`k?&bUq>Gy^~+kOqkk@OJZOc28eU*bSRtk{Mt#R4l!YfHzcrlrA0aE z1S$ncSp~=+iy^bRFZH?&nV{36>smOhr2$e;-sPy8e46tr@|og9D__O_Lp;z+KbZqM^7TaF<)*aeKGHo)Nph0NS1FY?#S}3#p8rGq63^!yg8pQuEn(5!?OEO zmcJm7{17gv^oD$TF1LH>9c+Pp4hj(EF(IKfYp2u8Q~#F?Jk184b*#qc8{RMuog4NF zDdF4$Wa@6csh{~M6cg;OiKy*g7%mjuZ4c)8p=)0iY*;Wq>q`djhU+3%2hbPs9V7f; zw!h83C>!SEnRf&#>+e%l4DGDy*w-)kT7$A*gYps$%0(KKi!~_h_h_=&gF(4egL0V$ z<*PL)mupb2(4f3bgYq>Rl$UEzuGFBsLWA;32IXrtC|7Av{*4CZ>%i*QgTkvBkbkQI z`34Qhzte!ciUIle49GV!Apd~@d9?=QKT=kM@zfDKTrzB5HPvWk?ar81((DJB2xsa% zS~43cN{dv4cMyVMF+jwfg%<{oFq*lhkGO@{?*MOL4pxEv)9(*!43s8Re?k^knT3jC zoiKxl_PP|%k1qU+2az9yvnr=yC#+uR@2I_Q5530ISpRy*(CbwwhRb}dsEja+H5P*q znXi#KEh!Ew0EBvwQ!=zsM$ztUUmnM@C}eMRp2g>%(q{yOaiO^D68N{m67I&W(hXqDdZ4!ESa2 z8X$qCxR$gJ6~SM^4|VhT3O8xXXx5fKr18vOr~zhBj|>j#oVa#a^E3u^Z8fNC28X57 zyZc~$P}dC)>fq~>2EX1h^flpwgM(UqZG(F9h(TQzprwO~^;KABTvtJY`eKt3Dg|nrF?Fy$@?iBp;Ve>24 z7DigGv$X+rPtLX#2&#WhIE(StJc!>prcC_p3R@j*Z1c}`C*mcD|8UlC+a`d%=9?C$ ztPAg#LT_;`sot0Kj&@dn=#?`ksf3h(v$Z2JeHkGF{L>u(sWks0$IYhXgM(AjLRiA4 zr!gfrR8x`==Q^kC^zIp$lBW(&$-&pp8~l35(AOJ=r)2fDP07&+iQ4vkKB>>SFcl?EV1iQ}BC0$FJUN3ve zYY_9_#NXHQ_jUYzJ%7KMzi%)lYThT=f$$AR);7rwgnt(&*|&zTPm}C`O|tFbTh-IH zCfRl^)N7OM+rrfg{cj5kFQ3^OzCAw>C)t5;ji&v9aOFb&?cso?{l9%B`EDtpNp?+s zpc~Scnq+4n{tkp!rAc-=Sor$u^X*{&-zT~Eje1$hJ&5lP2|?u2VV8R-1wzG6)6;6w z?=^br$-!JWz9w9qv}_ZW7g)_!?0DAyru?fe=~pIAffnbjpFw39~S!COQHBJXi*({DNyG7op6Ko^sQ*|;Z1h?U0L|g zaL}8waDD$^7QSO4zn+o$ZWcX!cY68V58B3;{*URyAMpDh&%!MkpAwk<{aODfvhaN@ z3BDiWNdA*q_^~YiDVc^k(_4MWiA{e;7TtsI$O1p_%1~c_o^R~eo!q=zHaFwK?~vI` zQ>9^FVPc{mrkXPnw6LAOis@vyI#g=h!9FzA#8z+HgQ{dC!zX z0MfEaK*heKv?(=M9qoF*ei9=`1L*kh`RT*oWC=JT3{-Rb?(L7I%}do2E?E(5AeABPMpHGVm`%1(Hvk}eOZ z^Zn~=_{YL^;kRwr!ck3BL`eDrDt3l3A>e(601=4W`mi}6EVA%^AMfqbcwFBPu;G^S ztcS70hHWomC-@22!OPOtf`pc?B0K1Tb7Vvoklp>RBegYkJK=X7xcJ@g#P7H+{~cd_ zfN}`q;AeHFR{v-GnybEM;tEdh;C+rlc$zbaYDbf~W;JelL>b2buWH>xuCDJctwDcIw25&lkokd{+EA z#C*ShX~g{-{I0P9Ds%e&1EX)fqQHmLa>WLwKr-aO-g+Crj?aHV)=8VRcukW0j;4T? zP}g+>q{9Mg2c+}Ad~}YBbjE6ggDN4y`NJW?2_JUM?c%b}8QmaN~qRz5BChtxl38zux|5trwwD+g}ox#;G zxDuUYMkW87@05C(D$w!A%T6VNNh+K7I#J=ryjC<7(L9#{XhgLPj}y&=HN#JnNxbC)N+e9<Rf5G+E zEc~Sg;uhfw1tmP3c-vnYo;Ci)PN^7%Y#SksBw$?V#>|vYWC23@KjKr{t+cV#TU6;` zW1C`$o=!z|@ysU}_f`_nKY?ag4k$X~f$-Nph;iWFBgi#u{+q_w894Opk=nCP_#5a- z`rxNEtK)Z>e-nqq*pQSm(a=ykT7b}oaSHeZx|Ve%p+IP2(}BD`W_!~-V!$j9v5Nwp zfP7Cs?N9t$n{sl`Gex>J%ps_#@HnVP+-nTY;AR72qD4=v&V~M;Y4Eg|qDd*4Qt-Gv ztlrY5=SbBPGG+3z2OF$jFu%8R5Q~Egf+idWBE?AFNGzv6k^P!iG-OKLCyWrl*Pod- zIibwTc^kB~`5OP3cte9*$?NS{V60X`v}}jQ9r}ra3VdMMI1v=kbB$7HfS<6?>d1f! zbf2+e6!=S7F@yOw?K^l&+}uHTwXa^pTKUlPNBNNa+WBJ{fN~f2`#+Y^%TB%>Xn~Ja z0wO{26k4M3?6HjhS;5%e9;N_Ypawvqh(Kb=@|dky{+1wx{O`ok9@pCJ?=xA~|3Sch z6lDBkR@|E9PiTemS^e|5te7-J1IwdAnut4mE;go6A{yc6-)jx_58kXjc$~^Ur)5~A zxX(a@?eJMc@B|;l#qZy8;|R40CWL<4@a2T8ugs?VSwqTkn_b}_eSn0V2eQ6;?N*(t z{#1S4ENYbB`x~o$sLl~J`Z`XFG<6NG{6vYE2%>!4)^U%6ZePbe<|8Eh^Dfc^ z_zQmrR=8v{Jt?k_WyR5Z-oMBRxln-N#;8@u5xGjB!BXnXC*nr)#b!&CRho2~*N|3! zyYV(v7$>%bo%o(!(x2hiQYDRPSfPj?!z?X8Sdr)Ob^S{wc#DeZVErjMUQIO}U7scf zy{7KhmXrO}P-v^#r|+*XDqqw5($~Ao*C@~R*Fr*bVGHhKo#DLne2k%8xy2oC`yJf# zA6IdrB3Jq~{N?a(x%=46(BwjZW4yHd*Vw>CY|HqAT{O1{o0MA+Jw{fA4SqSrFId9# z@MOQ7&HTm8_lBov7+lsMsBveg-Ag8CsD}D78|trq z>O*~bHPqyi8W`$#4h;1bLqk3I_GJU#j`arLUOqI`)mt0tuNg7a%K@`=sKb9$pT(0n za>p?#O)6bk9 zvQ$HlW`uiKTrx9@WPgoR7R!e%rG`j7g`)%yB#G{f3+aUisrVXBo!l<}1+{j##_$vq z6ZWAHBk^g93a$*AXXw#(O%*F`^ym@Z1Hy2q=rysqeX;fMn$(>19X00|D4UC_rY%uk zYemA>mkSirc0kLEtcmbqJC=#@+1D>p{ZyIn4;>D9dL9IBYAbb}8op^jfzf*AyR-0J znf$$PMM#$$Jv-qhQ!zW?KQH8OrE~H}{g+o_m{c)o**8h1>uYuvS{P3pYnc+0035qm#dlf3FSx;f9Z?F2NI?Dd3nA(23^^dRVpVguM zDdxl;(Lm}SFkdpW7II@29AD2t#zkMfpH#p!i@{t8;!7-U8h}Eo$#GlnD9zK zpmJ7xhp?19ad8fH!dtX}!}j^OFwhOxhyTPWXX@NfX5q(e@P2BrbGOINu`a`#<-Pmw zoT1qYDyZ(=Zr$ViA7Z&+)ui$BXL5yg!VlXTq<=UIc*$@_|sW9 zoQCjZAHtuuRp8HLMTeG2qVY2hb3>lCPL1H|Fw0w~E<4OBSi#Kqg4wD`W8%+pE(vD9 zxMXHs31=1@LS1VRR-=MFMZ@y{reXOJEf1@4!9zG|V16_k9GUOW!hfUPF=^E+srQ5L zPF>K= zH6DzOE(*b_IAlt-7vuLx>6EyYoCo4oxce*SC_F{caJPB8R8#M+c#E*UAnv1>P#m#D zEDJ?;*<2lGvMiY(H)rtvFMDqTZ`W1U`R{#R?mhS1bCZ*owzq9)*WOLrv?NU^C5`Dz zvTu?$wJiiJQl)5A)R=UfrXa0OZ7(H2)jC!{LU_Upav*dwK`Q9Ee>iG zok0i3j`E*BDl^Xa_dILuz0b|PX@D}r{QnSo_t|@|y_$Sl_<2UqhzDz5C96=6;5SIY`DEbK4 zBrCPtDtW;IZP0Z)zO8+Vl5a&`#?5FMP#LRCEU+eJs(GwR^jDsbFZm$}W$Y*QKjco_x7nfDW?5s=s#wkb4@;5Z<$Rgj1`DXzd& zIaZ=rg<(1z2wQN42`YlNI}{LKymr~jL-Ye5vBpcdg}KnQVPOh9!KDs5$eRZ#IfkqJ zPe#Oq-BP5kneSbkf}9WFRyZh*V=j?H?&3el9Z>i0c}14I@;3L`-6o$B5PcOz+Wvp& zqIfl5lVipFE9QJLAB)@w?p1iT(rSL2B2iyc5s7*SXjR+ zXW^%@x6WB7yKB(Bjj#k!UG0!0D4@HWs0wpN60%^MpOkc!r?uPBKE1OvcNNI|6LLQO zqa#YOH3nM-LXKjfn+n#ju+98@k6xGt5c%D} zw!1~nCMHME*B3vpn$>5rrg03=xcG(ifMjdGsMVi;mmZ7`7w=2I8R0K!S?QN^1xx=5 zbC?y!bHzu$Uo-as^2_GM2lMJPS@CGD*y#_EoHH*z46wSzuab|pQ#__Y{+ht_>v{E~ z2BzN-R3A@}`OO5G-^vwp{qJ)Kws;~}nDuYx723w{(0I4_-Mo5dxA;h2y{}*V2TJyf z-veWM#qWb9gW}1&dVIS0D5y4F{6Vfb?f=MIYwcr(Qh&(VM-FC5yC@zf+)N_$`>#Cn zdF&~eZvA&UzqRLJu;jlX_xi6+hPT+t&S|MuegnQ3)9QBRAhnG+Y|vyc57_BhOcj#` zuRJk}Dfr&4kboBUM&?@mNLfrJm`pganO)yTe{Vm4;LL|)6d4QDBs+ez#>kcgNJ%m$ zW$9&4(*9yVHyU=rO0DJF+a%I~$;d#OI@K(_QwY0OmR@fTFD}wU1lo11mh;zcA|h~b0{X`_0F(l z0x@OE8K|*aYDy)<D{b+t*vCdqzG28Eh&<*e(I@*akGP0CpdY3 zhU0%>j{70qq2eYPFIg{a*Qh3EQ|A`tI8<8TDY4i%Ys}oBxh36kH%wc%1UIs=N~GP) z{Mbf8rOveZNdt7t(eIE?WVd+c-jc%8dV4}L-j#YQ0ZzZ8XPbGMaBJHvr_;@eMWxMNnsk4R!;xoCu@aGkX%p6lQ+?2a<6<1`kePv^H*!Oqau zig`A#vm@p*HpF}^V?)fJW$cK#KW9e_0_Gg844q4A*CJG#ivr3otIzzdxG&pcKA`Ky z>Jz{IbFZ5&EbWnWS!u*vU=E+ByV*zG{7qY60GqZlRzWE>007R&83y!TgAFY2*76df zHs}W^<6%qP-O_!Izz7wuH4}!YFN{gnMzw}icEq?;k9Q|-Kh|&E4q=SKz`k9z0P)G` z_&OS-sC>c`ByL4*@%c6>P?Q>ayIL9nwZh@*UZoAF?$_U#C)u7u zCsTp^es>9b4uxOlWeSwg4?a{(Lln%Ovq%Ac4=RX{2(>ic5HN0dvxT z^4b5zfhwac@338Fc-Hvz>A^tQO`^J63|am6!EzW%+2zBqp8O`T;*HnL-3UL*vT!~R zMmNeBKku5k8+0Kc`SCZP3+$V_L0|%%VPQ&rr$4>%PaTu;E}m0fxNq*u^=ogjDXdk2 zb*9%{7cLYdz9^g_nz=ZfrdOv!CC?2P+HS4>XrIA^Y1=CA#N`vVFp*wx`S3i_&$uCc znQV8;NGaVW$IB(*`G-rsjTSIa-VuQHVe)$QIS_+c4%@-5;8d~0w#tC47fd4SEZJ8L zSufDeISVu#g_(q`7fc{)=V%*O<6T5myPL$+nFdoWD>n>Ld0#-)nK0WzRYKh&s?J1I zoiS7etA(oeE$deqo7p&tO_+EEh<0W5XwGq9O8n36nJ;q~Ub-9%aS?KWgq#Ui3Wk)a zVfbZX=i!oXlNUkv9E{b+pD6h4JUVwyXEy+gkzH4toVN70yTa8<22FUcyH^IJ8myH<~wUufD%c^YF6w;oCe@0M?izsaFlD?{ZSVnyFY| zD)ul7do>IDs@E=R&)vAVHdO4m(=k5G$wJumqPh8ijBfdOu6DfMeYn`~bFx=+LK)4; z)xzrq9T>v5nv=5_hVJFb4EtRAglmuD#_We{j)pzg%$-ALuA?(wu5MpXk8V(pZmhna z9=%ZZ$cqq22b_W>kX}shUV=dS3WoI*#Bvh?>81RZK>A7vq?aMxi<>2VzN&gaJN>fa z<)a{ea-GJLF~WYhuDIpIFXj9~T6 zn*T%LTMn0eo918l#UTK4#9(!+!%8}3fBXlEV*=|viWi#cqCm9L>2#HGGwrPZahVaO zerabtpsYUiYskFqK!feQmFi&zfZjeSsaJ9k_U+Ja=V+C`=4jdHQ0%)X_laMWu=K-S z_3TcRIY6a-mIv)89YeRXpQvqG?UgRfAL@>gT+HF2eRHSr469v}hP>uZ>MqWWn9+sJ zUPr?}eG!|iUQ^srBikL}HUaRC@J|jGuL*aEsl7@7q>KP~TXBazyZvyAXh6W>RJl#6+Tm9Lcn1=`;$L-lnsO^?Yn@%miDc|&fv`9>M( z7mRQ+y-v#=oUj()6I$vhh&YZbh<%nr982#xT+o7vj@O&-T!l5nd$}UQSiR6GC$H54 z5T4iggvJ@?8*)R}H{wnvy@%0ufBaFyS7v%QIb-SJeK{Bg=V9TZE01B!Hv`N1Zao2I z;92GOz?#u(g(2&OE6fd>ar;K31d z#Dz0T9vm$Z*<}2PseFC6`WNnqM5t26oiGk{1OQ18#E2|Qzi|A` zbXe*VP6NwyxnIcMV$b1W$-oh$rc&N_=^i`HbgD}E&JG}!po zh>fhiXv31B;}01+s<_bct%i;)(7X+Nt zFRbm{k)O`cgttf^KTVTEo=B7EyaerUNDpF*Z>M4R#aeqg&KNbP^`OwdUbXXKnh6vH z_$aA~c&a+uU;3ij-Mo^N{efnE)$Ihp6*~lac!%EH?$Dc4hu*xjL+o`>2U*CXUiAtx z6^3)BBH$-hC7-=n7Te zAq0HL5b!6Q@bQI?ZhGyOgm@xYk zeqe4BJ^0ZSOw5~`Ss}CqNS;58v;g}PSo?u0Ssa8}S*>=Mw;ov)hs$>Y+bm(o`iK@p zHCcDWrp5J^_0*ue)C~MkK{5x^2&Ani=JMxKO}r*gIt2)fGawiwrZN{(-?hA$`d+}C z}H>qPgBBg>pfSeLTbiJyUQwHuv#Pg79QEy|YCRQFXQTp?ZD4iwWiP^Fu%YV`ckZ*0|$3Nv28VsvxEYIb| z?U3%PBsyMQEh4eM4F&5pa;FEPKDCd~t`_nkN{iL#a)%2Zz;K%Q(FwRc*#8BZPTeEMCa< zqGcjyKluw%v_GEJsn6v_BK@Zfeu7M8V-j*2FFn7D7ug>~rApHyMpZ}?F9fbi>Jr8( zzDH22fJum}RNWZxdY<_XN2Om1zXZRW>z8x<@*KZx@XHrImbO0LF|lXZT};apHse_5 z6qL>3V(GD+-9Y}iVWi(8&b2#%TIpb83XR!$F8n#ih)xd?L>>hsuJdH0~HH5QG`EM$*bXpUY9DL?V zp3_tU8jY+s=bEzVz0oKi$d{|97@@m>avV6@59f$N%mLpgdw|?MXNry_e5}gnx(!gM zSOl0HR|4h8WQ~AnCmc2)R-?Zu9(=pVG9^L309EL++Jty6#6`}4Ko>op$5P5{!c5tn*J z_!|5c;VXPhXi#zu>%z3OqsLL6e6B1s#lDy7QNC)S@o2%w#88uKIlO9tC6L9z>kiP4 z@!*gAym-h*^*5RiuX4aLrz&)`Dx{=z^f!vR`@JQ7BkN(lP^9h;VYet2DLO1k@FqG zL~G}cv}Kli#oeIB*xn!&L#*=kK%--guRXfOl=KpFXql<2omelIFYD#?6gu)MDR~=t zNqW5{+Zc3;7QrKuYf9pMy1=cY%7ST015NYf(qiFD_WeNb2vcWUski&h)D zg*t2;kYWNb%Ji+Fr#)c#5pqtkKZTeRV-GB>8S$nL1SEYe2q;BOgft~oL*XK<8GF^>m$^Zc_E*DbUGiT{C%N0OU`nO z_SB?n)SS%I9smC8X2c+45~#NuFvM&^y>~I;iyJft0We)au|DT@-Fc zSeUSHdQ1#15C9m>%rZm~e%{qm@0oi#LluL^{Oj z_9<4%SRQX6O)SF0*70rC$>AA#M^tQm*%uu$6a~xmu44zgjc;g^Fl2l~O#)AWNF3iV zjnBm=pn$yK1g4nRbIit}p$~?rG7gljgRRxR^}!B!H5h{npv1~B1`{KUQymn@!ug zY#!OBHUQqi2Tu@QSFJu{ZFq4Omu97HYJ(lAwv(loea04~r>xk5>i;56Is0#W`KrY0 z$Mp#n5{rq7A}tXnalYr#AzF<&7qbEv^vgVPl7ZZa!Zj`UuyeE`LX9knYMNJs(3)b7 z^c<9g0E6skx1PXS44B7Sui|S0Pm#W=9v$6;E8Idsa^i6;`=PO8l%TF#t*|nM*c!$6 zEIWERCzdnhZLvxMN59ZetZQ=>{AdtHJfeoVBPIDTEwhGlVoY&_@Z)cQyf~De1Hkkd z%;!27FJUpda26lhPIZP2#OshFp%;gtuJ@!k@FlciWUXOX?|EiKoLA@Ta|wW?Oat7F zVy1wmSIp_+8nZp%&|*C(NtuJ!#)dhe`pkY$uhCJSY9C+$hfVQ) zmLFcb{z)ira!lZ5Li>hAGyr<~xfTWDgJeSgU7^I-Nq!In#}_bsGc7DYxyRWa3jET; z9mq=ml{it4vpzr%53Sef2I=qs*az9cV`=9l22AT+JQ!gEorJ^BQ?n8S=r9S6-i1i= z@x88K$-FpFb}LeOtNq6^r5^J0-XRExK_3c~3L@|%r52#BPKrzbv8aH7QqfJGj*EF= z3YE2=|Cb5dAwChICG(da@vqDcZk96Wr+`QBNz7iBu{`oLA;Bn$=O2QcDVSIlG6b-> z%$e?5Yxc2{6q;auA7(vBH=s=n#_rK~4TXMP)E&s?X&=Zwe|_8KWX**^hl`O0cUlRiZmYAA&u-j*Y^fUORqXg^*!RVnCjaSgKK_rdLZT&^L%SO zNg|^-ucsfHX$fp|1`9MZ@nJUm+f(`Q#LkItwg1ttr+gtf5)L7}es6{e)K17_G0ikj z7gAQHk5pT4oa-=?VhF}qY(!Z(K;yN?>+8qPqerSN#)@qlN+;Hnp~E#oH6q*=-~?jg2VC=gUC8zar%OD?+|6 z$gd1?8J_ZH0bR{KfGiO(60Z?VlXI`)6#l%y$>2bK)OZuj5@m8L{Bi>BSm)ORQAH-R zCSd@^4<-Op4#NQP3y;@Qx8P(`4tBas0rH{^7>8y=`n}_kQuXE3ioRZFc5u5bg=8SHYu ztfuD0-*xg)Vn8T+J?D;&+cfi(EeLr;Flk#M2|xjV*7B&a6gE{u)7r3A@K{tbqg7M> z)1Hm#a%2pHc}6peXWsB@fMTI|WLQcUPDev7&^eAG)2%qbTrk1L1)sv>(!gZ5j=Urq zkyNc>6{YDFLfiyYn5r?+B%Hm<%Aup=l%eG6FehAF9aag~X7q_|*anMS3n-;=icrEp zKZ0!jU{b~oQm#c1?N8ungOAoBSAe9YHYh8hSnEqK!5D)%!lpIkE!k%1Q$tVQDgic4j;w0yhiox&206R&~mA4H? zQa<~#x;kx^p#rP2db=aVvelAK@0sgucXR#c-_75a;%9@Qiw2?UxOY)1W(;HQ`O+Ix z3@qgSphfcHyczf)aidULx&+fG)TSUY+%QT@Rc%2PQ&w_*D( z;)$^u@aoq|AA#nu!5KgoIA_x790dWrkrd{>yZ?%a*&Tq*-jMHH(T>K>nMeFB#0V zoMyRi>;ddHG~F*A&uobgxN1pxSBKxYfq-Xw*f>K*(!M-6;fXJS086%+hUYAO9+C?ObNB(mvV(O@`hkzKFeKCZ? zi-EA62uZ|uE^v*{sWxORl}pp-f|L7kDMxZoS>bne4LD+oeELqi^YXpP@@5HUY}0I) zf3MwndF|3~)o(_fb}9|1_wniaD{J*JyT_oi00AzkU%*!g^azNWX<@=RlAxzrqHG?z zY}R?y4iKE;0!SAyq9B5vLpkUM1;7?lQj6YDW`dcjYQan)3FetX`kVwaA4@O~>4xqB zc9sP5EHF}CCYIT6C{fP^G%=9It`kjYUAI;(0tSblPvIc4$cYJJW3*s{?E@@my@7=V zBWm1i)GBpe2fJRDhQat-A4FC?2&FO*W=WmUx&pW<)4LiUt$MGyy|9f?In?@JEt0k~ z{zYNG5Em`vRSZ@-MCY0^W2=7-)cQwl-96|N3%doc?UO<{D?T6}WoXqPopoFE@rC{} zIq-g|+YzxhE|%^_5fYGH?w_ryL0>(1g5M04Ri~W97wH$P zEA(6E8cVqNWLiQ1e~LDi&o03DKpA+4rP3Ct4#3DNHrSxG0l=w+U2j|%E@a~;L^fK` zVl_*wNH1POEV@;U8)f01mx4U<0C(Pf7jN%*>9vXF;n~93pJg6g|%;Of9GV|Fj!lHG&^KU%qqk8VNs_!UE@$Zi`0#s z6nE3nvbI=mtjo)fCH#Np^V*oPe*x(t?#=ndVlj#(jg*>1p{|%RN8%;_?w9)n% z<}$y)sj+oJHhZk!?X-7c>xjasHln2MOp6b~{>6*Az8F+QMBP$On_)~i0mBgvFq5nl zj6W)52N@bf^8+WRFw0fMdmpCQ%njGVF}9NsC$?Q{k2loh5*O-4^){_%Z^Li zR?II&<4@t)HDh)PGO)G@eoAet_%@LYP9$(hjVPRO#8<#?vRZ}u@^(Z`m)D^<# z>I$WA2?b~je=ij2EojpYlPeto)A^!~nWA!k!PIPR-`;2}eg4$%>4Z*d^?M=7lwzas z7B;YfRe38tnw@61?okghGh@SWI%1_z8yOW*6(GRC%>C47f zkdxM2I!s9CGWk;Ch%(%+K4Npfnj*y7jz3zTMq^8i2A5G9kYTqePHmvXK{GIF5}5IW zJEqM(-PY@6UDx)vL(z>_(yB;$qC1Tp#dEN(vA4m(&TiPmQ_K2f&1slSwXOtt^a#>g z+YrD85ZcHTs11QAl5GvGwi!6zdgY=XV3(Bh`4x%+X#BRqpiL&WQ~8ZPJYF=th{y>> zA_%&>8R>~8fOSahwAFX~vzj4lO!k;rQa?D=S=C5~<87+<^EZrEA!&fUhQ*e}ENf9S z$UkrA(25K;NEgOms1*e{n)D4s1^=6c;~OEf`5;zetA0f^?scQMNGe%h&S`FqP{-ve zIX?!9S4vux&8^;##vf2`BuYicfJlyMD1;rGtNAs4y*Q)28~?Jg4)M%#%&T&h_&AEH zey<6u@^PPcQYDma%$o7QpM_?oLl8uU%6bT(rd%Ib{|!VS{PZi za6rOCX@?a%^SeUt?8qOxTYD7NLwK`RH-0mXqF4nFXu%4&^orF2Pgbm@L(;=a>w_Xa z%r~cA;Zs0e_zM=dy@zNYQq-ht^l?^(u*%@spa+Dwp3->k~j@8UToED_B->AHq8P-0ZIdAsJ3}-><(P zurTWJI}D3aH-$Um*B!4(((+BIQ}1k z{p{>_b+E5GcWb@XKC|U_YYibpHI@$C8h*3-;#`dYER;XW6QgnX-6$2EH(-8onzAr_ zVbk65=k&wXG}wAnlbbnLtnNOFk=0ioa3;*nQO?_v38R%WO(OVMWJ2zMH{r-po}+qa zgw&}$a|&2Q`6hN`Koxk=g-=Ewrm5jcp;+yKgqKjii5hlh*6o_YEY~FRx1uV>`GwId z{-dV<|Bzl`ZAYp9tmqY9;s2F-1qbGA$ui3jfC6i}3w-2@P_Ovw8Pjh2$>AaGw!abD zTSOdcaf?iI5+Yhk9RH0mP!>&u!1mk;R!b@v92a$ijz5+j#~;${{1Rf3H;6(!c@&UZ zf+uD-zZLw4aM2+Hd-V!tt7Jm@1*f4}wta^wIkfc;`h=?-sm@jOxNJSWry3f8_I^yw zlpPE&YhyP?(--PJ0oMgR*wopL8y$W|Cy4hjedDD4;sd!K`5g8E`^6om1Ec#|j@l-p zup`N*1*v@eAqT!Bn>A%#WQ7UvQu@D5%SJA&GzNnK!!FP7{1$XAB(Xm>rN4e@@$Z#H3)dO_dKdCezqODTa+#0T3+-?aX^IR% z<(f!v$12s#fb)HRn$se}*_RHq>}c^@;+DAuYl%Q;dIw^g%Qh_=Qm<@!B7w%gcMS6P zc9|L}6AHm@ zRqx6~#7W37w{Svg%a|W%Exz}((!FnHoo(5Di#-1 z#|OoQO2xNHnfNYJBEE}BlUh8tdQh`L0;9)rPO@Yt<0UL1676Oq@g4JwT3qbmLX;8CdPXB-FIYXpx)QoH8}<wcDFPm5!!yuFxtAa~=zzk%d zA(j>eGb<3Yj3p4qWvrcP84D0YYQtba)v8t3nu&`dS`bz{tXdglrzasaErB?IPqoJw zSFNl(h}-U%MJW!_s+Cs`TWcUWHCdi@Jn}fB*JwC#)hdP=4Pbrt-GTs+L8LVRZ0U!* z(X3h-{SLINzb}tpxXMv_mlCk_!*=Cg>4@5NMrBu*AdCx@mK65Mj~$mc!@h^BGhTzg zKx9HFdUfA#%VA)GhAwx(#yVHa;@1}HO_lTPK$q9{AXog7!)>v zq^AN5xeaOH*zdG~!P001hHovMq+q~vd6Xp6VFr(v^mfgPk?#&N@8}m%Xf9Yd9^#?A z+(`<#Im5A4jP;79Mo{;PuoHd|R=3!JoZDXC&aguS#--WwYylesc4Uhic+s%xaB(Hm zw#qQdKI%<=7Fz5Z~qlgnxCFW35)YpuC~_mNBLqcZ_My2A8X z!zd5_Su(QDWG7+eSMb#;#~NFv7!+iQ;slNPB!yXYxRPznIP?Z*Tdr0CDhAnzsdL_j znWIq@z@jkO_4o{A0GD}_HDJ)A%Ae(;1*suZ^~`XVik{6&2^;^&2yKJ*MVqBcZa7oU z-X;ZtnKAKkRdF?AyedwaNXNz0&Ul)%P$P+vtD_ux0biID+NEA^C+pr>$=UXTV!H&; zu7a}Q4~$RvbB;~Gx!}*04gQ!!xzaHxL<|Z=YpRU(+1!#@znLMCs7*`RDjUwT`Lxo@ zGPY?Cm zOBb#@`%J)%0*PlKPPuruDF%@;g6oxH$2-Z_ARJ9Gh`KkX@w~(3)rm`K`YqOBw@*Ho znqT=0*OXZyEiG)`~Z3kzllo`zRXmM$1@g=34dad!B(}LLk8RAgI-cS zX8B%Hw278~u;%pQs`0-+rUsy-+dXE5C8`m+6qi9EoM6EmeJQ(^=oO}&7&h3`wA`aw zG++se0JncHjc?Y8~<)~IK)VQ24KCNukRUjcdS9v0dwLg;6+X&H>qgSBH}rhxTm19Qj2%v z-*C`HcuHE?qMm0a1^NQ2A|e>HA|f;)1|hTW+*712nKHY(VMe(P)Tnqu4C{|Au*M@z zEk@VR8ax9Tep+i>37_OTa)@{Kg~3tgU8Oxj?Oeg#5o^9>FxmnC20t*Mfy;;do8J?;jD3)lJb@ z546uZ7(XqjXlLwt7)D__Mm61AYYYcJo+N_v4OUd!Nq?mXIomKApa z#`IuS2rLz_udI|S-1jCMfe2)fO0}5737o5#x4e4VveM)pUpM}33lr$lnY6122STMR zw&o)5rhSN)g|5=p-o(pK{T6b;GRty<2`(iW_^Bl+$@(d$%t5YjZvLW0b>%A=e~&k& z^R`8qa1@=VP4^P&0KSuSg@`ycynI&_Z3F~3+@4X3z{i|=ub-bwA0@cIC^`ZkIq{!x z^|o^AVMRk#=3@}V>G1sF@qG^BE!j4`Vf|_ zME{%UPaho6r*ehcHca>y33?|E3*#gXV0LRgadSLwO|CAWAfyR-SH50=w zKQ7&0j0JIC5YMJaak=UJ1#H}2SeQde7+>V=whLGh31Qm#J#=Bh-=T>nWJA=9mAU3j z71~Z#4chL2G|$pB0}r1qFRE#HqoyBtQwNJL6v*{$sxFs}wE|NWhl3pF6{5KTP*g4c zs)k@O;&-<6(#4(14VBkg8ZK#jO^^>$WewYcTo)u7|Fn=py|Hw>TbT9r*9K*u^9IuxPG=`in&>qHSHT;Ua_O@zs(`_0PT zBWMSM2oaQdtrWt=^abH@idn#|X%Sr_DZ$EeBv-jQt$!7fc;mlP|BMEvJ$8Ir{4B@7 zKyp=7Lv7WgN|U*raHejdH?*N+>X2tH(U&bt0X}KU!8}e@PTfj%sw4?eW$of@(s1~N zxH?7&afC%1fX50CIF}|ag$$B}zKjFYki|Dp&GFy2p6^#3624rZCOM<zKxC9hzm1r&B7$Mgj02?--wpTHF<5;s*p z>A-zRgF~k{Kpn9t16b%^jy%Ve{Ye{#2EYWpy86@~aPQdipgy!dYI#RLrLrBgUkuU4 z%EPCni0rqg=B?Y!vmgM#Tx=Z(gkXE_*jIb)C`Rzf43aD`4D3foR`?&nLHITT-N%P5 ztDkA;7Ikh%E7pi?O1m1WaT|hRHs6w$zDYs3AgQM2lXlvpBQ*=i>QG!i{(lwwE3}1` z_<~I7*+j(7(0nr`xZ&NW-K6aWo{<|wlnCq7ZUWS)CRW!J(a(6C zH~fI0wxuD!zB7mR2xVc*2_>ku-o-N!0-TDDPFB=IfK$==6^a5PLV!D5%$%$@6KyOR zo*dj7W$Z^pF2zB02sh5#$Tm{>{QM%)HGv}PkWdu|EfVN!Z` zN`UtbkUoKu4UiPyehKgsfWI{ELk!~GZ;+fznRn2^&_3=$b0V5Dv-gi5?zalP+JxzXsTjZotBXS6@c5VsR!*8##XLG*%bPfh@2|4-2#FT3;-NQ_6_`1{*y*Ba6XWrAB7%Wc?_?UN4 zU;KPCITpH?lZ^yN&0oN&m1F`9&^Yrp`vo`^b)tux_!R)Xg}N9khRpdy>~)oxZ96m0 zPfQbd9JRYACKP}Pk?-n&)D7R?9QVu*+;0H9CS`v;G1CxZOa3=PFV4+f%*`}HgHhkf z1u4y#VtNp@N%nAid7rMhYV_7%X0nZg1?(+8szLQmsSjR?>9)Fx8O^h+2`4tq3!t)c zv!LBd&4M24HTZdwrfUu5S#A26n$>s#1%Pso!oc?e##58YPW4WJB?!MyS3vw;0q^*P zM)E1JxJKN81&6dWk|hd?^rco|oxt;5jW)Amk_rZJ4&0RO4eaU)nsv$q6s~ob2#3dxPrN=MyAYMoJiD?j!A37YW$O0PrMqYmA zFO9TXCF^m0m`tF>?juMmjMbIghLZpi#YvPDVBdO1%M@mZ~>Vmw^$~>W!V} z>+Ek*Tlw1@Z6%UvXt79{5Mt-HFVA_T48slXt>V{weXgjsa-q_oh3K5WEg4K$98(*` z@%?H;gBTd}RoADQMkSlSmDrBoOocY1@!$xGx^cy530U(gLNZVCrh4%)%}|^N6qj6K zB9Z29gZF@G8YpVR^!QJOGjxG)-SoSyDXgrbnO=sFNSd1Mn29QyG?Fas<#{F*t#81= zR&A+h^cS_nl|CtjC7R!IyR;|=rcj_RijuZ+QB%_Dq9|$06s1N}(Nwi5X?1y&G^uD3 zuT823#hqf?B^6CynZ;axWqsFI&%8^k4fvH+v>NbFxu$kwgLGQ8&I8VT^06 zBT5$LWwJz+0SL*fxE+6H4wg*Wy&zS{wcczChI{6pXRDs?eNL~$WpYL1HfgDWbQDsM z43)-*;uj(VlA6FiooG49J7ZFw^~R@j!apqWQcMiRik^aDM=)k0VhM&_rC`|A3Wgn5 z1jDXTFzi|d!>&^>?0QADo~EeQ(-qZvhN4>M71esCqFT>VRO{J_YTclyR?d_i5CTh7 z>$!?*4T@?l6v$d4?uzrOyx2%=)A@>Rx}dTJ+TucAeJeJ3I2Mtx9Rgu@70>0c!_8G7 z1a_MuU^7m9y^RRiwFJPPOZ@AI@YnT(ziuG>b)N87;$bf*9(D)+eHs7l~p#JY-i0ilBokSSWA$ zXwBiW>6BtO>qfAF3187b!fttg<3Ml=`Vh@5u6%T{wz{|d$<~Sgwc$_`P>@+%R8mv- za6zVW;bcq;iV=)G%1Z~yE`{;lBjJn*81D`4GhYJcy)oEw1vu{wXKG5k(|i4#kCmak zmoq(DrA>}`=@VhRS7&bQ3VR6vN}mA0y_~)w(AdOh6EIfL$zFnsioL#|yZ0opj)P6z zzTE0Gt^x)xEyZL2NSmhpg7?9t^6fN-Il=6Jv zs8#R1x{QlTml0vbTn2^0ggW|}=}&L`E631iM4o6qO!;1az@6Nf!OANpZA}T%_ovi3rOcb48p(uU335?_N z(uwjL*(*UWNHNy*!byWCdy?)k6~1!ftIS*JP4*osoZ?^;YTRQJ6K)JQ9EN?pkl-9t znTpjW)`=CP0tn}bO=|o1Ihik@Nk+i_p&&g1d#(T%ImqM+$;*r>|LVgfp^8~qg_kQc zQWakI>TpZ5A7CoHTr#u@QtW^<|fz|z78+wY`8gGp_r#( z+Bi&K)5c*$#6b`?T{`J*YBbWrDaLJ=;WBb0Neg52oUE%@s@+<1agn2G6gQiatk!hn z2MXsan2JIoja^E7v=CVB=HnDhrF(FGiU2+XL1KnVN&)&kn3qIp=nWBrdDzELuXfsuOacg1u*l>g@6w9e#uIU@OhC4p`HcU2{#iC~OKB#!}Zdn>?5&@M7Lci|iG= z3DYbYT}3T&NGS+Vzb@m~4kXf50iwF}MmvI&H<+MCQFOqh(fE&qK3cK0H(}P0cgh1B zm%iK_Us}vT{c?&ExQnZ)aQoq6AD1nff2&T&;?Z!{3d}$!hoV+oX#sAU7@M3g57!?F z&%Ke!*v}VQ9Ne#3uIFM+YW045Fk$ zi(s2#1cuiZ!8Rod$cT<+F2PvimMcvpwm5SLv0X(E`A*eb>AKF9;bP(Ym0{yit%^?~ z-8JEP0W90N22bT;mNB1QS^wAQVMzOn7}|Qk!i6=#G;jXJH@WYnqly8}1{nx*}I z%K9yfV3~d|c{$nd^zu~tZDrMO)G?^&YR8MK9WU|~@WLCI#0yK_!1r(@jpw9z<$#_1 zUUN^JnAx?DE0x(+odAj*+u)Iu834@mP2^kd{?{AURjK}lCA7JoTPiXWA2it2g~ z=370;%Kgq(=teIL;g@iS;(DVo)KE*Y0NG$>;!F`8>!2oE6s@|&%ha~5%ioOc@KwkQ zj!M6WbD-`jZo#a1g{-!(sqQSkmN_}7u#_z1p;IAR#wMHrOO)gpQO|8jE`S|RYXLaD zFp8p-(9}x4*$ho-H|;yVy1Sl47n_nNY_T2BhLeOA)9y}VsstZO!v!Uj6DWPU9rsqoC_w5AO)INs=# zpD{=5BU@=mX$*2}qx7M}q(T{1uRKh4mSM$*tC;|@y!hlOu?%7JYr;70zw+HzWNT^v zLjtS~Ysy*A9!QcIP3tsLIk z&~|0b+ODiwHyCEaTCsNxiM{GRT1{p>-Vpo3N`jBx#yZh=aDFZ2wNpw70U-=PjlsJX zQ2TB|d=*T`dVsq=tSv{rbFk;lt)Ve8<@6|SfL$jcX{mEg3u~04kxN*c;A$c6qqL9E z%gRMvoK7kquIeKbcnw>axP*1-yJ=aXqqL7Oe#ibn`;P0%-|?095w7JL_YuagwU1D( z#(jh%?=6?qDlB&jU>IbIS*ZuJw)sm|@#H_teYU{Cv;=Vz{ZgC({+fro9KE}kx7qMG zaWZ+7mhkzE19NM_d^qD?ouYTf!{xetbM!E*yRBFQ6Ce-fns7##S0I~OQmx~<{`pqz zU(M&x&pOEY6GUzefdfNQbj%2H_q)4v9luo~UhLqImJrwL*RAE6efp(O>8~X`0#II+ za=J5|xW7~riZ7~D&=OS?I+Sv(sI)V*7MgbWosnX@*NMl$otSxm=6l;n!vtjiR5H^W zXUx+Ya|&G;O^XW{+?1q^F$ayA;|MP5ZYs|Rqj%rTXqW3<8i6{wmQJqmPKxfWlk@FP z&ZkbUiJeRxqySiC=_J7Ii_q&%qN@G%AH9Fk8=?i;;3Y^;yX!#`?tO+IF3$wI zdP==#-X^HS*FPD*?G|>zvLtP`?vO=XpJ|m#leAd{II_Na!k^Y8;bPTj@FagoLC4-@<6D$_74gD;BA+Pv# zHdyED@V1Op5@W45pzm|)H-zVK*jRZE>sVaQq%OuJ0|`XBygTOCU~9%%Hv5@6MYs~Q zIc=y{o(l?7d7QkfIS=b=#=9IxZ+OB~=>7TE|P*udQA-@Um@$XZ9&mXXPa8H&?eI`DBQx5w+!P&+gWU z({6@_N5y7Fx`}bFVJziPmr*&2p4y?!dw?OR1RZd-OUE25Yh}daGiJlKB?Eq5*tXn& zw^?6oc+WUssyuPP&(n@&IDc!vR!#%nHaTG0S~}ouHsEb18L(70Sn3G_hWxKuGDMX7 z<%W3GXE8*oJaLFuYlzHxYlv1(L%eEoh_tnIh*#MVuR6&PT`N6th!&#*@%jRD82JKo zcWb`?itJ1rXV|QfQHTW~0&St$9$ARAKRR2bem&Dduvi=iT7OE+I30mn-T%k!yR=EI zKA!t+kMp`ZufBh1qBuE&Mx4Ig;lf$mT`nBZ%`%TH{0+qLVl; z9F6XZllc(vQyBx>e|h&1FP>aRaPTaO&zd*ie5#V##p?NCV@qC36Z-QcK5mhYqO;x_ zdCiz6M8>32^uOyaoVRKUxOG>pUhT@#7^cr0TV_IlW{Ob&WdnZ(OY|V4rduWbLP-%Z z)13h}9~tSO*l4v3m-T?@R2%dN#FZn!}NMPR)bM8F}!%x(#nTr>9^ zs}O9k3azji?y(?H(u-nixTHWNsX=3V)?%?$P_)*zGV{uZa5EPQ5j}K^eqGdI8_RwK zlIEy@|ysvWQzJx2&%i|cCdX#qv6_e7|+6KoKe81_LrD{MgVg^R99AV z<1gt7&4#S&P{3U|rg^XD*)~0+WgI#^m~hJ(Wg+y#%HxmHS5M(&(Pvy&{*L!pA@~4> z>AW28o_2cJ*If1W&|P3$YL4b9-BHr7!IN>KKZ+C4T4Sht(3$Kx%Fh}bTB&RuC{$Po zGL*@8w!UNs`aTqWUUH*o7zr<2gt1IaXd2fA#aB z7Yz~#n15_CrIj;{9Fx6#{p`DTF7_ZI_~2*f+PN68 z#*udrc9u`!3+UiU-F(&^Jg4EcL!Xzc<+RVq!E>7Cs-@qY+`-d~BRP0Z`{Hu&qz--# z4j#5#%Z-Do@&YiU?cmw&Z=j{i>o?KCv(6nnJKUm^60ov^rz?&eRtxPqH<`AFjwLgp z;~QT;v5Y~*v#5`>yow{LIf?5tc@-O2$fNid5@39oNKbR{sok{n?WEn5-ky@(WQC=IY(yNG-IO6eqC)EY-7Pt<^}GqYNlJ(# zq(hbYP4pnV|AP7jfGrc|DSe!{C;b8!g3gU!;KJC|lX$kD9pmnTiDoaD)TFNtyQ3zp zxFrmsT@#x0E@V(+2<>uBdY5U^yNThGxR*CzKJ0F3(pM{bXpIFzp(I#^R@gM@SP)HF zFACzNCN*ibSnQT2ZLRG-sU|JT{X%Hc|K&tYdg&uH>GWuMP1@d`M3YWmPioQtYGi93 z%UMB~6Oc(j~ zxr>*s-^ELxJEH93MMn7s_rc%*l}qw0zntlpdB5OA*SpjGa++V(`^DUxBix*l0z_B< z(CDX(G{Xa&U@)(=C%GebAH{7?;#N8CxJdbX&@74||4CG@&3w673mU4=)`l*QiEvA; z1VDMtGM9)I?}on{|Ey;XFh8l>Ssdwscsg=4IudLxVa@9;>`A@7nN&&EOEz;gqp+_> zbQ0Hs^+oFtYrL*Cs;lmSTp6P^Z*1z5vxPt~c>#7R(vfrE8_|yY$h!#-=SS_gm3zaK zn459(Y69reNmLD6AA_0_XO4no{7KQcE#Yx=7)&HSZ?_arm2~lJN(ri{i5GJg#^1h% zZ3e}ma=kp4F#`fitS9fK^^;xfh{Lgv~1foX;G*UPAF(Op+v!H55N6d?>aYonjup3>^#?-vL_qdx# z+aAwg-?iy`c3Jvf;%o;Kq)Zw9kfJY4?kXrkk#5I=)C~I(6!^py{(hiY3?(n%Dsx%A)C&g9et+^sJ7CKar+q zCTMzFL(?ojmzNgLXNmAUiGgRIrV-B>bz@6v`Eg?1Q4xjh)p5A11zNDlV|fP0zU7nh zH#xa1fI>_C?V$|oCEC$v&7M}J71|X$yZp>~XIGv$q$!Lib{MCe-8K$^nvft|Y>o<-F7W*@|Wu@4k8gAL0`$? zN|sVCIHwn)f=2RB0vjOF32UX9IvVCeI+OFFI^uN~fc+dx{&&igmy! zXsWuOq#AY_4=;|B7R*!B!)dksNGA^)smheHv&MA~lz>!=4OHsc4!_RdqqZi)PHP zyJ&<;WrUHlpbqVkvB{IIOlcvQ&q$|YgN`39(qrXZQ;k59k*N*h{GkB<1P%^3+QoSR zoNlw)Q*i|4$y$h?aIxB(p`=M7r9jHxK~n;aQsLAYM*InE>mg0Pbw>c8h$YvUO4)Lb zX+s9%Sk#p)95+)}Obf!iup!-G{F(pE+-r-vrf1AF9h z&48s*BY%&Em$pJ7k8M}W?rk8Lf1 z_(<46Fc3!+-b!fp_(Qavodq}Q*9k2xi<(YEOMVl}AlkLGq1KU`Vu#fLjNcbBSU_aC zL>#fs`}p16d@Ai2A$Lk*D)c~UDhXTJ&ZV`!PoKS!%KrKuO9U4)VruX_t}|kSF`4K26k>5x424QP zwx=W}70BBo{s$?JbwQKi@Z)KEzJX3F89APFp|>#3QezH9H-dFZYHcN9@dU3LPt(0& zK{gl83@)dML=v5{d&UmplJ|$9rNr3)Sd(R^s(98K)vg31#tX$i>_%H!<5_e7 zuENrk>t*)$@_cAn_aeN76r~}>pd=j)9~9aoDsjVUvAP_A%iB0W1?||;=-99$?BUF3 zLJNUMmwkkmEOf}`9)_fu8qh4Jh{It^#`(N_1Gme8gfs~nW5jAknf#`%BN~W1TBF;d z!X6j#8=@`oO{A1G{GO_R)1&dnjs9nUve%hnXVQ7xEoRj-V408obH}#_^HTWskVhZ< ze*)jYHj%`yh-yR&JrJ-XqPA@${F0wjX|-Pfc@VFV{HItaio%?GF?)-dISSg&5T-On z5X5h8Vso`2q!3fTMhA!!nG2(P4-m&`7-t(SUM!?*Rc^=(nm3qz5;|B0;o-`kRKm6t zR{JfT{O(RnJNfRivv7``x7^|I<%i2|b{pl!Z$eiPNlmq4fcVyVZgV%|Bg8TTB%_`K{w5}X-R=c*k@#cVWG9_-C zF#?7aus>d6t|L0GvhN9>1%*U@2Jv&C|G0>+t zoI4idj6n_{9ls@>{iun=gE-`^;3mAWiMpv6>+XPq&H;KKGEJg>QQ+i+kuVkn#;6m8 zVl;;mm9b?ZM?Y%QRBg|N8K}dCu4t(+A46MC@Av`hjENUuk8V=VN>cQrG7WI($}vNG zCDYez_jRJZIwT2s%!I8c6%KPYE$UQGr<^iiAW+}u(6>(PTSuZ#l%W${pRsQMeEj-2 z4fCj@>OPyaQBmHnr!WCJtYhlfkE$>)u>|FTSb-bB5N)_R=M=iw#0A3BNsy2eo zxj2=nbuz^!qajU6+ZN&QOA6GciJ@;YL^yZM({|dFgKvwPdZ2NLwxS_I;%^xuAbR!K zQ^l!=_8Hf@u@kMD^fVz6k8$`&otMgW-Z?$$VC0BAE*R9Y2ND#?1NpugJP zh7$mgcx^h~itH+=%estBPz=&!h z15yYm>W6rPIz!Zk$^u;~_Bz2S>l=0Ah@gFIfmYiwpo~p6q`ECxjt>jnD4+cjHW{)D zi@t!KNH+%D#k6U*b*AB5(S!VP5CPK92b`z0u7lQq;;FgC_`gjAU8ML1+gZ z*kN|?aino_5Za+!Ix>v|7vwOrvop|<(M|0YKj5d*h>$=Rb$81Inof>E(p#x5&WgeN z;I3~<#pQL^WTulIb*swC{3tQ-Ufp(mAL0#4+Iw)2NIQOnt2@7^-T6J8oZmRQr+N2? zJY%S}`YkQxZTg`0f9oUs-_wo%TjlUL%fmWtxw_r=ZNrPcZ)(8NSmthcQmpoXE31>; zGeYx#b7SHh*`se{k#SY_mTA)-0i3D$ILWm6TZ3k}Pw0FOhvc1_8UN?Xgy}xsGd?z9 zguY}jN3h9S>e>()x0wt}-Wj}(<5xGxjQ>pf5hjrGC*!D_Y8W00rU)Z5XFxKi&lpbOeduz32|@-OU`mlefGe>$k&xQ>-&8 zju>JxF@cXxnVOaw!(Rigbxgg%C4D~%BWnS~X?cepP&?J;h^gtbC0)h-bquiqQH9b5 zSruRc3dZscNmox5F4qsBD$NHfyDvvs0(9@mJ)<>0nFm%p;?caC0M+GlmPkPv%A*1f z;3rjh9~?UTLz*oEfMpA4mG{L4TGz)>#~0P4I++EXqq3PN?@Ox-5&v4}s0d#uVN`U` zeromMX8V=Mg!foCQuS4ocxEj`=qF&7sh|#|Rfv#PGag64e6bQR;(?u5*(ZJ*1AG#9bxIQr2lfztk^vQiyTB2iJwRd8J1`s z3RvNofTc$S0RW%E`iP)c3MU~O@a!NLOe7LQ!3sF={=~98WkQ>BVA;va8S%zCRg%g@ zj%J*rhI2lV_y0C7aNoDcr%XQ{;Hq{ukvJX?Lf|eg8Xi*#JMzbDLH!O)K15zoD%ZE&vmP234b#y=rC^o{ z3Xf?7|K{c02caix#zBt(E&c^#(4bha2P4us5Z{+Y=JgmgGGS7CTxQU?~Skr ziLh;2d8BF8GK-EH0CzPJ@k?e)d4fv@7K7ID^DJNV_>ar&YRP(i0 zcUlWGpp;h4Ydyhc&?JZc^dk3F*F%nB=xT%M7iq3*F~tmPvfvrbJ3H|^@ZP4fy zdSDO-zT)@+B_|#uhP|1N1WEHBokeIUOqOXmc6?Q9fgf>XM@AqrjffGBMy^b#$Q61^ z0eoHvtHD{{x}X)sMx zi`TS8wS2;BQdTwvYpUIWm$KoYj2dY!xe$q#RUp11z_LxW2QKft-Nm`_N|n(nV_m1c zmlPgo6=|jKO}5&k2qu)00DIy@c>at_(g@Ed1e^Ez2ZEQ#%nTX zhonzdP1gd3wUl_+_Jn{*R-ZluR52oEpj4K%fMH1WZ^l&reyXLIE)_h_bl*~BA6g=q zhEZ`HO4ZxI`jH7Hf(y1I_*oj!ky=BY`M8-2GrS2gH4|;|8P+u(Xd&7#+2ZIH3Rjge zKC{FaN8Mm2y;HWPMUnXfP+-VQRB*N-(8~N0x=9WYq*LOKeu$01Y$;OQ9(Pw;Av=0FezQ z%L4H|Eg-I3#sRtVd(B=1q+mfyl2#wn>`fwP6ju?D9}}Ln0jd0PrwYey%b}#i)hUCK zc@*bb3dSdx3&VRyL`;$C1{ohWI6he$JBDmeKtzukAn8BGj)o)|;s?nMtCM_0K?w1< z3?5}q^p6Z}PvN8Vfw0^M;|lN4Vn}O|HLN7TYJ+E}Fwgd_Bv>u7oL1W+%b&DGmJ@N3 zS-kfJO=OnQ(i6I}rhT8l5PJcSk+>4Cc<-N^xMHHXk;by9^1~>t^vn3qZT9dHV@388 zCM0R40uSh?^D5Ypq}345l)i*H*}7*-MzP|lWP~TkC@U>&fh#paYDNWpfVDLPr;eUC zOr7PV6oZXskowWEw@e>ylX$a1MQLO_p#IIU>fcX2J5uU@p40E&)46Mg^OpuGkY}-T zq@0P;YDOGyJt2mODFsFkqC^@R+ILwT^g|LX)>5G~L92GKWhGrJ>_DGhF~Vs_NL4Yg zmB|s29%8^K1Dpphk{W+P5y|DMy+8az`rlvddL`Z?i>0yfhSg!!H|PPluF}M6=yPgZ zRS-KTm4bz>DMcAhDOkb2nUNGwcQ}Pv0^)wq+QisQnA_fYrKnUG!VA}mH-s6vKkwqn zqkn2hcPE3kS`@^spNiE6PiI6w{Kc&n-Jdhkd15=}D)TbU-17BBT`0dh4|g=QdJeEmcrr2PFu3+U8tl@^4VMQAM;6i7h(Uovqz5T93aI{}mNX z6T-EQN*FhQnvvVQ81tMd2y+P%qy>WjXR3!C2A|4Vg`XkOIs*k}lJ|l~v`ZZxjD36O zX+Dx_0TmmB_}hjCzZrX}$N`@OX3J_67!F?Ey;Ful(0PEAfEF=0qi0*U4mM_#5TR|h zqn|03QybQLQTI-BKWJi=)ZFLRzM&97M{9XP?RMNij7kz>;M1qJ%ix=9ive>$Hi&Bd z^_*(eAJ1@J0F(eVJ}UVW7taNB z2|(iv?6ZB%_(_45d%F6hphh=146vXfVGuh(18SYtB}@-L!_!qKhCr4s$@c3vv$yWX&91I#SLPQfa$X z=EJP{YXuD^-e^B{bxPe7NC({5KP?To!`-yaBDlw(AH!CeNrv6rwOw zE~I~t^wF_3qB~hHfxn#zH42srbg}oHaHc!o5*>6c@t24oMr=jUF%b4}DF!0UTM+qF zHFG`PQSTVeJg*tiX|Z#}i|~e7o{8hY)UwECPF66K@2LEU(V4eDwPDyl6mAgfs=1mc zrkg@WxUY2LhWwEje`K|s!6?wdL8XB-z%xYlsQE_1n>q(U#%YC`Fg1u879YdB(=z+Y zi17D`O!%FyOq9shzS9f~=6a-h=9oJkf$O~KmD4);hPrNK=cI~!r|6b)dZ(qJ(P2C4 ztm@vVuw70?;9KBfk9F`9l`39bb%C5qYA7f`B}OO%XpIAiyo*4?KzSCe8*DfSN?o+3 zOJrn^gxV67^oGZ0(WCM?Kt&xt$0NqUtWG#vv7P6FPv;mB2T8zQS#VPl=&D8(mPiXz z;hZB3xd018p~INgTNhMr{A&ttf(R_iy{Pj2FgALp3+PF_Yyz^8prIYZ29)9%{IbOM zAnkPgHBwx3O+rHr4D90Bi=1`n4y}H_*vG)gm{m}n%>-cy(FI`en?BU)QwW_G%@IN> zx&tQ}8HeC7J7dt7Sy0v?io}rsF)<28djs*PHX!kDMnXgsQg4b+L(xg268tp~A&UMC zn0Fp1<`$Kt9!CuGyywe(5WKQ!g?ow>aGWHRFBt+rctV%Jg*X~fGmq=hM5-i0OM_CE zW*HF(uF(vMP`dBeQ8k#eK?;3~PtIzd@OEw50}#$>_6A_k4%h<^Hy$W1opCy8!L`;4 z#^9J*V!=!uz3qs@?5uEZ*boX6@Mni}M0}!43W1?Li6jvs7^uBU8Vo3T&#OdWX#>p} zR0ntQbB%G2IhWxt;N|mImV<@}@zTFt@=pR0#bNw&Vg$ND_hzEjRzLW2A6(3;&iKz& z3fVA-R70vRS+giMvg>E$wsCU>?aU1bGe%)GvY{SP5exyh@Ru)533zC$Bolb@lIl*X z*ZS-xpcGvpkaS%^Zpswil1Q^_$OUiQOirBR^hs~nd$Jvaj~g63f2J$mpQqH}DDhDM z4{{e5_*^llQ0`qX;0-)fR!dujU0E}8{S^Jn*Y{j6^Id_+X`3LgGWOn_2Cl=^P6N{b zc@I*opujzyWWLXnaIl#xEOoy7bZz#U^7}NpSn|E~^w3k?|?P4DDMf zw{4Sm#w_MmZBluYy*rcaU7LB(LNhNN|DC#GSuF|<@ndvt*}bw&p8OLtK|l;{ zww-XcP^#N#N(VS0U}HK89qX2%vmtJkS-TeqSx`_gmp%}MMu_U(l4)<`ub>-YSypFV zSM^^V`nT&QboH*g(|I#LLSc0^aiRHH`{5)dq zNN~N5uFPYnv`PGZI=w=xvQn(X(Z6UmiOu}tD6`}@HZ)w^P`YVLu;tXm2`5t`RK*c^G1)l97Ko4{zXh0rF z?E;DlsCHdxOOQ~NU)yoR`wk^@o~m?*bKsLtaKDw7W1bC077OKiCwr0VrN2JX0_{S( zQ_v|*P;{i+)19gD8BQy|RTp^gvA}IuR1Zny>nPy9T*m^-+g)!nuo#eeCRhqO zo78K8#W!2^T>(+cJQQ2`KCe!bp&01aEiW;11Qsr;D{721xzJ_cJb9P5Y@nkl@fS^` zeAYfmG@?L33d9Zo94GQV48Z4Tvj=K2TbravL{*4)c%XXzPQIwtJDPZ^b+qP^xfWH0>M z;T5Ue_#d>XvXoJ#NKmXZvKYDA!f&(Kq^5v#wDe!CCB3y>xEfK1#d9LI1!Vs51T{)G zJ>i-6diLk@Zq71E9yOvKuFm|3bg)d6rqSRj3AxfybgTT;s6+BG=GUEF=I>_vb=iBk z?8qBJtqbA4hf&Y$#P9w-+V=2ObLm_2)Ih8`8`Z}DK@cm^yP{*VKmM>kk$;lSt0@j{ z{Cj$g0!r&P3_M1Lv$M1RhH1E4eWaH_UFjqM3T6)Dj2q%TuZES#fvs)|lyUL8591Oar;{__viKf^t?b+jZkKkO35Qxgy^X@`c60N7tBJgQK={au2~-#GHM%2)sWxC(4c=XZgc)?T!e9D?aa zz)8Q=srdUhrpV=S9#yNQBW0(-01bx?in7{r0A6Ua@W#QV#Q|&qOh|y01Zx2>314(| z;|N!!9}C8oH1yIhWFr+4}%n^9#1I{Xh9$_m`U-4~P>Wj=IhtID~|lb`B!bdtI; ziTFyq#@?Ebs2J$Q7LKuy7ZsO_C>ML1#0J=Mnl_K%VSQg4G>7tf^}=9FhO^ODBdjbr z#A0DBQqx!YyGRJfTGMOH|7@1tYBfy_T9q(wCx2vlt%2t)X6m6HXor7K2Yk>WUb0Zm zgF!NV@fR`&=DEX#h}(PM?P!e>A7Qn4_ffh&JvW0#w!-Zi34z6PKqMsvqI^Q+;zL7! z%r43v(}T-xtYdp{ymOs0e6qYyVmMFJD&(;UidLa@&H?&5d)Smrd0xW27s$p z?abu$eBftkQfmnoUC&TMXKOaNB4h2BaSWkJAz4|ghu-+X#^MJI zGs$|l5hrAA#d}#d;&TU^_MmpnT(@dFvp`??8G}oObciI0Vek;#(*_i1P#CEtxoHLP zen>w1v+OfzV_JHuJ|fW6&ImfKR$%<%_~w^I!i1UIRc(jqh~jIvCZCzQ+f8S;xA%nJd_LUR zD$uC%>gf*%1c@6r{w(;mcmRBCl6|5$V9?~wjkD7zf=(4V<{9Fcs}DyGdaCSF%QX$V zw5~;VX@jQ9Q)QP{zIt3ETA5w8BHr6<^dEbThD9pAuFo}y3`1ldi#!2;naQ?1NUbTR z`*KbjB52P5>dDSbi5!Hp0(-aW?#u`?kdPv-UWOrw`g9_?)<4kL>=CM+s46`oV~$=< z*dyu`g(1CTA7s?_od*hvBjKMKRcuGktJO7cVOG#0EED)e*&9XIVkI51jm3D^VgoP= zn8SiJX!()FC=hA*)!On-y5LxhqSG)6%eq3np}RGkhf(kjCSk)$OoEAp%v2q}>_UHg zbJKPty#SO|I{d%}frPPNy}2o^(J-`&IwLK6*(ZHv3F-p9QViM`+2m2|XXZJ}sfpmRIPdi4lVFl{+w!~E)?&Q716edNq zO|pw=;o_+5!S2A!uCSB;OikaC5mY1@3o$vK0CI@~E=bi+N!{w~US6s)sgkL}R5twA z)ykTabY*v{1eOeB2`peOJa%p?Wg+n9_ENqak5VeRmlj~2SJ2*a(YWvrUGQIhwulI* z|*?-e%jQ``9 zNx4%ocfLHa|!|~t8pX6uz2mJ(fo>1omobl7%t{A8wH~x$l4mr5CGednfW+Rm- z|C~E!eX`!svA392sE&^RN9-8b@Hf`6EOpEv_>a=NX6G{pRwlk-{^s!;RmJSZK-MH0 z)|d&_oW)C~oZ?6c=}Ou7r>u(Eucjzd>;m}Yj8jXkOBg4dz!|47*BPfEYm9UDhGu>d zocTroYiP~%dXFiYq=n3)kQprus=xayrm%XBRW$xxpO3fYjTmky&e^?qq`OfDWwNO0 zjw!23U1n)m#jqi;WCt@~(aU_<128DH|BJo%fwS|f>b;+H&dem4nItD|C}|Vyb584< znRNa{g#u|)@)X(ljaQ*V7SE*#sqP(ovUDy=D2Rxe2Wr%I5WWh++D*FkEd!5C%~WlyjYg|OAu z@$K_e^QS!bWc|B0OI2*h&!jqR^p8YQe-P0jOF?aEL>m8}N48K2U)zZjd z3kmPcbu<~4z;rnTO)Av?jG$buNFURv}}4s4yMI& z%S)T0_UE0zE%BmO(?$@ty)E8rvLUADpRa~@~p-&_y=F<)H zz<2iSqlr!B@KHf|w~18y5@#-6W&BMy&`SXJbQ+qvZ;YN$39=eqeK^Du@kD~~QLu9H z{IG!Kc~$mDJ*_6l#|cJ$Wfw6oKvd~i)Aq<RsniFn@#%dp4)NfcoYlM|7qz?HB#69tV`cxb2S-WEl|5`_gZ>upc?Sc4sHJ&BuFAQ8r3dWkN$M2HKlmy0!IrJzgbbn|g* zprMeRqgbIJg`-mDE*$4#;*`0P_TxoY&ol1#A4!=efixC5|jx-h2 z^1F581Kr_WXU=b`4|k1n7p6}aeCoE)xBU(zGcE*4(tetp;Z&YpeXR?;N*5tluQYAr zAt9K+Hvn1NL>D966Vt4WuXAGDaM{|VG)LN(YL?58<$c49uO_~<_WoFg*arNracMCV za#6UL9R9E}+}eg&=1L!7eGxS=tsAQ%~8gsMj=a38k%) z?MQ`)o8fWU8yO_$UI;ERO=1hSwrU>0B3rZKPs3`mr^7ljj>K5Z-p0s2!F!f0PNN@; zgkh&m{u*{*LoZ?y*MWS&E^pyxsN*JgDNJ9E1?i>j;gb@ z1&>%zcoCp%QmLBVziJ;q+aqv0IPDDR>&TvBDqXkm2Oe5ugb~B zr0PZ1(Z<8Q*Ui6qqv}vM_8KiPX)+i#gr1K@8Q6J=CdVWUtmnZxz|!F=g21A~kz?NB z@~keM8*r&DHh_gK=|$>N$zFQ{)kVSz7AuVfJN@3yVsVJnC|vgPM&VY^ds?8mFc!AR zm%q0>7UKE&J{B%^tXv!lfZVB-!E|wXENIS5V>W{oN-K>8gMkwcjVNPL26h@tv{UHg zcnAeCD_=GYdgp1Ph5?7!RItLd8Zs6=ZRGOqPaxVP2rOi<2w5#U7L8wOG>*_^V74~O zK(IwpLGNJ35BrFY1?t%4&d04Jt{;LDWpeU)T>*{7ip#?(#$)7!mNQ*u_~K5VQx#8xuAu1O-Xv> zBh0JeM6cE0Mvq%WSn(>QMvk zTx))hgn9Z5$wiA|V*pf0)F#^#bGb-xRis9F7qg`#y3Z4V@142%qV@&j$1_yy;r3;4 zOuZF#voUJPD(#N>Cef%fYzL%GciPF`#| zz`I3V!O)Rfrnnw5CY7!yST7w*+84_+SvMC2MT)&${6)3uaQZZ<(ot<;Gzdby2J523 zro_Or2oY78N`nk(u{Gd1cX&cD4K2Rdc zU5<)QjoxMfqAS~mb(nr9L;BQJm^Z+`6PW! zOj=lsC*00fGZ6#^A4?cdw5IP=_PSq$acel>$kD4=Cm!RA*<|Igy9}Dydd-O;8#zx*3e5LEFc_Z zt%U?RcJS5^Z8EX9vyig+5phB7l|z}9-B_XpQXwAmuzqBgjvh3WW`o8}Xd1+}h@irh&zR>LQT_Iy%lhH_OtB(z)g2T zgEdiL#YP)Viya^$N?_W2TnN%ikf*j~M+aDrCAK55`585zKqkw;>R7Cs4h}YbNI`$N zuYBx55?(g2exUg#-H~0`3#$^j&x)E5!b%ofK_|{+ov8;cdvJ{+=mL^{v~Hfv1r>mj z8b%9Q6-7ObQ`wiEcmgFI=V@5C$DXB66bWTc;@XovrcHq~?*V()3hqD9%HizIwldUa zV;KP)*p6uus`YZnJa`J3L*}zM3WXeBS|b{l#$#na@5DTQLrM1fP%M@Xo_-{+WT^fS zW!kW?-D_0xhP)E^p^uDOJ~AMwcfL)7LJ-GMk$upEm?QnWAizHw5}mE*L7!fh=<&{w zK|@&cb1GzDO%l6sFuDG-zwleH`LUmT$3q(i)+X0K@TULts?R+3@ZUa;^&lBo1pDer zGq2lN@SgA;h3exL5+`4sV-;6cX~+%Ri!a@M^qmr*W_Yi)YS{<e-;=_rY3Ws>j+|yOL&t$y#=m!IHh@S4`@=?o+4bn44Adzoff)G>(z~kFsP+2G z$o1n?EjDh*l?xwGheO0FV@NP+)~3*JKIKE72eUTW&IA3B*cf9ZMcul@db! zwB&kFhw=V{_0K@_|M6?pvjvWP##m#Zj$kLHO7)f*WTU0j!n9B&R$MQnMleaTHWLI% zD9XqRObZn~kY8MIBYU zf6#`#8ptp;+<#p-UL=G6-N-_jR~%W z%Lt*22>lqnTOx?GjNG3eU>zt-E9~Sh@pVew?p;!>b7uL z3JDW+q(zCX0;1h3{rfFFTvWr<9>glIu3M3DJT-)CfR{*N`w*1RSksuue%pWNo6H0?#%I=`O*E(VE_M48WlSXa2)RA-v=V5>Q0iA=@DE3yyqo zFWf(Zf}tnqi7t|M&O-=ikwou>VN#nt@Lua1O>9989)i#DJ2=sHzXLPA3Z$I_DOp5> zR=-a)iK-atDPf3i0lYz}#^QtOF!LmR@KFRd zh|~ORNAgKMrl!I)vTK9B(un#BEt9@NP@$p}vm$}7J#x{Hl zRND77y3)BLe94urW`fVU&4nfM#tcQvTwk1q!Fb8ZL$eOqokyE-X&PW_aQmgMulXV-CMo(|ws?}@y2L{)!Ti@Jp5&Hcn z-cJX%l59h(F^F%AYZ6wzDIH?1N%MCl6T#J$hckPpgV0{j-kVETS7KV?Gjc@`Q`Vi_ z$q>5eJ1xec*dOAJMA`*5LcqI!nYzWxl~_{vIVla|o+JK^DX2tAG=?=!4sbB~C-eru zW}k7`2b%-ghe9(hq8SW{cZHaB?1eAItR2W+7arG=aBv{|%KNv+Wf{qgYlG#>k@ zAUqE6xMm>xXekz-`}dU|R}Exu36D=FF(;k8Av_N9i0jO2!{ZtrSrq(=nhx6gdBm{! zcz9I3ELr_|cobBuM?M-JFOh1_Nbr3fU{0Glf&fMJtMr1<3A#$ScLwM3rk;g4tK(iB zwH)`FROGTDO$Nd|-bfC0>0=^_f%nx4Eeu66khs#&JPJV4KM)lGQ%#E}NI6WYxf2Mh zNpF*=T;G)*ZwfMHXpr2F}t`FMtD*YAq7t&Txb=Z($gMS5XlR zOhuA{Qq&o&wNXJ^{!cpdMxBeMe_UEr@(!_sB0V&*vz)`jpc5h3Qd zVx{CM;>uC>scQVF#;X(%~ss$x>e+%Lr)2BujdWxr4a@bvidEeB{p@Z9U=ga3$a z$u+LhA#=61VtbP+GS^r*qBm?gFqx|!z<C@(=)YV%q@KY)Z zcGs;40l^tvRy(@Lj)a2=hk36r=XDL&SHoB|!DGqkEh<9-p7YFx>zjDbu&yayyIh9w z+9iB6*}fxrp#qYY7E*EXPPwdlc4LT3zYh9lx1cslH_`$2;cyXA+in2vFyfY40;Z%0 z177y40e+@$fE#UbzRyh4W>W$UuV#@HYs|MwBM{ytbBJNTRg1L77)c;A?aH9l7S3oT zw(k6ezA`poeZGMuxXKV925+;{Cu?Bbf2@ZK9fIcXtf1=Tu!FJ{;L$w4J;?|$Q@6t+W z_?De=J+}WjyXX`?WJ(fijfHrr6cPh^aoVEw^}KV;XSi1BpL*Uu_JVnYVuh57{!y2F z)%~N)B}(%CK?sHZDJEI;&xwLtqcG%MBWoT_rY&?P=+2Fm7Nj9VR4`V8G`o{>*~7Y( zShQsgQw)eSmo?P*yXQgJKJLEpse8S%37Er&O;=xB37hoD*A1Z?0D|)vvKnCc(qGpF zl54f*YFtCS2!IN;%b1gmdt=F#h+Zw!u7NGop#TjB*X~{PeQFlrmxNb1!YWPTWB2633KNV?^TQaL{#wbPO11gO2onUthuD*Y$d=BGd{@u3;IK3R1i*1r4eZx-0xlBgAP8~3 zr7qsW;R!OG0=}lXAa9^SaP=?kSyxYLl7-Dr3sm-ExwmT#eL2EyB6mxBt;rTfKkI4h zsE%kYAd_X&Vz%j|4sxccgs$WCW{Dw^;w{6>cvHGg5*)Yqbq)$C#4mf~0leNJ;=z4? zYsyWPUJ=f-7&$_2+j6-sU2l%2J(|lS`X~zj?pnIeLThA zlWV&4XZUr8@Se4guoCMG?+HBw+Y_HSG(+-L9oVKhFL_+G1yk-CI%oWDD(pUPG(yytp` z-`P(l53~l|*@z9UCjIDc74zormBu-gJ#N=utY<&=dIfyA-uyE!P2Ll9m9pVIC@N95 zKl%ZsYGptAgSx)8mc8!{y7@}T7N%U;|NZLc$Rn#K`@~ba-ZxCcd7>N-NH(BJ)A*Z(y(}fPqpWY(gZaZNChIMRRxdI0oIF)EZKrWF`P5X#|@KQ(}R}5t2SgKNnp^WJcAV1u+2P za4gI|>v5Ynse>(#I`0@~R$2;iiZ!?(#ivaBCdynT@RYT^vWE%UaIsNgLtcU8${V~g z`;sbOTB=BU20m3U)}J0`Djl=~@GEx@8K1MWtDC65%C`sA-9ACB9rDL z`n5<1`>Ke3sik^HYtYAdkgbDp zQj@M-oF@eRWgq+{)6=N)RhR?;?6L%`xi1hct(l$Umwq1S)!HyzgcQVmp zt^9;HCm$`BL0XUlvV%UPf3(-x#8os1`s;n;a)cfDibHhX5NLx;y!BSY6cUuiWMh`A zJ8&44XfLfopkqO38VWR}^F=^sX^ADc10kcCONz8?aI3^5`>bGhnlolmFE2iomOj2* zD+XkNTWZE6$y~xv91$$-{oDwawKd{0AlPkzF;JE=9o4ZCf|-eRK`_b*`hZXE!{9W* zWuq?~|J{LGacVH3*?0*RwtiipVgQ%I|NNH^{nk%?<}cs4Zs6Har05Y6WDe|(HlR|2 zfx;mqlqZWv-6Mew@yoJg;P2~&X33N~PIy#Oiw+YKv$NV<&Rr;ti}~S*$U{YRwKBj# zlo7WbGa&#zBw$dGRvaDy>)qfEchSSNJk8WwF)Gtp7C6s2on03*#EGYuP@2xN#JhYt zi$6T|#Odr{XCYo{X*#>sr?U*#*yxB4wXDFdmK-7vWur$OqH@jzvcE3Vp*Yatvc7~x z|K>_O^UD<-n7X=b!ZtPZXeNsHQ|hw$SbuE|O!LY9oG-d5%xFsLi>VwaLALW0LS_v^ zHp(`;RHSBOZkJe1d*O(f)TI)4R>NAv$36yEIjn4Jqy~wi*SK+r1Fvpciyp%!7K##o z?7ew2g@2#??bB78$%AP{_LiI0u0t6^gSU#-_%>m3_2;?Pgj{QsOXp>w!b|5`mHiiT zV`>aD1J2YN0inT!p;9Nz0Ar$q+&Z6`RBNg?7HFi)9N*|+KHkg=P*!sgl*QKd6mv1l;h;6T zMVL7c9HQ}&wsBr*rTo&}hHu-SR)C{dZ2vQmejaS}mVsdx%=rVuZUTW~6-b|~MPC^h zmsaJZ`55b!Sdj=JoG~8nQ2WBJEH`^90rpQ8iFUIe0!q?JbIemZ3Q~-1JdujrE8gg( zn!FR=)LUNif@I^PAdW>$`z`6p1#z4ogSHY>=O{&(MHdYqNos!$AZab_ z%$``7+7}OKJ11neB(w}mnqpB{j`gppFikD*+e68TK_% zCR>DLGD@R=T=;=aYv{2^ ze>3C&2S41ZkrUXZq}!{aWQ?H-@Jt+q>GTd}$}*;`*6WFMl;r?1tp8%u){MRqBDMo~ zPc(FHBuY0>WHr5*N1K6|{|aWC34%ixc)Za}0Od%+76Hl|4dax>oVXdC=FPpFT`(912Uk2Smp-4!v z4`#EF5vzbu9GPwZJXFf8h-ryz#eWtc&@f~z?SrpCk_{tC zO(DuhZlPllnE^{Ya?7SX`5w1<~uosfE&u0GNNRl@&v;-q(P zh8;CdNC2RIyO|Px$$NgahncO;*fW}MlO+m0S;Ql02(@((jwD7UG0*2ntd@vmcO=`n zYba4hQXpW5^DqB5v?e##780Jw&6?0 zUaXF^o(1*-H3!xr8YGg(Cmw)ajU;Q$vnCba*wg8M)9Yg&fFJ=42o4<9rB`olw}RTM zA-m{*ga4j5r@smAN5nswN}|cMSIG+pN0!aZf;t9;ts?Y=vNRfMjHV||mA&7%bJvup zJ=R35ez{jqpD&jfG`3n2K>cwmrqQiJE5sQJ`yAY}hnE93AxJK(86v&fx{>?!FvAOe zJzP`tG%iD}K?ocanO_e9EEo}hCr`=+PaeIP10yf;M-Dx_$s=7Wqn*x#bH5&4g_7nw zjJ+fl5nG=JGA)DhWao@6rk{E{y?+3gt}jNJUM*<+MZ5|(kUlA=_BM_y1Ir(H2Hh>X za+=XSb);di4HQf0|JexW7uGyshxdoAyV3&_g|3wi&&UW_^+ z?;9+yPP{x{+Q4uW^8VBX*UMsM$oq4a_d@V&ul6*0exK!)NIqYf(L6%EzhQYVgr2oF z=i}%jmiI#X7nv9G{=o&qtcjb~`{$My>&|(%SJrsX`&X9t0{WMn-5pL#KKr0AI0-V_ zdU@U4_jbXCe8SUJs=mA3xSq+xeK61azrCGoP9;^%iRWBG_9trvk1TC_K~`hqX4(>u zCD5`Os-HI3GoR7UdUlBXvNUm7A8en!S(frW4$n;M+Q2D)|8P11i$6SQx%xSF=MqI> z+X)-u%F`#6}Bk$529Xn0UFwU>7*>=K0kJz`23ILL#O4m3OBzxBe4&dPghWz`ayXu=kkbOs)2G#(Fp zD`+IZpu4jUEVC~6Yz3h)%m6qXr}sVAHy&*F{TvG!IwdFVv$rbYXdr8OkG)liDV|xe zgo6efNizI4!uENP)4*$lxeYxdRo6L^g$bU9bTVfH?7c;F!s9z|wX#@Yu47GOEC zopH`#>ltdN61Qp)xD70IaN7ghGJtqHiBvmlv7KNkmcCNko;uwA_pb`KU#S(le^8xk zQ3F@|#KX-;Kn{kQZpm+*&U=PEFuyWFV4l!u{=)+>+rU~Nk+}06H1Q4v%6ba+b<1PJ zpc4DHIdVM`g3m3TgyCD(AL?fkn7xH;*--2WDLXlHdg{77p#MC&{Er)jM+QzgJ&y9o z`}``3HQN%`o?B?Jz3#5&c((ag3;rZF*Jn$Odeuole;*d3z})2{Ved`kS}=D)*-Wn= zJHX2lv1^3FB6H_p@EltLt%u!9YC48u`&f%OVpTYA9^FAF`aNe*s^8@XNDjx#M<#oc7yYUai4==NCW za6C{PmNK{*Ysg~Cc3@~2uz+Tgu+JqS+N4}rfK^s~5Xpv6sK{XCV!Sia6xehfy&lY# zca$so{xYH~=Ki;o_R%qtx^^p#HX~zCv57A1psN|mzE|5tNTea-wCffRn%48LzF!Uq zE@Z!)L^0j{jlN&5*rVRlu}A%>*e{nen*XoAWa%w>wGN%ZEslcj+f$|Z`zXYL^yPjWvP63 zS;?8s-y-amgFM?)wKuHXKdd8$y?g)b?hSjtaUP`l3ch<6wl}Pdy+)3`Zb zgN(wjk2Bq&rf>*f~ zELTdjVAhsRk;K(UYlh`?LFvWf5!0CZE>|Fys4#d~Eq=N`)o9}9le%;jqed$@KJn1I zVgV-{)1VD4+SMZcwU}@yptL*K5>=1z;$Zo_H#wofrU|(gjvmHg776=Q;vr`Mtq{bU zf!mPt4xqkj>4X;3dBqY=O}v0XW*b(h{B#HW0qm*cbO!`xzo`ed z3rDdo;QPLQ>cNvC^p;{B2{T6$tyi$j`s1?M z`*s1$7dx=TWA}k`X@N;TtIaQH8AXf#`Mh|56wTjKYm$M78nxAS-iHjz@EFXlh?Y7| zUCcH!EY*@pja|js0Xx*fLV@-M!X*1|3@ZX93pPdAA_iL{ZiF36G_`~64BrskU@Zk zNJcxm$j&P<|F4n>u2lE{9&7&o2u_r;1&C;;E1!Icq@(@2+X*Jylw}nyjdiuAXOH}j zmcuU39@8~0hgEG^-<`Xuw(D9Ta6PO?8yk+FD0V=B5u9Jm&ZiX3qG5({A{CsQ6&p?~ z1AkJ>i_fY{kq`JXo4hD78fpzvR$p7%k{aWbgOD zku=fr>qb(B<<}-qB;jSfy3_LOkcAC#mlDEG&dTy@*Rvm3NULs`3-45g#X1i%ynS*UwOma7ykqF#~@m1(hYG`T*bfJmd=cO`sN8ZARLgaHkF!7F=f&m22I~ zS0D115#XDk!xrW6@QH_h+s7EgyVO*G0<_%BpZSIhCLy7sR;?6^KjcsJH5#_QO?#O& zS>4&z2u$I=2}0^hu>4OrU^P((Lp1V(A$lmPvF`Hzq+V~-yL|c-*2i&}90t+j9-%r5 zf-@)l{D&l-{~)o|<@|?U+2%P=qGx~`!9=p4%_dKN41`X=3|Vvx1bLtQ2na2(_z@5S zsW<{cPx%oLdWc6r=)QCWgdXD&5W0`YKX7mXn71<^y0=tkK*+CMrxn=Ci6Iau!`+L! zbO#!T$oDUjmWBX}QZ+8Du;Fs2gM~U9f#flW?C-r^FN65O$yf8f zuCI{ay#tuN`z>(Vu^nlzJPwL&KXq;UsoS<6&c0>a53^{WJKn!!C9Z!pMZ@sV9)I-% ztZUJbye11y31u@7wSeVn)OJPvH${PiYSbf~1ETkgb_6#G4LGxP)-KN0pd4o-ArsQ= zM(ws)X5bI&#lS7?cPVhL(W0|-3-4h~hs}Gq=RH}CF=viV4!nkm6unl`0O_eVYuc;7 z*$RW9d!CGX6}Yq@dlk6Wd#e2PT4$mQHJzcdCYL| zP#>3Y$k3JUo{zKsnugd$?`Zxqm?V3H`8D^Lvw7k0sdrxThIW~3`mUF|Qd8$kU=VjB zj=jo2+k@>(-qSh;0Jzblw*F}mqXHT%p?&-4Og<=kqb>N6Yt)QM3%Q0j&-ok95---f8MxRY} z(mJ~%G(edjpH?;HN)gK)ILJ47(TVm{MFQ+Vpn z&HJE+8?9?;vwqNp||2aYV^;u+iGRWM)-*;Us)BJ4PVescK^gS4oIVq#x z(V|VTb~Ri>?|jc1WNe-TS(^=00x1V5YO4c((_N4mYFmlO*#D~X3~qoH+KBRO#m#nK zl}xk!c>iKz?W?Wr0wi0p_+<+Hz;D;<9ENcQ$x&ZK4%yKb;#R0++Pn-~vQ5iEJiOo5 zCkTfpi8B(Stug~xk_PqGO=Ux5!FR=1SNnTa*TVT(hap3{7MqW&!DhNx`<~Xi>yy@c z%s^||LCm=qCSV4$A>WA4$tWD3xReg?o31;v)LwrbH|tRk$zwH9uWA}($FbGBHd{K} zUaS7<0jBjo*B;dDr(ef()U&NO!?#7xv@FGu7CGr#X3agRp7zT>lP!Uq+_9PMbTt_9 z8fHd+@o~-404jg^-sdc&UW9zSmN;eBK@ofal0+?HvLU;*!q)X9Y#~&w{BbK0x>wiq}POGA4c@+bX)hlk%L6)d} z*0#2_&RtC%+TXLfx)in278Jx65*jm!Oi;Fw_rrq5PmjLLP9!tO2=n$ZS1vmNxJ4!l zXBrAH4cANRnZKkFPf1x6%{SIS497;-1a)yFan5yeL5*f^nGEyiJd(H$C$#f~=q8(= zBsckSK9==kE1{vK8p^%rZ9p{%$Meb1w3 z&Eu57fy3E7Cv?R@8=qyg_fsNRkO;=I`xh_>YuMm9xX2pn2bI%2L$yAJR6y~SeX1{e zuf?>n#!5-!tdKzh<*v#AW1hr*Oe6`f-@TawYg8+h+@oWq0q6Aw4s)<|Vl$#ImKyEk zvg~p@V^gpE)5MpxyA+(Uc)K~9MJf6ST#tp-#q5I*q>Mgx||=+`P!n z<^&pKk8NWYz{;L26gJSeQdC=LPYjeDgy{EdI?|*lIMYJroL-(iLy$_AO1?0MzpUUF!Kh@)kX>8HP>C zq53mv@97h~?odsDDWiAmB@tO;Uf%IMYRiBjvZfFw7!k!_Kbc>P+dsQN^MxDimOw~A62~4yBtqKV?%51JY%pzRB(YoG@TC`Y zy6J9B7>x-Gj+r)d*R<~zx)U^SvS}VSgX})nx{^6+L*zinp(|P@L76d+2>}A_Z-j6) zie(WcpLL858NiocC;8GRtSW%Ma=JAZtJx*VrK6x(Nee+ok+BIlIq`(OF5IezZ8B(Q zgoehO6Ui3Fbk3}7bw%I~X3cD))GgjmaN}kUOHjFMIN(L*!0==yS8BlFTTKW+6RYNF zIfG1_SVk4Y>;K94gM>w+3 zX5S$?(j{TOnFi3zVcy7(*qr=ek&*loAq3)sl`z#X@{>67HwM}CBPYKeKTMP+h~T(r zgOCv;=>qv-!{{VGp+RD9@KW$6#L=ZCn$t;4zG+@ql&g`>_Jkf}{M30ieNKxI6Plz3 zsBv}%f-QQgB}U~8LCFmcLEyNzbd5a!p^i1gHJQW zJ8giDSSILhP^g}NM1z%5*ivANxDVSi@#4A!GyZ+d)29qPOU^Cmv6Nscc8^)95*w7U z6C{VMgr*%MtU_}h;^kQrxsAhH9T0X*X})F@f-OdnKK2?Q#gj<)kL%utEE#gX)j>#- z4|%`o)@qXl%=+!=6np*s&#r$?g>ifK>;o8g9!Z{E|E!0g!C^}}ej@wyyZ-oHy$e@6 z2wv(JJ&8(v)Naq7<*myapdbgx#}Bu8ff2x_JxAK;BJ|%aYoDfQ?}tZ}$yPSio)6j+ z2Lf=MN!okM+DkMaxq0m+lsB4q`KYR>KT7Ofq}fsSQRQnT;(nq%TThoV1e1gN;iz=8 zOl90d9B>ngYyO6GN_o89xRx_Ev<{*&t;GyUW+ZgG4HpRW2uZ#Iqa&M?64;D3ST=$w^;PuAg+ z9sJb!q;n|oNiZ!Igz&xCU(^Qhpgo6_(}H5t4O5OF`62YRBrMFZx}D`}9R!o-61xUb zc=4t6BWjxw9!vX<6A%^JhMH_h8-eo zrlJO2UAL#4X9%2b#3l~o#KwiUJsp-_&#e&|;=~G2<~M&2h5IqXWC2v5(NMQ=?pvxB zP2>{-!lR6$ffz`7Vh8p414sPD7Sm@V8QTAbb5~HGJ40!tL zEItSHbzgQ5D9Tpxx)|;;T&+5>nJ$I!>)Fdhv+@IoOi#`Dg6g`u{&ufjcv{8=VQYu8 zA*rWyFJpF4M+s59=wHK;fe0s{;+{~kxe%&i)LZ5Zff1{R7%n-}1#(6)vjrx?0Tms< zlz1|Tb)MYA8?+o4TN||E4dur3iw*!howpXbNE8$CD(uqDX|GXL>|Rb_D>cx%69n6E zGBDv7UGOWjNfZ>l#Pmtd$LL0GgP2;_v+R%ux#lT7mJ36>;+!>ga2YB#NA zNkH>NTy2?YvjV8tK}|RXD`Jtkku(ydrfHLdyzVeCOqr!L0+zE(u`CY3bEb)KhiP_g zkO+o-&LS9;qnuzs=^Dp9@b|JFS2XlaZ)o-%%7MU#gE6gMlWm4-oXR`8wnS%~=IC83 zu9$Hy_$Nh@&!%(M=*e33Y)-XWVKk9Sz9*JRRfXY0FiS~3ip-5y)YhiMS&A`*T)O}{ zem1CQNp=Q(PO1pd!(w!=F%zc*b?XH{(5yg{xHv1I#%NdI%qGphdyz18V;QzL(8VGd zncCy3i%*oufK_mx+Si%dv%RrAwNErdEKTiUFY~17>zLa2+SI(rhm_UNSVCS9@R zutqghTG}kgUUw78yP8r5;OivEHhoS<=Q^yd03b3Rn%sKLSj zHJze)(rzg>yb@82(K2ctX3Yc-0R+v$iB|??N26B*rC?g9m93L#<)3Y^tK6tO15Q*c z(f&-dWUc$dA*4YYzp&XHLR1a3`KD%bYBq9PXZU&#*koCA8i+f$R>17VEa}xahvU#a zo_M*j&HS)S+O$A3y+&!Kr&Q&c9?$tq4-H1I_FzbGGN9kV`NHlrbqq=gA24fI&Ru5y4!ANJJ{%c}j@AfgH zpsc`f4owIm=SbijS{1Gu1$i!vf{17w7Q{L9?v~sr*no3Dgw8p7qEV2g4~&9x`VfU| z!CfOTkbJt`YUBt)t{cc=8!$U#8x#QB;I%oj6;gh|HncJ=wt?#qg*)3&bxPHpZ9w~C zDNIo}8JUu`h=+&&BEfLF^fETD15~db0|`Z&gg+VOqC`98Qj{4|L}^qf zn*_Ot($31C&W77m#V zlVREv`4eH$DiLX#R8G$b!4>J5lDg0{S&@N^zPiak3Njf8zM*8eahZ~lNIVym%(O!W zO)MU$x&h z^#bZJ`iJY6#iqEVo$A;SJ2U!6+oU0)e_c#$(xxajVJdhjnHKLyTpLj0Otc(e6J!F% z9_J#>qXn!r$Sy|BG6q4-7HT<(a%#3LYAwx!nx#5vhFF|cktPHE5LWYp51u`n4E*@I z+A2Qjyq6T}os7;v{IjOG&H+NKl&boik+0E!&hi&_y%d z&;-$Z%rFZtN<9>8e7ZF%mM5{C%Iv|lD<{CR z;#Mj#0tGSBkWI4GI57$Z-nI)Q#;CV7D)c4iv8SF2fwc=2+G}1*RLBX#=R<`Q)}0E~ zk`<}Yq@VhwJNYf^^GYYug*l5@ABI*=loiE|@!oC9hx|mfH|EkM^$l3r?c-9I3w|8x2Kf+*;W8HB{4Vd%TXK1q7fDM!w_VC2&&ssS z@(qboIFu1Dol3OeCQP^i4wEoh>|U>Bv!njZlF+Krc=#d~KFLVnqiy7jrn|5kT*RUU z655+4vobjAW}ZIdr6Xch_eT!ddK)cfwcz3ok%qoZZS7cmT`9qE7QjN~kE) zHk|p3>g;4}L5_1PeI#oME||^Vls=FQ%v!Bkv-vA}cIziO@E!d>EC6JpAo&~a5}lKW zrje;D0sPmLf)>#UUw+M_XY(MsJ86DEk=8XKmdbul?~z#Mpr_8W{GmYnEAnQAn0AlH zQ8(x9fdUdh#**<;jWCpEDE82BfLcNpm0OgK7COi@9?WE$X5-;fif{-aOk}1~VRT(( z&b1Vy_L-5y+}xE~vqY7oT4df#Yt2X1LL|Qyi8jre9;K2nzY`CD!Z{w6uUGdPVjWd( z4}dfn8^aA;nl)JL{cjCswxONjO20P91+g1~G+T-1NTr(Vs}^m)ke&u9`}+^ssC8jd_=ABUk<-4Khl{WQe-l4A8z?RK(d|9k19;` ziE+)w3uG=z9IBsv@KMEBpaz_#x{Y0i5e!nzk1HdPX)wx!+|c;gi6RY3glYH<^xHyM zid5~q!v;tn7z+cW`FkorYxP6+bjrsRXS;v?Lg%GfrBb2<_VT~92KcsEqVchK zMCNaT78tI8!MzqN0H3m1i)Gzk(cu+u67Uid>~xfo#)mixMXRT=3m$|gi+7i4wmaP-) z+6}RBD;n*UQnXx*XW?$y0u40k0P#k`0nNHF8<(dcIpH+Q(O@~sPgJ0RG*v~2nwF&1 z)^zc9HV_I-MMIGd71HoR3_k(*8c<_MI}C(0u@NC|7{p;CEUhwa8UO>bge4;fE+ATo z>!OJ??Ck>CAUu2bgO8r2L67QE-{pVQSIge;x!*o(uO*Y6qLzIEE=i~ehkNb6)$%}1 zfvP%tOvzgURRFZ;Yo%>awa8W12!b+(&5)hYOmfzQ@_IGEp_jX*V=4l+qY z8{{&mp~nIR4Z)ev*1gmsr4bsH+{P!)alrG$SN_N8!@P;@Rp0Z#Jz^;JjJwsyKneq{ z1^Ts1IzaV7E1?6%Xi{v7Vg|Stp8k+^mdzP0nS-XKz)J>mjoG~g=5M@D7fnky54pDngb{uN= zI&uQnmOh%AKg)v>KA%799fb&r{F!N>TF8a5O@WLtIhGjh0hM|IIbrGn>4td?CTvk9 zlD?r!!;{FC2ztAZUQgnlBP5CAM|W%sQ9-Po2@EcXo;p)|@vb5%cn6T4ET!Fs0yu!g zM?GU@pr#BuIMLF3fd)srS3J!^d9Rch&wak>r=izG^<=Y$aY!(KYhjUPY3GJqv`_- z5e1y;m7|AK-lAg5p+s0Q&aB07feQX}zRlUBcSNo3+8m;2Zj7olr<$wMoN}&eb1que z9OIKc*<5Ij=IN#8SU*|sVe0mVfr;~NSW^vaM(8X3L=?8s7*%OlHCLr!&UCzARdNAbvbPuTh$$$ChpH0&MRe26a} zoXTe7#|pSGz>Px$e&H46jN<$%65FO;UBvys@_Dlnl$qEEUY8{Em)Uu&jm?2w!^wdXcQJKBPo}szle#ZNH=xg$a8;gAYa>f}IB$-l*o^NH@orbNB)Z@I4f+=z7L}3cKscE>$&_Vv}ErO@=;Yt;1Vlw%Ppd zP=0qX7A5X>BHP3XQ)tY_Xw%wz+8iDJVA}V9*bKJ$Rt-MMih#dJn+bQgW4BVcV|0Z( z_E(BAPoflMmutib`)6xGM-TXyZsDqc%=9LDTgYE@UK4EcMK~eygK>(%BNVYt>8CEH z=jsyGNSTnFR3PYcjm=bZ_eac&IWlm)=_R3hTH|_%*TK2!MUh@sRH>q-Pj?NxM~z66 zR;|8Ee^eW$&p;uuWndVlETU$G2VhNKla`nowIxSTC`?`T^pJ`1cdA{WjTN0oYKp>4 zHUc?lsVy%RdUGAcO6F;xCjs$;{4oFceNzCL%b($~!N#68W@ugdSb$9HXO?6M;kOa? zXKQv4Z)<1TJtQSvA6tWzxk!hePc{$Kl+g-*5T5{+T%K6}>IWd0fq}n&u&0q=s(2(B z_~$P*o|Pm?PxxNVRo`dxji2%PlM9On#;2co;OeWV?%F@~tbd#6+-E&| z`_%MZcYW)(9^C(|sc(DEvxtAr)#D5E2gYY-_8*v=pB`UWoF6|vwYWGve{5`iA))Qf zDjx+W)>z69GaS+*gtpj z*ukm!dxvHY-ZLEPotmAUJD`eZj@@l_zJ)qRDC?tKFX8$X>RQ7!e!iym&CVQ{9zQyF zP&L(>$qOm;On;K_pDau*P92*$Fm_<>^c7e1UvWixs|Tb6jHC;5C+81LrzejcIW~9t z*ckEsS1ul!o***anO=MC4SSw{O@FEn!E-0?KD4;tkHvGE4oyr9r+8Jy&(Pkz;~p?R z>K_6W*`JQ5OX<~DU!5*3+4HuPJ0QV>IK~)Z)qcso8Yuz~V?cMV~D!o=@Y-tx@I0XCgK$Z+{V|yCF3_y>@go zy$u+zzae|+tuaTX(0vmV`$Ep~bno6gO*zrfmDBf5FAVS9JE70`#NNG?lvdjW(P?_` z+{rW@PREO4RQ8pNbI0yJIUP`XIvpCS#*-xAd1>jo>m0KSa|h>+&b(s!;5Q;>bMVW^ ze`+x)ygfCT+<)@m=w0)3cb91NwnNkD^(POWo}Ph!q!#(rjIbOHX*#!Ocy!EQUj8#S zI<#l5NIO0;k*1=dZl7_*5m_Wx!o7QkAQ4MHG<;@AlDJLve$#a4&dJfOJ9mbXL-1A`<_8WigJvuXc zB>mq)(2AJMiN)%#KB?7wsNAmlaVU*Hfq)6W5p+uy8{wRO6N+O{ex)9==~th?N9YJ12r9=}g78C8^z3+K z!KEm|tgV5I=NCtS5{9}|bj-JH+cw>Di9t}J(V<_hr;p4mF5X*obe1Y$`dB)57b0nX zabYCgoh}}lId){lUOtCJiuDe)p)?WRczZY<1BkIP(cspU@Ufh+r|D$6Z6XC|qhF$c zo^hZL*_3o*ES(&VrHbd@IWaa&Ib$Lu<(eFum`tzXI+>DvY;(W&zVm(1iO-O`>V{ux9>d1`Wt+Qx18sH>s25W_9% zffNL2BoAf)7Z7!Y>*(d&v?$5 zXag|OqFAbd>hKzw9zD4@Gds0dm5zC!t5C+7rWTIR&CV>&?K-e6yhtj60%JMUSNW=S}HL7w1gp*ne+&@c8s1fh#n0`kux4DKy6e zhvtq4IIrn9wI&_gDabAUp7dLX3GS|F0)MIDNc)L>c^8&qs>)Ji1P(jx0+^OmLg{|rI(c}B)rw&Y?qnGo>1PD5xLyaTX_-CX7 zXb9A$5@F$6jhwHE%*F~LVrYDr&(aWTc)6?zV(hb|=u!+)hB4dyRd>|j7<4XaIkODTEYQ%<-09*k|iyu)5HZ`ys z`N_wz#jDu7XeEi!R4v9wZcC@AawJoYQ38mzh*BKI3BzZ`CdSXCqZ1=Um2qk#Z`7OP znYUgOCQA~G_E}1I&?CmiDXnOZVXXuX8H&h|(@XFNBf^CfCuip8r)M>4yA7TW%IbJ5 z6^Hhd=JIbTrIq6SV?OU13xK5KK5i$+yo(W9A?B5H6NU^!*ehdl{y%j%QBVua*)Tbi4g%eymO z+5t(&<{;;cNFyl>ISDL@t@9b*3dM1q7>61y#3*ohrx@CJzqRh*{M6lZ$3~})9UO%W ziiT#X$D|8KXBKTf?BeP8+`_`l{#g|1`RRi*i{j)*PVS#xfq$>ak_BGrlVhM1mfzY$ zcf7>4^BBK5M`r09;GsH2?#Nye0t_3&P}GGTy~6TXL~&BW zNX;%~-X=MltF)zv;?{Dj3GWSv|i;}jFPmYfmAE7gbQOteLOg7_ud-slwMnR%J z>rz&!*mPv{zWAtK;InOXY>6T&Gx5MZD;Ud>;Bzp`JBco0H%@GR8-7(HlY!eKOwX*ReB|Hquv`-6@le zq3pns7HJ^|cp_YJ?An;KDAz(J($Q*3-sxUc%wt!|ViG2?5dU7eFC7hkXN)VJJa}+= zzF>xCI6$9u-8{VuUY{PoBs+ajOmXzs=%Km!W8DpebFjeq3AEo8wb*ugWuBG*KL25-2RX!A;XeovL6^H*Gi-m z8t7t}`H-f=)i`Ck{dS75GRkpjQkcA3Y|9h;W5P0H~rr;Z<=o*j`| zI5IzXdiuT#?Vs{kHK>JdyQwgdayLTD#_nilrK8Geh9=q*!`rTkpRUT+`1o!tt<}%& zh%^Tw{_cMH?xo#WG?$ikV_lrAR2$Olp4<&%8OIn$lCBAe@Xrbf&ZJSZ;I3NMlOj!BI6W z-EeAVc64@*(E|Th)JlV+)I`Tz-lXn`EUMSt*p3}7|Ll-R7_<8wX7a2i^rx|y+R~BX z3?I+GJWna{?Qn;^SL!bk?hZY?_>PygT02S=#Vju)gQqY5z9eQY0pc*9wx` z^NekJ-0CcTuUK9}OmzFpfP>~0`HO7CJhOP(77N+uVb{kZc$D}kJ$6)2)IsHWX*(8? zrtNKeuiS5;im~kJR>Hdd&0TdxDW|1v^YKjj)e|4Le(#4l7u?O4e$7@nl`1Mq78Zyv zn00ldv2I~5dAzYf!i)!9ydTCrZVEMUk83Q6UYF84q^B`5md+U4&c}!XL~m89_P~y? ziKTR|Bj}2yswzKm)fHDw7%Mq4H#Iv|py@^}nZZ=he2>lH0>HAkr9cHn6Fwk+hLuKQ z1p$=@bq&prT>F(6$HvY?v(6BDlv^@V)(^M&3ZjG0I{B!tl^du?rn0_nJvuF43F+r6 zK}FS_uyj7BDSFn3D^*JcWe&~FVFfmkidvVOzJgld;gn9AB2Fz01x;XIXDICL=!uZP z`gL1>HS+n^z_GD0Ywp46yQWUgE~;;UxM1^boEw-zSXKPwt>OM(K+oyQ$vgC%g_F2g zXx(*LccuHM)n68Oa3noGKevBs|Lnc4QFi~+jUqDuhh%kkWdQiwEIWg zg)tfXuZu)e%B5S?ozqdukyNc`kf7t@$NCbeyk{d;g{ zDotAoTa=|Kl5EqnF+zM(n2y+|hz2&IrK>5TTLMy$J*EgMq!+XNw^Xp#8uBSyxuMH) zl97&kdC;LJ#`pP0&-g9PjSh>yb@}wWwejUU{bSufA@hfS$W}scDStmL3e*zQma-{m zsgydu_4c8zdI;C?xJXan^4MKtA!(i^FDkzYIE!W4q!EKp=&KleO4j}- z`7Fz|b!_X{%RZM?)-4_Js=a(AFRo^wh!8nbMr@rnz)sapu60^j;X4V$+#p>6F@b4!6A=Ca?h0Y3 z5%%!}m5KCDMyukm+=kJlM3Jd#&MXxuNKcX&0z=Az2^S)V_zDe%$@ZzKiggd!id^|l z1qRLU?&-PtgHy*YRQb!%A-G0H_Z4e6RaxAcyK{~sjq*>CZ+vWgC+6hHN=j)gv3dX4 z9bFDj>WmKv8a*Ayb6!P(2%-=(0j7E>nQ1F>Eqj7LNc?sn12G4j=Mu;BYXKb9`JUxrIk@WH~ zyD_d;?G&w$;NHSFCJn4H_OPhkJ|VnAEkxNTc8Q-*Kui{|vDgYk6&UiGBh(@5vJzBO zshQlD=tQN!ZtR0F_M5IncrhUC!E>dYGN60+(mSOhO1F7o zm6EJ5i>l6i%7s?gMrUV*(k4cuTpwpFBJ4YgE1}aF7eo%#lFKPR{Hof~QBhTT#$l&& zN-JSMwBwBBSXz?4VCfmvL3t=$Vuvq{%LLIeE3}e^Cg@5U5mw?mkz;9SP(&mQX*nzb zB#1&}(Y1(Jj%Z<+Nvu4t=ch{|=%sk*t;j|4L2PwbpH!kx8ON`H7=e{Uw0miMZtq_H z{Yg~e<}A$O>MBy;%?OhuJY~-855e9Z9;{2HVM(7fRH`uLQgiH{B!(IuD2VVmzC0Ka z7%JpyNhXb3*PVr*sH$1~AKUHjm(5`_+(wJ8g*4Ql& zFaJ!)cSRpO3x(y#ls!`Kh1!UUAuOSiQCGYs5mYBBy(&f+=7qdTU6@;W>z4}168Z8?(#(4QrS#X~8F zF*$oKTI11`fsyARHy=pHMBjD&Vh14F%3Lvrl6yvejW@7%my*?UkRS3ZfmNh6l?n#4 z)1V`lk89;nq7JYupFC$mL~N4f6aL8EElaG=Q5 z^&DBWEKlLrs>8(^_)_C`wL7>uvE+4$mh|PN}?|K8NG6<`gH4I}emApsMfvOGiQu6q$=xCgF9ZCz( zAXsam)sI83FdQ(DK_wU`1!L?*62#KoQzOr4!DT4D0v3e*CMFEoJ02&;(vdT6UiReS z7bF)dDEbSXwJ&5HA7w4wK9gF~n{J$g zMG2xHl@R`}vq8pM=J7*Q$IMvjJJzyeX$(x~PA;<3>tH&?rn|)zbdf3v8=Ezf) zv9`LdCdvdN^~0MnWHzilPAs{vtl|R#bQ7t{@`4^(sZw%8@N9uxpDZk$1B7Zio;-Vz z_o#*G*YISM;?WM9e|F4VQ#wulD{vy}$gyGd40u=B>n%-QQdC0_-q{0!C~KuX;SnS0}9A(8hyP(?`qe+Rq$&X3EaB zXN^5`g|06(D3rs*KHj;hrn8Ot%1t^v>2P$UptChTHE0S?PA}8P(&Q*4RPvo*<^`#V zp!83!NLL|~5fNU=daOn{$uVD3REej`vt%D$FO%0QqEZ(Q8Yo==XJ$`tfF%;Yg7;18 zA*a<4W9)M)!Pgc{iU!IdgcQJJ;Wk&aEX`Ux&KMyq4v!nE!F#0I5F=-= ztkMiC-NQ>j8JEBtc!=8F-$fyzEtHLIMjzFwF<_s(K7e?o7ogu<0i^?Mm|*@m!cGj# zWX?=(v*#5x_Kv=fwRO9WT(xcAzHL`gDIN+2?fGOLA=AEn)$)AJ?8$OZT(zy5Ej;bp z1`u5-x0?K_SS#%Is;kH&u=BwY7w+;r6IWU5^la=fReRG|2BCZRUL|U=PgwPfkI?~< z-mttQ{yTBi=qUf8&V8Y;um+UL7VpKOy}K;#zVt3iROXSZM)yIS+xTN?j2x<&OQ^6? z{VR7|qX8-V$5q=#X$2peyX{(QH`6-BS@{8g^60Rcl0j=fN-EDSUDelgfil@J^s(4M z__xcoN*^m5r(seJ3sR$C5N;G&uDt{Cp;}T*4DB19I<`Y* zqTsv36UrR2QMgCHkP)vRQyI%W-5 zYNiiMm4dubgkR`a@=`#aGlzO#rH{oaN*@u#M1ayRvEphjBbm^fF?T6zo@pQ0?jTA} zZe{P?d-CK-7LDRncU}Jru1PO*^|CRRU1ptAJSEMd(LgYS{*79Py z=cX!nkNtBo{&-|=;ZVUHcQ0;TU{T>_0#mHaE3(OwobBK|q0u=rBY z0-U6mXo~JYzHXh}dz3hT2rJ^uu1S0mXSs?5mcwJ0WnM~Oc^^4d{PH*fx@0vkizE5Y zogvh!)0SKNfdArSnMoTXJxS&F+;K9$EwCf{c+ow#;mv_B$LL+NQ+DQoM|abOKzq3h zst*Dp^h4;b+pm137Q^nlUGuNKyNbWbXdqJC#$n9M|0<-mEJY=D^3FS%A)UGN&Wg5V z<~lItOX5L7mc`pDvL?S*}iQ%xrImTYPUba(4420Q#&bGF)M5gDW~4MYhvHT-d$Uji`q3_ zRJK#870ypN1542Rg4D6}p4y4pfhhrxfMbz6G|-#p;Ds>HK*ga32}Cl)%^5KEP`txq zFbX&wHDFm(fpTmuwqOjMa|?zxJe)b>i*L-lw9tS67#WR9gp^x-m=dqB>%yaV=F@gh3EW<&s09pvq1QOA`n{`MnH-Lygc!bEjq7DolM2 znf>DXN9+elw6P*j zR=#0LBONK*Z_1GucFzV8-@LJ(b6ZLpI<7M(7pGIUQ?sa9Bif9i2XKC~m4dk7oFUB=W{{X7Hi5R35Nh(^F(f+S%*n1%(UC4t?cc$Pc*RM zax%JbZ0bnKo8Sd=>1ouCX*N%>d35@olqkf< zh7}>91iuu~vAk-umlulkDE)@u{ye(t4cl&mMG}Xb1?^?YZhijl-Kk;8RA{+C7W#@j z2i*zM?qsZdzMX5cg3eOrTGqAJQ~D8BDzQs>RK7tv$Zl&?&gCkBK_o$nMQ&DE(dK-7 zi`>G;Z}VV=24h2G)#CH;xHzbVSp63fVP;Hvi?N8POsNbNWHGeNwmt=o*|$LoaJ_|% z_*&j~;qh?%(9G=I!rbvg_onlhqfc=f%nCz!SwB%v^q0bqq^tc|=FQ?$coUlFC?dEk zsWc`hDv>*KZ1`ZUL>98JOQerpr9Wq+#cEl$_!K#r9;7?NqL6kxN^Io-u~slX7g-WV zDG^!35nj?)b7n#!TX{1>AiT=bl(L}~V2WniFg8ijqQJo7(7Cdp#=tPN+)vZF6p$-zY?bAkP!DO+K6~=Wbmzj%Q@$C)s1?p#g;jX z6q*9Fr5M9+neL%N)6&X)#0gWubv?+(QXkprQ~7jvxf7<7#kdq$KSW8Ol|H#9)!)A+ z55C14Y>iJ|#(A3qoU?g=>xZ~Lquxx`a^1%DmRgdWZus*9TzB&P?|c0D_qkrpb5CE> z&gopo^)a45zp82Hg8mcNA)YT^XLi?@5RX`&5rEnT;25A1wHLLJ+*L@ZAde7 z*WGf%t+!@3-Ea#Y`%`yMryKz*KX^?~D1f`W*foI7@W3GpUf|?f_MsDXdgkEbp*!x_ z{es(Gc+1p1h%9_@?JuKzak_Ti-@- z+iiPZeADe6(YM(SgIUhQoqdrG#T7I_$l_jBDPUTpzz60OMr%At+x*}~{N5$f!5ta`^GYrSX%e!laX_f75)F~f2 z-ec&y82`jShp#?@`?-8Mzdhl+{p4D{%CGNEzSr@69^YMj#g7!8@x7k!^ZDwdGG4&< z2EH-PjojZ0_^$nLfa_xFh3Z z2d3ulo*SQ^zMD>&zt_ge-Rzn>xu0=$bo5)M4;;AqTc7*fgZrO5ec(CY`fcOtrP1wU z&m8jut`F6dMcE^Ye4_W9ds~r>7W* zOfqF<;Jn}&&L-nrYnamA%skYS>C|F+XmRoQ!jAFrf=tGtrQ@Rzm#*V83kxTw7m_2P z&e?E1#I*qo*f_4e4sEB5`+sSi9|ewk99_vVu5)~k^F6_Lo-aqVCyRVf@;${DmSpMg z<@yS~l5Pb5aDW2qx@^KRCmj7Kw;l zd&Ts;aI4Q(dA|I@;=%D^zxcxVp{a#KFtOu|^A%3TUzE(`c)eFlbAa@__@T*W(gv27F;2vzmX}aUtmE~MYZvvz++7okr{^dQZM>9#lcdw_Ni6fuQ0Dhh z$CZ@*kKjRg zG9Huf=lcVEe~|AR_$o}_H}d@=~N|hJ3NQE7iKjF zYl;U4IIW>6;X-^;eZ6DHE!oSO`m(^k${R9;ewL!n9e@t`)}+`M7D-L4DW%X zlLjL{G-NJ+{o;by$6N*f_4mFSd<}FhRE@Az0Md2_Di%#pX){+k4qFenrfjEcKyguxU`qhN{RTlPDa9r=cDeUQ+4;oyX;z4iU z4EB~V$0tM%{IhFQ@%^h~NUvCY`5>(SUpYX)|LRb5Ec#D)qrL;-q;OpWDvN~c2RM~a z{qZxu9M|#Vz2ifY;`9N>ivjd*5ozd#qaV%|-V#GUCn^%pf$+nw$TjHMmhwhqY%Twwen^-K z4+eM%GPtnE%hvd#jmBg{bnxj@6s%3hqGH4fw%Uk{=ud5zzWv{Uel@Bmi6TW)4T?3&`3{`(z{Fjs=vc&S*XGEjE@yzZn%AO%y?Pj%KUV+e3% zpx%5EW;dAi@(*4QiA>)~p$m%TR)7EL$dJY1d0`Zy4jLHN9~DH$4uN$&P#NKQA|7>9 z5{pZHd)}uvp5t+zKCV+?E(`N)AjP@T#2;SJ2Q*?Lkxr=9;xVNhJ3fW=Mt6+0sD)J_ z?CBX{3(lo}|0yWdTO|MB{ZhLV9p^yLN@8DG6=lJmH^$(8tHWQtc_Pep*pk;EVjDNt%V z{+0bv>T|Y+>YsewWu zpv>yat{&TBXP~4+Y*XhMvs|zRP;b}Yzk`uyTqC_@vhK9H3*A8`8j%jP?1E4&4PrD%j)}MXK;UKq359I zp%vQ7LNeA|hF3mJ}AHiVcg2Y_@lflHVHgdHODHhW0+<2=)m?Sz9`rW7 zA`wlI%&J#(tavJ0Gt(afL3J5J)le60b7FFAbnocM2)yfz!doudtp*=6NW>=6aTut< z!=%1nn8<2K(aS>LmCB*9^c<#7EB%-ens@fhi{?tA>`0?^o|1e0#Ie+=Xz!?e>D}tj z-Gk#)M_+_`zyqp>EGM?i#m8gmVM1~^GEf{w(kLhK5g(Ob>|noyC{NGC zNPGv2<#%LxHj+>U_cELJKPawADUD9`5XUIW#foX9PZNFLq&VzN;ZARs|6E@beZK12Pnz1~+uIVE85q#UbnTd3FeB-zp+Grk9xM>#_nKTV0s3VypR)Q)F zEvm%eupv2QsIWx379V$rA7H`8$hxA;S^kNAIPA;)iG3f~`@&wIw)b!k<}kkoHUid- z7oU&VJrz7uiFc$Q5{?i+>baRl0K?HeRlrLmx#$uh&{SGAGD6}yaK-{ zKh?mq2X49GeviSvIL!L~ys8=Rp|Tv!hPG|>;Ysf!rn3d&x&qFr4W#t<1ycI|8cth0 zd{U~1sl-li5if0(CchV+U=)lF@Qa>h|Dvyp-c6zW^Xf4c-moMLY0@}}{{HoO!y>_g zePhuESOURu1JeC_0I7b_r;{!6J4+hWTS<7P3ByYZiVD;eVit*u#p9t0p8ynJEuc^o zT&q9)qV_ihNOjT#V4Wg0%#Ak{U0!~OkqTV)f)vPk`D8Y}o$rIS8y>yhmb%&QXKFA|rQCgOpXbr=eZ%&%$u z1ouz|VgEf(|5C2mh~@8jq+*iT_WoI35F?9K5?BdA^MeyvtJfc07$iqQ9?+M!KJcp^ z!t$qn71o~mJSBQqwDcEA;~ntJt%zR*4^!FSPmJsxy@nt=+h!(_|zHK^ya8*NKvVkpu`sYJE)*dLn zODK%f-N~LO3`&e!-Z}vdcCn! z{8)amwJn;?T@V&(v!a3SKz;v0A2wAWeVw%+uhNtLAogbXr?MT19W0SlVwKA(FiJoc zD4O(#vB5p?pV~HkUVqTJtL{;~I*60reW2R8|_5mF_wr?Fw zLk{F8zB?01Ep`CC{lV*H@vAMO2~IFjfDXPyvJ`%iN>NF!0Fn}44P3+dIv^?8)3X~X zae7|g!TByAJ(rU`J(tt-IB|ORCM8aNZBpX;zBO^`OF!iH&w!+4PkrZCoWB9S2`dYsd< z1S#4302^`c4zFCcvhgw*a={yd98~Bpx_`^JE|?Ng8k@=LdkKB!_{=IX?+J z#rb(4Daj+?W6pm71M-VxY|^IpJk&eMRTBnN<`B$+@`k`q8ul5@cGoIe6S z=A1gFQtF&Synx=E`vLtqZv`YJ=>-hu{0xwkbe%K3dDDT!%WyqkfNj0TS3d@YcaM1=u^sx)W-u?5<3?hGU) zsSotx+^W1pQWi>50Z2;H2}nxP1=y4GP#`HuFCZyNB(Oi{iNIl;rvgbywg3-tP7mX9 zdLW0m07*&QfS#Ot14&650ZB>v0TVe_1JgKP23*Pc8sJ*a*8?|l{tQS;@&fph^S3}! zl3d_>&gdP&BqjSxz&t34yo#t~Zvak8+yqEU zyd;p6co`rm@hZTooYw%7l6`F;De)j+2hO_#dvYEM?8kXLa4_e807>cGsld6M?*Z=R z{0fki+*|{a5`PXPB`&EdDsdUO97@~>Xw11Okd*ArfuzJOfuzJs14)UO2a*!61XOWe z4MB$xTZjDe?9|QsSY&FwP@@QJnV$_TxMj z7{~cY;3&?=0LOAZ3rI?S&IOVZUkM~7o(Uu+UZR?)#LI(MfXcvY0&8*p68MJmJRm8# z`3NK>9%_TK4<&zI16x!Vd0Sv2=W5^-&Zh%salQn&l=J1lwVZDQZs&X#a5v`%fCo9x z0v_i41n?B+XMv;?o(sUsoIe6S+n)fQ=k^zXq~y;<;8kva4Mjwkd$~wASv-qz^+j8Gq(=n3QCe%S5)FT-~yCHZIAK}rE}*4 zKXNW{K-xgbJ`b4Bxx^9W97^`JfOVlH_P~bR-Vd0;`CQ;UD9L=F!0ip3a1NCGaRN@} zd@67s=UKqVoaX^6JB#jBz$TnG1-60G{k8?_xIGPgX0{UD)8vAQD?~mOc!Kk|RhV-N zB}oDf=X?=xG3R-}_ngbtzz-;iA&`{B6i7-^9aw|&W5DB_=K$YxUSlod4NB4k*pBm1 z;4mn~i5fVP+iwSwlI#NR<@^AUl;kOpl%(c5#4VJ>3FyqZE6|Pe#z0b%mOxUHVL(!n zEkII|ZNMFz?*{JS{17mc^TR+=k~hG&oPPn5l0026D)ATKq$F>Fq)awooaH7@yBy@1 zZ({mNzJvb|?JMUaKR}sa0L`2R(I6JUa!`sx70`j(I|AEt`wqa~oc96t<6Hoel1K%# zPf+qF2l$Nh@4$R0i55soc~6UhJ5rJynUpEj)alQ+9i1RbRbDTSrkV>4OBrZTw5;veb=M90RB-ubxlE=VToYR1(6iVU^Bqi|$ zl9KcW_UAkvn8dk9Da0F;q!G}c^FSae$#&o#&i4UHNiu<1oF4%m<$POdsbnXV z=b6AP&hG*5b6&3u(h*A107y#W1N7y5J&=@SBaoD23vegryMd%6m9R+98cI?XSeHsE&7cLH~D?o{x*>>JRp@U zf|4u&F6TVzvQ!ccB}oL1LNHP zi?{d4S5T_=EP!=6cLYXr9uJ(v`D7p|ojV0MmD^7P&g1s;fg8BJ0$Xz47TAw-HE=fPSwK?eKkymnXbsWc$(TK!qQT{i zOED9Kltcwge^M|Izuz z;{5d@^SQ|{lK-Cf%a}VzQy1&9m9$ux=w$E8=CiSNGHil#9`3~j*VC{4Xl#r+8RiHq zSH;9cnq|l~^iGURP6)>&OA0EcdWPWzaYS_Q-k6JnB?Xw$9+lK5@eR(y=@JF>E%Y5U z7fM2^{ACSWN zf}5Xle8TY&#~h9iINsxUhvRji0sOhdQSYxFFK~C~IG*8nisK26$2cD0n8k5Fko@1t zQSYxFcfg+RBc`5*m$R1_{$0K5xz}^6=UUIDUcGwG^_=QCy3ir~xq7*{ySTZyy12O1 zb8&WYa&fGHX?~c17BLv#ZpFLrL6H%BRtP2oBx54*z(`E&2@7YFe=ze4FW-;N7uR&r zoD#}Ay~D8Lm+eLs6&XukSj053*ysVtv>=XrRyFhYRAJXRamUEWls;kf^_B=pQiiw| zK!pUdgg-@AdWk3UIhbE@OrM9)?WQibBmrT-V-YTBL?fm$*wYU7_*OcYvVF&(4k3;F8n@`s-mh_hBUXI(Zxol}jX9hR zy)p3tGlC-;vUlbBFlpgGb6ff>_tB0W{@lVimRA)!A^FSCf8Ce9Sy?&fLvgVtFjGRwfd2UNCKomd1^kURcV5#qCL0oTt(k z@yHY`Y)|Z!5QhV*_~>}rG=WWwp($2j15uDEY4nzubA$PwbOj)tc12_D-bv%S=|AUsGwA)DPQS@j+41Z3dMZE>_#?a2nj*6xMP$1WBakB zNQpoEqj_Wc^3j{EE5~FhN<}fbJyi*VC|Oi2Z6es5R6f_}FKVcSI5fbCG~0@mhN2Y} zh8>t7>q_Wxqi8)zd$$zH&jmMcZ%>gBn#XAjGOzl5s> z>|0<-U+cIeHiNA#eTJFkX@8cb8yA#<_K_^p7qvjCC^Y(s#ReX6yT}MX6vAe)*pY$= z4*2N{Vk1^i+oGKMiEVTME5Dtod^e&j#Ai4+qndzof8@FjRBg0LPU=i`dN))J%?c}* zHds@W(6L}8WI!AipN7*W2WXSgw?lQ(52X-|ctQI-9tD72Yg1WpUu+?<2I>}Bu)c9^ zn5q5J*T?!ceJsuq%PP&9W>t~cIt+^JrJ}{eF-S?AmjZuk0Ii^u@BX7ai%>?O^+2xW z%b~>_iYf+qlMb>)GAQ`Gfnn1Vu~c2`wL~U9!L`cc8nlm2iC?c38;*tb1^y#|=nbGc z5t{%{Rj6J6$lgh`#yufAs!tO8HVN6_NGNuRW0v5Bv8Te~^Vleau&@>AKe%liwgQM{ zr2xAaN25+nz;V2jzvLQslx#)?fa1CA56MUFxT6)x>pbK?|E|vGJsZV`47`NkCOMF8&7L zq1WsBwY!55pOoi*U)xU2wYct`hqLIq&7b;gwQ=n_(7Mo~^_D%%4p2wvZ+C?X=GVI_ zdae`BafTM{8`gu_1?mbd>edZrcc=$cKS%WgUz@C72XPN(>Z?EJb^Fh8Pw5#~*x8Av z#eLM=pvG^51t7?W$d5#@*96+X$bs}3TdIX4sSCj}H2U)DWn%l$7vZ2b@b@?sb9D_> zPzS#b0U@pYf?7~%YTvPSYwVg-aQbg2)7rX zne1xP_82q)-mWIzTc9l^zpF#3zWH;%#nv-~7Er=(HO`@Un+2rs#9(VnOtxnEPJAjy z_mOooutyVn-oltK+*03H-*&%3`qFcvzI|3~{f~hCC7t|XXM%@(5P#3dBLKs$J6l^XfhV8ed_67Sy>GNPHu0{9v6m<%P zkq3#5hoIX?J4w*;lmht&*H<(DddDR3C&%2(gVO)YQgBEAFp>R-BL77cB)?p1mDqo# z=TAxl2{#8*`W7+wf|*Y<`YC;4lVcouMMnX|H1fvzDxB8?NbN)eoJT@H`-F)*A5hhe zJd1U)u@P88NEI?|P=a*@Y_$lPMTf9)baZrbbauorg`=yZo1?p5maZcgq_9!~Y09i5$=ot^7ByEwZ#yE(f%dpOsx=ZNtQXN+^WV7$W(;~pOM>bp2% zWWyOF94;8?aKng)hf94|M^`6TXV-eJF0QVwZm#aG99NnDUoZafVxwyHyxw*N! zdAQYgcXW4hcXqGm?&9w1?&j|9?%`hF!_mXZ!`Y*rhl_`+hnt7HhlfY~`UqluT)sZM zu8-5|!wTbD*i*$2@h}ir6{sI)qYXWN&G&3@tzexg?H0klr-w+xzG8eIJ?4huQ5C@M>PN0pX(d>j;qQMtz(b z>f@9KDS2i>E0cgTF<`)Q85(kC2z5-sSWuR@j^-nf!bNo_r3s1mn)Nkn+V9G#(adz; z?Rx_z##NYXXVGEu<`&DgI+uDm;BK73=EWPFZ2vfOV%|wBUHtmtDQSBbHfVLD_3OMD zBLnkBSFQ2Zqgt2#tJlTZ8P$nxa`{Za;PksI&W&s^dv;`r3#rS^hHG^hheOV_xp&}@ zX6qnftBKp!1{c>Yt~^nmTx`^=lhxz=uUvXO#>%XnB&-=+}IqTc>T|xB9fM`Y5?g!?ChQ>$(L!F1B{mypB$G zJ=$HJuD)J*?(GukyK=_&7N%IOd@`r5uaFpgVRCB4ajAWNs1p`f>$_N1e`%Ys8~mFz z9(%g#+MA`zm3o=K^Yp5XQ#K4(SZ$ca-0fBuj@6#uA$7?@>6iSRnQhW#hv#~h8xmf< zu~XK##a#}(o6#U|XZUW{$9{$pgpFS~}f5xJ0S9 zKbq|x{i#gXHG?ZYz1n4yyU97HDaN^TN1OWSww>-PiMnv%VD_O#p%TBPHzvdcrT9*3 zc5YL%J{eO#cTc@jSK4#P;JH)A4Nm)f>t^cqbvGY6UpyZYdcDT^)TKFIJx0f8WuLy) zeEX`2TRLkdR|>t<`NFQ?!6m#$zD={)X=QbGS@g1)W%ut5KPxviF)iI8Sodhv(;AaH z{8%*4VsZSImwQeezII|_MVqK^-~2TBqzD-Z0@#JoS*>cZ=X2cLXdkQZ8S(%XeD$LiEqZ|QT~@AIH0OYVhLX!d{~Ry)TS2d#;!yR_GuGf`JU53Fdg z_JMj-%Ijj2g35%g=+wJi{EO~`&wt5w4jgd1pZe46%-QEJj#-j7e6u!d)S6TMgDW)H zy5h=@i1JP+-mN;iKpT2+(7LIgj(YFiQ2P3g_n(e`oKV-m(rWJRymu*q*L!3>-B8PF zj?yL9e8Z69i^r&EmF!&ZO5mEDeK$8O9@FK@oR@~@s&yDNN|lh}2zY-VI9Z z+raus!_T$G^%^r{^5ku9$*KnKu8}25o4!)3aw8bB7EI+3W z+p%c<@{S41=7){BF(!FzfK*#@%=7jyGyF7jRxe$>T+_}g_44ti&l;2*ojdZ&oseQ( zdaqx;{qk;$cRm^CR41O!e0g!daBaT1_I=p(#ivIG4U64(=H$@uJ{6SF2fx>CSf$;n zurdqwOp1PL{-eUt8t;!jnDOn=$2|i*`}MdRGpBbclQH$$|8Xd_>x8JRRkh#cS?%`q zXnJ?%oBL1N29__euXpLnPj4>CcoBNuId_ar&uM$q!n!pZckX-^nt8oMxoVH6E|`6M zeeUN;J4R`DW%Ntjy7b9`h+%=3?msF1I7zTMt(ck_(_gF=T~k63tXLi1t$ z4MKX2wGW+*bf01G{XBf?Xb!)1t2t`*{Dn?y(?5n!lN}#^H8Ssj zYvV8WD}2giNMFtMoOE%1ep*DQ^crhZv=rk~5; z@0E9)Jvb)q=I$Cxb#9-wJagV-v)JD$c!|%mw9;TR_-ymgvj#8s>^fM|qhXV3Q8sVQ9*;2_nB_L};`}vJ zX2kpNJ$ht%;+~1Kp6}c1)%4?_gH!F+G%ufb{ml;N_V-o&P3<0q1dX3r&8X`n_ZJ%m zziGO8OF-4Kb8IWzz1Od_dFHn~wPm{wcmek%*vPb zSK7WxU1J_GZt~VAi?96Au=MwL@0O3MJ-OTNb+0C_*yZFD*|GYT^CdDHhIF)=tiBOj ze0QydTbE2!UWrInJUHbr$?(wh(WUbnls&d zyw{!C-fz---T!gvU<=z-`)1Y;*jRb%#m}0?E$VE)kmjr@)$?meqh$@f=DB|UdgV;< zGm=psc8=9H9g#C__vNHTcNcaUSlzJ1iFU`|UEMS`<7<#tvj6!~hvwOipFT@6FXr&p zI$!sxC8yu#4!x7qc1fk#ughCbk1&3EU}e~>UBjDKeq$6|Y5L@M(`Pi>vBJ%H-Jm_) zAGSJnXy&YEw>NC@{5q`CRP$RsOkD5T>?m1$M~g-!?H`^S*EY`N+<}S0I-9em!t2eM z*WVtzpnGuEM!|~O1 zBFjDMVzv9SS9Y68vtvt)Qr=u1-vEE-&xs=T#w2QvOE}UH5(yvj_FW(v+a49shFpQD4aZ-nY?P>nSnaNH^Oj`lhFIs6F=Hh=IxBt3 z^jRxe`u5y~3P-LkNiXFa)~;*%sg>oX?p+zT($ie^$#%-w3+W~^zopdoNqcI#*X^d! zl%?6NqZH>)e>j~{H7&q*Se$0j&iLAEHXdJS@VKR0iE{48Pgck|+9^BzOApKbo*AYk z=WQ=-bb9E8*;%T)P4|~Saxm}HxMDlo&K;QH^t$b%6+Wd7XsbUhKeXypMM*&f9#fJ@D4J4w84dyJi$$-$(s&{R)pO*ZuMayzU*o ze02N%tylSao2~9`^yp&S78frq@qe3EVoKV`Q?vS1z4@Waa?ky;*AwGjoi*-zw0gYh zQ(ZvSc~&)S+bq7ZPQ5TUuj&cy+@-p+n=>Qdv$tzRCr%|CX{X<7K&?-lcHLIQfubbnI+-L4zSd;Nn?t&M1T z^?3`=O0N!?Kbd-e+=>;ON>>l>w*B4>ny+`pP8st2ruNQ@9dkG2jX7vpt!mcI4QuM$SYK;P zv0GQ}My@YE+4$tB_CB4KZauSSh3&=lCOx&!&ZmT#p6J$di~2_W$%Eb}-&@l1)PUMUHe*m^(q~o3i~W5w`^R~Tw>=E{k~P0)gY1}3bGuaOK4!wW0a=?~ zzK`1UYEpdphWho9Arnh)YV$s=`Jmi+bC<^~tJrb9RBdK*HoR6D*^)MAwIlAdk{+{M zyr^=!rBc@$fhQtYnlw5x;nvp>qrm8{ouAKh|6}%1hq_A-kM1{o$Iuj$5B0(?v~Be| zV75dfU8(AAbx<<2(SAz>oFv8`Gz^z4`6Nk>m5bPao5LOugMBKe+Yzuv&y1M50UfGJJQ;kcy_mQ8E?Dn)@)hbohx-Ab3`>n0Dq(N}TspCPerzU;c@40(T zqaU|YcBUt+jb2dv=A-HtOQs*aJh6N3k+PAWR>xoS+?=A5%x5S=vRd=kPw$AEVYVDCLx{Hx{$s&jQ#Z(Om^&`$Vj zaeHi4#b9CHy0Lb(13G8=&06~*xlCP$=|8USHnATTJbzev^@;WGx*VCm(jnKV#F1^X zi^D(rx7fQmEbX3inMJEB>{~h`bN=XQ%k0jiY?eKDJ-bb_eq-1cX=d)iGUbL;JhG|Z z@g9rkEKits;>+A{pH*X3-t*Mn7pJVXJDauG^ytT{AGCS?&%34^+r22GbXa`G&d9(6 z-3FU!stTQ7-#R)f2)H!C-%hN3Wv-}M#NWqx9shU2@OwNzBYR1 zL;DNvhRs*+owx7s@v#*xUo0s#_wKc=%4w&%rj}^lv(-*dN9)=5b}o5jGa~W9+5syj zZ49>PRBCdut>uzu_M7{@?S047-j9Wh_Tz`GAS$^6FA! zGqykO5p?EOSKEySK8#*?6kN4>J_(#&Cg#o{)M5jz2Cw%8d3iQXMB<4#^IB zRj1>(NAvq7O&`>E*WHn0EO(bSSTViYi|bG7j#}kaW~;%JZ`G!r>0asNwy$+u4sLsr zl3jj*@2=d*>nBt>dTIIkgp5ruKOURd$=v(SfU@~k8Gl5MoBZJW!u;1G);V=b8U15b z-a#%heQU+nCW2Ntewe!1Df<+Vq*TNtq5O`zAu_9NFnoMENh^1N4> zJ9`$IEm)dA-{SeBvC@FyVST6Ged(8R?|b@=b`e+h2YIY|xP3%;N0-M&lR|qQ=qtU~ zY|Gc=e#fOjJ?`zV8D8Px_Pu}9{N&Z^w#sgU%lk9?%xgN|%(`*t+S;zEW8x>iYgWq9 zdd)K+%}(MjwL+LkG{BiNY57j>Zqgb%DMII zxWvz8)#9T&`<`ldc*i(J>9EU%ZH6teL6J!;Kg$< zpU zGVN^s#r!Mz*Yj`Z-^50s%z{tbuCr#+TvPEZ7FS8Z3S&*Z53^G zt(~^E)u*?Q-oZ?KArnA(Q(pl*$=ql@~=&I}NbhUL3 zI%l1$uD;G&=c8++3)D5!wbZrM1?f8Jy6J*-p}GiNl&-HXRyRPGq)X8a)s4`N)Q#4S z(@oS((M{K7=;rDc=oagi>sIO3>Ne`O=(g*2>-Omm>JICU=}zj->MrOm>#pl=>F(;X zb&qsUbuV>qbh)~Zx-Yu#I;~D3$OS_|DHIbdgi?Z)P+q7kR1s_hJE68qAS4NcgrUL+Ax#)9j1wjZQ-tZlEMcy& zKv*m+7gh;tg^j`%VY{$f*e4tm4hzSGlfoI{f^b>5CfpM43J-)w!c*ae@J7fLJ_uig z?}7$X>*N?$S7Q8^_A9f(n0IAK6^!EAVno_r;v{j!mqxrKK9WY*9l05HNos@LT03E9 z)?i5}zC96zZ%o8s|JWpayI?53QIIA{#}^1DVCVPgl3CcteF64oUnW_F9mzLfm!9p| zL3bZ^%FV)#xF;oNut(@+>~nbw`&mAaJd!-cK0B{5&-DZ5lYYlMKtUpx8cI#1#jyOP zq|^$F9V$tyNNuFH(%Mpcsgu-I>LK-#`bZl|1Efu*Ev0Rw?WLWhU8Oywq0(?^Z)sm? zj5J=FBpoCjA{`-3lcr0@Nhe4rOQ%a`N#{rxNEb_&NmohNN;gP1OSemRN%u+*O0%R# zr6;9lr01oVrPri4rFW$dqz|P}r7xtfrMc1%($CWGQjJuQ%4LQ!6PcOJLRL~%Mpj-{ zNv4w7$ZTb`WcD&AnTyOr<|S(=Ya|PhHI=oLwUM=#b&_?J^^k?i!ezZ>(Xtp>yev^R zNH#<^T$UzFmyMN8kWH3Nlg*ONk! zmDiHjl{?8@vAqdx2}*!!@e`^6l>Gma;N`x~^ zzd4&>6JG%^QEIHLWD(3L|#*zlpLZ5Vb*w}aC&Xh`D7fk1kNI|N8`S$}o^0PZP_b~sM& z#8O$&w47O~VkL@~F;`f~OOz;SQbuZJP*zq>Uf!sp ztdi8aj7nbHu#T**slC)u?j&*DT60WTISff%Y=zjD^|K+ z+`L80e2u+>Pmkb`osZHdO`bM=?bdz!kDoYw=E0Mvf<$3iqNbCJyQf!!X3c}sC*$Cb zefv+Gxp48xQ;DKjadyC@&fJbmF}G0U0(%{oU!PMWqBj*p+te)2R= zQOq)+Swy5dEq&X8Lz&la=Di;^ddwdaCeB&1V%3_p8}=Q_Jbv=R#XEPK&N+Dg#D$B^ zTDR%kwP(m5lc#LmwLA0hiIX=i%UE^q@#U*dP#23C@F2Umxpiz@#Y!Q=M{L@>|GTlf@M#np>SFd-iTw0wYFJ~-OI4E2cMslfGst$7Kfj>a-YMWu<{SZ*YjVVZ)O!a#0n zC@o&vz*BB%WN2Vv+{s90RJvGOMPtWPYxv&)&59yim#!NAK%R=libVU@`|HH`Xsr#Nm`Fm>OIEleGOa{N<$ChKw~q*B-6_BZi=oZ>QQAYD$AGz zD%Il+*RL?MQaCMDq}{1uWM*KXUTK*YW07K4%dn+FJxQTHB(EShFNQh)Qrx8s8CRw> zFqK(IEfpmUN?MkZm6lndajs}k$=F8PSKd!{Kz3Pn&Fs3#4QfE8IR-Ce?^Jn;?+P

    GBn;*KFK(;FzJQS?NliJ^}4k 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⪼XIpXyYlELh6pQaFa=HQiqC8=o~SgS;UYl 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

    hGu6^L-Lv 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%0A5}zX$^R<0$vmp z{0*n0l*MsSQt+2{z9@rVXy^N?md7~p24VQyAbO?tR}9W_tl(I+*=VgxACU2nUV2yA z($J9yRp`t$GHzq#>qVbey{dVP_AUMxMK|SorMdFQQs`C8sqxy#_zRU^r{gWI^Le*T zI;gj$9c=^i9a}*tKX6! zVhHX0MAh<`@M0%`e1twF2M9 z=u;_%5}5N(qq#BoWK17=PtW4&7_*ox9c4aa4cSM1WX~p|p z(fHgOg`M~3_?-?@MvPPU#v;vmg8h3L%_Xe+@+U+B|D0+WOC|SWO%1&)=MDI9kE012 zCkGbV8^oC)?KBr6fU0V4JPz_yZ#GDcr5MF|IDt(-D$I^oTNCBtthS5_CQ!k6@~!3g z4BUNkpnMmYm6YM|5C~kO`T-48kN1Wasy+D?-_jm%qkG1K7^mv52CB~A%f7XjT$cBO z!K0OOm0b8#@xy?=HzjRvts>KHV>fz96poHgpN%ua3Np)P+AO&$&!(A~>6{m>AV@sv zoO}h@*XF3&{pf|C4#K_bAH(_)nwA2RGIQ0m>lzPG(`X)>72{&;P^hYvE#cBbEq!UE7$Q0&2$`A+T- z>(abmLahubdPS6M5b4s2PS?<}8aiF$5RJ0Wc2sphq8;)#BYXvzj4h7E|MbcDhz$E- zs`v19%bK9Z)7P$yAY+W?-hB}cK!I2uQ7srRTO1o@)%rEn8pQgqd9B}y>|1%QN7zzp zT8lsX!G>l@nHrB!f+{4; z1DziyTw+)huUT*F>(b^1+Ym;!EhX3yBa_Az(X>JOd_+;=9_KjV*u5S@Mw6nY!WK?&Jo}g2HsYE)jz<+fT-PEiQPndq zWFEz3xc|0NWoxmE)#vZZ835Za1_>RIKF>YASVC$$brDH{k43MmC z!w9r<{xz)PhvyK2F-UxkF|v-HTu~x@(9?gF155we4I7wtW`bxHP0}BxQIKs{|2PE(+Og1 zM52;5A}s@&TQLy8%Z|2*vg)|&Kl^_z3Hi?R~}ZRwP_j>NCwI8UbwkxTu5FeRFRceIG$yR?q(yz z%o1DQM^$*nD-o%(jnAfnee%TufpBkCyt^ve&oYDX=Fm(lelVDxiI3<6wl=-pKM0uz zSgV?u8#HtC*o@9qGoCh!h@QY&4xoa0RIooWKl!rZqod?mh;`TmX)~L~c)_JV1OGia zJqfM;UP+1V?Ca8#P|?^)WLYl|br6UuBpb)}LJBM-LjzimqKuGPEdO4HbhDxetu-W? z6)rUf$J_DSF(CR*?qCLnpw|ndM$98tc5OKQuH(b~ih$n?3#EE@eP*e=Vqx{9XiW(U(ItbQs?nD)v<-3WTPv z>a<;TwO9%ox(^#)VNALsZL~VhTCR~|sjg2tPSc`u80%nHO@V94b{B;9unT{gN%%w@ z0(U0Cyi2Nf}<_r5N~m zJx<30tERE436`xeoB`obU{r0Q=Yg>0f$LLdH|1MZzBL`>0m&ux91R;R{L9byB!?9f zNj8p1GV!r^8C-lf)d&|?_;hNiFP;<749d%hOTQc_4p|3W0o_Z`E7tkIh|n)BVn~}_!(tG*1_sW!<_oJ|A(e{ zdI*G{xhrhX6m&Qe!W|N+Kc?^l6m2#IAKZ_hxcIKq}l36^R#WdGU zFH`-1E?f`1`q`>}f9eHTOeU&Vu`OP&dlYVikqi*v#QLdTun2@0z;PIuO@gdiy%o+e zNM}{(9vWKpWhlKvgqIk>=d4XT(*xPWAE;voW`$!1=G(kY$o)gnw$3WsK^0sOW-_=7 z8C-BysQmS47LUBvkz~eZu~g#sQR_7>z7hg(g*DxA=*w1yLy>oo7<`?|g+WfS5aZNA zRv_OLjJGj1eu-#Ql)x~Bb^5AjO15_}ntG5}YN8O}724$zS%9ldQvXK#qI&g<^TlTU;wN&BzhIcR>H^)M%b)nFsQvjMXui5XQwV~= zhAGe91C;W-SYQ8pzjzba+VqAt zsJN|pRMV)6p0?|s>Zp;Uw7SPGz#xAlbPQTaI@(6(yUhHR6br?xQMFew9qaei$o{Vy zzZy|{)%4=8hWCHf_|>r5E2Rt$pQfHNNWj z*RR_1SDrbO9bG=|^2227DO)N+H@g!!a1&-Dx}e0FyF0y?GYo)ZnM@GSI0(qsk=;c= zEFF18W@A-R${d0wCxi)z5+#2vWjwDXlHxis*(PLPf8XuDCXUY4C+lFEVkZ-5bR5>C zoP$vchN5f+2)luK`l2!ww+3GzHfb|+uJqZNF9cJw%l}fcO)}(>bwJjy2_Y+jy<{*4 zHR3~3o-cixn1T}yDSU)1ZB3-^1Ru@dW0vEiS@@V?vxJX*z=yk%&k{c5<`pX17gs1M zA}5>eD?x4_y;e@s@LIYQUP~wkA9K;Z5axulc?l{Pytm7Gblk!127K5iSu35gu)YLUz78h`Dq!tz8xIWEJ z%MpM_xDX)E4RG!192R2asuH5f{Pc83^Z+6Hjabw`^qWAmt8q>jCUFzbD|!pg{)nAZ_o(zs^i<-pUOGZSx$VtnvQR`w<}x21~z87h>KsBwFzzRu@rY^O21g(z1U@V z{kx%63Xu-GWj|&Fx8$BjQ3c%8zN!3qV7#HXA`|~c1c__o21(-DSfa$n?3!5T*lx_O z;&%#K^4W|aGL#e;3%JC4LYM5g3SGt~+fAbMakfd~nfv|YSav4lv!Tp0Z1iW?aXUfa z8TQt*F?w#=o{|&CMy-_^#YT4v!;m9B)n$8I_>TT>U>^W_&y+Jukn6kv6@gV%dKRZ6 zowb_f=gjR4q4FVN$fcG+wh>8S5GML{n#8hSqW>-SH&7T(Us|P*Q%Of8$oZxHQtlB* zh6$JDvd`mnd2X}x{wm9QrAae1-9TW1P0${4vgD5-!A%a%q9`(4j@RyO&)Si%3nU$~ z{D?C43dmwrQA!W_5>vwrOVz|a%$9xV$6hI-dTKLz&>PG|DkO?C)wfDCGD~?t_El*X zlJIV+$d+WdIoa+{I1P0w1qhM*(#oKb*&nAXf-K0Ltxs7}_>^wURY_JBJHTcs#WqR; zy$>tN+*GGXqbpd*W@3@ynJi!5PFuKEJYVI=Agg-N4$#y*?NsxCmJ0sA1Ps;o?rH|n zat9<{vbUpUal9{MQ@_j=@H;VTm+WjZlPbw>K7PWrr+(Ow4HYRk8nrrriXQV`D`3aD zVkTc~mIaD=?=ih-Wa0lReWXpXBQ^OBXRSCgJ*FJqcGyzxJJMq+VNh1ER^wzXJ-a(u z&zA5k9v@ucXWIhRvA|YHxjtL-7)Bp->@9Z88um{@>jIE%X zZ9RmXk5K5U^lXx*N)Mdm)oD9pUn_({M1^4feA<&+9apPoLyc2Rl}keDz4X0? z(=Cm|^9HG9cxXyX1+^e*QOj_x_`_*xgwpBc`$9E+JWcz&n*_2I*(`Oy06gUvq$k1v zPF$O6fjL1M`IC3Bx6mr_8f({TqL(ZkJJ@-^;COnhNK)Kg*#l0sqXaQ*9nms(Wj-Yz zHo$_hs|zR^opI0BW)F1`{>-jrgxlMxOM(ljrWNrAL2X54OjOvvc&0a43l36mIfBhw zKOHY#cdI^Ku{#clVjb2OkdQ;MNZo-FS&K-L!;zrKXcrub$X7aq^+k};dgWqNMuz;r z4Q1IY=vKVDA0w(0KSKjRnB;wN>H-jTqqd3=-{S0;9)E0ZLo#!Hy- zi}^Hyp@nw78{2ndVek9i&iB2Y`x5x`4AA!Ud`5vZ!%`iWf&VX>EHmy5Oc#q^MC=!Otaa0}4qa8?4)w zLd3{M>9#2>v&;(0f4ihdzQ#&xz9#)gZ2xdA?v}*1BssI)nlv{1;%nQQWHZ;cA26_W zKudGEDT$-DSNNwyIiiArV>f}(-sZcL2vuYM|0wW~1KJPvv5lZJNj{L+2NF%m4<`1( z9Q5pm4EBc-`%uE<`(Y_vP_`p9P38UcIOBY;k8}PVOHR6=0v-}63>M^_Kd9(0n&ZiI zvlRbN{)9ZNfsAzWjV(c2xJ02QON++Xh-4q5u{-m|#%kQVZLCmN+mnXGXXIf181!S`h1J4H zCgZLO*-=O>`W_@Fz4^#6K{j8>3cPZOb{fttUsbmMr5ag+^5MXso4%^T-a<_Gm|z1q zHeiRnL<4rT=JXn&MjuEj>CS|$KOs6FPVB=lx^?O8iS2Zb$Ks<%)Yr0dY558Dp1?~) zqT|z(9Fr#r1ndNP?V#plnI( zY09nt`n;;WeP!VFL=l}<0bmKX+Y`OAH&WRfyW#VS(m=kFn4~EERN@-BCXsBBW?8<1`VGZD zmt>1rJ~PcpsuE(^M)<*eVy-y;g|%)*c4MT^k+0l~mo0_Ed}fYpkUSnFpXEqCOTALi zNg!~Ld^YkcNG2vzuQv11*+910tLQ~8?iG^R5NwIm>Q=>P@P3mrErDn({UCaC9ntKJ z&ryN#LiM@Qo~XONN#Usny9D@_*IfC|jnb*Y__>iFIA1}KYCRNNCfCgiRAVTXw;J%C zcY~5S-tp_ZP-O#TWjq_F3iDGn6)uv`pMbeoK716K3SKUX(zD9h*PQPa`1iXo0AI^Z z?zIuPL|$ryTZixfya5$a#t=0OLYT^Lv4QrMCEAD4Qn~)VYy(++-ooM&W+|gQsy52L zI6NC0f1hIs{99~)WBtrVYk1=_kFmG$&zGX?r-B&F^ZD5RpP!Q$fA#sfiJc2a4$SYP za`^#q)>%8^+#LiE$ zPs8j#n^*6&c!A1lR4-)Tn6DOgVSceBy*ROpRYwB?p#xtUE=lYX|MDG)xvln{STnV# zyely--<5QymnL@UOTK2;MwkF1);p8*@*sX)?)6-j*kuI-@2ElW?!?|L9Jv$g6^UJu zh|1rS*n4;?oL`ZoyMgE0r$sN8r0*rRhFQ5Ty^2sVy9#o@DY2VW+%D%i9+iplSCC$v z*wt#~@&sXfHvoK}fWt{-h=jy~c5>?+;gD<6_a|Z5xhApqC)mxeNtDo<(SE2-ky{d< zq$-I4BJiU9gP z_Y$}Y0wyTpE|H4-Oug}|YmKAmRMY#((KI2u0d0h_#~rXNCsTeu5UrIbDSxjePU}Ow z;KDsbKh%FlvX}Ad6Ll@UUS6T9{04c1`bXNVemKJKOnZCWL9cU0_Yrw{;u^X>y)m&H z8N7ypqRNpPBs@W{!~F^m&wOycUGKb4WjsXBD{=-&M!Gh!Yefe)JEz+r_t2bkYR`#x zs8{Jx2jCZO8Sw+K9ZoEcrH$Fjhu^*vs>{Sz(e%o8al@_9-*IzT;jMppMc{; zgSVql*U-CjXPxQ0YbT!uUWMx>rr#4-Hh)-&p!c8F zQR>qlHHMXYZ~*1CyM8*K`CNqCrc?HPAW_iWAKCpmboj{@(xraw^Mp1cVn#)hlz)|5 zrFh@(H=Hl*z7b!L_gwl!?!HCEU-Du7qTHn&mM=&6?%`ps74!i)M5C;F+LxMK2WM_; z#h)vD`Be`<2pAPXd`;Pj7=8+$P;$lrmPK1wGx4d&7 z5>b3KNsSCcxP?2#e8WNePbDm>Qvn{srqRaX@tgks5n=UVef~)3!MD8!-}WASN3Qka zj*rTXo-+6!?oqZ|lUlD@VU&CrI)KpiU3uP9&?F0dPicr8#P7=woyUNpWj+kt@{p8> z$M~}EA#vb)4$=?hu-#B@S;$mWE7uQzic4cf7gcjE7yMXBjrgV!*s^_tmLN3SLn!>I zoQ@s7$0D4LDZB?5{HZWlC}hbz2DUe(Ka1>V^|35;rvtKR&yV+~=f|UL+S>LJQK>0zdhwsc zH>}S%(be;}l+)>Lc@B}dGrQEq$2^o30`TSbcR(YwJQ-QZxOtLe!vzq6MSNCnw{Kb@QrKr2Q;L4%S-W$oy`qy-?K1G#~Ezpp< z6(`9{Cuo%T<`upI{Ph*ob3X;Rf1{H(y zbB3cW_)eVupe~#ZKoEj0gNbVt*&vv=%Vj=?aO#p2SNhw83g_LQjlxp~D#r9Bu@_WUVQ1ZjreyFi8{RAH`Cq*=HJ2^1av>?;pp;-#SXd zW1)nDM1Km1LJ1E+$z!oS78?7R!2MYbC1e2rB|net=Z=zJ#P$nE$)~tdos2sUD@_jY)=6w6E?Qr3(d{wd7q5aIpVM_S+qPQnEZF)MN8RR$@igw zNevf-J~V%b?GJHw9TNUMF19@#hc=(~vC$yRwWoF1%3S&VJIN07QTt#Mq^O zj*Y*6ir1#k#5TvCaW$T3_1Ccm<}b1R#RulEvHjHthRj5-gvcrwEj0eGm?lBL&fpA! z<@11M&%+sBi0uV}(XEVNUP=ER+uvVV^FEx4 zdtX0FGCc3=EwSC=ef{VwYfRdC27RaS8N$b0G$K{9LUccdSH5a%;ERZ4e&*-LWBYiZ zpj%0AEqePzY@f*KExiq5tN&-W#s7O^5(){3H%KS0U`;J&L(I;d3B!^UG z2+`7C(po_ryM9?s3)YXJY$I(Ew_Y&&D=Eve3P;-Rti^r>XZ@eg3%s`F#%g zeGd8kvEA=O_l4NLpfdLoe^a*Gl3H&h3-Mu17W!grUsS;fl7+q$8-E4jmt*^~9s`PG zp)fkj(+6UEK##vfwVJ74a*!U3?ZL)!%hIpJ_LX|MegFhnsOX|<&Sjym5`L<08i6g_ zJ+vgjWKW^+Yq9ZH@O?eDudDE$VDM|gU|klv4Qy{n|1&oBaK#uFvQR-&4b6Tdwr?(Yl~d${&RE(=|!DFVTwXBnfF3J2|P(kxF3i9*Nn3=nKLCss2433KR?*dFnL_*QJ+ z5}-FH%Bu4S6Db!(f>uY|_C}wFufUq%v-TC2rVGF}J>8p~$@CtjPkvfUyid_THb`m~ z_8kMGLbDxm`^-%L6e;`P-fNY$`On0hy=W%Ln@3Fl8H8`VLZ*`h+R6B@E{yyoB59nz zf7a8Sl8cU+^*1F76C$6B>^VWxPPLo}+Aa(}A7L?mo{JYEKz8~c2Iirj&RE+%N5wOEv#5jO{{yf3fEO1^WErF#j)!ZEI|o`22rIZ0~TgduMF#RGAB7 zC5ZY&l8(+$DZs|KAncyHqgM{J)e0Oaa8pV!KR_0Y&paAai+od2E;K@ugI& z`G2W{^zPW+-B=FoO>9@x%k={w%>SZ`syUzk?~U!f`lb=svYk&$qT?w-;Z?EmS15d6 zZ0}RyDPZs_VX!{`KLNHkq*upwH9_)uuZ#I#+Y8m3eSd84_xXQKY}eGjP?Jo}i|X^= z6XJXzwhyS;LC~Pi3-XA{55~~#2N|Oe#nA1C;-2){*sfKv56aa4p%}_6>zX96!F@n0 zik!rIm#5dqcD;&Lf?@U*i4;=KahQp(+&9G7WrN2e@fvH=8?}=2&keqmeCxk>g zld%rJ#C3nNTnZ*)A)0`EhJ}=nS50Ca5+nwrm>L8^99jgdvk#*nhSk(k>CBqs++qp) zB+vb?kQ=4O-~e<5HB9E9i!z@ym z@KaN|9KpWNP2OGFql+8h1+CF z*=^|!kHBF_a4fBA?$GG*SL@`xNr75KeD#8|dds6C1iMtdq%0?T9u;vmrRw=*Fff8g zMOaO#dRbWr;ZYIqQmVdF+vz4A74eXz>V=-~gGaTT%hmJB>_wV+R7i6rtwIX!fWXN6 z!<&LfM8+EhdhmwfN7I|Qi*W@+0;T3H1=?_o;zwjaIWkPL20&(UCB^l^zo~3ZqErs; zDWm+IKX+A+5uh6V4t{WDpmV_qr%8i7l85*&fHB>TCIVn|PwqBW3iVL{BOu9Ow5i#R zA7%{-xZI~}YzP{4KecA!>SB&8X5*qR0%xAu$kPY48fQ!thrF}4;TNmPF*LM14C)%z zqrq@FC&^kSQ)=WoPs$sKE+n)XNUwq z`EXb`qNr?%J|t3C-00x&5JtJUq(57FJF^R-D$WlOMb_*`CEdr#FX3RM>;GQL+BK`l z>Y9Cmki&IKkaAl~JiB+ioD660ilfcOt&aP6rFV2;Gf-AAUW#DH855&dFlnIGY?_wpYIz-heP34l1 zK}e|u^KTDf7hSf+;nr&?YZnQu*{{MuDfm&a(O%kBT9Jxrh;hzQ{UOQFoOGT`iSv|O zs5Q?mByKNn{LXcnJvsesf$u^E;`#GZcjcQW*p}HmB{pK@d9f^=r^Jb!xj-mC?@qv* zvmI*2dCZ-pRXNnG%H<^%h*OmZXR%WD{6B~ck;R9(mqs=l*Bzz6p$99|(ez++(Swi< zZz%?#Iq7`w#r*Uj|2;^Mb=yILjMWR6W%lmo03pEeoD8+d0l+Xc&vh_Z#Au*9J*W_2 zY(EWY4?n#tSrRAMZtLWlNueH^?p6ZT9{d}-(?!`>0+d3^lkgE99Q8LK0zx|*H_4@f zizpqca7rTnKJs8I!7{iqSeN&Vx5BXaKjbSkAbhf`A2iSythMhcKO6zNFmF` zPnUtfrM6sLdXP`uL7KW+r{fUSyfTDhPqvksi|)K?E7KnQR@CY$o4gYr$yIjr*|?{y z+@2o7JUnDAyO+s2KTlz6o(t@l5Zc@$sUxu-P4YuS#Z^006+8R0L(>&y?j7w_9ZpEH z__N^>hi*@YQ1OtpETdH$*6rNdD~564jhU{fSdZo$1P`XF>BzErkbOR%p+z)#IueVa zjuu>DM=I)U6ooaD^Ky#k>|qXQ24s?jmNPX5GBtR-NiIC$Y+@y#Q`)(3q?8U9gtv`t zD1Ov-O$u?jag55i;z%jj)b1=c2(9C-XS>e|v`0(_+kKhn9#ZVr>QGA&6M2*v$!eV> zn?-*Lvyq&*2ftxjA;5;%8s&cE@C8m(%su+@yBWYmltn(yNm8qT(0?t~gO-!ZUc5`EXnR@*ouYkhV_t`AJ+VWFCxaZsLZGDAZMZG7d{z$z zDcEY3NPwf2Qs!rJSMY)7gLdrwu&iu=(M+EfhL1gVDu)*8G#GoSFQPmGp^|3Ob`bMM4Fp=!y zKrp4w{B2yoaaVJ^uy>Rg(n1jOl5NpKP)Dzj>0v?IIK+Vk9c}|PmJ{r7af-lbIhM4{ zJ)Gi5o1g<_kF=FyM~81u=ff%HuSIU1V3lrPg`HEZs>rV{UG6L>q$6AsDjsA@R55`* zpcR+%GWS%x)CTQ@KQ6UpTI!Z;Psv1T9cx*!2~JiLharKt;T0%1y~8TDTr3FLU$i0S z-=i81wH`av4{hdg4-CFVD?ks@%b}dKQMTpbQ3V&wmLOTgMW%-U9-{e9B$P#bafr_5 zILsCo=QoRYy{kB`t;-HunU07%odpg~M|PDU$FB5XXB-C;pn-P`QaIdAvs)oBn%!gh ztuYa}7C??x%HOfhKpM}jgnW>4?Qg33SO>_n# zz9j|{!e_-mn#Dl&K(dE{OraDE1eRq}*2A)z#Xz*w!a(3iz%?EQGL`oC(7CFlb7Zzm zb$*uTz+%>jflP-aVIVVXy3N=qZl&YaXYvpRGRtP>41}Xy#i%?iLJVZI7|6bL20|!? zh;9xVjyXL!2iq6KIP+i^<*C}?Qgano4wu@2)S8KGj$(jTtcGJLw(ls0U`2XxnG3~y zz(62B4s$=A2y210Ezt3e=n!1TAgWX3qzIdRU7fIt zX)y#gIV^3>+9gL1a}t-r0TOdzfSLn|4{IdxVT~j{njP3^k04WHtoz=WmV2#{nlB=8 zR5$=yBk}Qp#EnvrIP=16J^ai`T(g7rgTOl)5}yExj}Iiy8IjyJaoeB7CkGNIiLdRU znL{>$^~@Y6@u{r&VU66&rrKWXMWbTq2>I-~>I4oS)fmoTz7draM9k@+XU~8h=|os< z{m4_-_apkL#~8OXezh1_7k*jw)x-h~;=xew!7QgRt;Jj}b^<4cG>n(1POIgCS}mDl ztY-O}@5OZ*XJ6{OQYh4a?=C2Pb9Tc&*^yF7eqitS{@j(_!~q6p?0R$C;-6otTqGDW ziAu;T4k!F7hn-I#_Mp{`UMUkPyQls*Zg~9J`s1YG@xArOP2q8NQx4;8|K#9G{=bj= zUpGMh78lFE|f8G^W*Z6*2 zd?0(65bn_1{M_Q>(AOtgbp=9HeMU;dW-V2bDP5mb1gMHahDr($R+iVc*vgviE&Q;D zA=fu!+``PrXQe(oJ!+Q9r+HVbra3eS%Hc6l-ZgdMQ~}$I;Bl%d74@U_5CJvk@(SXF z6fC9e%54!zyb(3>H#_2JsM;G!dyVpxi&I0jq3J+z)2@DoW;N*F1)~f_-Ym~O^{|=^ z5>~t3hW73|hePuqO#l>N*_Y0XvY(t2RUdc7k`kNnoOPz*xs++1vWfaws)J}{Lm~Gd zc@3h$-|G~Yfod^VtRg?Xc1$L$go4!T5KC(SY8=MI(6R}v4zX)#j0S}}dWpDJNMnxy za))MZnQ(L zkysp#Q)(Pytt2)kCxU^Dsw^XIHb`4zkx;H-3nSf;6X}c4F4Yhu6Sl@f#XRb0ADR;> zGHD|*GLP_OriBi^Z6H$7#t?Ghs6NlxmPHNlv9k_nZ!T2jEKTUglM+1H72#xg&*?Sv zsis!u>|+5nTqMd88nV!pvUi>vk`%FGjRAjs}S{RCmRRsvv(*fOL?Wko0krr$PpX8>p7;jP_O4 z$t-{*#>rZ^L!hf%eF7Gp`ZC+O$139PzroZP3p6Z=u9MZ9%Zi zl-at`|AdJW+l8R5_(Am#CnmM?i(1gC7z_L#o*t_FZFJ`Vd-X+b}$?+BT}qEpANRaEk7A+a6wWj%i5n)&RAF>SXoXUFQ}S zROgnq1$Ay&v`}Sn)l&Z$)WxMNZzoMk>c>oyG!WOG&YQDuRzpf?p+j{KCsFI!;9tqM z4J0K8u$9;!aH$LZ1wf}q#cbQF4`4S@h&}^l0@1~LiK~p`zR{r3VpXfv{)++I-}=Q# z<}&!AKT=VXiB!Tj3O-g+jTOIZx#B|xDOfZ`4%vXYj@4%s1E<39&=f%!00j1dfY3`2 zV6N_>6O*JY*492zLyd124O}zy7vDle3NjoEYJpE(l(@#pSC>}`b;dx98p*K_x9c9y zj4Oz!QX1CzXKDNl;m}(BO@2c?xy|WZquO=W49pc^56mS!8VFEt;>sP)>}{??j<4S_ zDZ%|_Qlc<$THqr?qJ&^lVdl)@7ajkX+UlA2UyCk%k+NQp@(C{dR6l@=73d4J(Qdf~ z(>D?7QFA?wRqoJSRqflN|E;_E7uQFtQdRd!xFxk8_R!>gT%b2kPHGRjNXDco`eE#jtti$$%v*4P7~IRZxCC^f<*2L2 zBo{FfNd%X4U5a=Kk%Z_)BC8L)6E|!kUHgSlWzsyXp0-ver#Xs@n>9UM^w+qHel>5_ z|Ass5Zxiy4+>Rrf`4E%kS3Jp(zGZK_LYUC5n;K&Cw{2ZnOW zippVs?B&@|hgj?AAT9MTJxfk-4X_xYS~z&$fZo{2Zxqeb8>-PRP4fJ2eF|{=G*}O- za|h$@Lf^uJpyL$vS?&sjWQVYWnhw=(`HQ&<5ZN@_+ypO}oN$J7cj< zL@-FI8Bn8F^WFg(+6q+)U6kHZ8}IQ5lG;Oj+Zao1Co|D2Peb?kd@cB|r6ST!HGac& zJ^HW}O1C_#1@-lia>QxVgJlIv$vq#rJN8 zMRw3SQ#d;j%qUw9v5%@+yku7yXik zDGUc|ol85)j-o8*`Q#BSb1%1*J$#Ow9etnX{Dg}pG=p6tzgQWh+$ByaD-v7bDR=8; zc8WC}nd*Yo8D4O&9;o(qB8=Xq(vR7+0QkpRDHZuj`&evU)XldXF!8mKD(x7ruIwr)^+T{6BW#Q z5{ZQ)1tferJt%qi83!ClNca)pag$oOIA%||phRX{^_T_BAU8_9a#)Vr7 zb_)~VxNv{L?x*9#8XxmZMCPoSu~y- zS#NyACB;QehrsF#N0;nqpEOQ%hCQ(abC;Yw&MB#P&nbmR*ywn(C?>g}WIQ*zPYZRu z=`Sy{DcO@H6?(5^ zJg+ngT}CAA&r8O0jVIx61793lwqv!uS6>nN=d`jMap=Nx%XTi~sx!$c^p5am*&F|+pIzcRsQN9tvW!ypErQDNrj!q1 z$Ff*_Ld7N!3YA|TfWl7m&w7hiQ!B<36HfE5&aN1bUlL3LMdnnD=SqE3)li6SRHGn< zh`+knbFeImja^u=g}(Z}tYVkxa1JNp6qS+Gb^<1m{gbf-FZ!w2{bvMwfY}eVL&fTc z+0X2-ae)XG;&O$&gU1P5W`}hUv*_pc%W*;RDd26zoP)E+*sp9%M`*XhZOk~of*g(} z?u7XHx7KdI?I6|!vF6746#?WCazb3(VZXDE4#GzK-a5t+2cpydhr6HZPft&5oOcLO zA4ERg-c6qq;X%K2t0=OSAOy}pM{*TZiT{`F$b9>~q@!?zeo$fERtzU}CDtV|UD65B z35iW`S;+h+jgWKL@q#C51xF`@aKIulUVm(|i?K;xa%{OAFFr{Ui}mWaopw#r^+yg6ia^!r zo;^dp=E`>GKZZw3*h?;%GjM~JcluD8e~#X{_>#+jhlDL`XxJ(nNo8Aze&@JF(fGJx6Zos^I3*w&SbzdkNUFbLI zly&d&Me=_au!|FCH2!Gl&z1Y5lIKBLeBax`e7^u`B+0gypzfuXTwbxu8B2Bf(Rao; z6Vfym;M`uZ1+etOq|W%`LL@#x!zl_2XmVMSUn+9B+}qW6i#&t?)WpYqkr+je@mH|q z;RH^P3KvH|Ojnln5?fs9ZtW*|L(2laL^m7>^Q-0UE+m)A&t1yXUdmsV;P6h4+CV-a zu91(s*P&w~pm436+y&w~zlsPD%XI}&1VKLjpFGz&2)20u;U2CL1eC7S*}}h3-s)6Z zah_h8*h-Xwj&KvL)!@BZe&u#k#GAY^VU@d-lXZ(+#Z~>S@++5^zfCE)mVVz|&g_6@SDP@!kw37!^*jl1QBrWPeaDvoXbSL>e}#~&0u#Np`i3VY|;>*~Z-Cz7zwJ1+~}7vkAl+U|>@}rsu2c$k z{e5rZtGT;yZCrRGkt;Y8&6|Q^Z$k99E;)SR;>!6S)c9pOC{ z<40%oIjVPcaSzDf!QV8*J*$4-kcDz&M@53xc z$E8)d^nk>av=gTu0Bk4#o8VQ%AvxT2ussBGNxi8C-SP6F76K=v^4pSHf}b@pSW=w3@!shOS6A%n3Zl@8D{=Yke4Iy^7Z-T3I7??=uZISl z2E0BEql-ky-rGim(HvM7Rd0}|DWui`tC69Nn5Z0F7zrPZZtzj;kCpCKye|hF4&ZFq zLE%7W+5^S3H>UWQs+tw4t#GDYnHrCn_NEjkecOL@xY=D)$MegtDqC5R$Le_F9NRwC zaC3!2xJ-Skx5zbB=-rmPpdKiuyCF`y zv$7J}#Ay83M?dzL=jefv!)%mb-<^AvM%kDzS?^I)07w1a)Y|YW9UbnI&nP4sMe>;F zIBKH~3J=QZQ^}fNG1NTds6CvLfXII&C4_@;eN<5%Y!u6PiIT_S7c}M>g%MBztc=e( z`p>0=4{(5xVs%RB0A)W9HlF>0q6N4hs!REMUMEOar(rk7_Op8Dn89vU&XnxJVd`DI zcRXC{i;68EKreZ;0NVX>N|XTV*+nFOCB^4m*{`Lz_=_x@SbUvqDSxk}9BF+e4PT>< zm-Nob<*!va^1q9H4d;Dn#Jfi2ZNL~BC9Fqenui!CTB!0v$j|in*edr+Ui}5PmkFOu0%~^(m5-0g^)ku5n`j|hP!jf zrAVg&q7f@?8rCBZh$eCo=WK>r>**a~rhi1VGt~tIIQ9_!hQQhX?-%nF4?(JSddN}o z&dtL2t6a}@zjsxT5SXP%TX_P_0?up&O|lSMr6O}OJcj{EitMFrb@Z|eJemM_U8oS2 zKIFL^ye(JD8j-*@*Nx#9WKk{i=v-2tJSwQBrg;KFBsf+*?vw0l*#ZwwKrw=35)+fT z$zy6!tV6*)DR~(m5YUMbL#~$L&y0sH9}w68S9?Ya(KIP}B_AxwP|KEJkGopsN$L#5 z^j(_OQOgLjM(Q#cgUG+vc*hV7m>1MCV)?caS!JA}`z|MIY#`n*&$YlL1n><+ip;e# zVnWh~xZ^`SvMDVY!c+r6*7rW`!u(}1Jh6vkhu)nTkEf{rZgkeaC$oDT zuX{7Q*HiAx>^`?J-%nxMPjCT^u?K|7J@{*LpjXP|gEUV{!9#=vv43~ zVw*l9(mev9AIt2qj58;EyRpmqK~mzLRp0`YxMw5tKbP5aUi*`oJ?V{Ko!M%t)IRYb z4VK3}0|Gvg*%My$smz{oM4!%#2SlIA>=~i?Bxq_=_;JjA!GV zh>+~X%y^nb7y~b5#uG^+@26#%Z%rh9v$;~ zW;}jDI{gA3Z)EmHd4ybrdOzX!~16hM0A2W;}oMEWUf2 zLGnRnJh5~y3EB@cK&tS^nelw6!bO3M%+1mB-FR-XPMt@g|{avN2s*Y~>GP5sx5UE;U7LAi#1>@m%iU|dqp#4DoY7Y|&Dqs_} z>0MtHi%u#S57d}kP?AknCPhSpV+#CKvyLqo&oQ3m4W6Q}lyh9cc&2y`Dd2Q`!HzF< zcU-kTX{N8qPbk<41&Qye1)B;^^{F#ieVS02(tJCGH;>43M&soiUR*-FCZn2g`*Ap_ zU?&yozaJY;F4)P1`s0^8a!K(I;go`^vQxZuT^7zL6jg^nMB_d1gv=lLZU@c z10}nl>FovM5l!zX*c}B;i(i&UhdT>)Cm%*E?ov)|S}EMkkpVURo`T)w72R7f-tPsi z`wB+xeeAnFP_PH|>D_G8BZLd~pnly^2)h^c@4;k*Z`My09X!%7Klf0^o_G?IR>iUs zc1M6fF_x|zfma8p_C*C-+H`+)}CM>~lSPQx&_O zv>W^lKD<#c4dSgR7{6Bl_DXgx#6USit}NI}$K|Gi-Q>Ltfa_ttn+wL=Ws&)I=kz}TgDN7ztp(#*1f6dy*lnWhEfr`A6`C|HQUa2a{*NThX*wm+)b?x- z4;5^W`uP3B!v*(;^S;MJoabTCzrJD&$2|`Uj~0yQdNiTs6Rrq+pcpigxPpB6jgW^vX?1_RsNqtWj?CB;8K2xw~oJQ+H zMNT~J%=m1jmTebun6nJW@x8Hwwmc4K%%>LPB^`Uxl{{#>-ofc+RH<+?zgu5T6x{_s{5sr4?H$mZzwFlgXqiIq7fpHM|_G+34eZqG?QA zUli*1Q~V3Z@NTAZpP*Lrf+<@cJl*~J8n66R>Py|PYk1|SQs3%+{g_vNDs^r5YuB_y zKb879srl;^Qu(RWN!_of@XAl6PVIg@hgW_o^^ESoQ*XsnjLiuPb=vr&5=9zuwL(Kb5+w`}KZa`Ki>qyI&vYm7hv|xchZAul!W% z)7`JH@ybu7zSRA?hF5+n^{wvLk9p;%QrC9Bc1?$69eb-$j%D?gPw zwfprPUiqoiGrC`A@ybu7&g_1j$16XTdSUnLB3}8a)CJwI%XsCdQkQhUuHcoQN?qRl zdONTDRO+hk*ZXzjPaPJPj)de(_WJF!^bMxUbvYSKNaSihYSc#=v-&8Fs> zjo;gTGUsxoiJnrlQ(SjAwP>WB3R0&DyVHto;S6H37a8{KzM>PboT{nSXBO>D|KhBo zo#pL48*>5WWQaVg$gK%(GedMucd6{voTKVk?@TM&H2-*d(WavujSVx{;&mu9i#8J| z!r~*Q-gAY;M+md?i^g+qacsD*V%H&tKvE)b7W=_Po7EtgT0FaGJmk$03?X{~)`McW zuxJ;0KU`F_i@dUn)kPOV_qj!z>sj-Pc5&WC^XQ^W1i>zW9G9{`T;#1iEQoz{X`@P8 z;2l9SeYCJ>mwHEBRy3Z4o&|_GfVjM9mwVnK^rCe;>5AA%SEx8=o|yudM|r$h?O$9R z9j@fyhI)bYD11q$iC4ug-Nw6g8@2xGqVZfs$1N?|QhhR~(Q(^|7R!pZ%xQm3(XMeS zTwAnj^NzcwNKnE?$IbDM+eRIBUD2-dkCqd-&^zpUg5CPpHx%s#b=WqJmTe<;T2ZtW zUVLTIc);@}rPxhQ4j(l)W3DcSRYhCnbiW1rwu8G>U9t)?-&VBSJnMEero2mTr%Ub- zMecx{cd3lr#>yh z=L^bbipKK<)jV7DLH(?X`#^u(KO`B}c@BGn!+f5FdeNR!R#sUKH>p zkwIR=OA7wvWL z!Z(Wc28W==hPR6L7O>jF+eDsLkCV)<-8(U#?N5J^m2!vO^U zyl6aYy=7~?-Y<&A^M2m27Oxz8$=?yTUip^|bh=8`Rnp*@P%<8od18q+Of1DVV1JuZ zvMGML>$s8~=VgyC+41gEaze>YP{AplJhfy~J^7@PokTJk@7JY$Pc7k6F{KoCs3N-c zew^NI7_JFB&5nOE$SAN*+@(o(X<_ zYeGpqcq}L3lnaZH&UI2%`_jkQnI${ZD|f!ZaCuhA&T?pHmwW?*KQe4iE7>$po?bE@ zQFw+ZJVOm5Gv3apX>(D<7D*9?72$=m2^cW5WHbGI-?=3jFx5}zm5k?H&ODs&X?DI) z6PZB^D$Od{EU#{M$#_)VoRab&@P#FtQ$kOlg*(lKrE1V!t=-jMRI-cIAPHezmNh0^ zTr!?7ov)x6(C3zHu0x+!vU%PI^Gi0r1k!v#{v{>jndj6Z9~hUGj7POp`BZ{qLCF?4 zjD;mz=rArX+2uJYzb-r%m5gVhL!ksvt|%FgLlL>{9R}~>5`SE{Tv@WkrGRm|6#A)e zd3}PYcDj?D`j(VziPv{k$*wBZk79dODR#BP?N&^=T<)(e8IOC6 z^wS~5>-gat63a`rTwQowNjBE&OTHn&ANBbSeh5?DbtAbH=?p74dRej+^xMjkt@LK! z#KAK`@br#wb3D0uvsVrTnD0AwLkXXu?}YC$)p*J+CA-BNb8E?NRo*S7@VzScIYyDU zftdKVlJUd@Wd? zyJUAOaq}=x-%!@iiriDOdpO%SF5FwPd%=;Yy8>kQ)943E_5j6nR^-8wJ?O)7xFXHiS`1Rp$AVpHO&QhRt> zhUcV7^qc zmr7w^z9})#`|(xh3&!?qCF2>G6A(s!y=1RDH@{J`H=vqwNN|&5K2qOQ*AL{tOv&CX z*<1Ad+nnHb3cmyEs^>kuBfJ|&^1I&iUT0nroWG`IJg?>)slI!^WIR2)_irWR@f7vU ztIi;6OSaZA{GenXc*=(yX)kHw`lw_){o2CE>gkV#$=XsFP$ZPv=3E6uL$y8eX^HKL zPa*PWCHn-ip|dWZAvL}b5x;=se=phJOSls7?fR~T^{=x%F}Y0C3AQID$J4vVl)e$(cY$y8Z z&XdZ<6F(%kCxnyB#&cr1yOvYR#xtP1?@le-sWh1cYCvnE-dPo!CBL4=A$qqYgo2aL zEtjX4jYoR_8D%>|=cMtxK#HANwlf{Kv%J7raP!$^<5AIb%65)ODvPVD{nN@e%}Y-& z+w^iM_yl-%xy~K1Gs-r@4{**b+stw}uWaX)wR$_hZ0CFb%;I0t+QaO!&GxK0Wt&xw z3^1o$4HpQ4T>u6bs(Q)&i^|6PMHpx=F5AVFC7n5j!gI?u*Q=ZFFZ9kO<+zHxv>aEF z3(B^j92S;sp;vZU*)DTDE*BmP!DCU`7J1ecWxG7b;|f4827oOFjU{CR*kX!aRd(fa ziF(Bq&a1qCNJh$EUA868XiLk+bG2uElTTS1lx>-3T~oGe%ImBmuPys3@>(xVQ|OE9 z%6473zKJ?|ep#lVZPS+B;*ZK0{idg5(*I^BT8rgqzC*pF9Ih`r3taE;mzQlh4HkS7 z;F=rD#&b60T~W3b8VJkvNh3-H6o%eyVP)A?I>*c{hntiXZY~=yH$$0K!dWxYEoHl< ztXc3@rP!@r%_=9*ZQh+U@bMk zfigBcCn)wDO@6*?&r?j(-wS1X!Hd0EwioH-vEik%@jO@V2rsJ`KRUxJWqXAWH2u9= zwpaaw*UI)9L>(JmFB>Ia=Yu!OOn-0Csc)$~NuA;Cvb|l_^!HBLNPP#Mez$Dzde^M+ z7gF9+-`RWRapC>4y-yy;V#>y|2B2%pwzeE_Z*}Fh)w}TnX9(uMk9gtE>70J3XdjpD zV@Rchi{jsgg8GR%ytOlYTDDKh_9^}SS=l~wvVLB+&(+_a-Vwei`>y;K-rrtT4j&=$ z_pC7>}o@4?l3WIJ#m-S2Rc`R%~KL95|_BlPa1`CUe@q0tMQ_ zF%{;$V=AC>bVc_tw`$%yw!&ZLy(tyuy(ze39LJ$)4nAt$I}YE0}MxS2AM5>*`>C7HQ7*f+J z#uKTAs*k5LiPI}K-7%O^u^AN&keLpkf!OP5RXyF08nuzR-_LuZpXjiz>#0{o&$@3-pVkLm2xhr7|(pqAqAW-t=OgO%)7O&VpxE80F4DpMtb+0Jblw- zUMe3?PJoh=$0Bw&&Oc#r#Dp4=d^{ohNDe>f9JV;^9oV+g9q8Az0(Fv~tU5`T1t`x?4hy~?1}2V24EVnvB@YZ0q6PNi?>Pj~ zCbpk_k4^2AQ<{+QjMTm-YM-h512kQnmHJ_a@2S^;ewH7AqSTrG!e`2XNQ1RXnvn2U z1`+p{QC;c;EHe?|3lb9Go2CN>o)0`1U}9M%{{w`qyn&cBgvc{mbr?^oowjtE3;cSAXW`>&aJgJXlY%AFTHoW<#yrUr&f& z@N$Cq#Ym<1SM+Xu@J?&ZWlV3aj5&t?rUQzn@B#F8f>$Vb^cEg|4qx^7Ieb;m;rjQ; zmWgByw`}O9puW`cmfqjgyH%;9Z&=SYL;^X9E?gT+&_?x`dmRYi^NHayK$pEBk5q0J zQ@LlIqA$t&fZUiu{8=_aIdg#ns1EY~1D^>l^NBkG2rga#PjlE)&H$(lcmsUk&HGSS zjfl`3`~OHV$k|X8cpy7Jwe38z79ROn&amQM3HTiI`9Jq}0WyFm zRKtVd3$OL>x?)7N;y^$a^zPymrrdzONQyWTR26Ka2ObmTN$?L1l=%cKVWXpUtq5?0 zwsXludFiUrljS@h3LT@1K{OOM6dw2#@J#mcL_Q#*I81h+w!Afnc~3 z!9O5@BY?1vZUx6Xz~dd@iMmWAwxH+em;cGs1aa^Qr=|3Ej#d(!@SnsG#uMOdAqhW5 z*@7eSG{=F%`ZGAVK9=M8oXQt69M9Kf8Wbf1o#i|o(pSd$I)qP`I1GV%+}F- zGV(cMj_%Ho;OBfkNgT?j@jeB(Feeq6gafmSdBT|3gRgodA!wQ)={IKDC=J4ZLq zR3TXNqFdM&UO%x3sXaF-53wPtdn=c8Td8JBLkD%?R;qdHSh2zpZmmQ}wAGlPfSxKH zn~nS@xTN3=6BUq#!}V9vaC@Z2_Vg8WWN;B}SUtI;eloI%KB%9%T5HEP4qxx$96r2L z0f)ujyEYEF5^LCYC5o`SHtj~e8r?ezgkp8>EWCCWd<7QX(X(|29F@RP#OzchBl0?l z4XU4CC-$T|;~U`jjffxoxUcQ2nP5NLPi2Thtd5NL&hM)f-8)apXd4ZtEn$!Z*#WG} z_vIc$PO|d0A8$s$Dnhpma7C#mw&WUmeSR>@Kt3n>I5pNZ0KR44QpUIK+sfe5`6#%) zP0*HavD9Zfg|~xvvwpx_A5(zrx&xxns)a$`NE$xUMhZ@yBhe6Ll#O!BAr?yV_OX59 zVd$@iL454aCtPT+K?sEqO&t2t$A`FFI>f~im)9$a5V%gIAJ`8l{aqU*O8b49c#m8x zCQj^-&hSI-oTt0~qoEM%#Q1-V4gcwa=s(pT5?Aqn2it;U=B1~g9Ysu_6v~@*I+ejkaB)yzp`Jb;4kzU zZo&?;YCl*164F4Q$!nO;xUxQe1|mn;5%z0+_G^8H>u~%`_Tga~4Zn?};deL;|5n8q z4a3IBo7jf&voX@fGAPI9_tg8qQYI^?VHn%k`*h{v4@eaIgJ2N)M83y9zPW?mI&;7b zC;X1BmzUv7Y*dV_Kk-Kc3nygS`X_1Ce|AIcpS|P$(ik#F(lvkT#Qpe4`|DT*Y*172 zLgphxn*TmpUdf`&@fh4fCuwNjx@* z>&@eJwY=7wC%A_t>&=tg>-i*_ezJU#<9hQHc_XXXsR_QwT5r0)E{?ARC-57&Pve6# zJV=GFH_w#wu0A+RKD(0LXUlUJZ(|}y$Te?T(k^FZJ~^8&v0Y&1V7YghH zWc9##{=#~b$QJ{NN--|XN^F*E!Lt+NIS-g~Lfd6>2ac=FWl1$$E81NPHLsJ8FFP81TXY$k zX|Z_|0jnU5-4qq4o8`x=+HcS$w_@&FQ0lQFjd%qAL=jkOANk2lD(R-xt?~+v7o<9K-zLxCMn0svo%K}w?QSt{mApencgTKe!h~30fkubu8_}<6@a1f`f1oeJ7=*qqC0Zy(k zZ$IE2$q&f!puC5pQh?npzhB3d7-B4`z(e{A-Ve)#S9D`9oN~U(7BoM;)ml9^ZCt_B zqOW4SF=EjcJlLB@4g!u`c)1O!FjA{bT~v~57GhHx6K$ z(^CJ_7$~oZfu9zFLhn#j9(ut zJXV^5!H=(3*z;DHv}z2KRx_5D3dcF#2#*6F5`x-V2$ObpX=B0?eayW;vF5ewC9@MP zk{QTE@fsujKvgl9s;VFJ(T_FNd`C5QScecK`UBjBghFC>OFYm<9{TbLdGlk0&S)^L zY8LvjF)#);&T698iIWMOr^^qyt58K+)NEO;@)vzGT2p`Xd**)~;%DOTQ6BUVS^I(> zvH}gq5J{*ubzCkFur@nDBEYqu(R`hCumT@#2P*M!wY7%^!*}1bgW?I0eQi{YLxVXc z4P6(l#tv_jRzvUPYA(8s$b+t7+=+OI{>|OekS`u z69bak!=XeWfr_XcBD#q8bN>8v4C;o{5OqU1p=k)G{|2Z3R@JUy{F-mc8)Lt=F-rV} z9qND7By1OA8&nM$8GeH$<2U}DCXYjzIJgZ-UG!V~t^HI1OMWNtzX$y9Rm?F^+!7!W zjY*I?ty7i#kNv^^ha$9s=u0g?ica~nBoth&kKvLUY~%ep&c+D@iiRdY1vr6g(JgxR z#~;PsL^~0=6zv3Z9cf4QAQwsPs2G2gelngv;`Xj29cf*Xt%pmBH;IL1SqpjDypO6G}HoGrlr8qzEF4l0EI+k zBK{(^VoTyVIu_HC;BZOO6MIB7aa>%B5H7Amh*P>FnjEg_7{%ahAFfmyahaxwCZZLp zz;v}TMm&j10?8-|Gu4(B{IXdjAb@d?K#4;Co2GZ-nh=DjfMg-|woh{Id+8d5Fj*(M zqwBf|FJ|EG`vV5u1I{Dir=PQxp>}BFz9>Qm}c{R!(k+9)to_>!FEjMS_H0 zL%c4!!WAKuCzV5mqKs=qeAS?>CSNsBFCD<5Ky?v`Uw{V-8?>X% zbqAYmij$d4Iz(I(z8zx_azI<)5zl_leSoN^_RXx~6HLQ2Fuh_1F9mj1kilVPYA))0jWmxwL+MYn$ zQ$@cfFe9iNIqsM0`1h)Ub+7W8H|Y@du_Leqwvqmw9o0jew!lo0uZO8hUb!OsUqW;;`E@+N|N2=L#>H-5s41iRk945 z$5P>6RqHx#Tp>0K%ZfWxeCG-@s577!A zRuA6q$&dU)v>D{uK*_a7WL3RCT38>{`vbX!wHHFEkIS`Q8mW&Z7_9~WagHiF3%H#c z_&)5OR2Uj%KP5x7s()Jc$SC2SN*LTksaX#h_qg64)4TP?ZnqvgL=tjD!c|xH(%~KN z9@nM?(6wmM($!~+`t_Yo%ll+$CsdEVyfe``81#A7{fxrebhD8_!ko_~n7;*bbu{4e zC+*~bO@bj<$uGE>7#hE*%@IB)$B)kp6ihZ1&W!ew)hKi?$$%`Dz=oc$=U(w}GcUsu zug2BdtLw0Y3@BhnpS`B=HLCCpMXFJ!zNv+XsQi{}`MJla)m6M&a$;Zr)%V z8CAGRFb`@22ob{B;#~!|Q59yp7;WA1}> z4BLY7QEu4I>({CuoIm!9wLf%N1jGT>C)!7fc;`iBtZfNp!(I!{Q4Sm}TeEO<8?%%b zHl8M>s>qGajK19R>LzEtV!u=7W-@Y>G}@XORYb6n<@Go>tnyW~V33N;z}Q??d!l9e z1TT_nmDrUz4wJUUfRj)s+FG3#rDgg{xBb=k!yFIap#qOw6ZL&6#fc&!4N1hDp(k8n zb4v=T;K6p2&@aP2&{=7r$l!R18#HuM1Gn6N`3{za-b8TAlXcc zqTiPK$pB$C)K6wZ+p^Dut;G zOo>1wd9)WA%Iqj-N;OL zeX}80v>5y5*zj#vtG=!NkSy6z4Q5Ryz${=L@V}D^eZFh|jtu#?qH(#}y1PGIwU%pD zzTG41u&nLE9B3Gc1x?0a8pTpgjq+_C*@J(mf-^(6~B+KN?n;iD~H(TB-lm zO|ifAZu?zh!2F(ZbVMh?CVy{Zo0b9AZhS-v3pXE0TDq~;qpCsnyHK)0ik{%VyVqzW zj|&^=UNe^ret?@bTl`hlw=CVF8L=$h)1vKnz(q0;QGT3OZz6JI^;RsB98dbVp#r-r zNq>oESDB14j&`9HAuiCFFyyj^BLu5QtMoHI6J;4zsYx;f%jW89IEvvDuVO6dI>WJU z^L3l6+d%YzujM4QS)WmIDj%FEo9l^agVDS@l`nl^CYvh@Gg41MH;mR@@>s`U=EdfE zI@d&CLLqXBFKC!S;usn6Kf~9e9Ch za5sk1Ow?Q}cFOL{`tDq6@&%1Z%G&*WP5PeR!P?u0n=idt>oqzEHl8CZFi8UMeRP3N z0W=EGgBQvk>%Zx>xY)c%)?tm6ixuxtgKVzbg;|!*bMx;83KNO&oG%nE!iI_IOeWV$ zWHW^_m&)XNDWqK}8!=N&Vx@J4UZx0+ zs(rD7L8{f)=%fK6A@SR{iLl}sAnHb96}@s@+c1b;l|;+%V$hVyb&=}jM}CnWl{jyE z?9po#5Hemp;Iz6 zo>-Y+434*tc6@G#n$S%#bl(ciK76y)0iRsx9q>=fNvqAcB-X{?7>|wd+`Up9Kq}}mz5Q2krmCbsoKVJL~z#;uV|Mcc4} zP(|AxTHn00zWM*K*IdwzwiVCZ8Usg_1^6a5tR0fO@mG3CCIzIIZ7gEVV7#(c8Afgv4A}Z(LP0-0xpek@e}*opiO;2KqJ7*0+H&ygM4Y(8&*$ ztdHG&+ZbDB_xLB3O==YE$@L^xBuP!|319y6rELA-n*L%s^l~vi9IlGWR-{+@#4*-K zDC*oW!-N&tu#eafOIDmw`-nO)k~3wU387D|MtAoTiDk!!Wnft(8%|;nju4^H zxu^=+F+grue^4&8R==8GTL(^EKRZankZx(Q7WhKD5)8mN9><3SyaPgu%MI3xS81@O zo5`WnPeRumZauP87~I1ja9(2z?;)twu~E^@**RqHM5E&EHemU(0=`faOr zI6TCY6doT)1f<`(2^fjDkqCsD-xcUczd-W~{ERIj_d;v&;2yn*zW77ZG$KK;OeFEey$4>JaX00dG&FVvaNH{Qa+0vrosH~s_w-2MQxnSb@B}E^}UufG(Hv{U1)1)Zu)%*YE^G3b*Xfdq#L>Jp2Hr(iz)Ndcr zTK#(ShMC%=qGlO!Rm!*4q0;s9p_x!9`E?bBB@liRD8FcEujcg~wJG`6ZH>VpeXpf< zoF=PGEf5sG<8zcI%~A}N2BJTWh(6o0E~Y)eAHObmAcL+$-hUm)=p;G#ZMugnZBfhA z77=3O(f%dKfKzLA`)0w~)S?#v+YAysM@KTQnI_O_3gD|j-2-dE6I|f+r0@MnvVj@~ z6N~Za5dGm!ta#lJ7A3!SXnzJyo+R=}fUVaNH#(Wy3RV>XrNAJIe1glw)UDvppPID_ zC<9A>xP&Q(-M;~wc`?2UHhpC{WyK3hbW2OWcwKA_=otBZB9S>?*Wgy@CjIS&gy1|e z482a9Z~WJ79^OsElh&ajr2i)p_UxI_P>^eAKr$64N2Y7^%ntFwr?S|w%?ti9_8^Yz z8O1R{OB-zzzb|Eb2f`a9)40Td%dUY4Fev5hjz(h0>O}XR%WHJ<_!LkIvji2$|1y$K*UW#z4vyDuY)Z4}5t;+44eCh73y z7oX7xZ60?`IC>IlwzgyZ^$(JyR*iQZQ$s7Pg%G5xfm4I;fb3=gfY4;*L^sB4m{17T z7t2KNm$LAt%f%pw`|h$#-IV1rHDNt~dD$^$e&vEZZSj=U?=W<0b*I>?&|mkkNh;7q zmekJhp=W6vdQo$tBbe9nnSFqY9Rc$oPU0P=zAi|sV4c|E6AW8)B~;+*M-}t#5nK7(^N8Vo!b8TJ4o<2d&jwyelcKO)iEO zV}0FF9O_7)C26vW+OR2#L#>BqUz29PDOeJT9Nt(TVY0raH&@G=x|*AdT81b!G&RdW=r73Yb% zKCU3JcM+r&0ew{UVH$ToheE`b(-3~X#b?%h!fd6d`_^%S5%hXjVN5?r48;{efFS^= zzEK4B_v&>^U>cEU5N^tp2p_Lbl0l-Hw1+#v4d&K2V!nu*;C)FKHC2@cu+#=P8P!S4lg)~5M7`g82bfALhrBz%(w*upyEe=yaE=@7+*w7-Ozouur)x@bc&frn?+nu&G7#&inzWq10_EgZFz;iwNL zossU#VJ|>esz9(13$VZvTW<-%EQN>A-$O>zFI(DHV|Azr;ROz5f*Mk8u(tJEY-?XB ziTO0XnrcMc#&48vu`M)$IMrJ_v8eqFwUCXB$e+l=wg9thMOwF!-IdhoK~^*zWn=2F z4cpmDP!c-=qpI|~X5v!rlDv_Y;yZxP4&E@11E^tagv5sJOgb(93I)F61-dsAVgYR@ z(DL1A`PbSp`s{4GkH+Y;o9!_+-zRUeuj$k~yAHA)VYiVbX)iTg#+zotv2cLmo^C#2 zhk=<}MDUo8>;B8M-CEr$t^-Pu(HV2K(-nV0al+BN3E}Hn`rdw*SedwXtkk zT(d2v9AF#6My_*9---gB2&l&-+>|$K-OEk2c1Q89Ymo_x8eFy6MYvQ`Ol!TX3x!m7 zoYo}W`%4=``p5Vc{k2wO5~yG8i?t%B`j8@MD6EKmLhvgJ8)H_m%ojiEbu*6Q>x*44S6`tz`&@})9?8RO>}2v~CS*^&=TK2vt80@;_Kg_v!$dxx-lP+? z2$YByyZwFEjav7keV`)&B*9EqWvV5ZU&}fd`=<3S%;&6Gye8{kg{Up{m%UJP;IsYF zWm;^mPpJ*uO2=WOW?iCT#!9;bipW8p5rR|cz-Eb$pmHxdr;B)l9NwWsZ*&>4QUk{G zl#p`Yh16-@SIi=hIij_CM={w$%(f@YwxZ`npey_$&^_zhjKR}nPwgG;%pbUJC&FUx z!0Yasww?K!D~d40nQw@Q&~yG3^D(1#GhcmDFC9SbDH>w0A{FYNx75zz)MyfW!8t5; z*T`5My|oT?Bb8wvv0<+AA~D3?JBSUD|B(%M5F4_iSeIc!Y`BB7 zp|?!Njo9fTB5DA4U)psku`NqgO-iV($a$lMVj53f%`>TN(O z#xMqKjNCF@Mojt|EY$enu8{b#G3k4oNYRrb0lLww)R!4##|Usop{gC&+-kFT@cN;el;``Q*VGWEQd=>G2akjG*&vqEw8x&X}GwG*{2?llMUCzi;{rV zQgCO*FnlNo0_=O}z|&F+_0El#z^`3UM0*=9Az*t(8PM2Ws9oq56j4xP5(UAi3ngDmmn3;42_q9y7-L2J z!O^!|k}>M7w@$(B3>em0MAv16zzJ}#cve+u0l?SMa>)d%1u>Iqz98;jXMtWh0=9J> z%hw3Lct>q%EZ!xr^2NIt4rQjXJfNjoAZS60GnL~#$Xfs4JQr;M8;Sd(4M41xgVDA) zM-`=-ff{_|-J$&~Nh>%n*X_kd5e^*HfFth7;YhsA1h zoF+l+5a2wqEDJC(V!rxk*zqCqt*9}_-ZWB=o#>X@nXrY*$-v9J;xyS`svI;CKWpm> zKFuitKdY(CYD`kj;q32;dd}Z$n2G7#6vlX>#e&?NPjz)=FBPr`B0S=|w>V&{lvX-T zJ{j!x@hXEsD9&?jK|{5<@M*~xJuPGUK|?s-S|zQBp-Ri)5(Vbur$l%ODy?sk=9GlENcI-*`UBI>!g zOEk-um^rbc@ZLi{gFRA?a`5c#_%1MJ!XL8eC9=0YNv>;{qtNDy@nlnA6PSEbaZ3 z8-r9L3Av{J7GE(O^_iqE7{eElj#SNX35k}T&SnAU2jFhSFY>nV!Lfydk%5UfDN%^E z$!W5oNUr@Yn%QJqU(7=gRaUe0tagw{pgz<3kuFz;x}5)z5Z&v?jU(ejA=M8T&|BIw zs%P@w^MBD=vS?>vu+vQfRR9!|OwZLGS~Z#vM1zM*5`fWK+oDM%?_-!21vo+0^*{g$ zNMBK>`oznWthop}>kpl(KMW-P(7}n5;ey6~GQ~t@`a@Xx#B-o@2JlG57@VXEeZ?5K z!n^a(2>zr8Xpx{IZhT>FxsLn>_g)|vcanQ`2zi(HeeCPjN0Tv#x^IyBGIbVlKhwyM zAgMAawW?NoIi6WdF_}`HWkzULY@^ak0Gv06^4xm!f^CHtMFwz6Pbjm~HPpxJC2U~MB< zK}3~$Nnf*#yW#qQOKQfCAXA%Fn)!mD`S3^}sGw~=I zvUrq^kSIVq7B`4TbLE%8p?ob73*(&WeB~lt)(^Qz`sz&*SOsOprJyDZ3L*)}`u|sL z@&9YJ6#S=ZPfFq*dOw=`8qL+b=1Qdt3W^KoUSz`dv{An>f=9C*5xV&T=^l-**q8Q) zY#8$nq+NZDlT&eQRb54dKO}x$;uDDJOHN4QzoBaMMrf@*lqEZh{HXJe4_T@csi;nO z0giOrNnfgRM2E8F+|V!QP0y|uxNotF78gaJ_*ZHn{0kSs6lAj&)TinXAj=ZPkj^D@ zK{FyOK_7?h>b+upJt-j7kE0{)v_2w&92B%x$k*B)Wx2fW<$rSfH4TOJQ45#` zv|JTAnv016s4GIcS7c%3X{z(3%yxdLPN>TI>>^#-j*E5Z8HO$I% z&7%Sqgixe=rX_s}Ew~MkdhZ`e-L;XL{mWDov6kw-E&2aA{U(z$-cLDJkZUwF5kbG3 zQF}bC`qLOe;BegQ4j(OdNZR;QQR=T8UHz+s;ZH@2DRKk%Rx{m(?O?syWo-VT{BB1q z+uEr`e{Y8Ol?e)wCZSWSKq!(Gn~dhXN7epb1$ZYz1lIC`YGCP zM7;L4Z`j_WG3Jc~uWtyiI(XHE*EfWhTqxB?90q29eH~jOve0qE%-Tq)a`ZV;3{jrd z+0>)E5UQxLp|_Kww>ARyt53nMh5Z&As$k3O(v@=zcKg`@Z93VjiKMq{31=s?(n|F* zH&xO=KkF+-J2)avByjuYXa$boi-U#uw?X{dLi}I>=S;67&Y|8=)l}k0>s}vz=^%FR zAfED7)**ICog2gbSTA?Ll~`9{fvE<3`8he66I-5deihAFq8as|Jm=f9_P(Vg<$o=B z4X0wK4aHjxn($$E5RROwWEZD{?fd!BOfV;}(x$V*%y)%i{7(0QD1+Yq1ug%D&o6y2 zm-Tg8_7yFES-&1yqRDfhSIs4qLr%+I+b`|c&1epN5FUL)KTXPg>gnjv4#0Nmbsjh( zlJYkMd-%<0Ia-pz@!c^vTaNbgvUY@E6V|~=iMM5FZIY6MyZR+k_6=HqQPyT27h3 z9H(0T5BU8bb@e#mrwi!Cqnzpume z5pCG$s7az|((LVl>&GCsRfkB?6Vot{gkAE!K-~+wRIw^Dz_7(&3&t12Juz5pFcp{4 z;uaO-VduPc&Q!9mQ55Bqp}JG(UyKx!MUp1&PQAO+9_65*_2XZ|K;MLTMKPY57Q}K> zXgJ{Rg>thSG-(2KYk(>aQB^&lwax!q50peENjfH~4K;l_U^$S3F%Ah$z_=p_@Q(rf zW2b&9arIvkL`bin5UA!SW8=|sfG~i2xiISf{%7_xeSaw5AL`%t(oej`^*O!?e03OS z9da1}LgmFVmdKXEnozVeU#Dzz14Hx?9malMEeIf|ROBq4O-EV-Ww6yB-!fRQauKt2)1Y!f7J>bayQhM8Y~bQvMeUMNhPX z0Z7F4ajg(NmpVQBLr{4KocA*kBLn~D-4sgBAb zKQtdvQd>5x;&3m|mi1X+E=%N&aZRE)JsZGC16WbbaYot@Mj9M8_EG1?z7D!W8oP@a zG#&{}bQ^Jr4;fsNB<21H5`T1|S5S$lskHcXSnN?6rzDmBGo}Bm;pE(6hqEkjJx`S}#v1#$WHPsjf%?<3y=M>%u^{B60#SP8JN`;EFJ+1X~)F z9wP^yMaih29T_fgucT?P?1hQ>E=Sy*pf^?~wz6k$+$8sPdIQ-}Z?UvpmahehXvLQo zCEwF59Tg@yl5U~?2guFxt=U)WiZ8!>cl?~_>fYn`EehrofwF!$3zRXJEsz5gP%lmn zkyRo>)lO^!>a7aVv~LuiwU#+@gukul@7ookDTlhLOipeF10++ggc{C8n+9_}xvufu z>b-xpAKH>>DY+BwM>+U4H_i%oB$&&%<1cEV48NUiC)>Fr1h&PFq$sy+!jLz()6xyd z4}6u*^_gOBVnNkMtL$8_p3qZN&$nDpl}Ilj;aVkZ-sC~>Bpp0S-;~>=Em;ueC6+G0 z`)icp{q@&yi5$FaCjEA4Vm$L86)R|X@X}(Q(oT_sAAe0ufP-DHbBEbbK zP6#(UAd21DD7I#A+oN`6G2G>0vF=Q2ON!xcg~HO;1ZkCLK3}s;LO<9OZ?Go#!(_0w zJzY1$9dxYDLur^{l_he?*l@anxhZ{b+guTax8P^t$mZwVgGJw5&-tNc3KDRmA_2@% zlmP0zm%h4Beq&7$%_!>#$Jw=u6T`WjGK!R_TPfm=7LIY@gcI z#TX?6)`JjNq2W#2KKnc!zu8eEq~T4-IKsfG$!;gGu7b{rPRPQFR2#sA4NDnYcQLpg zNzwn%2A|Vk>4E=2XO);`Hy7JB{vs<_qKhJS3NN`UMFH2@CdO~{e@SJpFLGa|N1YyYL5o%RnJOoRvP9v zj4E?eo2#Eyo1d!cd8y6A<;bRIVG27POyYWl#`Dv#JwJDC3}j_R>c5>t^1~G?=wVTI zdnt04q;^RvRqoQ11a!3psqtLOQKyAzI?@)Z9==$U5mK5D0~TCAcQ*vM$7W3C!|nJi zOwAbOb?k_v_&Qu5py9$aG75oafx)Sjw(xRlFYCv#SvW33E!hE85W$Av7=o-I^~B8T zVZWl(J5;$Zu=Fk>ltLzrW=00X@3eooBDF=S=J6~1-x)nYad;qtn%V%R&@7jEe=JXJ zc`9%2>r+zfdigHd|Lto?J|mkO7N^vP{+3|)nj)WUiNh4Bs4!d-gKjyE|XH~4|*n^U_vb#`2p+Nw0%)?mk5QoBVz31gC~QMaactMkz9 zsZwB~J5uAh9VWUnwL4YG4(O{pqWpc0HRExaIOnTy&WX-B`@uQ4rLfK&&N{b>b&7nk z9$)n53)2@9^~ErKaYCljyAc6b_eDtFL`R6aRO`#>8WutW(Qt>bE`gUQF;Qea(3B!>pgGae zJkQa*r-`QGOst3M+#mJbm{uq?IWtO~oB=vqoYuEh^D|j9v7bmYoSE6oY#q(;{?zVQ zb+nm#x>I{VKU)4lGn^wRkv|?x?Lo#lQ5#cxh_aC9Xz++k^l)kqyW`xW&Ml9MTf6|n zb!J9EE^ZKpM}~7VQ11)s13*0p^+^N`%fcyHeHci?mXLL*$m;U>@zfsoTAxVm31O(f z7aP#-Eot{L-tLpU-4`|6-N5O|)Sh&lo^qU?at^*I!srW(0l)}?0Rq6t5h&KTb2J=} zZH0%T49l3x3T6QIyI_<3lav4HlXRqT-;QrI4L?mB^7LODhvq;xN)8kB6)q2+N$nYL z=Ci3itNIE{!y}nJk~L>|7L%DhnuXXSr(`xM`%YL*z?p1R??b}#sqw6ar`}BMO#w*j zgAWWZ2&|>!!i%ZB=$O@=Kqke<^YN3(h1W^M1vj$^kO%^VzQ`^o#JzhW*Tb?qQu31Dlep z*ux%GXfhYGSWsPr>ENSaV-6-f$C!Hm1BlLnm7g0eQ+rDUA0r_iP5w~qvMgr-7SPMW z<(ZLiIbEUsvGoQkHFxR);E!{>3jBF5BV(K`BRRUVyygeoWgo& z@c)@uAAja1@zmZ|TR`XP%)Y-YEX|CUrJ%7a1K)APX%rfNaWq&{M?>LJOT#spQQ{g3 zUYpsqIT~;oZTy|MjHR^d>B^VRdxTx;3cZ8he~~hX$q9Jx)rm}fbYg5HP+Y+mtAPbE zm(L{aEQwVy|B3+Y5={0JTr7R}5L{p17Ld#VGdor-G&Xp`CYoJ4*DT+hjJ%05kL(Mu_WnEN^EF* zKo&|7)Q~n4)ekaG7xe%=LzWGIA>CtHqDscX>^k;x@}H{}rb6jqV%mu1<%V<~2B2@S zGH1VH7p(ewvMu_Ju(wlnZ;cOZBm8X(vl7)f!fTwJ$gYTucxNwnz8h#}`M-OIZ^~RT z+xvBnf|=BxTYXVsbhtnk0~Ek|e=kwBo$(k|I1{SwZ9B7CWBGc3!#jW+`DsvJjBtdp z;35ae`u^f%VK_ar)3Z^V9TU#TtoOojW@fyc$^3OzW@lxioMXPPrSDmc{MS&sMZQKx zS2#Pfv&ooGSLB6{3g_rcJ16^Vn3mZza$ikZFk_r}H4Q(M<}uV>xDjy{X& zOA<$SL1O!3$=zQzy!~xNn}VnCdKs$gnl#2dx;()Y1BdKSAgXHkD77`>m%X@G8olr{ zH5NMtCYH-US9~!P!hDuO8DgLu5IJJw`p-Rj%1|)|OVPz@8G*1jCbZSgO(D3qh9I`Q z5so9~JWRtP=~arY0!Z$I)*sKsytpjpVzMRe?{o_GgKJ|NCI@=qx;S2!%MwX_q+AnI zuGcD9!wn+UZEsb_hLtkiU%wD*1=lGfP-_cKDV<_?FoD<;1>K-{ipXisI^_o%eDZ?Z>HY%Ylmn!)TSH*Q@>o+n{5@%^vPW zWL)KO7Y}KM6z5Q=G&xM5Cs(if}#w0Ki{=aRTq+bfA^pFd7tNf4NZ5|IeS=p?X}lldrkWx>6i2n z%@De$A4ZEq;%`<(r3rh!G$=eo26Cli#ONS?Ov{TyqCzT=O|ej^W!OS!`Lz@%fZdgF zcMi45Chr&%?u6(o7CS(GOew*c!$%{=d4ykFrkRvHdolNuD$%3J@MlrRc;7@oA%Cab zY!_o5!ED0c!woHr_HY~56H=&aTxiz$`5Aoj7xqb&(U0?ke-G+$3jWFng4d73XrGEO zsvNpd8rxqPuluzUJd)aRxqmgrQ-Og$qil;dufK_~(ZFbb%MCtSIKO3y99Hyi$KmU5 z_&pR;#dOK!B&qn_6u)v-&FrHTeMx9n6 zuXk83e~8>4^j-Fkmu;l4!0k~8u()-_m9u1rMPYT4nq8u154KqWNkNrCl8pGAGREAp^OX4;sQWhPhKVtPKvbH@k8^U))i-=`Hean7QuIhmB;4w`X3~YpKb>AAZPK!Zv=#LXA8r1 zY$Eweoj+3Np~Uf{IzLR@4^>A?zyPo;l?FgaPzeB6$7GtUZbJ64hZDz-ns_8}kAx<; zytxdSdihb}_)(D`b4Jd3!MYPB?Q=?LnMO;>NmAX$a^3CoG;Kdg+)v6+a=DXymhO;Z zhUKc#sBIJXs2+3jwb$V2ro`Ps&yOXJpBtI{pC(EJEXzYJK22l*G{q{{v0STbo|aVI zSNGH8I{&l8{jA)3+X8F>+yV8|@&k?k@kCd;Utc3%@ol(?T;a}8}a4&MCoCfq2zHyT8i5)-W z@A+%&{%TckPW&dhsI`kCba?C4jZ)$GR(V$d2o;;?+d&B*+NG3!B5_aX5Fk6->V#ON zUVL~ZbR-d^z^BPA1-+@5a;tmk^8#9H~ zg3Fm{sj#QBlLcihPOiSn_o?_V&U-~U?m`~-=e|d z$D>Vi6rEZCS(E<&W9sL*Sq#V9!M;9inQkzK91wqtp)d z0!CiwZ7D5D`b_XBn1z zc!ev<7Oa@9sTtz2bNQ)7H&ueh{a)Q=9YiV{DuorMbzA`ES~cZJ>TwiI`(|@2nO)105ErVxjhxKER)eJ z0lXIg%QeW&62Q228o&xn;GAh{eS9}Lwcwcvz%uLr@I3e7`TzBqi=TY(-al=`s@3M^ zxwhr#C{tSfFhK2xFG(3_tAHsc-)1;9Xch!$+By2QFZP7VQ*VKwSqL->1c?A%jh(awXmah31X7mv2*R(;&Qodt9p^tqjdE-${Y}-?=~;t zkTRm`?MR-kIitf{2uSTBtyi{gWYrzDMRcbPeBmCI`XVa326!I_*${Za8f>!Q?R3pK zi&);uI#BLaYNa9Stya-AQF_rCi&!>8vR?I8EB9?K30A1UnsY*|z$#bJ7v-zT(`)~N z;?SGMHchF{d!eBS7mvh$e=HlQu zUKI&PiOadD^lilll7s4B9^bw5$4Dkt`ggU-?yGjYuuknvb-8<>)aV|3qSE;@*NccY z$;&z2(X7O9?RthvZ&O&jJexwfK0dS-HrqZwTBoHjKX+I;YeSm&-Lch{zEzObbG~*o z`!$4|zc5>i< z8Ie=xyJf70q9?^J8O#t~b>W>H@YDH?>#!5dpTFuT$Z8-@=KDQhYJs5<+o3&V5A}mP zwF+5G6`s|5pw%U+t;KR9h}(!2<~a|!yn=fM-@!6X-Tv$3F$TjTfm(sivQgHqWyd+7 zJj%L@v~tDOWO_8S7S5c2(k|dw%<9*I7>(O5_A@eW3vk2S3<1X~S0PA%YQvcPC5q1( zrdUa1g#s=XaF}7)Del1atlb^B4ptE3JAII!Q=qdx;8^}uz#RfNuHlF}M_G_+mawBt zb8{|`Kbra+#ipUec+>n$obu}3p|FTiezJi$ndgUT)@{R()6!vn7K~;lzuhbWemENn z!+JFz}N4rPR?pV3m9}c&7to^a9-y{4!Wn)eCl%EJIJ6>+@ zIEMmM9RM`~*gmil1>o!>kZ{!GV|6W*y`k1Veoug$&TqG81rJAROQVLabl%hNW#ijR zLpYK>lOeRaBdf}q=ZI^i?2&#iCB13j!|d{G&`1M~%vPGN+>&fRoL#Pd&iU-`=#EgJ zYKT&nsjmlBYJ9m6@aex?wB&ApjoH)Sd;{Hjzs&HYMd)xyrVAbP9TPBPhJ6N5h1S!MW z)wOD^xRI;5NUV6XPCvvnMp2_8bsER*B!yI?x+{IRpboVNVKiK{;r`=#isyi($o(4-D6Nhs+o5}+b<>SRp>8q2sDa0Q+&Ekt_>Py4V-38AenXO7f~2~`p~XK1HC zfK@ot%~IjM`EnC?>1_z0^9QcyhH!hT$zKEMsztfi27>z*h+?SkpB8AX9HRgO29{db zi#=xv>>aX8DRfr(i(v)op3C@HGLm-pPHQBi6a@INY)nK-Wdq0(J!NU0Kp+%rc>`2m zw$y^37L28>SuFoZ3PBp;iONHu!07U|^9`Ci_@EoPGHjm~>rcRDY7zCzVSYY*TnXnJ z>)dj&D0KxFe=eqIJLY{E(i3E<-5R1UlTs_mlo4;X^SkR-s3$4(_FA zhMJ;=j(UBe_z8PzHYmlgCB8(F5_@l>Z??I$vkK>@e?^TsvmqW$6I^z@nc|wo4=t{4 zp+xqqX-IGi4esWZA{73l*(m`6ThlZm#Sl`WM3l%z?bxVFj~bU~F7AbXg~v5J<0my@ zB+d-9s+5#AON6O`1t9c1oR4->&8gJf7FD?@ZHwfhG&Ow;3LM7YZvKwfcaDgyoDg<# z_@c~Ca&A1af8|f5%BP`~PcHjp`jOo@nkiTT27m>_wYu@8ElQU$QQ?IF!>bfl8sbN@ zqo{;JY*SV7qc93TLHqRt*6KuPM%)2nsHdVB85~d4DjC+6mvZBVF#Edn1RXwet{+fP zSv;c>e`xNe2uV!2C5~fFs&T>)gPPkI91NrU4dw@j4Bwi-jF{CfhM~bU0RK@0Vu)a< z9_~=An-EkGM20Fx*Fx4a&N-5A!q3QR1{pE~R;9gMm13I1F10JLSq2tNv+5qhoBqHU z^oJ~Y`m-xSSD=^*$_WZpYGp&71XYmdoD*0qF{JH0C@&(Wj&X#8j|E>kaySzTS#erw zmKp(SMPD`*T4Hb9IyreYUey$K$2VdqYRmic_Ph}*w*WdGKA_j`(FeId@s+8-O@|Nr zcF0YJGNx?JiOI>sN#!}0vCH#$7X@M5Z6W2KfDj1B@nF@Dw1t>m;9;K!h<472xlEU3 zB=N1*4e0c1@zHi`qa|fGS}9gA?BUh^h)@RWA16@^H;@jQ&blLgS5VjhKaN#-jZyP$ zvL1=hu+@AGfA}-gp=Sw&*iF6{(HlmA*Og6C77+{zw?!z*1ylJy_k&8M&ZbriwTu4` z|169wZBV=U#&WFC(~)m!M6)OLL{!ujODxvMFrVRtVkmsfpyVJfFdh>a;x6Fibv%dy zdwD&k9^}lg?FJ+|aW!KG7LD;O%u8i(QC+XrRq>(&{6)mp2C48GY+@*s2{g0mTWd^b ztqCJRof=R?b44BaXpE{Qv(T;;?MErR#;acL{Y z`=D60JLH4cN1C^fP3%Z0JJ9$LI z2@O~G0_1aC+JW*?Qy6Y*zt);Ui+LT_o{P}XW4aA-x(vgy-C93pDYw?A++vIw$TX1Y zr9aKT_riK^wZ9SNW9E;S@-5V4-^J||n&c5IsX{jIco=>S#lE>0e%;y#E`^~d=J}iQCWI6z1uniN zr$Y7gZSx`wvlAQ%ndtAvE{`Lj*$IL-WP?~~sBw>6BD49#K@g`vYTzu0DI!i2j6Pdp z%nXwf^OjqSS^HiCEy0`_yL)4=kfW(M4B|6VupvM?tmzSzHOOHacBVjn!aqE7!aIUM4aCRf8y0MFUq#@@WBQVKj{epOsXgg4d? zfh0{^aw~j0JLIrV^al&rtlA51cu^LAec7KgeNkQm*!x>${@(>@ zWjc*uETy&5y#=Wo)EMf83@6r)0N&Rvq|$KeOr*}felf-p&8)PBVfOK}ToSjrC7^Jz zKt|Q00tcc!tPmoq0dYn^UnFB*UF_#hM`Yj6&kdFs(2E99O-OkdXoui#(Wq4H z%pNEG(3)zaZkP24Zz5Gu%v$Ibq9kyQPLCAb5~8Np9DB1C6*&fF9S12MXOyT=F{48( z$hkKw$l+H7mqCHci~vt`CyM;=cKCa|iF5Ojn$D9owv#osk1&>#8H=n{I1?@OA9Wwy z8KvQriSy*g0v+Mx{`1%ew?^m)pU02k^~mMQ;q|ZNjp%=A&WXH!Qm&i2qU;yk;^ck- zmEk%j-!S2WD|iJEZlCh{6hs|Z7DZlNl}W{EOh`FRK%b@}T`^Ff=I4s(4n+?<7gJS^ zQ`KC5hKUSk2ziRR3e%zMcondWOIW)1QeDg2x0Ja2NuFS|e5P8qns|g|H5EstnrElm z#$ck@=d=!o0UU2Hbx;-Gt+Rk)qlnfIS4y7;G-vuVDhls&LxVyvVc%Kzte^7pfeZ2N z8X`%jD}p*#K?n+t3JboF?g?{40z+YZNE0*?!ZkP;bVw z6O!pk)&Q6DHLaXv#XykS&g1lPUzuT|j>H=*ovm(+0qt2~K;kuLmS1XKEIM9HYIdaz zRYAZ-3bzts*4f>_0r!_ExDfeoy{;~*1O<2HX zY!{bAWII3_hg;Y!R79VHyien>f)IG#a=DFtT1M$z3iyZ>{qu2IDEr_2<#@T3$o{<= zTN+xLoBFl%{VVEYT>f5asjC?{pnpq24|4garKP^5wxuO$k@Pj#v#in#zn4_rLLpq@`1yy; zvKkrFXi?SlF%BG|XTWVPl>D5$9hWq(!Yq)I zf%JNuKjM^>qBlf@x_hVFnI{l=g3kIr6UbXs*V2hJ@OCIKpN}gq2V@QR*shCn3O@&x z9w;c{P0cP>klHOqOq=A^CO5SY;-S_lf3%_aoGtNRj`$1DPQuRXm*>%9F z>$`xuP)M)V*FVd-IbBUFUpJpL*5xvDJxNooq7tx;JtsxqC%b?j$d_(MdMO$w)tYvV75feGnygze;uO4EKfW zy^wz7?uCok^$g41$1omH@FDWUP$d?7&~8^{^bhHSJi8u<?u1%+8iS{U?fFgQwUjDJxm^{D`UzBWdh zU$>DpbQ1wz@N^?ecN3_7QBL+e$Q9DKD5ne@U~BQrKwBgoIw~s* zq$p*;KkOUu6v;w($<7M9{kP2Zbrr6%1vjgxh`6p~e(rFkIlz{9K=7Ew&2@#}#znk} z)cqh{vz-bc#Z@+1DF@l_8=u>p1&-PUgHzlV`2E(%Z53;nf=d_#x*MS)eA8tPMFoP` zH!Pb673F>Yid@9UpzHL0GBF}7sNZJ`%Bb{LeM1n#-jZACp9d=`i{16ZsgcF5PfI)w zu)kNQt@x>M_K|}lD_3IpC@yGs`{1nDDL>mi-AgDx|0M5PO25ST_bdi~KR3y)ly2oN z=|%o8c6;Rmwj3SR(>uD7UQpu9HA8LvGs3T{eE#8jf`3}hBXhu{VLU2l zgoZQ1EiiO^e2XYOQK6FReYcQ@zt)*zRt7-$C2d#kpx1qRWZoVhv*(z}$P+yJBj z)<6n1+NaEpC4*fki~?R=y~jLPAlobCRKTh(G!|uYysja+GFnx8VJyE1q)#q3U+M?P z$iiUlzZ1PFRo~gvU}7**a9w?a=)~k;tX{}aroNDBSjTYaekpqEr8rK77s{2U!!<8B zYU?C653U*Ts58oyJH1=yOZ@$)>+?MtXjmqy$3D#)za2DC& zU?{wh4Vt64Ug&sEZ%4U;J1X3|2Ex=E3G>z4B6?e--s*0bter!`M&@m73>$ZOh&o(h z^i&0o@ph=E?PFZMI|fTfcp;m$4)MIu$(~M+a}Dk|y97^UpiW6OsWukV>0))-?+!)5 z-0L((_aUs+zz{8OokW@atMlO205SZ=Bqml);h^xBTY+ZrlqrPSDX(j8H1s|ax5|! zq#sAir20yQSkjf1 z1d=(&1!kV@1cRu0ALquZjdpr(SMQwV5YG`%!%DqfkxMyFVFIDHa*i_)$hhDqgr3kc zNEM-;&UX_WHdKU7wYx?-0>4_y1HJ5uTo@Pqj z8zAtsJ3J@696?b6f&1O6=?)JlzbidKG8ZenENBJP)7r@G>ej-7*s%5bQYiwY7g%qA zTw)3W06}h?;?^-_IYnYwm9WbJ(JoV12rT9bsJox{rgviAt9!@I%1;f=U#>hWAq-8u zqivXqvVlt`!fQK!ONl^$8LvMbGOw(ZIcXa4Y04F{2VMa))H?^#8G`r#dN&7JBH*p} ze2}xzt`yWk z4aLeTi<%#PZ(s3Fk$OdmVhcJ!^`D<#FV8M@0Y9P(EW~2eHFPq7O*t@Y40>n94FMp; zMU{qv4IoY#>J7*YpvG`WlbIHeYx+s2t)S&Zy)p(@t6m%DC+oEnsU3C++NqQ0mAq_~ z1G0PpB8lqP$MFy{{(y&}bSsNpvs~A5n^@y!nw1wq=6p76enXcGsd7{$XTKY9ffiwa zM>`pSkdaP+$m?T(02yXY-WYv=ZLji3e41wA7d(_yUg{{y=a5M30g3fSWZG#7Ubf)3(@;D#xfXd=P_(p>4s=4I&_ zBn0v7^yK+uRsRdUWQG@&Oy$n%WGZ)BGL;t*mAFAYaeTNIwnK>Ti-`hazMCj8gr_&~ zbQy8K;heop_XTv~UHNdq|2c7gPNY^r2g|6V4gQk6yCknye@83#NY@=x}s+z&> zPlV10S6h-AhT?u?)A*wf>F7y;1$-FiwA@pmbV#8717+9bTIZo9& z-gaMB&Vdw5&h1JzknY;yEz5v04MOxSg(}hd7O<}t3MszfUsW)^6(KBtU<&^sXuudHh*sLE;ICT&qc6`B_hN%9S zq{FcC(8ft>;v;Br)fuM+_mNJ|*+D((7%`MH#&J$Qxu_#I(Do@AgE)oUd&WsvksHb^ zL>h=wDKHIYbBa4v1wL#If86C1gC*wwM(6g)cCA4B>Vt+o{efu-FbcO_{VSMjCbRx0kHzxQr+-meLyyC(l- zOpQKR8ogxev)q~A@)zaZn!LLRD!e%FE)KL1!a>*N-MVVp;7kG7XVK_7HCmyJ{+u{~ zLuo0Li@HDR(6caqALGxpC39{%YLU(xKz42+B{#x(Zo0fGCCZE`TP(*YR^hxm{9h!) za6rt`O561;947AYFDH(lza;DYD~T)J;kPG_58IRT{i}(4m0e7EBD(x*iF+;ka-sjL z-nhRK)&F|pUPocR3Mpchkop>5y71u=9Fli|!_Fjui7J0jSA>722_s#$AKSr&(HWp) zRF4w{KV7DMUmN+|A=v3|_oW;;VkNw$>~ufJFfd2OIasVStG( z^IFyI+`>bI1wsb+y-y|;$z5LV^??dLCF7+#uTy6XNX0Tf@>|njXAfG~or&0oi6E2q zxk}A6ns0mP+lMMG_UGYQJUm8uYCj}e;sm0+kmQ(2xgI4POzJK9Ms`}keF<%0oW8&a zu8N4E*_)$EiiiAXBMlb5|5;8n=w_})?XpNG_|Hphxf(%$upf@kd%JXTaF&CK$l!OT zjyTtw5f__VNceFL*MfeL(IEfso#k9~Iu(8?LSc_JZn^KaPb$|FVF^$!kKV{R*J~5P z+b69 zsJriCV=d@+OWNQ^*rFMsv(Wd+O{<*~wK;XZPgL~QNZRr?(oFaXI`#0kg%?~JD5!`~ z$jPfWqtAPlV*_4S zhrg!lYD*2NAQ%l68GhOp`e!4@&u>85PZL6j0qb#+cVI)Ck3R0;g1M3|_rFupMTt|- znK7oEWwUKTp*_m!U)zGB|3cnPN?FX$%PxeaVzEpV_KExg*3AoaW8v17Je}L;722(V z+?(@?{@T1u8s*lv%`3QT^F@DM9#NdW{~!|w0A82(?~ni{@84y~4xWN={70EB`-I~c zapOh!U7x4u27hTDO9-)T>p9GSf#x=3-!J9+b$q`*@2ky;aP|y1`;%Gb{$va5 zT_nP!+kYzW_<1)u$^SXR?g1zi!iIwBg!%r975z(;?)WVG*iu*p~Q~A_hrWpY<6=2$nu3eUpv$2JAX7&#j!<({yXfgaF3U^Ka z)AB>G%HNXjFCb2ZHvSPo9PJ_wKFx#-_q3tyDbmF-GE)G)ql(x_7W*BR3L?~eC#$Jd z&*zyGAbc#W`uETsd*nQkX;m;wLWIm zk)$+ni@PCGtn+<7J$Key((M)HPMr*p8o1oUV&|J|W%^ zHbNtdGG}GAhBGq$%Cz>Ma#p6+t)aDN)!MVP_GNi1ht{5@wcm% z;J%#3i-P+yeerg@P4##wErKJn9pt|g%bS^M-=*63EVC=s?vW2O)p$Few97G(66Li) zOXG^b#*sgGH$&=pH*b!0{U`{EqoP1OH>i%oJ4U zrF5u#L>}9sci$Ozw)Vyfz*!v6XeHy;8rorW1gUw%qkou(DXRWSz)Kd3J-WT+{Fa5oBQY6X&?{CKP z6qtP)T)2^VgzJF3Q0(~E^6?fb%mX}}w0<3zlLQfy1KT?~@F4RP7lYX*{|9&Ua-~su zJQ07*r4OuwL(*zd%^kMbKg(>1ynh!f&*tx-k>`RBjGK+OG(8+>qd8FM#8v5e(D`QK z_zCFzeT)l*4G{kWr7@C6h53IQa_|>oYNp{FWXR!Ny)|b+l`ko$i`D&8mf90XBBCex zU00!Es?;f01&1L#;7BvM%I#-oA$;Dj-I8WjC^}FmdO4;X-02nN|J2yF>p}ez;uXji zN9;tF*aaYQ1ldmxAS9vSRT8g-C88?^CBSX+`JXc zQ*9_#i?d@#mc#W)Tba|ywrcZTn|X=ss$W0_frdUl0ABl1%`NdWw>I zzs=s9a5yJT04aw#lPjSyXupi@Vo6acvvW?Vlx+|^#RizTgET*%NgO|#k}H+_R&#Py zme>`STBSauUvlCup_o6YppOfxW`9A^El6>=_#8bzwx3H0wK zxc&R}zcKJ{4E!4d|Hi<-G4O8;{C^Guk==uu%hZ0#_ZYm2%1^d0=#}FNju}WCgPbY8 zr1WT$2h$+D4r)9;>^YB6B&j@db<%?2wp8)tQjk!bd3BXGdHJYH93euGY+{yx%q6PR zT+Z2ZiE{MFHK{B7+dl6i*|s*zXDIk6Hy8hqkLJkLb}rHtvh&cmjeF=q^jpNw5JA#?)w0e&iTlz_Xn2Fix_Yi(@bd*4iuc7|vDr1_<9IMhUlrI`=*Je(K zA>T!4u#N`n$_*w3Wh>CQp2%_)WYqFaeITzu?0eoc9aRXP7?|BaLY?L;B zQuCH>qot5GNO@|kyCHNpICKY0x^R_VaoVz8@td?>M^Y9UeiR1wkrmKL1!ILQl^S?; zZj^HZEvbOkgV?7Q2`v!KP!ZHu@#zyWpS1O z&kJyyKji@Go4?qcFz~r6g#<5g>EeRVxmXl9)(5QcA{;122MdUW@#ad` z26}*$8W>-Mcl%=nT)gDNMRrQoOX(Vt8~J(^36fSgSr9Q^6MDS4viPg-> z62DpXHjK_W*)V7NMgl>_UgK!zxY&TCByyB9CppUp1xzYcL!FV9iBI3^@IE9`FL?f0 zx)W$qFLcJ^KW83eX~<B%I<0Kf zWBQX*!Vsuh-IN%2o>Ngt(~)%}1H05_P&7+9%R7S(hh<-GfI*9>Lvw0Jr2QX8*_PM^ zCZv!H=50+9dEs!Zi)51k=*%L~$1UJmoV&8;V39mmrS5|8s9}Of)3j2=l>E@X8WQQ7 zi@nM?<%UE{Lz$6U$Pk0dh!`qmj3j`|+F?a8%_<{yQ7IGr7)kY5`kDFcM1Wi&L{HnOnS}AV6iDf9kGI&)P zC33Bl33R9?pU`Er%G8HmLEnE~5H0GvmW}1afBVaCwbX|Sa2Fs@!an7rYliM85$0_!cje<7PTJ51xsg&3%Us_@Y}|S`5w9v zRFI57u6L8e7!479`%0r)?-!6*MIK>1{nfghQv0od3XIPKu^{N%DY7XV=!UGo8)#79 z(8=ZN8Z29q8@7S~y(y4c3m6y{QcEU8?FIK3!(}#s%9NzON3-Zhudqb~@N6G_?P@X6 zE<1+vE6Ah7eUn;Q&U-uxATt)1!|_*0miI48XtMSOQ}j3s_-roTlti<%=J(twu3H1H zaY5HewQUF@Z5v<%_i)#`f?eZ(#P#%m>qx5zT&tZvcj5-2vnfzydG8iSV$dRPlw?NBfo|w z+;k?HQZ=VgPJGHVdv=U+GAbtjeK4j)amlyIe>-_P+Zd@HN2Q_L}8J4Ro@PDi$gbP z%5As{{XyXDASM*XX?c|Sh|JPKuvQ%|WDy+kP`F`ZxXQU+tnx6uafk7yq5MYnw#7md z?ecqx(x%YRQe9(8fL7Mf(sJF~=q`i!RKF>V>lZ-n=9=^dq$ww%a4q*} zSjiaph=YlEw$6|F<4Bdpb~peo)y6h38lK}b!p~6ko&t2$w=$6EvPGl1?|o%fb==6z zi`1NCPG#!^TCVbTA7AP_TnF0h7VH8=b{2gej`g+34idS6^6$6Ho=)Q%7i^b)QNRTh z_s{YTVg1~|PF>>#6B!6kI@3=?Jaa=k75=4dbvawl@}&y&qG57QFE5(dK=&&tx3bgk z!lWl|C3T5<(k-_0R^XG_Pjx@(64`stc1U8B%Ja7-QK-#1F2$ljS zAGcZDK~0)-XDKIv0fBm(M51*6d$=n_hpenMLuWd(3k}J z>wF3)zsv0MtxKtSdEX_}z%F+~hNw`UaRrzS<~_A!u7_&rGeAk4RHwWRuQETPtL0oM zV_;r5`m8)rbU7DZgcKRSSiuy0)-}I3$X5{TGc#93ML*X18EeV-+-WYqRQ`z9sK99i z7vO{xG1XsSg07XPo`#F3-gRZ?AaJ@N0^kkS_ZO5FwbdHC2_1+&lT~L|PI_Ts z?pj`$$Q{57EpwWrd88}1dxti4mDiqb=Z;y+nwg8;gul?!c7oaO*iPL1HBFn z*BBJC!XkU0=3AkTR#DC@+U9;0&WCDyHq*y9)CT&tH(G=M+1_QyP$3AD3HTpxExTF5 zOV}!B$$4B|5Xqbqe-kx~>j+MrY@;&jj3W9dd-tUXbI{1<;+LbSzjn-l2tEv{2+oQ& z$JmWU@iEoPAy{?-X$q&PR5&6Aun9em?= zbFwFg7{9yoj8`W{TQ2NU}qOtS~m`X20M5BBPNKsrtJ%b!ZeI3(&3e=3j2 z(5grLsXY2+c*LK|qix|4e=3ju7#{Jb@@RW_#GlHeH^U?Tu(nN>5Yg&5^{$d@F4f5l zdbD-Use_M0yf}PKn)jnk^PvN8Im@OcCS^jh_eIY2d7bOgXAqfC+sS-a6bGvun!g(P z)(lmyP|jI)TL<4-Ogwf4fipCnVv%X#8+Z9h-$nFq7J3(opqM~pwj{9dc*5M26t~3j z0BS^r27r>38bz_M0j^1Zlm(VFTN0*&Yv~{!46@wVX-`{<;M${)*MURopjQ$Ls|gDm@lXr9qywLtH*JdH&9GW<{e7(j%n}{+ zM};f)NU)YLVy8h%`HcLNcCB7>5uwd!0m8?XT7_i z!-=IbWazs1Ac9a^GKZoXEp-%$s$He3Q7UrIH)$C# zlrKtcbMdk`8X}C4N-3O2(=Fp1l=40mOn(Q$sK>6C_d~Sr8=xZQCwT+vc=IGH1)U_X zE#G?Bu7(5#mKVk$Xo_`@mokoEVU>j@hM4M7j}z#p#wMKY+x}XX^(xdVp}%dFoRK7d zC`vfn7i}_Ng6at70G8@QM783G8^|jXRu&mHDoOH*3wQlWzbQzA*IaA~s%At}*vAc` zW_ZfPs745?DQzqG2re$01uwKb#b=VzGm;tLaPL!8KNbbt4%yj8JVazg?IPC#XlXLX zYEmk?)m{11m;lnLqwym76Q~FC{grfNAoDkHC1-^ku%PrY6vZjl9BJsbvN6!ls;2(qHJSTZlPMqc|cLxHT|wgemtX>JHi9A4TO_-mAI z*{`{{xiLChm^p{xU0EHBeWe9spTjCUC+&(muql|}DHA|tb?q0ox&0u82iHZV2^@?U zYtl#|qQzhdMwNH7QkqkZy|849#q`eU>>`b)8I@97%Qn!K3Yi-1Jp=>8v=>?JpIDa? zV5r10)H~CF$^ujA5@u>IvPzE=w!~3_UzQp(DA;PWQZfbG=!$dC=yD^SP1F8YDXjZU znz^`WY4~Im!7L*Aw7k&7teY2mXA18z?8PY>&y4d1g|^4&6Tl}W>sZ-+QbAo$!Ltz) zTq1?tIB|pVF3Wu(3t!8C3 zs^E{4gI=Tf8KCYFPOTA1&SzT&f7U7Om98j=X$z2`$!sXsXh@$9ughDsZP4Y{>7Q>f zOQ`Hg)ScyKX|`sTnFgXL=Y-V}z0=1HX&(x3E9&l=g1qE`=5DDh~LFnfSdk4mWz^MauFsRea@Wb%%-vq$KwGAiX{YVb$-H{I`3|=Syk7vmv z(vhXV=PeNsJ&_iO*|Ur+pK!;zPn4c73>PYO);iuDEAhx)E<+2&`aaQ}=$7f>@tS9H z|5OHbl9m+uBO6VbN=}yU3gwaes5_ZjdhCw3>g2x5>%du1XSRYSXb`c901tP-GJq&Y|cWle=BzoH5UCRGxGc-n*sl90T0mHw;Bk`d^8ml0<)%r z^L{oR@S*8$I%B+bFG!msKHC;;xO3P|*jW#WYPEmV?QDCjVC;#=OR`5Kr5$;8zPfP4sLyt%%0^BTY~(CTN;VgVXS;jpk2)Bz_vK12WPAMkw(iH1 zXo6sC-5G4H?8dpYW~maVa{HSGV>hdZRbGDF)G0! zdj?6NW+%!A!5O+sX>q~>8dc7Vu+ikxIa;rn9Z+lLy>qA_JH3bDmlkPrS5t`g-qzXx z=R2eh2#d^YrV@%OD?~?1mM8l?S|VtkDP}{^?nWLLk8>%C`fG`y2V-o#tlBvTWg@V z&Zww4B~OpQf+m4gv;{Q$N9onU?*z$r{l4+A^`T}+yvGzp8Cju4mBv@BqB z1fKP67$&b_ivykz(U}fz{tOrxqK?3ab;Pptkrc7kmGH+m)2xx+?y`I|RY;%4LUL8g zC?{pqH1VWhQ&LW}@~5(O3Cmsf%;ZODNh(CV3nSp5XiJaz1ULi^K_y|LQYwfP*~!M` z^+lK5YQ)>bS$LESMBhL&7{aCR(g?^Zr7BDCo=^IV-4yrg=ebEbZICcHb zM1(I&p5~y%Oo+0W3E`8&ldd8hh(*ONsIdjc%nK?V^ea#^8)3Dz(9!wst8HZNKXz%c?iMi?A09l#x$~j~B)4~FLC=ThHS|EmLRm3n& z#K6&8{H8_fp+?R&kgLP@CeK8ZWGltDLr0sgE`Sx~ak#GGRZYGvVf%5Wcq?krz1z)kOE431_4aP(jZ@35z}ka4|O&T*}3z5B%eGou_Za^80^y#dW}ZQ2HqG{!(sYE zzm`T&(`&oaJd{);w06@o7K#r`tO*(tLF@Vj==up(tySCK`UzGY_pF6yprcaDaEDev zPD*T?uw`v^4Xy=D!d}+Iak6TdLJpXDm+Li6(9mAi?9lcL-u>#)&y9L;KfBzs{pTlc z9o8L9-rNl#40R)VwK=ul@@A=j|Ng7zb#q1=s%t<;Q}6trKl-74e)apgz2brGf4X7U zPrdN_4}HIzk&JeAy&8!d)eQ(k)nCQ{jfwK4p;rv4eeqHH_W+%txpDn^Z8CD*8mFC} z+H>|#w@8;LKrMC!*T09gG1Lv{HSr_rVOJ=Yo1!FZ!?kq7qi~w*k@icw6v@E;!r^Mw z5aB@QaA4BRH_2JDsr|}9k1*851fs`?8TYQSwfTR?4EIo`Fgn-hh?S!4dZ^*U>8LZP`}zFY4(P;By?f^fjG ztH805r*A!RPgj0%c`4budCLV_`qq8p%leu@p3w8T={t8_rm`cY9z6g-L>G9D;r|@N zYCG~R{||797~j6fM@|}k;@2OW+l|DH@Jm`j<(}!0;9d3Z1lTr2565vQPy|acH#img z8e_INL6j@p)6MZAa>uB#54vM|bc(2YcWh{k)3G~NjYVoq2ES_f>f5@NX(y|;4fsAv zlOI)+C%cdKDDO_yyHi4w9FN^8YVyMO!dJhg+b?s=$`yd`L>fC$jV*I0_UNEc_3k5~ zF_@|Qh#HFnd~g>b_IsDVD#V6!_uTZJx1QA3pb4FuzJ1ptUHOHu)QPY`rb4XQ6x5uz zGwe@Wb^fmg01#P1+aLbiXE$Bd^dbO#9DqJ9fUper$TD2@t}_6{rs+BbP|`O#YYbFz zk}6jKRiB`-PpGle+$Va-0eX7XyZ;D{$tUGM)Yt`KbQ;=Q_dPG*Z6kgU@a)4?q%#cQ zu`y>D+Ya!{>2JCEJHsvS(TS((-OA7(jzn&y`a>YACY@mb&l#v(0pQP~v9r|JneMC} zWfHA=cXnuu!;3pxjh!EWXKDiYmogP*!W8%#(vBUQWz`8{H;ku;bF`7NIOM_VC9*$~ zO*r(h_O#ykSG!hff%#qG-1E%E=OADVk;II8^Nt zgV@6<{jiLUoRRi&ST`|3a%H?w?k+)cI2?@tvU-plI3ZE0w)oD3dLj8PnSnHKNNtG2VHt_u^zztF5toWe7{g%-GSUd(-ZPF zxuvAhqoB^RqN`FL|ZzLbjVo5>ib6uR`J!cnPS!x@*-hPRcT%4N^MglD= zrOdCR^wiV*?i4=N+#loxaRNx5Yc4`M?BQXfvp!|#cEWpTz5_x+;m(rpmz^Rg28O$$ ze4FOO{*iQ{kao{tCl++fO~|zcelL&iREWG9Xa!7P!bg+WH!Az5Uf-t75$?9QSGgj7$0aavw{kxW7l7T7<0m2D zKfA)=_Lz)30+SDv?Itsj!CB}7<+sqwmWY#$dg+NAKfg5^!QagCW{q&O7Ws|3GlP-z zl1`~|tUEzty$K%}cLM1gqjZS=-V$MO-~_Y@K=l4rd`>bWAKf%qH~*;=SsKh8+z+Bc zw^>TlHg4JT&r-;H&@l&20(S3Ink)fymoDw&R=;kgycjDC+!awiS`t!Y zfq}0Xh+m1kCwrDIjo`sHa2)We5o`ma+rUEUYlV<0BZF}Ze3CpF--vHeri^dK*<;t% ztDG6+)VLeazojexZd3ZLuQSAN>zn&F&%YDLZSE#bf#qKKrVZ_zk&W$cCD_u6`&LAD zEwY%M<-e^2TQotI4f}L6rmXMUTU|c!JymeuGi31j7AoAMbX)9L--&z^8}u{K%%)0j z-?!erA9~vyxy{zw*2ryT($DhuDwh^@zh15@CB}Ek> z=OH35WC`YTb2^w#gL@fU%rlYgF_h;F2a8zZ@3+f#WOt}>$^)q4Y_OH~nn-40^#-#y zg?hMQb|{S(*>d%Skc=$-2vjlNF!uwc_7dhER5p32_912C0?7}uKo^FzURHNhf!&>u zp{}kvKO-GZ-!NTL*;bQ2A%dGp5RqEAx~pqyHk)7|)-u%GG(rU5zBApX-*H3b*BW z_8o}zwFn^x{INNMJzWa^TBJFDfH^O-9*Wuu`KxkIk@vTUSz?~9Og;}m7qs%jXe znD#knXj}a*6%IE?qd*u`FO$>@T2Kg~Xzk8&#ZK&1v^&q*ZF6nH9ipjf%|~y-OfRrI zF&Fq^rA^>e5`D6)Su3PAlVx`z`x+_jwNdSFts(lTHAJ7gb=}A$?RJZ`AuKi)ilK@t zNVG-W+K2vJj?`#S%>-*X=O$QD%vfS=f1|3KAR`uy9B6NlO!emPc6G_$qh2NI`n_^> zbt_ZX1VM&OtqtXu5jo;O5Sh82vkiq0lsv>w_}Bg9xv-yb_bmGfmt(l+49bbFeUU_N z+L-7kRglq+Yo6@ltQ;9}+zFif8~jj%zh06+9lC0!Z-~%Lu3Fl}tR}?hiVV<rWNLN@20EpV8$}jyJD5LV~~I+^O;kK9;ar8z9Ui+JeQ^W zqm{|l%8BkoVTsf8-M)+LH3&tB469>pdXsH#Fu1wZCgi+O83$urLkNU0elmY@OE}qo zlup*f>f~fn1!kDFuASf2Cd#>8xlseU8!+Bb7E{e&f<}L!ri^;5w_{|Fn7u!oS9E^r?23uX_5$r zQ(7nbx^*#q8ZmNj9HvfniW!jSS|paFpk{cx(*5Xkh#+e-kP)NI@nC6nS5^~fQb9@odZKM9Yyf0{YTbLt*H7e@(z+=Fvfg%J|7G2QWElfDt5R_YdGO@4O6GS2ev;6w%y9G?PjoX z<%eLqj4VVPEP(Cu7|lJfox>ksQ~F&p4#!GNc#hJ*@$sdd!1huZwsXnfzCo$u&ILAI z`*a1ceOj=6+ED!s6QoEV$InYFhbv>qm0Ua_1^$&WNe&C}&;gE*e=#c2gyGQ#BJocb zuvf)oJ#<$AEQ#d?hypG|DeM-8T$g}*wOY}Jc_Hoa*X``7}r}3}W`Hv=n!5IuFFa*PP;c_4e6#W-s!>HvBU!#oroE)trN5{1` z*v})?5f)$%FCwe0lG}CrYm@?ye0M!cYWD>tv+Gt`I|^K9h@$#6_F zCtq&>rt5XxH+l7Xbi4Nr%6`|aM0phWl7UC{>+M5J8k1U3$5Y^3PoxFU>9qoFAH{?-8AO{T)+UXNzA{nXMG!~fnojfYcsIHgyX%=STRx4rw& z(?|1gcOLHEi>iNW`)4mY{l({6*YI!}52y7?ecAqQ`n3_?>G?7br!&myz38QeXtXmC z;bwHB^qA>p^&AAeB4&U5>@c^f@)s%z^(&>Z5@ZUoKw<@w+wxxmeJ z3wn?*6YV3lu6={wpR0Jz*Hz~G7o|}11U1Ea85FPk>ifR;$Y^GCbjDg4lQ&E7bVGVj z+stu`di>(7i|w1;z8mEwbq|bpK)C|C%FQUC4sc6*5ibucmjy=$A#?KZV0Vx^xEo<| zi94j%q{5}$k_LSXvR?~So{whAy1gg*r}tU6QSfm)lG~FxiAp^R*pAH=0A~w{IH=ww z4KcMspb{3KBuB)AFv(*amu{7pipINJ+-AD+VZr!`)>}`7jD2O2FG#tRSBo`nYPgDS zs%(pL!!g_9RPhV^a4NRNsn`~aNGO}%JwYC#R<{oIwS)y2oo)gsxY zoN1?(T98@mgE0~v$Rcl^wrMl@QqxBAmlhoSr*vb%Y)HV#y5|t0*C?X^m~}5$n*;cn zY24hBGxuT~V3p9Gg&xK$msj#?l>Q=b5ga`iAzsQayRozhzbzWZ9s<79sJuQo`3(uz zyA6fThOWS#hn7ilX(LkvOBkV&Bk7)RTJa;pyYZ%O);lGA;G5&$nDB0*>}p=`#`2DD zEOj?FydwgEHLiE9yyF{-+qK#|15h{tzFBFb&Iyw=b!N$Nu^F`Gk-;a>HY+$(##RgF zM5R4prZ_Hj1P^4nfjpAaloL3#PcBy${peOl>j>vjD1{Vxrom5T5wE0x$)^p}DD&%Z zzacC)-ICMAR3smyaEgQPD@nA62zn++BiTHjyGDV~pQRi}ESb&kSm_Leup}ddfy{f0o4A;HAA)8UwlGmH@f<`5Zc?;})x@bq-nzpO$cAZla{4wL z<_F7yC|Eqh73DFJ4=8)&{J>0&j0u5O!EJh>77Syly?#XmX zOhY&&Oi*X=5H0%z@+mR~+*2?fy2uiqLx4E27FojmL~>R>IKoVqqloIDNLL90zD^B3 zQAOxRvl@l`LU=1_R)cllJd{Lq^a~AY8sva+h;BB^1%@LZ2lFn{@>c;=_9{?E0dW;B zb2~h$6JgcEDc={AR&Pj$;^?s^IQ-RU(xv!UW}>v!)szN{@WppUBd$pG3U zAZt8-#|=D~>Dr!?L&*R+lr&?j!lO-7M_cLkS;4!GkGR`ypT+OW147n#Q0mw{%FT&H zgahosfDVW^P$jFo&LtqB*2DTT@B6yavvBHKoR^>~(qD9xKbaeoJu^2Z`{XKbCssa9 zt9;t4@@Y%1@=*b8=H1fl>P5KC!VHVUH3&2JN3OXvP%A0DP_c!v=&R8#HqDdv3F2x@ zpC=EHacPG?zgA{hCPjB>v1K_;E!bs|cU>DXg+BxdA?lv>X(hi4GR+wc z;>*A?O850?jUNVm4aq*SKh%i6BZapC?nKB=EbSc4G*eWu(3&$;qqFq3{a_0Hghd#S z=G3%?^1>m7P06AD(>vT$%Rz54;bPg0v}S@iS6qzO@U+Ufc_|Et&EwVj)i@d`6p1RC z#y+atl2Il6xe1D78|fElv=JKBio0^pj27io$hSV?j3G-sD0MJOff%Q_Vq4g$rZeM3 zqQl1Epl2RQ8rQw6O$KPBEfG!HW$TH(xP<4VtJQjvrxH_D4<@0V8eK(*Mcrtp#%KrR zg6A5~`8Vftnew4bJN>M~l-wJoW;~YC?YOD;D*lWWQVzqxK~c1d0=zVQxY{7+fX5_j zRK>3IS{#iN%Eo6j1T||mAqj2wY|=oKD3sa=3He-2!*9!vb2i0I(4-W<&9tI@lHqFG zK`IO`bC4$7pd9tpVC|(XmMccR4Wb$XTZJl7$Sr2O7{<^^XP~{JCCCwjT$4zr8J%!S zD-2^?h-r&pf!7smHyN4H3=wkXY&ov%Y$*U;2B^;fWjhd{B6#!dV<~!lLYlvM$BCHzM0N21%>!m29(;CIV zA^VCitZfw%>bk%R{6W(S{+U)BpILC49X9nq3zj^K`OvrFZ05t43Km#aTu2Fo*B;JF z&82MYFvF@%7q~=5U=WB6MDucm`qdO$l$a4Rt-f*IRHrO*edFM&j9nFx6+LZdV7nx%i`MZom{P?LP+Eve{Fpcj!fK1U+5M{k5uxUb!OkgW#SMh9!2GK#KkQ@4ZOM|yj zqFm6;X)bk^I@%f&;1w5CkSgvRF{h+gGd>g|%_IQeWJ-9Dt3MO866*I!(Ao_5lrkJb z6oMrHHb?+u#|mr>aQ=1OiYh>JP??tKsV_)2C%ENtQUNGzI4mad>pZhE*nk>roIxZ8 z7()Of=;Yxr0%I7@0T#=#8=+J`!`#T_Vms;?Zle(@A`7=e&bS@oJnGjW+g1AY&Qod( zrC0)lXF2Bwo4m%ZP(*)gzSdcI8KPc}%j0qA=M0FT@3`9#XgN~2ah)*1DXg0D&BedQ zasO436et6k-JL|^4-^`Mv?2ap{#2Gb$UIPaR+c*&S%2knWx1m3mF-5F>+Bocg*9czJj4^WZ+5EkJ1rV*RCcKu zE)u0X*sR#^qS9A%03;fV0`T;S%v%!niF`Ox;+^jbom%IzIf+v;eQ-)mpJ}HNUR|w@ zBlR2;vbn*|qnl|XS@4IP7 zve?(h`1~`Ty7Wt1H@wCJlSA5b_HX+l) z&5sRfdx0T^+b87xnc&V|K48*kmc2sug#;UJqLZd64#`WZ%>pz?8HuAV_nXo!T$~I- zeOFmqS#)hG3$9ewj^`lwWlLqZK}?D&efLjWl@Xx|7*!S0E4qep%r=+qUj6^T#B_CSsZ0#3S|J#f8G)P`?*9vO5^(Up zofV;&o%a3HG5kH#Vd~Y;GEU_iG%N3)5K<3n(z6K}gFi1)ErU@My>dXyIn9hDbLEkt3rdCUJnbHYMm?GR-BFLUx*!PY_(>x4Xp zVVxilsI1lr+{rgtfD23C)``(3=Y=ZLC(J;)r#uI<{+v^35(-l_97$Po&>I2f>*|w! z+!b()#s)XMM{H1opodMyL$Vbg#)ZN_47!|H$!i8SGja{7PZjQlY?PpFFXi*9PP)Wu;0APDAR4_(S2sx3 zYRj7b$GlKnZ7JqpSbP27-|6@4+!*yR%ea00UC~+FURjJD)vh29F$Z%#bLuxHuDNNm zVh)Ct_3THruWveP>klb8hKFN%J#^82!GHWI8SslIDCv3Vd$nNNP5*q<1C$)c!*RXr zlf&BAT)q2OANbbS=vI36W1=fYoL2J!^;#*C>DeFp)G;^wesZp@8)eooH!&#Km+tnd zk-O}ZY>|SUOXh-tz05?VU}qEF=uxn1e7k2hg{$^;yZ89140>vhpH@MIo7Q7GFJZUH zbTSRlplBys_S=CO^=tM`u@9(MZ$!m5qY7=fg;t?$PdCHu*^3%}c6%S%_Tu4Qy&gA^ z_CB=j!^3@g(Z#Rg|?I;IHXB4--osZJY3ML zK!Wx@wC&Hs{d=XBuNve5Zk{_}qdX?v%wD;jmJ#>8ZdC6x-I8vJ#0GRj59RA}94KdbkSJC-d;+UXSlW6{j;E6lfYYMM{Zk zK16nj?5qz%HmVQo=O55{A0%gBMiL}|_}{Z2z1%4a>gsAU)udRH__*;R__$U0{|OUv zySrRB+-GWe)Yrj-$}B76K~)O{hI1o)W_lIfW5%hXdrQDAgWsN2EM~Tw9_)U5Rk4`8 zd59A@cE2jRpTomBy>dURVli`hh(r8-blXSw^W3~Dx^JThRGGT8itgw0aK3DS3##b8 zormqcSONF146_@Cv!7eI5hGtAz3YYVX@3lR`V4nKFN|k~ThwigCm=@jkIk=&4ZV;5 zur`{-vN-^3AQeFoi{r6`Bp0>Jq0|}oNE$EO3)w_Bi%q$MWE!0A4(`D;IKv&(4ND?} z!bVJkGpd#z9$y0Mh)TeQ;5o7k&A#r)9yrqx?x-HzxGJF*6gfI$l9;rQ?twFXz&9>N6VjN*CRo?yx0~JYjlMNac+nbqG2!w5 zuI}99OGa&=XOvnX-Ar3v=Ju{v3bWi${ z$#9LpvY;p`vI4rANnGO%mBn552rC$KS^iR8=z_|qa#RBdVPanw%Ug z8$)kd?g`>E=c9OQ)fI}b26-!7^aRnRyd<6tpEESjbC$BYr3D?q$z#Zq6+!11g2WQ+ zF~O>PktWALo2%?6rBPmNHscuR?#T@;H%z|%7%|Z7fSol=r;TF=CPT-u14^*04zL;m zdt6K=O2@_Y=B2sfM`ljbn4CXQ|sM>B&cj-I=6*{#xK_uFnd>JDD#PWr>wB0b4&hep^v!G2?olx3jvJ_sIDa92>7D4 z*^@u=mi%o)A+p{;vYzuc1fViQF6Nrk^B#@cSR7@B+RTnRqm zGZw^z&lxp*1~Wnv5=It~X^kxB-m8wc4ryThT;GL^p;s@iqB~eTrta89wRR3gbzY0z z!`{^Bz>gFe2eDY(Mpe5oiU|>QqA%@CyX0b~N<6DpVp6OgBqa*KGE_$aKRM_!pQtpU zfahc9vQ0JW>B3S#E!5M6FSjq)PnOpeUpp6U0We_K{(|Nj(rN|pf`0e-0)*pY7aA5I z#DNP93*b{Yj5*_vOxHRc3~E2+N#kS$v^Y*iI5x0me7N0o{A}UxURycumKEtx5%&GZi#OQC zYZ`(}$?kam;j6zlXXY)Bq%bX*j!Wmaexs@DFY#GJsXd3Xo?=g#n3x2(!s@A(b+>b0X#VuJ%cfI_y6*PQ z1E1&AfquHUy6$$F?OA2UsCKuf24{~!e5cxeHpCEm@|a8n!Ge8su;&G*kD;oc7TC3U z7x+j*+J%U5BqeeibY1B17Z9ig_mVfFg{kkI*l_#}Q?H*TDm`9Q3Q3Aesp5V$klKnh z0-OpfRakuhA5v(7HYNT~9!Hz#i7U;eUMDm%kE{qwb1+!3Pl~<7sw^S42lNluVL_ms z4#-%foGF%ixi{IgkG&~&QsU_mw4MgKzmqsV(%PgM{MW4!H2Y$RSev#~FK?v_RYjMj zt;nGU&78VYlQK%K3Jehk6L+X%si%3phJ|YvSu-)pp(C6|$?Rz22cPHcYgypg&^$Td zlUlO5sgvYv1dVnvz8`9^3dnux237{QKs9`+>1G+F4|=+j2$3#XQ~zZ9nH9_oW{K`X zolvH!GYLF%pE$tlc%h-{Lr?B{cFMhv@gDtq$ESC_^YkZne1&G86U+|g?3EtUG2wUb zLzDV8fvp6#Vy{9e>{!3-`^WwKQQp&n&=(q>{;Tw=FA`-wQM`_K#ho+WJFDw?0?#4P zE(krh<4#MSKO|7=Lb2kU$GG#nJ<#5i2kFb2MSvGlN^6I@ppK8Kt3nrxot99aCDPzT zsv-Z;#RPUS=yFFPKRl!1ZIK(AuitOyTizZKVcPAYB9M=3``dm-VISf*EuHJr+V!YM zpV6kr{cHgEG{4scSB7%6F&GVRq3PhdqS{`}p}xIJrOUN5@^6_s+}xN zC5Z2c-K6#SdVZxe;Q8>K4jvYbAG(K5!tN1Iut+d*OzdrukoXa;D}og^9z?p@MZb;c z?)1M0CI_pvXX?6O%}zUHT~pQ$q~N+$j7QhXQoS(|4K`|Xk-nY0i7E1_ZY{shN6TI) zDv?{e^Z`A!+jg3HV76uKffdKFf(%}Q?z>22B0KBPC3-d3C5E!wmk(@B+- z8-dT+*8IA9=p4M-J*)N;$4F}1EZqrxoB-?IL@a2DCsFK?lR6*RVqd0kjtLFYMNDm1 zsjS%8j@)(<7htRp5@D%JD(EAP6iR=j-bQZsuzK=fYW!YpV{Xis`FA9AiQY~Gz2?~r*3Pt;g2=Zf> zk|HuuzKZ=t4}ir-qkJynT0UgYp5w^W*f*nmmYw>O1h{=rj^i;k=yXJnHI5RQaP7?LVNwPrVwd9mA(kcz zw-@uxi;=@)*)7i@E}^1ExE&Jh(uovd;#afVx#I&BbL*0Sz2N%2u_vOz6VW>VlkB{X zbX@U^S06ni|2L7nu`fo0FGlP9Uvm42o&@h-q6wdh22X`mSAJIbUBXEO*QmWd9}SUr za8K-O(ZK%ijXkS7|KwSEljow|-1m*;!E@}qdEUl+p51R>52L-fJoq|K{xKTx@;~zA z8(|t(IYsUOJA9)Z9pB&j>eNqdM5|(#_BWz+iXI!a2|6g+h_Jakcm##}3z6Up^a1Z= zvsT3F#w_>0LpyE`x?SAFqnYh~?!VU?+BE)HB=)d&zPdKJc04jU4(!YI$b9-RWPT+Y ze5D?l&qVnm$+f}LAoCfJ`PFFf)exEbfR0n3rq00_YQj?vVL;*pEagA4GfIK~M z$Nh|LH9TH{Jmq_SF@1H0?*dFu{O*6v>ta;G+7a2$IYFLmnT|ebsy1b@rme*GwCml1 z`6hi+=T;lK!yWQLQf!qvO6Pa*RngB<54IP*ClV@bccK*C7qk0^r2V)JLw81Qc3XrF z#-4~IcJrkUtFEJMN?m_a8>!j1KBisk*0YCw>mk`KX9N2_?Of;KQ&97lwfp>l_7uIZ z+TwTX8zu*1Pm_0oz5ghYRBiX}sJ>QrDz^;Eb+Y?$Wz?|KgFm+`b?$Q?JW(O=sC3=RtuiCJu$@gov1YaZUS-bmOVb5t3dhi@!&#Q3kD~H}yKK}P=qq+Tu z(skGIv+mA|Tdw~y-15yx@Xbg^<~vW_dGRgJpi{AHo|xa_9lI~NBa%4%V^@`*^J?dB>%jHhqI9Y!~I7@9^ZiI&7rl&?gGt`TL>o@PyqMJoz3^UeLy? zj)rq}y~LC6Yjb<>eV)8%OZhY$^e>Ts|F0AFgGj*ti-f(TBTx9>8~fKtZHM|~6w)8s z4b?9Z=SLAX;U0*+Umu_eIqw7d2F*eCt+L_Ox8G!J2tSUn=aY2Cv|p68f5P2QZ5IEN zEM8Xbys(!okV4&0x%;;W+a1|6xrcpn0TKS4yPrkaVt2ruD-ve-L7gXZPz@BA!v6E%m%RCF z4u1(rl<8xUC_Bpe|23s}m9tDAjIo=X^j^jPyGUYB7@5JMBL7~ys@Z70$L*|ymu z59zpzF>P)}_Z6)p_x47Dy`*E6E2nok)DAM!R~(K_t)q< za&z^`Ic$kiwJ>?A-x$|Jy*r!M>F57Q?ihSWA!SsWcNMSln9D3hlvZ-K~ai#w8!@p;Y#$3BfJ^q~V zas4K{cHdnu>e;)?*4(hvzLadv1(kP3Go6|;^EI#ay=>NfZ+#kUpuMY_2JI-E+Jfr% zJ(^L^@Gi;RqGUxsT{*l!MyGtHa9ZG4w$@C0yj71{C?_+cAH42CH_)E}~%Q zeq9L@T(q63vMzdvi>)2}W_IDaO~C8`rsmoh{J99ntQ^q!Oz(^80HvEbT%LWgvD@js z*ctwJ81M<$r+}#(QWVnbes+vf95xf*?R128YmT``e)ge`X?rg@+zTzRrT6_&Z{L#1 zhF!h9voQD3qmx%^@j|%KcPz$6UlRBrrD97i|M&3r9tE)Jc1(L_ZSY=gkKG%sGvVyh zxk(*0BhH8QoISC7V|EK{N6nJMURa)dgeUu>YI>u6GxX$3;nzQno)Swck4Lc?c;pBc`V=h4D9-T?7iGf zuE>hc*E@@Nnw)2{^_;x3cfSF5K4fC>x0UbZer~-2$ zD@hS(u%h?d*xtj^@NMqAR`-wvUw%z%LzB@mdJS|~(&)BkH6)_BnC5QSB}8zp>9-S5 zqd*C%H8j0fi$?ux>p_Ao5V30o($Q0{Kz1>h3MKs&>#a3t+NUZJB_?NO5pzfUCGa0- zW=?kXFte~(&6+Y*-)M)SqX}4_ZBecuO*2l>mplT--ULLoGS6Vv*Ob~0a!UR>v z`6tUix#mAw{-bODCi$y-V6;*n{|U9{C(D0w&3~Hwr`7xndLt~8ujV&P{#iADi~KD$ z|6KX!*8KD3pI`GYkbgnVf1&&r*8EH4UsCh4y4oU5(4G9?@iU=D1LN^yqq99BJf>?> zg6)bEj`&tx%aCg%+_h#BQI#TE^Eb%fQ1g?#TC$qURG<8$afPZ&zS{7f>g`TE2+gh9I(f2eQGeF2eE+O=q8y zIJ$|o_I#fxhE!~?nogLK|7sa(vo;J+oo%|*a-?jklC=^(QVTw z5_pmeRJMxhcDS;DJ`6@`xd)TBO>ZE6U9!6;Z=23p+Q*MewsG6^h?zQtN;FaWV|5p4 zn&9uEO;`(USVPk!-AzJzG#w={v1#(uslU5EV)$n9)c?316H&B*Yl6Qf9(GOoBiB*? zkJse??yIqJ$`s0AR1U-SrNl!^GO^$qh=#U5#AY({ju-{Z5)R zVZy|TLfMqb!g_c`qmhV<{|`%zxpAua+@)`TaB4dxWcyJ`f%HDf4$I{ zr!O>S-*RJ~J;#`Daz9M?-w^%@-2J!*aR+dZ;hw@(cz!MJM%-<R?MU=VX0?s(h@xD#dQ*fu^PQ#s!`*YkGxBwT!&A`pX&B8U~&cwxW6xYngorRl&Lk1hrW+)mhD+c&aN?hC+gM%*p9+i43iZ5mX z#T#>g;*S>c7LS~bUwm>QP`r`=ieFX%#WR-x#W$A%#XFY+#Xnnt;-P-vF~A|9c&Q9* z0$u|YPnF5%IN*)=#anL&iob4vxW!}d#V2p^IUZv{$5+zynSIQ;q+;i8YHp()k(C%F3S62c{0 zE(J=yEJ9#N#$1kHa%Kg7$(l}}zBqTLN4GTmeh~JAf;JtAUb*>w%Jon}L#vTY-{`NuXq71}OQsmP$xQ zX7Ni-=7ExxMWE#6PM~DwHNbA5@Fv;$BO!z9-#q-1hfjO>tcTz6(8YG|t@H0)8V1(E zkC6U){GS9$Cf^U-2>cvy6Yx>sWxy{2F9+TR@;3v&ivJ4WH-K*jejm66_^-e#f#LNG z^?eTaZQS>9KNciTcu6LRZ*)msguG+}__>DswgPViz6Gd{J@o>+fL8%ko+R*Hz&_wz zz!WgNegko&@qCrW%mDure?L%a@&IrWa1b~Rm<65y+y?wQ@wWrtgg*y712_b12IhgY zfd!zx=sOHN54Z!U@)dzAfF+>HSq6re^pXl5=_WgY(oaT!(ouE+rKgMnrK?;Gl)iEe zQ2NQWKO_d;OrYLxd zlC3@u<5i)$v+%O__GgL<=GWbXG3uc@zVK3KI6*&ViVNnq{&^VB!KOOzvAVZEQ(Q2= z{2xc?amVTR$k({%Q;r;GTxdN8)I7G09EL1<>YtB$aU2FLHtf$h49!3LoO2hPcm4$z zE=;U!@912$F*f5(7zG=qUvk>fO%tY`e%znO2lIvD9eu&XNyi?4!ilF$KIy2IS$}r& zl*VIDJ)?Q%O*dY5=2>%=EM2y|{i2K4ZocBpTdv&tmfow9sdT1)AiHgQu2?FMUVV)? z&0Sr&TxKAd3;IUOnV^)}QOV>}8Pic1N@nvxrdTW#&H7BKk}C)KLOCdAhKrd}CSOkW zp!e_$Wy@v4y9+_7k{S&9v$+h* zB!YCdm`Rlj#nI}M;bI|`DV5AB#mMZ+mdYh_Su$721m!{@$R&#dnV?^9Cd*_#I;?U8 zrQu{M6XY`e<-nF#@RPgl&Lzy9^Pc;gaBC+}^rBTzBFH^h9Fl7o#qos0YC`cu9 zxmqkjh6}}HF`F9=D*5EjWHx6j-Id>&%w>5gli6$EN%AgLl_H*H$1Zs`gRe~aF-i?`EWrqlh^v+$Gl-h16S@zk7*rZh}L(r8;_#3cE z^=yk5@&jhW=ulrFmrYqD2f0FF*wRNnIpoPgkv2jfL&^MTP#C77!oRJ&Zv$#-nC(I)bTUP}Ag-R))jWc4Fah#P(!mBxgR#ozjko10bXgHS< zE?sL4K>|rw21cOfYD32~T`+1n+n*)bA`G&V*d4B|l}Iuum7$~|Rm3t{4O2drXj7Ew znao8miIgpumCPCt5ez0vL0^W}C}pSYEQby`Kqt?Cx;|M#>WkL^GFY^An<51VZ`xe>&}!%3dQYJ_7DB_?0+Qrl6UXb zi<4xZs}~L3SLyGE9GonzHMp-aq9)};Rt*a(RV}bRnYXpfY;HwXXGw28`>kcOKX}DrN^a``ogxIB(0)0VdS1OZ9Q#h)E z+{{*nXyr;iZ7#RX?t{V}!}e`t@5B*O*!72N+I!nKUa?L?9K(J0rnQ~xyV~vj#;&zC zSmEtGYt|$-;^lsAPj~0W#QH1jedmS^iHkZl(r{P%yiFTdwW759s{uH{JBEAecyS+EV<_{lXzFVNnQGydFX{tmY8y$<5}oXAbj?wqEnicP}&>ZdzzQ z@XLkf?Y%dfmfs#Qub#2kym07!=GeO@n(1vnGmUS4yBRuT$b9Yk^Uai}<7QRQgXV+% z%T4P~d(G$K74yTFzi5_T^KEloo?Qee7Bi=>W|D{+>nzUkCgG)myyrmKb6 z-7{`{$&R>A|3&t^w(`)h96dwtW_uB%?h2oao{kiu=b_}pflq#Kx!VTwljZOK^;@5x zTKbvy|91HgGHo+%m~-`#@Lc5sPrq{Ytw#-e|GQOAt{462;l+c_|BCm&>LKH@XTR3| z@*mdJk6KnV{KF5b&ja^j^|xNpRiJ36{tCwqA3np4uP@{vPG?X{6}xUME>=P`H}L! z!>6MBZ-rkilf6O8D!>~&I%4qZ)Bm*kzl*n(|J@hyBPRD(h->d{{J+UROzZzg*l`#= z{Hb;59lp&Rn$l*6bbsufcmJ^n?)m>Q?R7#+qUS&6ZWwoA2XK91ie63wE9o$cobsP9 zR0amaK}mCIQDAbFq=`3|;z6GN3zgBUz>P-Td8#mw&t9!zz_1-FC?Zd!(=7^`OTiWw zUfLRLae8gAg#=1lw>Bn1RmQ)nlrxJOgP_$FD4@s8q$;*}#Vm?ZT*ZtlLN;)hw8$cz zB)>^C%$=EFsF2S1&fUH3UbGsueU*=TNGT8XF%EmPv@`WNJ!~D)H{kjz0U?;;g>B}X>YYo#X7lzS4(HK-j zk0nL$&uNq+Lr;|p>G=_KxuJFH6;Vf zN@ljP=ypTXm|5DADhx5GNo(Z8!&cMUYT~2~Dod827zEp~g7jTG`U&Z$#PBI_G+~OF za;2Cj6VtnHeb3r;8$)=GSr(XOxN3~WrkWC386$t2&M*{GHm=wy2FkYCZD2fTX)et+ zE%}0NdG5lY^C3IS8fB$ft-*s4BQt)Z6M!*9)L@r_Zb z12NNVqfthjT;qz~lCKQ)k!EJsFm01b&kY7pa#cgpPr=5FJ2J*aBDw}R)Ld<*lGF?& zV%GYS(2T?IUx4DSY;0SXjue51BiZtx${6aXZm?7(=1{n(d0@4CA>Uf6lo<1({GyH* z8J0mS^=Xd^T|qJ>a|H-#Z&ecpebSEM&DY25FBXPmcPM4W?MF^CSI}r!bx93Y80xiH z(Ew3;q%uGw=`t38`t(z|Ldg|bcOu*>_u3Z?$P5RB)#~^54x|VTDZvq3M2i|GPO1_s z1!>7;F*AuVn$xo(9oc;XYFeP(WM{DnE(-eW=vy!LWe3c>U7PdWrnP2xGfS>)PA@af z!%Qq?y|t$*e4Cq7aS>J=q1`)NDGl~B@`V}VW{bNCW|$dUO&@Z9dliGSR|MER#KII! zb=;XPWmS2MN*N@fq`&BX3B*=dRv*_!D77iPWb9*5ULPaaRv8+Wp@UMD2NCTl%pV%= ztJ*GU18zckuD=gjc*nH}F=_>bZ!Hr-P`muS#jL-_S~l!&2Qt_t#HiIraEHH#U&_To z&ifektLbN(_|muxfAMTSUMrM;N{_cakFA5UfYmdNVGTJ3MD@6{pC z3bi22tR_qkr%zgpmJE3r3tbSmdDYm?Ny}PNm0>S6+NDrnoRgiXKUWxmpfIS7Q!GNl z-JTh>PA*r?8Ok^5d2vl$$}Xu z+FO$ms^LRA{qi7E0jnUPeOBIp7;&R17inxrF>Ov&_agixO{iF4s>T9|5t`0N*+BU9 zL2tTqTH`5=hYfDGNxoQtylw`RJqQxxYBK9SN5m)L6y!vEMJR* zVdTFPJF=h>FP|CtlcIXrmdoS^=$fi@H-OnX4C^;_{cbwDQ(Xrp?W;4zLj9Al_2T*F z=J{~8BsS&Fma_;eOW(#3cNvv4(+8O^GL2K<46`8z&Ksvtc|#v=#6LCuvtk0ASZF6N z97aMu43^lge;En1kXRXWzBTxl@XTh$wD%%qKvP@&z!xE`r|WRkD52;GW;Ul?s8>#^ zI*}wfGRayl5hZW%s(KK`w5pS9PH10J2aHI)tTG#Q3Z+!2ihwQ<#T-PnS3*R3wdKFo zN4$m45(HI2k2zd$*j~s-tM#0wchkzA&1cnwSydD*EtS!c&5D{NqrkpG#Xhu3+2V~? zbUmqriff)Gv}%(mk?zfPq`^=H%fDAgtsPnn-P~oG`_()F{qnj*cUSu&re!2^td{0A zBuK()HlP=_4-)ITEQT#JqsUk-+6_krlMH6Ed8?I`ElYsFOc7Zk17YcPvSLw?93GzM zM`+Fcb8Y&Fh>XmaqIGKBZY?Y=8fC-(5P%G%QeoT>QL(J9U(5_JPr`snNm=dJ-zh!btR~mn*?pOjP_~+h zNf%5e$E1*cvi+t%DG#Einyrz-VR%I2+D^~p=^Z4siG-HRu$B&hrlsT=I@>Z&N0=_qDx$(rHAoadxi6e+* zCdVwGR2k+v>~ODIDM&4!Nfx0u<8)9_e-$@U3rba9kpT4alZg;3b}~f@juw$E4I)8Z zZe}pEE1AxuvO{E;&JLhXhU{nT6sN|?*Tjvr>No;`ubem*}KD%p+=pzUz5 zm>gl&C7Cnaz}o`!2m;J!N|PcJQ!e<5gdA>mxitEc>e<~KZ84drAi>d%(^zTH+bdn) zaZYGQVIa>WR#M#NIldOhX)EJW@`?^K5LT$v+AtoLB7Q_ULt6%MH>{-?uEu?3M&Uxk zZ0h3q4$4BgsH$cqSOTgkRs)Whc!+mM1G|tK71VhR8s5eulLSfG_QaDJ28re2q^57V zQNU0oXR;-uK5+|<%iRHwHhDtwPFSt8}ywNjP8a?BADUQZED z6$txbRxCjqNKUk7v_#iOfK|i~imUI@tBmKf4V+RWUZ^Sq)hzpS`3=Q##VkXFjPF&A zo5#d5!TeZnshFZ;X1w7>9SlfH<$C|fAo7rT+#-#taJu8+lF2jTPY#iC$*JAnIq+ zT{fCkU28heGQC|r=!C<}*Sh{%eh}>gxKlU+ARLakK_O+4fxyj-8yjZ&a}0VdE*#NA z3oL}7m3N{wm=SbxtIlhzM`MNDhQWrxZi`KVf;nF^qsTg)5sH$nL2vpTo9CUqV1Q1C zUWw+mc-36F)#j_p1MMrRfL<9mDMDGKaMzeMRN648beiFH)rNK&wkr%eNjS1}B_Nit z)wDDsqs(wmu}`U#+i$jT^VGV&FyHs!bS=gxFTPE{&Q}*jFv4CHUd2 z8LS{8hmyNOrD=$s%j-{6JY5(<@Cwi%X&OTPos+yW2Gnq%cO)4!;&Urel6@GWQYa|N z5?qep&6`w){#-%n%m8#Z3^K#K7_>-Fpi~CqARWbk3T5#3QvhTGX_R)*%P1W?+iHh7 zRLALhRw&g3vK=3Qu+(|at(?A9YNF)rtaJ=OpTG&dOjIlA@bf2^k zYfnOid!Z_Ns^qgQYO>h%@1|&RnZqouU$2Xfe+X-|7W!MQsSE`mj};OMOeaUFa2|DT z6#WDKPM4@Jr4F3Q6fM+Fh4(4IFPVa#Ub#Cq)?YyEV-IM8A-P6@G)U&o{Lr7)j8ZE6R@_Ez6_CyeY}{IZNgdMs=`+$ z;F_S;=vT4T+0{m?+)CZ3_QqZ@w1#S%0lGD>IHTW4F^TaFeH@X%_?Lku-6a?jSJ-AP z)e>^8XVYPDfillp*f-=P$}TIGYFE?t9Cd40CuPiOCe5zpEpe(safg{W)o^`NZ!fD@ z@Rcfk{Hlw$-5kHe7b)b?Ts+XEbpQIyYYc+QFM$7q38p9w&MZLYG8?a^% zGoXAh8`1H&0B97}QbW=49Yy>v0nyU*)r8(cX^o+Qit@=aMUYIh6CWuabLwCSz^(Z9x*^3 zaI-^76+A*#wD>vDBXX#S{IfQl7A(afHP}G`GiqngZBB2kYWp^tQuL({^JJ707VEGl z8UTeR!d5@#by31ndMP0U+69fSP%2?)(W~T3lpmQ<4e>~q(oe)P3UM&Nj2ug=)I8x+ zXP`L@n@5N!jRD(G$=YYslWV3&Lx{Szbwzv2th44UpVzXbxwY2JjA%4kt?5iYfR>Xj z5&oxhs12?BQz(j=8K$9BZ;iYe*i~^DJ`3a4#zEnemQW~G`!dUc&CPwx;e^lPTjG9t z5-HTL`NqJ%UpKOi zF6Hd>T+VVtHS3TsXna3K;tCUo62g9263G)|h(mT&wBGP&>o2!%+1+|@>sbuslf|&b z3jO_3=42}wmi}QMVh%t*vF4Mo)^0GaFiPVriHA#ik9VXYoc{(7T^)Vb;B?96O=g_m zb4Q7#sCBlQ!_#x`zOE?r{F+O{R+6u{zR8Md&2FJUCyS{;8FHxnpwYbXy2QrSrma#c zwpnGTtpsK=ZK(ZijOp8!&*N_K8$WJS_J_w|GX9Md827OD`aGW%uo`Gm)l#+}Ud(aH z%qtb@%UJ(RBWe^H#ZVTdf@y19+_=0k*4Qe09nym?e@#!KqqDG z3BTym#ML)p%9vM0qaWU*fQ9qpD5w?2AXe+M9gQ@CMUZ)Oi61*bFRXX>$Wpd=F(18M z%<8CW%Cgp4%cM=xlT({BnglA0glByob`I4J43y;}8LlxtYkIS;AV`O56!!hlq#6tK z5;Z-Fx@s3Z%V3%Hy(9WBvxe!#SoSka0F9!I+KzIZM!B3FIyNVlH2c5e_1<{+P)cx! zIFHdSD(hB@Z`#UJrEO~l35;zme;K!`#daDf>Y*_LoffMA`ciV(*a>I!VhdH|THi5F zdaK_d39l|YALcnM?R6$pdJAvttS(3J@3|?c+F+tO4UYU|UMI)!g%L?{BuTkt=wsPE z@-ztMZ=S!46$^|iSy3^6^PKsc32L3cYtH;#0Z)i*y1G{}T+f^CL^m7#Smv2nv&O7R dbYE0mBDbz*L)T`rcGHG6kf~#Xb~7^Pe**_1+=>7I literal 514327 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�OB}n9d!yHZ_S65Du@th` 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 Date: Wed, 10 Apr 2019 17:15:47 -0700 Subject: [PATCH 196/413] Only test clif emscripten on nightly --- .circleci/config.yml | 2 +- Makefile | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 9f80e009f..00d74cfcd 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -274,7 +274,7 @@ jobs: export LLVM_SYS_70_PREFIX="`pwd`/clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04/" make test make test-nightly - make test-emscripten + make test-emscripten-clif # make test-emscripten-nightly - save_cache: paths: diff --git a/Makefile b/Makefile index 947bb2e94..383d4ccf4 100644 --- a/Makefile +++ b/Makefile @@ -48,6 +48,9 @@ test-emscripten: cargo test --manifest-path lib/emscripten/Cargo.toml --features clif -- --test-threads=1 $(runargs) cargo test --manifest-path lib/emscripten/Cargo.toml --features llvm -- --test-threads=1 $(runargs) +test-emscripten-clif: + cargo test --manifest-path lib/emscripten/Cargo.toml --features clif -- --test-threads=1 $(runargs) + test-emscripten-nightly: cargo test --manifest-path lib/emscripten/Cargo.toml --features dynasm -- --test-threads=1 $(runargs) From 02a305cfbe3836ebd7d823ab9cbfffb6cbd53a86 Mon Sep 17 00:00:00 2001 From: losfair Date: Thu, 11 Apr 2019 08:44:18 +0800 Subject: [PATCH 197/413] Fix function pointer offset for resolver. --- lib/dynasm-backend/src/codegen_x64.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index 2544414b8..ff6a5359b 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -165,7 +165,7 @@ pub struct X64ExecutionContext { } pub struct X64RuntimeResolver { - function_pointers: Vec, + local_function_pointers: Vec, } #[derive(Debug)] @@ -190,7 +190,7 @@ impl X64ExecutionContext { module_info: &ModuleInfo, ) -> Result { Ok(X64RuntimeResolver { - function_pointers: self.function_pointers.clone(), + local_function_pointers: self.function_pointers[self.func_import_count..].to_vec(), }) } } @@ -201,7 +201,7 @@ impl FuncResolver for X64RuntimeResolver { _module: &ModuleInner, _local_func_index: LocalFuncIndex, ) -> Option> { - NonNull::new(self.function_pointers[_local_func_index.index() as usize].0 as *mut vm::Func) + NonNull::new(self.local_function_pointers[_local_func_index.index() as usize].0 as *mut vm::Func) } } From e8fe58d9c60a70fa0e513b9187c46df820467fc5 Mon Sep 17 00:00:00 2001 From: losfair Date: Thu, 11 Apr 2019 09:14:29 +0800 Subject: [PATCH 198/413] Implement IxxTrunc{U/S}Fxx bound checks. --- lib/dynasm-backend/src/codegen_x64.rs | 115 +++++++++++++++++++++++++- 1 file changed, 113 insertions(+), 2 deletions(-) diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index ff6a5359b..5366c00e5 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -1142,6 +1142,100 @@ impl X64FunctionCode { m.release_temp_gpr(tmp_addr); } + + fn emit_f32_int_conv_check( + a: &mut Assembler, + m: &mut Machine, + reg: XMM, + lower_bound: f32, + upper_bound: f32, + ) { + let lower_bound = f32::to_bits(lower_bound); + let upper_bound = f32::to_bits(upper_bound); + + let trap = a.get_label(); + let end = a.get_label(); + + let tmp = m.acquire_temp_gpr().unwrap(); + let tmp_x = m.acquire_temp_xmm().unwrap(); + + // Underflow. + a.emit_mov(Size::S32, Location::Imm32(lower_bound), Location::GPR(tmp)); + a.emit_mov(Size::S32, Location::GPR(tmp), Location::XMM(tmp_x)); + a.emit_vcmpltss(tmp_x, XMMOrMemory::XMM(reg), tmp_x); + a.emit_mov(Size::S32, Location::XMM(tmp_x), Location::GPR(tmp)); + a.emit_cmp(Size::S32, Location::Imm32(1), Location::GPR(tmp)); + a.emit_jmp(Condition::Equal, trap); + + // Overflow. + a.emit_mov(Size::S32, Location::Imm32(upper_bound), Location::GPR(tmp)); + a.emit_mov(Size::S32, Location::GPR(tmp), Location::XMM(tmp_x)); + a.emit_vcmpgtss(tmp_x, XMMOrMemory::XMM(reg), tmp_x); + a.emit_mov(Size::S32, Location::XMM(tmp_x), Location::GPR(tmp)); + a.emit_cmp(Size::S32, Location::Imm32(1), Location::GPR(tmp)); + a.emit_jmp(Condition::Equal, trap); + + // NaN. + a.emit_vcmpeqss(reg, XMMOrMemory::XMM(reg), tmp_x); + a.emit_mov(Size::S32, Location::XMM(tmp_x), Location::GPR(tmp)); + a.emit_cmp(Size::S32, Location::Imm32(0), Location::GPR(tmp)); + a.emit_jmp(Condition::Equal, trap); + + a.emit_jmp(Condition::None, end); + a.emit_label(trap); + a.emit_ud2(); + a.emit_label(end); + + m.release_temp_xmm(tmp_x); + m.release_temp_gpr(tmp); + } + + fn emit_f64_int_conv_check( + a: &mut Assembler, + m: &mut Machine, + reg: XMM, + lower_bound: f64, + upper_bound: f64, + ) { + let lower_bound = f64::to_bits(lower_bound); + let upper_bound = f64::to_bits(upper_bound); + + let trap = a.get_label(); + let end = a.get_label(); + + let tmp = m.acquire_temp_gpr().unwrap(); + let tmp_x = m.acquire_temp_xmm().unwrap(); + + // Underflow. + a.emit_mov(Size::S64, Location::Imm64(lower_bound), Location::GPR(tmp)); + a.emit_mov(Size::S64, Location::GPR(tmp), Location::XMM(tmp_x)); + a.emit_vcmpltsd(tmp_x, XMMOrMemory::XMM(reg), tmp_x); + a.emit_mov(Size::S32, Location::XMM(tmp_x), Location::GPR(tmp)); + a.emit_cmp(Size::S32, Location::Imm32(1), Location::GPR(tmp)); + a.emit_jmp(Condition::Equal, trap); + + // Overflow. + a.emit_mov(Size::S64, Location::Imm64(upper_bound), Location::GPR(tmp)); + a.emit_mov(Size::S64, Location::GPR(tmp), Location::XMM(tmp_x)); + a.emit_vcmpgtsd(tmp_x, XMMOrMemory::XMM(reg), tmp_x); + a.emit_mov(Size::S32, Location::XMM(tmp_x), Location::GPR(tmp)); + a.emit_cmp(Size::S32, Location::Imm32(1), Location::GPR(tmp)); + a.emit_jmp(Condition::Equal, trap); + + // NaN. + a.emit_vcmpeqsd(reg, XMMOrMemory::XMM(reg), tmp_x); + a.emit_mov(Size::S32, Location::XMM(tmp_x), Location::GPR(tmp)); + a.emit_cmp(Size::S32, Location::Imm32(0), Location::GPR(tmp)); + a.emit_jmp(Condition::Equal, trap); + + a.emit_jmp(Condition::None, end); + a.emit_label(trap); + a.emit_ud2(); + a.emit_label(end); + + m.release_temp_xmm(tmp_x); + m.release_temp_gpr(tmp); + } } impl FunctionCodeGenerator for X64FunctionCode { @@ -1709,6 +1803,8 @@ impl FunctionCodeGenerator for X64FunctionCode { let tmp_in = self.machine.acquire_temp_xmm().unwrap(); a.emit_mov(Size::S32, loc, Location::XMM(tmp_in)); + Self::emit_f32_int_conv_check(a, &mut self.machine, tmp_in, -1.0, 4294967296.0); + a.emit_cvttss2si_64(XMMOrMemory::XMM(tmp_in), tmp_out); a.emit_mov(Size::S32, Location::GPR(tmp_out), ret); @@ -1724,6 +1820,8 @@ impl FunctionCodeGenerator for X64FunctionCode { let tmp_in = self.machine.acquire_temp_xmm().unwrap(); a.emit_mov(Size::S32, loc, Location::XMM(tmp_in)); + Self::emit_f32_int_conv_check(a, &mut self.machine, tmp_in, -2147483904.0, 2147483648.0); + a.emit_cvttss2si_32(XMMOrMemory::XMM(tmp_in), tmp_out); a.emit_mov(Size::S32, Location::GPR(tmp_out), ret); @@ -1739,6 +1837,7 @@ impl FunctionCodeGenerator for X64FunctionCode { let tmp_in = self.machine.acquire_temp_xmm().unwrap(); a.emit_mov(Size::S32, loc, Location::XMM(tmp_in)); + Self::emit_f32_int_conv_check(a, &mut self.machine, tmp_in, -9223373136366403584.0, 9223372036854775808.0); a.emit_cvttss2si_64(XMMOrMemory::XMM(tmp_in), tmp_out); a.emit_mov(Size::S64, Location::GPR(tmp_out), ret); @@ -1767,13 +1866,16 @@ impl FunctionCodeGenerator for X64FunctionCode { self.value_stack.push((ret, LocalOrTemp::Temp)); let tmp_out = self.machine.acquire_temp_gpr().unwrap(); let tmp_in = self.machine.acquire_temp_xmm().unwrap(); // xmm2 + + a.emit_mov(Size::S32, loc, Location::XMM(tmp_in)); + Self::emit_f32_int_conv_check(a, &mut self.machine, tmp_in, -1.0, 18446744073709551616.0); + let tmp = self.machine.acquire_temp_gpr().unwrap(); // r15 let tmp_x1 = self.machine.acquire_temp_xmm().unwrap(); // xmm1 let tmp_x2 = self.machine.acquire_temp_xmm().unwrap(); // xmm3 a.emit_mov(Size::S32, Location::Imm32(1593835520u32), Location::GPR(tmp)); //float 9.22337203E+18 a.emit_mov(Size::S32, Location::GPR(tmp), Location::XMM(tmp_x1)); - a.emit_mov(Size::S32, loc, Location::XMM(tmp_in)); a.emit_mov(Size::S32, Location::XMM(tmp_in), Location::XMM(tmp_x2)); a.emit_vsubss(tmp_in, XMMOrMemory::XMM(tmp_x1), tmp_in); a.emit_cvttss2si_64(XMMOrMemory::XMM(tmp_in), tmp_out); @@ -1799,6 +1901,8 @@ impl FunctionCodeGenerator for X64FunctionCode { let tmp_in = self.machine.acquire_temp_xmm().unwrap(); a.emit_mov(Size::S64, loc, Location::XMM(tmp_in)); + Self::emit_f64_int_conv_check(a, &mut self.machine, tmp_in, -1.0, 4294967296.0); + a.emit_cvttsd2si_64(XMMOrMemory::XMM(tmp_in), tmp_out); a.emit_mov(Size::S32, Location::GPR(tmp_out), ret); @@ -1814,6 +1918,8 @@ impl FunctionCodeGenerator for X64FunctionCode { let tmp_in = self.machine.acquire_temp_xmm().unwrap(); a.emit_mov(Size::S64, loc, Location::XMM(tmp_in)); + Self::emit_f64_int_conv_check(a, &mut self.machine, tmp_in, -2147483649.0, 2147483648.0); + a.emit_cvttsd2si_32(XMMOrMemory::XMM(tmp_in), tmp_out); a.emit_mov(Size::S32, Location::GPR(tmp_out), ret); @@ -1829,6 +1935,8 @@ impl FunctionCodeGenerator for X64FunctionCode { let tmp_in = self.machine.acquire_temp_xmm().unwrap(); a.emit_mov(Size::S64, loc, Location::XMM(tmp_in)); + Self::emit_f64_int_conv_check(a, &mut self.machine, tmp_in, -9223372036854777856.0, 9223372036854775808.0); + a.emit_cvttsd2si_64(XMMOrMemory::XMM(tmp_in), tmp_out); a.emit_mov(Size::S64, Location::GPR(tmp_out), ret); @@ -1842,13 +1950,16 @@ impl FunctionCodeGenerator for X64FunctionCode { self.value_stack.push((ret, LocalOrTemp::Temp)); let tmp_out = self.machine.acquire_temp_gpr().unwrap(); let tmp_in = self.machine.acquire_temp_xmm().unwrap(); // xmm2 + + a.emit_mov(Size::S64, loc, Location::XMM(tmp_in)); + Self::emit_f64_int_conv_check(a, &mut self.machine, tmp_in, -1.0, 18446744073709551616.0); + let tmp = self.machine.acquire_temp_gpr().unwrap(); // r15 let tmp_x1 = self.machine.acquire_temp_xmm().unwrap(); // xmm1 let tmp_x2 = self.machine.acquire_temp_xmm().unwrap(); // xmm3 a.emit_mov(Size::S64, Location::Imm64(4890909195324358656u64), Location::GPR(tmp)); //double 9.2233720368547758E+18 a.emit_mov(Size::S64, Location::GPR(tmp), Location::XMM(tmp_x1)); - a.emit_mov(Size::S64, loc, Location::XMM(tmp_in)); a.emit_mov(Size::S64, Location::XMM(tmp_in), Location::XMM(tmp_x2)); a.emit_vsubsd(tmp_in, XMMOrMemory::XMM(tmp_x1), tmp_in); a.emit_cvttsd2si_64(XMMOrMemory::XMM(tmp_in), tmp_out); From 91af7cf8a89c5b6c8def34ac683d6f3ffb4834c7 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Wed, 10 Apr 2019 18:23:25 -0700 Subject: [PATCH 199/413] add preopened fd and fix/improve fs syscalls (WIP) --- lib/wasi/src/lib.rs | 8 +- lib/wasi/src/state.rs | 157 +++++++++++++++++++++++++++++---- lib/wasi/src/syscalls/mod.rs | 139 ++++++++++++++++++++++------- lib/wasi/src/syscalls/types.rs | 2 +- src/bin/wasmer.rs | 9 +- 5 files changed, 262 insertions(+), 53 deletions(-) diff --git a/lib/wasi/src/lib.rs b/lib/wasi/src/lib.rs index dac093f5c..c08428dbe 100644 --- a/lib/wasi/src/lib.rs +++ b/lib/wasi/src/lib.rs @@ -17,7 +17,11 @@ pub use self::utils::is_wasi_module; use wasmer_runtime_core::{func, import::ImportObject, imports}; -pub fn generate_import_object(args: Vec>, envs: Vec>) -> ImportObject { +pub fn generate_import_object( + args: Vec>, + envs: Vec>, + preopened_files: Vec, +) -> ImportObject { let state_gen = move || { fn state_destructor(data: *mut c_void) { unsafe { @@ -26,7 +30,7 @@ pub fn generate_import_object(args: Vec>, envs: Vec>) -> ImportO } let state = Box::new(WasiState { - fs: WasiFs::new().unwrap(), + fs: WasiFs::new(&preopened_files).unwrap(), args: &args[..], envs: &envs[..], }); diff --git a/lib/wasi/src/state.rs b/lib/wasi/src/state.rs index 8e186011d..43b2c9399 100644 --- a/lib/wasi/src/state.rs +++ b/lib/wasi/src/state.rs @@ -7,14 +7,89 @@ use generational_arena::{Arena, Index as Inode}; use hashbrown::hash_map::{Entry, HashMap}; use std::{ cell::Cell, - io::{self, Write}, + fs, + io::{self, Read, Seek, Write}, time::SystemTime, }; use wasmer_runtime_core::debug; -use zbox::{init_env as zbox_init_env, File, FileType, OpenOptions, Repo, RepoOpener}; +use zbox::{init_env as zbox_init_env, FileType, OpenOptions, Repo, RepoOpener}; pub const MAX_SYMLINKS: usize = 100; +pub enum WasiFile { + ZboxFile(zbox::File), + HostFile(fs::File), +} + +impl Write for WasiFile { + fn write(&mut self, buf: &[u8]) -> io::Result { + match self { + WasiFile::ZboxFile(zbf) => zbf.write(buf), + WasiFile::HostFile(hf) => hf.write(buf), + } + } + + fn flush(&mut self) -> io::Result<()> { + match self { + WasiFile::ZboxFile(zbf) => zbf.flush(), + WasiFile::HostFile(hf) => hf.flush(), + } + } + + fn write_all(&mut self, buf: &[u8]) -> io::Result<()> { + match self { + WasiFile::ZboxFile(zbf) => zbf.write_all(buf), + WasiFile::HostFile(hf) => hf.write_all(buf), + } + } + + fn write_fmt(&mut self, fmt: ::std::fmt::Arguments) -> io::Result<()> { + match self { + WasiFile::ZboxFile(zbf) => zbf.write_fmt(fmt), + WasiFile::HostFile(hf) => hf.write_fmt(fmt), + } + } +} + +impl Read for WasiFile { + fn read(&mut self, buf: &mut [u8]) -> io::Result { + match self { + WasiFile::ZboxFile(zbf) => zbf.read(buf), + WasiFile::HostFile(hf) => hf.read(buf), + } + } + + fn read_to_end(&mut self, buf: &mut Vec) -> io::Result { + match self { + WasiFile::ZboxFile(zbf) => zbf.read_to_end(buf), + WasiFile::HostFile(hf) => hf.read_to_end(buf), + } + } + + fn read_to_string(&mut self, buf: &mut String) -> io::Result { + match self { + WasiFile::ZboxFile(zbf) => zbf.read_to_string(buf), + WasiFile::HostFile(hf) => hf.read_to_string(buf), + } + } + + fn read_exact(&mut self, buf: &mut [u8]) -> io::Result<()> { + match self { + WasiFile::ZboxFile(zbf) => zbf.read_exact(buf), + WasiFile::HostFile(hf) => hf.read_exact(buf), + } + } +} + +impl Seek for WasiFile { + fn seek(&mut self, pos: io::SeekFrom) -> io::Result { + match self { + WasiFile::ZboxFile(zbf) => zbf.seek(pos), + WasiFile::HostFile(hf) => hf.seek(pos), + } + } +} + pub struct InodeVal { pub stat: __wasi_filestat_t, pub is_preopened: bool, @@ -25,10 +100,10 @@ pub struct InodeVal { #[allow(dead_code)] pub enum Kind { File { - handle: File, + handle: WasiFile, }, Dir { - handle: File, + handle: WasiFile, /// The entries of a directory are lazily filled. entries: HashMap, }, @@ -40,7 +115,7 @@ pub enum Kind { }, } -#[derive(Clone)] +#[derive(Clone, Debug)] pub struct Fd { pub rights: __wasi_rights_t, pub rights_inheriting: __wasi_rights_t, @@ -50,7 +125,7 @@ pub struct Fd { } pub struct WasiFs { - // pub repo: Repo, + pub repo: Repo, pub name_map: HashMap, pub inodes: Arena, pub fd_map: HashMap, @@ -59,26 +134,58 @@ pub struct WasiFs { } impl WasiFs { - pub fn new() -> Result { + pub fn new(preopened_files: &[String]) -> Result { debug!("wasi::fs::init"); zbox_init_env(); debug!("wasi::fs::repo"); - // let repo = RepoOpener::new() - // .create(true) - // .open("mem://wasmer-test-fs", "") - // .map_err(|e| e.to_string())?; + let repo = RepoOpener::new() + .create(true) + .open("mem://wasmer-test-fs", "") + .map_err(|e| e.to_string())?; debug!("wasi::fs::inodes"); let inodes = Arena::new(); - let res = Ok(Self { - // repo: repo, + let mut wasi_fs = Self { + repo: repo, name_map: HashMap::new(), inodes: inodes, fd_map: HashMap::new(), next_fd: Cell::new(3), inode_counter: Cell::new(1000), - }); + }; + for file in preopened_files { + debug!("Attempting to preopen {}", &file); + // TODO: think about this + let default_rights = 0x1FFFFFFF; + let cur_file: fs::File = fs::File::open(file).expect("Could not find file"); + let kind = if cur_file.metadata().unwrap().is_dir() { + // it seems bad to open every file recursively; can do it lazily though + Kind::Dir { + handle: WasiFile::HostFile(cur_file), + entries: Default::default(), + } + } else { + /*Kind::File { + handle: WasiFile::HostFile(cur_file), + }*/ + return Err(format!( + "WASI only supports pre-opened directories right now; found \"{}\"", + file + )); + }; + let inode_val = InodeVal { + stat: __wasi_filestat_t::default(), + is_preopened: true, + // this is incorrect + name: file.clone(), + kind, + }; + let inode = wasi_fs.inodes.insert(inode_val); + wasi_fs + .create_fd(default_rights, default_rights, 0, inode) + .expect("Could not open fd"); + } debug!("wasi::fs::end"); - res + Ok(wasi_fs) } #[allow(dead_code)] @@ -195,7 +302,9 @@ impl WasiFs { pub fn fdstat(&self, fd: __wasi_fd_t) -> Result<__wasi_fdstat_t, __wasi_errno_t> { let fd = self.fd_map.get(&fd).ok_or(__WASI_EBADF)?; - Ok(__wasi_fdstat_t { + debug!("fdstat: {:?}", fd); + + dbg!(Ok(__wasi_fdstat_t { fs_filetype: match self.inodes[fd.inode].kind { Kind::File { .. } => __WASI_FILETYPE_REGULAR_FILE, Kind::Dir { .. } => __WASI_FILETYPE_DIRECTORY, @@ -205,12 +314,13 @@ impl WasiFs { fs_flags: fd.flags, fs_rights_base: fd.rights, fs_rights_inheriting: fd.rights, // TODO(lachlan): Is this right? - }) + })) } pub fn prestat_fd(&self, fd: __wasi_fd_t) -> Result<__wasi_prestat_t, __wasi_errno_t> { let fd = self.fd_map.get(&fd).ok_or(__WASI_EBADF)?; + debug!("in prestat_fd {:?}", fd); let inode_val = &self.inodes[fd.inode]; if inode_val.is_preopened { @@ -272,6 +382,19 @@ impl WasiFs { ); Ok(idx) } + + /*pub fn create_file_at_fd( + &mut self, + parent: __wasi_fd_t, + path: String, + fs_rights_base: __wasi_rights_t, + fs_rights_inheriting: __wasi_rights_t, + fs_flags: fs_flags, + ) -> Result<__wasi_fd_t, __wasi_errno_t> { + + let fd = self.fd_map.get(&fd).ok_or(__WASI_EBADF)?; + Ok() + }*/ } pub struct WasiState<'a> { diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 15f0f2679..45b626346 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -8,11 +8,11 @@ pub mod windows; use self::types::*; use crate::{ ptr::{Array, WasmPtr}, - state::{Fd, Kind, WasiState, MAX_SYMLINKS}, + state::{Fd, InodeVal, Kind, WasiFile, WasiState, MAX_SYMLINKS}, }; use rand::{thread_rng, Rng}; use std::cell::Cell; -use std::io::{self, Read, Write}; +use std::io::{self, Read, Seek, Write}; use wasmer_runtime_core::{debug, memory::Memory, vm::Ctx}; #[cfg(any(target_os = "linux", target_os = "macos"))] @@ -335,7 +335,7 @@ pub fn fd_fdstat_get( let buf = wasi_try!(buf.deref(memory)); buf.set(stat); - __WASI_EFAULT + __WASI_ESUCCESS } /// ### `fd_fdstat_set_flags()` @@ -532,27 +532,26 @@ pub fn fd_prestat_dir_name( fd, path_len ); let memory = ctx.memory(0); + let path_chars = wasi_try!(path.deref(memory, 0, path_len)); - if let Ok(path_chars) = path.deref(memory, 0, path_len) { - debug!( - "=> path: {}", - path_chars - .iter() - .map(|c| c.get() as char) - .collect::() - ); - if true - /* check if dir */ - { - // get name - // write name - // if overflow __WASI_EOVERFLOW + let state = get_wasi_state(ctx); + let real_fd = wasi_try!(state.fs.fd_map.get(&fd).ok_or(__WASI_EBADF)); + let inode_val = &state.fs.inodes[real_fd.inode]; + + // check inode-val.is_preopened? + + if let Kind::Dir { .. } = inode_val.kind { + // TODO: verify this: null termination, etc + if inode_val.name.len() <= path_len as usize { + for (i, c) in inode_val.name.bytes().enumerate() { + path_chars[i].set(c); + } __WASI_ESUCCESS } else { - __WASI_ENOTDIR + __WASI_EOVERFLOW } } else { - __WASI_EFAULT + __WASI_ENOTDIR } } @@ -612,7 +611,7 @@ pub fn fd_pwrite( let bytes_written = match &mut inode.kind { Kind::File { handle } => { - // TODO: adjust by offset + handle.seek(::std::io::SeekFrom::Start(offset as u64)); wasi_try!(write_bytes(handle, memory, iovs_arr_cell)) } Kind::Dir { .. } => { @@ -670,14 +669,18 @@ pub fn fd_read( for iov in iovs_arr_cell { let iov_inner = iov.get(); - let bytes = iov_inner.buf.deref(memory, 0, iov_inner.buf_len)?; + let bytes = iov_inner.buf.deref(memory, 0, dbg!(iov_inner.buf_len))?; let mut raw_bytes: &mut [u8] = unsafe { &mut *(bytes as *const [_] as *mut [_] as *mut [u8]) }; - bytes_read += reader.read(raw_bytes).map_err(|_| __WASI_EIO)? as u32; + bytes_read += dbg!(reader.read(raw_bytes).map_err(|e| { + dbg!(e); + __WASI_EIO + })? as u32); } Ok(bytes_read) } + debug!("think-fish"); let bytes_read = match fd { 0 => { let stdin = io::stdin(); @@ -699,7 +702,10 @@ pub fn fd_read( let inode = &mut state.fs.inodes[fd_entry.inode]; let bytes_read = match &mut inode.kind { - Kind::File { handle } => wasi_try!(read_bytes(handle, memory, iovs_arr_cell)), + Kind::File { handle } => { + handle.seek(::std::io::SeekFrom::Start(offset as u64)); + wasi_try!(read_bytes(handle, memory, iovs_arr_cell)) + } Kind::Dir { .. } => { // TODO: verify return __WASI_EISDIR; @@ -716,7 +722,7 @@ pub fn fd_read( } }; - nread_cell.set(bytes_read); + nread_cell.set(dbg!(bytes_read)); __WASI_ESUCCESS } @@ -798,7 +804,7 @@ pub fn fd_seek( whence: __wasi_whence_t, newoffset: WasmPtr<__wasi_filesize_t>, ) -> __wasi_errno_t { - debug!("wasi::fd_seek: fd={}", fd); + debug!("wasi::fd_seek: fd={}, offset={}", fd, offset); let memory = ctx.memory(0); let state = get_wasi_state(ctx); let new_offset_cell = wasi_try!(newoffset.deref(memory)); @@ -809,9 +815,11 @@ pub fn fd_seek( return __WASI_EACCES; } + debug!("Hmml"); + // TODO: handle case if fd is a dir? match whence { - __WASI_WHENCE_CUR => fd_entry.offset = (fd_entry.offset as i64 + offset) as u64, + __WASI_WHENCE_CUR => fd_entry.offset = (dbg!(fd_entry.offset) as i64 + offset) as u64, __WASI_WHENCE_END => unimplemented!(), __WASI_WHENCE_SET => fd_entry.offset = offset as u64, _ => return __WASI_EINVAL, @@ -920,7 +928,11 @@ pub fn fd_write( let inode = &mut state.fs.inodes[fd_entry.inode]; let bytes_written = match &mut inode.kind { - Kind::File { handle } => wasi_try!(write_bytes(handle, memory, iovs_arr_cell)), + Kind::File { handle } => { + handle.seek(::std::io::SeekFrom::Start(offset as u64)); + + wasi_try!(write_bytes(handle, memory, iovs_arr_cell)) + } Kind::Dir { .. } => { // TODO: verify return __WASI_EISDIR; @@ -937,7 +949,7 @@ pub fn fd_write( } }; - nwritten_cell.set(bytes_written); + nwritten_cell.set(dbg!(bytes_written)); __WASI_ESUCCESS } @@ -1209,12 +1221,77 @@ pub fn path_open( // entry does not exist in parent directory // check to see if we should create it if o_flags & __WASI_O_CREAT != 0 { + // REVIEW: the code in this branch was written while very tired // insert in to directory and set values //entries.insert(path_segment[0], ) - unimplemented!() + + let real_opened_file = wasi_try!(::std::fs::OpenOptions::new() + .read(true) + .write(true) + .create(true) + .open(&path_vec[0]) + .map_err(|_| __WASI_EIO)); + debug!("Creating host file {}", &path_vec[0]); + let new_inode = state.fs.inodes.insert(InodeVal { + stat: __wasi_filestat_t::default(), + is_preopened: false, + name: path_vec[0].clone(), + kind: Kind::File { + handle: WasiFile::HostFile(real_opened_file), + }, + }); + // reborrow + if let Kind::Dir { entries, .. } = &mut state.fs.inodes[working_dir.inode].kind + { + entries.insert(path_vec[0].clone(), new_inode); + } + let new_fd = wasi_try!(state.fs.create_fd( + fs_rights_base, + fs_rights_inheriting, + fs_flags, + new_inode, + )); + + new_fd + + // TODO: technically this could just not be lazily loaded... + /*wasi_try!(state.fs.create_file_at_fd( + dirfd, + path_vec[0], + fs_rights_base, + fs_rights_inheriting, + fs_flags + ));*/ } else { - // no entry and can't create it - return __WASI_ENOENT; + // attempt to load it + let real_opened_file = wasi_try!(::std::fs::OpenOptions::new() + .read(true) + .write(true) + .open(&path_vec[0]) + .map_err(|_| __WASI_ENOENT)); + + debug!("Opening host file {}", &path_vec[0]); + let new_inode = state.fs.inodes.insert(InodeVal { + stat: __wasi_filestat_t::default(), + is_preopened: false, + name: path_vec[0].clone(), + kind: Kind::File { + handle: WasiFile::HostFile(real_opened_file), + }, + }); + // reborrow + if let Kind::Dir { entries, .. } = &mut state.fs.inodes[working_dir.inode].kind + { + entries.insert(path_vec[0].clone(), new_inode); + } + let new_fd = wasi_try!(state.fs.create_fd( + fs_rights_base, + fs_rights_inheriting, + fs_flags, + new_inode, + )); + + new_fd } } } else { diff --git a/lib/wasi/src/syscalls/types.rs b/lib/wasi/src/syscalls/types.rs index b6f7bada2..5afd3148f 100644 --- a/lib/wasi/src/syscalls/types.rs +++ b/lib/wasi/src/syscalls/types.rs @@ -264,7 +264,7 @@ pub type __wasi_filedelta_t = i64; pub type __wasi_filesize_t = u64; -#[derive(Debug, Copy, Clone, PartialEq, Eq)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, Default)] #[repr(C)] pub struct __wasi_filestat_t { pub st_dev: __wasi_device_t, diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index 345503558..b0676a074 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -66,9 +66,13 @@ struct Run { #[structopt(name = "--", raw(multiple = "true"))] args: Vec, - /// Emscripten symbol map - #[structopt(long = "em-symbol-map", parse(from_os_str))] + /// Emscripten symbol ma>p + #[structopt(long = "em-symbol-map", parse(from_os_str), group = "emscripten")] em_symbol_map: Option, + + /// WASI pre-opened file + #[structopt(long = "pre-open", group = "wasi")] + pre_opened_files: Vec, } #[derive(Debug, StructOpt)] @@ -248,6 +252,7 @@ fn execute_wasm(options: &Run) -> Result<(), String> { env::vars() .map(|(k, v)| format!("{}={}", k, v).into_bytes()) .collect(), + options.pre_opened_files.clone(), ), None, ) From 2d72bbf834d010f6fc17c79a8780a3fbfe9820ce Mon Sep 17 00:00:00 2001 From: losfair Date: Thu, 11 Apr 2019 09:31:54 +0800 Subject: [PATCH 200/413] Smallvec optimization. --- lib/dynasm-backend/Cargo.toml | 1 + lib/dynasm-backend/src/codegen_x64.rs | 35 ++++++++++++++------------- lib/dynasm-backend/src/lib.rs | 2 ++ 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/lib/dynasm-backend/Cargo.toml b/lib/dynasm-backend/Cargo.toml index ea03ff8ca..aa86fdef0 100644 --- a/lib/dynasm-backend/Cargo.toml +++ b/lib/dynasm-backend/Cargo.toml @@ -16,3 +16,4 @@ lazy_static = "1.2.0" byteorder = "1" nix = "0.13.0" libc = "0.2.49" +smallvec = "0.6.9" diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index 5366c00e5..357043022 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -26,6 +26,7 @@ use wasmer_runtime_core::{ use wasmparser::{Operator, Type as WpType}; use crate::machine::*; use crate::emitter_x64::*; +use smallvec::SmallVec; lazy_static! { static ref CONSTRUCT_STACK_AND_CALL_WASM: unsafe extern "C" fn (stack_top: *const u8, stack_base: *const u8, ctx: *mut vm::Ctx, target: *const vm::Func) -> u64 = { @@ -137,7 +138,7 @@ pub struct X64FunctionCode { assembler: Option, function_labels: Option)>>, br_table_data: Option>>, - returns: Vec, + returns: SmallVec<[WpType; 1]>, locals: Vec, num_params: usize, num_locals: usize, @@ -173,7 +174,7 @@ pub struct ControlFrame { pub label: DynamicLabel, pub loop_like: bool, pub if_else: IfElseState, - pub returns: Vec, + pub returns: SmallVec<[WpType; 1]>, pub value_stack_depth: usize, } @@ -318,7 +319,7 @@ impl ModuleCodeGenerator = + let param_types: SmallVec<[WpType; 8]> = sig.params().iter().cloned().map(type_to_wp_type).collect(); - let return_types: Vec = + let return_types: SmallVec<[WpType; 1]> = sig.returns().iter().cloned().map(type_to_wp_type).collect(); - let params: Vec<_> = self.value_stack.drain(self.value_stack.len() - param_types.len()..).collect(); - let released: Vec = params.iter() + let params: SmallVec<[_; 8]> = self.value_stack.drain(self.value_stack.len() - param_types.len()..).collect(); + let released: SmallVec<[Location; 8]> = params.iter() .filter(|&&(_, lot)| lot == LocalOrTemp::Temp) .map(|&(x, _)| x) .collect(); @@ -2159,15 +2160,15 @@ impl FunctionCodeGenerator for X64FunctionCode { Operator::CallIndirect { index, table_index } => { assert_eq!(table_index, 0); let sig = self.signatures.get(SigIndex::new(index as usize)).unwrap(); - let param_types: Vec = + let param_types: SmallVec<[WpType; 8]> = sig.params().iter().cloned().map(type_to_wp_type).collect(); - let return_types: Vec = + let return_types: SmallVec<[WpType; 1]> = sig.returns().iter().cloned().map(type_to_wp_type).collect(); let func_index = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - let params: Vec<_> = self.value_stack.drain(self.value_stack.len() - param_types.len()..).collect(); - let released: Vec = params.iter() + let params: SmallVec<[_; 8]> = self.value_stack.drain(self.value_stack.len() - param_types.len()..).collect(); + let released: SmallVec<[Location; 8]> = params.iter() .filter(|&&(_, lot)| lot == LocalOrTemp::Temp) .map(|&(x, _)| x) .collect(); @@ -2233,8 +2234,8 @@ impl FunctionCodeGenerator for X64FunctionCode { loop_like: false, if_else: IfElseState::If(label_else), returns: match ty { - WpType::EmptyBlockType => vec![], - _ => vec![ty], + WpType::EmptyBlockType => smallvec![], + _ => smallvec![ty], }, value_stack_depth: self.value_stack.len(), }); @@ -2308,8 +2309,8 @@ impl FunctionCodeGenerator for X64FunctionCode { loop_like: false, if_else: IfElseState::None, returns: match ty { - WpType::EmptyBlockType => vec![], - _ => vec![ty], + WpType::EmptyBlockType => smallvec![], + _ => smallvec![ty], }, value_stack_depth: self.value_stack.len(), }); @@ -2322,8 +2323,8 @@ impl FunctionCodeGenerator for X64FunctionCode { loop_like: true, if_else: IfElseState::None, returns: match ty { - WpType::EmptyBlockType => vec![], - _ => vec![ty], + WpType::EmptyBlockType => smallvec![], + _ => smallvec![ty], }, value_stack_depth: self.value_stack.len(), }); diff --git a/lib/dynasm-backend/src/lib.rs b/lib/dynasm-backend/src/lib.rs index 22f5dc189..326a3fcf4 100644 --- a/lib/dynasm-backend/src/lib.rs +++ b/lib/dynasm-backend/src/lib.rs @@ -15,6 +15,8 @@ extern crate dynasm; extern crate lazy_static; extern crate byteorder; +#[macro_use] +extern crate smallvec; mod codegen; mod codegen_x64; From 2c9a3668f1e188aeb9ee90958da2e470116f8e96 Mon Sep 17 00:00:00 2001 From: Syrus Akbary Date: Wed, 10 Apr 2019 18:37:22 -0700 Subject: [PATCH 201/413] Improved embedded runtime language support --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 924b062d4..551371f2b 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,11 @@ Install Wasmer with: curl https://get.wasmer.io -sSfL | sh ``` -_**NEW ✨**: You can now embed Wasmer in your Rust application, check our [example repo](https://github.com/wasmerio/wasmer-rust-example) to see how!_ +Wasmer runtime can also be embedded in different languages, so you can use WebAssembly anywhere ✨: +* [**Rust**](https://github.com/wasmerio/wasmer-rust-example) +* [**C/C++**](https://github.com/wasmerio/wasmer-c-api) +* [**PHP**](https://github.com/wasmerio/php-ext-wasm) +* [**Python**](https://github.com/wasmerio/python-ext-wasm) ### Usage From 799e1d8dece8f8c3e0eb78eda0ba699f6043d254 Mon Sep 17 00:00:00 2001 From: losfair Date: Thu, 11 Apr 2019 09:41:18 +0800 Subject: [PATCH 202/413] Cleanup. --- lib/dynasm-backend/src/codegen_x64.rs | 50 +- lib/dynasm-backend/src/codegen_x64_v1.rs | 5261 ---------------------- lib/dynasm-backend/src/emitter_x64.rs | 6 +- lib/dynasm-backend/src/lib.rs | 2 - lib/dynasm-backend/src/machine.rs | 45 +- lib/dynasm-backend/src/protect_unix.rs | 6 - lib/dynasm-backend/src/stack.rs | 164 - 7 files changed, 24 insertions(+), 5510 deletions(-) delete mode 100644 lib/dynasm-backend/src/codegen_x64_v1.rs delete mode 100644 lib/dynasm-backend/src/stack.rs diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index 357043022..0dd94b53e 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -2,24 +2,21 @@ use super::codegen::*; use crate::protect_unix; -use byteorder::{ByteOrder, LittleEndian}; use dynasmrt::{ x64::Assembler, AssemblyOffset, DynamicLabel, DynasmApi, DynasmLabelApi, ExecutableBuffer, }; -use std::cell::RefCell; use std::ptr::NonNull; use std::{any::Any, collections::HashMap, sync::Arc}; use wasmer_runtime_core::{ backend::{FuncResolver, ProtectedCaller, Token, UserTrapper}, - error::{RuntimeError, RuntimeResult}, + error::RuntimeResult, memory::MemoryType, module::{ModuleInfo, ModuleInner}, structures::{Map, TypedIndex}, types::{ - FuncIndex, FuncSig, ImportedMemoryIndex, LocalFuncIndex, LocalGlobalIndex, GlobalIndex, - LocalMemoryIndex, LocalOrImport, MemoryIndex, SigIndex, Type, Value, TableIndex, + FuncIndex, FuncSig, LocalFuncIndex, GlobalIndex, + LocalOrImport, MemoryIndex, SigIndex, Type, Value, TableIndex, }, - units::Pages, vm::{self, ImportBacking, LocalGlobal, LocalMemory, LocalTable}, vmcalls, }; @@ -158,8 +155,6 @@ unsafe impl Sync for FuncPtr {} pub struct X64ExecutionContext { code: ExecutableBuffer, functions: Vec, - signatures: Arc>, - function_signatures: Arc>, function_pointers: Vec, _br_table_data: Vec>, func_import_count: usize, @@ -188,7 +183,7 @@ pub enum IfElseState { impl X64ExecutionContext { fn get_runtime_resolver( &self, - module_info: &ModuleInfo, + _module_info: &ModuleInfo, ) -> Result { Ok(X64RuntimeResolver { local_function_pointers: self.function_pointers[self.func_import_count..].to_vec(), @@ -265,14 +260,12 @@ impl ProtectedCaller for X64ExecutionContext { impl X64ModuleCodeGenerator { pub fn new() -> X64ModuleCodeGenerator { - let mut assembler = Assembler::new().unwrap(); - X64ModuleCodeGenerator { functions: vec![], signatures: None, function_signatures: None, function_labels: Some(HashMap::new()), - assembler: Some(assembler), + assembler: Some(Assembler::new().unwrap()), func_import_count: 0, } } @@ -384,23 +377,7 @@ impl ModuleCodeGenerator x, - None => { - return Err(CodegenError { - message: "no signatures", - }); - } - }, function_pointers: out_labels, - function_signatures: match self.function_signatures { - Some(x) => x, - None => { - return Err(CodegenError { - message: "no function signatures", - }); - } - }, }; let resolver = ctx.get_runtime_resolver(module_info)?; @@ -453,7 +430,7 @@ impl ModuleCodeGenerator { @@ -1245,13 +1222,13 @@ impl FunctionCodeGenerator for X64FunctionCode { Ok(()) } - fn feed_param(&mut self, ty: WpType) -> Result<(), CodegenError> { + fn feed_param(&mut self, _ty: WpType) -> Result<(), CodegenError> { self.num_params += 1; self.num_locals += 1; Ok(()) } - fn feed_local(&mut self, ty: WpType, n: usize) -> Result<(), CodegenError> { + fn feed_local(&mut self, _ty: WpType, n: usize) -> Result<(), CodegenError> { self.num_locals += n; Ok(()) } @@ -1316,7 +1293,7 @@ impl FunctionCodeGenerator for X64FunctionCode { let a = self.assembler.as_mut().unwrap(); match op { Operator::GetGlobal { global_index } => { - let mut global_index = global_index as usize; + let global_index = global_index as usize; let tmp = self.machine.acquire_temp_gpr().unwrap(); @@ -2678,17 +2655,14 @@ impl FunctionCodeGenerator for X64FunctionCode { } Operator::Return => { let frame = &self.control_stack[0]; - let has_return = if frame.returns.len() > 0 { + if frame.returns.len() > 0 { assert_eq!(frame.returns.len(), 1); let (loc, _) = *self.value_stack.last().unwrap(); Self::emit_relaxed_binop( a, &mut self.machine, Assembler::emit_mov, Size::S64, loc, Location::GPR(GPR::RAX), ); - true - } else { - false - }; + } let released: Vec = self.value_stack[frame.value_stack_depth..].iter() .filter(|&&(_, lot)| lot == LocalOrTemp::Temp) .map(|&(x, _)| x) diff --git a/lib/dynasm-backend/src/codegen_x64_v1.rs b/lib/dynasm-backend/src/codegen_x64_v1.rs deleted file mode 100644 index ef056a695..000000000 --- a/lib/dynasm-backend/src/codegen_x64_v1.rs +++ /dev/null @@ -1,5261 +0,0 @@ -#![allow(clippy::forget_copy)] // Used by dynasm. - -use super::codegen::*; -use super::stack::{ - ControlFrame, ControlStack, IfElseState, ScratchRegister, ValueInfo, ValueLocation, ValueStack, -}; -use crate::protect_unix; -use byteorder::{ByteOrder, LittleEndian}; -use dynasmrt::{ - x64::Assembler, AssemblyOffset, DynamicLabel, DynasmApi, DynasmLabelApi, ExecutableBuffer, -}; -use std::cell::RefCell; -use std::ptr::NonNull; -use std::{any::Any, collections::HashMap, sync::Arc}; -use wasmer_runtime_core::{ - backend::{FuncResolver, ProtectedCaller, Token, UserTrapper}, - error::{RuntimeError, RuntimeResult}, - memory::MemoryType, - module::{ModuleInfo, ModuleInner}, - structures::{Map, TypedIndex}, - types::{ - FuncIndex, FuncSig, ImportedMemoryIndex, LocalFuncIndex, LocalGlobalIndex, - LocalMemoryIndex, LocalOrImport, MemoryIndex, SigIndex, Type, Value, - }, - units::Pages, - vm::{self, ImportBacking, LocalGlobal, LocalMemory, LocalTable}, -}; -use wasmparser::{Operator, Type as WpType}; - -thread_local! { - static CURRENT_EXECUTION_CONTEXT: RefCell> = RefCell::new(Vec::new()); -} - -lazy_static! { - static ref CALL_WASM: unsafe extern "C" fn( - params: *const u8, - params_len: usize, - target: *const u8, - memory_base: *mut u8, - memory_size_pages: usize, - vmctx: *mut vm::Ctx - ) -> i64 = { - let mut assembler = Assembler::new().unwrap(); - let offset = assembler.offset(); - dynasm!( - assembler - ; push rbx - ; push r12 - ; push r13 - ; push r14 - ; push r15 - - ; mov r15, rcx // memory_base - - // Use the upper 16 bits of r15 to store memory size (in pages). This can support memory size up to 4GB. - // Wasmer currently only runs in usermode so here we assume the upper 17 bits of memory base address are all zero. - // FIXME: Change this if want to use this backend in kernel mode. - ; shl r8, 48 - ; or r15, r8 - - ; mov r14, r9 // vmctx - ; lea rax, [>after_call] - ; push rax - ; push rbp - ; mov rbp, rsp - ; sub rsp, rsi // params_len - ; mov rcx, 0 - ; mov r8, rsp - ; _loop: - ; cmp rsi, 0 - ; je >_loop_end - ; mov rax, [rdi] - ; mov [r8], rax - ; add r8, 8 - ; add rdi, 8 - ; sub rsi, 8 - ; jmp <_loop - ; _loop_end: - ; jmp rdx - ; after_call: - ; pop r15 - ; pop r14 - ; pop r13 - ; pop r12 - ; pop rbx - ; ret - ); - let buf = assembler.finalize().unwrap(); - let ret = unsafe { ::std::mem::transmute(buf.ptr(offset)) }; - ::std::mem::forget(buf); - ret - }; - - static ref CONSTRUCT_STACK_AND_CALL_NATIVE: unsafe extern "C" fn (stack_top: *mut u8, stack_base: *mut u8, ctx: *mut vm::Ctx, target: *const vm::Func) -> u64 = { - let mut assembler = Assembler::new().unwrap(); - let offset = assembler.offset(); - dynasm!( - assembler - ; push r15 - ; push r14 - ; push r13 - ; push r12 - ; push r11 - ; push rbp - ; mov rbp, rsp - - ; mov r15, rdi - ; mov r14, rsi - ; mov r13, rdx - ; mov r12, rcx - - ; mov rdi, r13 // ctx - - ; sub r14, 8 - ; cmp r14, r15 - ; jb >stack_ready - - ; mov rsi, [r14] - ; sub r14, 8 - ; cmp r14, r15 - ; jb >stack_ready - - ; mov rdx, [r14] - ; sub r14, 8 - ; cmp r14, r15 - ; jb >stack_ready - - ; mov rcx, [r14] - ; sub r14, 8 - ; cmp r14, r15 - ; jb >stack_ready - - ; mov r8, [r14] - ; sub r14, 8 - ; cmp r14, r15 - ; jb >stack_ready - - ; mov r9, [r14] - ; sub r14, 8 - ; cmp r14, r15 - ; jb >stack_ready - - ; mov rax, r14 - ; sub rax, r15 - ; sub rsp, rax - ; sub rsp, 8 - ; mov rax, QWORD 0xfffffffffffffff0u64 as i64 - ; and rsp, rax - ; mov rax, rsp - ; loop_begin: - ; mov r11, [r14] - ; mov [rax], r11 - ; sub r14, 8 - ; add rax, 8 - ; cmp r14, r15 - ; jb >stack_ready - ; jmp Register { - use self::Register::*; - match sr.raw_id() { - 0 => RDI, - 1 => RSI, - 2 => RDX, - 3 => RCX, - 4 => R8, - 5 => R9, - 6 => R10, - 7 => R11, - 8 => RBX, - 9 => R12, - // 10 => R13, // R13 is reserved as temporary register. - // 11 => R14, // R14 is reserved for vmctx. - // 12 => R15, // R15 is reserved for memory base pointer. - _ => unreachable!(), - } - } - - pub fn is_used(&self, stack: &ValueStack) -> bool { - for val in &stack.values { - match val.location { - ValueLocation::Register(x) => { - if Register::from_scratch_reg(x) == *self { - return true; - } - } - ValueLocation::Stack => break, - } - } - - false - } -} - -#[allow(dead_code)] -pub struct NativeTrampolines { - memory_size_dynamic_local: DynamicLabel, - memory_size_static_local: DynamicLabel, - memory_size_shared_local: DynamicLabel, - memory_size_dynamic_import: DynamicLabel, - memory_size_static_import: DynamicLabel, - memory_size_shared_import: DynamicLabel, - memory_grow_dynamic_local: DynamicLabel, - memory_grow_static_local: DynamicLabel, - memory_grow_shared_local: DynamicLabel, - memory_grow_dynamic_import: DynamicLabel, - memory_grow_static_import: DynamicLabel, - memory_grow_shared_import: DynamicLabel, -} - -pub struct X64ModuleCodeGenerator { - functions: Vec, - signatures: Option>>, - function_signatures: Option>>, - function_labels: Option)>>, - assembler: Option, - native_trampolines: Arc, - func_import_count: usize, -} - -pub struct X64FunctionCode { - signatures: Arc>, - function_signatures: Arc>, - native_trampolines: Arc, - - begin_offset: AssemblyOffset, - assembler: Option, - function_labels: Option)>>, - br_table_data: Option>>, - returns: Vec, - locals: Vec, - num_params: usize, - current_stack_offset: usize, - value_stack: ValueStack, - control_stack: Option, - unreachable_depth: usize, -} - -enum FuncPtrInner {} -#[repr(transparent)] -#[derive(Copy, Clone, Debug)] -struct FuncPtr(*const FuncPtrInner); -unsafe impl Send for FuncPtr {} -unsafe impl Sync for FuncPtr {} - -pub struct X64ExecutionContext { - code: ExecutableBuffer, - functions: Vec, - signatures: Arc>, - function_signatures: Arc>, - function_pointers: Vec, - _br_table_data: Vec>, - func_import_count: usize, -} - -pub struct X64RuntimeResolver { - _code: ExecutableBuffer, - local_pointers: Vec, -} - -impl X64ExecutionContext { - fn get_runtime_resolver( - &self, - module_info: &ModuleInfo, - ) -> Result { - let mut assembler = Assembler::new().unwrap(); - let mut offsets: Vec = vec![]; - - for i in self.func_import_count..self.function_pointers.len() { - offsets.push(assembler.offset()); - X64FunctionCode::emit_managed_call_trampoline( - &mut assembler, - module_info, - self.function_pointers[i], - self.signatures[self.function_signatures[FuncIndex::new(i)]] - .params() - .len(), - )?; - } - - let code = assembler.finalize().unwrap(); - let local_pointers: Vec = - offsets.iter().map(|x| FuncPtr(code.ptr(*x) as _)).collect(); - - Ok(X64RuntimeResolver { - _code: code, - local_pointers: local_pointers, - }) - } -} - -impl FuncResolver for X64RuntimeResolver { - fn get( - &self, - _module: &ModuleInner, - _local_func_index: LocalFuncIndex, - ) -> Option> { - NonNull::new(self.local_pointers[_local_func_index.index() as usize].0 as *mut vm::Func) - } -} - -impl ProtectedCaller for X64ExecutionContext { - fn call( - &self, - _module: &ModuleInner, - _func_index: FuncIndex, - _params: &[Value], - _import_backing: &ImportBacking, - _vmctx: *mut vm::Ctx, - _: Token, - ) -> RuntimeResult> { - let index = _func_index.index() - self.func_import_count; - let ptr = self.code.ptr(self.functions[index].begin_offset); - let return_ty = self.functions[index].returns.last().cloned(); - - if self.functions[index].num_params != _params.len() { - return Err(RuntimeError::Trap { - msg: "param count mismatch".into(), - }); - } - - let f = &self.functions[index]; - let total_size = f.num_params * 8; - - if f.num_params > 0 && f.locals[f.num_params - 1].stack_offset != total_size { - panic!("internal error: inconsistent stack layout"); - } - - let mut param_buf: Vec = vec![0; total_size]; - for i in 0..f.num_params { - let local = &f.locals[i]; - let buf = &mut param_buf[total_size - local.stack_offset..]; - let size = get_size_of_type(&local.ty).unwrap(); - - if is_dword(size) { - match _params[i] { - Value::I32(x) => LittleEndian::write_u32(buf, x as u32), - Value::F32(x) => LittleEndian::write_u32(buf, f32::to_bits(x)), - _ => { - return Err(RuntimeError::Trap { - msg: "signature mismatch".into(), - }); - } - } - } else { - match _params[i] { - Value::I64(x) => LittleEndian::write_u64(buf, x as u64), - Value::F64(x) => LittleEndian::write_u64(buf, f64::to_bits(x)), - _ => { - return Err(RuntimeError::Trap { - msg: "signature mismatch".into(), - }); - } - } - } - } - - let (memory_base, memory_size): (*mut u8, usize) = if _module.info.memories.len() > 0 { - if _module.info.memories.len() != 1 || _module.info.imported_memories.len() != 0 { - return Err(RuntimeError::Trap { - msg: "only one linear memory is supported".into(), - }); - } - unsafe { - let vmctx = _vmctx as *mut vm::InternalCtx; - ((**(*vmctx).memories).base, (**(*vmctx).memories).bound) - } - } else if _module.info.imported_memories.len() > 0 { - if _module.info.memories.len() != 0 || _module.info.imported_memories.len() != 1 { - return Err(RuntimeError::Trap { - msg: "only one linear memory is supported".into(), - }); - } - unsafe { - let vmctx = _vmctx as *mut vm::InternalCtx; - ( - (**(*vmctx).imported_memories).base, - (**(*vmctx).imported_memories).bound, - ) - } - } else { - (::std::ptr::null_mut(), 0) - }; - //println!("MEMORY = {:?}", memory_base); - - CURRENT_EXECUTION_CONTEXT.with(|x| x.borrow_mut().push(self)); - - let ret = unsafe { - protect_unix::call_protected(|| { - CALL_WASM( - param_buf.as_ptr(), - param_buf.len(), - ptr, - memory_base, - memory_size.wrapping_shr(16), - _vmctx, - ) - }) - }; - - CURRENT_EXECUTION_CONTEXT.with(|x| x.borrow_mut().pop().unwrap()); - - let ret = ret?; - - Ok(if let Some(ty) = return_ty { - vec![match ty { - WpType::I32 => Value::I32(ret as i32), - WpType::I64 => Value::I64(ret), - WpType::F32 => Value::F32(f32::from_bits(ret as i32 as u32)), - WpType::F64 => Value::F64(f64::from_bits(ret as u64)), - _ => unreachable!(), - }] - } else { - vec![] - }) - } - - fn get_early_trapper(&self) -> Box { - pub struct Trapper; - - impl UserTrapper for Trapper { - unsafe fn do_early_trap(&self, _data: Box) -> ! { - panic!("do_early_trap"); - } - } - - Box::new(Trapper) - } -} - -#[derive(Copy, Clone, Debug)] -struct Local { - ty: WpType, - stack_offset: usize, -} - -impl X64ModuleCodeGenerator { - pub fn new() -> X64ModuleCodeGenerator { - let mut assembler = Assembler::new().unwrap(); - let nt = NativeTrampolines { - memory_size_dynamic_local: X64FunctionCode::emit_native_call_trampoline( - &mut assembler, - _memory_size, - MemoryKind::DynamicLocal, - 0usize, - ), - memory_size_static_local: X64FunctionCode::emit_native_call_trampoline( - &mut assembler, - _memory_size, - MemoryKind::StaticLocal, - 0usize, - ), - memory_size_shared_local: X64FunctionCode::emit_native_call_trampoline( - &mut assembler, - _memory_size, - MemoryKind::SharedLocal, - 0usize, - ), - memory_size_dynamic_import: X64FunctionCode::emit_native_call_trampoline( - &mut assembler, - _memory_size, - MemoryKind::DynamicImport, - 0usize, - ), - memory_size_static_import: X64FunctionCode::emit_native_call_trampoline( - &mut assembler, - _memory_size, - MemoryKind::StaticImport, - 0usize, - ), - memory_size_shared_import: X64FunctionCode::emit_native_call_trampoline( - &mut assembler, - _memory_size, - MemoryKind::SharedImport, - 0usize, - ), - memory_grow_dynamic_local: X64FunctionCode::emit_native_call_trampoline( - &mut assembler, - _memory_grow, - MemoryKind::DynamicLocal, - 0usize, - ), - memory_grow_static_local: X64FunctionCode::emit_native_call_trampoline( - &mut assembler, - _memory_grow, - MemoryKind::StaticLocal, - 0usize, - ), - memory_grow_shared_local: X64FunctionCode::emit_native_call_trampoline( - &mut assembler, - _memory_grow, - MemoryKind::SharedLocal, - 0usize, - ), - memory_grow_dynamic_import: X64FunctionCode::emit_native_call_trampoline( - &mut assembler, - _memory_grow, - MemoryKind::DynamicImport, - 0usize, - ), - memory_grow_static_import: X64FunctionCode::emit_native_call_trampoline( - &mut assembler, - _memory_grow, - MemoryKind::StaticImport, - 0usize, - ), - memory_grow_shared_import: X64FunctionCode::emit_native_call_trampoline( - &mut assembler, - _memory_grow, - MemoryKind::SharedImport, - 0usize, - ), - }; - - X64ModuleCodeGenerator { - functions: vec![], - signatures: None, - function_signatures: None, - function_labels: Some(HashMap::new()), - assembler: Some(assembler), - native_trampolines: Arc::new(nt), - func_import_count: 0, - } - } -} - -impl ModuleCodeGenerator - for X64ModuleCodeGenerator -{ - fn check_precondition(&mut self, _module_info: &ModuleInfo) -> Result<(), CodegenError> { - Ok(()) - } - - fn next_function(&mut self) -> Result<&mut X64FunctionCode, CodegenError> { - let (mut assembler, mut function_labels, br_table_data) = match self.functions.last_mut() { - Some(x) => ( - x.assembler.take().unwrap(), - x.function_labels.take().unwrap(), - x.br_table_data.take().unwrap(), - ), - None => ( - self.assembler.take().unwrap(), - self.function_labels.take().unwrap(), - vec![], - ), - }; - let begin_offset = assembler.offset(); - let begin_label_info = function_labels - .entry(self.functions.len() + self.func_import_count) - .or_insert_with(|| (assembler.new_dynamic_label(), None)); - - begin_label_info.1 = Some(begin_offset); - let begin_label = begin_label_info.0; - - dynasm!( - assembler - ; => begin_label - //; int 3 - ); - let code = X64FunctionCode { - signatures: self.signatures.as_ref().unwrap().clone(), - function_signatures: self.function_signatures.as_ref().unwrap().clone(), - native_trampolines: self.native_trampolines.clone(), - - begin_offset: begin_offset, - assembler: Some(assembler), - function_labels: Some(function_labels), - br_table_data: Some(br_table_data), - returns: vec![], - locals: vec![], - num_params: 0, - current_stack_offset: 0, - value_stack: ValueStack::new(4), // FIXME: Use of R8 and above registers generates incorrect assembly. - control_stack: None, - unreachable_depth: 0, - }; - self.functions.push(code); - Ok(self.functions.last_mut().unwrap()) - } - - fn finalize( - mut self, - module_info: &ModuleInfo, - ) -> Result<(X64ExecutionContext, X64RuntimeResolver), CodegenError> { - let (assembler, mut br_table_data) = match self.functions.last_mut() { - Some(x) => (x.assembler.take().unwrap(), x.br_table_data.take().unwrap()), - None => { - return Err(CodegenError { - message: "no function", - }); - } - }; - let output = assembler.finalize().unwrap(); - - for table in &mut br_table_data { - for entry in table { - *entry = output.ptr(AssemblyOffset(*entry)) as usize; - } - } - - let function_labels = if let Some(x) = self.functions.last() { - x.function_labels.as_ref().unwrap() - } else { - self.function_labels.as_ref().unwrap() - }; - let mut out_labels: Vec = vec![]; - - for i in 0..function_labels.len() { - let (_, offset) = match function_labels.get(&i) { - Some(x) => x, - None => { - return Err(CodegenError { - message: "label not found", - }); - } - }; - let offset = match offset { - Some(x) => x, - None => { - return Err(CodegenError { - message: "offset is none", - }); - } - }; - out_labels.push(FuncPtr(output.ptr(*offset) as _)); - } - - let ctx = X64ExecutionContext { - code: output, - functions: self.functions, - _br_table_data: br_table_data, - func_import_count: self.func_import_count, - signatures: match self.signatures { - Some(x) => x, - None => { - return Err(CodegenError { - message: "no signatures", - }); - } - }, - function_pointers: out_labels, - function_signatures: match self.function_signatures { - Some(x) => x, - None => { - return Err(CodegenError { - message: "no function signatures", - }); - } - }, - }; - let resolver = ctx.get_runtime_resolver(module_info)?; - - Ok((ctx, resolver)) - } - - fn feed_signatures(&mut self, signatures: Map) -> Result<(), CodegenError> { - self.signatures = Some(Arc::new(signatures)); - Ok(()) - } - - fn feed_function_signatures( - &mut self, - assoc: Map, - ) -> Result<(), CodegenError> { - self.function_signatures = Some(Arc::new(assoc)); - Ok(()) - } - - fn feed_import_function(&mut self) -> Result<(), CodegenError> { - let labels = match self.function_labels.as_mut() { - Some(x) => x, - None => { - return Err(CodegenError { - message: "got function import after code", - }); - } - }; - let id = labels.len(); - - let offset = self.assembler.as_mut().unwrap().offset(); - - let label = X64FunctionCode::emit_native_call_trampoline( - self.assembler.as_mut().unwrap(), - invoke_import, - 0, - id, - ); - labels.insert(id, (label, Some(offset))); - - self.func_import_count += 1; - - Ok(()) - } -} - -impl X64FunctionCode { - fn gen_rt_pop(assembler: &mut Assembler, info: &ValueInfo) -> Result<(), CodegenError> { - match info.location { - ValueLocation::Register(_) => {} - ValueLocation::Stack => { - dynasm!( - assembler - ; add rsp, 8 - ); - } - } - Ok(()) - } - - fn emit_reinterpret( - value_stack: &mut ValueStack, - in_ty: WpType, - out_ty: WpType, - ) -> Result<(), CodegenError> { - let val = value_stack.pop()?; - if val.ty != in_ty { - return Err(CodegenError { - message: "reinterpret type mismatch", - }); - } - value_stack.push(out_ty); - Ok(()) - } - - /// Emits a unary operator. - fn emit_unop( - assembler: &mut Assembler, - value_stack: &mut ValueStack, - f: F, - in_ty: WpType, - out_ty: WpType, - ) -> Result<(), CodegenError> { - let a = value_stack.pop()?; - if a.ty != in_ty { - return Err(CodegenError { - message: "unop(i32) type mismatch", - }); - } - value_stack.push(out_ty); - - match a.location { - ValueLocation::Register(x) => { - let reg = Register::from_scratch_reg(x); - f(assembler, value_stack, reg); - } - ValueLocation::Stack => { - dynasm!( - assembler - ; mov rax, [rsp] - ); - f(assembler, value_stack, Register::RAX); - dynasm!( - assembler - ; mov [rsp], rax - ); - } - } - - Ok(()) - } - - fn emit_unop_i32( - assembler: &mut Assembler, - value_stack: &mut ValueStack, - f: F, - ) -> Result<(), CodegenError> { - Self::emit_unop(assembler, value_stack, f, WpType::I32, WpType::I32) - } - - fn emit_unop_i64( - assembler: &mut Assembler, - value_stack: &mut ValueStack, - f: F, - ) -> Result<(), CodegenError> { - Self::emit_unop(assembler, value_stack, f, WpType::I64, WpType::I64) - } - - /// Emits a binary operator. - /// - /// Guarantees that the first Register parameter to callback `f` will never be `Register::RAX`. - fn emit_binop( - assembler: &mut Assembler, - value_stack: &mut ValueStack, - f: F, - in_ty: WpType, - out_ty: WpType, - ) -> Result<(), CodegenError> { - let (a, b) = value_stack.pop2()?; - if a.ty != in_ty || b.ty != in_ty { - return Err(CodegenError { - message: "binop(i32) type mismatch", - }); - } - value_stack.push(out_ty); - - if a.location.is_register() && b.location.is_register() { - // output is in a_reg. - f( - assembler, - value_stack, - Register::from_scratch_reg(a.location.get_register()?), - Register::from_scratch_reg(b.location.get_register()?), - ); - } else if a.location.is_register() { - dynasm!( - assembler - ; pop rax - ); - f( - assembler, - value_stack, - Register::from_scratch_reg(a.location.get_register()?), - Register::RAX, - ); - } else if b.location.is_register() { - unreachable!(); - } else { - dynasm!( - assembler - ; push rcx - ; mov rcx, [rsp + 16] - ; mov rax, [rsp + 8] - ); - f(assembler, value_stack, Register::RCX, Register::RAX); - dynasm!( - assembler - ; mov [rsp + 16], rcx - ; pop rcx - ; add rsp, 8 - ); - } - - Ok(()) - } - - fn emit_binop_i32( - assembler: &mut Assembler, - value_stack: &mut ValueStack, - f: F, - ) -> Result<(), CodegenError> { - Self::emit_binop(assembler, value_stack, f, WpType::I32, WpType::I32) - } - - fn emit_binop_i64( - assembler: &mut Assembler, - value_stack: &mut ValueStack, - f: F, - ) -> Result<(), CodegenError> { - Self::emit_binop(assembler, value_stack, f, WpType::I64, WpType::I64) - } - - fn emit_shift( - assembler: &mut Assembler, - value_stack: &ValueStack, - left: Register, - right: Register, - f: F, - ) { - let rcx_used = Register::RCX.is_used(value_stack); - if rcx_used { - dynasm!( - assembler - ; push rcx - ); - } - dynasm!( - assembler - ; mov rcx, Rq(right as u8) - ); - f(assembler, left); - if rcx_used { - dynasm!( - assembler - ; pop rcx - ); - } - } - - fn emit_div_i32( - assembler: &mut Assembler, - value_stack: &ValueStack, - left: Register, - right: Register, - signed: bool, - out: Register, - ) { - let dx_save = - Register::RDX.is_used(value_stack) && left != Register::RDX && right != Register::RDX; - if dx_save { - dynasm!( - assembler - ; push rdx - ); - } - - dynasm!( - assembler - ; push r15 - ; mov r15d, Rd(right as u8) - ; mov eax, Rd(left as u8) - ); - if signed { - dynasm!( - assembler - ; cdq - ; idiv r15d - ); - } else { - dynasm!( - assembler - ; xor edx, edx - ; div r15d - ); - } - dynasm!( - assembler - ; mov Rd(left as u8), Rd(out as u8) - ; pop r15 - ); - - if dx_save { - dynasm!( - assembler - ; pop rdx - ); - } - } - - fn emit_div_i64( - assembler: &mut Assembler, - value_stack: &ValueStack, - left: Register, - right: Register, - signed: bool, - out: Register, - ) { - let dx_save = - Register::RDX.is_used(value_stack) && left != Register::RDX && right != Register::RDX; - if dx_save { - dynasm!( - assembler - ; push rdx - ); - } - - dynasm!( - assembler - ; push r15 - ; mov r15, Rq(right as u8) - ; mov rax, Rq(left as u8) - ); - if signed { - dynasm!( - assembler - ; cqo - ; idiv r15 - ); - } else { - dynasm!( - assembler - ; xor rdx, rdx - ; div r15 - ); - } - dynasm!( - assembler - ; mov Rq(left as u8), Rq(out as u8) - ; pop r15 - ); - - if dx_save { - dynasm!( - assembler - ; pop rdx - ); - } - } - - fn emit_cmp_i32( - assembler: &mut Assembler, - left: Register, - right: Register, - f: F, - ) { - dynasm!( - assembler - ; cmp Rd(left as u8), Rd(right as u8) - ); - f(assembler); - dynasm!( - assembler - ; xor Rd(left as u8), Rd(left as u8) - ; jmp >label_end - ; label_true: - ; mov Rd(left as u8), 1 - ; label_end: - ); - } - - fn emit_cmp_i64( - assembler: &mut Assembler, - left: Register, - right: Register, - f: F, - ) { - dynasm!( - assembler - ; cmp Rq(left as u8), Rq(right as u8) - ); - f(assembler); - dynasm!( - assembler - ; xor Rq(left as u8), Rq(left as u8) - ; jmp >label_end - ; label_true: - ; mov Rq(left as u8), 1 - ; label_end: - ); - } - - fn emit_peek_into_ax( - assembler: &mut Assembler, - value_stack: &ValueStack, - ) -> Result { - let val = match value_stack.values.last() { - Some(x) => *x, - None => { - return Err(CodegenError { - message: "no value", - }); - } - }; - match val.location { - ValueLocation::Register(x) => { - let reg = Register::from_scratch_reg(x); - dynasm!( - assembler - ; mov rax, Rq(reg as u8) - ); - } - ValueLocation::Stack => { - dynasm!( - assembler - ; mov rax, [rsp] - ); - } - } - - Ok(val.ty) - } - - fn emit_pop_into_reg( - assembler: &mut Assembler, - value_stack: &mut ValueStack, - target: Register, - ) -> Result { - let val = value_stack.pop()?; - match val.location { - ValueLocation::Register(x) => { - let reg = Register::from_scratch_reg(x); - dynasm!( - assembler - ; mov Rq(target as u8), Rq(reg as u8) - ); - } - ValueLocation::Stack => { - dynasm!( - assembler - ; pop Rq(target as u8) - ); - } - } - - Ok(val.ty) - } - - fn emit_pop_into_ax( - assembler: &mut Assembler, - value_stack: &mut ValueStack, - ) -> Result { - Self::emit_pop_into_reg(assembler, value_stack, Register::RAX) - } - - fn emit_push_from_reg( - assembler: &mut Assembler, - value_stack: &mut ValueStack, - ty: WpType, - source: Register, - ) -> Result<(), CodegenError> { - let loc = value_stack.push(ty); - match loc { - ValueLocation::Register(x) => { - let reg = Register::from_scratch_reg(x); - dynasm!( - assembler - ; mov Rq(reg as u8), Rq(source as u8) - ); - } - ValueLocation::Stack => { - dynasm!( - assembler - ; push Rq(source as u8) - ); - } - } - - Ok(()) - } - - fn emit_push_from_ax( - assembler: &mut Assembler, - value_stack: &mut ValueStack, - ty: WpType, - ) -> Result<(), CodegenError> { - Self::emit_push_from_reg(assembler, value_stack, ty, Register::RAX) - } - - fn emit_leave_frame( - assembler: &mut Assembler, - frame: &ControlFrame, - value_stack: &mut ValueStack, - peek: bool, - ) -> Result<(), CodegenError> { - let ret_ty = match frame.returns.len() { - 1 => Some(frame.returns[0]), - 0 => None, - _ => { - return Err(CodegenError { - message: "more than one block returns are not yet supported", - }); - } - }; - - if value_stack.values.len() < frame.value_stack_depth_before + frame.returns.len() { - return Err(CodegenError { - message: "value stack underflow", - }); - } - - if let Some(_) = ret_ty { - if value_stack.values.iter().last().map(|x| x.ty) != ret_ty { - return Err(CodegenError { - message: "value type != return type", - }); - } - if peek { - Self::emit_peek_into_ax(assembler, value_stack)?; - } else { - Self::emit_pop_into_ax(assembler, value_stack)?; - } - } - - Ok(()) - } - - fn emit_else( - assembler: &mut Assembler, - control_stack: &mut ControlStack, - value_stack: &mut ValueStack, - was_unreachable: bool, - ) -> Result<(), CodegenError> { - let frame = match control_stack.frames.last_mut() { - Some(x) => x, - None => { - return Err(CodegenError { - message: "no frame (else)", - }); - } - }; - - if !was_unreachable { - Self::emit_leave_frame(assembler, frame, value_stack, false)?; - if value_stack.values.len() != frame.value_stack_depth_before { - return Err(CodegenError { - message: "value_stack.values.len() != frame.value_stack_depth_before", - }); - } - } else { - // No need to actually unwind the stack here. - value_stack.reset_depth(frame.value_stack_depth_before); - } - - match frame.if_else { - IfElseState::If(label) => { - dynasm!( - assembler - ; jmp =>frame.label - ; => label - ); - frame.if_else = IfElseState::Else; - } - _ => { - return Err(CodegenError { - message: "unexpected if else state", - }); - } - } - - Ok(()) - } - - fn emit_block_end( - assembler: &mut Assembler, - control_stack: &mut ControlStack, - value_stack: &mut ValueStack, - was_unreachable: bool, - ) -> Result<(), CodegenError> { - let frame = match control_stack.frames.pop() { - Some(x) => x, - None => { - return Err(CodegenError { - message: "no frame (block end)", - }); - } - }; - - if !was_unreachable { - Self::emit_leave_frame(assembler, &frame, value_stack, false)?; - if value_stack.values.len() != frame.value_stack_depth_before { - return Err(CodegenError { - message: "value_stack.values.len() != frame.value_stack_depth_before", - }); - } - } else { - // No need to actually unwind the stack here. - value_stack.reset_depth(frame.value_stack_depth_before); - } - - if !frame.loop_like { - match frame.if_else { - IfElseState::None | IfElseState::Else => { - dynasm!( - assembler - ; => frame.label - ); - } - IfElseState::If(label) => { - dynasm!( - assembler - ; => frame.label - ; => label - ); - - if frame.returns.len() != 0 { - return Err(CodegenError { - message: "if without else, with non-empty returns", - }); - } - } - } - } - - if frame.returns.len() == 1 { - let loc = value_stack.push(frame.returns[0]); - match loc { - ValueLocation::Register(x) => { - let reg = Register::from_scratch_reg(x); - dynasm!( - assembler - ; mov Rq(reg as u8), rax - ); - } - ValueLocation::Stack => { - dynasm!( - assembler - ; push rax - ); - } - } - } - - Ok(()) - } - - fn emit_jmp( - assembler: &mut Assembler, - control_stack: &ControlStack, - value_stack: &mut ValueStack, - relative_frame_offset: usize, - ) -> Result<(), CodegenError> { - let frame = if relative_frame_offset >= control_stack.frames.len() { - return Err(CodegenError { - message: "jmp offset out of bounds", - }); - } else { - &control_stack.frames[control_stack.frames.len() - 1 - relative_frame_offset] - }; - - if !frame.loop_like { - Self::emit_leave_frame(assembler, frame, value_stack, true)?; - } - - let mut sp_diff: usize = 0; - - for i in 0..value_stack.values.len() - frame.value_stack_depth_before { - let vi = value_stack.values[value_stack.values.len() - 1 - i]; - if vi.location == ValueLocation::Stack { - sp_diff += 8 - } else { - break; - } - } - - dynasm!( - assembler - ; add rsp, sp_diff as i32 - ; jmp =>frame.label - ); - - Ok(()) - } - - fn emit_return( - assembler: &mut Assembler, - value_stack: &mut ValueStack, - returns: &Vec, - ) -> Result<(), CodegenError> { - match returns.len() { - 0 => {} - 1 => { - if value_stack.values.iter().last().map(|x| x.ty) != Some(returns[0]) { - return Err(CodegenError { - message: "self.value_stack.last().cloned() != Some(self.returns[0])", - }); - } - Self::emit_pop_into_ax(assembler, value_stack)?; - } - _ => { - return Err(CodegenError { - message: "multiple return values is not yet supported", - }); - } - } - - dynasm!( - assembler - ; mov rsp, rbp - ; pop rbp - ; ret - ); - - Ok(()) - } - - fn emit_update_memory_from_ctx( - assembler: &mut Assembler, - info: &ModuleInfo, - ) -> Result<(), CodegenError> { - if info.memories.len() > 0 { - if info.memories.len() != 1 || info.imported_memories.len() != 0 { - return Err(CodegenError { - message: "only one linear memory is supported", - }); - } - dynasm!( - assembler - ; mov r15, r14 => vm::InternalCtx.memories - ); - } else if info.imported_memories.len() > 0 { - if info.memories.len() != 0 || info.imported_memories.len() != 1 { - return Err(CodegenError { - message: "only one linear memory is supported", - }); - } - dynasm!( - assembler - ; mov r15, r14 => vm::InternalCtx.imported_memories - ); - } else { - return Ok(()); - }; - - dynasm!( - assembler - ; mov r15, [r15] - ; mov r13, r15 => LocalMemory.bound - ; shr r13, 16 // 65536 bytes per page - ; shl r13, 48 - ; mov r15, r15 => LocalMemory.base - ; or r15, r13 - ); - Ok(()) - } - - fn emit_managed_call_trampoline( - assembler: &mut Assembler, - info: &ModuleInfo, - target: FuncPtr, - num_params: usize, - ) -> Result<(), CodegenError> { - dynasm!( - assembler - ; push rbp - ; mov rbp, rsp - ); - - for i in 0..num_params { - match i { - i if i < 5 => { - let reg = match i { - 0 => Register::RSI, - 1 => Register::RDX, - 2 => Register::RCX, - 3 => Register::R8, - 4 => Register::R9, - _ => unreachable!(), - }; - dynasm!( - assembler - ; push Rq(reg as u8) - ); - } - i => { - let offset = (i - 5) * 8; - dynasm!( - assembler - ; mov rax, [rbp + (16 + offset) as i32] - ; push rax - ); - } - } - } - - dynasm!( - assembler - ; mov r9, rdi // vmctx - ; mov rdx, QWORD target.0 as usize as i64 - ; mov rsi, QWORD (num_params * 8) as i64 - ; mov rdi, rsp - ); - - let has_memory = if info.memories.len() > 0 { - if info.memories.len() != 1 || info.imported_memories.len() != 0 { - return Err(CodegenError { - message: "only one linear memory is supported", - }); - } - dynasm!( - assembler - ; mov rcx, r9 => vm::InternalCtx.memories - ); - true - } else if info.imported_memories.len() > 0 { - if info.memories.len() != 0 || info.imported_memories.len() != 1 { - return Err(CodegenError { - message: "only one linear memory is supported", - }); - } - dynasm!( - assembler - ; mov rcx, r9 => vm::InternalCtx.imported_memories - ); - true - } else { - false - }; - - if has_memory { - dynasm!( - assembler - ; mov rcx, [rcx] - ; mov r8, rcx => LocalMemory.bound - ; shr r8, 16 // 65536 bytes per page - ; mov rcx, rcx => LocalMemory.base - ); - } else { - dynasm!( - assembler - ; mov rcx, 0 - ); - } - - dynasm!( - assembler - ; mov rax, QWORD *CALL_WASM as usize as i64 - ; call rax - ; mov rsp, rbp - ; pop rbp - ; ret - ); - - Ok(()) - } - - fn emit_f32_int_conv_check( - assembler: &mut Assembler, - reg: Register, - lower_bound: f32, - upper_bound: f32, - ) { - let lower_bound = f32::to_bits(lower_bound); - let upper_bound = f32::to_bits(upper_bound); - - dynasm!( - assembler - ; movq xmm5, r15 - - // underflow - ; movd xmm1, Rd(reg as u8) - ; mov r15d, lower_bound as i32 - ; movd xmm2, r15d - ; vcmpltss xmm0, xmm1, xmm2 - ; movd r15d, xmm0 - ; cmp r15d, 1 - ; je >trap - - // overflow - ; mov r15d, upper_bound as i32 - ; movd xmm2, r15d - ; vcmpgtss xmm0, xmm1, xmm2 - ; movd r15d, xmm0 - ; cmp r15d, 1 - ; je >trap - - // NaN - ; vcmpeqss xmm0, xmm1, xmm1 - ; movd r15d, xmm0 - ; cmp r15d, 0 - ; je >trap - - ; movq r15, xmm5 - ; jmp >ok - - ; trap: - ; ud2 - - ; ok: - ); - } - - fn emit_f64_int_conv_check( - assembler: &mut Assembler, - reg: Register, - lower_bound: f64, - upper_bound: f64, - ) { - let lower_bound = f64::to_bits(lower_bound); - let upper_bound = f64::to_bits(upper_bound); - - dynasm!( - assembler - ; movq xmm5, r15 - - // underflow - ; movq xmm1, Rq(reg as u8) - ; mov r15, QWORD lower_bound as i64 - ; movq xmm2, r15 - ; vcmpltsd xmm0, xmm1, xmm2 - ; movd r15d, xmm0 - ; cmp r15d, 1 - ; je >trap - - // overflow - ; mov r15, QWORD upper_bound as i64 - ; movq xmm2, r15 - ; vcmpgtsd xmm0, xmm1, xmm2 - ; movd r15d, xmm0 - ; cmp r15d, 1 - ; je >trap - - // NaN - ; vcmpeqsd xmm0, xmm1, xmm1 - ; movd r15d, xmm0 - ; cmp r15d, 0 - ; je >trap - - ; movq r15, xmm5 - ; jmp >ok - - ; trap: - ; ud2 - - ; ok: - ); - } - - fn emit_native_call_trampoline( - assembler: &mut Assembler, - target: unsafe extern "C" fn( - ctx1: A, - ctx2: B, - stack_top: *mut u8, - stack_base: *mut u8, - vmctx: *mut vm::Ctx, - memory_base: *mut u8, - ) -> u64, - ctx1: A, - ctx2: B, - ) -> DynamicLabel { - let label = assembler.new_dynamic_label(); - - dynasm!( - assembler - ; =>label - ); - - // FIXME: Check at compile time. - assert_eq!(::std::mem::size_of::(), ::std::mem::size_of::()); - assert_eq!(::std::mem::size_of::(), ::std::mem::size_of::()); - - dynasm!( - assembler - ; mov rdi, QWORD unsafe { ::std::mem::transmute_copy::(&ctx1) } - ; mov rsi, QWORD unsafe { ::std::mem::transmute_copy::(&ctx2) } - ; mov rdx, rsp - ; mov rcx, rbp - ; mov r8, r14 // vmctx - ; mov r9, r15 // memory_base - ; mov rax, QWORD 0xfffffffffffffff0u64 as i64 - ; and rsp, rax - ; mov rax, QWORD target as i64 - ; call rax - ; mov rsp, rbp - ; pop rbp - ; ret - ); - - label - } - - fn emit_call_raw( - assembler: &mut Assembler, - value_stack: &mut ValueStack, - target: DynamicLabel, - params: &[WpType], - returns: &[WpType], - ) -> Result<(), CodegenError> { - let total_size: usize = params.len() * 8; - - if params.len() > value_stack.values.len() { - return Err(CodegenError { - message: "value stack underflow in call", - }); - } - - let mut saved_regs: Vec = Vec::new(); - - for v in &value_stack.values[0..value_stack.values.len() - params.len()] { - match v.location { - ValueLocation::Register(x) => { - let reg = Register::from_scratch_reg(x); - dynasm!( - assembler - ; push Rq(reg as u8) - ); - saved_regs.push(reg); - } - ValueLocation::Stack => break, - } - } - - dynasm!( - assembler - ; lea rax, [>after_call] // TODO: Is this correct? - ; push rax - ; push rbp - ); - - if total_size != 0 { - dynasm!( - assembler - ; sub rsp, total_size as i32 - ); - } - - let mut offset: usize = 0; - let mut caller_stack_offset: usize = 0; - for ty in params.iter().rev() { - let val = value_stack.pop()?; - if val.ty != *ty { - return Err(CodegenError { - message: "value type mismatch in call", - }); - } - - match val.location { - ValueLocation::Register(x) => { - let reg = Register::from_scratch_reg(x); - dynasm!( - assembler - ; mov [rsp + offset as i32], Rq(reg as u8) - ); - } - ValueLocation::Stack => { - dynasm!( - assembler - ; mov rax, [rsp + (total_size + 16 + saved_regs.len() * 8 + caller_stack_offset) as i32] - ; mov [rsp + offset as i32], rax - ); - caller_stack_offset += 8; - } - } - - offset += 8; - } - - assert_eq!(offset, total_size); - - dynasm!( - assembler - ; mov rbp, rsp - ); - if total_size != 0 { - dynasm!( - assembler - ; add rbp, total_size as i32 - ); - } - dynasm!( - assembler - ; jmp =>target - ; after_call: - ); - - for reg in saved_regs.iter().rev() { - dynasm!( - assembler - ; pop Rq(*reg as u8) - ); - } - - if caller_stack_offset != 0 { - dynasm!( - assembler - ; add rsp, caller_stack_offset as i32 - ); - } - - match returns.len() { - 0 => {} - 1 => { - Self::emit_push_from_ax(assembler, value_stack, returns[0])?; - } - _ => { - return Err(CodegenError { - message: "more than 1 function returns are not supported", - }); - } - } - - Ok(()) - } - - fn emit_memory_bound_check_if_needed( - assembler: &mut Assembler, - module_info: &ModuleInfo, - offset_reg: Register, - value_size: usize, - ) { - let mem_desc = match MemoryIndex::new(0).local_or_import(module_info) { - LocalOrImport::Local(local_mem_index) => &module_info.memories[local_mem_index], - LocalOrImport::Import(import_mem_index) => { - &module_info.imported_memories[import_mem_index].1 - } - }; - let need_check = match mem_desc.memory_type() { - MemoryType::Dynamic => true, - MemoryType::Static | MemoryType::SharedStatic => false, - }; - if need_check { - dynasm!( - assembler - ; movq xmm5, r14 - ; lea r14, [Rq(offset_reg as u8) + value_size as i32] // overflow isn't possible since offset_reg contains a 32-bit value. - - ; mov r13, r15 - ; shr r13, 48 - ; shl r13, 16 - ; cmp r14, r13 - ; ja >out_of_bounds - ; jmp >ok - - ; out_of_bounds: - ; ud2 - ; ok: - ; movq r14, xmm5 - ); - } - } - - fn emit_memory_load( - assembler: &mut Assembler, - value_stack: &mut ValueStack, - f: F, - out_ty: WpType, - module_info: &ModuleInfo, - read_size: usize, - ) -> Result<(), CodegenError> { - let addr_info = value_stack.pop()?; - let out_loc = value_stack.push(out_ty); - - if addr_info.ty != WpType::I32 { - return Err(CodegenError { - message: "memory address must be i32", - }); - } - - assert_eq!(out_loc, addr_info.location); - - match addr_info.location { - ValueLocation::Register(x) => { - let reg = Register::from_scratch_reg(x); - dynasm!( - assembler - ; mov Rd(reg as u8), Rd(reg as u8) - ); - Self::emit_memory_bound_check_if_needed(assembler, module_info, reg, read_size); - dynasm!( - assembler - ; add Rq(reg as u8), r15 - ; shl Rq(reg as u8), 16 - ; shr Rq(reg as u8), 16 - ); - f(assembler, reg); - } - ValueLocation::Stack => { - dynasm!( - assembler - ; pop rax - ; mov eax, eax - ); - Self::emit_memory_bound_check_if_needed( - assembler, - module_info, - Register::RAX, - read_size, - ); - dynasm!( - assembler - ; add rax, r15 - ; shl rax, 16 - ; shr rax, 16 - ); - f(assembler, Register::RAX); - dynasm!( - assembler - ; push rax - ) - } - } - Ok(()) - } - - fn emit_memory_store( - assembler: &mut Assembler, - value_stack: &mut ValueStack, - f: F, - value_ty: WpType, - module_info: &ModuleInfo, - write_size: usize, - ) -> Result<(), CodegenError> { - let value_info = value_stack.pop()?; - let addr_info = value_stack.pop()?; - - if addr_info.ty != WpType::I32 { - return Err(CodegenError { - message: "memory address must be i32", - }); - } - - if value_info.ty != value_ty { - return Err(CodegenError { - message: "value type mismatch in memory store", - }); - } - - match value_info.location { - ValueLocation::Register(x) => { - let value_reg = Register::from_scratch_reg(x); - let addr_reg = - Register::from_scratch_reg(addr_info.location.get_register().unwrap()); // must be a register - dynasm!( - assembler - ; mov Rd(addr_reg as u8), Rd(addr_reg as u8) - ); - Self::emit_memory_bound_check_if_needed( - assembler, - module_info, - addr_reg, - write_size, - ); - dynasm!( - assembler - ; add Rq(addr_reg as u8), r15 - ; shl Rq(addr_reg as u8), 16 - ; shr Rq(addr_reg as u8), 16 - ); - f(assembler, addr_reg, value_reg); - } - ValueLocation::Stack => { - match addr_info.location { - ValueLocation::Register(x) => { - let addr_reg = Register::from_scratch_reg(x); - dynasm!( - assembler - ; mov Rd(addr_reg as u8), Rd(addr_reg as u8) - ); - Self::emit_memory_bound_check_if_needed( - assembler, - module_info, - addr_reg, - write_size, - ); - dynasm!( - assembler - ; add Rq(addr_reg as u8), r15 - ; shl Rq(addr_reg as u8), 16 - ; shr Rq(addr_reg as u8), 16 - ; pop rax - ); - f(assembler, addr_reg, Register::RAX); - } - ValueLocation::Stack => { - dynasm!( - assembler - ; mov [rsp - 8], rcx // red zone - ; pop rax // value - ; pop rcx // address - ); - dynasm!( - assembler - ; mov ecx, ecx - ); - Self::emit_memory_bound_check_if_needed( - assembler, - module_info, - Register::RCX, - write_size, - ); - dynasm!( - assembler - ; add rcx, r15 - ; shl rcx, 16 - ; shr rcx, 16 - ); - f(assembler, Register::RCX, Register::RAX); - dynasm!( - assembler - ; mov rcx, [rsp - 24] - ); - } - } - } - } - Ok(()) - } -} - -impl FunctionCodeGenerator for X64FunctionCode { - fn feed_return(&mut self, ty: WpType) -> Result<(), CodegenError> { - self.returns.push(ty); - Ok(()) - } - - /// Stack layout of a call frame: - /// - Return address - /// - Old RBP - /// - Params in reversed order, caller initialized - /// - Locals in reversed order, callee initialized - fn feed_param(&mut self, ty: WpType) -> Result<(), CodegenError> { - self.current_stack_offset += 8; - self.locals.push(Local { - ty: ty, - stack_offset: self.current_stack_offset, - }); - - self.num_params += 1; - - Ok(()) - } - - fn feed_local(&mut self, ty: WpType, n: usize) -> Result<(), CodegenError> { - let assembler = self.assembler.as_mut().unwrap(); - let size = get_size_of_type(&ty)?; - - if is_dword(size) { - for _ in 0..n { - // FIXME: check range of n - self.current_stack_offset += 4; - self.locals.push(Local { - ty: ty, - stack_offset: self.current_stack_offset, - }); - dynasm!( - assembler - ; sub rsp, 4 - ; mov DWORD [rsp], 0 - ); - } - if n % 2 == 1 { - self.current_stack_offset += 4; - dynasm!( - assembler - ; sub rsp, 4 - ); - } - } else { - for _ in 0..n { - // FIXME: check range of n - self.current_stack_offset += 8; - self.locals.push(Local { - ty: ty, - stack_offset: self.current_stack_offset, - }); - dynasm!( - assembler - ; push 0 - ); - } - } - Ok(()) - } - fn begin_body(&mut self) -> Result<(), CodegenError> { - self.control_stack = Some(ControlStack::new( - self.assembler.as_mut().unwrap().new_dynamic_label(), - self.returns.clone(), - )); - Ok(()) - } - fn feed_opcode(&mut self, op: Operator, module_info: &ModuleInfo) -> Result<(), CodegenError> { - let was_unreachable; - - if self.unreachable_depth > 0 { - was_unreachable = true; - match op { - Operator::Block { .. } | Operator::Loop { .. } | Operator::If { .. } => { - self.unreachable_depth += 1; - } - Operator::End => { - self.unreachable_depth -= 1; - } - Operator::Else => { - // We are in a reachable true branch - if self.unreachable_depth == 1 { - if let Some(IfElseState::If(_)) = self - .control_stack - .as_ref() - .unwrap() - .frames - .last() - .map(|x| x.if_else) - { - self.unreachable_depth -= 1; - } - } - } - _ => {} - } - if self.unreachable_depth > 0 { - return Ok(()); - } - } else { - was_unreachable = false; - } - - let assembler = self.assembler.as_mut().unwrap(); - - match op { - Operator::GetGlobal { global_index } => { - let mut global_index = global_index as usize; - if global_index < module_info.imported_globals.len() { - dynasm!( - assembler - ; mov rax, r14 => vm::InternalCtx.imported_globals - ); - } else { - global_index -= module_info.imported_globals.len(); - if global_index >= module_info.globals.len() { - return Err(CodegenError { - message: "global out of bounds", - }); - } - dynasm!( - assembler - ; mov rax, r14 => vm::InternalCtx.globals - ); - } - - dynasm!( - assembler - ; mov rax, [rax + (global_index as i32) * 8] - ; mov rax, rax => LocalGlobal.data - ); - Self::emit_push_from_ax( - assembler, - &mut self.value_stack, - type_to_wp_type( - module_info.globals[LocalGlobalIndex::new(global_index)] - .desc - .ty, - ), - )?; - } - Operator::SetGlobal { global_index } => { - let ty = Self::emit_pop_into_ax(assembler, &mut self.value_stack)?; - - let mut global_index = global_index as usize; - if global_index < module_info.imported_globals.len() { - dynasm!( - assembler - ; push rbx - ; mov rbx, r14 => vm::InternalCtx.imported_globals - ); - } else { - global_index -= module_info.imported_globals.len(); - if global_index >= module_info.globals.len() { - return Err(CodegenError { - message: "global out of bounds", - }); - } - dynasm!( - assembler - ; push rbx - ; mov rbx, r14 => vm::InternalCtx.globals - ); - } - - if ty - != type_to_wp_type( - module_info.globals[LocalGlobalIndex::new(global_index)] - .desc - .ty, - ) - { - return Err(CodegenError { - message: "type mismatch in SetGlobal", - }); - } - dynasm!( - assembler - ; mov rbx, [rbx + (global_index as i32) * 8] - ; mov rbx => LocalGlobal.data, rax - ; pop rbx - ); - } - Operator::GetLocal { local_index } => { - let local_index = local_index as usize; - if local_index >= self.locals.len() { - return Err(CodegenError { - message: "local out of bounds", - }); - } - let local = self.locals[local_index]; - let location = self.value_stack.push(local.ty); - let size = get_size_of_type(&local.ty)?; - - match location { - ValueLocation::Register(id) => { - if is_dword(size) { - dynasm!( - assembler - ; mov Rd(Register::from_scratch_reg(id) as u8), [rbp - (local.stack_offset as i32)] - ); - } else { - dynasm!( - assembler - ; mov Rq(Register::from_scratch_reg(id) as u8), [rbp - (local.stack_offset as i32)] - ); - } - } - ValueLocation::Stack => { - if is_dword(size) { - dynasm!( - assembler - ; mov eax, [rbp - (local.stack_offset as i32)] - ; push rax - ); - } else { - dynasm!( - assembler - ; mov rax, [rbp - (local.stack_offset as i32)] - ; push rax - ); - } - } - } - } - Operator::SetLocal { local_index } => { - let local_index = local_index as usize; - if local_index >= self.locals.len() { - return Err(CodegenError { - message: "local out of bounds", - }); - } - let local = self.locals[local_index]; - let ty = Self::emit_pop_into_ax(assembler, &mut self.value_stack)?; - if ty != local.ty { - return Err(CodegenError { - message: "SetLocal type mismatch", - }); - } - - if is_dword(get_size_of_type(&ty)?) { - dynasm!( - assembler - ; mov [rbp - (local.stack_offset as i32)], eax - ); - } else { - dynasm!( - assembler - ; mov [rbp - (local.stack_offset as i32)], rax - ); - } - } - Operator::TeeLocal { local_index } => { - let local_index = local_index as usize; - if local_index >= self.locals.len() { - return Err(CodegenError { - message: "local out of bounds", - }); - } - let local = self.locals[local_index]; - let ty = Self::emit_peek_into_ax(assembler, &self.value_stack)?; - if ty != local.ty { - return Err(CodegenError { - message: "TeeLocal type mismatch", - }); - } - - if is_dword(get_size_of_type(&ty)?) { - dynasm!( - assembler - ; mov [rbp - (local.stack_offset as i32)], eax - ); - } else { - dynasm!( - assembler - ; mov [rbp - (local.stack_offset as i32)], rax - ); - } - } - Operator::I32Const { value } => { - let location = self.value_stack.push(WpType::I32); - match location { - ValueLocation::Register(x) => { - let reg = Register::from_scratch_reg(x); - dynasm!( - assembler - ; mov Rd(reg as u8), value - ); - } - ValueLocation::Stack => { - dynasm!( - assembler - ; push value - ); - } - } - } - Operator::I32Add => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; add Rd(left as u8), Rd(right as u8) - ) - }, - )?; - } - Operator::I32Sub => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; sub Rd(left as u8), Rd(right as u8) - ) - }, - )?; - } - Operator::I32Mul => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; imul Rd(left as u8), Rd(right as u8) - ) - }, - )?; - } - Operator::I32DivU => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_div_i32( - assembler, - value_stack, - left, - right, - false, - Register::RAX, - ); - }, - )?; - } - Operator::I32DivS => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_div_i32( - assembler, - value_stack, - left, - right, - true, - Register::RAX, - ); - }, - )?; - } - Operator::I32RemU => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_div_i32( - assembler, - value_stack, - left, - right, - false, - Register::RDX, - ); - }, - )?; - } - Operator::I32RemS => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_div_i32( - assembler, - value_stack, - left, - right, - true, - Register::RDX, - ); - }, - )?; - } - Operator::I32And => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; and Rd(left as u8), Rd(right as u8) - ); - }, - )?; - } - Operator::I32Or => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; or Rd(left as u8), Rd(right as u8) - ); - }, - )?; - } - Operator::I32Xor => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; xor Rd(left as u8), Rd(right as u8) - ); - }, - )?; - } - Operator::I32Eq => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; cmp Rd(left as u8), Rd(right as u8) - ; lahf - ; shr ax, 14 - ; and eax, 1 - ; mov Rd(left as u8), eax - ); - }, - )?; - } - Operator::I32Ne => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; cmp Rd(left as u8), Rd(right as u8) - ; lahf - ; shr ax, 14 - ; and eax, 1 - ; xor eax, 1 - ; mov Rd(left as u8), eax - ); - }, - )?; - } - Operator::I32Eqz => { - Self::emit_unop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; cmp Rd(reg as u8), 0 - ; lahf - ; shr ax, 14 - ; and eax, 1 - ); - if reg != Register::RAX { - dynasm!( - assembler - ; mov Rd(reg as u8), eax - ); - } - }, - )?; - } - Operator::I32Clz => { - Self::emit_unop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; lzcnt Rd(reg as u8), Rd(reg as u8) - ); - }, - )?; - } - Operator::I32Ctz => { - Self::emit_unop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; tzcnt Rd(reg as u8), Rd(reg as u8) - ); - }, - )?; - } - Operator::I32Popcnt => { - Self::emit_unop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; popcnt Rd(reg as u8), Rd(reg as u8) - ); - }, - )?; - } - Operator::I32Shl => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_shift(assembler, value_stack, left, right, |assembler, left| { - dynasm!( - assembler - ; shl Rd(left as u8), cl - ) - }); - }, - )?; - } - Operator::I32ShrU => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_shift(assembler, value_stack, left, right, |assembler, left| { - dynasm!( - assembler - ; shr Rd(left as u8), cl - ) - }); - }, - )?; - } - Operator::I32ShrS => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_shift(assembler, value_stack, left, right, |assembler, left| { - dynasm!( - assembler - ; sar Rd(left as u8), cl - ) - }); - }, - )?; - } - Operator::I32Rotl => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_shift(assembler, value_stack, left, right, |assembler, left| { - dynasm!( - assembler - ; rol Rd(left as u8), cl - ) - }); - }, - )?; - } - Operator::I32Rotr => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_shift(assembler, value_stack, left, right, |assembler, left| { - dynasm!( - assembler - ; ror Rd(left as u8), cl - ) - }); - }, - )?; - } - // Comparison operators. - // https://en.wikibooks.org/wiki/X86_Assembly/Control_Flow - // TODO: Is reading flag register directly faster? - Operator::I32LtS => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i32(assembler, left, right, |assembler| { - dynasm!( - assembler - ; jl >label_true - ); - }); - }, - )?; - } - Operator::I32LeS => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i32(assembler, left, right, |assembler| { - dynasm!( - assembler - ; jle >label_true - ); - }); - }, - )?; - } - Operator::I32GtS => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i32(assembler, left, right, |assembler| { - dynasm!( - assembler - ; jg >label_true - ); - }); - }, - )?; - } - Operator::I32GeS => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i32(assembler, left, right, |assembler| { - dynasm!( - assembler - ; jge >label_true - ); - }); - }, - )?; - } - Operator::I32LtU => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i32(assembler, left, right, |assembler| { - dynasm!( - assembler - ; jb >label_true - ); - }); - }, - )?; - } - Operator::I32LeU => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i32(assembler, left, right, |assembler| { - dynasm!( - assembler - ; jbe >label_true - ); - }); - }, - )?; - } - Operator::I32GtU => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i32(assembler, left, right, |assembler| { - dynasm!( - assembler - ; ja >label_true - ); - }); - }, - )?; - } - Operator::I32GeU => { - Self::emit_binop_i32( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i32(assembler, left, right, |assembler| { - dynasm!( - assembler - ; jae >label_true - ); - }); - }, - )?; - } - Operator::I64Const { value } => { - let location = self.value_stack.push(WpType::I64); - match location { - ValueLocation::Register(x) => { - let reg = Register::from_scratch_reg(x); - dynasm!( - assembler - ; mov Rq(reg as u8), QWORD value - ); - } - ValueLocation::Stack => { - dynasm!( - assembler - ; mov rax, QWORD value - ; push rax - ); - } - } - } - Operator::I64Add => { - Self::emit_binop_i64( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; add Rq(left as u8), Rq(right as u8) - ) - }, - )?; - } - Operator::I64Sub => { - Self::emit_binop_i64( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; sub Rq(left as u8), Rq(right as u8) - ) - }, - )?; - } - Operator::I64Mul => { - Self::emit_binop_i64( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; imul Rq(left as u8), Rq(right as u8) - ) - }, - )?; - } - Operator::I64DivU => { - Self::emit_binop_i64( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_div_i64( - assembler, - value_stack, - left, - right, - false, - Register::RAX, - ); - }, - )?; - } - Operator::I64DivS => { - Self::emit_binop_i64( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_div_i64( - assembler, - value_stack, - left, - right, - true, - Register::RAX, - ); - }, - )?; - } - Operator::I64RemU => { - Self::emit_binop_i64( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_div_i64( - assembler, - value_stack, - left, - right, - false, - Register::RDX, - ); - }, - )?; - } - Operator::I64RemS => { - Self::emit_binop_i64( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_div_i64( - assembler, - value_stack, - left, - right, - true, - Register::RDX, - ); - }, - )?; - } - Operator::I64And => { - Self::emit_binop_i64( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; and Rq(left as u8), Rq(right as u8) - ); - }, - )?; - } - Operator::I64Or => { - Self::emit_binop_i64( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; or Rq(left as u8), Rq(right as u8) - ); - }, - )?; - } - Operator::I64Xor => { - Self::emit_binop_i64( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; xor Rq(left as u8), Rq(right as u8) - ); - }, - )?; - } - Operator::I64Eq => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; cmp Rq(left as u8), Rq(right as u8) - ; lahf - ; shr ax, 14 - ; and eax, 1 - ; mov Rd(left as u8), eax - ); - }, - WpType::I64, - WpType::I32, - )?; - } - Operator::I64Ne => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; cmp Rq(left as u8), Rq(right as u8) - ; lahf - ; shr ax, 14 - ; and eax, 1 - ; xor eax, 1 - ; mov Rd(left as u8), eax - ); - }, - WpType::I64, - WpType::I32, - )?; - } - Operator::I64Eqz => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; cmp Rq(reg as u8), 0 - ; lahf - ; shr ax, 14 - ; and eax, 1 - ); - if reg != Register::RAX { - dynasm!( - assembler - ; mov Rd(reg as u8), eax - ); - } - }, - WpType::I64, - WpType::I32, - )?; - } - Operator::I64Clz => { - Self::emit_unop_i64( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; lzcnt Rq(reg as u8), Rq(reg as u8) - ); - }, - )?; - } - Operator::I64Ctz => { - Self::emit_unop_i64( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; tzcnt Rq(reg as u8), Rq(reg as u8) - ); - }, - )?; - } - Operator::I64Popcnt => { - Self::emit_unop_i64( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; popcnt Rq(reg as u8), Rq(reg as u8) - ); - }, - )?; - } - Operator::I64Shl => { - Self::emit_binop_i64( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_shift(assembler, value_stack, left, right, |assembler, left| { - dynasm!( - assembler - ; shl Rq(left as u8), cl - ) - }); - }, - )?; - } - Operator::I64ShrU => { - Self::emit_binop_i64( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_shift(assembler, value_stack, left, right, |assembler, left| { - dynasm!( - assembler - ; shr Rq(left as u8), cl - ) - }); - }, - )?; - } - Operator::I64ShrS => { - Self::emit_binop_i64( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_shift(assembler, value_stack, left, right, |assembler, left| { - dynasm!( - assembler - ; sar Rq(left as u8), cl - ) - }); - }, - )?; - } - Operator::I64Rotl => { - Self::emit_binop_i64( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_shift(assembler, value_stack, left, right, |assembler, left| { - dynasm!( - assembler - ; rol Rq(left as u8), cl - ) - }); - }, - )?; - } - Operator::I64Rotr => { - Self::emit_binop_i64( - assembler, - &mut self.value_stack, - |assembler, value_stack, left, right| { - Self::emit_shift(assembler, value_stack, left, right, |assembler, left| { - dynasm!( - assembler - ; ror Rq(left as u8), cl - ) - }); - }, - )?; - } - // Comparison operators. - // https://en.wikibooks.org/wiki/X86_Assembly/Control_Flow - // TODO: Is reading flag register directly faster? - Operator::I64LtS => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i64(assembler, left, right, |assembler| { - dynasm!( - assembler - ; jl >label_true - ); - }); - }, - WpType::I64, - WpType::I32, - )?; - } - Operator::I64LeS => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i64(assembler, left, right, |assembler| { - dynasm!( - assembler - ; jle >label_true - ); - }); - }, - WpType::I64, - WpType::I32, - )?; - } - Operator::I64GtS => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i64(assembler, left, right, |assembler| { - dynasm!( - assembler - ; jg >label_true - ); - }); - }, - WpType::I64, - WpType::I32, - )?; - } - Operator::I64GeS => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i64(assembler, left, right, |assembler| { - dynasm!( - assembler - ; jge >label_true - ); - }); - }, - WpType::I64, - WpType::I32, - )?; - } - Operator::I64LtU => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i64(assembler, left, right, |assembler| { - dynasm!( - assembler - ; jb >label_true - ); - }); - }, - WpType::I64, - WpType::I32, - )?; - } - Operator::I64LeU => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i64(assembler, left, right, |assembler| { - dynasm!( - assembler - ; jbe >label_true - ); - }); - }, - WpType::I64, - WpType::I32, - )?; - } - Operator::I64GtU => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i64(assembler, left, right, |assembler| { - dynasm!( - assembler - ; ja >label_true - ); - }); - }, - WpType::I64, - WpType::I32, - )?; - } - Operator::I64GeU => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - Self::emit_cmp_i64(assembler, left, right, |assembler| { - dynasm!( - assembler - ; jae >label_true - ); - }); - }, - WpType::I64, - WpType::I32, - )?; - } - Operator::I64ExtendSI32 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; movsx Rq(reg as u8), Rd(reg as u8) - ); - }, - WpType::I32, - WpType::I64, - )?; - } - Operator::I64ExtendUI32 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |_assembler, _value_stack, _reg| { - // FIXME: Is it correct to do nothing here? - }, - WpType::I32, - WpType::I64, - )?; - } - Operator::I32WrapI64 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; mov Rd(reg as u8), Rd(reg as u8) // clear upper 32 bits - ); - }, - WpType::I64, - WpType::I32, - )?; - } - Operator::Block { ty } => { - self.control_stack - .as_mut() - .unwrap() - .frames - .push(ControlFrame { - label: assembler.new_dynamic_label(), - loop_like: false, - if_else: IfElseState::None, - returns: match ty { - WpType::EmptyBlockType => vec![], - _ => vec![ty], - }, - value_stack_depth_before: self.value_stack.values.len(), - }); - } - Operator::Unreachable => { - dynasm!( - assembler - ; ud2 - ); - self.unreachable_depth = 1; - } - Operator::Drop => { - let info = self.value_stack.pop()?; - Self::gen_rt_pop(assembler, &info)?; - } - Operator::Return => { - Self::emit_return(assembler, &mut self.value_stack, &self.returns)?; - self.unreachable_depth = 1; - } - Operator::Call { function_index } => { - let function_index = function_index as usize; - let label = self - .function_labels - .as_mut() - .unwrap() - .entry(function_index) - .or_insert_with(|| (assembler.new_dynamic_label(), None)) - .0; - let sig_index = match self.function_signatures.get(FuncIndex::new(function_index)) { - Some(x) => *x, - None => { - return Err(CodegenError { - message: "signature not found", - }); - } - }; - let sig = match self.signatures.get(sig_index) { - Some(x) => x, - None => { - return Err(CodegenError { - message: "signature does not exist", - }); - } - }; - let param_types: Vec = - sig.params().iter().cloned().map(type_to_wp_type).collect(); - let return_types: Vec = - sig.returns().iter().cloned().map(type_to_wp_type).collect(); - Self::emit_call_raw( - assembler, - &mut self.value_stack, - label, - ¶m_types, - &return_types, - )?; - } - Operator::CallIndirect { index, table_index } => { - if table_index != 0 { - return Err(CodegenError { - message: "only one table is supported", - }); - } - let local_or_import = if module_info.tables.len() > 0 { - if module_info.tables.len() != 1 || module_info.imported_tables.len() != 0 { - return Err(CodegenError { - message: "only one table is supported", - }); - } - CallIndirectLocalOrImport::Local - } else if module_info.imported_tables.len() > 0 { - if module_info.tables.len() != 0 || module_info.imported_tables.len() != 1 { - return Err(CodegenError { - message: "only one table is supported", - }); - } - CallIndirectLocalOrImport::Import - } else { - return Err(CodegenError { - message: "no tables", - }); - }; - let sig_index = SigIndex::new(index as usize); - let sig = match self.signatures.get(sig_index) { - Some(x) => x, - None => { - return Err(CodegenError { - message: "signature does not exist", - }); - } - }; - let mut param_types: Vec = - sig.params().iter().cloned().map(type_to_wp_type).collect(); - let return_types: Vec = - sig.returns().iter().cloned().map(type_to_wp_type).collect(); - param_types.push(WpType::I32); // element index - - dynasm!( - assembler - ; jmp >after_trampoline - ); - - let trampoline_label = Self::emit_native_call_trampoline( - assembler, - call_indirect, - index as usize, - local_or_import, - ); - - dynasm!( - assembler - ; after_trampoline: - ); - - Self::emit_call_raw( - assembler, - &mut self.value_stack, - trampoline_label, - ¶m_types, - &return_types, - )?; - } - Operator::End => { - if self.control_stack.as_ref().unwrap().frames.len() == 1 { - let frame = self.control_stack.as_mut().unwrap().frames.pop().unwrap(); - - if !was_unreachable { - Self::emit_leave_frame(assembler, &frame, &mut self.value_stack, false)?; - } else { - self.value_stack.reset_depth(0); - } - - dynasm!( - assembler - ; =>frame.label - ); - } else { - Self::emit_block_end( - assembler, - self.control_stack.as_mut().unwrap(), - &mut self.value_stack, - was_unreachable, - )?; - } - } - Operator::Loop { ty } => { - let label = assembler.new_dynamic_label(); - self.control_stack - .as_mut() - .unwrap() - .frames - .push(ControlFrame { - label: label, - loop_like: true, - if_else: IfElseState::None, - returns: match ty { - WpType::EmptyBlockType => vec![], - _ => vec![ty], - }, - value_stack_depth_before: self.value_stack.values.len(), - }); - dynasm!( - assembler - ; =>label - ); - } - Operator::If { ty } => { - let label_end = assembler.new_dynamic_label(); - let label_else = assembler.new_dynamic_label(); - - Self::emit_pop_into_ax(assembler, &mut self.value_stack)?; // TODO: typeck? - - self.control_stack - .as_mut() - .unwrap() - .frames - .push(ControlFrame { - label: label_end, - loop_like: false, - if_else: IfElseState::If(label_else), - returns: match ty { - WpType::EmptyBlockType => vec![], - _ => vec![ty], - }, - value_stack_depth_before: self.value_stack.values.len(), - }); - dynasm!( - assembler - ; cmp eax, 0 - ; je =>label_else - ); - } - Operator::Else => { - Self::emit_else( - assembler, - self.control_stack.as_mut().unwrap(), - &mut self.value_stack, - was_unreachable, - )?; - } - Operator::Select => { - Self::emit_pop_into_ax(assembler, &mut self.value_stack)?; - let v_b = self.value_stack.pop()?; - let v_a = self.value_stack.pop()?; - - if v_b.ty != v_a.ty { - return Err(CodegenError { - message: "select: type mismatch", - }); - } - - dynasm!( - assembler - ; cmp eax, 0 - ); - match v_b.location { - ValueLocation::Stack => { - dynasm!( - assembler - ; cmove rax, [rsp] - ; add rsp, 8 - ); - } - ValueLocation::Register(x) => { - let reg = Register::from_scratch_reg(x); - dynasm!( - assembler - ; cmove rax, Rq(reg as u8) - ); - } - } - match v_a.location { - ValueLocation::Stack => { - dynasm!( - assembler - ; cmovne rax, [rsp] - ; add rsp, 8 - ); - } - ValueLocation::Register(x) => { - let reg = Register::from_scratch_reg(x); - dynasm!( - assembler - ; cmovne rax, Rq(reg as u8) - ); - } - } - - Self::emit_push_from_ax(assembler, &mut self.value_stack, v_a.ty)?; - } - Operator::Br { relative_depth } => { - Self::emit_jmp( - assembler, - self.control_stack.as_ref().unwrap(), - &mut self.value_stack, - relative_depth as usize, - )?; - self.unreachable_depth = 1; - } - Operator::BrIf { relative_depth } => { - let no_br_label = assembler.new_dynamic_label(); - Self::emit_pop_into_ax(assembler, &mut self.value_stack)?; // TODO: typeck? - dynasm!( - assembler - ; cmp eax, 0 - ; je =>no_br_label - ); - Self::emit_jmp( - assembler, - self.control_stack.as_ref().unwrap(), - &mut self.value_stack, - relative_depth as usize, - )?; - dynasm!( - assembler - ; =>no_br_label - ); - } - Operator::BrTable { table } => { - let (targets, default_target) = match table.read_table() { - Ok(x) => x, - Err(_) => { - return Err(CodegenError { - message: "cannot read br table", - }); - } - }; - let cond_ty = Self::emit_pop_into_ax(assembler, &mut self.value_stack)?; - if cond_ty != WpType::I32 { - return Err(CodegenError { - message: "expecting i32 for BrTable condition", - }); - } - let mut table = vec![0usize; targets.len()]; - dynasm!( - assembler - ; cmp eax, targets.len() as i32 - ; jae >default_br - ; shl rax, 3 - ; push rcx - ; mov rcx, QWORD table.as_ptr() as usize as i64 - ; add rax, rcx - ; pop rcx - ; mov rax, [rax] // assuming upper 32 bits of rax are zeroed - ; jmp rax - ); - for (i, target) in targets.iter().enumerate() { - let AssemblyOffset(offset) = assembler.offset(); - table[i] = offset; - Self::emit_jmp( - assembler, - self.control_stack.as_ref().unwrap(), - &mut self.value_stack, - *target as usize, - )?; // This does not actually modify value_stack. - } - dynasm!( - assembler - ; default_br: - ); - Self::emit_jmp( - assembler, - self.control_stack.as_ref().unwrap(), - &mut self.value_stack, - default_target as usize, - )?; - self.br_table_data.as_mut().unwrap().push(table); - self.unreachable_depth = 1; - } - Operator::I32Load { memarg } => { - Self::emit_memory_load( - assembler, - &mut self.value_stack, - |assembler, reg| { - dynasm!( - assembler - ; mov Rd(reg as u8), [Rq(reg as u8) + memarg.offset as i32] - ); - }, - WpType::I32, - module_info, - 4, - )?; - } - Operator::I32Load8U { memarg } => { - Self::emit_memory_load( - assembler, - &mut self.value_stack, - |assembler, reg| { - dynasm!( - assembler - ; movzx Rd(reg as u8), BYTE [Rq(reg as u8) + memarg.offset as i32] - ); - }, - WpType::I32, - module_info, - 1, - )?; - } - Operator::I32Load8S { memarg } => { - Self::emit_memory_load( - assembler, - &mut self.value_stack, - |assembler, reg| { - dynasm!( - assembler - ; movsx Rd(reg as u8), BYTE [Rq(reg as u8) + memarg.offset as i32] - ); - }, - WpType::I32, - module_info, - 1, - )?; - } - Operator::I32Load16U { memarg } => { - Self::emit_memory_load( - assembler, - &mut self.value_stack, - |assembler, reg| { - dynasm!( - assembler - ; movzx Rd(reg as u8), WORD [Rq(reg as u8) + memarg.offset as i32] - ); - }, - WpType::I32, - module_info, - 2, - )?; - } - Operator::I32Load16S { memarg } => { - Self::emit_memory_load( - assembler, - &mut self.value_stack, - |assembler, reg| { - dynasm!( - assembler - ; movsx Rd(reg as u8), WORD [Rq(reg as u8) + memarg.offset as i32] - ); - }, - WpType::I32, - module_info, - 2, - )?; - } - Operator::I32Store { memarg } => { - Self::emit_memory_store( - assembler, - &mut self.value_stack, - |assembler, addr_reg, value_reg| { - dynasm!( - assembler - ; mov [Rq(addr_reg as u8) + memarg.offset as i32], Rd(value_reg as u8) - ); - }, - WpType::I32, - module_info, - 4, - )?; - } - Operator::I32Store8 { memarg } => { - Self::emit_memory_store( - assembler, - &mut self.value_stack, - |assembler, addr_reg, value_reg| { - dynasm!( - assembler - ; mov [Rq(addr_reg as u8) + memarg.offset as i32], Rb(value_reg as u8) - ); - }, - WpType::I32, - module_info, - 1, - )?; - } - Operator::I32Store16 { memarg } => { - Self::emit_memory_store( - assembler, - &mut self.value_stack, - |assembler, addr_reg, value_reg| { - dynasm!( - assembler - ; mov [Rq(addr_reg as u8) + memarg.offset as i32], Rw(value_reg as u8) - ); - }, - WpType::I32, - module_info, - 2, - )?; - } - Operator::I64Load { memarg } => { - Self::emit_memory_load( - assembler, - &mut self.value_stack, - |assembler, reg| { - dynasm!( - assembler - ; mov Rq(reg as u8), [Rq(reg as u8) + memarg.offset as i32] - ); - }, - WpType::I64, - module_info, - 8, - )?; - } - Operator::I64Load8U { memarg } => { - Self::emit_memory_load( - assembler, - &mut self.value_stack, - |assembler, reg| { - dynasm!( - assembler - ; movzx Rq(reg as u8), BYTE [Rq(reg as u8) + memarg.offset as i32] - ); - }, - WpType::I64, - module_info, - 1, - )?; - } - Operator::I64Load8S { memarg } => { - Self::emit_memory_load( - assembler, - &mut self.value_stack, - |assembler, reg| { - dynasm!( - assembler - ; movsx Rq(reg as u8), BYTE [Rq(reg as u8) + memarg.offset as i32] - ); - }, - WpType::I64, - module_info, - 1, - )?; - } - Operator::I64Load16U { memarg } => { - Self::emit_memory_load( - assembler, - &mut self.value_stack, - |assembler, reg| { - dynasm!( - assembler - ; movzx Rq(reg as u8), WORD [Rq(reg as u8) + memarg.offset as i32] - ); - }, - WpType::I64, - module_info, - 2, - )?; - } - Operator::I64Load16S { memarg } => { - Self::emit_memory_load( - assembler, - &mut self.value_stack, - |assembler, reg| { - dynasm!( - assembler - ; movsx Rq(reg as u8), WORD [Rq(reg as u8) + memarg.offset as i32] - ); - }, - WpType::I64, - module_info, - 2, - )?; - } - Operator::I64Load32U { memarg } => { - Self::emit_memory_load( - assembler, - &mut self.value_stack, - |assembler, reg| { - dynasm!( - assembler - ; mov Rd(reg as u8), DWORD [Rq(reg as u8) + memarg.offset as i32] - ); - }, - WpType::I64, - module_info, - 4, - )?; - } - Operator::I64Load32S { memarg } => { - Self::emit_memory_load( - assembler, - &mut self.value_stack, - |assembler, reg| { - dynasm!( - assembler - ; movsx Rq(reg as u8), DWORD [Rq(reg as u8) + memarg.offset as i32] - ); - }, - WpType::I64, - module_info, - 4, - )?; - } - Operator::I64Store { memarg } => { - Self::emit_memory_store( - assembler, - &mut self.value_stack, - |assembler, addr_reg, value_reg| { - dynasm!( - assembler - ; mov [Rq(addr_reg as u8) + memarg.offset as i32], Rq(value_reg as u8) - ); - }, - WpType::I64, - module_info, - 8, - )?; - } - Operator::I64Store8 { memarg } => { - Self::emit_memory_store( - assembler, - &mut self.value_stack, - |assembler, addr_reg, value_reg| { - dynasm!( - assembler - ; mov [Rq(addr_reg as u8) + memarg.offset as i32], Rb(value_reg as u8) - ); - }, - WpType::I64, - module_info, - 1, - )?; - } - Operator::I64Store16 { memarg } => { - Self::emit_memory_store( - assembler, - &mut self.value_stack, - |assembler, addr_reg, value_reg| { - dynasm!( - assembler - ; mov [Rq(addr_reg as u8) + memarg.offset as i32], Rw(value_reg as u8) - ); - }, - WpType::I64, - module_info, - 2, - )?; - } - Operator::I64Store32 { memarg } => { - Self::emit_memory_store( - assembler, - &mut self.value_stack, - |assembler, addr_reg, value_reg| { - dynasm!( - assembler - ; mov [Rq(addr_reg as u8) + memarg.offset as i32], Rd(value_reg as u8) - ); - }, - WpType::I64, - module_info, - 4, - )?; - } - Operator::F32Const { value } => { - let location = self.value_stack.push(WpType::F32); - match location { - ValueLocation::Register(x) => { - let reg = Register::from_scratch_reg(x); - dynasm!( - assembler - ; mov Rd(reg as u8), value.bits() as i32 - ); - } - ValueLocation::Stack => { - dynasm!( - assembler - ; push value.bits() as i32 - ); - } - } - } - Operator::F64Const { value } => { - let location = self.value_stack.push(WpType::F64); - match location { - ValueLocation::Register(x) => { - let reg = Register::from_scratch_reg(x); - dynasm!( - assembler - ; mov Rq(reg as u8), QWORD value.bits() as i64 - ); - } - ValueLocation::Stack => { - dynasm!( - assembler - ; mov rax, QWORD value.bits() as i64 - ; push rax - ); - } - } - } - Operator::F32Load { memarg } => { - Self::emit_memory_load( - assembler, - &mut self.value_stack, - |assembler, reg| { - dynasm!( - assembler - ; mov Rd(reg as u8), [Rq(reg as u8) + memarg.offset as i32] - ); - }, - WpType::F32, - module_info, - 4, - )?; - } - Operator::F32Store { memarg } => { - Self::emit_memory_store( - assembler, - &mut self.value_stack, - |assembler, addr_reg, value_reg| { - dynasm!( - assembler - ; mov [Rq(addr_reg as u8) + memarg.offset as i32], Rd(value_reg as u8) - ); - }, - WpType::F32, - module_info, - 4, - )?; - } - Operator::F64Load { memarg } => { - Self::emit_memory_load( - assembler, - &mut self.value_stack, - |assembler, reg| { - dynasm!( - assembler - ; mov Rq(reg as u8), [Rq(reg as u8) + memarg.offset as i32] - ); - }, - WpType::F64, - module_info, - 8, - )?; - } - Operator::F64Store { memarg } => { - Self::emit_memory_store( - assembler, - &mut self.value_stack, - |assembler, addr_reg, value_reg| { - dynasm!( - assembler - ; mov [Rq(addr_reg as u8) + memarg.offset as i32], Rq(value_reg as u8) - ); - }, - WpType::F64, - module_info, - 8, - )?; - } - Operator::I32ReinterpretF32 => { - Self::emit_reinterpret(&mut self.value_stack, WpType::F32, WpType::I32)?; - } - Operator::F32ReinterpretI32 => { - Self::emit_reinterpret(&mut self.value_stack, WpType::I32, WpType::F32)?; - } - Operator::I64ReinterpretF64 => { - Self::emit_reinterpret(&mut self.value_stack, WpType::F64, WpType::I64)?; - } - Operator::F64ReinterpretI64 => { - Self::emit_reinterpret(&mut self.value_stack, WpType::I64, WpType::F64)?; - } - Operator::F32ConvertSI32 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; cvtsi2ss xmm1, Rd(reg as u8) - ; movd Rd(reg as u8), xmm1 - ); - }, - WpType::I32, - WpType::F32, - )?; - } - Operator::F32ConvertUI32 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; mov Rd(reg as u8), Rd(reg as u8) // clear upper 32 bits - ; cvtsi2ss xmm1, Rq(reg as u8) - ; movd Rd(reg as u8), xmm1 - ); - }, - WpType::I32, - WpType::F32, - )?; - } - Operator::F32ConvertSI64 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; cvtsi2ss xmm1, Rq(reg as u8) - ; movd Rd(reg as u8), xmm1 - ); - }, - WpType::I64, - WpType::F32, - )?; - } - /* - 0: 48 85 ff test %rdi,%rdi - 3: 78 0b js 10 - 5: c4 e1 fb 2a c7 vcvtsi2sd %rdi,%xmm0,%xmm0 - a: c3 retq - b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) - 10: 48 89 f8 mov %rdi,%rax - 13: 83 e7 01 and $0x1,%edi - 16: 48 d1 e8 shr %rax - 19: 48 09 f8 or %rdi,%rax - 1c: c4 e1 fb 2a c0 vcvtsi2sd %rax,%xmm0,%xmm0 - 21: c5 fb 58 c0 vaddsd %xmm0,%xmm0,%xmm0 - 25: c3 retq - */ - Operator::F32ConvertUI64 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; test Rq(reg as u8), Rq(reg as u8) - ; js >do_convert - ; cvtsi2ss xmm1, Rq(reg as u8) - ; movd Rd(reg as u8), xmm1 - ; jmp >end_convert - ; do_convert: - ; movq xmm5, r15 - ; mov r15, Rq(reg as u8) - ; and r15, 1 - ; shr Rq(reg as u8), 1 - ; or Rq(reg as u8), r15 - ; cvtsi2ss xmm1, Rq(reg as u8) - ; addss xmm1, xmm1 - ; movq r15, xmm5 - ; movd Rd(reg as u8), xmm1 - ; end_convert: - ); - }, - WpType::I64, - WpType::F32, - )?; - } - Operator::F64ConvertSI32 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; cvtsi2sd xmm1, Rd(reg as u8) - ; movq Rq(reg as u8), xmm1 - ); - }, - WpType::I32, - WpType::F64, - )?; - } - Operator::F64ConvertUI32 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; mov Rd(reg as u8), Rd(reg as u8) // clear upper 32 bits - ; cvtsi2sd xmm1, Rq(reg as u8) - ; movq Rq(reg as u8), xmm1 - ); - }, - WpType::I32, - WpType::F64, - )?; - } - Operator::F64ConvertSI64 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; cvtsi2sd xmm1, Rq(reg as u8) - ; movq Rq(reg as u8), xmm1 - ); - }, - WpType::I64, - WpType::F64, - )?; - } - Operator::F64ConvertUI64 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; test Rq(reg as u8), Rq(reg as u8) - ; js >do_convert - ; cvtsi2sd xmm1, Rq(reg as u8) - ; movq Rq(reg as u8), xmm1 - ; jmp >end_convert - ; do_convert: - ; movq xmm5, r15 - ; mov r15, Rq(reg as u8) - ; and r15, 1 - ; shr Rq(reg as u8), 1 - ; or Rq(reg as u8), r15 - ; cvtsi2sd xmm1, Rq(reg as u8) - ; addsd xmm1, xmm1 - ; movq r15, xmm5 - ; movq Rq(reg as u8), xmm1 - ; end_convert: - ); - }, - WpType::I64, - WpType::F64, - )?; - } - Operator::F64PromoteF32 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; movd xmm1, Rd(reg as u8) - ; cvtss2sd xmm1, xmm1 - ; movq Rq(reg as u8), xmm1 - ); - }, - WpType::F32, - WpType::F64, - )?; - } - Operator::F32DemoteF64 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; movq xmm1, Rq(reg as u8) - ; cvtsd2ss xmm1, xmm1 - ; movd Rd(reg as u8), xmm1 - ); - }, - WpType::F64, - WpType::F32, - )?; - } - Operator::F32Add => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movd xmm1, Rd(left as u8) - ; movd xmm2, Rd(right as u8) - ; addss xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ); - }, - WpType::F32, - WpType::F32, - )?; - } - Operator::F32Sub => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movd xmm1, Rd(left as u8) - ; movd xmm2, Rd(right as u8) - ; subss xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ); - }, - WpType::F32, - WpType::F32, - )?; - } - Operator::F32Mul => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movd xmm1, Rd(left as u8) - ; movd xmm2, Rd(right as u8) - ; mulss xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ); - }, - WpType::F32, - WpType::F32, - )?; - } - Operator::F32Div => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movd xmm1, Rd(left as u8) - ; movd xmm2, Rd(right as u8) - ; divss xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ); - }, - WpType::F32, - WpType::F32, - )?; - } - Operator::F32Max => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movd xmm1, Rd(left as u8) - ; movd xmm2, Rd(right as u8) - ; maxss xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ); - }, - WpType::F32, - WpType::F32, - )?; - } - Operator::F32Min => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movd xmm1, Rd(left as u8) - ; movd xmm2, Rd(right as u8) - ; minss xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ); - }, - WpType::F32, - WpType::F32, - )?; - } - Operator::F32Eq => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movd xmm1, Rd(left as u8) - ; movd xmm2, Rd(right as u8) - ; cmpeqss xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ; and Rd(left as u8), 1 - ); - }, - WpType::F32, - WpType::I32, - )?; - } - Operator::F32Ne => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movd xmm1, Rd(left as u8) - ; movd xmm2, Rd(right as u8) - ; cmpneqss xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ; and Rd(left as u8), 1 - ); - }, - WpType::F32, - WpType::I32, - )?; - } - Operator::F32Gt => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movd xmm1, Rd(left as u8) - ; movd xmm2, Rd(right as u8) - ; vcmpgtss xmm1, xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ; and Rd(left as u8), 1 - ); - }, - WpType::F32, - WpType::I32, - )?; - } - Operator::F32Ge => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movd xmm1, Rd(left as u8) - ; movd xmm2, Rd(right as u8) - ; vcmpgess xmm1, xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ; and Rd(left as u8), 1 - ); - }, - WpType::F32, - WpType::I32, - )?; - } - Operator::F32Lt => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movd xmm1, Rd(left as u8) - ; movd xmm2, Rd(right as u8) - ; cmpltss xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ; and Rd(left as u8), 1 - ); - }, - WpType::F32, - WpType::I32, - )?; - } - Operator::F32Le => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movd xmm1, Rd(left as u8) - ; movd xmm2, Rd(right as u8) - ; cmpless xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ; and Rd(left as u8), 1 - ); - }, - WpType::F32, - WpType::I32, - )?; - } - Operator::F32Copysign => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movd xmm1, Rd(left as u8) - ; movd xmm2, Rd(right as u8) - ; mov eax, 0x7fffffffu32 as i32 - ; movd xmm3, eax - ; pand xmm1, xmm3 - ; mov eax, 0x80000000u32 as i32 - ; movd xmm3, eax - ; pand xmm2, xmm3 - ; por xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ); - }, - WpType::F32, - WpType::F32, - )?; - } - Operator::F32Sqrt => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; movd xmm1, Rd(reg as u8) - ; sqrtss xmm1, xmm1 - ; movd Rd(reg as u8), xmm1 - ); - }, - WpType::F32, - WpType::F32, - )?; - } - Operator::F32Abs => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; and Rd(reg as u8), 0x7fffffffu32 as i32 - ); - }, - WpType::F32, - WpType::F32, - )?; - } - Operator::F32Neg => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; btc Rd(reg as u8), 31 - ); - }, - WpType::F32, - WpType::F32, - )?; - } - Operator::F32Nearest => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; movd xmm1, Rd(reg as u8) - ; roundss xmm1, xmm1, 0 - ; movd Rd(reg as u8), xmm1 - ); - }, - WpType::F32, - WpType::F32, - )?; - } - Operator::F32Floor => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; movd xmm1, Rd(reg as u8) - ; roundss xmm1, xmm1, 1 - ; movd Rd(reg as u8), xmm1 - ); - }, - WpType::F32, - WpType::F32, - )?; - } - Operator::F32Ceil => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; movd xmm1, Rd(reg as u8) - ; roundss xmm1, xmm1, 2 - ; movd Rd(reg as u8), xmm1 - ); - }, - WpType::F32, - WpType::F32, - )?; - } - Operator::F32Trunc => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; movd xmm1, Rd(reg as u8) - ; roundss xmm1, xmm1, 3 - ; movd Rd(reg as u8), xmm1 - ); - }, - WpType::F32, - WpType::F32, - )?; - } - Operator::I32TruncUF32 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - Self::emit_f32_int_conv_check(assembler, reg, -1.0, 4294967296.0); - dynasm!( - assembler - ; movd xmm1, Rd(reg as u8) - ; cvttss2si Rq(reg as u8), xmm1 - ; mov Rd(reg as u8), Rd(reg as u8) - ); - }, - WpType::F32, - WpType::I32, - )?; - } - Operator::I32TruncSF32 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - Self::emit_f32_int_conv_check(assembler, reg, -2147483904.0, 2147483648.0); - dynasm!( - assembler - ; movd xmm1, Rd(reg as u8) - ; cvttss2si Rd(reg as u8), xmm1 - ); - }, - WpType::F32, - WpType::I32, - )?; - } - Operator::I64TruncUF32 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - Self::emit_f32_int_conv_check(assembler, reg, -1.0, 18446744073709551616.0); - /* - LCPI0_0: - .long 1593835520 ## float 9.22337203E+18 - - movss LCPI0_0(%rip), %xmm1 ## xmm1 = mem[0],zero,zero,zero - movaps %xmm0, %xmm2 - subss %xmm1, %xmm2 - cvttss2si %xmm2, %rax - movabsq $-9223372036854775808, %rcx ## imm = 0x8000000000000000 - xorq %rax, %rcx - cvttss2si %xmm0, %rax - ucomiss %xmm1, %xmm0 - cmovaeq %rcx, %rax - */ - dynasm!( - assembler - ; movq xmm5, r15 - ; mov r15d, 1593835520u32 as i32 //float 9.22337203E+18 - ; movd xmm1, r15d - ; movd xmm2, Rd(reg as u8) - ; movd xmm3, Rd(reg as u8) - ; subss xmm2, xmm1 - ; cvttss2si Rq(reg as u8), xmm2 - ; mov r15, QWORD 0x8000000000000000u64 as i64 - ; xor r15, Rq(reg as u8) - ; cvttss2si Rq(reg as u8), xmm3 - ; ucomiss xmm3, xmm1 - ; cmovae Rq(reg as u8), r15 - ; movq r15, xmm5 - ); - }, - WpType::F32, - WpType::I64, - )?; - } - Operator::I64TruncSF32 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - Self::emit_f32_int_conv_check( - assembler, - reg, - -9223373136366403584.0, - 9223372036854775808.0, - ); - dynasm!( - assembler - ; movd xmm1, Rd(reg as u8) - ; cvttss2si Rq(reg as u8), xmm1 - ); - }, - WpType::F32, - WpType::I64, - )?; - } - Operator::F64Add => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movq xmm1, Rq(left as u8) - ; movq xmm2, Rq(right as u8) - ; addsd xmm1, xmm2 - ; movq Rq(left as u8), xmm1 - ); - }, - WpType::F64, - WpType::F64, - )?; - } - Operator::F64Sub => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movq xmm1, Rq(left as u8) - ; movq xmm2, Rq(right as u8) - ; subsd xmm1, xmm2 - ; movq Rq(left as u8), xmm1 - ); - }, - WpType::F64, - WpType::F64, - )?; - } - Operator::F64Mul => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movq xmm1, Rq(left as u8) - ; movq xmm2, Rq(right as u8) - ; mulsd xmm1, xmm2 - ; movq Rq(left as u8), xmm1 - ); - }, - WpType::F64, - WpType::F64, - )?; - } - Operator::F64Div => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movq xmm1, Rq(left as u8) - ; movq xmm2, Rq(right as u8) - ; divsd xmm1, xmm2 - ; movq Rq(left as u8), xmm1 - ); - }, - WpType::F64, - WpType::F64, - )?; - } - Operator::F64Max => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movq xmm1, Rq(left as u8) - ; movq xmm2, Rq(right as u8) - ; maxsd xmm1, xmm2 - ; movq Rq(left as u8), xmm1 - ); - }, - WpType::F64, - WpType::F64, - )?; - } - Operator::F64Min => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movq xmm1, Rq(left as u8) - ; movq xmm2, Rq(right as u8) - ; minsd xmm1, xmm2 - ; movq Rq(left as u8), xmm1 - ); - }, - WpType::F64, - WpType::F64, - )?; - } - Operator::F64Eq => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movq xmm1, Rq(left as u8) - ; movq xmm2, Rq(right as u8) - ; cmpeqsd xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ; and Rd(left as u8), 1 - ); - }, - WpType::F64, - WpType::I32, - )?; - } - Operator::F64Ne => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movq xmm1, Rq(left as u8) - ; movq xmm2, Rq(right as u8) - ; cmpneqsd xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ; and Rd(left as u8), 1 - ); - }, - WpType::F64, - WpType::I32, - )?; - } - Operator::F64Gt => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movq xmm1, Rq(left as u8) - ; movq xmm2, Rq(right as u8) - ; vcmpgtsd xmm1, xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ; and Rd(left as u8), 1 - ); - }, - WpType::F64, - WpType::I32, - )?; - } - Operator::F64Ge => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movq xmm1, Rq(left as u8) - ; movq xmm2, Rq(right as u8) - ; vcmpgesd xmm1, xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ; and Rd(left as u8), 1 - ); - }, - WpType::F64, - WpType::I32, - )?; - } - Operator::F64Lt => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movq xmm1, Rq(left as u8) - ; movq xmm2, Rq(right as u8) - ; cmpltsd xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ; and Rd(left as u8), 1 - ); - }, - WpType::F64, - WpType::I32, - )?; - } - Operator::F64Le => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movq xmm1, Rq(left as u8) - ; movq xmm2, Rq(right as u8) - ; cmplesd xmm1, xmm2 - ; movd Rd(left as u8), xmm1 - ; and Rd(left as u8), 1 - ); - }, - WpType::F64, - WpType::I32, - )?; - } - Operator::F64Copysign => { - Self::emit_binop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, left, right| { - dynasm!( - assembler - ; movq xmm1, Rq(left as u8) - ; movq xmm2, Rq(right as u8) - ; mov rax, QWORD 0x7fffffffffffffffu64 as i64 - ; movq xmm3, rax - ; pand xmm1, xmm3 - ; mov rax, QWORD 0x8000000000000000u64 as i64 - ; movq xmm3, rax - ; pand xmm2, xmm3 - ; por xmm1, xmm2 - ; movq Rq(left as u8), xmm1 - ); - }, - WpType::F64, - WpType::F64, - )?; - } - Operator::F64Sqrt => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; movq xmm1, Rq(reg as u8) - ; sqrtsd xmm1, xmm1 - ; movq Rq(reg as u8), xmm1 - ); - }, - WpType::F64, - WpType::F64, - )?; - } - Operator::F64Abs => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; movq xmm1, Rq(reg as u8) - ; mov rax, QWORD 0x7fffffffffffffff - ; movq xmm2, rax - ; pand xmm1, xmm2 - ; movq Rq(reg as u8), xmm1 - ); - }, - WpType::F64, - WpType::F64, - )?; - } - Operator::F64Neg => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; btc Rq(reg as u8), 63 - ); - }, - WpType::F64, - WpType::F64, - )?; - } - Operator::F64Nearest => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; movq xmm1, Rq(reg as u8) - ; roundsd xmm1, xmm1, 0 - ; movq Rq(reg as u8), xmm1 - ); - }, - WpType::F64, - WpType::F64, - )?; - } - Operator::F64Floor => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; movq xmm1, Rq(reg as u8) - ; roundsd xmm1, xmm1, 1 - ; movq Rq(reg as u8), xmm1 - ); - }, - WpType::F64, - WpType::F64, - )?; - } - Operator::F64Ceil => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; movq xmm1, Rq(reg as u8) - ; roundsd xmm1, xmm1, 2 - ; movq Rq(reg as u8), xmm1 - ); - }, - WpType::F64, - WpType::F64, - )?; - } - Operator::F64Trunc => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - dynasm!( - assembler - ; movq xmm1, Rq(reg as u8) - ; roundsd xmm1, xmm1, 3 - ; movq Rq(reg as u8), xmm1 - ); - }, - WpType::F64, - WpType::F64, - )?; - } - Operator::I32TruncUF64 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - Self::emit_f64_int_conv_check(assembler, reg, -1.0, 4294967296.0); - - dynasm!( - assembler - ; movq xmm1, Rq(reg as u8) - ; cvttsd2si Rq(reg as u8), xmm1 - ; mov Rd(reg as u8), Rd(reg as u8) - ); - }, - WpType::F64, - WpType::I32, - )?; - } - Operator::I32TruncSF64 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - Self::emit_f64_int_conv_check(assembler, reg, -2147483649.0, 2147483648.0); - - dynasm!( - assembler - ; movq xmm1, Rq(reg as u8) - ; cvttsd2si Rd(reg as u8), xmm1 - ); - }, - WpType::F64, - WpType::I32, - )?; - } - Operator::I64TruncUF64 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - Self::emit_f64_int_conv_check(assembler, reg, -1.0, 18446744073709551616.0); - - /* - LCPI0_0: - .quad 4890909195324358656 ## double 9.2233720368547758E+18 - - movsd LCPI0_0(%rip), %xmm1 ## xmm1 = mem[0],zero - movapd %xmm0, %xmm2 - subsd %xmm1, %xmm2 - cvttsd2si %xmm2, %rax - movabsq $-9223372036854775808, %rcx ## imm = 0x8000000000000000 - xorq %rax, %rcx - cvttsd2si %xmm0, %rax - ucomisd %xmm1, %xmm0 - cmovaeq %rcx, %rax - */ - - dynasm!( - assembler - ; movq xmm5, r15 - ; mov r15, QWORD 4890909195324358656u64 as i64 //double 9.2233720368547758E+18 - ; movq xmm1, r15 - ; movq xmm2, Rq(reg as u8) - ; movq xmm3, Rq(reg as u8) - ; subsd xmm2, xmm1 - ; cvttsd2si Rq(reg as u8), xmm2 - ; mov r15, QWORD 0x8000000000000000u64 as i64 - ; xor r15, Rq(reg as u8) - ; cvttsd2si Rq(reg as u8), xmm3 - ; ucomisd xmm3, xmm1 - ; cmovae Rq(reg as u8), r15 - ; movq r15, xmm5 - ); - }, - WpType::F64, - WpType::I64, - )?; - } - Operator::I64TruncSF64 => { - Self::emit_unop( - assembler, - &mut self.value_stack, - |assembler, _value_stack, reg| { - Self::emit_f64_int_conv_check( - assembler, - reg, - -9223372036854777856.0, - 9223372036854775808.0, - ); - - dynasm!( - assembler - ; movq xmm1, Rq(reg as u8) - ; cvttsd2si Rq(reg as u8), xmm1 - ); - }, - WpType::F64, - WpType::I64, - )?; - } - Operator::Nop => {} - Operator::MemorySize { reserved } => { - let memory_index = MemoryIndex::new(reserved as usize); - let label = match memory_index.local_or_import(module_info) { - LocalOrImport::Local(local_mem_index) => { - let mem_desc = &module_info.memories[local_mem_index]; - match mem_desc.memory_type() { - MemoryType::Dynamic => { - self.native_trampolines.memory_size_dynamic_local - } - MemoryType::Static => self.native_trampolines.memory_size_static_local, - MemoryType::SharedStatic => { - self.native_trampolines.memory_size_shared_local - } - } - } - LocalOrImport::Import(import_mem_index) => { - let mem_desc = &module_info.imported_memories[import_mem_index].1; - match mem_desc.memory_type() { - MemoryType::Dynamic => { - self.native_trampolines.memory_size_dynamic_import - } - MemoryType::Static => self.native_trampolines.memory_size_static_import, - MemoryType::SharedStatic => { - self.native_trampolines.memory_size_shared_import - } - } - } - }; - Self::emit_call_raw(assembler, &mut self.value_stack, label, &[], &[WpType::I32])?; - } - Operator::MemoryGrow { reserved } => { - let memory_index = MemoryIndex::new(reserved as usize); - let label = match memory_index.local_or_import(module_info) { - LocalOrImport::Local(local_mem_index) => { - let mem_desc = &module_info.memories[local_mem_index]; - match mem_desc.memory_type() { - MemoryType::Dynamic => { - self.native_trampolines.memory_grow_dynamic_local - } - MemoryType::Static => self.native_trampolines.memory_grow_static_local, - MemoryType::SharedStatic => { - self.native_trampolines.memory_grow_shared_local - } - } - } - LocalOrImport::Import(import_mem_index) => { - let mem_desc = &module_info.imported_memories[import_mem_index].1; - match mem_desc.memory_type() { - MemoryType::Dynamic => { - self.native_trampolines.memory_grow_dynamic_import - } - MemoryType::Static => self.native_trampolines.memory_grow_static_import, - MemoryType::SharedStatic => { - self.native_trampolines.memory_grow_shared_import - } - } - } - }; - Self::emit_call_raw( - assembler, - &mut self.value_stack, - label, - &[WpType::I32], - &[WpType::I32], - )?; - Self::emit_update_memory_from_ctx(assembler, module_info)?; - } - _ => { - panic!("{:?}", op); - } - } - Ok(()) - } - - fn finalize(&mut self) -> Result<(), CodegenError> { - let assembler = self.assembler.as_mut().unwrap(); - - dynasm!( - assembler - ; mov rsp, rbp - ; pop rbp - ; ret - ); - - if self.value_stack.values.len() != 0 - || self.control_stack.as_ref().unwrap().frames.len() != 0 - { - return Err(CodegenError { - message: "control/value stack not empty at end of function", - }); - } - - Ok(()) - } -} - -fn get_size_of_type(ty: &WpType) -> Result { - match *ty { - WpType::I32 | WpType::F32 => Ok(4), - WpType::I64 | WpType::F64 => Ok(8), - _ => Err(CodegenError { - message: "unknown type", - }), - } -} - -fn is_dword(n: usize) -> bool { - n == 4 -} - -fn type_to_wp_type(ty: Type) -> WpType { - match ty { - Type::I32 => WpType::I32, - Type::I64 => WpType::I64, - Type::F32 => WpType::F32, - Type::F64 => WpType::F64, - } -} - -unsafe extern "C" fn invoke_import( - _unused: usize, - import_id: usize, - stack_top: *mut u8, - stack_base: *mut u8, - _vmctx: *mut vm::Ctx, - _memory_base: *mut u8, -) -> u64 { - let vmctx: &mut vm::InternalCtx = &mut *(_vmctx as *mut vm::InternalCtx); - let import = (*vmctx.imported_funcs.offset(import_id as isize)).func; - - CONSTRUCT_STACK_AND_CALL_NATIVE(stack_top, stack_base, _vmctx, import) -} - -#[repr(u64)] -#[derive(Copy, Clone, Debug)] -enum CallIndirectLocalOrImport { - Local, - Import, -} - -#[allow(clippy::cast_ptr_alignment)] -unsafe extern "C" fn call_indirect( - sig_index: usize, - local_or_import: CallIndirectLocalOrImport, - mut stack_top: *mut u8, - stack_base: *mut u8, - vmctx: *mut vm::Ctx, - _memory_base: *mut u8, -) -> u64 { - let elem_index = *(stack_top as *mut u32) as usize; - stack_top = stack_top.offset(8); - assert!(stack_top as usize <= stack_base as usize); - - let table: &LocalTable = match local_or_import { - CallIndirectLocalOrImport::Local => &*(*(*(vmctx as *mut vm::InternalCtx)).tables), - CallIndirectLocalOrImport::Import => { - &*(*(*(vmctx as *mut vm::InternalCtx)).imported_tables) - } - }; - if elem_index >= table.count as usize { - eprintln!("element index out of bounds"); - protect_unix::trigger_trap(); - } - let anyfunc = &*(table.base as *mut vm::Anyfunc).offset(elem_index as isize); - let dynamic_sigindex = *(*(vmctx as *mut vm::InternalCtx)) - .dynamic_sigindices - .offset(sig_index as isize); - - if anyfunc.func.is_null() { - eprintln!("null anyfunc"); - protect_unix::trigger_trap(); - } - - if anyfunc.sig_id.0 != dynamic_sigindex.0 { - eprintln!("signature mismatch"); - protect_unix::trigger_trap(); - } - - CONSTRUCT_STACK_AND_CALL_NATIVE(stack_top, stack_base, anyfunc.ctx, anyfunc.func) -} - -#[repr(u64)] -#[derive(Copy, Clone, Debug)] -enum MemoryKind { - DynamicLocal, - StaticLocal, - SharedLocal, - DynamicImport, - StaticImport, - SharedImport, -} - -unsafe extern "C" fn _memory_size( - op: MemoryKind, - index: usize, - _stack_top: *mut u8, - _stack_base: *mut u8, - vmctx: *mut vm::Ctx, - _memory_base: *mut u8, -) -> u64 { - use wasmer_runtime_core::vmcalls; - let ret = match op { - MemoryKind::DynamicLocal => { - vmcalls::local_dynamic_memory_size(&*vmctx, LocalMemoryIndex::new(index)) - } - MemoryKind::StaticLocal => { - vmcalls::local_static_memory_size(&*vmctx, LocalMemoryIndex::new(index)) - } - MemoryKind::SharedLocal => unreachable!(), - MemoryKind::DynamicImport => { - vmcalls::imported_dynamic_memory_size(&*vmctx, ImportedMemoryIndex::new(index)) - } - MemoryKind::StaticImport => { - vmcalls::imported_static_memory_size(&*vmctx, ImportedMemoryIndex::new(index)) - } - MemoryKind::SharedImport => unreachable!(), - }; - ret.0 as u32 as u64 -} - -#[allow(clippy::cast_ptr_alignment)] -unsafe extern "C" fn _memory_grow( - op: MemoryKind, - index: usize, - stack_top: *mut u8, - stack_base: *mut u8, - vmctx: *mut vm::Ctx, - _memory_base: *mut u8, -) -> u64 { - use wasmer_runtime_core::vmcalls; - assert_eq!(stack_base as usize - stack_top as usize, 8); - let pages = Pages(*(stack_top as *mut u32)); - let ret = match op { - MemoryKind::DynamicLocal => { - vmcalls::local_dynamic_memory_grow(&mut *vmctx, LocalMemoryIndex::new(index), pages) - } - MemoryKind::StaticLocal => { - vmcalls::local_static_memory_grow(&mut *vmctx, LocalMemoryIndex::new(index), pages) - } - MemoryKind::SharedLocal => unreachable!(), - MemoryKind::DynamicImport => vmcalls::imported_dynamic_memory_grow( - &mut *vmctx, - ImportedMemoryIndex::new(index), - pages, - ), - MemoryKind::StaticImport => vmcalls::imported_static_memory_grow( - &mut *vmctx, - ImportedMemoryIndex::new(index), - pages, - ), - MemoryKind::SharedImport => unreachable!(), - }; - ret as u32 as u64 -} diff --git a/lib/dynasm-backend/src/emitter_x64.rs b/lib/dynasm-backend/src/emitter_x64.rs index 864c860b0..dc747b898 100644 --- a/lib/dynasm-backend/src/emitter_x64.rs +++ b/lib/dynasm-backend/src/emitter_x64.rs @@ -71,12 +71,14 @@ pub enum Size { } #[derive(Copy, Clone, Debug)] +#[allow(dead_code)] pub enum XMMOrMemory { XMM(XMM), Memory(GPR, i32), } #[derive(Copy, Clone, Debug)] +#[allow(dead_code)] pub enum GPROrMemory { GPR(GPR), Memory(GPR, i32), @@ -788,11 +790,11 @@ impl Emitter for Assembler { } fn emit_btc_gpr_imm8_32(&mut self, src: u8, dst: GPR) { - dynasm!(self ; btc Rd(dst as u8), BYTE (src as i8)); + dynasm!(self ; btc Rd(dst as u8), BYTE src as i8); } fn emit_btc_gpr_imm8_64(&mut self, src: u8, dst: GPR) { - dynasm!(self ; btc Rq(dst as u8), BYTE (src as i8)); + dynasm!(self ; btc Rq(dst as u8), BYTE src as i8); } fn emit_cmovae_gpr_32(&mut self, src: GPR, dst: GPR) { diff --git a/lib/dynasm-backend/src/lib.rs b/lib/dynasm-backend/src/lib.rs index 326a3fcf4..fb248044e 100644 --- a/lib/dynasm-backend/src/lib.rs +++ b/lib/dynasm-backend/src/lib.rs @@ -22,10 +22,8 @@ mod codegen; mod codegen_x64; mod parse; mod protect_unix; -mod stack; mod emitter_x64; mod machine; -mod codegen_x64_v1; use crate::codegen::{CodegenError, ModuleCodeGenerator}; use crate::parse::LoadError; diff --git a/lib/dynasm-backend/src/machine.rs b/lib/dynasm-backend/src/machine.rs index 7f8eb0138..7755b9f85 100644 --- a/lib/dynasm-backend/src/machine.rs +++ b/lib/dynasm-backend/src/machine.rs @@ -1,6 +1,7 @@ use crate::emitter_x64::*; use std::collections::HashSet; use wasmparser::Type as WpType; +use smallvec::SmallVec; struct MachineStackOffset(usize); @@ -142,36 +143,6 @@ impl Machine { assert_eq!(self.used_xmms.remove(&xmm), true); } - /// Acquires stack locations from the machine state. - pub fn acquire_stack_locations( - &mut self, - assembler: &mut E, - n: usize, - zeroed: bool, - ) -> Vec { - let mut ret = vec![]; - let mut delta_stack_offset: usize = 0; - - for _ in 0..n { - let loc = { - self.stack_offset.0 += 8; - delta_stack_offset += 8; - Location::Memory(GPR::RBP, -(self.stack_offset.0 as i32)) - }; - ret.push(loc); - } - - if delta_stack_offset != 0 { - assembler.emit_sub(Size::S64, Location::Imm32(delta_stack_offset as u32), Location::GPR(GPR::RSP)); - } - if zeroed { - for i in 0..n { - assembler.emit_mov(Size::S64, Location::Imm32(0), ret[i]); - } - } - ret - } - /// Acquires locations from the machine state. /// /// If the returned locations are used for stack value, `release_location` needs to be called on them; @@ -181,8 +152,8 @@ impl Machine { assembler: &mut E, tys: &[WpType], zeroed: bool, - ) -> Vec { - let mut ret = vec![]; + ) -> SmallVec<[Location; 1]> { + let mut ret = smallvec![]; let mut delta_stack_offset: usize = 0; for ty in tys { @@ -351,7 +322,7 @@ impl Machine { for i in 0..n_params { let loc = Self::get_param_location(i + 1); locations.push(match loc { - Location::GPR(x) => { + Location::GPR(_) => { let old_idx = allocated; allocated += 1; get_local_location(old_idx) @@ -362,7 +333,7 @@ impl Machine { } // Determine locations for normal locals. - for i in n_params..n { + for _ in n_params..n { locations.push(get_local_location(allocated)); allocated += 1; } @@ -383,7 +354,7 @@ impl Machine { // Save callee-saved registers. for loc in locations.iter() { - if let Location::GPR(x) = *loc { + if let Location::GPR(_) = *loc { a.emit_push(Size::S64, *loc); self.stack_offset.0 += 8; } @@ -400,7 +371,7 @@ impl Machine { for i in 0..n_params { let loc = Self::get_param_location(i + 1); match loc { - Location::GPR(x) => { + Location::GPR(_) => { a.emit_mov(Size::S64, loc, locations[i]); }, _ => break @@ -427,7 +398,7 @@ impl Machine { // Restore callee-saved registers. for loc in locations.iter().rev() { - if let Location::GPR(x) = *loc { + if let Location::GPR(_) = *loc { a.emit_pop(Size::S64, *loc); } } diff --git a/lib/dynasm-backend/src/protect_unix.rs b/lib/dynasm-backend/src/protect_unix.rs index 4daf633aa..616b68b10 100644 --- a/lib/dynasm-backend/src/protect_unix.rs +++ b/lib/dynasm-backend/src/protect_unix.rs @@ -54,12 +54,6 @@ thread_local! { pub static CURRENT_EXECUTABLE_BUFFER: Cell<*const c_void> = Cell::new(ptr::null()); } -pub unsafe fn trigger_trap() -> ! { - let jmp_buf = SETJMP_BUFFER.with(|buf| buf.get()); - - longjmp(jmp_buf as *mut c_void, 0) -} - pub fn call_protected(f: impl FnOnce() -> T) -> RuntimeResult { unsafe { let jmp_buf = SETJMP_BUFFER.with(|buf| buf.get()); diff --git a/lib/dynasm-backend/src/stack.rs b/lib/dynasm-backend/src/stack.rs deleted file mode 100644 index d237b05b1..000000000 --- a/lib/dynasm-backend/src/stack.rs +++ /dev/null @@ -1,164 +0,0 @@ -use crate::codegen::CodegenError; -use dynasmrt::DynamicLabel; -use wasmparser::Type as WpType; - -/*#[repr(u8)] -#[derive(Copy, Clone, Debug)] -pub enum RegisterName { - RDI, - RSI, - RDX, - RCX, - R8, - R9, - R10, - R11, - RBX, - R12, - R13, - R14, - R15, - Invalid, -}*/ - -#[derive(Debug, Copy, Clone)] -pub enum IfElseState { - None, - If(DynamicLabel), - Else, -} - -#[derive(Debug)] -pub struct ControlFrame { - pub label: DynamicLabel, - pub loop_like: bool, - pub if_else: IfElseState, - pub returns: Vec, - pub value_stack_depth_before: usize, -} - -#[derive(Debug)] -pub struct ControlStack { - pub frames: Vec, -} - -#[derive(Debug)] -pub struct ValueStack { - pub num_regs: u8, - pub values: Vec, -} - -#[derive(Copy, Clone, Debug)] -pub struct ValueInfo { - pub ty: WpType, - pub location: ValueLocation, -} - -#[derive(Copy, Clone, Debug, Eq, PartialEq)] -pub enum ValueLocation { - Register(ScratchRegister), - Stack, -} - -#[derive(Copy, Clone, Debug, Eq, PartialEq)] -pub struct ScratchRegister(u8); - -impl ScratchRegister { - pub fn raw_id(&self) -> u8 { - self.0 - } -} - -impl ValueLocation { - pub fn is_register(&self) -> bool { - if let ValueLocation::Register(_) = *self { - true - } else { - false - } - } - - pub fn get_register(&self) -> Result { - if let ValueLocation::Register(id) = *self { - Ok(id) - } else { - Err(CodegenError { - message: "not a register location", - }) - } - } -} - -impl ValueStack { - pub fn new(num_regs: u8) -> ValueStack { - ValueStack { - num_regs: num_regs, - values: vec![], - } - } - - fn next_location(&self, loc: &ValueLocation) -> ValueLocation { - match *loc { - ValueLocation::Register(ScratchRegister(x)) => { - if x >= self.num_regs - 1 { - ValueLocation::Stack - } else { - ValueLocation::Register(ScratchRegister(x + 1)) - } - } - ValueLocation::Stack => ValueLocation::Stack, - } - } - - pub fn push(&mut self, ty: WpType) -> ValueLocation { - let loc = self - .values - .last() - .map(|x| self.next_location(&x.location)) - .unwrap_or(ValueLocation::Register(ScratchRegister(0))); - self.values.push(ValueInfo { - ty: ty, - location: loc, - }); - loc - } - - pub fn pop(&mut self) -> Result { - match self.values.pop() { - Some(x) => Ok(x), - None => Err(CodegenError { - message: "no value on top of stack", - }), - } - } - - pub fn pop2(&mut self) -> Result<(ValueInfo, ValueInfo), CodegenError> { - if self.values.len() < 2 { - Err(CodegenError { - message: "less than 2 values on top of stack", - }) - } else { - let v2 = self.values.pop().unwrap(); - let v1 = self.values.pop().unwrap(); - Ok((v1, v2)) - } - } - - pub fn reset_depth(&mut self, target_depth: usize) { - self.values.truncate(target_depth); - } -} - -impl ControlStack { - pub fn new(label: DynamicLabel, returns: Vec) -> ControlStack { - ControlStack { - frames: vec![ControlFrame { - label: label, - loop_like: false, - if_else: IfElseState::None, - returns: returns, - value_stack_depth_before: 0, - }], - } - } -} From 47360283697b1b5629f9c9c89e26957dbb7c71a5 Mon Sep 17 00:00:00 2001 From: losfair Date: Thu, 11 Apr 2019 09:43:02 +0800 Subject: [PATCH 203/413] Cargo fmt --- lib/dynasm-backend/src/codegen_x64.rs | 2458 +++++++++++++++++++------ lib/dynasm-backend/src/emitter_x64.rs | 285 ++- lib/dynasm-backend/src/lib.rs | 4 +- lib/dynasm-backend/src/machine.rs | 167 +- 4 files changed, 2075 insertions(+), 839 deletions(-) diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index 0dd94b53e..0cecdfb80 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -1,10 +1,13 @@ #![allow(clippy::forget_copy)] // Used by dynasm. use super::codegen::*; +use crate::emitter_x64::*; +use crate::machine::*; use crate::protect_unix; use dynasmrt::{ x64::Assembler, AssemblyOffset, DynamicLabel, DynasmApi, DynasmLabelApi, ExecutableBuffer, }; +use smallvec::SmallVec; use std::ptr::NonNull; use std::{any::Any, collections::HashMap, sync::Arc}; use wasmer_runtime_core::{ @@ -14,16 +17,13 @@ use wasmer_runtime_core::{ module::{ModuleInfo, ModuleInner}, structures::{Map, TypedIndex}, types::{ - FuncIndex, FuncSig, LocalFuncIndex, GlobalIndex, - LocalOrImport, MemoryIndex, SigIndex, Type, Value, TableIndex, + FuncIndex, FuncSig, GlobalIndex, LocalFuncIndex, LocalOrImport, MemoryIndex, SigIndex, + TableIndex, Type, Value, }, vm::{self, ImportBacking, LocalGlobal, LocalMemory, LocalTable}, vmcalls, }; use wasmparser::{Operator, Type as WpType}; -use crate::machine::*; -use crate::emitter_x64::*; -use smallvec::SmallVec; lazy_static! { static ref CONSTRUCT_STACK_AND_CALL_WASM: unsafe extern "C" fn (stack_top: *const u8, stack_base: *const u8, ctx: *mut vm::Ctx, target: *const vm::Func) -> u64 = { @@ -124,7 +124,7 @@ pub struct X64ModuleCodeGenerator { #[derive(Copy, Clone, Debug, Eq, PartialEq)] enum LocalOrTemp { Local, - Temp + Temp, } pub struct X64FunctionCode { @@ -197,7 +197,9 @@ impl FuncResolver for X64RuntimeResolver { _module: &ModuleInner, _local_func_index: LocalFuncIndex, ) -> Option> { - NonNull::new(self.local_function_pointers[_local_func_index.index() as usize].0 as *mut vm::Func) + NonNull::new( + self.local_function_pointers[_local_func_index.index() as usize].0 as *mut vm::Func, + ) } } @@ -214,14 +216,16 @@ impl ProtectedCaller for X64ExecutionContext { let index = _func_index.index() - self.func_import_count; let ptr = self.code.ptr(self.functions[index].begin_offset); let return_ty = self.functions[index].returns.last().cloned(); - let buffer: Vec = _params.iter().rev().map(|x| { - match *x { + let buffer: Vec = _params + .iter() + .rev() + .map(|x| match *x { Value::I32(x) => x as u32 as u64, Value::I64(x) => x as u64, Value::F32(x) => f32::to_bits(x) as u64, Value::F64(x) => f64::to_bits(x), - } - }).collect(); + }) + .collect(); let ret = unsafe { protect_unix::call_protected(|| { CONSTRUCT_STACK_AND_CALL_WASM( @@ -316,8 +320,8 @@ impl ModuleCodeGenerator {} - _ => unreachable!() + _ => unreachable!(), } match dst { @@ -476,7 +482,7 @@ impl X64FunctionCode { Location::GPR(_) => { op(a, sz_src, src, sz_dst, dst); } - _ => unreachable!() + _ => unreachable!(), } m.release_temp_gpr(tmp_dst); @@ -499,10 +505,16 @@ impl X64FunctionCode { } let mode = match (src, dst) { (Location::Memory(_, _), Location::Memory(_, _)) => RelaxMode::SrcToGPR, - (Location::Imm64(_), Location::Imm64(_)) | (Location::Imm64(_), Location::Imm32(_)) => RelaxMode::BothToGPR, + (Location::Imm64(_), Location::Imm64(_)) | (Location::Imm64(_), Location::Imm32(_)) => { + RelaxMode::BothToGPR + } (_, Location::Imm32(_)) | (_, Location::Imm64(_)) => RelaxMode::DstToGPR, (Location::Imm64(_), Location::Memory(_, _)) => RelaxMode::SrcToGPR, - (Location::Imm64(_), Location::GPR(_)) if (op as *const u8 != Assembler::emit_mov as *const u8) => RelaxMode::SrcToGPR, + (Location::Imm64(_), Location::GPR(_)) + if (op as *const u8 != Assembler::emit_mov as *const u8) => + { + RelaxMode::SrcToGPR + } (_, Location::XMM(_)) => RelaxMode::SrcToGPR, _ if (op as *const u8 == Assembler::emit_imul as *const u8) => RelaxMode::BothToGPR, // TODO: optimize this _ => RelaxMode::Direct, @@ -514,13 +526,13 @@ impl X64FunctionCode { a.emit_mov(sz, src, Location::GPR(temp)); op(a, sz, Location::GPR(temp), dst); m.release_temp_gpr(temp); - }, + } RelaxMode::DstToGPR => { let temp = m.acquire_temp_gpr().unwrap(); a.emit_mov(sz, dst, Location::GPR(temp)); op(a, sz, src, Location::GPR(temp)); m.release_temp_gpr(temp); - }, + } RelaxMode::BothToGPR => { let temp_src = m.acquire_temp_gpr().unwrap(); let temp_dst = m.acquire_temp_gpr().unwrap(); @@ -535,7 +547,7 @@ impl X64FunctionCode { } m.release_temp_gpr(temp_dst); m.release_temp_gpr(temp_src); - }, + } RelaxMode::Direct => { op(a, sz, src, dst); } @@ -550,7 +562,14 @@ impl X64FunctionCode { src2: Location, dst: Location, ) { - Self::emit_relaxed_avx_base(a, m, |a, _, src1, src2, dst| op(a, src1, src2, dst), src1, src2, dst) + Self::emit_relaxed_avx_base( + a, + m, + |a, _, src1, src2, dst| op(a, src1, src2, dst), + src1, + src2, + dst, + ) } fn emit_relaxed_avx_base( @@ -582,7 +601,7 @@ impl X64FunctionCode { a.emit_mov(Size::S64, Location::GPR(tmpg), Location::XMM(tmp1)); tmp1 } - _ => unreachable!() + _ => unreachable!(), }; let src2 = match src2 { @@ -602,17 +621,17 @@ impl X64FunctionCode { a.emit_mov(Size::S64, Location::GPR(tmpg), Location::XMM(tmp2)); XMMOrMemory::XMM(tmp2) } - _ => unreachable!() + _ => unreachable!(), }; match dst { Location::XMM(x) => { op(a, m, src1, src2, x); - }, + } Location::Memory(_, _) | Location::GPR(_) => { op(a, m, src1, src2, tmp3); a.emit_mov(Size::S64, Location::XMM(tmp3), dst); - }, + } _ => unreachable!(), } @@ -636,23 +655,25 @@ impl X64FunctionCode { if loc_a != ret { let tmp = m.acquire_temp_gpr().unwrap(); Self::emit_relaxed_binop( - a, m, Assembler::emit_mov, - Size::S32, loc_a, Location::GPR(tmp), + a, + m, + Assembler::emit_mov, + Size::S32, + loc_a, + Location::GPR(tmp), ); + Self::emit_relaxed_binop(a, m, f, Size::S32, loc_b, Location::GPR(tmp)); Self::emit_relaxed_binop( - a, m, f, - Size::S32, loc_b, Location::GPR(tmp), - ); - Self::emit_relaxed_binop( - a, m, Assembler::emit_mov, - Size::S32, Location::GPR(tmp), ret, + a, + m, + Assembler::emit_mov, + Size::S32, + Location::GPR(tmp), + ret, ); m.release_temp_gpr(tmp); } else { - Self::emit_relaxed_binop( - a, m, f, - Size::S32, loc_b, ret, - ); + Self::emit_relaxed_binop(a, m, f, Size::S32, loc_b, ret); } value_stack.push((ret, LocalOrTemp::Temp)); @@ -672,23 +693,25 @@ impl X64FunctionCode { if loc_a != ret { let tmp = m.acquire_temp_gpr().unwrap(); Self::emit_relaxed_binop( - a, m, Assembler::emit_mov, - Size::S64, loc_a, Location::GPR(tmp), + a, + m, + Assembler::emit_mov, + Size::S64, + loc_a, + Location::GPR(tmp), ); + Self::emit_relaxed_binop(a, m, f, Size::S64, loc_b, Location::GPR(tmp)); Self::emit_relaxed_binop( - a, m, f, - Size::S64, loc_b, Location::GPR(tmp), - ); - Self::emit_relaxed_binop( - a, m, Assembler::emit_mov, - Size::S64, Location::GPR(tmp), ret, + a, + m, + Assembler::emit_mov, + Size::S64, + Location::GPR(tmp), + ret, ); m.release_temp_gpr(tmp); } else { - Self::emit_relaxed_binop( - a, m, f, - Size::S64, loc_b, ret, - ); + Self::emit_relaxed_binop(a, m, f, Size::S64, loc_b, ret); } value_stack.push((ret, LocalOrTemp::Temp)); @@ -707,25 +730,19 @@ impl X64FunctionCode { let ret = m.acquire_locations(a, &[WpType::I32], false)[0]; match ret { Location::GPR(x) => { - Self::emit_relaxed_binop( - a, m, Assembler::emit_cmp, - Size::S32, loc_b, loc_a, - ); + Self::emit_relaxed_binop(a, m, Assembler::emit_cmp, Size::S32, loc_b, loc_a); a.emit_set(c, x); a.emit_and(Size::S32, Location::Imm32(0xff), Location::GPR(x)); - }, + } Location::Memory(_, _) => { let tmp = m.acquire_temp_gpr().unwrap(); - Self::emit_relaxed_binop( - a, m, Assembler::emit_cmp, - Size::S32, loc_b, loc_a, - ); + Self::emit_relaxed_binop(a, m, Assembler::emit_cmp, Size::S32, loc_b, loc_a); a.emit_set(c, tmp); a.emit_and(Size::S32, Location::Imm32(0xff), Location::GPR(tmp)); a.emit_mov(Size::S32, Location::GPR(tmp), ret); m.release_temp_gpr(tmp); - }, - _ => unreachable!() + } + _ => unreachable!(), } value_stack.push((ret, LocalOrTemp::Temp)); } @@ -753,25 +770,19 @@ impl X64FunctionCode { let ret = m.acquire_locations(a, &[WpType::I32], false)[0]; match ret { Location::GPR(x) => { - Self::emit_relaxed_binop( - a, m, Assembler::emit_cmp, - Size::S64, loc_b, loc_a, - ); + Self::emit_relaxed_binop(a, m, Assembler::emit_cmp, Size::S64, loc_b, loc_a); a.emit_set(c, x); a.emit_and(Size::S32, Location::Imm32(0xff), Location::GPR(x)); - }, + } Location::Memory(_, _) => { let tmp = m.acquire_temp_gpr().unwrap(); - Self::emit_relaxed_binop( - a, m, Assembler::emit_cmp, - Size::S64, loc_b, loc_a, - ); + Self::emit_relaxed_binop(a, m, Assembler::emit_cmp, Size::S64, loc_b, loc_a); a.emit_set(c, tmp); a.emit_and(Size::S32, Location::Imm32(0xff), Location::GPR(tmp)); a.emit_mov(Size::S32, Location::GPR(tmp), ret); m.release_temp_gpr(tmp); - }, - _ => unreachable!() + } + _ => unreachable!(), } value_stack.push((ret, LocalOrTemp::Temp)); } @@ -808,7 +819,7 @@ impl X64FunctionCode { f(a, Size::S32, Location::GPR(tmp), ret); } m.release_temp_gpr(tmp); - }, + } Location::Memory(_, _) | Location::GPR(_) => { if let Location::Memory(_, _) = ret { let out_tmp = m.acquire_temp_gpr().unwrap(); @@ -818,7 +829,7 @@ impl X64FunctionCode { } else { f(a, Size::S32, loc, ret); } - }, + } _ => unreachable!(), } value_stack.push((ret, LocalOrTemp::Temp)); @@ -846,7 +857,7 @@ impl X64FunctionCode { f(a, Size::S64, Location::GPR(tmp), ret); } m.release_temp_gpr(tmp); - }, + } Location::Memory(_, _) | Location::GPR(_) => { if let Location::Memory(_, _) = ret { let out_tmp = m.acquire_temp_gpr().unwrap(); @@ -856,7 +867,7 @@ impl X64FunctionCode { } else { f(a, Size::S64, loc, ret); } - }, + } _ => unreachable!(), } value_stack.push((ret, LocalOrTemp::Temp)); @@ -875,10 +886,7 @@ impl X64FunctionCode { a.emit_mov(Size::S32, loc_b, Location::GPR(GPR::RCX)); if loc_a != ret { - Self::emit_relaxed_binop( - a, m, Assembler::emit_mov, - Size::S32, loc_a, ret - ); + Self::emit_relaxed_binop(a, m, Assembler::emit_mov, Size::S32, loc_a, ret); } f(a, Size::S32, Location::GPR(GPR::RCX), ret); @@ -898,10 +906,7 @@ impl X64FunctionCode { a.emit_mov(Size::S64, loc_b, Location::GPR(GPR::RCX)); if loc_a != ret { - Self::emit_relaxed_binop( - a, m, Assembler::emit_mov, - Size::S64, loc_a, ret - ); + Self::emit_relaxed_binop(a, m, Assembler::emit_mov, Size::S64, loc_a, ret); } f(a, Size::S64, Location::GPR(GPR::RCX), ret); @@ -951,7 +956,12 @@ impl X64FunctionCode { } // This function must not use RAX before `cb` is called. - fn emit_call_sysv, F: FnOnce(&mut Assembler)>(a: &mut Assembler, m: &mut Machine, cb: F, params: I) { + fn emit_call_sysv, F: FnOnce(&mut Assembler)>( + a: &mut Assembler, + m: &mut Machine, + cb: F, + params: I, + ) { let params: Vec<_> = params.collect(); // Save used GPRs. @@ -963,13 +973,21 @@ impl X64FunctionCode { // Save used XMM registers. let used_xmms = m.get_used_xmms(); if used_xmms.len() > 0 { - a.emit_sub(Size::S64, Location::Imm32((used_xmms.len() * 8) as u32), Location::GPR(GPR::RSP)); + a.emit_sub( + Size::S64, + Location::Imm32((used_xmms.len() * 8) as u32), + Location::GPR(GPR::RSP), + ); // FIXME: Possible dynasm bug. This is a workaround. // Using RSP as the source/destination operand of a `mov` instruction produces invalid code. a.emit_mov(Size::S64, Location::GPR(GPR::RSP), Location::GPR(GPR::RCX)); for (i, r) in used_xmms.iter().enumerate() { - a.emit_mov(Size::S64, Location::XMM(*r), Location::Memory(GPR::RCX, (i * 8) as i32)); + a.emit_mov( + Size::S64, + Location::XMM(*r), + Location::Memory(GPR::RCX, (i * 8) as i32), + ); } } @@ -1005,19 +1023,39 @@ impl X64FunctionCode { match *param { // Dynasm bug: RSP in memory operand does not work Location::Imm64(_) | Location::XMM(_) => { - a.emit_mov(Size::S64, Location::GPR(GPR::RAX), Location::XMM(XMM::XMM0)); - a.emit_mov(Size::S64, Location::GPR(GPR::RCX), Location::XMM(XMM::XMM1)); + a.emit_mov( + Size::S64, + Location::GPR(GPR::RAX), + Location::XMM(XMM::XMM0), + ); + a.emit_mov( + Size::S64, + Location::GPR(GPR::RCX), + Location::XMM(XMM::XMM1), + ); a.emit_sub(Size::S64, Location::Imm32(8), Location::GPR(GPR::RSP)); a.emit_mov(Size::S64, Location::GPR(GPR::RSP), Location::GPR(GPR::RCX)); a.emit_mov(Size::S64, *param, Location::GPR(GPR::RAX)); - a.emit_mov(Size::S64, Location::GPR(GPR::RAX), Location::Memory(GPR::RCX, 0)); - a.emit_mov(Size::S64, Location::XMM(XMM::XMM0), Location::GPR(GPR::RAX)); - a.emit_mov(Size::S64, Location::XMM(XMM::XMM1), Location::GPR(GPR::RCX)); - }, - _ => a.emit_push(Size::S64, *param) + a.emit_mov( + Size::S64, + Location::GPR(GPR::RAX), + Location::Memory(GPR::RCX, 0), + ); + a.emit_mov( + Size::S64, + Location::XMM(XMM::XMM0), + Location::GPR(GPR::RAX), + ); + a.emit_mov( + Size::S64, + Location::XMM(XMM::XMM1), + Location::GPR(GPR::RCX), + ); + } + _ => a.emit_push(Size::S64, *param), } } - _ => unreachable!() + _ => unreachable!(), } } @@ -1032,13 +1070,21 @@ impl X64FunctionCode { } // Put vmctx as the first parameter. - a.emit_mov(Size::S64, Location::GPR(Machine::get_vmctx_reg()), Machine::get_param_location(0)); // vmctx + a.emit_mov( + Size::S64, + Location::GPR(Machine::get_vmctx_reg()), + Machine::get_param_location(0), + ); // vmctx cb(a); // Restore stack. if stack_offset > 0 { - a.emit_add(Size::S64, Location::Imm32(stack_offset as u32), Location::GPR(GPR::RSP)); + a.emit_add( + Size::S64, + Location::Imm32(stack_offset as u32), + Location::GPR(GPR::RSP), + ); } // Restore XMMs. @@ -1046,9 +1092,17 @@ impl X64FunctionCode { // FIXME: Possible dynasm bug. This is a workaround. a.emit_mov(Size::S64, Location::GPR(GPR::RSP), Location::GPR(GPR::RDX)); for (i, r) in used_xmms.iter().enumerate() { - a.emit_mov(Size::S64, Location::Memory(GPR::RDX, (i * 8) as i32), Location::XMM(*r)); + a.emit_mov( + Size::S64, + Location::Memory(GPR::RDX, (i * 8) as i32), + Location::XMM(*r), + ); } - a.emit_add(Size::S64, Location::Imm32((used_xmms.len() * 8) as u32), Location::GPR(GPR::RSP)); + a.emit_add( + Size::S64, + Location::Imm32((used_xmms.len() * 8) as u32), + Location::GPR(GPR::RSP), + ); } // Restore GPRs. @@ -1057,7 +1111,12 @@ impl X64FunctionCode { } } - fn emit_call_sysv_label>(a: &mut Assembler, m: &mut Machine, label: DynamicLabel, params: I) { + fn emit_call_sysv_label>( + a: &mut Assembler, + m: &mut Machine, + label: DynamicLabel, + params: I, + ) { Self::emit_call_sysv(a, m, |a| a.emit_call_label(label), params) } @@ -1068,7 +1127,7 @@ impl X64FunctionCode { addr: Location, offset: usize, value_size: usize, - cb: F + cb: F, ) { let tmp_addr = m.acquire_temp_gpr().unwrap(); let tmp_base = m.acquire_temp_gpr().unwrap(); @@ -1081,13 +1140,25 @@ impl X64FunctionCode { match MemoryIndex::new(0).local_or_import(module_info) { LocalOrImport::Local(_) => vm::Ctx::offset_memories(), LocalOrImport::Import(_) => vm::Ctx::offset_imported_memories(), - } as i32 + } as i32, ), Location::GPR(tmp_base), ); - a.emit_mov(Size::S64, Location::Memory(tmp_base, 0), Location::GPR(tmp_base)); - a.emit_mov(Size::S32, Location::Memory(tmp_base, LocalMemory::offset_bound() as i32), Location::GPR(tmp_bound)); - a.emit_mov(Size::S64, Location::Memory(tmp_base, LocalMemory::offset_base() as i32), Location::GPR(tmp_base)); + a.emit_mov( + Size::S64, + Location::Memory(tmp_base, 0), + Location::GPR(tmp_base), + ); + a.emit_mov( + Size::S32, + Location::Memory(tmp_base, LocalMemory::offset_bound() as i32), + Location::GPR(tmp_bound), + ); + a.emit_mov( + Size::S64, + Location::Memory(tmp_base, LocalMemory::offset_base() as i32), + Location::GPR(tmp_base), + ); a.emit_add(Size::S64, Location::GPR(tmp_base), Location::GPR(tmp_bound)); let mem_desc = match MemoryIndex::new(0).local_or_import(module_info) { @@ -1103,7 +1174,11 @@ impl X64FunctionCode { if need_check { a.emit_mov(Size::S32, addr, Location::GPR(tmp_addr)); - a.emit_add(Size::S64, Location::Imm32((offset + value_size) as u32), Location::GPR(tmp_addr)); + a.emit_add( + Size::S64, + Location::Imm32((offset + value_size) as u32), + Location::GPR(tmp_addr), + ); a.emit_add(Size::S64, Location::GPR(tmp_base), Location::GPR(tmp_addr)); a.emit_cmp(Size::S64, Location::GPR(tmp_bound), Location::GPR(tmp_addr)); a.emit_conditional_trap(Condition::Above); @@ -1112,7 +1187,11 @@ impl X64FunctionCode { m.release_temp_gpr(tmp_bound); a.emit_mov(Size::S32, addr, Location::GPR(tmp_addr)); - a.emit_add(Size::S64, Location::Imm32(offset as u32), Location::GPR(tmp_addr)); + a.emit_add( + Size::S64, + Location::Imm32(offset as u32), + Location::GPR(tmp_addr), + ); a.emit_add(Size::S64, Location::GPR(tmp_base), Location::GPR(tmp_addr)); m.release_temp_gpr(tmp_base); @@ -1238,7 +1317,9 @@ impl FunctionCodeGenerator for X64FunctionCode { a.emit_push(Size::S64, Location::GPR(GPR::RBP)); a.emit_mov(Size::S64, Location::GPR(GPR::RSP), Location::GPR(GPR::RBP)); - self.locals = self.machine.init_locals(a, self.num_locals, self.num_params); + self.locals = self + .machine + .init_locals(a, self.num_locals, self.num_params); self.control_stack.push(ControlFrame { label: a.get_label(), @@ -1255,7 +1336,7 @@ impl FunctionCodeGenerator for X64FunctionCode { a.emit_ud2(); Ok(()) } - + fn feed_opcode(&mut self, op: Operator, module_info: &ModuleInfo) -> Result<(), CodegenError> { //println!("{:?} {}", op, self.value_stack.len()); let was_unreachable; @@ -1272,10 +1353,8 @@ impl FunctionCodeGenerator for X64FunctionCode { Operator::Else => { // We are in a reachable true branch if self.unreachable_depth == 1 { - if let Some(IfElseState::If(_)) = self - .control_stack - .last() - .map(|x| x.if_else) + if let Some(IfElseState::If(_)) = + self.control_stack.last().map(|x| x.if_else) { self.unreachable_depth -= 1; } @@ -1299,72 +1378,122 @@ impl FunctionCodeGenerator for X64FunctionCode { let loc = match GlobalIndex::new(global_index).local_or_import(module_info) { LocalOrImport::Local(local_index) => { - a.emit_mov(Size::S64, Location::Memory(Machine::get_vmctx_reg(), vm::Ctx::offset_globals() as i32), Location::GPR(tmp)); - a.emit_mov(Size::S64, Location::Memory(tmp, (local_index.index() as i32) * 8), Location::GPR(tmp)); + a.emit_mov( + Size::S64, + Location::Memory( + Machine::get_vmctx_reg(), + vm::Ctx::offset_globals() as i32, + ), + Location::GPR(tmp), + ); + a.emit_mov( + Size::S64, + Location::Memory(tmp, (local_index.index() as i32) * 8), + Location::GPR(tmp), + ); self.machine.acquire_locations( a, - &[type_to_wp_type( - module_info.globals[local_index] - .desc - .ty, - )], - false + &[type_to_wp_type(module_info.globals[local_index].desc.ty)], + false, )[0] - }, + } LocalOrImport::Import(import_index) => { - a.emit_mov(Size::S64, Location::Memory(Machine::get_vmctx_reg(), vm::Ctx::offset_imported_globals() as i32), Location::GPR(tmp)); - a.emit_mov(Size::S64, Location::Memory(tmp, (import_index.index() as i32) * 8), Location::GPR(tmp)); + a.emit_mov( + Size::S64, + Location::Memory( + Machine::get_vmctx_reg(), + vm::Ctx::offset_imported_globals() as i32, + ), + Location::GPR(tmp), + ); + a.emit_mov( + Size::S64, + Location::Memory(tmp, (import_index.index() as i32) * 8), + Location::GPR(tmp), + ); self.machine.acquire_locations( a, &[type_to_wp_type( - module_info.imported_globals[import_index].1 - .ty, + module_info.imported_globals[import_index].1.ty, )], - false + false, )[0] - }, + } }; self.value_stack.push((loc, LocalOrTemp::Temp)); Self::emit_relaxed_binop( - a, &mut self.machine, Assembler::emit_mov, - Size::S64, Location::Memory(tmp, LocalGlobal::offset_data() as i32), loc + a, + &mut self.machine, + Assembler::emit_mov, + Size::S64, + Location::Memory(tmp, LocalGlobal::offset_data() as i32), + loc, ); self.machine.release_temp_gpr(tmp); } Operator::SetGlobal { global_index } => { let mut global_index = global_index as usize; - let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let tmp = self.machine.acquire_temp_gpr().unwrap(); if global_index < module_info.imported_globals.len() { - a.emit_mov(Size::S64, Location::Memory(Machine::get_vmctx_reg(), vm::Ctx::offset_imported_globals() as i32), Location::GPR(tmp)); + a.emit_mov( + Size::S64, + Location::Memory( + Machine::get_vmctx_reg(), + vm::Ctx::offset_imported_globals() as i32, + ), + Location::GPR(tmp), + ); } else { global_index -= module_info.imported_globals.len(); assert!(global_index < module_info.globals.len()); - a.emit_mov(Size::S64, Location::Memory(Machine::get_vmctx_reg(), vm::Ctx::offset_globals() as i32), Location::GPR(tmp)); + a.emit_mov( + Size::S64, + Location::Memory( + Machine::get_vmctx_reg(), + vm::Ctx::offset_globals() as i32, + ), + Location::GPR(tmp), + ); } - a.emit_mov(Size::S64, Location::Memory(tmp, (global_index as i32) * 8), Location::GPR(tmp)); + a.emit_mov( + Size::S64, + Location::Memory(tmp, (global_index as i32) * 8), + Location::GPR(tmp), + ); Self::emit_relaxed_binop( - a, &mut self.machine, Assembler::emit_mov, - Size::S64, loc, Location::Memory(tmp, LocalGlobal::offset_data() as i32) + a, + &mut self.machine, + Assembler::emit_mov, + Size::S64, + loc, + Location::Memory(tmp, LocalGlobal::offset_data() as i32), ); self.machine.release_temp_gpr(tmp); } Operator::GetLocal { local_index } => { let local_index = local_index as usize; - self.value_stack.push((self.locals[local_index], LocalOrTemp::Local)); + self.value_stack + .push((self.locals[local_index], LocalOrTemp::Local)); } Operator::SetLocal { local_index } => { let local_index = local_index as usize; - let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); Self::emit_relaxed_binop( - a, &mut self.machine, Assembler::emit_mov, - Size::S64, loc, self.locals[local_index], + a, + &mut self.machine, + Assembler::emit_mov, + Size::S64, + loc, + self.locals[local_index], ); } Operator::TeeLocal { local_index } => { @@ -1372,64 +1501,119 @@ impl FunctionCodeGenerator for X64FunctionCode { let (loc, _) = *self.value_stack.last().unwrap(); Self::emit_relaxed_binop( - a, &mut self.machine, Assembler::emit_mov, - Size::S64, loc, self.locals[local_index], + a, + &mut self.machine, + Assembler::emit_mov, + Size::S64, + loc, + self.locals[local_index], ); } - Operator::I32Const { value } => self.value_stack.push((Location::Imm32(value as u32), LocalOrTemp::Temp)), - Operator::I32Add => Self::emit_binop_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_add), - Operator::I32Sub => Self::emit_binop_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_sub), - Operator::I32Mul => Self::emit_binop_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_imul), + Operator::I32Const { value } => self + .value_stack + .push((Location::Imm32(value as u32), LocalOrTemp::Temp)), + Operator::I32Add => Self::emit_binop_i32( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_add, + ), + Operator::I32Sub => Self::emit_binop_i32( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_sub, + ), + Operator::I32Mul => Self::emit_binop_i32( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_imul, + ), Operator::I32DivU => { // We assume that RAX and RDX are temporary registers here. - let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_b = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_a = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; a.emit_mov(Size::S32, loc_a, Location::GPR(GPR::RAX)); a.emit_xor(Size::S32, Location::GPR(GPR::RDX), Location::GPR(GPR::RDX)); - Self::emit_relaxed_xdiv(a, &mut self.machine, Assembler::emit_div, Size::S32, loc_b); + Self::emit_relaxed_xdiv( + a, + &mut self.machine, + Assembler::emit_div, + Size::S32, + loc_b, + ); a.emit_mov(Size::S32, Location::GPR(GPR::RAX), ret); self.value_stack.push((ret, LocalOrTemp::Temp)); } Operator::I32DivS => { // We assume that RAX and RDX are temporary registers here. - let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_b = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_a = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; a.emit_mov(Size::S32, loc_a, Location::GPR(GPR::RAX)); a.emit_cdq(); - Self::emit_relaxed_xdiv(a, &mut self.machine, Assembler::emit_idiv, Size::S32, loc_b); + Self::emit_relaxed_xdiv( + a, + &mut self.machine, + Assembler::emit_idiv, + Size::S32, + loc_b, + ); a.emit_mov(Size::S32, Location::GPR(GPR::RAX), ret); self.value_stack.push((ret, LocalOrTemp::Temp)); } Operator::I32RemU => { // We assume that RAX and RDX are temporary registers here. - let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_b = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_a = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; a.emit_mov(Size::S32, loc_a, Location::GPR(GPR::RAX)); a.emit_xor(Size::S32, Location::GPR(GPR::RDX), Location::GPR(GPR::RDX)); - Self::emit_relaxed_xdiv(a, &mut self.machine, Assembler::emit_div, Size::S32, loc_b); + Self::emit_relaxed_xdiv( + a, + &mut self.machine, + Assembler::emit_div, + Size::S32, + loc_b, + ); a.emit_mov(Size::S32, Location::GPR(GPR::RDX), ret); self.value_stack.push((ret, LocalOrTemp::Temp)); } Operator::I32RemS => { // We assume that RAX and RDX are temporary registers here. - let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_b = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_a = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; let normal_path = a.get_label(); let end = a.get_label(); Self::emit_relaxed_binop( - a, &mut self.machine, Assembler::emit_cmp, - Size::S32, Location::Imm32(0x80000000), loc_a, + a, + &mut self.machine, + Assembler::emit_cmp, + Size::S32, + Location::Imm32(0x80000000), + loc_a, ); a.emit_jmp(Condition::NotEqual, normal_path); Self::emit_relaxed_binop( - a, &mut self.machine, Assembler::emit_cmp, - Size::S32, Location::Imm32(0xffffffff), loc_b, + a, + &mut self.machine, + Assembler::emit_cmp, + Size::S32, + Location::Imm32(0xffffffff), + loc_b, ); a.emit_jmp(Condition::NotEqual, normal_path); a.emit_mov(Size::S32, Location::Imm32(0), ret); @@ -1438,91 +1622,255 @@ impl FunctionCodeGenerator for X64FunctionCode { a.emit_label(normal_path); a.emit_mov(Size::S32, loc_a, Location::GPR(GPR::RAX)); a.emit_cdq(); - Self::emit_relaxed_xdiv(a, &mut self.machine, Assembler::emit_idiv, Size::S32, loc_b); + Self::emit_relaxed_xdiv( + a, + &mut self.machine, + Assembler::emit_idiv, + Size::S32, + loc_b, + ); a.emit_mov(Size::S32, Location::GPR(GPR::RDX), ret); self.value_stack.push((ret, LocalOrTemp::Temp)); a.emit_label(end); } - Operator::I32And => Self::emit_binop_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_and), - Operator::I32Or => Self::emit_binop_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_or), - Operator::I32Xor => Self::emit_binop_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_xor), - Operator::I32Eq => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::Equal), - Operator::I32Ne => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::NotEqual), - Operator::I32Eqz => Self::emit_cmpop_i32_dynamic_b(a, &mut self.machine, &mut self.value_stack, Condition::Equal, Location::Imm32(0)), - Operator::I32Clz => Self::emit_xcnt_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_lzcnt), - Operator::I32Ctz => Self::emit_xcnt_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_tzcnt), - Operator::I32Popcnt => Self::emit_xcnt_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_popcnt), - Operator::I32Shl => Self::emit_shift_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_shl), - Operator::I32ShrU => Self::emit_shift_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_shr), - Operator::I32ShrS => Self::emit_shift_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_sar), - Operator::I32Rotl => Self::emit_shift_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_rol), - Operator::I32Rotr => Self::emit_shift_i32(a, &mut self.machine, &mut self.value_stack, Assembler::emit_ror), - Operator::I32LtU => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::Below), - Operator::I32LeU => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::BelowEqual), - Operator::I32GtU => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::Above), - Operator::I32GeU => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::AboveEqual), - Operator::I32LtS => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::Less), - Operator::I32LeS => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::LessEqual), - Operator::I32GtS => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::Greater), - Operator::I32GeS => Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::GreaterEqual), + Operator::I32And => Self::emit_binop_i32( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_and, + ), + Operator::I32Or => Self::emit_binop_i32( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_or, + ), + Operator::I32Xor => Self::emit_binop_i32( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_xor, + ), + Operator::I32Eq => Self::emit_cmpop_i32( + a, + &mut self.machine, + &mut self.value_stack, + Condition::Equal, + ), + Operator::I32Ne => Self::emit_cmpop_i32( + a, + &mut self.machine, + &mut self.value_stack, + Condition::NotEqual, + ), + Operator::I32Eqz => Self::emit_cmpop_i32_dynamic_b( + a, + &mut self.machine, + &mut self.value_stack, + Condition::Equal, + Location::Imm32(0), + ), + Operator::I32Clz => Self::emit_xcnt_i32( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_lzcnt, + ), + Operator::I32Ctz => Self::emit_xcnt_i32( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_tzcnt, + ), + Operator::I32Popcnt => Self::emit_xcnt_i32( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_popcnt, + ), + Operator::I32Shl => Self::emit_shift_i32( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_shl, + ), + Operator::I32ShrU => Self::emit_shift_i32( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_shr, + ), + Operator::I32ShrS => Self::emit_shift_i32( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_sar, + ), + Operator::I32Rotl => Self::emit_shift_i32( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_rol, + ), + Operator::I32Rotr => Self::emit_shift_i32( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_ror, + ), + Operator::I32LtU => Self::emit_cmpop_i32( + a, + &mut self.machine, + &mut self.value_stack, + Condition::Below, + ), + Operator::I32LeU => Self::emit_cmpop_i32( + a, + &mut self.machine, + &mut self.value_stack, + Condition::BelowEqual, + ), + Operator::I32GtU => Self::emit_cmpop_i32( + a, + &mut self.machine, + &mut self.value_stack, + Condition::Above, + ), + Operator::I32GeU => Self::emit_cmpop_i32( + a, + &mut self.machine, + &mut self.value_stack, + Condition::AboveEqual, + ), + Operator::I32LtS => { + Self::emit_cmpop_i32(a, &mut self.machine, &mut self.value_stack, Condition::Less) + } + Operator::I32LeS => Self::emit_cmpop_i32( + a, + &mut self.machine, + &mut self.value_stack, + Condition::LessEqual, + ), + Operator::I32GtS => Self::emit_cmpop_i32( + a, + &mut self.machine, + &mut self.value_stack, + Condition::Greater, + ), + Operator::I32GeS => Self::emit_cmpop_i32( + a, + &mut self.machine, + &mut self.value_stack, + Condition::GreaterEqual, + ), Operator::I64Const { value } => { let value = value as u64; - self.value_stack.push((Location::Imm64(value), LocalOrTemp::Temp)); - }, - Operator::I64Add => Self::emit_binop_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_add), - Operator::I64Sub => Self::emit_binop_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_sub), - Operator::I64Mul => Self::emit_binop_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_imul), + self.value_stack + .push((Location::Imm64(value), LocalOrTemp::Temp)); + } + Operator::I64Add => Self::emit_binop_i64( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_add, + ), + Operator::I64Sub => Self::emit_binop_i64( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_sub, + ), + Operator::I64Mul => Self::emit_binop_i64( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_imul, + ), Operator::I64DivU => { // We assume that RAX and RDX are temporary registers here. - let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_b = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_a = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; a.emit_mov(Size::S64, loc_a, Location::GPR(GPR::RAX)); a.emit_xor(Size::S64, Location::GPR(GPR::RDX), Location::GPR(GPR::RDX)); - Self::emit_relaxed_xdiv(a, &mut self.machine, Assembler::emit_div, Size::S64, loc_b); + Self::emit_relaxed_xdiv( + a, + &mut self.machine, + Assembler::emit_div, + Size::S64, + loc_b, + ); a.emit_mov(Size::S64, Location::GPR(GPR::RAX), ret); self.value_stack.push((ret, LocalOrTemp::Temp)); } Operator::I64DivS => { // We assume that RAX and RDX are temporary registers here. - let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_b = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_a = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; a.emit_mov(Size::S64, loc_a, Location::GPR(GPR::RAX)); a.emit_cqo(); - Self::emit_relaxed_xdiv(a, &mut self.machine, Assembler::emit_idiv, Size::S64, loc_b); + Self::emit_relaxed_xdiv( + a, + &mut self.machine, + Assembler::emit_idiv, + Size::S64, + loc_b, + ); a.emit_mov(Size::S64, Location::GPR(GPR::RAX), ret); self.value_stack.push((ret, LocalOrTemp::Temp)); } Operator::I64RemU => { // We assume that RAX and RDX are temporary registers here. - let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_b = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_a = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; a.emit_mov(Size::S64, loc_a, Location::GPR(GPR::RAX)); a.emit_xor(Size::S64, Location::GPR(GPR::RDX), Location::GPR(GPR::RDX)); - Self::emit_relaxed_xdiv(a, &mut self.machine, Assembler::emit_div, Size::S64, loc_b); + Self::emit_relaxed_xdiv( + a, + &mut self.machine, + Assembler::emit_div, + Size::S64, + loc_b, + ); a.emit_mov(Size::S64, Location::GPR(GPR::RDX), ret); self.value_stack.push((ret, LocalOrTemp::Temp)); } Operator::I64RemS => { // We assume that RAX and RDX are temporary registers here. - let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_b = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_a = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; let normal_path = a.get_label(); let end = a.get_label(); Self::emit_relaxed_binop( - a, &mut self.machine, Assembler::emit_cmp, - Size::S64, Location::Imm64(0x8000000000000000u64), loc_a, + a, + &mut self.machine, + Assembler::emit_cmp, + Size::S64, + Location::Imm64(0x8000000000000000u64), + loc_a, ); a.emit_jmp(Condition::NotEqual, normal_path); Self::emit_relaxed_binop( - a, &mut self.machine, Assembler::emit_cmp, - Size::S64, Location::Imm64(0xffffffffffffffffu64), loc_b, + a, + &mut self.machine, + Assembler::emit_cmp, + Size::S64, + Location::Imm64(0xffffffffffffffffu64), + loc_b, ); a.emit_jmp(Condition::NotEqual, normal_path); a.emit_mov(Size::S64, Location::Imm64(0), ret); @@ -1532,83 +1880,302 @@ impl FunctionCodeGenerator for X64FunctionCode { a.emit_mov(Size::S64, loc_a, Location::GPR(GPR::RAX)); a.emit_cqo(); - Self::emit_relaxed_xdiv(a, &mut self.machine, Assembler::emit_idiv, Size::S64, loc_b); + Self::emit_relaxed_xdiv( + a, + &mut self.machine, + Assembler::emit_idiv, + Size::S64, + loc_b, + ); a.emit_mov(Size::S64, Location::GPR(GPR::RDX), ret); self.value_stack.push((ret, LocalOrTemp::Temp)); a.emit_label(end); } - Operator::I64And => Self::emit_binop_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_and), - Operator::I64Or => Self::emit_binop_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_or), - Operator::I64Xor => Self::emit_binop_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_xor), - Operator::I64Eq => Self::emit_cmpop_i64(a, &mut self.machine, &mut self.value_stack, Condition::Equal), - Operator::I64Ne => Self::emit_cmpop_i64(a, &mut self.machine, &mut self.value_stack, Condition::NotEqual), - Operator::I64Eqz => Self::emit_cmpop_i64_dynamic_b(a, &mut self.machine, &mut self.value_stack, Condition::Equal, Location::Imm64(0)), - Operator::I64Clz => Self::emit_xcnt_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_lzcnt), - Operator::I64Ctz => Self::emit_xcnt_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_tzcnt), - Operator::I64Popcnt => Self::emit_xcnt_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_popcnt), - Operator::I64Shl => Self::emit_shift_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_shl), - Operator::I64ShrU => Self::emit_shift_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_shr), - Operator::I64ShrS => Self::emit_shift_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_sar), - Operator::I64Rotl => Self::emit_shift_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_rol), - Operator::I64Rotr => Self::emit_shift_i64(a, &mut self.machine, &mut self.value_stack, Assembler::emit_ror), - Operator::I64LtU => Self::emit_cmpop_i64(a, &mut self.machine, &mut self.value_stack, Condition::Below), - Operator::I64LeU => Self::emit_cmpop_i64(a, &mut self.machine, &mut self.value_stack, Condition::BelowEqual), - Operator::I64GtU => Self::emit_cmpop_i64(a, &mut self.machine, &mut self.value_stack, Condition::Above), - Operator::I64GeU => Self::emit_cmpop_i64(a, &mut self.machine, &mut self.value_stack, Condition::AboveEqual), - Operator::I64LtS => Self::emit_cmpop_i64(a, &mut self.machine, &mut self.value_stack, Condition::Less), - Operator::I64LeS => Self::emit_cmpop_i64(a, &mut self.machine, &mut self.value_stack, Condition::LessEqual), - Operator::I64GtS => Self::emit_cmpop_i64(a, &mut self.machine, &mut self.value_stack, Condition::Greater), - Operator::I64GeS => Self::emit_cmpop_i64(a, &mut self.machine, &mut self.value_stack, Condition::GreaterEqual), + Operator::I64And => Self::emit_binop_i64( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_and, + ), + Operator::I64Or => Self::emit_binop_i64( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_or, + ), + Operator::I64Xor => Self::emit_binop_i64( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_xor, + ), + Operator::I64Eq => Self::emit_cmpop_i64( + a, + &mut self.machine, + &mut self.value_stack, + Condition::Equal, + ), + Operator::I64Ne => Self::emit_cmpop_i64( + a, + &mut self.machine, + &mut self.value_stack, + Condition::NotEqual, + ), + Operator::I64Eqz => Self::emit_cmpop_i64_dynamic_b( + a, + &mut self.machine, + &mut self.value_stack, + Condition::Equal, + Location::Imm64(0), + ), + Operator::I64Clz => Self::emit_xcnt_i64( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_lzcnt, + ), + Operator::I64Ctz => Self::emit_xcnt_i64( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_tzcnt, + ), + Operator::I64Popcnt => Self::emit_xcnt_i64( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_popcnt, + ), + Operator::I64Shl => Self::emit_shift_i64( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_shl, + ), + Operator::I64ShrU => Self::emit_shift_i64( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_shr, + ), + Operator::I64ShrS => Self::emit_shift_i64( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_sar, + ), + Operator::I64Rotl => Self::emit_shift_i64( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_rol, + ), + Operator::I64Rotr => Self::emit_shift_i64( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_ror, + ), + Operator::I64LtU => Self::emit_cmpop_i64( + a, + &mut self.machine, + &mut self.value_stack, + Condition::Below, + ), + Operator::I64LeU => Self::emit_cmpop_i64( + a, + &mut self.machine, + &mut self.value_stack, + Condition::BelowEqual, + ), + Operator::I64GtU => Self::emit_cmpop_i64( + a, + &mut self.machine, + &mut self.value_stack, + Condition::Above, + ), + Operator::I64GeU => Self::emit_cmpop_i64( + a, + &mut self.machine, + &mut self.value_stack, + Condition::AboveEqual, + ), + Operator::I64LtS => { + Self::emit_cmpop_i64(a, &mut self.machine, &mut self.value_stack, Condition::Less) + } + Operator::I64LeS => Self::emit_cmpop_i64( + a, + &mut self.machine, + &mut self.value_stack, + Condition::LessEqual, + ), + Operator::I64GtS => Self::emit_cmpop_i64( + a, + &mut self.machine, + &mut self.value_stack, + Condition::Greater, + ), + Operator::I64GeS => Self::emit_cmpop_i64( + a, + &mut self.machine, + &mut self.value_stack, + Condition::GreaterEqual, + ), Operator::I64ExtendUI32 => { - let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); Self::emit_relaxed_binop( - a, &mut self.machine, Assembler::emit_mov, - Size::S32, loc, ret, + a, + &mut self.machine, + Assembler::emit_mov, + Size::S32, + loc, + ret, ); } Operator::I64ExtendSI32 => { - let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); Self::emit_relaxed_zx_sx( - a, &mut self.machine, Assembler::emit_movsx, - Size::S32, loc, Size::S64, ret, + a, + &mut self.machine, + Assembler::emit_movsx, + Size::S32, + loc, + Size::S64, + ret, ); } Operator::I32WrapI64 => { - let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); Self::emit_relaxed_binop( - a, &mut self.machine, Assembler::emit_mov, - Size::S32, loc, ret, + a, + &mut self.machine, + Assembler::emit_mov, + Size::S32, + loc, + ret, ); } - Operator::F32Const { value } => self.value_stack.push((Location::Imm32(value.bits()), LocalOrTemp::Temp)), - Operator::F32Add => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vaddss), - Operator::F32Sub => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vsubss), - Operator::F32Mul => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vmulss), - Operator::F32Div => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vdivss), - Operator::F32Max => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vmaxss), - Operator::F32Min => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vminss), - Operator::F32Eq => Self::emit_fp_cmpop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpeqss), - Operator::F32Ne => Self::emit_fp_cmpop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpneqss), - Operator::F32Lt => Self::emit_fp_cmpop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpltss), - Operator::F32Le => Self::emit_fp_cmpop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpless), - Operator::F32Gt => Self::emit_fp_cmpop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpgtss), - Operator::F32Ge => Self::emit_fp_cmpop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpgess), - Operator::F32Nearest => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vroundss_nearest), - Operator::F32Floor => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vroundss_floor), - Operator::F32Ceil => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vroundss_ceil), - Operator::F32Trunc => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vroundss_trunc), - Operator::F32Sqrt => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vsqrtss), + Operator::F32Const { value } => self + .value_stack + .push((Location::Imm32(value.bits()), LocalOrTemp::Temp)), + Operator::F32Add => Self::emit_fp_binop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vaddss, + ), + Operator::F32Sub => Self::emit_fp_binop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vsubss, + ), + Operator::F32Mul => Self::emit_fp_binop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vmulss, + ), + Operator::F32Div => Self::emit_fp_binop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vdivss, + ), + Operator::F32Max => Self::emit_fp_binop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vmaxss, + ), + Operator::F32Min => Self::emit_fp_binop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vminss, + ), + Operator::F32Eq => Self::emit_fp_cmpop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vcmpeqss, + ), + Operator::F32Ne => Self::emit_fp_cmpop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vcmpneqss, + ), + Operator::F32Lt => Self::emit_fp_cmpop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vcmpltss, + ), + Operator::F32Le => Self::emit_fp_cmpop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vcmpless, + ), + Operator::F32Gt => Self::emit_fp_cmpop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vcmpgtss, + ), + Operator::F32Ge => Self::emit_fp_cmpop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vcmpgess, + ), + Operator::F32Nearest => Self::emit_fp_unop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vroundss_nearest, + ), + Operator::F32Floor => Self::emit_fp_unop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vroundss_floor, + ), + Operator::F32Ceil => Self::emit_fp_unop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vroundss_ceil, + ), + Operator::F32Trunc => Self::emit_fp_unop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vroundss_trunc, + ), + Operator::F32Sqrt => Self::emit_fp_unop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vsqrtss, + ), Operator::F32Copysign => { - let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_b = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_a = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::F32], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); @@ -1616,8 +2183,16 @@ impl FunctionCodeGenerator for X64FunctionCode { let tmp2 = self.machine.acquire_temp_gpr().unwrap(); a.emit_mov(Size::S32, loc_a, Location::GPR(tmp1)); a.emit_mov(Size::S32, loc_b, Location::GPR(tmp2)); - a.emit_and(Size::S32, Location::Imm32(0x7fffffffu32), Location::GPR(tmp1)); - a.emit_and(Size::S32, Location::Imm32(0x80000000u32), Location::GPR(tmp2)); + a.emit_and( + Size::S32, + Location::Imm32(0x7fffffffu32), + Location::GPR(tmp1), + ); + a.emit_and( + Size::S32, + Location::Imm32(0x80000000u32), + Location::GPR(tmp2), + ); a.emit_or(Size::S32, Location::GPR(tmp2), Location::GPR(tmp1)); a.emit_mov(Size::S32, Location::GPR(tmp1), ret); self.machine.release_temp_gpr(tmp2); @@ -1625,18 +2200,24 @@ impl FunctionCodeGenerator for X64FunctionCode { } Operator::F32Abs => { - let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::F32], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); let tmp = self.machine.acquire_temp_gpr().unwrap(); a.emit_mov(Size::S32, loc, Location::GPR(tmp)); - a.emit_and(Size::S32, Location::Imm32(0x7fffffffu32), Location::GPR(tmp)); + a.emit_and( + Size::S32, + Location::Imm32(0x7fffffffu32), + Location::GPR(tmp), + ); a.emit_mov(Size::S32, Location::GPR(tmp), ret); self.machine.release_temp_gpr(tmp); } Operator::F32Neg => { - let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::F32], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); let tmp = self.machine.acquire_temp_gpr().unwrap(); @@ -1646,28 +2227,117 @@ impl FunctionCodeGenerator for X64FunctionCode { self.machine.release_temp_gpr(tmp); } - Operator::F64Const { value } => self.value_stack.push((Location::Imm64(value.bits()), LocalOrTemp::Temp)), - Operator::F64Add => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vaddsd), - Operator::F64Sub => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vsubsd), - Operator::F64Mul => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vmulsd), - Operator::F64Div => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vdivsd), - Operator::F64Max => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vmaxsd), - Operator::F64Min => Self::emit_fp_binop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vminsd), - Operator::F64Eq => Self::emit_fp_cmpop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpeqsd), - Operator::F64Ne => Self::emit_fp_cmpop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpneqsd), - Operator::F64Lt => Self::emit_fp_cmpop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpltsd), - Operator::F64Le => Self::emit_fp_cmpop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmplesd), - Operator::F64Gt => Self::emit_fp_cmpop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpgtsd), - Operator::F64Ge => Self::emit_fp_cmpop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcmpgesd), - Operator::F64Nearest => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vroundsd_nearest), - Operator::F64Floor => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vroundsd_floor), - Operator::F64Ceil => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vroundsd_ceil), - Operator::F64Trunc => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vroundsd_trunc), - Operator::F64Sqrt => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vsqrtsd), + Operator::F64Const { value } => self + .value_stack + .push((Location::Imm64(value.bits()), LocalOrTemp::Temp)), + Operator::F64Add => Self::emit_fp_binop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vaddsd, + ), + Operator::F64Sub => Self::emit_fp_binop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vsubsd, + ), + Operator::F64Mul => Self::emit_fp_binop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vmulsd, + ), + Operator::F64Div => Self::emit_fp_binop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vdivsd, + ), + Operator::F64Max => Self::emit_fp_binop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vmaxsd, + ), + Operator::F64Min => Self::emit_fp_binop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vminsd, + ), + Operator::F64Eq => Self::emit_fp_cmpop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vcmpeqsd, + ), + Operator::F64Ne => Self::emit_fp_cmpop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vcmpneqsd, + ), + Operator::F64Lt => Self::emit_fp_cmpop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vcmpltsd, + ), + Operator::F64Le => Self::emit_fp_cmpop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vcmplesd, + ), + Operator::F64Gt => Self::emit_fp_cmpop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vcmpgtsd, + ), + Operator::F64Ge => Self::emit_fp_cmpop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vcmpgesd, + ), + Operator::F64Nearest => Self::emit_fp_unop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vroundsd_nearest, + ), + Operator::F64Floor => Self::emit_fp_unop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vroundsd_floor, + ), + Operator::F64Ceil => Self::emit_fp_unop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vroundsd_ceil, + ), + Operator::F64Trunc => Self::emit_fp_unop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vroundsd_trunc, + ), + Operator::F64Sqrt => Self::emit_fp_unop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vsqrtsd, + ), Operator::F64Copysign => { - let loc_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - let loc_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_b = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc_a = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::F64], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); @@ -1678,12 +2348,20 @@ impl FunctionCodeGenerator for X64FunctionCode { a.emit_mov(Size::S64, loc_a, Location::GPR(tmp1)); a.emit_mov(Size::S64, loc_b, Location::GPR(tmp2)); - a.emit_mov(Size::S64, Location::Imm64(0x7fffffffffffffffu64), Location::GPR(c)); + a.emit_mov( + Size::S64, + Location::Imm64(0x7fffffffffffffffu64), + Location::GPR(c), + ); a.emit_and(Size::S64, Location::GPR(c), Location::GPR(tmp1)); - a.emit_mov(Size::S64, Location::Imm64(0x8000000000000000u64), Location::GPR(c)); + a.emit_mov( + Size::S64, + Location::Imm64(0x8000000000000000u64), + Location::GPR(c), + ); a.emit_and(Size::S64, Location::GPR(c), Location::GPR(tmp2)); - + a.emit_or(Size::S64, Location::GPR(tmp2), Location::GPR(tmp1)); a.emit_mov(Size::S64, Location::GPR(tmp1), ret); @@ -1693,7 +2371,8 @@ impl FunctionCodeGenerator for X64FunctionCode { } Operator::F64Abs => { - let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::F64], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); @@ -1701,7 +2380,11 @@ impl FunctionCodeGenerator for X64FunctionCode { let c = self.machine.acquire_temp_gpr().unwrap(); a.emit_mov(Size::S64, loc, Location::GPR(tmp)); - a.emit_mov(Size::S64, Location::Imm64(0x7fffffffffffffffu64), Location::GPR(c)); + a.emit_mov( + Size::S64, + Location::Imm64(0x7fffffffffffffffu64), + Location::GPR(c), + ); a.emit_and(Size::S64, Location::GPR(c), Location::GPR(tmp)); a.emit_mov(Size::S64, Location::GPR(tmp), ret); @@ -1710,7 +2393,8 @@ impl FunctionCodeGenerator for X64FunctionCode { } Operator::F64Neg => { - let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::F64], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); let tmp = self.machine.acquire_temp_gpr().unwrap(); @@ -1720,61 +2404,92 @@ impl FunctionCodeGenerator for X64FunctionCode { self.machine.release_temp_gpr(tmp); } - Operator::F64PromoteF32 => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcvtss2sd), - Operator::F32DemoteF64 => Self::emit_fp_unop_avx(a, &mut self.machine, &mut self.value_stack, Assembler::emit_vcvtsd2ss), + Operator::F64PromoteF32 => Self::emit_fp_unop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vcvtss2sd, + ), + Operator::F32DemoteF64 => Self::emit_fp_unop_avx( + a, + &mut self.machine, + &mut self.value_stack, + Assembler::emit_vcvtsd2ss, + ), Operator::I32ReinterpretF32 => { - let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); if loc != ret { Self::emit_relaxed_binop( - a, &mut self.machine, Assembler::emit_mov, - Size::S32, loc, ret, + a, + &mut self.machine, + Assembler::emit_mov, + Size::S32, + loc, + ret, ); } } Operator::F32ReinterpretI32 => { - let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::F32], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); if loc != ret { Self::emit_relaxed_binop( - a, &mut self.machine, Assembler::emit_mov, - Size::S32, loc, ret, + a, + &mut self.machine, + Assembler::emit_mov, + Size::S32, + loc, + ret, ); } } Operator::I64ReinterpretF64 => { - let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); if loc != ret { Self::emit_relaxed_binop( - a, &mut self.machine, Assembler::emit_mov, - Size::S64, loc, ret, + a, + &mut self.machine, + Assembler::emit_mov, + Size::S64, + loc, + ret, ); } } Operator::F64ReinterpretI64 => { - let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::F64], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); if loc != ret { Self::emit_relaxed_binop( - a, &mut self.machine, Assembler::emit_mov, - Size::S64, loc, ret, + a, + &mut self.machine, + Assembler::emit_mov, + Size::S64, + loc, + ret, ); } } Operator::I32TruncUF32 => { - let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); let tmp_out = self.machine.acquire_temp_gpr().unwrap(); @@ -1791,14 +2506,21 @@ impl FunctionCodeGenerator for X64FunctionCode { } Operator::I32TruncSF32 => { - let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); let tmp_out = self.machine.acquire_temp_gpr().unwrap(); let tmp_in = self.machine.acquire_temp_xmm().unwrap(); a.emit_mov(Size::S32, loc, Location::XMM(tmp_in)); - Self::emit_f32_int_conv_check(a, &mut self.machine, tmp_in, -2147483904.0, 2147483648.0); + Self::emit_f32_int_conv_check( + a, + &mut self.machine, + tmp_in, + -2147483904.0, + 2147483648.0, + ); a.emit_cvttss2si_32(XMMOrMemory::XMM(tmp_in), tmp_out); a.emit_mov(Size::S32, Location::GPR(tmp_out), ret); @@ -1808,17 +2530,24 @@ impl FunctionCodeGenerator for X64FunctionCode { } Operator::I64TruncSF32 => { - let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); let tmp_out = self.machine.acquire_temp_gpr().unwrap(); let tmp_in = self.machine.acquire_temp_xmm().unwrap(); a.emit_mov(Size::S32, loc, Location::XMM(tmp_in)); - Self::emit_f32_int_conv_check(a, &mut self.machine, tmp_in, -9223373136366403584.0, 9223372036854775808.0); + Self::emit_f32_int_conv_check( + a, + &mut self.machine, + tmp_in, + -9223373136366403584.0, + 9223372036854775808.0, + ); a.emit_cvttss2si_64(XMMOrMemory::XMM(tmp_in), tmp_out); a.emit_mov(Size::S64, Location::GPR(tmp_out), ret); - + self.machine.release_temp_xmm(tmp_in); self.machine.release_temp_gpr(tmp_out); } @@ -1839,31 +2568,46 @@ impl FunctionCodeGenerator for X64FunctionCode { ; cmovae Rq(reg as u8), r15 ; movq r15, xmm5 */ - let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); let tmp_out = self.machine.acquire_temp_gpr().unwrap(); let tmp_in = self.machine.acquire_temp_xmm().unwrap(); // xmm2 a.emit_mov(Size::S32, loc, Location::XMM(tmp_in)); - Self::emit_f32_int_conv_check(a, &mut self.machine, tmp_in, -1.0, 18446744073709551616.0); + Self::emit_f32_int_conv_check( + a, + &mut self.machine, + tmp_in, + -1.0, + 18446744073709551616.0, + ); let tmp = self.machine.acquire_temp_gpr().unwrap(); // r15 let tmp_x1 = self.machine.acquire_temp_xmm().unwrap(); // xmm1 let tmp_x2 = self.machine.acquire_temp_xmm().unwrap(); // xmm3 - a.emit_mov(Size::S32, Location::Imm32(1593835520u32), Location::GPR(tmp)); //float 9.22337203E+18 + a.emit_mov( + Size::S32, + Location::Imm32(1593835520u32), + Location::GPR(tmp), + ); //float 9.22337203E+18 a.emit_mov(Size::S32, Location::GPR(tmp), Location::XMM(tmp_x1)); a.emit_mov(Size::S32, Location::XMM(tmp_in), Location::XMM(tmp_x2)); a.emit_vsubss(tmp_in, XMMOrMemory::XMM(tmp_x1), tmp_in); a.emit_cvttss2si_64(XMMOrMemory::XMM(tmp_in), tmp_out); - a.emit_mov(Size::S64, Location::Imm64(0x8000000000000000u64), Location::GPR(tmp)); + a.emit_mov( + Size::S64, + Location::Imm64(0x8000000000000000u64), + Location::GPR(tmp), + ); a.emit_xor(Size::S64, Location::GPR(tmp_out), Location::GPR(tmp)); a.emit_cvttss2si_64(XMMOrMemory::XMM(tmp_x2), tmp_out); a.emit_ucomiss(XMMOrMemory::XMM(tmp_x1), tmp_x2); a.emit_cmovae_gpr_64(tmp, tmp_out); a.emit_mov(Size::S64, Location::GPR(tmp_out), ret); - + self.machine.release_temp_xmm(tmp_x2); self.machine.release_temp_xmm(tmp_x1); self.machine.release_temp_gpr(tmp); @@ -1872,7 +2616,8 @@ impl FunctionCodeGenerator for X64FunctionCode { } Operator::I32TruncUF64 => { - let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); let tmp_out = self.machine.acquire_temp_gpr().unwrap(); @@ -1889,14 +2634,21 @@ impl FunctionCodeGenerator for X64FunctionCode { } Operator::I32TruncSF64 => { - let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); let tmp_out = self.machine.acquire_temp_gpr().unwrap(); let tmp_in = self.machine.acquire_temp_xmm().unwrap(); a.emit_mov(Size::S64, loc, Location::XMM(tmp_in)); - Self::emit_f64_int_conv_check(a, &mut self.machine, tmp_in, -2147483649.0, 2147483648.0); + Self::emit_f64_int_conv_check( + a, + &mut self.machine, + tmp_in, + -2147483649.0, + 2147483648.0, + ); a.emit_cvttsd2si_32(XMMOrMemory::XMM(tmp_in), tmp_out); a.emit_mov(Size::S32, Location::GPR(tmp_out), ret); @@ -1906,14 +2658,21 @@ impl FunctionCodeGenerator for X64FunctionCode { } Operator::I64TruncSF64 => { - let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); let tmp_out = self.machine.acquire_temp_gpr().unwrap(); let tmp_in = self.machine.acquire_temp_xmm().unwrap(); a.emit_mov(Size::S64, loc, Location::XMM(tmp_in)); - Self::emit_f64_int_conv_check(a, &mut self.machine, tmp_in, -9223372036854777856.0, 9223372036854775808.0); + Self::emit_f64_int_conv_check( + a, + &mut self.machine, + tmp_in, + -9223372036854777856.0, + 9223372036854775808.0, + ); a.emit_cvttsd2si_64(XMMOrMemory::XMM(tmp_in), tmp_out); a.emit_mov(Size::S64, Location::GPR(tmp_out), ret); @@ -1923,31 +2682,46 @@ impl FunctionCodeGenerator for X64FunctionCode { } Operator::I64TruncUF64 => { - let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); let tmp_out = self.machine.acquire_temp_gpr().unwrap(); let tmp_in = self.machine.acquire_temp_xmm().unwrap(); // xmm2 a.emit_mov(Size::S64, loc, Location::XMM(tmp_in)); - Self::emit_f64_int_conv_check(a, &mut self.machine, tmp_in, -1.0, 18446744073709551616.0); + Self::emit_f64_int_conv_check( + a, + &mut self.machine, + tmp_in, + -1.0, + 18446744073709551616.0, + ); let tmp = self.machine.acquire_temp_gpr().unwrap(); // r15 let tmp_x1 = self.machine.acquire_temp_xmm().unwrap(); // xmm1 let tmp_x2 = self.machine.acquire_temp_xmm().unwrap(); // xmm3 - a.emit_mov(Size::S64, Location::Imm64(4890909195324358656u64), Location::GPR(tmp)); //double 9.2233720368547758E+18 + a.emit_mov( + Size::S64, + Location::Imm64(4890909195324358656u64), + Location::GPR(tmp), + ); //double 9.2233720368547758E+18 a.emit_mov(Size::S64, Location::GPR(tmp), Location::XMM(tmp_x1)); a.emit_mov(Size::S64, Location::XMM(tmp_in), Location::XMM(tmp_x2)); a.emit_vsubsd(tmp_in, XMMOrMemory::XMM(tmp_x1), tmp_in); a.emit_cvttsd2si_64(XMMOrMemory::XMM(tmp_in), tmp_out); - a.emit_mov(Size::S64, Location::Imm64(0x8000000000000000u64), Location::GPR(tmp)); + a.emit_mov( + Size::S64, + Location::Imm64(0x8000000000000000u64), + Location::GPR(tmp), + ); a.emit_xor(Size::S64, Location::GPR(tmp_out), Location::GPR(tmp)); a.emit_cvttsd2si_64(XMMOrMemory::XMM(tmp_x2), tmp_out); a.emit_ucomisd(XMMOrMemory::XMM(tmp_x1), tmp_x2); a.emit_cmovae_gpr_64(tmp, tmp_out); a.emit_mov(Size::S64, Location::GPR(tmp_out), ret); - + self.machine.release_temp_xmm(tmp_x2); self.machine.release_temp_xmm(tmp_x1); self.machine.release_temp_gpr(tmp); @@ -1956,7 +2730,8 @@ impl FunctionCodeGenerator for X64FunctionCode { } Operator::F32ConvertSI32 => { - let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::F32], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); let tmp_out = self.machine.acquire_temp_xmm().unwrap(); @@ -1970,7 +2745,8 @@ impl FunctionCodeGenerator for X64FunctionCode { self.machine.release_temp_xmm(tmp_out); } Operator::F32ConvertUI32 => { - let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::F32], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); let tmp_out = self.machine.acquire_temp_xmm().unwrap(); @@ -1984,7 +2760,8 @@ impl FunctionCodeGenerator for X64FunctionCode { self.machine.release_temp_xmm(tmp_out); } Operator::F32ConvertSI64 => { - let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::F32], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); let tmp_out = self.machine.acquire_temp_xmm().unwrap(); @@ -1998,7 +2775,8 @@ impl FunctionCodeGenerator for X64FunctionCode { self.machine.release_temp_xmm(tmp_out); } Operator::F32ConvertUI64 => { - let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::F32], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); let tmp_out = self.machine.acquire_temp_xmm().unwrap(); @@ -2029,7 +2807,8 @@ impl FunctionCodeGenerator for X64FunctionCode { } Operator::F64ConvertSI32 => { - let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::F64], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); let tmp_out = self.machine.acquire_temp_xmm().unwrap(); @@ -2043,7 +2822,8 @@ impl FunctionCodeGenerator for X64FunctionCode { self.machine.release_temp_xmm(tmp_out); } Operator::F64ConvertUI32 => { - let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::F64], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); let tmp_out = self.machine.acquire_temp_xmm().unwrap(); @@ -2057,7 +2837,8 @@ impl FunctionCodeGenerator for X64FunctionCode { self.machine.release_temp_xmm(tmp_out); } Operator::F64ConvertSI64 => { - let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::F64], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); let tmp_out = self.machine.acquire_temp_xmm().unwrap(); @@ -2071,7 +2852,8 @@ impl FunctionCodeGenerator for X64FunctionCode { self.machine.release_temp_xmm(tmp_out); } Operator::F64ConvertUI64 => { - let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let loc = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::F64], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); let tmp_out = self.machine.acquire_temp_xmm().unwrap(); @@ -2110,21 +2892,33 @@ impl FunctionCodeGenerator for X64FunctionCode { .entry(function_index) .or_insert_with(|| (a.get_label(), None)) .0; - let sig_index = *self.function_signatures.get(FuncIndex::new(function_index)).unwrap(); + let sig_index = *self + .function_signatures + .get(FuncIndex::new(function_index)) + .unwrap(); let sig = self.signatures.get(sig_index).unwrap(); let param_types: SmallVec<[WpType; 8]> = sig.params().iter().cloned().map(type_to_wp_type).collect(); let return_types: SmallVec<[WpType; 1]> = sig.returns().iter().cloned().map(type_to_wp_type).collect(); - let params: SmallVec<[_; 8]> = self.value_stack.drain(self.value_stack.len() - param_types.len()..).collect(); - let released: SmallVec<[Location; 8]> = params.iter() + let params: SmallVec<[_; 8]> = self + .value_stack + .drain(self.value_stack.len() - param_types.len()..) + .collect(); + let released: SmallVec<[Location; 8]> = params + .iter() .filter(|&&(_, lot)| lot == LocalOrTemp::Temp) .map(|&(x, _)| x) .collect(); self.machine.release_locations_only_regs(&released); - Self::emit_call_sysv_label(a, &mut self.machine, label, params.iter().map(|&(x, _)| x)); + Self::emit_call_sysv_label( + a, + &mut self.machine, + label, + params.iter().map(|&(x, _)| x), + ); self.machine.release_locations_only_stack(a, &released); @@ -2142,10 +2936,15 @@ impl FunctionCodeGenerator for X64FunctionCode { let return_types: SmallVec<[WpType; 1]> = sig.returns().iter().cloned().map(type_to_wp_type).collect(); - let func_index = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let func_index = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - let params: SmallVec<[_; 8]> = self.value_stack.drain(self.value_stack.len() - param_types.len()..).collect(); - let released: SmallVec<[Location; 8]> = params.iter() + let params: SmallVec<[_; 8]> = self + .value_stack + .drain(self.value_stack.len() - param_types.len()..) + .collect(); + let released: SmallVec<[Location; 8]> = params + .iter() .filter(|&&(_, lot)| lot == LocalOrTemp::Temp) .map(|&(x, _)| x) .collect(); @@ -2162,21 +2961,52 @@ impl FunctionCodeGenerator for X64FunctionCode { match TableIndex::new(0).local_or_import(module_info) { LocalOrImport::Local(_) => vm::Ctx::offset_tables(), LocalOrImport::Import(_) => vm::Ctx::offset_imported_tables(), - } as i32 + } as i32, ), Location::GPR(table_base), ); - a.emit_mov(Size::S64, Location::Memory(table_base, 0), Location::GPR(table_base)); - a.emit_mov(Size::S32, Location::Memory(table_base, LocalTable::offset_count() as i32), Location::GPR(table_count)); - a.emit_mov(Size::S64, Location::Memory(table_base, LocalTable::offset_base() as i32), Location::GPR(table_base)); + a.emit_mov( + Size::S64, + Location::Memory(table_base, 0), + Location::GPR(table_base), + ); + a.emit_mov( + Size::S32, + Location::Memory(table_base, LocalTable::offset_count() as i32), + Location::GPR(table_count), + ); + a.emit_mov( + Size::S64, + Location::Memory(table_base, LocalTable::offset_base() as i32), + Location::GPR(table_base), + ); a.emit_cmp(Size::S32, func_index, Location::GPR(table_count)); a.emit_conditional_trap(Condition::BelowEqual); a.emit_mov(Size::S64, func_index, Location::GPR(table_count)); a.emit_imul_imm32_gpr64(vm::Anyfunc::size() as u32, table_count); - a.emit_add(Size::S64, Location::GPR(table_base), Location::GPR(table_count)); - a.emit_mov(Size::S64, Location::Memory(Machine::get_vmctx_reg(), vm::Ctx::offset_signatures() as i32), Location::GPR(sigidx)); - a.emit_mov(Size::S32, Location::Memory(sigidx, (index * 4) as i32), Location::GPR(sigidx)); - a.emit_cmp(Size::S32, Location::GPR(sigidx), Location::Memory(table_count, (vm::Anyfunc::offset_sig_id() as usize) as i32)); + a.emit_add( + Size::S64, + Location::GPR(table_base), + Location::GPR(table_count), + ); + a.emit_mov( + Size::S64, + Location::Memory( + Machine::get_vmctx_reg(), + vm::Ctx::offset_signatures() as i32, + ), + Location::GPR(sigidx), + ); + a.emit_mov( + Size::S32, + Location::Memory(sigidx, (index * 4) as i32), + Location::GPR(sigidx), + ); + a.emit_cmp( + Size::S32, + Location::GPR(sigidx), + Location::Memory(table_count, (vm::Anyfunc::offset_sig_id() as usize) as i32), + ); a.emit_conditional_trap(Condition::NotEqual); self.machine.release_temp_gpr(sigidx); @@ -2184,12 +3014,24 @@ impl FunctionCodeGenerator for X64FunctionCode { self.machine.release_temp_gpr(table_base); if table_count != GPR::RAX { - a.emit_mov(Size::S64, Location::GPR(table_count), Location::GPR(GPR::RAX)); + a.emit_mov( + Size::S64, + Location::GPR(table_count), + Location::GPR(GPR::RAX), + ); } - Self::emit_call_sysv(a, &mut self.machine, |a| { - a.emit_call_location(Location::Memory(GPR::RAX, (vm::Anyfunc::offset_func() as usize) as i32)); - }, params.iter().map(|&(x, _)| x)); + Self::emit_call_sysv( + a, + &mut self.machine, + |a| { + a.emit_call_location(Location::Memory( + GPR::RAX, + (vm::Anyfunc::offset_func() as usize) as i32, + )); + }, + params.iter().map(|&(x, _)| x), + ); self.machine.release_locations_only_stack(a, &released); @@ -2203,22 +3045,26 @@ impl FunctionCodeGenerator for X64FunctionCode { let label_end = a.get_label(); let label_else = a.get_label(); - let cond = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let cond = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - self.control_stack - .push(ControlFrame { - label: label_end, - loop_like: false, - if_else: IfElseState::If(label_else), - returns: match ty { - WpType::EmptyBlockType => smallvec![], - _ => smallvec![ty], - }, - value_stack_depth: self.value_stack.len(), - }); + self.control_stack.push(ControlFrame { + label: label_end, + loop_like: false, + if_else: IfElseState::If(label_else), + returns: match ty { + WpType::EmptyBlockType => smallvec![], + _ => smallvec![ty], + }, + value_stack_depth: self.value_stack.len(), + }); Self::emit_relaxed_binop( - a, &mut self.machine, Assembler::emit_cmp, - Size::S32, Location::Imm32(0), cond, + a, + &mut self.machine, + Assembler::emit_cmp, + Size::S32, + Location::Imm32(0), + cond, ); a.emit_jmp(Condition::Equal, label_else); } @@ -2228,12 +3074,18 @@ impl FunctionCodeGenerator for X64FunctionCode { if frame.returns.len() > 0 { let (loc, _) = *self.value_stack.last().unwrap(); Self::emit_relaxed_binop( - a, &mut self.machine, Assembler::emit_mov, - Size::S64, loc, Location::GPR(GPR::RAX), + a, + &mut self.machine, + Assembler::emit_mov, + Size::S64, + loc, + Location::GPR(GPR::RAX), ); } - let released: Vec = self.value_stack.drain(frame.value_stack_depth..) + let released: Vec = self + .value_stack + .drain(frame.value_stack_depth..) .filter(|&(_, lot)| lot == LocalOrTemp::Temp) .map(|(x, _)| x) .collect(); @@ -2245,13 +3097,16 @@ impl FunctionCodeGenerator for X64FunctionCode { a.emit_label(label); frame.if_else = IfElseState::Else; } - _ => unreachable!() + _ => unreachable!(), } } Operator::Select => { - let cond = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - let v_b = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - let v_a = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let cond = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let v_b = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let v_a = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); @@ -2259,52 +3114,62 @@ impl FunctionCodeGenerator for X64FunctionCode { let zero_label = a.get_label(); Self::emit_relaxed_binop( - a, &mut self.machine, Assembler::emit_cmp, - Size::S32, Location::Imm32(0), cond, + a, + &mut self.machine, + Assembler::emit_cmp, + Size::S32, + Location::Imm32(0), + cond, ); a.emit_jmp(Condition::Equal, zero_label); if v_a != ret { Self::emit_relaxed_binop( - a, &mut self.machine, Assembler::emit_mov, - Size::S64, v_a, ret, + a, + &mut self.machine, + Assembler::emit_mov, + Size::S64, + v_a, + ret, ); } a.emit_jmp(Condition::None, end_label); a.emit_label(zero_label); if v_b != ret { Self::emit_relaxed_binop( - a, &mut self.machine, Assembler::emit_mov, - Size::S64, v_b, ret, + a, + &mut self.machine, + Assembler::emit_mov, + Size::S64, + v_b, + ret, ); } a.emit_label(end_label); } Operator::Block { ty } => { - self.control_stack - .push(ControlFrame { - label: a.get_label(), - loop_like: false, - if_else: IfElseState::None, - returns: match ty { - WpType::EmptyBlockType => smallvec![], - _ => smallvec![ty], - }, - value_stack_depth: self.value_stack.len(), - }); + self.control_stack.push(ControlFrame { + label: a.get_label(), + loop_like: false, + if_else: IfElseState::None, + returns: match ty { + WpType::EmptyBlockType => smallvec![], + _ => smallvec![ty], + }, + value_stack_depth: self.value_stack.len(), + }); } Operator::Loop { ty } => { let label = a.get_label(); - self.control_stack - .push(ControlFrame { - label: label, - loop_like: true, - if_else: IfElseState::None, - returns: match ty { - WpType::EmptyBlockType => smallvec![], - _ => smallvec![ty], - }, - value_stack_depth: self.value_stack.len(), - }); + self.control_stack.push(ControlFrame { + label: label, + loop_like: true, + if_else: IfElseState::None, + returns: match ty { + WpType::EmptyBlockType => smallvec![], + _ => smallvec![ty], + }, + value_stack_depth: self.value_stack.len(), + }); a.emit_label(label); } Operator::Nop => {} @@ -2328,10 +3193,19 @@ impl FunctionCodeGenerator for X64FunctionCode { } } }; - Self::emit_call_sysv(a, &mut self.machine, |a| { - a.emit_mov(Size::S64, Location::Imm64(target as u64), Location::GPR(GPR::RAX)); - a.emit_call_location(Location::GPR(GPR::RAX)); - }, ::std::iter::once(Location::Imm32(memory_index.index() as u32))); + Self::emit_call_sysv( + a, + &mut self.machine, + |a| { + a.emit_mov( + Size::S64, + Location::Imm64(target as u64), + Location::GPR(GPR::RAX), + ); + a.emit_call_location(Location::GPR(GPR::RAX)); + }, + ::std::iter::once(Location::Imm32(memory_index.index() as u32)), + ); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); a.emit_mov(Size::S64, Location::GPR(GPR::RAX), ret); @@ -2363,10 +3237,20 @@ impl FunctionCodeGenerator for X64FunctionCode { self.machine.release_locations_only_regs(&[param_pages]); } - Self::emit_call_sysv(a, &mut self.machine, |a| { - a.emit_mov(Size::S64, Location::Imm64(target as u64), Location::GPR(GPR::RAX)); - a.emit_call_location(Location::GPR(GPR::RAX)); - }, ::std::iter::once(Location::Imm32(memory_index.index() as u32)).chain(::std::iter::once(param_pages))); + Self::emit_call_sysv( + a, + &mut self.machine, + |a| { + a.emit_mov( + Size::S64, + Location::Imm64(target as u64), + Location::GPR(GPR::RAX), + ); + a.emit_call_location(Location::GPR(GPR::RAX)); + }, + ::std::iter::once(Location::Imm32(memory_index.index() as u32)) + .chain(::std::iter::once(param_pages)), + ); if param_pages_lot == LocalOrTemp::Temp { self.machine.release_locations_only_stack(a, &[param_pages]); @@ -2377,277 +3261,594 @@ impl FunctionCodeGenerator for X64FunctionCode { a.emit_mov(Size::S64, Location::GPR(GPR::RAX), ret); } Operator::I32Load { memarg } => { - let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); - Self::emit_memory_op(module_info, a, &mut self.machine, target, memarg.offset as usize, 4, |a, m, addr| { - Self::emit_relaxed_binop( - a, m, Assembler::emit_mov, - Size::S32, Location::Memory(addr, 0), ret, - ); - }); + Self::emit_memory_op( + module_info, + a, + &mut self.machine, + target, + memarg.offset as usize, + 4, + |a, m, addr| { + Self::emit_relaxed_binop( + a, + m, + Assembler::emit_mov, + Size::S32, + Location::Memory(addr, 0), + ret, + ); + }, + ); } Operator::F32Load { memarg } => { - let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::F32], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); - Self::emit_memory_op(module_info, a, &mut self.machine, target, memarg.offset as usize, 4, |a, m, addr| { - Self::emit_relaxed_binop( - a, m, Assembler::emit_mov, - Size::S32, Location::Memory(addr, 0), ret, - ); - }); + Self::emit_memory_op( + module_info, + a, + &mut self.machine, + target, + memarg.offset as usize, + 4, + |a, m, addr| { + Self::emit_relaxed_binop( + a, + m, + Assembler::emit_mov, + Size::S32, + Location::Memory(addr, 0), + ret, + ); + }, + ); } Operator::I32Load8U { memarg } => { - let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); - Self::emit_memory_op(module_info, a, &mut self.machine, target, memarg.offset as usize, 1, |a, m, addr| { - Self::emit_relaxed_zx_sx( - a, m, Assembler::emit_movzx, - Size::S8, Location::Memory(addr, 0), Size::S32, ret, - ); - }); + Self::emit_memory_op( + module_info, + a, + &mut self.machine, + target, + memarg.offset as usize, + 1, + |a, m, addr| { + Self::emit_relaxed_zx_sx( + a, + m, + Assembler::emit_movzx, + Size::S8, + Location::Memory(addr, 0), + Size::S32, + ret, + ); + }, + ); } Operator::I32Load8S { memarg } => { - let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); - Self::emit_memory_op(module_info, a, &mut self.machine, target, memarg.offset as usize, 1, |a, m, addr| { - Self::emit_relaxed_zx_sx( - a, m, Assembler::emit_movsx, - Size::S8, Location::Memory(addr, 0), Size::S32, ret, - ); - }); + Self::emit_memory_op( + module_info, + a, + &mut self.machine, + target, + memarg.offset as usize, + 1, + |a, m, addr| { + Self::emit_relaxed_zx_sx( + a, + m, + Assembler::emit_movsx, + Size::S8, + Location::Memory(addr, 0), + Size::S32, + ret, + ); + }, + ); } Operator::I32Load16U { memarg } => { - let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); - Self::emit_memory_op(module_info, a, &mut self.machine, target, memarg.offset as usize, 2, |a, m, addr| { - Self::emit_relaxed_zx_sx( - a, m, Assembler::emit_movzx, - Size::S16, Location::Memory(addr, 0), Size::S32, ret, - ); - }); + Self::emit_memory_op( + module_info, + a, + &mut self.machine, + target, + memarg.offset as usize, + 2, + |a, m, addr| { + Self::emit_relaxed_zx_sx( + a, + m, + Assembler::emit_movzx, + Size::S16, + Location::Memory(addr, 0), + Size::S32, + ret, + ); + }, + ); } Operator::I32Load16S { memarg } => { - let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I32], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); - Self::emit_memory_op(module_info, a, &mut self.machine, target, memarg.offset as usize, 2, |a, m, addr| { - Self::emit_relaxed_zx_sx( - a, m, Assembler::emit_movsx, - Size::S16, Location::Memory(addr, 0), Size::S32, ret, - ); - }); + Self::emit_memory_op( + module_info, + a, + &mut self.machine, + target, + memarg.offset as usize, + 2, + |a, m, addr| { + Self::emit_relaxed_zx_sx( + a, + m, + Assembler::emit_movsx, + Size::S16, + Location::Memory(addr, 0), + Size::S32, + ret, + ); + }, + ); } Operator::I32Store { memarg } => { - let target_value = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - let target_addr = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target_value = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target_addr = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - Self::emit_memory_op(module_info, a, &mut self.machine, target_addr, memarg.offset as usize, 4, |a, m, addr| { - Self::emit_relaxed_binop( - a, m, Assembler::emit_mov, - Size::S32, target_value, Location::Memory(addr, 0), - ); - }); + Self::emit_memory_op( + module_info, + a, + &mut self.machine, + target_addr, + memarg.offset as usize, + 4, + |a, m, addr| { + Self::emit_relaxed_binop( + a, + m, + Assembler::emit_mov, + Size::S32, + target_value, + Location::Memory(addr, 0), + ); + }, + ); } Operator::F32Store { memarg } => { - let target_value = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - let target_addr = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target_value = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target_addr = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - Self::emit_memory_op(module_info, a, &mut self.machine, target_addr, memarg.offset as usize, 4, |a, m, addr| { - Self::emit_relaxed_binop( - a, m, Assembler::emit_mov, - Size::S32, target_value, Location::Memory(addr, 0), - ); - }); + Self::emit_memory_op( + module_info, + a, + &mut self.machine, + target_addr, + memarg.offset as usize, + 4, + |a, m, addr| { + Self::emit_relaxed_binop( + a, + m, + Assembler::emit_mov, + Size::S32, + target_value, + Location::Memory(addr, 0), + ); + }, + ); } Operator::I32Store8 { memarg } => { - let target_value = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - let target_addr = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target_value = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target_addr = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - Self::emit_memory_op(module_info, a, &mut self.machine, target_addr, memarg.offset as usize, 1, |a, m, addr| { - Self::emit_relaxed_binop( - a, m, Assembler::emit_mov, - Size::S8, target_value, Location::Memory(addr, 0), - ); - }); + Self::emit_memory_op( + module_info, + a, + &mut self.machine, + target_addr, + memarg.offset as usize, + 1, + |a, m, addr| { + Self::emit_relaxed_binop( + a, + m, + Assembler::emit_mov, + Size::S8, + target_value, + Location::Memory(addr, 0), + ); + }, + ); } Operator::I32Store16 { memarg } => { - let target_value = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - let target_addr = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target_value = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target_addr = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - Self::emit_memory_op(module_info, a, &mut self.machine, target_addr, memarg.offset as usize, 2, |a, m, addr| { - Self::emit_relaxed_binop( - a, m, Assembler::emit_mov, - Size::S16, target_value, Location::Memory(addr, 0), - ); - }); + Self::emit_memory_op( + module_info, + a, + &mut self.machine, + target_addr, + memarg.offset as usize, + 2, + |a, m, addr| { + Self::emit_relaxed_binop( + a, + m, + Assembler::emit_mov, + Size::S16, + target_value, + Location::Memory(addr, 0), + ); + }, + ); } Operator::I64Load { memarg } => { - let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); - Self::emit_memory_op(module_info, a, &mut self.machine, target, memarg.offset as usize, 8, |a, m, addr| { - Self::emit_relaxed_binop( - a, m, Assembler::emit_mov, - Size::S64, Location::Memory(addr, 0), ret, - ); - }); + Self::emit_memory_op( + module_info, + a, + &mut self.machine, + target, + memarg.offset as usize, + 8, + |a, m, addr| { + Self::emit_relaxed_binop( + a, + m, + Assembler::emit_mov, + Size::S64, + Location::Memory(addr, 0), + ret, + ); + }, + ); } Operator::F64Load { memarg } => { - let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::F64], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); - Self::emit_memory_op(module_info, a, &mut self.machine, target, memarg.offset as usize, 8, |a, m, addr| { - Self::emit_relaxed_binop( - a, m, Assembler::emit_mov, - Size::S64, Location::Memory(addr, 0), ret, - ); - }); + Self::emit_memory_op( + module_info, + a, + &mut self.machine, + target, + memarg.offset as usize, + 8, + |a, m, addr| { + Self::emit_relaxed_binop( + a, + m, + Assembler::emit_mov, + Size::S64, + Location::Memory(addr, 0), + ret, + ); + }, + ); } Operator::I64Load8U { memarg } => { - let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); - Self::emit_memory_op(module_info, a, &mut self.machine, target, memarg.offset as usize, 1, |a, m, addr| { - Self::emit_relaxed_zx_sx( - a, m, Assembler::emit_movzx, - Size::S8, Location::Memory(addr, 0), Size::S64, ret, - ); - }); + Self::emit_memory_op( + module_info, + a, + &mut self.machine, + target, + memarg.offset as usize, + 1, + |a, m, addr| { + Self::emit_relaxed_zx_sx( + a, + m, + Assembler::emit_movzx, + Size::S8, + Location::Memory(addr, 0), + Size::S64, + ret, + ); + }, + ); } Operator::I64Load8S { memarg } => { - let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); - Self::emit_memory_op(module_info, a, &mut self.machine, target, memarg.offset as usize, 1, |a, m, addr| { - Self::emit_relaxed_zx_sx( - a, m, Assembler::emit_movsx, - Size::S8, Location::Memory(addr, 0), Size::S64, ret, - ); - }); + Self::emit_memory_op( + module_info, + a, + &mut self.machine, + target, + memarg.offset as usize, + 1, + |a, m, addr| { + Self::emit_relaxed_zx_sx( + a, + m, + Assembler::emit_movsx, + Size::S8, + Location::Memory(addr, 0), + Size::S64, + ret, + ); + }, + ); } Operator::I64Load16U { memarg } => { - let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); - Self::emit_memory_op(module_info, a, &mut self.machine, target, memarg.offset as usize, 2, |a, m, addr| { - Self::emit_relaxed_zx_sx( - a, m, Assembler::emit_movzx, - Size::S16, Location::Memory(addr, 0), Size::S64, ret, - ); - }); + Self::emit_memory_op( + module_info, + a, + &mut self.machine, + target, + memarg.offset as usize, + 2, + |a, m, addr| { + Self::emit_relaxed_zx_sx( + a, + m, + Assembler::emit_movzx, + Size::S16, + Location::Memory(addr, 0), + Size::S64, + ret, + ); + }, + ); } Operator::I64Load16S { memarg } => { - let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); - Self::emit_memory_op(module_info, a, &mut self.machine, target, memarg.offset as usize, 2, |a, m, addr| { - Self::emit_relaxed_zx_sx( - a, m, Assembler::emit_movsx, - Size::S16, Location::Memory(addr, 0), Size::S64, ret, - ); - }); + Self::emit_memory_op( + module_info, + a, + &mut self.machine, + target, + memarg.offset as usize, + 2, + |a, m, addr| { + Self::emit_relaxed_zx_sx( + a, + m, + Assembler::emit_movsx, + Size::S16, + Location::Memory(addr, 0), + Size::S64, + ret, + ); + }, + ); } Operator::I64Load32U { memarg } => { - let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); - Self::emit_memory_op(module_info, a, &mut self.machine, target, memarg.offset as usize, 4, |a, m, addr| { - match ret { - Location::GPR(_) => {}, - _ => { - a.emit_mov(Size::S64, Location::Imm64(0), ret); + Self::emit_memory_op( + module_info, + a, + &mut self.machine, + target, + memarg.offset as usize, + 4, + |a, m, addr| { + match ret { + Location::GPR(_) => {} + _ => { + a.emit_mov(Size::S64, Location::Imm64(0), ret); + } } - } - Self::emit_relaxed_binop( - a, m, Assembler::emit_mov, - Size::S32, Location::Memory(addr, 0), ret, - ); - }); + Self::emit_relaxed_binop( + a, + m, + Assembler::emit_mov, + Size::S32, + Location::Memory(addr, 0), + ret, + ); + }, + ); } Operator::I64Load32S { memarg } => { - let target = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let ret = self.machine.acquire_locations(a, &[WpType::I64], false)[0]; self.value_stack.push((ret, LocalOrTemp::Temp)); - Self::emit_memory_op(module_info, a, &mut self.machine, target, memarg.offset as usize, 4, |a, m, addr| { - Self::emit_relaxed_zx_sx( - a, m, Assembler::emit_movsx, - Size::S32, Location::Memory(addr, 0), Size::S64, ret, - ); - }); + Self::emit_memory_op( + module_info, + a, + &mut self.machine, + target, + memarg.offset as usize, + 4, + |a, m, addr| { + Self::emit_relaxed_zx_sx( + a, + m, + Assembler::emit_movsx, + Size::S32, + Location::Memory(addr, 0), + Size::S64, + ret, + ); + }, + ); } Operator::I64Store { memarg } => { - let target_value = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - let target_addr = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target_value = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target_addr = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - Self::emit_memory_op(module_info, a, &mut self.machine, target_addr, memarg.offset as usize, 8, |a, m, addr| { - Self::emit_relaxed_binop( - a, m, Assembler::emit_mov, - Size::S64, target_value, Location::Memory(addr, 0), - ); - }); + Self::emit_memory_op( + module_info, + a, + &mut self.machine, + target_addr, + memarg.offset as usize, + 8, + |a, m, addr| { + Self::emit_relaxed_binop( + a, + m, + Assembler::emit_mov, + Size::S64, + target_value, + Location::Memory(addr, 0), + ); + }, + ); } Operator::F64Store { memarg } => { - let target_value = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - let target_addr = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target_value = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target_addr = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - Self::emit_memory_op(module_info, a, &mut self.machine, target_addr, memarg.offset as usize, 8, |a, m, addr| { - Self::emit_relaxed_binop( - a, m, Assembler::emit_mov, - Size::S64, target_value, Location::Memory(addr, 0), - ); - }); + Self::emit_memory_op( + module_info, + a, + &mut self.machine, + target_addr, + memarg.offset as usize, + 8, + |a, m, addr| { + Self::emit_relaxed_binop( + a, + m, + Assembler::emit_mov, + Size::S64, + target_value, + Location::Memory(addr, 0), + ); + }, + ); } Operator::I64Store8 { memarg } => { - let target_value = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - let target_addr = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target_value = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target_addr = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - Self::emit_memory_op(module_info, a, &mut self.machine, target_addr, memarg.offset as usize, 1, |a, m, addr| { - Self::emit_relaxed_binop( - a, m, Assembler::emit_mov, - Size::S8, target_value, Location::Memory(addr, 0), - ); - }); + Self::emit_memory_op( + module_info, + a, + &mut self.machine, + target_addr, + memarg.offset as usize, + 1, + |a, m, addr| { + Self::emit_relaxed_binop( + a, + m, + Assembler::emit_mov, + Size::S8, + target_value, + Location::Memory(addr, 0), + ); + }, + ); } Operator::I64Store16 { memarg } => { - let target_value = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - let target_addr = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target_value = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target_addr = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - Self::emit_memory_op(module_info, a, &mut self.machine, target_addr, memarg.offset as usize, 2, |a, m, addr| { - Self::emit_relaxed_binop( - a, m, Assembler::emit_mov, - Size::S16, target_value, Location::Memory(addr, 0), - ); - }); + Self::emit_memory_op( + module_info, + a, + &mut self.machine, + target_addr, + memarg.offset as usize, + 2, + |a, m, addr| { + Self::emit_relaxed_binop( + a, + m, + Assembler::emit_mov, + Size::S16, + target_value, + Location::Memory(addr, 0), + ); + }, + ); } Operator::I64Store32 { memarg } => { - let target_value = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - let target_addr = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target_value = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let target_addr = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); - Self::emit_memory_op(module_info, a, &mut self.machine, target_addr, memarg.offset as usize, 4, |a, m, addr| { - Self::emit_relaxed_binop( - a, m, Assembler::emit_mov, - Size::S32, target_value, Location::Memory(addr, 0), - ); - }); + Self::emit_memory_op( + module_info, + a, + &mut self.machine, + target_addr, + memarg.offset as usize, + 4, + |a, m, addr| { + Self::emit_relaxed_binop( + a, + m, + Assembler::emit_mov, + Size::S32, + target_value, + Location::Memory(addr, 0), + ); + }, + ); } Operator::Unreachable => { a.emit_ud2(); @@ -2659,11 +3860,16 @@ impl FunctionCodeGenerator for X64FunctionCode { assert_eq!(frame.returns.len(), 1); let (loc, _) = *self.value_stack.last().unwrap(); Self::emit_relaxed_binop( - a, &mut self.machine, Assembler::emit_mov, - Size::S64, loc, Location::GPR(GPR::RAX), + a, + &mut self.machine, + Assembler::emit_mov, + Size::S64, + loc, + Location::GPR(GPR::RAX), ); } - let released: Vec = self.value_stack[frame.value_stack_depth..].iter() + let released: Vec = self.value_stack[frame.value_stack_depth..] + .iter() .filter(|&&(_, lot)| lot == LocalOrTemp::Temp) .map(|&(x, _)| x) .collect(); @@ -2672,13 +3878,15 @@ impl FunctionCodeGenerator for X64FunctionCode { self.unreachable_depth = 1; } Operator::Br { relative_depth } => { - let frame = &self.control_stack[self.control_stack.len() - 1 - (relative_depth as usize)]; + let frame = + &self.control_stack[self.control_stack.len() - 1 - (relative_depth as usize)]; if !frame.loop_like && frame.returns.len() > 0 { assert_eq!(frame.returns.len(), 1); let (loc, _) = *self.value_stack.last().unwrap(); a.emit_mov(Size::S64, loc, Location::GPR(GPR::RAX)); } - let released: Vec = self.value_stack[frame.value_stack_depth..].iter() + let released: Vec = self.value_stack[frame.value_stack_depth..] + .iter() .filter(|&&(_, lot)| lot == LocalOrTemp::Temp) .map(|&(x, _)| x) .collect(); @@ -2686,22 +3894,29 @@ impl FunctionCodeGenerator for X64FunctionCode { a.emit_jmp(Condition::None, frame.label); self.unreachable_depth = 1; } - Operator::BrIf { relative_depth }=> { + Operator::BrIf { relative_depth } => { let after = a.get_label(); - let cond = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let cond = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); Self::emit_relaxed_binop( - a, &mut self.machine, Assembler::emit_cmp, - Size::S32, Location::Imm32(0), cond, + a, + &mut self.machine, + Assembler::emit_cmp, + Size::S32, + Location::Imm32(0), + cond, ); a.emit_jmp(Condition::Equal, after); - let frame = &self.control_stack[self.control_stack.len() - 1 - (relative_depth as usize)]; + let frame = + &self.control_stack[self.control_stack.len() - 1 - (relative_depth as usize)]; if !frame.loop_like && frame.returns.len() > 0 { assert_eq!(frame.returns.len(), 1); let (loc, _) = *self.value_stack.last().unwrap(); a.emit_mov(Size::S64, loc, Location::GPR(GPR::RAX)); } - let released: Vec = self.value_stack[frame.value_stack_depth..].iter() + let released: Vec = self.value_stack[frame.value_stack_depth..] + .iter() .filter(|&&(_, lot)| lot == LocalOrTemp::Temp) .map(|&(x, _)| x) .collect(); @@ -2712,16 +3927,25 @@ impl FunctionCodeGenerator for X64FunctionCode { } Operator::BrTable { table } => { let (targets, default_target) = table.read_table().unwrap(); - let cond = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); + let cond = + get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap()); let mut table = vec![0usize; targets.len()]; let default_br = a.get_label(); Self::emit_relaxed_binop( - a, &mut self.machine, Assembler::emit_cmp, - Size::S32, Location::Imm32(targets.len() as u32), cond, + a, + &mut self.machine, + Assembler::emit_cmp, + Size::S32, + Location::Imm32(targets.len() as u32), + cond, ); a.emit_jmp(Condition::AboveEqual, default_br); - a.emit_mov(Size::S64, Location::Imm64(table.as_ptr() as usize as u64), Location::GPR(GPR::RCX)); + a.emit_mov( + Size::S64, + Location::Imm64(table.as_ptr() as usize as u64), + Location::GPR(GPR::RCX), + ); a.emit_mov(Size::S32, cond, Location::GPR(GPR::RDX)); a.emit_shl(Size::S32, Location::Imm8(3), Location::GPR(GPR::RDX)); a.emit_add(Size::S64, Location::GPR(GPR::RCX), Location::GPR(GPR::RDX)); @@ -2730,13 +3954,15 @@ impl FunctionCodeGenerator for X64FunctionCode { for (i, target) in targets.iter().enumerate() { let AssemblyOffset(offset) = a.offset(); table[i] = offset; - let frame = &self.control_stack[self.control_stack.len() - 1 - (*target as usize)]; + let frame = + &self.control_stack[self.control_stack.len() - 1 - (*target as usize)]; if !frame.loop_like && frame.returns.len() > 0 { assert_eq!(frame.returns.len(), 1); let (loc, _) = *self.value_stack.last().unwrap(); a.emit_mov(Size::S64, loc, Location::GPR(GPR::RAX)); } - let released: Vec = self.value_stack[frame.value_stack_depth..].iter() + let released: Vec = self.value_stack[frame.value_stack_depth..] + .iter() .filter(|&&(_, lot)| lot == LocalOrTemp::Temp) .map(|&(x, _)| x) .collect(); @@ -2746,20 +3972,22 @@ impl FunctionCodeGenerator for X64FunctionCode { a.emit_label(default_br); { - let frame = &self.control_stack[self.control_stack.len() - 1 - (default_target as usize)]; + let frame = &self.control_stack + [self.control_stack.len() - 1 - (default_target as usize)]; if !frame.loop_like && frame.returns.len() > 0 { assert_eq!(frame.returns.len(), 1); let (loc, _) = *self.value_stack.last().unwrap(); a.emit_mov(Size::S64, loc, Location::GPR(GPR::RAX)); } - let released: Vec = self.value_stack[frame.value_stack_depth..].iter() + let released: Vec = self.value_stack[frame.value_stack_depth..] + .iter() .filter(|&&(_, lot)| lot == LocalOrTemp::Temp) .map(|&(x, _)| x) .collect(); self.machine.release_locations_keep_state(a, &released); a.emit_jmp(Condition::None, frame.label); } - + self.br_table_data.as_mut().unwrap().push(table); self.unreachable_depth = 1; } @@ -2772,8 +4000,12 @@ impl FunctionCodeGenerator for X64FunctionCode { if !was_unreachable && frame.returns.len() > 0 { let (loc, _) = *self.value_stack.last().unwrap(); Self::emit_relaxed_binop( - a, &mut self.machine, Assembler::emit_mov, - Size::S64, loc, Location::GPR(GPR::RAX), + a, + &mut self.machine, + Assembler::emit_mov, + Size::S64, + loc, + Location::GPR(GPR::RAX), ); } @@ -2784,7 +4016,9 @@ impl FunctionCodeGenerator for X64FunctionCode { a.emit_pop(Size::S64, Location::GPR(GPR::RBP)); a.emit_ret(); } else { - let released: Vec = self.value_stack.drain(frame.value_stack_depth..) + let released: Vec = self + .value_stack + .drain(frame.value_stack_depth..) .filter(|&(_, lot)| lot == LocalOrTemp::Temp) .map(|(x, _)| x) .collect(); @@ -2824,7 +4058,11 @@ fn type_to_wp_type(ty: Type) -> WpType { } } -fn get_location_released(a: &mut Assembler, m: &mut Machine, (loc, lot): (Location, LocalOrTemp)) -> Location { +fn get_location_released( + a: &mut Assembler, + m: &mut Machine, + (loc, lot): (Location, LocalOrTemp), +) -> Location { if lot == LocalOrTemp::Temp { m.release_locations(a, &[loc]); } diff --git a/lib/dynasm-backend/src/emitter_x64.rs b/lib/dynasm-backend/src/emitter_x64.rs index dc747b898..420a44123 100644 --- a/lib/dynasm-backend/src/emitter_x64.rs +++ b/lib/dynasm-backend/src/emitter_x64.rs @@ -1,6 +1,4 @@ -use dynasmrt::{ - x64::Assembler, AssemblyOffset, DynamicLabel, DynasmApi, DynasmLabelApi, -}; +use dynasmrt::{x64::Assembler, AssemblyOffset, DynamicLabel, DynasmApi, DynasmLabelApi}; #[repr(u8)] #[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)] @@ -43,7 +41,7 @@ pub enum Location { Imm64(u64), GPR(GPR), XMM(XMM), - Memory(GPR, i32) + Memory(GPR, i32), } #[derive(Copy, Clone, Debug, Eq, PartialEq)] @@ -228,13 +226,9 @@ macro_rules! unop_mem { macro_rules! unop_gpr_or_mem { ($ins:ident, $assembler:tt, $sz:expr, $loc:expr, $otherwise:block) => { - unop_gpr!( - $ins, $assembler, $sz, $loc, - {unop_mem!( - $ins, $assembler, $sz, $loc, - $otherwise - )} - ) + unop_gpr!($ins, $assembler, $sz, $loc, { + unop_mem!($ins, $assembler, $sz, $loc, $otherwise) + }) }; } @@ -321,22 +315,15 @@ macro_rules! binop_mem_gpr { macro_rules! binop_all_nofp { ($ins:ident, $assembler:tt, $sz:expr, $src:expr, $dst:expr, $otherwise:block) => { - binop_imm32_gpr!( - $ins, $assembler, $sz, $src, $dst, - {binop_imm32_mem!( - $ins, $assembler, $sz, $src, $dst, - {binop_gpr_gpr!( - $ins, $assembler, $sz, $src, $dst, - {binop_gpr_mem!( - $ins, $assembler, $sz, $src, $dst, - {binop_mem_gpr!( - $ins, $assembler, $sz, $src, $dst, - $otherwise - )} - )} - )} - )} - ) + binop_imm32_gpr!($ins, $assembler, $sz, $src, $dst, { + binop_imm32_mem!($ins, $assembler, $sz, $src, $dst, { + binop_gpr_gpr!($ins, $assembler, $sz, $src, $dst, { + binop_gpr_mem!($ins, $assembler, $sz, $src, $dst, { + binop_mem_gpr!($ins, $assembler, $sz, $src, $dst, $otherwise) + }) + }) + }) + }) }; } @@ -506,73 +493,69 @@ impl Emitter for Assembler { } fn emit_mov(&mut self, sz: Size, src: Location, dst: Location) { - binop_all_nofp!( - mov, self, sz, src, dst, - {binop_imm64_gpr!( - mov, self, sz, src, dst, - { - match (sz, src, dst) { - (Size::S8, Location::GPR(src), Location::Memory(dst, disp)) => { - dynasm!(self ; mov [Rq(dst as u8) + disp], Rb(src as u8)); - } - (Size::S8, Location::Memory(src, disp), Location::GPR(dst)) => { - dynasm!(self ; mov Rb(dst as u8), [Rq(src as u8) + disp]); - } - (Size::S8, Location::Imm32(src), Location::Memory(dst, disp)) => { - dynasm!(self ; mov BYTE [Rq(dst as u8) + disp], src as i8); - } - (Size::S16, Location::GPR(src), Location::Memory(dst, disp)) => { - dynasm!(self ; mov [Rq(dst as u8) + disp], Rw(src as u8)); - } - (Size::S16, Location::Memory(src, disp), Location::GPR(dst)) => { - dynasm!(self ; mov Rw(dst as u8), [Rq(src as u8) + disp]); - } - (Size::S16, Location::Imm32(src), Location::Memory(dst, disp)) => { - dynasm!(self ; mov WORD [Rq(dst as u8) + disp], src as i16); - } - (Size::S32, Location::GPR(src), Location::XMM(dst)) => { - dynasm!(self ; movd Rx(dst as u8), Rd(src as u8)); - }, - (Size::S32, Location::XMM(src), Location::GPR(dst)) => { - dynasm!(self ; movd Rd(dst as u8), Rx(src as u8)); - }, - (Size::S32, Location::Memory(src, disp), Location::XMM(dst)) => { - dynasm!(self ; movd Rx(dst as u8), [Rq(src as u8) + disp]); - }, - (Size::S32, Location::XMM(src), Location::Memory(dst, disp)) => { - dynasm!(self ; movd [Rq(dst as u8) + disp], Rx(src as u8)); - }, - - (Size::S64, Location::GPR(src), Location::XMM(dst)) => { - dynasm!(self ; movq Rx(dst as u8), Rq(src as u8)); - }, - (Size::S64, Location::XMM(src), Location::GPR(dst)) => { - dynasm!(self ; movq Rq(dst as u8), Rx(src as u8)); - }, - (Size::S64, Location::Memory(src, disp), Location::XMM(dst)) => { - dynasm!(self ; movq Rx(dst as u8), [Rq(src as u8) + disp]); - }, - (Size::S64, Location::XMM(src), Location::Memory(dst, disp)) => { - dynasm!(self ; movq [Rq(dst as u8) + disp], Rx(src as u8)); - }, - (_, Location::XMM(src), Location::XMM(dst)) => { - dynasm!(self ; movq Rx(dst as u8), Rx(src as u8)); - }, - - _ => panic!("MOV {:?} {:?} {:?}", sz, src, dst), + binop_all_nofp!(mov, self, sz, src, dst, { + binop_imm64_gpr!(mov, self, sz, src, dst, { + match (sz, src, dst) { + (Size::S8, Location::GPR(src), Location::Memory(dst, disp)) => { + dynasm!(self ; mov [Rq(dst as u8) + disp], Rb(src as u8)); } + (Size::S8, Location::Memory(src, disp), Location::GPR(dst)) => { + dynasm!(self ; mov Rb(dst as u8), [Rq(src as u8) + disp]); + } + (Size::S8, Location::Imm32(src), Location::Memory(dst, disp)) => { + dynasm!(self ; mov BYTE [Rq(dst as u8) + disp], src as i8); + } + (Size::S16, Location::GPR(src), Location::Memory(dst, disp)) => { + dynasm!(self ; mov [Rq(dst as u8) + disp], Rw(src as u8)); + } + (Size::S16, Location::Memory(src, disp), Location::GPR(dst)) => { + dynasm!(self ; mov Rw(dst as u8), [Rq(src as u8) + disp]); + } + (Size::S16, Location::Imm32(src), Location::Memory(dst, disp)) => { + dynasm!(self ; mov WORD [Rq(dst as u8) + disp], src as i16); + } + (Size::S32, Location::GPR(src), Location::XMM(dst)) => { + dynasm!(self ; movd Rx(dst as u8), Rd(src as u8)); + } + (Size::S32, Location::XMM(src), Location::GPR(dst)) => { + dynasm!(self ; movd Rd(dst as u8), Rx(src as u8)); + } + (Size::S32, Location::Memory(src, disp), Location::XMM(dst)) => { + dynasm!(self ; movd Rx(dst as u8), [Rq(src as u8) + disp]); + } + (Size::S32, Location::XMM(src), Location::Memory(dst, disp)) => { + dynasm!(self ; movd [Rq(dst as u8) + disp], Rx(src as u8)); + } + + (Size::S64, Location::GPR(src), Location::XMM(dst)) => { + dynasm!(self ; movq Rx(dst as u8), Rq(src as u8)); + } + (Size::S64, Location::XMM(src), Location::GPR(dst)) => { + dynasm!(self ; movq Rq(dst as u8), Rx(src as u8)); + } + (Size::S64, Location::Memory(src, disp), Location::XMM(dst)) => { + dynasm!(self ; movq Rx(dst as u8), [Rq(src as u8) + disp]); + } + (Size::S64, Location::XMM(src), Location::Memory(dst, disp)) => { + dynasm!(self ; movq [Rq(dst as u8) + disp], Rx(src as u8)); + } + (_, Location::XMM(src), Location::XMM(dst)) => { + dynasm!(self ; movq Rx(dst as u8), Rx(src as u8)); + } + + _ => panic!("MOV {:?} {:?} {:?}", sz, src, dst), } - )} - ); + }) + }); } fn emit_lea(&mut self, sz: Size, src: Location, dst: Location) { match (sz, src, dst) { (Size::S32, Location::Memory(src, disp), Location::GPR(dst)) => { dynasm!(self ; lea Rd(dst as u8), [Rq(src as u8) + disp]); - }, + } (Size::S64, Location::Memory(src, disp), Location::GPR(dst)) => { dynasm!(self ; lea Rq(dst as u8), [Rq(src as u8) + disp]); - }, + } _ => unreachable!(), } } @@ -580,7 +563,7 @@ impl Emitter for Assembler { match dst { Location::GPR(x) => { dynasm!(self ; lea Rq(x as u8), [=>label]); - }, + } _ => unreachable!(), } } @@ -591,7 +574,7 @@ impl Emitter for Assembler { dynasm!(self ; cqo); } fn emit_xor(&mut self, sz: Size, src: Location, dst: Location) { - binop_all_nofp!(xor, self, sz, src, dst, {unreachable!()}); + binop_all_nofp!(xor, self, sz, src, dst, { unreachable!() }); } fn emit_jmp(&mut self, condition: Condition, label: Self::Label) { match condition { @@ -645,22 +628,26 @@ impl Emitter for Assembler { Condition::Equal => dynasm!(self ; sete Rb(dst as u8)), Condition::NotEqual => dynasm!(self ; setne Rb(dst as u8)), Condition::Signed => dynasm!(self ; sets Rb(dst as u8)), - _ => unreachable!() + _ => unreachable!(), } } fn emit_push(&mut self, sz: Size, src: Location) { match (sz, src) { (Size::S64, Location::Imm32(src)) => dynasm!(self ; push src as i32), (Size::S64, Location::GPR(src)) => dynasm!(self ; push Rq(src as u8)), - (Size::S64, Location::Memory(src, disp)) => dynasm!(self ; push QWORD [Rq(src as u8) + disp]), - _ => panic!("push {:?} {:?}", sz, src) + (Size::S64, Location::Memory(src, disp)) => { + dynasm!(self ; push QWORD [Rq(src as u8) + disp]) + } + _ => panic!("push {:?} {:?}", sz, src), } } fn emit_pop(&mut self, sz: Size, dst: Location) { match (sz, dst) { (Size::S64, Location::GPR(dst)) => dynasm!(self ; pop Rq(dst as u8)), - (Size::S64, Location::Memory(dst, disp)) => dynasm!(self ; pop QWORD [Rq(dst as u8) + disp]), - _ => panic!("pop {:?} {:?}", sz, dst) + (Size::S64, Location::Memory(dst, disp)) => { + dynasm!(self ; pop QWORD [Rq(dst as u8) + disp]) + } + _ => panic!("pop {:?} {:?}", sz, dst), } } fn emit_cmp(&mut self, sz: Size, left: Location, right: Location) { @@ -669,14 +656,14 @@ impl Emitter for Assembler { }); } fn emit_add(&mut self, sz: Size, src: Location, dst: Location) { - binop_all_nofp!(add, self, sz, src, dst, {unreachable!()}); + binop_all_nofp!(add, self, sz, src, dst, { unreachable!() }); } fn emit_sub(&mut self, sz: Size, src: Location, dst: Location) { - binop_all_nofp!(sub, self, sz, src, dst, {unreachable!()}); + binop_all_nofp!(sub, self, sz, src, dst, { unreachable!() }); } fn emit_imul(&mut self, sz: Size, src: Location, dst: Location) { binop_gpr_gpr!(imul, self, sz, src, dst, { - binop_mem_gpr!(imul, self, sz, src, dst, {unreachable!()}) + binop_mem_gpr!(imul, self, sz, src, dst, { unreachable!() }) }); } fn emit_imul_imm32_gpr64(&mut self, src: u32, dst: GPR) { @@ -704,87 +691,87 @@ impl Emitter for Assembler { binop_shift!(ror, self, sz, src, dst, { unreachable!() }); } fn emit_and(&mut self, sz: Size, src: Location, dst: Location) { - binop_all_nofp!(and, self, sz, src, dst, {unreachable!()}); + binop_all_nofp!(and, self, sz, src, dst, { unreachable!() }); } fn emit_or(&mut self, sz: Size, src: Location, dst: Location) { - binop_all_nofp!(or, self, sz, src, dst, {unreachable!()}); + binop_all_nofp!(or, self, sz, src, dst, { unreachable!() }); } fn emit_lzcnt(&mut self, sz: Size, src: Location, dst: Location) { binop_gpr_gpr!(lzcnt, self, sz, src, dst, { - binop_mem_gpr!(lzcnt, self, sz, src, dst, {unreachable!()}) + binop_mem_gpr!(lzcnt, self, sz, src, dst, { unreachable!() }) }); } fn emit_tzcnt(&mut self, sz: Size, src: Location, dst: Location) { binop_gpr_gpr!(tzcnt, self, sz, src, dst, { - binop_mem_gpr!(tzcnt, self, sz, src, dst, {unreachable!()}) + binop_mem_gpr!(tzcnt, self, sz, src, dst, { unreachable!() }) }); } fn emit_popcnt(&mut self, sz: Size, src: Location, dst: Location) { binop_gpr_gpr!(popcnt, self, sz, src, dst, { - binop_mem_gpr!(popcnt, self, sz, src, dst, {unreachable!()}) + binop_mem_gpr!(popcnt, self, sz, src, dst, { unreachable!() }) }); } fn emit_movzx(&mut self, sz_src: Size, src: Location, sz_dst: Size, dst: Location) { match (sz_src, src, sz_dst, dst) { (Size::S8, Location::GPR(src), Size::S32, Location::GPR(dst)) => { - dynasm!(self ; movzx Rd(dst as u8), Rb(src as u8)); - }, + dynasm!(self ; movzx Rd(dst as u8), Rb(src as u8)); + } (Size::S16, Location::GPR(src), Size::S32, Location::GPR(dst)) => { - dynasm!(self ; movzx Rd(dst as u8), Rw(src as u8)); - }, + dynasm!(self ; movzx Rd(dst as u8), Rw(src as u8)); + } (Size::S8, Location::Memory(src, disp), Size::S32, Location::GPR(dst)) => { - dynasm!(self ; movzx Rd(dst as u8), BYTE [Rq(src as u8) + disp]); - }, + dynasm!(self ; movzx Rd(dst as u8), BYTE [Rq(src as u8) + disp]); + } (Size::S16, Location::Memory(src, disp), Size::S32, Location::GPR(dst)) => { - dynasm!(self ; movzx Rd(dst as u8), WORD [Rq(src as u8) + disp]); - }, + dynasm!(self ; movzx Rd(dst as u8), WORD [Rq(src as u8) + disp]); + } (Size::S8, Location::GPR(src), Size::S64, Location::GPR(dst)) => { - dynasm!(self ; movzx Rq(dst as u8), Rb(src as u8)); - }, + dynasm!(self ; movzx Rq(dst as u8), Rb(src as u8)); + } (Size::S16, Location::GPR(src), Size::S64, Location::GPR(dst)) => { - dynasm!(self ; movzx Rq(dst as u8), Rw(src as u8)); - }, + dynasm!(self ; movzx Rq(dst as u8), Rw(src as u8)); + } (Size::S8, Location::Memory(src, disp), Size::S64, Location::GPR(dst)) => { - dynasm!(self ; movzx Rq(dst as u8), BYTE [Rq(src as u8) + disp]); - }, + dynasm!(self ; movzx Rq(dst as u8), BYTE [Rq(src as u8) + disp]); + } (Size::S16, Location::Memory(src, disp), Size::S64, Location::GPR(dst)) => { - dynasm!(self ; movzx Rq(dst as u8), WORD [Rq(src as u8) + disp]); - }, + dynasm!(self ; movzx Rq(dst as u8), WORD [Rq(src as u8) + disp]); + } _ => unreachable!(), } } fn emit_movsx(&mut self, sz_src: Size, src: Location, sz_dst: Size, dst: Location) { match (sz_src, src, sz_dst, dst) { (Size::S8, Location::GPR(src), Size::S32, Location::GPR(dst)) => { - dynasm!(self ; movsx Rd(dst as u8), Rb(src as u8)); - }, + dynasm!(self ; movsx Rd(dst as u8), Rb(src as u8)); + } (Size::S16, Location::GPR(src), Size::S32, Location::GPR(dst)) => { - dynasm!(self ; movsx Rd(dst as u8), Rw(src as u8)); - }, + dynasm!(self ; movsx Rd(dst as u8), Rw(src as u8)); + } (Size::S8, Location::Memory(src, disp), Size::S32, Location::GPR(dst)) => { - dynasm!(self ; movsx Rd(dst as u8), BYTE [Rq(src as u8) + disp]); - }, + dynasm!(self ; movsx Rd(dst as u8), BYTE [Rq(src as u8) + disp]); + } (Size::S16, Location::Memory(src, disp), Size::S32, Location::GPR(dst)) => { - dynasm!(self ; movsx Rd(dst as u8), WORD [Rq(src as u8) + disp]); - }, + dynasm!(self ; movsx Rd(dst as u8), WORD [Rq(src as u8) + disp]); + } (Size::S8, Location::GPR(src), Size::S64, Location::GPR(dst)) => { - dynasm!(self ; movsx Rq(dst as u8), Rb(src as u8)); - }, + dynasm!(self ; movsx Rq(dst as u8), Rb(src as u8)); + } (Size::S16, Location::GPR(src), Size::S64, Location::GPR(dst)) => { - dynasm!(self ; movsx Rq(dst as u8), Rw(src as u8)); - }, + dynasm!(self ; movsx Rq(dst as u8), Rw(src as u8)); + } (Size::S32, Location::GPR(src), Size::S64, Location::GPR(dst)) => { - dynasm!(self ; movsx Rq(dst as u8), Rd(src as u8)); - }, + dynasm!(self ; movsx Rq(dst as u8), Rd(src as u8)); + } (Size::S8, Location::Memory(src, disp), Size::S64, Location::GPR(dst)) => { - dynasm!(self ; movsx Rq(dst as u8), BYTE [Rq(src as u8) + disp]); - }, + dynasm!(self ; movsx Rq(dst as u8), BYTE [Rq(src as u8) + disp]); + } (Size::S16, Location::Memory(src, disp), Size::S64, Location::GPR(dst)) => { - dynasm!(self ; movsx Rq(dst as u8), WORD [Rq(src as u8) + disp]); - }, + dynasm!(self ; movsx Rq(dst as u8), WORD [Rq(src as u8) + disp]); + } (Size::S32, Location::Memory(src, disp), Size::S64, Location::GPR(dst)) => { - dynasm!(self ; movsx Rq(dst as u8), DWORD [Rq(src as u8) + disp]); - }, + dynasm!(self ; movsx Rq(dst as u8), DWORD [Rq(src as u8) + disp]); + } _ => unreachable!(), } } @@ -864,42 +851,54 @@ impl Emitter for Assembler { fn emit_ucomiss(&mut self, src: XMMOrMemory, dst: XMM) { match src { XMMOrMemory::XMM(x) => dynasm!(self ; ucomiss Rx(dst as u8), Rx(x as u8)), - XMMOrMemory::Memory(base, disp) => dynasm!(self ; ucomiss Rx(dst as u8), [Rq(base as u8) + disp]), + XMMOrMemory::Memory(base, disp) => { + dynasm!(self ; ucomiss Rx(dst as u8), [Rq(base as u8) + disp]) + } } } fn emit_ucomisd(&mut self, src: XMMOrMemory, dst: XMM) { match src { XMMOrMemory::XMM(x) => dynasm!(self ; ucomisd Rx(dst as u8), Rx(x as u8)), - XMMOrMemory::Memory(base, disp) => dynasm!(self ; ucomisd Rx(dst as u8), [Rq(base as u8) + disp]), + XMMOrMemory::Memory(base, disp) => { + dynasm!(self ; ucomisd Rx(dst as u8), [Rq(base as u8) + disp]) + } } } fn emit_cvttss2si_32(&mut self, src: XMMOrMemory, dst: GPR) { match src { XMMOrMemory::XMM(x) => dynasm!(self ; cvttss2si Rd(dst as u8), Rx(x as u8)), - XMMOrMemory::Memory(base, disp) => dynasm!(self ; cvttss2si Rd(dst as u8), [Rq(base as u8) + disp]), + XMMOrMemory::Memory(base, disp) => { + dynasm!(self ; cvttss2si Rd(dst as u8), [Rq(base as u8) + disp]) + } } } fn emit_cvttss2si_64(&mut self, src: XMMOrMemory, dst: GPR) { match src { XMMOrMemory::XMM(x) => dynasm!(self ; cvttss2si Rq(dst as u8), Rx(x as u8)), - XMMOrMemory::Memory(base, disp) => dynasm!(self ; cvttss2si Rq(dst as u8), [Rq(base as u8) + disp]), + XMMOrMemory::Memory(base, disp) => { + dynasm!(self ; cvttss2si Rq(dst as u8), [Rq(base as u8) + disp]) + } } } fn emit_cvttsd2si_32(&mut self, src: XMMOrMemory, dst: GPR) { match src { XMMOrMemory::XMM(x) => dynasm!(self ; cvttsd2si Rd(dst as u8), Rx(x as u8)), - XMMOrMemory::Memory(base, disp) => dynasm!(self ; cvttsd2si Rd(dst as u8), [Rq(base as u8) + disp]), + XMMOrMemory::Memory(base, disp) => { + dynasm!(self ; cvttsd2si Rd(dst as u8), [Rq(base as u8) + disp]) + } } } fn emit_cvttsd2si_64(&mut self, src: XMMOrMemory, dst: GPR) { match src { XMMOrMemory::XMM(x) => dynasm!(self ; cvttsd2si Rq(dst as u8), Rx(x as u8)), - XMMOrMemory::Memory(base, disp) => dynasm!(self ; cvttsd2si Rq(dst as u8), [Rq(base as u8) + disp]), + XMMOrMemory::Memory(base, disp) => { + dynasm!(self ; cvttsd2si Rq(dst as u8), [Rq(base as u8) + disp]) + } } } @@ -924,4 +923,4 @@ impl Emitter for Assembler { _ => unreachable!(), } } -} \ No newline at end of file +} diff --git a/lib/dynasm-backend/src/lib.rs b/lib/dynasm-backend/src/lib.rs index fb248044e..411e2107a 100644 --- a/lib/dynasm-backend/src/lib.rs +++ b/lib/dynasm-backend/src/lib.rs @@ -20,10 +20,10 @@ extern crate smallvec; mod codegen; mod codegen_x64; -mod parse; -mod protect_unix; mod emitter_x64; mod machine; +mod parse; +mod protect_unix; use crate::codegen::{CodegenError, ModuleCodeGenerator}; use crate::parse::LoadError; diff --git a/lib/dynasm-backend/src/machine.rs b/lib/dynasm-backend/src/machine.rs index 7755b9f85..bd2e43fc0 100644 --- a/lib/dynasm-backend/src/machine.rs +++ b/lib/dynasm-backend/src/machine.rs @@ -1,7 +1,7 @@ use crate::emitter_x64::*; +use smallvec::SmallVec; use std::collections::HashSet; use wasmparser::Type as WpType; -use smallvec::SmallVec; struct MachineStackOffset(usize); @@ -39,39 +39,28 @@ impl Machine { } /// Picks an unused general purpose register for local/stack/argument use. - /// + /// /// This method does not mark the register as used. pub fn pick_gpr(&self) -> Option { use GPR::*; - static REGS: &'static [GPR] = &[ - RSI, - RDI, - R8, - R9, - R10, - R11, - ]; + static REGS: &'static [GPR] = &[RSI, RDI, R8, R9, R10, R11]; for r in REGS { if !self.used_gprs.contains(r) { - return Some(*r) + return Some(*r); } } None } /// Picks an unused general purpose register for internal temporary use. - /// + /// /// This method does not mark the register as used. pub fn pick_temp_gpr(&self) -> Option { use GPR::*; - static REGS: &'static [GPR] = &[ - RAX, - RCX, - RDX, - ]; + static REGS: &'static [GPR] = &[RAX, RCX, RDX]; for r in REGS { if !self.used_gprs.contains(r) { - return Some(*r) + return Some(*r); } } None @@ -92,38 +81,28 @@ impl Machine { } /// Picks an unused XMM register. - /// + /// /// This method does not mark the register as used. pub fn pick_xmm(&self) -> Option { use XMM::*; - static REGS: &'static [XMM] = &[ - XMM3, - XMM4, - XMM5, - XMM6, - XMM7, - ]; + static REGS: &'static [XMM] = &[XMM3, XMM4, XMM5, XMM6, XMM7]; for r in REGS { if !self.used_xmms.contains(r) { - return Some(*r) + return Some(*r); } } None } /// Picks an unused XMM register for internal temporary use. - /// + /// /// This method does not mark the register as used. pub fn pick_temp_xmm(&self) -> Option { use XMM::*; - static REGS: &'static [XMM] = &[ - XMM0, - XMM1, - XMM2, - ]; + static REGS: &'static [XMM] = &[XMM0, XMM1, XMM2]; for r in REGS { if !self.used_xmms.contains(r) { - return Some(*r) + return Some(*r); } } None @@ -144,7 +123,7 @@ impl Machine { } /// Acquires locations from the machine state. - /// + /// /// If the returned locations are used for stack value, `release_location` needs to be called on them; /// Otherwise, if the returned locations are used for locals, `release_location` does not need to be called on them. pub fn acquire_locations( @@ -158,15 +137,11 @@ impl Machine { for ty in tys { let loc = match *ty { - WpType::F32 | WpType::F64 => { - self.pick_xmm().map(Location::XMM) - }, - WpType::I32 | WpType::I64 => { - self.pick_gpr().map(Location::GPR) - }, - _ => unreachable!() + WpType::F32 | WpType::F64 => self.pick_xmm().map(Location::XMM), + WpType::I32 | WpType::I64 => self.pick_gpr().map(Location::GPR), + _ => unreachable!(), }; - + let loc = if let Some(x) = loc { x } else { @@ -183,7 +158,11 @@ impl Machine { } if delta_stack_offset != 0 { - assembler.emit_sub(Size::S64, Location::Imm32(delta_stack_offset as u32), Location::GPR(GPR::RSP)); + assembler.emit_sub( + Size::S64, + Location::Imm32(delta_stack_offset as u32), + Location::GPR(GPR::RSP), + ); } if zeroed { for i in 0..tys.len() { @@ -194,21 +173,17 @@ impl Machine { } /// Releases locations used for stack value. - pub fn release_locations( - &mut self, - assembler: &mut E, - locs: &[Location] - ) { + pub fn release_locations(&mut self, assembler: &mut E, locs: &[Location]) { let mut delta_stack_offset: usize = 0; for loc in locs.iter().rev() { match *loc { Location::GPR(ref x) => { assert_eq!(self.used_gprs.remove(x), true); - }, + } Location::XMM(ref x) => { assert_eq!(self.used_xmms.remove(x), true); - }, + } Location::Memory(GPR::RBP, x) => { if x >= 0 { unreachable!(); @@ -219,28 +194,29 @@ impl Machine { } self.stack_offset.0 -= 8; delta_stack_offset += 8; - }, + } _ => {} } } if delta_stack_offset != 0 { - assembler.emit_add(Size::S64, Location::Imm32(delta_stack_offset as u32), Location::GPR(GPR::RSP)); + assembler.emit_add( + Size::S64, + Location::Imm32(delta_stack_offset as u32), + Location::GPR(GPR::RSP), + ); } } - pub fn release_locations_only_regs( - &mut self, - locs: &[Location] - ) { + pub fn release_locations_only_regs(&mut self, locs: &[Location]) { for loc in locs.iter().rev() { match *loc { Location::GPR(ref x) => { assert_eq!(self.used_gprs.remove(x), true); - }, + } Location::XMM(ref x) => { assert_eq!(self.used_xmms.remove(x), true); - }, + } _ => {} } } @@ -249,7 +225,7 @@ impl Machine { pub fn release_locations_only_stack( &mut self, assembler: &mut E, - locs: &[Location] + locs: &[Location], ) { let mut delta_stack_offset: usize = 0; @@ -265,21 +241,21 @@ impl Machine { } self.stack_offset.0 -= 8; delta_stack_offset += 8; - }, + } _ => {} } } if delta_stack_offset != 0 { - assembler.emit_add(Size::S64, Location::Imm32(delta_stack_offset as u32), Location::GPR(GPR::RSP)); + assembler.emit_add( + Size::S64, + Location::Imm32(delta_stack_offset as u32), + Location::GPR(GPR::RSP), + ); } } - pub fn release_locations_keep_state( - &self, - assembler: &mut E, - locs: &[Location] - ) { + pub fn release_locations_keep_state(&self, assembler: &mut E, locs: &[Location]) { let mut delta_stack_offset: usize = 0; for loc in locs.iter().rev() { @@ -293,17 +269,26 @@ impl Machine { unreachable!(); } delta_stack_offset += 8; - }, + } _ => {} } } if delta_stack_offset != 0 { - assembler.emit_add(Size::S64, Location::Imm32(delta_stack_offset as u32), Location::GPR(GPR::RSP)); + assembler.emit_add( + Size::S64, + Location::Imm32(delta_stack_offset as u32), + Location::GPR(GPR::RSP), + ); } } - pub fn init_locals(&mut self, a: &mut E, n: usize, n_params: usize) -> Vec { + pub fn init_locals( + &mut self, + a: &mut E, + n: usize, + n_params: usize, + ) -> Vec { // Use callee-saved registers for locals. fn get_local_location(idx: usize) -> Location { match idx { @@ -315,7 +300,7 @@ impl Machine { } } - let mut locations: Vec = vec! []; + let mut locations: Vec = vec![]; let mut allocated: usize = 0; // Determine locations for parameters. @@ -326,7 +311,7 @@ impl Machine { let old_idx = allocated; allocated += 1; get_local_location(old_idx) - }, + } Location::Memory(_, _) => loc, _ => unreachable!(), }); @@ -339,16 +324,21 @@ impl Machine { } // How many machine stack slots did all the locals use? - let num_mem_slots = locations.iter().filter(|&&loc| { - match loc { + let num_mem_slots = locations + .iter() + .filter(|&&loc| match loc { Location::Memory(_, _) => true, _ => false, - } - }).count(); + }) + .count(); // Move RSP down to reserve space for machine stack slots. if num_mem_slots > 0 { - a.emit_sub(Size::S64, Location::Imm32((num_mem_slots * 8) as u32), Location::GPR(GPR::RSP)); + a.emit_sub( + Size::S64, + Location::Imm32((num_mem_slots * 8) as u32), + Location::GPR(GPR::RSP), + ); self.stack_offset.0 += num_mem_slots * 8; } @@ -373,13 +363,17 @@ impl Machine { match loc { Location::GPR(_) => { a.emit_mov(Size::S64, loc, locations[i]); - }, - _ => break + } + _ => break, } } // Load vmctx. - a.emit_mov(Size::S64, Self::get_param_location(0), Location::GPR(GPR::R15)); + a.emit_mov( + Size::S64, + Self::get_param_location(0), + Location::GPR(GPR::R15), + ); // Initialize all normal locals to zero. for i in n_params..n { @@ -391,7 +385,14 @@ impl Machine { pub fn finalize_locals(&mut self, a: &mut E, locations: &[Location]) { // Unwind stack to the "save area". - a.emit_lea(Size::S64, Location::Memory(GPR::RBP, -(self.save_area_offset.as_ref().unwrap().0 as i32)), Location::GPR(GPR::RSP)); + a.emit_lea( + Size::S64, + Location::Memory( + GPR::RBP, + -(self.save_area_offset.as_ref().unwrap().0 as i32), + ), + Location::GPR(GPR::RSP), + ); // Restore R15 used by vmctx. a.emit_pop(Size::S64, Location::GPR(GPR::R15)); @@ -404,9 +405,7 @@ impl Machine { } } - pub fn get_param_location( - idx: usize - ) -> Location { + pub fn get_param_location(idx: usize) -> Location { match idx { 0 => Location::GPR(GPR::RDI), 1 => Location::GPR(GPR::RSI), From b6150d5881f6a53b32c2241fea044c3172001817 Mon Sep 17 00:00:00 2001 From: Syrus Akbary Date: Wed, 10 Apr 2019 19:31:42 -0700 Subject: [PATCH 204/413] Re-enable testing test-emscripten-nightly --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 00d74cfcd..3490bf6b5 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -275,7 +275,7 @@ jobs: make test make test-nightly make test-emscripten-clif - # make test-emscripten-nightly + make test-emscripten-nightly - save_cache: paths: - /usr/local/cargo/registry From 7e20575e5b85ff2e0079c712d46d5d6bfa99261e Mon Sep 17 00:00:00 2001 From: losfair Date: Thu, 11 Apr 2019 11:41:32 +0800 Subject: [PATCH 205/413] Implement get_wasm_trampoline --- lib/dynasm-backend/src/codegen_x64.rs | 50 ++++++++++++++++++++++++--- 1 file changed, 45 insertions(+), 5 deletions(-) diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index 5d5c2266f..494e609e3 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -27,7 +27,7 @@ use wasmer_runtime_core::{ use wasmparser::{Operator, Type as WpType}; lazy_static! { - static ref CONSTRUCT_STACK_AND_CALL_WASM: unsafe extern "C" fn (stack_top: *const u8, stack_base: *const u8, ctx: *mut vm::Ctx, target: *const vm::Func) -> u64 = { + static ref CONSTRUCT_STACK_AND_CALL_WASM: unsafe extern "C" fn (stack_top: *const u64, stack_base: *const u64, ctx: *mut vm::Ctx, target: *const vm::Func) -> u64 = { let mut assembler = Assembler::new().unwrap(); let offset = assembler.offset(); dynasm!( @@ -157,6 +157,7 @@ pub struct X64ExecutionContext { code: ExecutableBuffer, functions: Vec, function_pointers: Vec, + signatures: Arc>, _br_table_data: Vec>, func_import_count: usize, } @@ -230,8 +231,8 @@ impl ProtectedCaller for X64ExecutionContext { let ret = unsafe { protect_unix::call_protected(|| { CONSTRUCT_STACK_AND_CALL_WASM( - buffer.as_ptr() as *const u8, - buffer.as_ptr().offset(buffer.len() as isize) as *const u8, + buffer.as_ptr(), + buffer.as_ptr().offset(buffer.len() as isize), _vmctx, ptr as _, ) @@ -250,8 +251,46 @@ impl ProtectedCaller for X64ExecutionContext { }) } - fn get_wasm_trampoline(&self, _module: &ModuleInner, _sig_index: SigIndex) -> Option { - unimplemented!() + fn get_wasm_trampoline(&self, module: &ModuleInner, sig_index: SigIndex) -> Option { + use wasmer_runtime_core::typed_func::WasmTrapInfo; + use std::ffi::c_void; + + unsafe extern "C" fn invoke( + trampoline: unsafe extern "C" fn(*mut vm::Ctx, NonNull, *const u64, *mut u64), + ctx: *mut vm::Ctx, + func: NonNull, + args: *const u64, + rets: *mut u64, + trap_info: *mut WasmTrapInfo, + num_params_plus_one: Option>, + ) -> bool { + let args = ::std::slice::from_raw_parts(args, num_params_plus_one.unwrap().as_ptr() as usize - 1); + let args_reverse: SmallVec<[u64; 8]> = args.iter().cloned().rev().collect(); + match protect_unix::call_protected(|| { + CONSTRUCT_STACK_AND_CALL_WASM( + args_reverse.as_ptr(), + args_reverse.as_ptr().offset(args_reverse.len() as isize), + ctx, + func.as_ptr(), + ) + }) { + Ok(x) => { + *rets = x; + true + }, + Err(_) => false + } + } + + unsafe extern "C" fn dummy_trampoline(_: *mut vm::Ctx, _: NonNull, _: *const u64, _: *mut u64) { unreachable!() } + + Some(unsafe { + Wasm::from_raw_parts( + dummy_trampoline, + invoke, + NonNull::new((self.signatures.get(sig_index).unwrap().params().len() + 1) as _), // +1 to keep it non-zero + ) + }) } fn get_early_trapper(&self) -> Box { @@ -384,6 +423,7 @@ impl ModuleCodeGenerator Date: Thu, 11 Apr 2019 11:52:57 +0800 Subject: [PATCH 206/413] Fix longjmp. --- lib/dynasm-backend/src/codegen_x64.rs | 5 ++-- lib/dynasm-backend/src/protect_unix.rs | 38 +++++++++++++++++--------- 2 files changed, 28 insertions(+), 15 deletions(-) diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index 494e609e3..87042d36a 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -297,8 +297,9 @@ impl ProtectedCaller for X64ExecutionContext { pub struct Trapper; impl UserTrapper for Trapper { - unsafe fn do_early_trap(&self, _data: Box) -> ! { - panic!("do_early_trap"); + unsafe fn do_early_trap(&self, data: Box) -> ! { + protect_unix::TRAP_EARLY_DATA.with(|x| x.set(Some(data))); + protect_unix::trigger_trap(); } } diff --git a/lib/dynasm-backend/src/protect_unix.rs b/lib/dynasm-backend/src/protect_unix.rs index 616b68b10..b173276ba 100644 --- a/lib/dynasm-backend/src/protect_unix.rs +++ b/lib/dynasm-backend/src/protect_unix.rs @@ -16,6 +16,7 @@ use nix::sys::signal::{ use std::cell::{Cell, UnsafeCell}; use std::ptr; use std::sync::Once; +use std::any::Any; use wasmer_runtime_core::error::{RuntimeError, RuntimeResult}; extern "C" fn signal_trap_handler( @@ -52,6 +53,13 @@ thread_local! { pub static SETJMP_BUFFER: UnsafeCell<[c_int; SETJMP_BUFFER_LEN]> = UnsafeCell::new([0; SETJMP_BUFFER_LEN]); pub static CAUGHT_ADDRESSES: Cell<(*const c_void, *const c_void)> = Cell::new((ptr::null(), ptr::null())); pub static CURRENT_EXECUTABLE_BUFFER: Cell<*const c_void> = Cell::new(ptr::null()); + pub static TRAP_EARLY_DATA: Cell>> = Cell::new(None); +} + +pub unsafe fn trigger_trap() -> ! { + let jmp_buf = SETJMP_BUFFER.with(|buf| buf.get()); + + longjmp(jmp_buf as *mut c_void, 0) } pub fn call_protected(f: impl FnOnce() -> T) -> RuntimeResult { @@ -67,21 +75,25 @@ pub fn call_protected(f: impl FnOnce() -> T) -> RuntimeResult { if signum != 0 { *jmp_buf = prev_jmp_buf; - let (faulting_addr, _inst_ptr) = CAUGHT_ADDRESSES.with(|cell| cell.get()); + if let Some(data) = TRAP_EARLY_DATA.with(|cell| cell.replace(None)) { + Err(RuntimeError::Panic { data }) + } else { + let (faulting_addr, _inst_ptr) = CAUGHT_ADDRESSES.with(|cell| cell.get()); - let signal = match Signal::from_c_int(signum) { - Ok(SIGFPE) => "floating-point exception", - Ok(SIGILL) => "illegal instruction", - Ok(SIGSEGV) => "segmentation violation", - Ok(SIGBUS) => "bus error", - Err(_) => "error while getting the Signal", - _ => "unkown trapped signal", - }; - // When the trap-handler is fully implemented, this will return more information. - Err(RuntimeError::Trap { - msg: format!("unknown trap at {:p} - {}", faulting_addr, signal).into(), + let signal = match Signal::from_c_int(signum) { + Ok(SIGFPE) => "floating-point exception", + Ok(SIGILL) => "illegal instruction", + Ok(SIGSEGV) => "segmentation violation", + Ok(SIGBUS) => "bus error", + Err(_) => "error while getting the Signal", + _ => "unkown trapped signal", + }; + // When the trap-handler is fully implemented, this will return more information. + Err(RuntimeError::Trap { + msg: format!("unknown trap at {:p} - {}", faulting_addr, signal).into(), + } + .into()) } - .into()) } else { let ret = f(); // TODO: Switch stack? *jmp_buf = prev_jmp_buf; From 77c1bfa00516a3039d9f0542eef2bb9592f7b829 Mon Sep 17 00:00:00 2001 From: losfair Date: Thu, 11 Apr 2019 11:53:26 +0800 Subject: [PATCH 207/413] Cargo fmt --- lib/dynasm-backend/src/codegen_x64.rs | 24 +++++++++++++++++------- lib/dynasm-backend/src/protect_unix.rs | 2 +- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index 87042d36a..f9687a0ac 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -251,9 +251,9 @@ impl ProtectedCaller for X64ExecutionContext { }) } - fn get_wasm_trampoline(&self, module: &ModuleInner, sig_index: SigIndex) -> Option { - use wasmer_runtime_core::typed_func::WasmTrapInfo; - use std::ffi::c_void; + fn get_wasm_trampoline(&self, module: &ModuleInner, sig_index: SigIndex) -> Option { + use std::ffi::c_void; + use wasmer_runtime_core::typed_func::WasmTrapInfo; unsafe extern "C" fn invoke( trampoline: unsafe extern "C" fn(*mut vm::Ctx, NonNull, *const u64, *mut u64), @@ -264,7 +264,10 @@ impl ProtectedCaller for X64ExecutionContext { trap_info: *mut WasmTrapInfo, num_params_plus_one: Option>, ) -> bool { - let args = ::std::slice::from_raw_parts(args, num_params_plus_one.unwrap().as_ptr() as usize - 1); + let args = ::std::slice::from_raw_parts( + args, + num_params_plus_one.unwrap().as_ptr() as usize - 1, + ); let args_reverse: SmallVec<[u64; 8]> = args.iter().cloned().rev().collect(); match protect_unix::call_protected(|| { CONSTRUCT_STACK_AND_CALL_WASM( @@ -277,12 +280,19 @@ impl ProtectedCaller for X64ExecutionContext { Ok(x) => { *rets = x; true - }, - Err(_) => false + } + Err(_) => false, } } - unsafe extern "C" fn dummy_trampoline(_: *mut vm::Ctx, _: NonNull, _: *const u64, _: *mut u64) { unreachable!() } + unsafe extern "C" fn dummy_trampoline( + _: *mut vm::Ctx, + _: NonNull, + _: *const u64, + _: *mut u64, + ) { + unreachable!() + } Some(unsafe { Wasm::from_raw_parts( diff --git a/lib/dynasm-backend/src/protect_unix.rs b/lib/dynasm-backend/src/protect_unix.rs index b173276ba..918df5346 100644 --- a/lib/dynasm-backend/src/protect_unix.rs +++ b/lib/dynasm-backend/src/protect_unix.rs @@ -13,10 +13,10 @@ use libc::{c_int, c_void, siginfo_t}; use nix::sys::signal::{ sigaction, SaFlags, SigAction, SigHandler, SigSet, Signal, SIGBUS, SIGFPE, SIGILL, SIGSEGV, }; +use std::any::Any; use std::cell::{Cell, UnsafeCell}; use std::ptr; use std::sync::Once; -use std::any::Any; use wasmer_runtime_core::error::{RuntimeError, RuntimeResult}; extern "C" fn signal_trap_handler( From 527d32b00da497f555d0ac588a1b3753e88dfe67 Mon Sep 17 00:00:00 2001 From: Syrus Akbary Date: Wed, 10 Apr 2019 23:14:29 -0700 Subject: [PATCH 208/413] Added WASI to the integrations --- lib/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/README.md b/lib/README.md index 4c0008ee5..b8a99dd6d 100644 --- a/lib/README.md +++ b/lib/README.md @@ -22,7 +22,8 @@ The integration builds on the Wasmer runtime and allow us to run WebAssembly fil Wasmer intends to support different integrations: -- [emscripten](./emscripten): run Emscripten-generated WebAssembly files, such as [Lua](../examples/lua.wasm) or [nginx](../examples/nginx/nginx.wasm). +- [WASI](./wasi): run WebAssembly files with the [WASI ABI](https://hacks.mozilla.org/2019/03/standardizing-wasi-a-webassembly-system-interface/). +- [Emscripten](./emscripten): run Emscripten-generated WebAssembly files, such as [Lua](../examples/lua.wasm) or [nginx](../examples/nginx/nginx.wasm). - Go ABI: _we will work on this soon! Want to give us a hand? ✋_ - Blazor: _research period, see [tracking issue](https://github.com/wasmerio/wasmer/issues/97)_ From 394c56b2b488017b1259a9145802c4f497df0c91 Mon Sep 17 00:00:00 2001 From: losfair Date: Thu, 11 Apr 2019 18:59:00 +0800 Subject: [PATCH 209/413] Added missing was_unreachable check. --- lib/dynasm-backend/src/codegen_x64.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index f9687a0ac..c574bfc14 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -3127,7 +3127,7 @@ impl FunctionCodeGenerator for X64FunctionCode { Operator::Else => { let mut frame = self.control_stack.last_mut().unwrap(); - if frame.returns.len() > 0 { + if !was_unreachable && frame.returns.len() > 0 { let (loc, _) = *self.value_stack.last().unwrap(); Self::emit_relaxed_binop( a, From 71aaf2d3f828281651daa77f6a39f9d0cf31a27f Mon Sep 17 00:00:00 2001 From: Syrus Date: Thu, 11 Apr 2019 11:40:23 -0700 Subject: [PATCH 210/413] Updated cargo --- Cargo.lock | 1 + 1 file changed, 1 insertion(+) diff --git a/Cargo.lock b/Cargo.lock index 5f111b7b8..1e81b086e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2274,6 +2274,7 @@ dependencies = [ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "nix 0.13.0 (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.2.1", "wasmparser 0.28.0 (registry+https://github.com/rust-lang/crates.io-index)", ] From e986553d8be8cd3be94d05ff78120bd80a6a49d1 Mon Sep 17 00:00:00 2001 From: Syrus Date: Thu, 11 Apr 2019 11:44:07 -0700 Subject: [PATCH 211/413] Improved CircleCI config, use rust nightly for release --- .circleci/config.yml | 53 ++++++++++++++++++++++++++++---------------- Makefile | 7 +++--- 2 files changed, 37 insertions(+), 23 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 3490bf6b5..37a5b52c1 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -21,7 +21,8 @@ jobs: - checkout - restore_cache: keys: - - v6-lint-{{ arch }}-{{ checksum "Cargo.lock" }} + - v7-lint-{{ arch }}-{{ checksum "Cargo.lock" }} + - v7-lint-{{ arch }} - <<: *run_install_dependencies - run: name: Install lint deps @@ -40,7 +41,7 @@ jobs: - target/debug/.fingerprint - target/debug/build - target/debug/deps - key: v6-test-cargo-cache-linux-{{ arch }}-{{ checksum "Cargo.lock" }} + key: v7-lint-{{ arch }}-{{ checksum "Cargo.lock" }} test: docker: @@ -50,14 +51,17 @@ jobs: - checkout - restore_cache: keys: - - v6-test-cargo-cache-linux-{{ arch }}-{{ checksum "Cargo.lock" }} + - v7-test-cargo-cache-linux-stable-{{ arch }}-{{ checksum "Cargo.lock" }} + - v7-test-cargo-cache-linux-stable-{{ arch }} - <<: *run_install_dependencies - run: name: Tests command: make test - run: name: Emscripten Tests - command: make test-emscripten + command: | + make test-emscripten-clif + make test-emscripten-llvm - run: name: Integration Tests command: make integration-tests @@ -67,7 +71,7 @@ jobs: - target/debug/.fingerprint - target/debug/build - target/debug/deps - key: v6-test-cargo-cache-linux-{{ arch }}-{{ checksum "Cargo.lock" }} + key: v7-test-cargo-cache-linux-stable-{{ arch }}-{{ checksum "Cargo.lock" }} test-macos: macos: @@ -76,7 +80,8 @@ jobs: - checkout - restore_cache: keys: - - v6-cargo-cache-darwin-{{ arch }}-{{ checksum "Cargo.lock" }} + - v7-cargo-cache-darwin-stable-{{ arch }}-{{ checksum "Cargo.lock" }} + - v7-cargo-cache-darwin-stable-{{ arch }} - run: name: Install crate dependencies command: | @@ -112,7 +117,8 @@ jobs: # We increase the ulimit for fixing cargo unclosed files in mac ulimit -n 8000 sudo sysctl -w kern.maxfiles=655360 kern.maxfilesperproc=327680 - make test-emscripten + make test-emscripten-clif + make test-emscripten-llvm - run: name: Integration Tests command: | @@ -129,7 +135,7 @@ jobs: - target/release/.fingerprint - target/release/build - target/release/deps - key: v6-cargo-cache-darwin-{{ arch }}-{{ checksum "Cargo.lock" }} + key: v7-cargo-cache-darwin-stable-{{ arch }}-{{ checksum "Cargo.lock" }} test-and-build: docker: @@ -138,13 +144,16 @@ jobs: - checkout - restore_cache: keys: - - v6-cargo-cache-linux-{{ arch }}-{{ checksum "Cargo.lock" }} + - v7-cargo-cache-linux-nightly-{{ arch }}-{{ checksum "Cargo.lock" }} + - v7-cargo-cache-linux-nightly-{{ arch }} - run: name: Install dependencies command: | sudo apt-get install -y cmake curl -O https://releases.llvm.org/7.0.0/clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz tar xf clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz + # Use rust nightly (for dynasm, for now) + - run: rustup default nightly-2019-04-11 - run: name: Tests command: | @@ -154,7 +163,8 @@ jobs: name: Emscripten Tests command: | export LLVM_SYS_70_PREFIX="`pwd`/clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04/" - make test-emscripten + make test-emscripten-clif + make test-emscripten-llvm - run: name: Release Build command: | @@ -183,7 +193,7 @@ jobs: - target/release/.fingerprint - target/release/build - target/release/deps - key: v6-cargo-cache-linux-{{ arch }}-{{ checksum "Cargo.lock" }} + key: v7-cargo-cache-linux-nightly-{{ arch }}-{{ checksum "Cargo.lock" }} test-and-build-macos: macos: @@ -192,7 +202,8 @@ jobs: - checkout - restore_cache: keys: - - v6-cargo-cache-darwin-{{ arch }}-{{ checksum "Cargo.lock" }} + - v7-cargo-cache-darwin-nightly-{{ arch }}-{{ checksum "Cargo.lock" }} + - v7-cargo-cache-darwin-nightly-{{ arch }} - run: name: Install crate dependencies command: | @@ -209,6 +220,8 @@ jobs: curl https://sh.rustup.rs -sSf | sh -s -- -y export PATH="$HOME/.cargo/bin:$PATH" cargo --version + # Use rust nightly (for dynasm, for now) + - run: rustup default nightly-2019-04-11 - run: name: Tests command: | @@ -228,7 +241,8 @@ jobs: # We increase the ulimit for fixing cargo unclosed files in mac ulimit -n 8000 sudo sysctl -w kern.maxfiles=655360 kern.maxfilesperproc=327680 - make test-emscripten + make test-emscripten-clif + make test-emscripten-dynasm - run: name: Release Build command: | @@ -253,7 +267,7 @@ jobs: - target/release/.fingerprint - target/release/build - target/release/deps - key: v6-cargo-cache-darwin-{{ arch }}-{{ checksum "Cargo.lock" }} + key: v7-cargo-cache-darwin-nightly-{ arch }}-{{ checksum "Cargo.lock" }} test-rust-nightly: docker: @@ -262,27 +276,28 @@ jobs: - checkout - restore_cache: keys: - - v6-test-cargo-cache-linux-{{ arch }}-{{ checksum "Cargo.lock" }}-nightly + - v7-cargo-cache-linux-nightly-{{ arch }}-{{ checksum "Cargo.lock" }} + - v7-cargo-cache-linux-nightly-{{ arch }} - run: name: Install dependencies command: | sudo apt-get install -y cmake curl -O https://releases.llvm.org/7.0.0/clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz tar xf clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz - - run: rustup default nightly-2019-02-27 + - run: rustup default nightly-2019-04-11 - run: | export LLVM_SYS_70_PREFIX="`pwd`/clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04/" make test - make test-nightly + make test-dynasm make test-emscripten-clif - make test-emscripten-nightly + make test-emscripten-dynasm - save_cache: paths: - /usr/local/cargo/registry - target/debug/.fingerprint - target/debug/build - target/debug/deps - key: v6-test-cargo-cache-linux-{{ arch }}-{{ checksum "Cargo.lock" }}-nightly + key: v7-cargo-cache-linux-nightly-{{ arch }}-{{ checksum "Cargo.lock" }}-nightly publish-github-release: docker: diff --git a/Makefile b/Makefile index 383d4ccf4..947032873 100644 --- a/Makefile +++ b/Makefile @@ -41,17 +41,16 @@ test: cargo build -p wasmer-runtime-c-api cargo test -p wasmer-runtime-c-api -- --nocapture -test-nightly: +test-dynasm: cargo test --manifest-path lib/spectests/Cargo.toml --features dynasm -test-emscripten: - cargo test --manifest-path lib/emscripten/Cargo.toml --features clif -- --test-threads=1 $(runargs) +test-emscripten-llvm: cargo test --manifest-path lib/emscripten/Cargo.toml --features llvm -- --test-threads=1 $(runargs) test-emscripten-clif: cargo test --manifest-path lib/emscripten/Cargo.toml --features clif -- --test-threads=1 $(runargs) -test-emscripten-nightly: +test-emscripten-dynasm: cargo test --manifest-path lib/emscripten/Cargo.toml --features dynasm -- --test-threads=1 $(runargs) dynasm-debug-release: From 1f06e90729c7103beed7d247c4410bd0a3167d60 Mon Sep 17 00:00:00 2001 From: Syrus Date: Thu, 11 Apr 2019 11:51:28 -0700 Subject: [PATCH 212/413] Use better key for caching --- .circleci/config.yml | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 37a5b52c1..c588234dc 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -21,8 +21,8 @@ jobs: - checkout - restore_cache: keys: - - v7-lint-{{ arch }}-{{ checksum "Cargo.lock" }} - - v7-lint-{{ arch }} + - v8-lint-{{ arch }}-{{ checksum "Cargo.lock" }} + - v8-lint-{{ arch }} - <<: *run_install_dependencies - run: name: Install lint deps @@ -41,7 +41,7 @@ jobs: - target/debug/.fingerprint - target/debug/build - target/debug/deps - key: v7-lint-{{ arch }}-{{ checksum "Cargo.lock" }} + key: v8-lint-{{ arch }}-{{ checksum "Cargo.lock" }} test: docker: @@ -51,8 +51,8 @@ jobs: - checkout - restore_cache: keys: - - v7-test-cargo-cache-linux-stable-{{ arch }}-{{ checksum "Cargo.lock" }} - - v7-test-cargo-cache-linux-stable-{{ arch }} + - v8-test-cargo-cache-linux-stable-{{ arch }}-{{ checksum "Cargo.lock" }} + - v8-test-cargo-cache-linux-stable-{{ arch }} - <<: *run_install_dependencies - run: name: Tests @@ -71,7 +71,7 @@ jobs: - target/debug/.fingerprint - target/debug/build - target/debug/deps - key: v7-test-cargo-cache-linux-stable-{{ arch }}-{{ checksum "Cargo.lock" }} + key: v8-test-cargo-cache-linux-stable-{{ arch }}-{{ checksum "Cargo.lock" }} test-macos: macos: @@ -80,8 +80,8 @@ jobs: - checkout - restore_cache: keys: - - v7-cargo-cache-darwin-stable-{{ arch }}-{{ checksum "Cargo.lock" }} - - v7-cargo-cache-darwin-stable-{{ arch }} + - v8-cargo-cache-darwin-stable-{{ arch }}-{{ checksum "Cargo.lock" }} + - v8-cargo-cache-darwin-stable-{{ arch }} - run: name: Install crate dependencies command: | @@ -135,7 +135,7 @@ jobs: - target/release/.fingerprint - target/release/build - target/release/deps - key: v7-cargo-cache-darwin-stable-{{ arch }}-{{ checksum "Cargo.lock" }} + key: v8-cargo-cache-darwin-stable-{{ arch }}-{{ checksum "Cargo.lock" }} test-and-build: docker: @@ -144,8 +144,8 @@ jobs: - checkout - restore_cache: keys: - - v7-cargo-cache-linux-nightly-{{ arch }}-{{ checksum "Cargo.lock" }} - - v7-cargo-cache-linux-nightly-{{ arch }} + - v8-cargo-cache-linux-nightly-{{ arch }}-{{ checksum "Cargo.lock" }} + - v8-cargo-cache-linux-nightly-{{ arch }} - run: name: Install dependencies command: | @@ -193,7 +193,7 @@ jobs: - target/release/.fingerprint - target/release/build - target/release/deps - key: v7-cargo-cache-linux-nightly-{{ arch }}-{{ checksum "Cargo.lock" }} + key: v8-cargo-cache-linux-nightly-{{ arch }}-{{ checksum "Cargo.lock" }} test-and-build-macos: macos: @@ -202,8 +202,8 @@ jobs: - checkout - restore_cache: keys: - - v7-cargo-cache-darwin-nightly-{{ arch }}-{{ checksum "Cargo.lock" }} - - v7-cargo-cache-darwin-nightly-{{ arch }} + - v8-cargo-cache-darwin-nightly-{{ arch }}-{{ checksum "Cargo.lock" }} + - v8-cargo-cache-darwin-nightly-{{ arch }} - run: name: Install crate dependencies command: | @@ -267,7 +267,7 @@ jobs: - target/release/.fingerprint - target/release/build - target/release/deps - key: v7-cargo-cache-darwin-nightly-{ arch }}-{{ checksum "Cargo.lock" }} + key: v8-cargo-cache-darwin-nightly-{ arch }}-{{ checksum "Cargo.lock" }} test-rust-nightly: docker: @@ -276,8 +276,8 @@ jobs: - checkout - restore_cache: keys: - - v7-cargo-cache-linux-nightly-{{ arch }}-{{ checksum "Cargo.lock" }} - - v7-cargo-cache-linux-nightly-{{ arch }} + - v8-cargo-cache-linux-nightly-{{ arch }}-{{ checksum "Cargo.lock" }} + - v8-cargo-cache-linux-nightly-{{ arch }} - run: name: Install dependencies command: | @@ -297,7 +297,7 @@ jobs: - target/debug/.fingerprint - target/debug/build - target/debug/deps - key: v7-cargo-cache-linux-nightly-{{ arch }}-{{ checksum "Cargo.lock" }}-nightly + key: v8-cargo-cache-linux-nightly-{{ arch }}-{{ checksum "Cargo.lock" }}-nightly publish-github-release: docker: From c8984398174c7e7de5ba4ff84c2884b8d08ffad4 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Thu, 11 Apr 2019 12:07:54 -0700 Subject: [PATCH 213/413] Add well placed unwind(allowed) attribute --- Cargo.lock | 2 ++ lib/llvm-backend/src/backend.rs | 6 ++++-- lib/runtime-core/Cargo.toml | 1 + lib/runtime-core/build.rs | 5 +++++ lib/runtime-core/src/lib.rs | 2 ++ lib/runtime-core/src/typed_func.rs | 5 ++++- lib/runtime/examples/call.rs | 4 ++-- 7 files changed, 20 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5f111b7b8..a82cca2b3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2274,6 +2274,7 @@ dependencies = [ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "nix 0.13.0 (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.2.1", "wasmparser 0.28.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2372,6 +2373,7 @@ dependencies = [ "nix 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "page_size 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", "serde-bench 0.0.7 (registry+https://github.com/rust-lang/crates.io-index)", "serde_bytes 0.10.5 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/lib/llvm-backend/src/backend.rs b/lib/llvm-backend/src/backend.rs index f40a6dfb2..176702bc3 100644 --- a/lib/llvm-backend/src/backend.rs +++ b/lib/llvm-backend/src/backend.rs @@ -75,10 +75,12 @@ extern "C" { fn module_delete(module: *mut LLVMModule); fn get_func_symbol(module: *mut LLVMModule, name: *const c_char) -> *const vm::Func; - fn throw_trap(ty: i32) -> !; + fn throw_trap(ty: i32); /// This should be the same as spliting up the fat pointer into two arguments, /// but this is cleaner, I think? + #[cfg_attr(nightly, unwind(allowed))] + #[allow(improper_ctypes)] fn throw_any(data: *mut dyn Any) -> !; #[allow(improper_ctypes)] @@ -438,7 +440,7 @@ impl ProtectedCaller for LLVMProtectedCaller { impl UserTrapper for Placeholder { unsafe fn do_early_trap(&self, data: Box) -> ! { - throw_any(Box::leak(data)) + throw_any(Box::leak(data)); } } diff --git a/lib/runtime-core/Cargo.toml b/lib/runtime-core/Cargo.toml index 215df568a..41d472626 100644 --- a/lib/runtime-core/Cargo.toml +++ b/lib/runtime-core/Cargo.toml @@ -45,6 +45,7 @@ field-offset = "0.1.1" [build-dependencies] blake2b_simd = "0.4.1" +rustc_version = "0.2.3" [features] debug = [] diff --git a/lib/runtime-core/build.rs b/lib/runtime-core/build.rs index e91238bc6..38071e31c 100644 --- a/lib/runtime-core/build.rs +++ b/lib/runtime-core/build.rs @@ -23,4 +23,9 @@ fn main() { f_out .write_all(hash_string.as_bytes()) .expect("Could not write to file for wasmer hash value"); + + // Enable "nightly" cfg if the current compiler is nightly. + if rustc_version::version_meta().unwrap().channel == rustc_version::Channel::Nightly { + println!("cargo:rustc-cfg=nightly"); + } } diff --git a/lib/runtime-core/src/lib.rs b/lib/runtime-core/src/lib.rs index d7ef274fd..a43a4c63a 100644 --- a/lib/runtime-core/src/lib.rs +++ b/lib/runtime-core/src/lib.rs @@ -1,3 +1,5 @@ +#![cfg_attr(nightly, feature(unwind_attributes))] + #[cfg(test)] #[macro_use] extern crate field_offset; diff --git a/lib/runtime-core/src/typed_func.rs b/lib/runtime-core/src/typed_func.rs index 2ca67dba5..d18055ba1 100644 --- a/lib/runtime-core/src/typed_func.rs +++ b/lib/runtime-core/src/typed_func.rs @@ -339,11 +339,14 @@ macro_rules! impl_traits { fn to_raw(&self) -> NonNull { assert_eq!(mem::size_of::(), 0, "you cannot use a closure that captures state for `Func`."); + /// This is required for the llvm backend to be able to unwind through this function. + #[cfg_attr(nightly, unwind(allowed))] extern fn wrap<$( $x: WasmExternType, )* Rets: WasmTypeList, Trap: TrapEarly, FN: Fn( &mut Ctx $( ,$x )* ) -> Trap>( ctx: &mut Ctx $( ,$x: $x )* ) -> Rets::CStruct { let f: FN = unsafe { mem::transmute_copy(&()) }; let err = match panic::catch_unwind(panic::AssertUnwindSafe(|| { - f( ctx $( ,$x )* ).report() + let res = f( ctx $( ,$x )* ).report(); + res })) { Ok(Ok(returns)) => return returns.into_c_struct(), Ok(Err(err)) => err, diff --git a/lib/runtime/examples/call.rs b/lib/runtime/examples/call.rs index 12f149062..894fa4ab1 100644 --- a/lib/runtime/examples/call.rs +++ b/lib/runtime/examples/call.rs @@ -59,9 +59,9 @@ fn main() -> Result<(), error::Error> { }, })?; - let foo: Func<(), i32> = instance.func("dbz")?; + let foo = instance.dyn_func("dbz")?; - let result = foo.call(); + let result = foo.call(&[]); println!("result: {:?}", result); From 60ac7a5b49c25a73accd703a7441e49bedb6634f Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Thu, 11 Apr 2019 12:13:36 -0700 Subject: [PATCH 214/413] Remove unneeded semicolon --- lib/llvm-backend/src/backend.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/llvm-backend/src/backend.rs b/lib/llvm-backend/src/backend.rs index 176702bc3..927dbeca5 100644 --- a/lib/llvm-backend/src/backend.rs +++ b/lib/llvm-backend/src/backend.rs @@ -440,7 +440,7 @@ impl ProtectedCaller for LLVMProtectedCaller { impl UserTrapper for Placeholder { unsafe fn do_early_trap(&self, data: Box) -> ! { - throw_any(Box::leak(data)); + throw_any(Box::leak(data)) } } From d67bfdb2c526edab7c785f74c14dcdbf2d4b9db6 Mon Sep 17 00:00:00 2001 From: Syrus Date: Thu, 11 Apr 2019 12:44:03 -0700 Subject: [PATCH 215/413] Renamed dynasm backend to singlepass --- .circleci/config.yml | 10 ++--- Cargo.lock | 40 +++++++++---------- Cargo.toml | 6 +-- Makefile | 22 +++++----- lib/README.md | 2 +- lib/emscripten/Cargo.toml | 4 +- lib/emscripten/src/utils.rs | 6 +-- lib/emscripten/tests/emtests/_common.rs | 6 +-- lib/runtime-core/src/backend.rs | 2 +- lib/runtime/Cargo.toml | 4 +- lib/runtime/src/lib.rs | 6 +-- .../Cargo.toml | 4 +- .../README.md | 12 +++--- .../src/codegen.rs | 0 .../src/codegen_x64.rs | 0 .../src/emitter_x64.rs | 0 .../src/lib.rs | 6 +-- .../src/machine.rs | 0 .../src/parse.rs | 0 .../src/protect_unix.rs | 0 lib/spectests/Cargo.toml | 4 +- lib/spectests/build/spectests.rs | 6 +-- lib/spectests/examples/simple/main.rs | 6 +-- src/bin/wasmer.rs | 30 ++++++++++++-- 24 files changed, 100 insertions(+), 76 deletions(-) rename lib/{dynasm-backend => singlepass-backend}/Cargo.toml (81%) rename lib/{dynasm-backend => singlepass-backend}/README.md (68%) rename lib/{dynasm-backend => singlepass-backend}/src/codegen.rs (100%) rename lib/{dynasm-backend => singlepass-backend}/src/codegen_x64.rs (100%) rename lib/{dynasm-backend => singlepass-backend}/src/emitter_x64.rs (100%) rename lib/{dynasm-backend => singlepass-backend}/src/lib.rs (90%) rename lib/{dynasm-backend => singlepass-backend}/src/machine.rs (100%) rename lib/{dynasm-backend => singlepass-backend}/src/parse.rs (100%) rename lib/{dynasm-backend => singlepass-backend}/src/protect_unix.rs (100%) diff --git a/.circleci/config.yml b/.circleci/config.yml index c588234dc..67309e903 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -152,7 +152,7 @@ jobs: sudo apt-get install -y cmake curl -O https://releases.llvm.org/7.0.0/clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz tar xf clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz - # Use rust nightly (for dynasm, for now) + # Use rust nightly (for singlepass, for now) - run: rustup default nightly-2019-04-11 - run: name: Tests @@ -220,7 +220,7 @@ jobs: curl https://sh.rustup.rs -sSf | sh -s -- -y export PATH="$HOME/.cargo/bin:$PATH" cargo --version - # Use rust nightly (for dynasm, for now) + # Use rust nightly (for singlepass, for now) - run: rustup default nightly-2019-04-11 - run: name: Tests @@ -242,7 +242,7 @@ jobs: ulimit -n 8000 sudo sysctl -w kern.maxfiles=655360 kern.maxfilesperproc=327680 make test-emscripten-clif - make test-emscripten-dynasm + make test-emscripten-singlepass - run: name: Release Build command: | @@ -288,9 +288,9 @@ jobs: - run: | export LLVM_SYS_70_PREFIX="`pwd`/clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04/" make test - make test-dynasm + make test-singlepass make test-emscripten-clif - make test-emscripten-dynasm + make test-emscripten-singlepass - save_cache: paths: - /usr/local/cargo/registry diff --git a/Cargo.lock b/Cargo.lock index 1e81b086e..e42dd7265 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2230,12 +2230,12 @@ dependencies = [ "structopt 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)", "wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", "wasmer-clif-backend 0.2.0", - "wasmer-dynasm-backend 0.1.0", "wasmer-emscripten 0.2.1", "wasmer-llvm-backend 0.1.0", "wasmer-runtime 0.2.1", "wasmer-runtime-abi 0.2.1", "wasmer-runtime-core 0.2.1", + "wasmer-singlepass-backend 0.1.0", "wasmer-wasi 0.2.1", ] @@ -2263,22 +2263,6 @@ dependencies = [ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "wasmer-dynasm-backend" -version = "0.1.0" -dependencies = [ - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "dynasm 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "dynasmrt 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", - "nix 0.13.0 (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.2.1", - "wasmparser 0.28.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "wasmer-emscripten" version = "0.2.1" @@ -2291,9 +2275,9 @@ dependencies = [ "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", "wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", "wasmer-clif-backend 0.2.0", - "wasmer-dynasm-backend 0.1.0", "wasmer-llvm-backend 0.1.0", "wasmer-runtime-core 0.2.1", + "wasmer-singlepass-backend 0.1.0", ] [[package]] @@ -2327,9 +2311,9 @@ dependencies = [ "tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)", "wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", "wasmer-clif-backend 0.2.0", - "wasmer-dynasm-backend 0.1.0", "wasmer-llvm-backend 0.1.0", "wasmer-runtime-core 0.2.1", + "wasmer-singlepass-backend 0.1.0", ] [[package]] @@ -2381,15 +2365,31 @@ dependencies = [ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "wasmer-singlepass-backend" +version = "0.1.0" +dependencies = [ + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "dynasm 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "dynasmrt 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", + "nix 0.13.0 (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.2.1", + "wasmparser 0.28.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "wasmer-spectests" version = "0.2.0" dependencies = [ "wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", "wasmer-clif-backend 0.2.0", - "wasmer-dynasm-backend 0.1.0", "wasmer-llvm-backend 0.1.0", "wasmer-runtime-core 0.2.1", + "wasmer-singlepass-backend 0.1.0", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 244581f8d..5624b659a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,7 @@ structopt = "0.2.11" wabt = "0.7.2" hashbrown = "0.1.8" wasmer-clif-backend = { path = "lib/clif-backend" } -wasmer-dynasm-backend = { path = "lib/dynasm-backend", optional = true } +wasmer-singlepass-backend = { path = "lib/singlepass-backend", optional = true } wasmer-runtime = { path = "lib/runtime" } wasmer-runtime-abi = { path = "lib/runtime-abi", optional = true } wasmer-runtime-core = { path = "lib/runtime-core" } @@ -33,7 +33,7 @@ wasmer-llvm-backend = { path = "lib/llvm-backend", optional = true } wasmer-wasi = { path = "lib/wasi", optional = true } [workspace] -members = ["lib/clif-backend", "lib/dynasm-backend", "lib/runtime", "lib/runtime-abi", "lib/runtime-core", "lib/emscripten", "lib/spectests", "lib/win-exception-handler", "lib/runtime-c-api", "lib/llvm-backend", "lib/wasi"] +members = ["lib/clif-backend", "lib/singlepass-backend", "lib/runtime", "lib/runtime-abi", "lib/runtime-core", "lib/emscripten", "lib/spectests", "lib/win-exception-handler", "lib/runtime-c-api", "lib/llvm-backend", "lib/wasi"] [build-dependencies] wabt = "0.7.2" @@ -45,6 +45,6 @@ debug = ["wasmer-clif-backend/debug", "wasmer-runtime-core/debug"] # This feature will allow cargo test to run much faster fast-tests = [] llvm = ["wasmer-llvm-backend", "wasmer-runtime/llvm"] -dynasm = ["wasmer-dynasm-backend", "wasmer-runtime/dynasm"] +singlepass = ["wasmer-singlepass-backend", "wasmer-runtime/singlepass"] wasi = ["wasmer-wasi"] vfs = ["wasmer-runtime-abi"] diff --git a/Makefile b/Makefile index 947032873..2b87dd7e7 100644 --- a/Makefile +++ b/Makefile @@ -34,15 +34,15 @@ precommit: lint test test: # We use one thread so the emscripten stdouts doesn't collide - cargo test --all --exclude wasmer-runtime-c-api --exclude wasmer-emscripten --exclude wasmer-spectests --exclude wasmer-dynasm-backend -- $(runargs) + cargo test --all --exclude wasmer-runtime-c-api --exclude wasmer-emscripten --exclude wasmer-spectests --exclude wasmer-singlepass-backend -- $(runargs) # cargo test --all --exclude wasmer-emscripten -- --test-threads=1 $(runargs) cargo test --manifest-path lib/spectests/Cargo.toml --features clif cargo test --manifest-path lib/spectests/Cargo.toml --features llvm cargo build -p wasmer-runtime-c-api cargo test -p wasmer-runtime-c-api -- --nocapture -test-dynasm: - cargo test --manifest-path lib/spectests/Cargo.toml --features dynasm +test-singlepass: + cargo test --manifest-path lib/spectests/Cargo.toml --features singlepass test-emscripten-llvm: cargo test --manifest-path lib/emscripten/Cargo.toml --features llvm -- --test-threads=1 $(runargs) @@ -50,17 +50,17 @@ test-emscripten-llvm: test-emscripten-clif: cargo test --manifest-path lib/emscripten/Cargo.toml --features clif -- --test-threads=1 $(runargs) -test-emscripten-dynasm: - cargo test --manifest-path lib/emscripten/Cargo.toml --features dynasm -- --test-threads=1 $(runargs) +test-emscripten-singlepass: + cargo test --manifest-path lib/emscripten/Cargo.toml --features singlepass -- --test-threads=1 $(runargs) -dynasm-debug-release: - cargo +nightly build --features "dynasm debug" --release +singlepass-debug-release: + cargo +nightly build --features "singlepass debug" --release -dynasm-release: - cargo +nightly build --features "dynasm" --release +singlepass-release: + cargo +nightly build --features "singlepass" --release -dynasm-build: - cargo +nightly build --features "dynasm debug" +singlepass-build: + cargo +nightly build --features "singlepass debug" release: # If you are in OS-X, you will need mingw-w64 for cross compiling to windows diff --git a/lib/README.md b/lib/README.md index b8a99dd6d..83a335588 100644 --- a/lib/README.md +++ b/lib/README.md @@ -34,6 +34,6 @@ to tune the codegen properties (compile speed, performance, etc) to best fit the Currently, we support multiple backends for compiling WebAssembly to machine code: -- [dynasm-backend](./dynasm-backend/): Dynasm backend - super fast compilation, slower runtime speed +- [singlepass-backend](./singlepass-backend/): Single pass backend - super fast compilation, slower runtime speed - [clif-backend](./clif-backend/): Cranelift backend - slower compilation, normal runtime speed - [llvm-backend](./llvm-backend/): LLVM backend - slow compilation, native runtime speed diff --git a/lib/emscripten/Cargo.toml b/lib/emscripten/Cargo.toml index 5c59db350..8b19340b0 100644 --- a/lib/emscripten/Cargo.toml +++ b/lib/emscripten/Cargo.toml @@ -15,7 +15,7 @@ libc = "0.2.49" byteorder = "1" time = "0.1.41" wasmer-clif-backend = { path = "../clif-backend", version = "0.2.0" } -wasmer-dynasm-backend = { path = "../dynasm-backend", version = "0.1.0", optional = true } +wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.1.0", optional = true } wasmer-llvm-backend = { path = "../llvm-backend", version = "0.1.0", optional = true } [target.'cfg(windows)'.dependencies] @@ -30,5 +30,5 @@ glob = "0.2.11" [features] clif = [] llvm = ["wasmer-llvm-backend"] -dynasm = ["wasmer-dynasm-backend"] +singlepass = ["wasmer-singlepass-backend"] debug = ["wasmer-clif-backend/debug", "wasmer-runtime-core/debug"] diff --git a/lib/emscripten/src/utils.rs b/lib/emscripten/src/utils.rs index 725f0ba94..e1cf13ef5 100644 --- a/lib/emscripten/src/utils.rs +++ b/lib/emscripten/src/utils.rs @@ -186,13 +186,13 @@ mod tests { LLVMCompiler::new() } - #[cfg(feature = "dynasm")] + #[cfg(feature = "singlepass")] fn get_compiler() -> impl Compiler { - use wasmer_dynasm_backend::SinglePassCompiler; + use wasmer_singlepass_backend::SinglePassCompiler; SinglePassCompiler::new() } - #[cfg(not(any(feature = "llvm", feature = "clif", feature = "dynasm")))] + #[cfg(not(any(feature = "llvm", feature = "clif", feature = "singlepass")))] fn get_compiler() -> impl Compiler { panic!("compiler not specified, activate a compiler via features"); use wasmer_clif_backend::CraneliftCompiler; diff --git a/lib/emscripten/tests/emtests/_common.rs b/lib/emscripten/tests/emtests/_common.rs index ca5f60282..18664e4ea 100644 --- a/lib/emscripten/tests/emtests/_common.rs +++ b/lib/emscripten/tests/emtests/_common.rs @@ -20,13 +20,13 @@ macro_rules! assert_emscripten_output { LLVMCompiler::new() } - #[cfg(feature = "dynasm")] + #[cfg(feature = "singlepass")] fn get_compiler() -> impl Compiler { - use wasmer_dynasm_backend::SinglePassCompiler; + use wasmer_singlepass_backend::SinglePassCompiler; SinglePassCompiler::new() } - #[cfg(not(any(feature = "llvm", feature = "clif", feature = "dynasm")))] + #[cfg(not(any(feature = "llvm", feature = "clif", feature = "singlepass")))] fn get_compiler() -> impl Compiler { panic!("compiler not specified, activate a compiler via features"); use wasmer_clif_backend::CraneliftCompiler; diff --git a/lib/runtime-core/src/backend.rs b/lib/runtime-core/src/backend.rs index 1e528651d..1044a7ee5 100644 --- a/lib/runtime-core/src/backend.rs +++ b/lib/runtime-core/src/backend.rs @@ -25,7 +25,7 @@ pub use crate::sig_registry::SigRegistry; #[derive(Serialize, Deserialize, Debug, Copy, Clone, PartialEq, Eq)] pub enum Backend { Cranelift, - Dynasm, + Singlepass, LLVM, } diff --git a/lib/runtime/Cargo.toml b/lib/runtime/Cargo.toml index c137922f0..f34798bf5 100644 --- a/lib/runtime/Cargo.toml +++ b/lib/runtime/Cargo.toml @@ -9,7 +9,7 @@ edition = "2018" readme = "README.md" [dependencies] -wasmer-dynasm-backend = { path = "../dynasm-backend", optional = true } +wasmer-singlepass-backend = { path = "../singlepass-backend", optional = true } lazy_static = "1.2.0" memmap = "0.7.0" @@ -37,7 +37,7 @@ default-compiler = ["wasmer-clif-backend"] cache = ["default-compiler"] debug = ["wasmer-clif-backend/debug", "wasmer-runtime-core/debug"] llvm = ["wasmer-llvm-backend"] -dynasm = ["wasmer-dynasm-backend"] +singlepass = ["wasmer-singlepass-backend"] [[bench]] name = "nginx" diff --git a/lib/runtime/src/lib.rs b/lib/runtime/src/lib.rs index a45faddc1..f9a9ce819 100644 --- a/lib/runtime/src/lib.rs +++ b/lib/runtime/src/lib.rs @@ -171,10 +171,10 @@ pub fn default_compiler() -> &'static dyn Compiler { #[cfg(feature = "llvm")] use wasmer_llvm_backend::LLVMCompiler as DefaultCompiler; - #[cfg(feature = "dynasm")] - use wasmer_dynasm_backend::SinglePassCompiler as DefaultCompiler; + #[cfg(feature = "singlepass")] + use wasmer_singlepass_backend::SinglePassCompiler as DefaultCompiler; - #[cfg(not(any(feature = "llvm", feature = "dynasm")))] + #[cfg(not(any(feature = "llvm", feature = "singlepass")))] use wasmer_clif_backend::CraneliftCompiler as DefaultCompiler; lazy_static! { diff --git a/lib/dynasm-backend/Cargo.toml b/lib/singlepass-backend/Cargo.toml similarity index 81% rename from lib/dynasm-backend/Cargo.toml rename to lib/singlepass-backend/Cargo.toml index 3f6ef8667..977a3eac6 100644 --- a/lib/dynasm-backend/Cargo.toml +++ b/lib/singlepass-backend/Cargo.toml @@ -1,8 +1,8 @@ [package] -name = "wasmer-dynasm-backend" +name = "wasmer-singlepass-backend" version = "0.1.0" repository = "https://github.com/wasmerio/wasmer" -description = "Wasmer runtime Dynasm compiler backend" +description = "Wasmer runtime single pass compiler backend" license = "MIT" authors = ["The Wasmer Engineering Team "] edition = "2018" diff --git a/lib/dynasm-backend/README.md b/lib/singlepass-backend/README.md similarity index 68% rename from lib/dynasm-backend/README.md rename to lib/singlepass-backend/README.md index a525cbfac..3d8c63615 100644 --- a/lib/dynasm-backend/README.md +++ b/lib/singlepass-backend/README.md @@ -14,18 +14,18 @@ Join the Wasmer Community - - Number of downloads from crates.io + + Number of downloads from crates.io - - Read our API documentation + + Read our API documentation

    {Fd61aWX`tC;MpM00JHlnBtf;?y^J!~ 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

    }VmRat=X$gq?*rO@@zI<4R%kmV$I zla@D-R4pG%Qnh?CN!9XsAph65JbT3MjuG)R9r22BL=&1{PDgwh#14~_grLfAYt82X612Ms@ z`Es2ax4PNJ{9>z{kailwG&`&9rT?O;7=J9ig>6s7`)MmgPl;74?Jco32`tFAso=l1 zsUW*>VSHy@le8~Co116*l6xKWC7)H}rvsF-xz-K^tsR8$4TfDU$B#SMb|#boIEd76 zCR|TsistQ3xG$3lNMyu403{8avD2_0ZKbD>t0#qbt9E{4x#2>jSMSskk9_HMngwsj=`TEht00F@Bu~M&~;s z*-pt}@moEt{9(4B)G*8zBt$_t@JPDjf8an~6z)z3u0{{8rwx+||H971M>~+e0bw8= z_=v{E$b!1uMFcHr9{NC#3f zj_UjrWSNP4Fd^hU`R38xJb!$hJ6BqZWBkl;u343h$5+bD$*Cev{S zeKR+EthtMVQ0~g$E((w0*@~IaJBA~yCuZz)YCWZ(4CEq`6XV4opM;q7d2wM1@FhUK z81(T#xKD=Wt6+FrXHe#=OgiL`-6`aL7vrEpgi&beO~?iwHL zfeiaJG#6}+ul%?eS^_AR6vt_(fz&+^IN`EcxR=pgDpl=ZpsLD1R<#GDlcsQq=-SCh zmxv+HnN}5uA-`BCh8SoJ;g@fVodr@jYIGIG_e4!;KxtIIaDO%)$&1&6`#vB?2Vy

    x=cZ^3N)D6T2v@el@i@MchDCHV8Apn$t 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%0A!GP${UlU3 z1^D*wd4#)0LWP8^F<1z-fUm{}Pn5Oe%UT1e_H9b1YUg!b7#<_xb=r{@j@o%CYF)op zid@|!fibi-t|k&%qOBpM!9gi3(M~SZ2bXzrxrW1tXjV2}D4UyydMhZz=BP{8ZdiI2 z6_=FukXGR{2E2OriOF|g>^|aU3Gzt^_@5&wu0=90o~r(<7gsRbU6obphS_$(emGzt zTXM&X_k8}rHOQ*nwL~3mWN>}DYl(j;CPr!9d%>-V9J`qz);T0CB)Ax~M)z?&q_&+d zF{Z~a#tW9wSHJ3`Lb0k>y>`v%^1z7>wc3BzM6oRpR`J%90EWt%J|>;D?J(V6RgxcW z!LYnB$S3vxKQ{6&n(RO8nF9YedEVSsKI3@6!Xq2yJY4QFPFvJAZQ(pQn4cz( z4Q8AX9gK8%WA5+q;AxhbF9UcI^$i4E=dSW7^uO2t*1-Q&HSo?OT{;bz**bmEQS$Us z?L9$Dc50R_9l57G`$CI3PI#414OqdYVEDjKIK;>DLQP;9WZCvq&~;cogwF>PzL*4C zY%9D1#JLF(Idh~$AAp;0gr zMuKLAEQf+n_ybZ$Xr*mAl-5Br!3F}B!z4N=Pf1xh%yKXzrDuS-H1@X6NEpQdXzjCqQ#@*Ma8dz6P3?`z~mH z?x&yyxnF=5DqB!tIWS4gi%Rux!S0h)AHE;NxfgX0dv6AR7Fa}xxm&Rs4Fq!klZ(>a z9|$Zbi2B!}ylDZ^@Oo?k^4$-x3*MsIW>N-aKE)Wj2rwgnr_;_6S zx1bXDEaT<}Rl3D}7i^DT~)!jH$rbIM#wyLoIpXe3##NDR)X^f&;lj41h-EEIg!x_xlDD#m%&PkTwjX) zu_4ilsU}b$Dei-@$YUQw4rbzLWH}NGnNtE+s-23V04ot2zK4YUr|=OFqzmJXzE$LX-)e(F(ua z3FZD1h!v0_v;_Gv!g*i9I$PllID2yb3Q`aiiN5_{E`n}}Z69QXr?M7XL6A)gzSL;8 zoD)>gvG|g9gVaIT`TEx*QEOrt_FYtab~k*c6?(&d&>e8X-G&RvEtD|b0T z?iHZu0O2oicvSc;PmrKCfMXmd7X)RA;;XatL`db~bfvHmgidD!1;VIF%jt%4#gwl)QHjk)iV+m+8MzNEMKPAW6nA8~il3`w#(u?nqLr26jZmST z;P#4hL@`C7*iB)DnX_{j2u5HVzQ!PHHg|s*j-WWcbWgOx9hf+rdqL1^ZwCD1B4#aF60RCL#xEF^>T6k#p{L?b zQD_;W4)13n)zzTkTR^%nDV2r$-zhPlfaZM-ax^RtUlk5rKz(r}vcg^9xx#yc&pQa@ zAP6{xYK}To39P`EYTw(yb-53OW<{=hRK@3(A+!wS7&JiSKbL@ma{@&xr}0IVXp8}1 zD@s_kP5Z6O$usUk6N+MNWhA)&-?%*?RAI zt#=BWgbA*P`OYmMDCf-xP_rU}&@fRuYd(@>s}YTr*VzcX5+O*5mDi;}cPeB#jDiXl zNqn+x6*4|5nQViUa|Q-i%+C5vhQ=rYJL97?P6wCJC>S{!T$M(l$Z_CmHL@cogBz-l zD-@PMTjo%2 zMo?rRLL?T`81vDw;!&~KV`do%EQdK}1ZC);1(`Z5rwc67V?Kq3Vy{`JTp>HhP}SOM z96f~o=RB%bGBo^;RZ=B82|_QXk;miI8gm<4%gSBV1d#hEXfXFF&=BfP=E}b?T6vwh zs9{<#$1}$b4$!DtB<%qQ zhWwmAp++#0S*@3+Rn3(l2n(MT7>$1_K~OaEGS~;1){0yTR-90QtU^oSa_p{=O$fb_ zY)>oPG!WK~1#vzCDOM|}_pqppTG1cy#k#bdKi9i6M@@I;8{HdUDsDHp73~L>tGIjI zxQ9l%uKyzyCl4=*&QOz^ZucV5ISpT;6JHr?KQ_9T-jF z*02>h66Or)D{7sth{c>oKYKP?#fmrxk=ZjE$p?FyEU;iUS7_q&O&v1Aim)`&a!`r} z0?oS-$xg+Ll66ZsbUC`odSENeDLC(Yu+L%+${rF9tw2=Q3N4RczF65q!=dXCxDbKP zJP^3(ZVVR}ZNo*6L0}_7kV|*j4Uba5Dr8L5_HTE;Lst}=2J}bn!$9)Jfv{-V&xAvZ zkEBm9p&B9AGZ!qM20)??1QKj? zPSukCX_(x?myoz~-(~bVnETelh*%SoBX%Uxh9{6TgLF9%q@)mDc#l)SImd%&%~z}0 znjTYFm47k1QMinxg2Wxu;r@iox`;d2cpkIH0A`*}HK|-`)%@yU1a1Pss+oOLR=x-- z#xhoqXS13Ob4Bf(1ETx!LPrYhyo(@ROAn|ZE9_w9YnH#PocDBu6&^DL*6l^&*3O|~ zqTak?(DJgIP|Bykgg+(u3kcql$c(ZYJEKKqp5UzX9byhe2*kTbPKHFg0+z!VU4tAW z0eB8}OpNj9+xR{avX;XXT8M#gAUg_K4%@Fdn)Peu?5-cE|4oFT+hF}bMSoLBWeu10 z10-s4ArX!8YbRN2A<5d_iIAFWhF2nOAeR|hxy%S39G^=wX2t3c3_<8_c1(8lL zA7!y6=#OeM<^0&s4buB7=NZ%oq;AF6ZEz;O!eg33|I-@QN*wYIpT+E!tL)ChmuiJ5 zznHD%Jb}5Y*p57ixbIZ2rPu(qe1993E3w}p5Xu>+Y>A$so5ph1dT|VdQC?gN)MJuo zIx0h)r}OrxwB&YKABU{5iQ!3!%379>0Z}2xCzda+5{-n4qrC7fFOGp3aZBsPZ!_I1J;fG& zDV;nc#^knL7gz}O*gRID@Jj4C>Qu#HAgaNOdvTZ>_lb(*mrB=-@3X?2V33mq#~BD@U5FfwQw>JGLd+_JU`%(9a6VkCfaNeI5b%u| z#_DCy_T$NN*3fshLt8xk* zg{jKf3aG-O2fd74t5=oi2`nrFQI&2SmeFwFP=4tS${+G8e||gV+z0HSTNuGJK$_!`9!47td@Cx7Z9H8Apa*oaMBO zU(Z@g<=i1gc_WLx^<#u!8rG(Nr;sweIO^NB(R97^;a(2wBX>(@Ib-CcC94nIdS=Cp z7Jsij(qskPdKrQ3hG)92bq1o=-8d*mI}}8-PNDJ)(>oC2nSQ@QN_#;xN>NX{zC$4C zeQ}o4D3epxJJg=x@3tbuYtww0S>QZaX9c!z&&rCyuH*;g#*Hkxs=J@HoLgny%4$UF zOznp%eX338_?4qOeoikUi!)z`VIV5TjkBEV8c}{b>xvzeul6f{aXaNaCfPx`Iy;HF zah7w;Fj4;X4$8aBWM(={N+GvRz5Tk+bOxec+&Ig*b|^!#nvpuQUKS{Qs$Q1*l|#WZ zF~8~B2QU!z;>Ka0I6?-}y*ns>P3hBp{X@TYj3n(nxECk7d~xfnd?#?UJ5F zDG}h^X?+<*Lx6WrbvFD30^GZ&&PgyA0iL;yvWtlFxJKD{H|&SRJMN?$6%(Uf<3?hs z3OLK1pDyEZKp^_OvDf)bwBha4CP^&{2Z>>BX9-`>3B{7bhHJqUt^#5H&d2ZsI2gDQ z%{2r$qJi0RO`IE}k>?QkHJbs4y?+1?7xxOj)S52xJFwy{qmd1U%|R}5-nj`J{Ox=A zQvN#fAy_32nbjz+^8|=KkW?~i+kEnFFfEYVj4vzqK!V&EpuyZZprPF3LD4ed0a!;m zlR+?P48oV%rbR}A9maJUW%~C8sR42J0NK?&x9A49Hw}f@u5a8;MAhs{367m)*|DoT z;8yq!q;~H9yDBON>^g(!X>N~5L2Q>+T46a9Kc`Bz^sABI`!X&f48C49?1wP5mP?xg zEBrf1gx{oXZ3r#1BX5KMM)ienz>X|qU%+A$JZ740i1FObhX{;QKvoZ*0`Wc-kX6Vi z9Q83wPwQ&AgN#~{5jx$Eh^mqWR>VfgsYn?pjtl@R{lt#cfxU_PqLFEa#VZRrBFli$ zNwV=}<>nLQb^{IO_5=-C&cXPCwf7>mXYEJ?enEX=?QTGPj~h`iG7hMVMxn?gpi+e_ zhsiRF;4p1wP$3mW?LwxM8&1wxv;btde>_B$au7!H46?W#tsY>Ad3agXphgG15( z0;r+iK(fyE>ca9W%l0a(TB_wo)uya0Vbzl*YiNCOB?#VSPqxA{ z5bdlK8F|KJlCpm`LWH%&7tax6qw=c~7>#Zu=bDGXJvkqNG({sV_^RVZ0zpr!pri1m zUBc0ZjYjr@caZ+kC`aHt29Fj*PB8-2ktJY7V7TOcs>+)_@JYnr;1x6$jm$MEtVo+- zqY-v*$+IA`z=RfCh39~0b%*zZqYNJe;_M60i7DeS@IT44Ai3Qrx#7_$#G*+Vo6UI# z34Q{Pp!?9uVX$zZOQAH6EL!;`e8X$b!B>%rWiFLu?Z{(>jYgg~EUH1>K$Tv8ev|a_ zMfkFE+X)bRDZVB4b_N7;ufms=+d+WXZ78b5exYKYlGtYna$f-r=KdZul>0uYo%<)y zF#mQ#Di);_OdwDa!54owkYADm4v*n67)=Lk-EA*-}6LLzpr6uzPnc{*@1V#1+jJ{@>CSXLcshF?EL!10-r)nquu zp67ts+lEI%U6(%23b*A>MtC9uo!@|9!N%vXK7}eY#2T>DWw1|yVNw7m($5v^hpNgH zbLVLs?o;QDAZT1Jg*M4D%6rJij$Dq=8BpO{2}OzJMuYQGUpMKDnB?O=*_DyhWa%YU zw`U6Zrc3A!H$`E{I1m($1$Cc!;9V-Gp)+(V3-eVrk7JecEm)Z4tyD%9h-?20lcRo! zATQtC5R$%2QQXJ!Qp}PSp%lH+Q|zErQ0%RE-s%eXWk+_cn4(bZrTBz+mjL3eT$ZCWsEv2}H z2sa@*7KlJj0NJeRYXl_bLW#K?uc-~K@U*iY9z*gzRCO1^Ll1e8Jg(bO!B3!FWc_LgX9|RF+KM**Q(fHE) zD0jkxlVj#nJq5Eo1v~hNqpk8#NyxT$kf3PvmVFxYme7u=>;@ox$pwtAUoEj7ZuO;gbVOM9duH#qi#& zFXnJBX11%=*@oo0;?6-R+_kUbY<8yiAR(%66b1MNx)o|gwfR&(>Zx7^_wS4Oofq>+ zUPjCpUJUOh`O-u%Xm$C2o0+Ds7jrxOvMur5E#AX3QR53}{x* zZTuCMSk~|un8%Q58iT;*!s7t=RQnBx)RtLRtS_JMRxSLw=#BD4s^9HYZx$vy>g8kl zZy>SMZeIlI`rsqZOQFrO{nm`qsrcOgN!XQ0s)M{#(|4L`kxs?O{=es5rVZV>2W+)@ z)H4oqj(t~_W&Mo3fX%(s?f8i1`#sH1xSH+fz(!EPvA!>Zv+Ng9313x#xjAlGmw<6z z!Z^^wb~4T_T|&zmfZr0S17?WbHPYiuSZ-s)WQ~PLc^%KmzYN+W+`KM zaO{hDO=5;;Bj&_{j2Pu%nh_%^epJdSczvdz>a+`uU>s-N;m}eFvL$?ZjgT1jh|trS zDh~2urh`>!Y(CQS2z;>Qf08G1mM6m9?ng%CdQW7fC&CBa0`Qj3-XQ+-e@mW1ls#co z@mp2#0< z%bJEJw|QJT+sJP7WU~jmrJoeGtp9*)=?W11s*;sbfoNS%b)F<2ulo{0A~MkvImi=v z93ov%`64pU6FJEfxgGfpHzJpMBG-E&oUacvA`f{YYdjH7wd`z?(FRZCPo4;W@N}vX z`I{%=G`MBY2m3r?N}pkLRFowUrpsRKNiHqK^Xm|jb+p!EdkC*R`9Uj_NTfTD7- zCvv7IvI-)X8p72Co@I;=6NGF_nNTEOQME>lF^u=%)01=zF2M*%t(Dz_EkzsvIXH+?+ zpm)f`K<4AqkEcU@c^+ihb)dK56VsSa(v=~3Kh|tt5|#bo2-j6H8?3HS?iPMOT#GF6 zL@w||cv$)YL`tJ0FanjbyFE!pD`is3=e(Hpo(}#D=I~KEn@yg`H=YQ8Uo-pR(!=DCgH(y8QZ@EpQpzLtVAx#$E!0wc_&2@QH|l9to+5nB>rKUT!N1ag7=h+ z0eTNglKW{PGys)Y@h6a(!a03Xrl_P&oGJLy$Ic9nyY^fGH}i)CMuOwN~*gRU2Od<4>A2aT5}J z3$&*aNZbv~SH-}6Sb4S4)a}5_!1tXIOgscWj^ZeJAI(6cFWffk`}r4~^@{og@b1&8h$9TR_$72~!Z zyUjL)BwozSB=L&Ix-~QUb)T;6Jn1WvYBjpR$;Cb#;&01Un#;9bnp$x`WiTRL%S0yrd&I@x zCi%!Ee*q_TcsG)iOu!(01BqiQacVvIM(~LiH7J|O9~?})qm5vt5`U>NR{vIFVj%sQ z4=0aIf8>YLk{|eB=e@DLlglgnEZ|`+v@QJRWx!EYd+jjk5wEEBIMIgsQ|l9xdw{Su__kMxNos*%?u ze4ryytufq%_>@ZE&Cp4oGE~PIpHlC~+NXGZgkxx5WKnTF#G*k_Z^gf-86h-Cyo#ia zGi;)fLX$RYtt`f!Z!fNAaVtu1Gyfg*rlD}E^pLXHKw-4uiYx*(6BZg}|$Lg+6Dv9BOL$b#_l6@<`N z5D!X0c+XH5qz$ZB5X$)qVxU)$)hx&(IjSIkH3fMS0lFaVXv^DhR^}_n+kpOpd;;t% zh!3(LpCi^+kj;R;f_P90vdk+;M@B(v@-hlypjQyS%pv|hJDG5wlAAdegm;AF$B?_3 zWaK!Imq?Bo53Ei?$Ax;}A( z57uUd(pPJopw6}F%QIl&VhzKH9k@P}JkO7D<2rG#4&d^Q0xNxZKoxsy`qw%rM{I4#{xe_J9g4I!a7GgI)2P{ zWWe{(F9Nz9M<8q~!gM<}`XJk}R%6|c12SNuLPOJzWqxehF@z16e>@tj$KzL^_egLtvju%a>pRwe;s(AIBlWnZw3itP!OPtf#R zn<@f33vAIV!DMIfyx3`reiKa8`|)!@*JCn1eH|sO^aL#v2SD~?GGJnqhNhbg^<&db zsK?(;3|8HQs4O2V<)gqn&L-gctzE2_CMZLkZ=v9WYy!TCVovhVB=a?afx4So{ZB=F3~Il|tdVA&GoZK1hxP7*ta}e8SpNo^HX!!5 z!6gRkHZWMX0Tw6htNAUuuk!RGZ(_hoZ^lH%3p;9dfNufUc_rLvO4y$=N8{7^X;}Yn z?$uko3=7Z;yeeg;zA80PS82Rg3-%v3px`V`!J$E`@>$evIaHXnwbmBz56Spkkg|6n zo`(1VEc_P`XFxdu(D-bbKLg^AkZt6HY$G3J8+lOL$UxIZ#Mnf+pP<`I6jsB-uxRh#VjJiWD`?A+?5Hf#9LZ~Znw|Zf#mBxT>lb$TjD=_O6m^GDqrWr zh3iqs16k68NiHLKf#fxkcTJd-{;hyz{f?!71WPgYp}Nzvl24Gwm4{ECZGqHU;9|tF zHr@cwH+j`}wky|zZzjJk^%B@NuqDNzis!*E2Oo>;;uvE&4(pEhj3pLhrA6MSVSghb zblWDhH>{fpr?d(x>vqpd%?7^?Jgr#(ek1t$q@6kzJnv+c>=lysC_n|r2L00ZC}(Qb z9vRh-=Gdxi6TAn2LyprlUD> zND4`Mk|an*lgLqPGr1`w(@Ex&EF-y`PdlsPXKV?YU{TLXJCTF9-$Ha8%F(mRP8I^c28<$F#aly(?!X@d7Z3++ zIpy9AjNxS!|H`ovF$jE%0E{9L=;6ctE{<5q1Om306d~J6@&qJ-3Ft1Q=-J;+41~aX z;DH*aeYkjBxS|et3d}9WvHp1QZRAgmq;?0t41BC5kQxcTgZ$R)6fIg!{;uo_TC*NJ zEx{$l`5bwP`6oxDI4)*!_CtcdLV#lxnI!l2;n>)yl^lYAKNt-sidO8R*#yjBAwC4< zZ|qNq|Dugg-s@KU2uiH(qa+B*zlX$|2rv?7P@;cKNf4Bm9DpaM5MU%;ro_!!f}ngD zB-VHmWyO8bnif`|`(iD^qoqwKd){y5Sm{W_9gaA2th4|aL!2`Xmxn&cwaH?{`qn0V zXx_Ir@t~|txSrKhUolv3BIW-ofeS&TEYJ)zYZI&NBM8voLufEhUaFB^8$76Arop3t zeFpm=4IYD7pTQFVeFl3_3?A&ANc}V6n*g(%<*eV9!N`rakwb(P5asC=6_8IJh zG?agAH^Ij+e}Yi|7YZcAu`2FJXFm(Ls1f1_1+*0`=YI zgFUxKWlWmro~clRW71$VCfC3aGbT5X*JE-scrzxW+1{9pk=J9g5xjp)z7A9TW75TD zO!9|Txvu)m3SBUIK)f#*9FVp^x-s(#~~t%HnA1t5|W%FLCzq#i{wp`#-l)f z4N}Gw__p$K11EXM!GvnPHn1X?cv$0VgaN1T_u+nzr0>x%AJK3{k89`%bhmYc?9-LM zMSKVB#-8ChuzdC#>>9A^75ggKO~Sf~fs{|ecjhTiW$+)I@<3qw(>izSNt*`t_qLv5 z<8`Q$wWdyLAhCpX@+aQ;!3A&3I>*&q799NluszQhGGVYLc%=_B#gTVUj^} z&^~+OB;#jf{S$2&cPP9R0x(L&mIHy00=`}0^duif`%Lu1wdtb)kB0OukVbR0X2OEL6vl3WwiE?Q1A(C-u=vm1?<1=Lg_7!9>%d?E!fcYRdU>=kWn1N;kM$ArU4k|)L z8tV<1!QKW8!g6kv2TA(Df#?)Gw{o#Lkmv#d4iyTpXBx}{3F(=25b*a*gPB(x|MuL9 z-$U{~$rh5rxgdLz%qO{n{Jaa;N1uavdPz2H`fXXINLi;z|Hl9zGoMFKAq@aQYb^ z#xQ$Q!(v3E&#lgc4`f1~5b)B%?4Ul#4(dVapaz-_N^Ij}Iw-Mp*qxuGAvXP{Hi2R= z@U;wB{&EJSy3F%6RQ}&TU;9O^^B=7GZ6wJykntqaCg+n|4N^8Fi8ma=oG;lX6I?I{S#RcSc~`XJ}PGZE`ZtfV(k`zRSf=R(Bz3XUKbo34Km1oEN7 z_zHtvUvZz##LQv_(^vF=29aDpU3w`Rlj|o2phQ;BiR$4e7wh#Cv4eQEe(Dd-Itd>> zDI|{vF@QC19uFdBF(Q zU=p1|&VD#$m^B>*O5s^m1oT=Pl%v!QP{}%#v3nyT`1aBS&*ymc!zVB_AP02BOo@(Q zhM$IJ_-SZ{pMvi2BlHhHww!Bl+`#6=T6SgYTzq+AyQ|r?5fllB)}XQ*<$ZKy0FfgWSXC9k8zc$=QnRbTFy|Dr-27k3GK!(Ui!5Ujg&G*c zYM4lJ49O`ZSCZUF@+t{mJsRhWR~30M1nzH)2rU8`2BYJ7l50q^PXNg$=|_?xsU~S9IiBPcl5F&iKTqp-1`{Y3g zXh1Cn7KWsIx>$ElgLU_Gq3WKEs2bBfo5}0$ISah$p6%py_gn$q*F6*Uu;3zC(3uu2 z4kfF7c)-J9D=`!Sk3fLkH*ji5{H(zPv(!q(#qhIu=oBedAsa}`6Aul}?2VPT0Ip+#Kc;Q~yAkZ5vjVBB!EYhIDv-Jyd;z8f z*4M@0%gLj@&I8{B-mS01SqS+Ny6I<8>xp(h?u17%e3-X>kN4yAgURE3*wqSM>3b2u z|NamK7}X=a(hn<>zXt4#SoCFUz$F}vIJ9~Mfm2`|8-=Y{1cB~|2%M%`u_tgLu-l45 z5J1BN=craR*tDXH*@}rLpt1=mkONaB*8=Ybj5@OhG>0vDW_U64UltO6x#Fe6gwr~! zi&Rzyo2*n66=AdBJ1&tzdV$F$%p%`O+2q5Z=8*M zO7)^uFlJPl^rCgNOZTFU;7u>WKgKn^sGxwoD8XK|NLP~SNd{+cw50Wyn|R&&F4nDY zuxWi4>()0oqxIiG#-~Fu+^01vk$l4k2mBh%o%jGDH$#9OVC2&Qc|^$Invn=haEEa_ zB+xmfj=0S*7!x$N8XlBEOc;hVAMD^_$;D_B*^cw|I;bP}0Ud+Qo!&CUSvakGDX$O1F!vFBUsa8o57nNJBz&Xd+lJg-&;Xe`#l=u^LwkAK>5A( zV2$6~L|*$nR)Fz)#pJc$s|N4Zm-Kw<_WL~->z;40>G>|!J>OtgD+0vtF~aBfT&VmW z;SPRpJgj4*(C_gQzxTe^iYTDx_b4EK??bN@iT$l8*!6o%!JZ%ZQ29OL48J#v`Tt4z zy>`Wm-=m;p^~FDv)mukX9-{=Gz!#w;{T?szdzS?gf7J2a5Y}`>p!^R$Jh~Qxo{o{1 zIL2?3V>DPhMnb=1?0~h}F|MZJ+A*#NZ@Sqg@~WFzUD(aUF;WqW=I?66#xc6_+A+HL zztTPE73?hrpG353l zDa8nlH8I6 zZ-H+IpFcW~`W*ZU#aDa+el_{A0oiQEs#HA!%S}GwFp91=rxo8qe7#bMj5h;qBARZe z_&{qxSMWV;@oUxK^^=gzWZ~K?euR7*Wm0yEPq!{3Uv5`U2j2l6r;dEAbv5PpL#8Ra z4cSp>rd`SNip}6h-X-Vmefq0ibNW%pWkD{A0T5`hQ&30P$mF+fag6clBciKcN zwkyTI+C;0EUN_M?@TQ42>TovE7VxHt3QD{tDkpE62oGShe{MEib1sa2>3BHh4v;2D zj=3tQ>RRx8|N0*HLX?x1)E`BgxzeXRuQ~XP>By0!ZN8+-bW)6z6Lnfv^%SHnkDS1i zs*jExWW~ccJdJ0O6p)mV^dXU# zwt+>fS5nb(1}~AZxDu?9`Jgg2F&NK_L$sxmZ7F zWH29U;8l4vGUWqnsWVbMVrv6yinN@32p&R;v`PuFNbA6wB5fqEinIl+DN;etj3ROW z@GljK34BE&^cP96uSmqENMI}H!OC)&kZMa^2zET!;%%YSGM11$9+o&0{0dt6c_48b zcwQ)gJPdK7#vD0CcLtIReYo>;S(ZF4!2}|ppO!G#JT0*r%JtI{H|g{k%~sK6!Nhew zJiaNAzRHjPn!MBpJAXlUmE!Xj>uK#Z!74s$u?f6+&cb9|q@S}e7`-HUw^k*6>Z)MH z?Zmyr3NXpXbaWj+amY?Qq%k`OpT*;G121BEn5O(`9YTev`RNyZ0;xrr>ECj8lKwY3 zfz9;rYVmOx<7HUjQ%8FB$(CFdpkuF0 zKj4RVq<`gushPh3xlt!d=2a} zuqD@2y$p60*wVR`AA?;lY{f>fe4eo(o2wW}8tv^SEeETUjt8rgwg@Xp+rg@&Rey%2 z6@X)}5_Xla&>7#{4pO(o5P6ztB%ss{s>Nbl`lnOC;Y#5%_L}tfez-FIwGXCR6V9n3 zEBA1V_sU8JH0A=Y-#u(Sz2rCm3~RlTb-j)z-BHPU-U#;Z)NvZgilvU@OKJFRApNQI zFZfhf1+DT`I>&qjjQy?D+ZL*SNvfRBHtBjR2dnFCys%PlEnro>l|Q64^`NGga980B zWLQnoOmZm6bdt3s>|SM^Fs)1tVw&ZwQ+*oNzfd>!lXNB6YQ$X%RjFmEBwz<(xL528 zo{wKP_6(*t2doEQd_gotkI5Ib!egd62{1YS;58GR2n>YhOmi|YSWgIq;x^QT!2ez- zPDf1$2Kpw1Hb~@9y_ygVG~Uz2+It%8c~9B&S}`e-sX#)R&8OeHm=(tFpBPYl0Z8zfA7e@2~U6Q3&tX&jRcM z?SQ;r??JieJ`b^ME4k-hJ`^43Glb9`rIuNh^}s8kdF&^NQDFaysG||pur(+TsIOzx zrwEWy{wNqOu;tdlCPvwTB%fpFB_lo12V|h;SDqm=wjb;f#RkCQ7oSFw5vi%hwmWI4qqNy!sMz6Q&&nwtVU$&DyfJK zl+z=BGk8-G(SBY<#K8M2q5;}`6+!5)2x4DF_0W6EH)b%oE2w74+W(a*_ z#)IzTmhPBQqmOp|LQPyc%jo;J*yU=oDh8t9D`6PMj~ZR)A}3BQGC9JF%=CpUO~ zzch6_8eU0*CMk!hXcE<+*b90M+QgU{XwZw!)ZR1;(Oh;VPd%H8)f#&2MG$e{=!5$L z;1^`?U}xpY>}g!9y-<5gPw64e~O%??}4BMnzKOWCyk_$*4 zBzc{r=pv9&B+Ed`*apuA@emuQxX*QUo`!(2Zv`tq0iFVp3Ek7%bktDDPlzXe^ugk7 z;l#IooOIHgeYofncPq!{FPiLbPvqG2}S)bczZOy7+# zEVHW+)<#RqQf!4~U}09OANUUPNvEZJArKc0MLB((?lHu8;;R1^5+)D?gQNf zWqBN<-hGL%1S(Q4)o)SfS z?ZarM5V>&TN&^AVDY(G={J2C z(XaU+p0-T!H392WsFvr{^PZc)My#C({vPWm=~8;69%S3K8Oi$t4^;LUWp%k z5T$f~k&=VNyLg85zdwV{+T^aP1g4<~Q3BIW3cBq?XxfSQeoQ+RgWpvK9;*27P1kh}Kjt}D!hai|&3ZJnb1rrDOaWs@}_TdS`lJ%oSS~hz)dt$09jeyXJEaKll zt?!_yR#L6hn$#R=XRgT+C z4x@c%iS&TxEYZ7v$$^yO=xJd_(NHBv&SGY?vr)67eao4wM@Z~j`R}tY?x3bQ64Sn#roF|#8QR$H3PNw%JUgC>M|Hat2Wc1i2*ULpwct09Q@9Vv*NWVSiFgZ8ih!$ zBE(`yYAAF!QPrYAsvi6l@IB9nR#t;=1Hbq4a^SfP?6_q?S!r~T*E`VF&U=Wx^Bz1=4a19(Ckw4NBiipT2cIeH(YFFFt|we*uV8JrAs9R(a@haJcB8C)S3Nk7>*m zQX$_VAYJnE);)>d45e|V=TwJlT?x%N3s&6 z>{;mN0njDfG!3`{J17Kj0OTJLNL2tA02hB4kl!AcgD<*P{q~r0%o)EumLCgm1k)Z<6U$(AzLnxjB*sHU{`5eKFN|mbZ(bI08j{Ll3cuu*cR`$ofDrQH z9WB19;Y{ENG45#bbqxl~x+v9%QY@zG8G%$S_!U%raxgUx{A%*Ms}ei_EqN@#Ve043 z2D1cwkI~zRFJ$~)YPs}2u#{N;n?45b3u?kiC~(W&Tx6rXD2C-x^5H_2F@R;$GBp zZN}HJyHCq>LV*7r?1K5UOniUl(>xvI8FDX?BrgMLC6VKVTgg31@+CBv%C4%ByxvtcgEzaXS>$C`m3%`NW&%}Q6ij@eF*_mg zJ3bsM3d+l+5hb0pUm>JYpFyHsWm@?W_zv*RHR&&P!Zd`N-%ap^)x1jZ*>i|`X*Dq$ z(f_M7<{RU$(h@&w1?-1RvBih6LP&n&!<9Ua#rs-UfZ~ec)BJ~YM8hJ1$s7&40gAuz zDv&NI{}P-;$?de2tZhyrQritojed|i>1s@oEa=U_)FSX3$bW68+Q4rH&(llZ1&a=Z zr~O$y4iN)ibiVui0|$t2&q*jw!F|4gL%SFH7+<8qi`aO3vE~p2$VA3m8=*b_5tVDR zFV|U;s~m{7ll{ljk!wI6_4^DURtCghX0^O+I-y%Fms|rsLqp=B)CJ&I(U1?+DqC*^yOHd*7^DVV+0iv{m}qRNgP)Pz7N$Eq zRJjFwK{b9T@>A*?u;pOcATr;Bp9p6w^F4TXz6WpSd$8_&Pu|S;tJ2)2c6K()+bFIA^O{#1z^NS=hC-q4WW5|ZC<8jP(ef4}L2{Qaf} zW%4l4{C<;IrbGQA!ix;nlZnCZ?>FPq*wQS)!}y4&`|dhIbVYpf@d^*#4P1^Qy}G+z8(I z&n@J|e=7A<(B&$vpa8|oU!xS1lh+EGz#9cq$omwuLIGcmCKj|Y(Ys2)GM|DDpMuq{ z0!gyomt>PKiB;?6SxjE?OuW>L{BZTf2RSAA&NN=c^4>J5wD}C$O&e8>)cKz&qsEih zrE2lzu-MH(j9TtXveK7ijW5XtFA3kEwpl0P8||WXFvj-=HJK@VZ?q%!ztN5}hx|x2 z`7BcN;)+GRMNMYtLjdW+#d*h|-8kj zD?9JSU}bq#KDPr2adC8&Tw}%8U!lkGWCRdYKGlJ73;B{4gHbMGMElP)6@_G7JA1s|D?=)g^#uh&i0F93{ zD%fuc%KxI%bV5MMR;&Px#4-dBB=T+shwE&7O1cKp+}7|SE$KmqRS+cYIWjQCQ}}!1#0!sh7(U#E{ezFu4hKl#~Z5 zxks4-zO*G_>W2%C;?Y63f&`<2WDnB@S+j>>9%7%~!x(J#FvQ*QF?$$dvDf$70Afx% z$+fy3S<^)mgOrV5bEP(YG!VUW;?7}=P!AoKT;cuW9(Jx0-#_jVyf9F1{&5d+>1+^J z1AB>IgJ7Qq!9ESdq9Jw4E!dx<8jw20S73I4uP?CW9hj>buHS*V9=!N+l!V5|U%65b zg+}Ol{E(n$jF@}fFDOoGuUm0^#7wUXq{f2hk2Yxx4J!s;(kCQ_@jtW~!^VTxhN+%G zdv>heTYjlMEzIi{We@+Oo3Up(!?ist$?J+*13tr^oj3Pgzr-Ha$p+?imujrdJ{zJa zx3M7xUfUppW#=Z`|4U71WLEbp6Pn5EYMA9Sf&T~2^cOCM;@^UZF$bc3WO;P_?U<{W zBowSV8T@MSr5M+7u6;z5gOwn8JED2z;#1OqjTN_3;)u}|txbH}+lvs{Ky4F(a&K=l zwOuDCZqXs$3Y`DyO|QTk!I~+e8N8k%W|93Trig#XGv+94+!U4z4xYXzFS`RAE*qZ` zyx=%qZA9E@{$Yr;!_JZ`f|cAmt^i+plWZMVfi<)II`C$e-w0lpa0}UgT*7~169@Zg zTzrVJ5Y3_%B2!jk|1=a9-V;ns247BoN}!TQN=@KPkCzjr7O>_-shzw&QDXVo`sPH* zV81smWV}96V!U{7pEoAg9ylyrBhMku{a#+nwxYR5IL^gfDnP$rm$ zS6_TE9R6`~)xnuwd{svJw7fC)Q`GKTv1<1)Hawv2& zxhF|J0g(as0;Z~)VN>F@J3(*4NWQEwpKP1d7D&9SF((q>iXG6@X9# z@NK2|SoJa_f&H>B?f`F`-fHmLC9Eg=k6nV5%+&?&2IZ3?fr`$+o2VZ=o0P9*2cOxb zkwAi#!fPBph*2fWvB3*%88Zt-oYByr!XkP86p!;e!1tH?5 z&)P0Mu`j)XZh8eFf`9FIH3)Z4@g{PIl5h@*%TLxWBljT5n|f!)i5&{sGknCL?R>U$ha9Kwo%a83N}gBo}NQ3nu~h0%vaZQxk!C zZGc~9?^v+0ayHh?KKW;KmBi7-V$&#=@Jtrzmxu zx0O)Wc{^6=%M0dc`BU3vmc+8#I(+)_6i<@pCDvQU2vh7mc!@IGI^Rp|je8K7sFxsj zdI_a#+)H#L_1Z-G01KPQs(XnP^$@R#_#s&VzZt@-48H~2#-cL`$&pNZCZST>i5MDn zBBUSIi7-8GCqi!5w4+`?dJ&}HBlRMV{}J~hyRc(8h{n>$_%_F(G^C#xgDRGOVvpO9 za$IN=-hxH>exjVbB^Df@_UuK;7rT6;cxqpVmon7gFy{_@r0QJ$oHP356afzMJ?)F$fW0dJ1}$MX{)CMJN~N%XWliQ#g8se>=8W+n%YUDw5g+;7Fx5c_KRMaOnlHng0TA0G@m@TqaMVXBv^`KhpEoKgaBo zo*#&Xn*+De^F_vUCq3^<&)=bE3Ws>k;?@8?9}f>baJ1lWvG6$He&Eu}jOQWX$#27D z@_c%}i^hF49-;9J3<>Kk$iU`TU~qdY{Fm;Gu!ds6Ex^2}8%j@$rLTASd@txyKAH9{ zu{3kai_`AO173j?z+TSBrahZFc%+Kvfjg>5=^Cq|N+erVQ4QcoE7i-~gM2iYJmZA? zOHeLH(m0dGk6=g%1u=*>OZ(Y7us}}N0lszv+yPvAS1i{H+zq_r4mtLQeS}rg84dz! zXIQdJzB5b!+s?2O*mj0Bz}gu$0NT#5nOHkRe!p5f!%jdun&<)kv^&Fo#A!RjA!6+e zOChlz(ix^Np>~F~tMr8q@CB4`BOIXQBiRy-5@1E=AzM*nAx$KymOFuPiIY9y zgwH9ZE|=miNpPb&f!gvG)cdJT=g@R%QDod71k|Gg|W9NNjo zFko=h7%2L%i@Hlr{lTN|k{pV5jWw$`FVd`KfFsqc$^DQ6V;o9ELkgbheCJ*i$foxI z;gb5iH=f$a<=4e=#ID{zd3X!pAm#E0iV*0L44Fn0@&_x0{PZv(pX!DL2hA>jjv;>; zfzDv+IEw1Voz%1HhHIV+{)U|}Ut{F)%V3PBF$IPsV>>vA-v>c|A3iGP!S$4)z(=}x z$&hzSQFgp?=B@OQ^k|39*b(=VIXAcx8(cMm+rB6`$PI4$6@ptjOmJJf!A-Ei)ibyQ zih>*5;0{qJTW~~?R812zzZO*!ur_!}U`Lw3 zS{c|{R7}9S;57%o1xJ~{IvChmR7=1QOY%ArzXeB|FRqgxjGr^eQfgJfLSwu7Wz%k? z%g*-z3snKzg|lo*Dh^QkHd#mDo|~+LOvH9Tuhb@Mfw5hEvIg_XD%tI`ldJ^NqNP>2 z2FZf%fs&Yk%!}?JN$r0>sd?VA;M5{KjAlk4}?aUE_fm{c5k z4`4=wBH+HzVqjj!;s-mJ$>j(j`5*KP$$p}eD`2ccLM@*zmlp6WYG-`f<= z`~r9bLN0wFTccJCvh;<*FLq!Qu;LdxyzHUsVS@2+phL^2j|%p4dGY9IZvdTdcuhRG zhAkGCaA$9T@UO?Rc6R~!)T38kZxhc2u1fznjH@JPW+DxLfDe-3@L!5wd3SNalHw@m z?5au!qMVcRTsxa{;hXwsAa2r1Us*ZQ6emTzF2oNp;PY6l4)*A?c$-7Hy-?Aamyr^F z(|*CS;?!%JDwaPu-Yln|`)NE*<99G5AB}Lp+u`&FG1sN<*5cg8z@5OQe@WTYaok&W z%qV%`qX$;Re6_S6*v^H9h|R)a=@;^Ip)|0rtX2_@U}ZI0BV-TltPzsBYlOm`7e2_N zHNx!72SIVktoSeK(4kX%abLt-O5p-9nTAlVd5K836%Q-owaCQ(zak#k?*&amF)X;a zIQn1^Il3+T!62pXGbY&D)j_qjtAmC{tAnH;wmQgBsk=HzZdV5Zll>IoH)zOio%e}0 zZHF-)4JtW{NXA6fMBky&K|>x4zeekD76CvrK=wp^und~zypAV;}tesXS_nH;}xh_`^20>qXktZ z(IiTTN;V~Xnslx{C43O8DJcUSVM@Y>cEJn+?wJIer1>UJJ7`jBQ>1kDDXPw=sD7ms zt$OV~Orgq}n53OcLP}XHaQW?{L&{_a@o@4OMfOUDV8PG28wGr#`UMI2X(s}^x@?Jmi8ZGakXLS29Qnw!y?(}2i zQ9p)e%9j;~5T{+HdN(i*&xvctM(+laPv^UVxRUR(F1ES~#_=>{X*zFkz19qP&ZX@=G#;Wc2xG>; zbWH0I+I-ZWd`kQS+}IGI&VD79x*x;cs-$^5J^Qs-=3($2ruem3$h`^uiaFXZLH_KX zgk#``CBknTggi1hVJzj$;3{BdlUc4Oj*pWpHxp}?mmvUV&Su$in`JM297$<|4#XhhBaoRqxnOGljwE=4%SRRlXLsmRX|B3Ah+-Pe_$35D`wsmf3I3hF)$53}*o z>Fh@1!sc5<)s$O`PPpNN*{y+4oYX&nvXp9gL6;{E{*(Ea8{aD zl0#WZ4rL{gI+c{CQb|=PXsx8$f=UYD$7$r2Y9&cNwuBQF!|Vf1J}hTGg7contAcQ_ zGac0X0grPh-vWH`_Axon-EuS#sp&m6&a#t6OF175P7P4DY;;%+|BXl?HcN%O0=EDs z>SN(t;CA8<#)do&p^Ny2v6*SWy})t|0;X3yS79l_W5IL7)di4@h~sPp*(!e&9E?*3 zeBs)1ZJ}WsGBtoeXXAJ-_BLn0Jw;%4(wE-Gs}XGUeHqEYzUcc3VAc24ght=j1FF7n zA~gE`SDH#y@MV<+3Vu4MQ}+&K-8+{P+|=TU>Op8S#yF2?IgS6&$bao* z^fjP!B4a0_Lt)HVj&z(+AEOZ}2l)u4V;98HV?FEtz{mN+`>O0Ls?s-PHp9>)K&>JfYw$5Fkf32!rMf|uidewT3acW{&jF7>ApFhdJ*}) z1AID@d}};>6TA`u&b~Juz6M+a%mL5KzzxL5j|<)h9)KTKaboXr=^=;jj|asZ95vJJ z-fTUxqrA-onPK#u2215vY_FAnZ(KT{1HgA@QtmY+X1VG%hqA;DhU&{)LxdbCcFr^lelD@^nbm?%g4%bK=5qJ?}o8*9FXPO4|-t-JP&A~ z3(?1U_${6s%do#I!;gJka05CyUaZN*lVZWO4o6xu>~SmLSkj5y-p4FIMI%6g%Tu&u zKk2_<%wR}A$L}7Dh{7MCEZCVZnHmdz0?dn9=9w=yxSVIcgeE{kdgi>yu@~D@s=M zHXerzDDvn`7jiSi2(HxFPs6=W-P*8fV+V4 zioZPdag>DE90n^ zLtX`=0#4G5LWhkUOPj(v^c#LFfUpjaAR)AevI*8bwFp1-wf&_T$K4b;25Map?_`j@Jjwi!Ck@&J}iwjSzy$+$uD4#A^L`(2G3H3|@zL#th3#nr&f!!lK zqP7$6)el*x%WY%f?!XO<^P*9r3tNEEyaUb!c(EgOo3(I9ACg;r7&S_cTo8EFD9I@R zA!jZfjCs3Qm<8@(%sOL%8|e`3jD?(`+ZoFM-Rg{mJ(iuZlo9KUrGi*zEY-m7jD_K` zHtdWg;&#Tu8>|O9ut!AY)rpM0>JcW|bF|D&YjD%@Ct{582ekYQ)p8SE;&45yggB~Q zvU^?$kyF=1FMUig4x(2BAr|x?;}Jl2JmOIH$qwasgx7ZX=|m+@rB7~UsVtXwCp!T1 z;}N=Z#v_($pDelWW}c7-ca0X@^v##U2aiOO!;t#m(zeY(;Nc!OB;UPOyY;E?%FjV$ zPWdYuzya_&C6)vH6@J*;2d0ziK zqTtnp-zH=IpwHnGmyJ&SS^3vszwwFC<{;*uAvv$`UkmNz)ziPCZz}NhSP6m z4|v{1xFKOKP0t1WF{p%zdW%vwt{SPMEic;ohvT~k*P)IdrLp&qVcbpQ2^znn@gj}4 zX?(E*#+5W~qVWqF57U@>J&f{1G@RQKz^5glCW z@Xf}LLUKBJ=RkxuJ$EBu8DT~4I=~9Rl9S}5+-kt#lt=C^xT~j^?Zevvn*eZ0mk5v7`uNR0EOnnlGh>UO;U2-AK8;X5p$x2_P^Ld*PR1>-a1IkyY z)6Z){C=UKVu}knqi0C(HP7>{nT>I6?GqL&9 za~q(3>ba9}_)k6e(!-y^%Mttlp#9XdcL=b4>bVTqe(Je`_y>OG47jfbjtch^`_wZF zIQb&ff;n(q-g|$P_3=85AsU<91Y9*KCH%i zWW(P%7S-mY6>5{*txe%kZ8p)j)@CcP)@BDFYBS5)2Acka!qHiR+kAxHug^eYnxXBKQ^z6T#n{-zQftP z&UQJP7i*ta0>4j30>V<%R3FQF=U6xncn~=A=%`>6FfVk4US==z@W}FwmSSI7IUJPK z!E*0dI2AZS{OG96WZ+8TUlvE3)mc z2DL-o`NnqjL){uALx;KzfFmC2@)*lzX5o=yS}1imp7pp*6?o2sZi}FZoF4LPH47&V@=3MbP!;=}nqg=R#G)Iv1)1UgNnC z7iZkL5VS~U;t#P$gkv3&vsyvBK8f8*wXT=TG* zO5aAz!&AjU#^L@qVg+kbv(XLNb-NO{A9h}i`<`r$7(hyKXhSHQBkGZWVGe9Cn+ z*&G2JZH^$;MO_aUqqG|&$Ym0~iajA-bP@y~WFQ&QNf6|662w->X>&a+aS}u&a67O) z38IVl^(2U1U|oP30JIBG-qQR6R2i^cfT{r21*mF3y8u;BtP4<0#AX4i70?dNI)Fzs zG_!KY$+5ElMd~g<33q1ked6$_?5hEF*wIKh`~b6^ z9?Sr<2ha{M2Z`+f6J=xvm{r6&z-$2il!h0S+g3#9L!(e;I~n!z9OboFU`SaV#LvoU z$&rzqCID?&RRY_xsv$OV+5qUtDVO8i@*;QTbR6wx#e!x;$V>P*2!z8qF#CqfF)%yc z;Ze!K|Hmt*d{0~Cv>Cbb7p|?GcG9=XX+N;a=@6im)6%0NIjtmAIjsj)Ic)*7W#0*G z%f64;l)cx$vJa^v(uBjyX)UZ&PMZO(oOTeaoc01+IUOQaIZYh>smf_JqVpFSIc;Fn zMowD2dI2 zlxiiQ71nxU71kDDE3BQwDy)6Lk!twFIz}q3)aLK;pLtM)k`HBY@FkSvfkt=}z$&~| z0!4W10j=;h0juz~0@||c0JdeD}p5Abs@yt2UY&zrGaAro^|tO{EM1sz8@~Wt9S*hLs9*6`&R9T4ELGMqn$@EyOC&?ZBUoK!^W$AIo=$4y7Lc zFK{m~4#kTWAx5LbGtMFeITs;P|Ab>+>*2?R2<}WDpl3VzYW%Rtm$5XHFW_kMMf}N4 zzTQKcn-K*kU)~3J913hFU){W~ldnEtoqP=f+R0bR@%hPD0@zNzDuH$KRRd@zUk$`M z`D!LMldm>FJNfDa{Prk^V$(NzSPQGf9K-IU6fVOG30NbYBPONPs@M?CpT zCeRc`w+=zKu5Wc~FS6zzn%AxCB20G%M(*lX;gN0~q;DN8lzuJJt!Y53TdR26=+;_7 z)vb-dc4P}^E1(_NRzMfAseoQU)vW`B!w(ipz77v&u#f<>y0wy6b!!c<)vXQ0s#}|Z zKPBCIa6IOw??N|N62=t{2#D^%@{985ivf8IPKB_k~a@ zu~HXpiXo5oh1lbc7vg4SF#n=3`Ny!(>z%-0WKTmG;7AvGWy4hkJY?SRM?l*ji+gRK!fX4qB0MH$|OmBvjl5h zxTfIe9~ldq!P}92;F+facLC3Sd*)?NW6UJ5;PuJbZ>P`D0LCJK+5gD#9nAqcd_!K* zMYD|1yrNkFsIO>N6R!A*<|q74Ws3fKK+0#5@yZUEO9r;{zuR$(yXQRUU;9>SZvv%L`dWduJ^62pcsr&e$ zn7k4ala(FFU=!%!(P#@BsVIZ2eZrB#o!LWc^?)Ne_a~6lS{h%WaT<+>X#9~zQ74Q; zXxvESKQ!{Ym^b|?XdR7vY5aqR_~pu1a>Jj&NYNmbhVUe^MG`dx_A34{v0zv1@8QL* zP~h3Q%E#c|?DvD&4&`?>w|2N}e$O7PceXYjmN<0labvOz9e&W}!QKwtV=q6f1|LK% zCH5H~ELFR42#NcyZCt|TTbn1S3+XcV9Un9*XJ!yu_E?9{em`}jLo=OmEOsx`JFIGW zkXJ?k<$+`Fd?NH=)CVOeA^Y)|Y}QK{T(DUWc7-b8KjA3|yOK`5SdP1o4*_cdGhJ~{^hTrH&rxr*5-yi*z#V|DzM#~NOka4> zBT-Qpqhf2NF=kOZskFE=AZo}ZxZ$6mTSw`HPh%rnwiG^swF)bt+^R(S9^oU|WCbesRz&|l})>Q-B9dmVVf~5d?PV)xvsXOLK-SV;Al+UIJx*oyl zj=5$)Er~arfU_w$dmlHbz7cLYD#B9C@Per>$CjSS4#!L{;5jSSJ!X5UQ4Wu0e6nM% zjcGAE<~jkP>G%w@2XKppESek=vga@H$6&h7)$S@00y@U!5u zli|V4f-3;+EV!CjXTkNrb{5=3th3-&;HXSKu_g2D%_sz3Y+E}`OLw?5M~k2fCB}Xvur)@Us}Z_$?wC7)9;G2?Zlvx4nmPf-7DRi|IF`nVk@0;Z`GCwhMEBCz z_HGzg(wP4X7)>x_@Pq#z!wp!&ymrISALC19ccAQSWp@K>W%m)9${qyN$}Tx2U)c#@ zTiKPwrm|}QwXz!sSE}r2uNxbNv)7H34a4qr6YlJFBWJ^~d)%Cc_Ba~Yf;PL z9w_-{6bDOvH{dqnX?|D*+y%Vl(eYrh*3LvJ2plG@oZ`0SyyD=i$|+o1exW${lFLzW z4K7E)9p-QrT%F5Na0fU%DmX87fpZ(l@`7*c4alSCZ{%mc<#0@JPAs4yQ`yTL%`Og^ z!U5t_W1*z385nJuDJuhJTV|>%h|!jrqH189ny3gQ%iFOays#CH>fy*A>*sy|+(Zw{ zbKeJSHIO?2Isgy8M3hxGpnbp!XqD9KgK=zJKW8*YO}U}%wUpoa3t8{JTe zvaq_L23U1N1EJ9k&48*K+5m0Yb^_b7?IAY0p&!t81ca;B4eWg#-9YN<2H}owAa`|x za7Q34uP@dN4yUYp?e8P*Zu_mGFQNppA# za20T7Sy8Y|^Tu&_rY#nn;Bd~T?YqUam-%#f9$eJYcUvs{A#fw`*6GpV>A)?-^GBs_ zt%Y-3lkiL2Ixe_MLuEB5=8O+6b2!`wZ7$D@4(zLRbf3967QN3aoUiSoB5jzQAtZLl zhe_^+DclK@+znIsaAEHF34}TK;|-H)H?ea*Oma8x!kxU6yLlIG@(!EuCR9VaR_%|0 zyMWid9q*X_5i=p)za%DaPY)1_x71Iy=GZ4@E=602dLvE*{qlToMDFxPhDIHT^r_qB z`%u;~dZ?%m74Gz*!ks>p-0ee!JAEj5q+o!hm-4=gBu+5BR2i`LQWXZWm#PNTUaB5Y zd#NTst4UjdttRatHkz~>@H5{_MIR!Wjfx|QI+;u8em&A4aBBsngO+wX(L>9C&Lk=)5(y!os4j&lOcCI8R1SRLmtV%CpHT~ zBx}*hgd3E{yiODcOPw7|5AmjE06GBt8SGrBIXM88qhGvJO?r8NP#Lg2_62U_{ReyO z3;9&u)5C)-x5vJa7vpCS4sI|!fkIXNQw?YvSv|0AWKG1Tk+lMT7W5Ct4bCXJ7*uu^Ft0Oc+>c-R zVk~TM?%RP>`|BCC(@U(29NzaMwNpW8#(Fx3n5$CzR#Jb2a2>i*bmrrDoLwdu~78Lj-(;KFN zwKuFXkP=x7sM6R7sM6R1Xv@AG*p_`4u_^mrKt~$Kpw8X$Cm-9NANNyHe;S*&ixE#G zjmhgc|ZFw0Zd-6ER9J<}mxuTi5>%etH8cHJ%FvhEhn zz+oFTNIwc+j`sTEuIBBiOuSf*_Oe{wbK+^=EpVI}RV@2E+JSX{M;D;o-_Z+f_je2c z+x;EhnbH1^GC;e(qk>rXcT^Lb{T=myc1v9our7h~qj#f_SzQ9R)H&(&n{bhY3*Fyg zsomcZaoyix`HK5HS`nw+-_b#=`#ZXUb)oxmO^bV=P9Lmwf5#x9?(Zl$EArJ{;7g9> zOTacW*1WK}?>uvMnm#mlC?A?HhV5R+9Blc}`~cAH4CNt;c`9dM@XtY6wsjRr-gKqN)P4EwUEaw#Y_eqo`T{ zRZ;y3DUp_v?TL3l%;t^^*9vO zEEI+;6LaA*^+eW;9>(G(S1mb!Y)4k?3T8L3JAmZ8e9Kc;y@ENO_Rb2XaA)=<+?jom zGoN+^Q@AtxBG2bDTEQ$~G;6nl*~c8|3g#fOu3(m&4Xi7e31DhPrmB)yS1@aUZEB(k zD64u)vw|sQyFE&j3qMiWG7nhsk+N+-2=3}nnaN1BLcA{dhmuPWcLV%9q?N zU*S&qlG_|%jJ)Csv8?_yn>5SnPaCki`ojUXyZS@!uKtkcSARO`TUUR2fbHr}KkyBDDRRE{l)Sk7- zq@8{@0lV7sGt#=P_LS*&tEQLJ?+)PqPQM+6h*4K%H;kKU%w7&7zc-|lG<83WOKAL< z#%2$|xC_P%NQ8GTdV)u>WD&-;#6A#~^9jD$2Lf#OfdJZlAm`{lkWp~Xi(-X+Amfy7 zOqvSL-i>yqr{_M9GhB`l@CZ%@nu-w9hzul~h;ZhPP+V4V}T6Ph_;51`Ho`K=y1 z0xdZ&KLSk?n-OR=pq&#E4!=y%LJww6*bZptgk8isC+r30=!eS`1H`&a;hpb{6+W?5 z&=D+C%tMLs6196V_6=yIk#kOHTZC|#6PiWoqj-DJKm4-wUYq0 zwNpi`wNnoqN$lsVcEV>+_{~Vaf4!f361a_dS)O|wu+u=!&3XWJZq^T|i%3I&w(LtU z%$I$d*pz)0;AediNjeO4A@ayxq_GyM_HQ)O*i5X_*a@uC*iUGru@vi0DvgzZwnXZI z?QFG$*px^oph{yO;qcPvT?7wC8WVt48mov^SJVSrX>2A|X>14nJWFFY((m77q_K~A zG153_Af>Sc3r8xA2|$&`NxhLuiDyAJD2$KwEI7h|(5Znpm4LpbBj* z;YvdL`QLxG<~>^&n}eMcC=QnTzp?hvLfq{K|Kd6XuFu&1lF3LeFFOYbM(K?WaTDoI zk5kUh+yAx~lq%;+g}*%ilulMI@_W<_jds$Jy1M{`e{Aa{2t3l)@(7CJ-_C;nsS*7i zV%66}z$*IbOC!;*1ys>*2DGBz0c=ITm)MB@5TJ^F;+6!sQQ$u_`Z@uu`nu9U>gyUn)z=Mxs;`>?ZP~X0+p_N@Hf7%f z_?g$&4_l2KJ%XZ0_9N;3ZAK*d&2=l1{MNUMWCNkm#%+KqlHGu|SO$P?v6Qw)#Zn2V zB3Vzkk~S8RY@r7;gy;aYBH2T%A~^tTMY80|yhx^jKd&PB<0@=-Mfy?r@(9YqMU7`4 zL0KL>f@+3i`v|HHSRX-k0@_DVJ;3%6R6nqN1T_S#uNaqJm45`4Ce}w#RmA2IR4t%= z1l0(4wLXFx zAk;@t-qow{C6A!WU~3;iF?|d0(??JaweM~2Wo-Efir04d!7(2}@iJ5%K~*4FeFRkv zn12LCccbugzBx@AJ%Zviryf51+l``Xm4IZL(`_IX)gYi9SY8t;s!BlHB5Qzci)I#^$`@T%p)u3pflQ|T}B6;3D-wZ)_v4IaU(kDtQcffJ2#TA zJ`6e8z6S=U-7^?abAV<|f0r4~v>{W#(Qsxu>^?(Fsw)j=_R~E4$>br& zL*F}@hp*;%^m`BC(i{(V=l6ORZ7E+L9U|Pe@H4mObE62w{oE+&Jp3FfR%)eK>FTAp z^x8;@(}0CiERWrmuk_UfMvqJ0oveZ<{TdzbvC@b8rfoESTaOOz&X3>7kq!HffuYeu zwTZCBL$zo;7bpJ&cXcKYqDY=fql3l=H0D17<6;`iX>c?B45Y(rf|!yN3hX^bU~5?} z_v8h3U8dZ52SoV)-4ni*1a<%)=ioIR|B&vi-Pb(^_xz@4TQ{luV2|9qCjD;>U~A*y zUk>GK(r-8%uSvh^P`)P3@1QiI$oQJH{X7*HZ{5#R376NTM^RVcqI@RsnsiJ#H3nak zw%fl&gEU3Eze(l6(}-S^&hgs|Ev&|6(oow850{481^8(<)Lz7?-OT{t8Z=aCr`~nU z$m-v5w(~4$r}utV+vzOSq#WVSX>Zj2N^lc%N16YYF~83IcPi{Y%kA&;IsZ*=@+dUo z)ih>22IDXq@};xOiT+Gu%HuE&rExxu$7#%Y0>&*gCjJV>@igwHvEHv?>`y~NISgpV zdb^>Oqru}qWE`5kH{K>=-9GE*%7ANtG5?qe*hrX*g&}Yoojm6U(}Cy0{{*M{BYtW; z!&mS+;TEsoL6M&b*V!-RS0%#TaHGcr6;=Tc0CSQu2e{y6A%8|^YaO{l7^Hj#;)l8H* z+NmBeuONNY=y-`kMlzP#@i=5HFU2BtB7{WJ%~SNYqUil)Up%2>KL6q8{s`O#4AC0^ z>>^ar>!*`9jOZcO0?~`Oirx_1=0%UTCHO&4c_MnH*Go_$dKJJ{^lFHI;EU)r0$b5* zC$^&3OOh8o20j`;|INHoCwB&4hDL)eQY(6Z;u|yfkLfj32o6PW0I9U1=iLCTqE`lN zMX!QbMXwq-lHc%Elzlz!pi06wSUtd2^q6E3y|;|$k&EcPl|NN%KJKaL(ORh;L@QnW zAi9-_(l4a}=0%TzI-+N(BYKZe*X`R2qmjn>G;XKy5RHG(pv8=>A;i04_`4$|v2GzY z5-{7-h?<+^Pz z;#%VoS7l?lRW=bK-qsmxPpNS4}$ z6md;e#5Glx+f+qdQ)RiEs;{Cf??$RNWvV8{vs*!MEk~+0E1<#6(4w?m2d+2oji)*s zzS+!CxT{UG8dYVRW<9Ys%_d;mG+T+aX?6hHWQ8XpP2IQwkqo{C{13!h&&7i;0Q0g1Q;4pWfL5(!^Vt9BtxEg4@K& zMJa3Jv0NKZo<>UmZWE`qaAyfXxYH{M*T!Vs+r|`eZA_M1sRb8B#QWp$vrXJ`CzZ6G zzC7wHNo^CiuHC*;?44ARyQvcHq>9{4)qW}hwuxVaM$3yFsXD)aN|T|j+hi=aO-6d( zE=rLO{CbJCi4OqVChpywZ{lUZHd*0;6j9t@6F*ebXPdZ9uWjNsz2r`M4INQ>O%tzS zeA>jBBe#i@&&Lnpvx)Oky2c%PBlBrG^cKK;6K9~~@pIO8Nuwq{iw;=q+unlt#MX;Q z&8J4VkuCWMTfBUzJUYQ~2yOc+Y`zF~KhU)DZv4v}p8t*(1v+zVEHfK{wIeZ^uf#G8 zxQqB}v2ZW=>m~krOpaw80Olup`RQ^Gslc(U8GgFFjJSk?6B}RzA*I~lO1^Eoh~I(p`wGE#4i+2l zD*RiOz%(LNR$y9)RbbkQRbaY+t-$mGTY(uMUIT&gIuWJ{Oaj;y7?CV|Jy`^%(pZYX z)B;<9X(DzG4lY5yU7?udd?D++rV+trIg8xpUg z&LjmLXm8WncTL`iaa|PdvDCM*v)V;75L=@@>H+^%*U zBygp*)8$-g#bwT(8R@Yze43M-^&5<4PJ-^;3X-`OMl->CbusTO+?YgB)l);rOA zZ^UxDyllC7Z)EJDc#e%^^SzN`;2~hXH{t=8{xtvI$dw3nGD794AsfQ(PVjZeacao= z4(BNs>$qG`xv=i-DHjpf6FwN`qX<)E6Q_nSOv`PU5!Wy+w_!%y3G*o%CQc1un3mfx zBd%duZo`bY6XyTgF!A09!?fIn8F3BMavNsEoiJxWu0&jLY6!!$+=dx(4byTPX2eaH zsF^T{VA7~UR_!LhRlxStkXqi?Q$rew#al27&Xyr1Day~Ku^{d8WkvFNWoy4^XZe6~ z3!In1`Jydh=xBQ*-}9D1KBI0VgiYobMTOnSFN)*~d@YRr?jrdJL_4tk2t*gL^AQM+ z2i!04NohG>;3F5A#{Z~)TF8j+D~gU3C3lpPQmd3uue4pgQtCz8R4EMrj#Mehap&I8 zkfb|{kcEq|Dp%VB*_9E24TK6I}5b9op=2iO2 zKkD8Va@S71xZB~T3#UrYbQJ~L-UWb*e8D&T)Ewn9;JF@dMIe?Jf$)yM?*ABRafXe2D zZs0{b%QMkFLbG{ckkD*ic#pmz!ISH94`Cu!@^eB_ZCQ*d=D|i)n?tGE97@$j>a4=# zsjR{z5UL7HC174)z6fv56wOj`fT(eadaHpatKJ%bRcM+4tdV(rRvR6tKK56>do>M)mts% zv_jKJtU}WQtU~j+rp0~Rza7>pG+l%$G`)FWuNC-`K5_uIR`YmWdCgNsteWRLs2sPC zBzOBr%WWU&%~*o5?cR{aKT{g{zIp|MgEY#Em#4#$-tBAa)v&X#tv3MMhrX?FHwo_S z;utxF)Gm%)2+m~L*Qz6~YfBN=RUFIhDo(_86~}VBTms$A*Q)C=z%~dNy&pZdw{uk!$*Mq#8{u@!J9+CHZ`)m z_H#rnX)&*@OW*P&?q!i2I|_OaoP89y)Nm=L;I@X-oSF}g3E%q~zHLgZHGCWf+-?n% zyESaNtzj7jeSnDeV?;U%vRqY#L#Zl8BgnnrT1P?afNp0fck1P-sES&oO;trBU|v=1 zt_juE97|PIh?;1D2dgI9fmKa(0a`WD3vAWI0I*dP9y)JT6J>x_O;ix8ny4n$LqPzo znrH%6HE|J==%@)x9W`+cTsUgNQmZB+u4=;a71cy5;H?XRSmo+V}n&^YI zs)<2DRTCw5N4~~E;+X^WHRBcx#D4>kD%lSMpwYj_Ab3wRowB=PEsu7^CJz2bMZ@Fc&Vk zmZ_@RQdjliWw>fCCoH%QHvsBxg zH|smFe-QS|5rri3G2E!bjm*Ey)Tj@9fk_6Jcpb__J`Y>`F$+xOpMjl3=BXrdAfHI@ z9ygK6y-jUvA}x&)i3lW-ckHT(5d}l ztV2s1dyE!%&3HaC!IEsoXiG}+T-_oQf731r_ETC+dIz3C zD2Kj*bv$@+Cvh!{OzVARV(JB#?>zRzvFz!lJ%vHeZ5lMkz|+?EgP*v3 zF3!ky_%@{oIddoO3^2I${Zv7lSl>sUn0Luj1_6>}ZQ`Z4UWt+_DL~q@XMMxT+{;l4 zr8u(;GAgF~5F|;^uU@7x(W7G-mPg6Gz70(TgOL2xu1F z&BO0|-$PMsd!q5U2|d=tQd>BDy|a;gan3rR1VrIVzEJOC%WjM19oeqSz);XqCgVZ2 z*w3+*3Vcodz71Pen^ahW*>Ngtl7_RE6;{dMhN&<~G=|O|YavRsWC>+2woD_XBoYm= zbwq<)L_?gP55_8p0%NA9q1=-jV-_XFup{p5gks2a;5CIBrtJ8jQiVLmF zX1Y9M1(&C*%QxYY&z!>T(HuMJ^1{4JK8%}oi!U2-dT93(h=HW`*RY|FD76y3Ivr4_ zk;|RnGN5x_H{v(#=lMunpCu4giA3@n!X=x2RD#luAI&!|aw)+A=ONo-njt;qXV?y_ zfW=wT+ZhskVLgl&Da)kdwFv?7b})33k>&kyW7?n}yy@}*KX_mHCbW;o3uPVSkJUOz z`O8cUBEoT&u%zH50Hz>h3Tm17cm0sDHxhqBF-ry2A!bIj+N7`6L6kSqQOKK&0VR7h zD96EJ-!$1z;>NU1;!&979MDOX`jsSuCR1RGTb(`6QE8x zkdH=fgRI>ZhwuL#jH6UIkr~0nWh8^~wWzI-!}k_ylsn=%4&B><4_TDqu)Pb=jMPLe zuueH9FRarQN8}h73{R68j60<(c>{uZ7Cc9z`w0xXAwRm8ffGi^ft^xLgO6!P7e$g>LjGS#MzKkq ze`flUXmLRX?arK%+?i978cmg=1oDzPKc*eR!ECQ68<`NYcNHWKPma{CvKa zE1BFe#lbUh$Lo)Vi`(9A*u{#&=U_KT>=y@rRd>{E+$-1ba_*HApC!xTI$mr@f@ETG zRFe|rxZ?0Fc&(xx@aw>}z<7?9c?GzUIF8_=guTjyjVn&Q<3u>kE0*Y57)q=-#f0(_ zS@DfsJMC;zx=8wpQuB3Um1dw%ufU&zkUhCnb@oPZG3zvl?aSXcVT(`)#o5Pd7!w|j z;D=`LkV8!~NXin-!&Y#%g*%yJU0Av!nzlq0^q>D$ z5XSzzM9@AvV}adTOtR*h3d&YF{E+v8IS$<>h3?Vei7nR;D*KryldHs)>!-Ks7wT~w zdccidW)HX@M4L`rwZ2#+x8{P7tZ>TG5T9O&j(8f@T)D_hJQKT;???0fPI0&~aGLnL z#bFt66)>7{W)g5Mv8-IkT4{1B)P#iekPV5;ca8MjRvaD$AFYbN2;4#6o0^ciiMfDk z#tAa)z76a#xXauGqmLdtpp>E|!U2sVq?_~uu>MoAIBg_`Q?r0;QkFu>%omHNVhk<8 zx4{3e&%zt?qhRo2=>(?)F_)eg%l;d|TkF&j*?+mTK6)xg&n5%d_~nLha$$gFYZ0KA ztYGrRcxo5Th?MgLAICYvF5RtB&SM^~O+Tu1C(`TE%qFj64Si54#{$7MrZh6ZO!r4m ztrRYo-JeD5!D~zcE;hMfuUPhFho_Frx(_*1heo9-dRzp{$Pb~l%=F@ z4+O_rFAQ#N>N?8ofjh65*_%J!%-*vWnH3q?3w19e-#w8;UT5MLEbvqNDd(zmaFkj4 z?n2uE4wxNY97d5BRO8y@%nN$8=1*ggH72?~Mt6W8P*iwHbl?Tit&P-Z8@~==GF};N z4y_Q`hOlJhA3ZXW0>p{h4qK^}jNGYIiTq=! zRLMBwu0h;^6)>scFApzZwVzm8yySM!gfoyBZy|m%q_%^9>W|?2el++eKV(s02mhoP zlc)Z6ZVbq5tV}G;b1F)3S|xWuB$90oiq4~a$RQp0xAP3+E(;PCPWe+0k{Y;iB zh>^g+_Q4X-ek(-mDCUtzYHfVzC9$Vj5qkA$~6= z62DzUFVa~585q0Jkb4_k3v@K;6*T?~V+JzpU5CzDD)oc&@xnWEdSpC&2e=;i(E016 z-U8+|8Na$MV&QrhK#*VuoSOjLN<1rD0?2E7I-8!3E9IQ6ZnNwZrRxg~HdV?s%XQE8 z(;GRwZZq8EC11JdV2T>z>1S%q%~AM=ZFxb3`X~m6eUNi_+3!ZBQVy5b7bB@*5`v@h zl_%Vh8gfT!gyyA&RHY`^UgPLuh{wc(Z5+N*$?Xse_ECFkp1K`k+4(M?m7S-Q;~$jZ zPD=UU9VNI(>48FnTF2HcLE{>3cu5I%vjmS@O$i=1k`lDyFC}*D3MJ@>|Hw=5i<%3r z76xC5rw(y=AVsSLl zC6UFH--DhRAZaFFf_`E%31+t$IiG=c6Py$ews!bRm3~MpJQntSY$Aum zaz_FW63@yl1uS`p6`ea6FhRIkxCF405FQr-*AQ{wM-^LI7sYd1H;B^~e40(dy;5sZFEK|N09c*koqh+0kRe{hzpqY!3rlwi=OLHUg2wYqHO31!fT+ zD=@S8V(i#w1mBOFs-?I})t;;Cc3gA{eiRQbo&$i3e4}_t^kP1BPTAF?U?%rL@X0zG z2Md>X(zhZGUMz(Tu1a?)-9o6B9JC%7GD-Snbuor6{^TXkyhM}DAO{y>>NxHaC&+&m z2Ki5{g1JGGq;^mb5+oiTCdWRfVKP>d)S<4EFT=?c*9l4LJFb(<;Uqd!fuWG3u63Pk zkNq*vT;fDTlIn4t>KzD`WuHu2ceVmjr>Q%s z)5rbPnaZV7ABVsD;Uzi#4=^UdkVyEM@x&^-x&~CwR0k&K4+kx#C{4QYKg5L{hx8M&D>lS>kC)$Ev257h7 zR{*ck%b@$CIGvY4N$nPVmb7r^Wl-`Jx8PSJPP+xao>;fwHvxahD|W50)-CuQgt`U4 zdzHQ*R*z^carA=1_mVf*x}jK+q>g}C^AfSz5PizeTqh){7T3v+aB`RHgd}yN>!b!w z9<)vlMA+-3p?Q74HxnI)}!k(Y>3A9*yWTKr(kZ8eSi3$J*DBMz9ZV)LoE!6LbjWh%WFoz|u$L z?#qB_!sgtIfVG4t=3W47A)KCj7O;b`X(q>;J%o$B>}bTm>j3=fngZXUIOQ(=K78e^ z1=29%^T8<5GQKFn^R47`8e75;4R8;9-widByBXp3Gs=$K9e_h7O+N!HeN^r~1ehkg zG`AeEity0fF92%^P5PS%>!a~9dm`ikSC$3Es~^9*_Nd5&nj&j6!LZ1>2rtO7$odFP zk$H~+nj%XRnkcIYo1!QuF#N?hDIW3Fi&e-XYXU@Z&17-4%5AtaSDH^vd5PDniA?E9 znayQ!)zLVahTOZvmfp@7WIf8#`}>usI|h4aZV<4WaC(kK)<<}k6xkr5DYBBs#R024 zO_(n-s&7+dUiMuC#fxTLGX1tg*X_mL}d~@TG%*3w{+UwzHz)C>-w6=!0A5n>;hPk6i3-gwwOH1M=Dkzq;!5D-O-QzOivzX+=3WY^qdIxli{+@( zdx(v4>L)b%e8}9Taw>fica3tYAT-LUmQdx9Ft41(Fwd%-TE$9~QwN|`PTg{w1(d(S z2}olfE#k3YJz!p(7OdMID_A$ED~?60O|%czX59e(lF#+SDEm`E-5*SP6^;Hvi{Q@% z?v5#>XOMOk-ph*-RcZ2X)>dTc-%t$iK$e2R>taX?cEV6oOpay$?(*HUWj{97ThMxX zc9PNyaJQ~HJJF%Jmx3`4t(zFj7P)-)?0+<993RW7dlz(&xn zaWN6QN@62+HH4#f-AQh?o~02`MD~74ID7-_7At9heSo$B4$5sQ1sbWvn#2iA@p?w&f&=vCeBPWK3+j}w z56(vEE=AQ%S)oy`%~BM?HELK^khcB{=>9amN8>6Q(x!eAS^S=;_(f}RG|>|@=tSDt zY#(d<$ZX*XYAP1oe1pm5&)67Jv22ISXJxNeT4&nI<)9^4(8co5MSuyyR4jKsa3%3O zxw8Rl2)E6h0oXt|J$EW#v)m1u0eN8(!o{ET&y>f(>;B~hcPL+~_PXD@X9XN zyI%vr+R#Hv*9BeG+R!X|JR3hQC>NH)7SOa*CAhwTA6ApITuqL6enoj3TIW}kr<3Ma zlqU&|R+J}#x~UKohjtEbwkNHXl|(CT({!F|X1{{tdjIwUf{+xAqvvvfSEFtjn!K#Adm*6idnQ$mP~F;kMCo>t;x{yWF}l zv$2u0+ft;h5B$d+4^-$QjsO{@n`6ZS_Lq<&&*b~J93Pr@4AS*)?+ zX2ZBBLPEuOZYeB&W<$9fB{>zL1p86QZx|e#X zLzJ`AD?h?debMFhKAu77jYV{jjRi+JoLdvWbu}z-&BU*KvLE)=U_}h&4ZD#0A!~s* zEQ@FOJhTzm?oY&M3OSM@`3nkyB%F-_a|_&*-xtd<+-~BFCCGk28{`nM4YCwZ15A+O zgHH|0FA*QrfYwJnu=UYY=%bZBZV(@xj*lM4M}MJ@A^P~4_$b4J1{+5Ou#KY{*hy7A zX!)(;quKG%=J@C=^wC2f=ZKF1$A^a{VjD*puq{mUGM=|HMC8JHE!8%N2uXPAPjM^| z9G5>7%U!ZBUJxa|IJ_6I8*rPlqVP`OKHv?vh=;cUb9Fnh{rcfgfJ>eOK6Cxx24G&4 zl*Fy;2iH1$o4Rn@U8Udce7p_&Emw7%rWS)FcpO`PG>-04o8vc`S~1kKwq6 z_ivDtHS)futOeMntR2{6s3$Q=tYpITb9irpiMyuRt0Se62LYEmBb$@ z1uU&71uUBy1XDwu*+K%0UNV4H$&#;TIrNBps+Ap1K+%WD*V<)^29 z<51QT+8!IAXf(Dxl5pJZm@*+5-j@XNq$z#Hxvm-fab zC2qa^SlZi6wy_>YdbPygPk4jG?_o*9#$N_(rrzWngEJK#aZD>i`J z;7y(mzW%WI_qJdFr})7u%GV_yJtp;maz<0W7tGYY8s!|2@{gK_=JkA_Hc=keg#6{heaE{?6w+GO9Q3}d%xBNGLcnea{!B~FlhxY(?6VHeT zU7AvHceS6oRe34=Z8I(IrK|&#tXJOQ2luOk%gAr`gU6MhM}D!NdRVy(O@HWzPlER` zvLE`vb82@o++t-R{fxu0X2h$ocvA7O`0MD@=|2+>J>Zf*OYvlQMqh%MtJSFWjR#&ul(K>2U!YJp2=I1@YUyOuTA< zF*h+2FJPG~1b^3FYc{GYGp5gHvy-yCRe&?7V=%^D5zufBJ!a*Nq&} zL@&FMo2aah$@K9~-UqqsgIp&v$=u5juAOP*g)oxD8F1+Bg-SjV0%vp&Q#5<~|1I=pAYU+n5Jw=jffUz|Pe>cA%g4pzU^ z--!#x2TNT3mGOmoXB{>@>x0Yci67;C2w%OA3)jR4HEp6T??c3HxHv+ls*!oTbbQD> zv=BQkk#d$M%T2n`L5nez-wElY{9(F#IJl( zJZffJlE0mAG~{lhAzyWiE<=)Ri>@&E|EfiE*dz`2Xr!3qxlH-}cs|cW?TP(1=T@Pu zx3Ix;vrY0YqUo=wmpf24G6b9pFT4)GuY9+7V26ZTlLuo~KP2>mT{Vae5K{TPcvuZy zk5u4eAK~7>O-#{=@nE64+X+Flh1=mPxwdf0&UWA&-%55`>G>$#nOI=cL7Ok@&Y>IO zhw%oCkk=9TxskG~cOxa2NF_>of9z~Dv;yxZ=hM7O@5z%;q{;8ta{U(CKZ`rO_5pOG zOyL>v3`d&%#JBpGJQ|m|`Y}N}9qd#ABNH;%sRhmtb{gsGM$>}Y zfNcxvCf32}0PzS1r_m5^4AXg&83B6`q4H}@Bxzt9Ne!_^(nRb;!rE|0z~ol#O5R%; z=-F`@*mV#U%r2z#Cmq-7URH&n_GmO zTXfO0_U*mIPTyX_fKV))Qw-3~>D!xO$3|%96y#D=IxO>EgZtl_nk@siHCsU}HOr|% zHC_EK-&)2a6dPj$?X*%_fUN|z14~R&eqD6+oSC=u5qJGY@=O=k7 z)L(Kml#=vlqft}rh=R=?1;TYRbCN6ywo={!jx7k;R1a)L1`QU70uTjjTpj{1L& zU58x~3UV62EV{U3bc!3Oc_r{e1caCZBVEa_(`cq~I*oH^3|t9AW+YdT$_l~lMBOwV zgTZk5-4pMGUt?~HUN7Y2>ZRSY~@QpUiz?AoZ9-*Zch#FZTj&w6gWS z96k%!L5PhNFRD9^S`+mvtmJ%sY&6HGz17LVYwD>4H<7U5WrsrpMeAtv1bfuVo9aT; z?(;=au?xQ}U+k+~iNmR;C^=rD{$3~wws3gaJ$`zo!>2DtobPL#Ie04nOHp>n;TztR z-F%S*=h1rV@j=$1*w3Egmmqm@(o%NP=;(8S%v0I2(P1_0yHSW`-y9w83f#v6t&fFs zfd`2{7#k*lO9p|ld2kwV0$4W>2K?e9FLrhaqp))E5x-!eI*s7Gof0 zMe}d@JaUE8$s?(gM^ZPBEYelwu@Y&vd8}bxG>;9$n#X2h&0`zz8s~8w6X4{L+~(0V zi1%@)5e*_Z^Z_7TrTCTq2M0{KeEO(hKbIGe4zA|{DlWR;@S1pVjmz=z$}3#{^;p)v z^h5VkkB+KkG^ly!2fz!g7P%CJsj$(((7@~ouV@#Gz(U=KC)aZ85U*~WU zuArFH#s5deyc9Lg>woYoM=ESFA4vYs5vYyeNDX0<@sT=KIh&m+W=a*WNAN4p;A9{b zAo1Y{m~cnHggXL8?h2T2N5F(T0!F@i0lR>y`bYv+&JY{{TMxWYz&4?aH4v~k+`9rs zE&>)T)3WSjh%<`=c454P_Y_HQ);S2fRrO{)#&SfxSwGxrZ#G2u-`)%*{SkVz(tn^@ zwKq!xTTNd@teU=-ST%hk@EU7+ksU|VlUq&yDfDJ7NVCmjJM*HwSr@V9v6oo$H~_rH zdHm4c4BB>2s@z(ucaw)(<$D;EZ~IEhcc1@j<@*CvQ8`j!mG431YovS=#>X(q*DBiy zbg?j>Q{j%X749foa#z_3ca*JgN7<4)%2ozl@&+&Nd*Q%SP*ZOp1&fNqN3KKd18+Fr z&(&iQqY8NHrQtz<^?>$m%4TBoL8CT6`!;1K@RT3S+#Rla2p4Cc(`Qd(5s`j|j&YJY z-!|ecrqOw^lGJ^%Qn=G{$Zg9(9yr?VN0jBY#W{|2hk!S{DaTQ6>6^&H@gYaJX+Q@0 zDszl$F@9wyjt*|oR0@A27F_S}DSwZJUEo#lJLMcdcv$Vm!|#-vW5N9n-{!0F)IG{M zF4=}p^}OIoy~XL}l#BiJ;||YW=LH3Ybg3Vm_K+{7fa7gmG7$Ub=zwEx%h8Ghj=LlN z!PtOf?}*skfG6MHdMW(FKH{kU&g6 ziXa63bKaS`J1ZNIY5BhY|L9G_$I^e>bP2@{SS1t{M+svO zUX75rM&K{B9p00ge#Q{Y(eyKNqXzvbjZy>Lj9ia;NTotxJc2H^`Kzj*vlOKd>T@*5 zfXK@bV||%rX>pD>$QN!|U*VSZCAY1waLf7%x2!L@Wqor%t+~{*n}Oq!)r8`l*zI~o zCVUKPn?95`h+wri4Ix(inyS|*+$gQg!JD3o5bjP>|BZ2*B)Yi{w-LjgoD-d`Ib~RU zp+8xD6#y>buOv6IXvuco42-_vOVdjZ!mSw=xeS1jBh3Y`N%$+i$nUK>2v4s%kXkcx zQkaj5={q^jAT>;{Fa$pVHe)hiGhV4CHe)hkGbRHz9dy_$3~Zh?&Az=g5O#a455UEh z-fjI1*sJ@Z&PI>eJf&x(^+>p-N5U;VBDeKOxTQzJEj=Q)^hh2B-c#HgpRB7(@&4lg zxC-&N=B2#zgw$OI(#m0`oF&mc{3% zWDx282h28?{A6&zgL!|)X{MRbNnOeVo(_C-RwhP0vl>>6-T6rlu9H=a*gl$bRSK^P zP_BvQ!jWPv#}dVp zcClu#D!Z*su{azVR*cwDe^KK4y^e9R<{?a@n8NXz<4YcXq?I(5o(rVglzQK2&7-%q zX?O#0yjFz{x9S8&Gem{!ad}8qxZmp|tq#Z$JBnnlU>C6YuBaDSZ^uKs|*^lozL6T7n#f;8`F^>I|E4r?hVuF8m$ErFzQt_*20~@Vz{b6` zjDd}N!;isXD>v?$7{aYm31_L|tVaXuh>d#;-9mgwK?Td-PRvmF#XZnYC5nm}z&*fX zqhupyKYiXBDLY%7&w%xoh%#dCua=#*)nspvl+8MIR;Wf|Zt36^n}gJOQP8FP5J$Jy zx1?i2apqebsui1OaVQp|M7RJxMAvaDn)Bvrx_;JAtLq1$0;R~q==$#9wyu-^Xu94C zK^k4}pis50cM)q{?)phjuJ@B^T_3bU1wY6AZ`1Wzf1}E)6W6FXGb~PBue3P)sp}yu#LM;wG3j?9 z{@wwKFZX>W>#cc&NtGFG+Y8AH&(5&M20_#=W z0m8Le#by7sR&hz~Rb1iLDlU0?71xPRM1`C$P>E{-alSoE5cgz7xz&SL3I6c*%zHs5 zraHadgVfvZQH!|x1z7{3^@2o?Z8@?U4UAceSp+c^J3rtw4D87K)Cf{fZSformB43wd_IUJ-oH-wRus% z5@A*AXItw=cJi|ykqAtcSg8)&`lqo{!7tGS-O5TOh_#if1~yiz4p>{MMnGewT8WjF z>HsuWstZ_Ksb0dhu~K}MU|A_r+e!(ytQ2|LO2r;prHoM#ZlfMf>~VdgfHxk**nV3h zgR5}oYa@dJ6tnadB?AXLdW;Ohz(xj@z*+`1fJO%O#7YLufJO#wz*+_?3IB^ScazUk#{rgXJKcG=KNpdNM*foSENQo4^-7k&8G-{!4ea%W!K$#xa$TGfsE9A|b{><>MP6k#49<>4SNx-nrPj2fY4+ zsiy!}2~55S$ZH<{@G|O6O*dBbl?SV!%m!?^FhudV=Xp+HH)6{5Hf1f>5bP~vlToxe$SVrYr+ zylBc6#UK2!n9UzfizbLwDP$D=iA9q@Hd-{*fNLol3X5;iyjN!lIi(TMmYgIfY9q4ohz{oXKW}Y<3+fWA<}EQ*|xaP+wu0#@NO4{E!`wP zem-y`aPg`B#1+82m_W%yIMRH0spWk9IIM+PLtKO#rE~MY+cK_w4E6YBj`F@EBgb9V zI>+I}NarYP{24j!wbnTfCx#RGh|R*i9g#{nV*hFJ_$gU@=I2=6WZN8?AD<4~L7bgi zF%`HAc>iPBMiS>nfLSz~880R-%=g{~2N9t3XM2lhKF~XpxuO(ClrnV~)(3j3TE8~c zG70{Q30|H~aQKf_C$cZ4+(xGaS`|5pPT?nT4yBWim7&PNbe^MA{~4Sd%!ea4(AgC; z$VeXMDv_(`I2i0k&Y&|7qoK$fbR^N|{{yu2D>(l{XS(BJZJf^UTsT|#;JiX-nIFzo zbe^MgZWf#!vf(^H=UsdV5xF4%ry&oHcqH?I{y^uH5pYWJDk^d}ovlW~DOd+i4V^AJ zC8OZHO{Xsi=cqzBf1tAfXER3bf+Jef>chj4T65_as<)qt8;cM3C2!IEDDVT0h~EI( z3xzwd%$K?bcmNn?{z@IH2#s>!DakHPw-g$^T~iv50}HaF4{1J%yd*bvzvi?sOU{O| zj=rkzuxtm8%#N!Vu5(~KH~td*!Vn}v#-9hS1TNdsjXw=sLwrPj#pA&B!0HnRF9XgY zBm*bq|2L*l2yx&k@vjiL4RFIef9iAKm5lgc^kYC?_u;<-$6~*n#i#Fu(?)E5K~D5t z&G|lNdL$>>Z}ScEV*%vI3-xmjoR%FOsX6=Ofzz{NqcxX8e&)y80d91&h#O_c#{>5R zFS#VEA_P20d^FmmA_f+ON*%aycB~SZ7n3-!D!U>Do}k}G+0j|r4-X0Fz}eZc8JbT5 zU-Fq7o1;042kvdb;j?GSpzDox$hie4J`WM9nfT`T?Ofn`;3X(`bSItC4hVVR{Os8F zns3UK3esC=3du*NH}{ZB%5{j)%#^pl)*avuri_a32i!%>ipTcW$&O$)Tc))tM|0{4 zFS=;-D0Rhf=u4FP;&H5%P-hJP2EFk#If;PCv*I9>p_e5M<;D)x84(tKy4B7q)X@$Y2m*>RK0InpyASZq*a1HTZzElfvJ#gxR_%VRZfY9LN z3SeGpkeal2X<^Lw^Ka5hUhu!HKq4JD@!z0eZIIf5#o6&+1Fr;La_NA zZHf`&zzOMYlM8NllhNc>HzB7od%a;jCQzF04V+!sy@96F?hWMWt!{XN9J{Wz)idC; zJ#2Ms2N(SS7d340$2iSs*D*TCT-@2&4#MItF7(F^(@{9Y1jimT6NRbni6|A0y2=jh%hc;vJ0jmdaB43*9X?A3bTe(kF ziZ>P)vNK+1AuT<1M~Q$O^@F1PrU0vfK!F0Ab@jsQB2 z=o~oZj6~zPADSmQ!=G;ShAGh-_olDXfvI`^*tIsFh@iLo{2oZ6cfi*OV=`r9qxgNtJj23TqFDU;X~ zsMkW&CbFmuNSqS1TV&5;;QWG)vpJlL>oc6r#fGLo8I|uw_hC|p(K(UMsdTP}BaM3w zv}!3DSA^A1VJ#404QgSfp3d?)L5vI=wog3{m;m%&mU;-V8nC=H`8*)6Qv8*VO}z?Q z2cOxeRlEe)2srvtSe!`{vwco0qZB4SyHjF_qL$0E_hX$%7#!nqe|7SGi@fMc4o3SnduGgcwCXXW>M%qn6+$6;5x!x^_-MdYfc`!3>w~~S z40`>4P6YrHfaR&EACMQHXS1)y$EZ4ea=sez0?-Q0zAhbroB^;=d%RAAjqU%lrQ)J| z3p{Q4MiuvzkE5lAT|DI@wUkd$FS+kjzI74ZRz7mAd_RAV`pA`sshRxrI`RZjFP%Tr zk;8_+BAOI3_bwp11dgaN4rg$9Cv_J(el?nJ>1Byq0eMlhOYctHt0`L#v|CfQ($afU zH0*VZ_poQ)XTrxa@1(YQC%4SIP-Wg5k&ZF%t;E{AcK{pn-bJj7!mjNE_Dmo;70NtY;0mde)@gKmxVQ`H7fm7dFH;BXgW2Z8xv&@VE4jVwf5cR9o>@ z!2c^&+>>whE%bR|>t`NZqhq*kw1)a%t^B&S&~PMBN%JJGp>&SP-ID(-_ETOjr5=LM=r9D6VG`=TFP zyl_XHU1f0yF8aRB&-6v#)tm~q{t`FVZ}U0$b=8a;YNT566#}(EYRJ%ud}7LU6_Vg+ zCUxFOpR*F)2knyj`Vf2#1Gw3ZtBqlCtYZnP#ORT^L?6=mH=Xsz!8wx7)o`T3?;&w{ z3_Oj*`~K?cz;(cLO5!^K zHUhdhRCIgbR^a?e_(=!g4&pac^8mX53qFY-1lUWMauZ8{d2z6v-=F#o=qg5dEBLNe+67i46Qu_n9FaT)<#do9bRk-=zg@t<|EwbF&1Z2 zuCV!;zSyA__fkb#$=_;^Y>+wQk{mqq5}Jx}0BtDEFRw{2L53|T-9e`$UIpYupM%a# z{!`QOq-Q1G*OZCj=jf8}YR+fzK^G?bEsEu@H?6!jd%#WXy(NO-V(bkzBZ@p>T6|wH zzC%d7HA)qLfeyM{&0)$5U_d#2X=Nwy2YqNA^%kRgQ!EA{8^fm@gC#7R-^Fy&p9}Hf zB%ce_AQ4`ip;Ye<#r_i&FlRiRB%OWfoJ!|rI=`p$E}i3GS=AQ1Pe?bzPd7xG={!p3 zYdW*ngR>u=k9AU7(Ws7uCvh~ z`In-3PeH+di5r~UFMln1f<5DglcTf@0`+uSR#2U=;#eNBXF_IQu z4Qs#vZRSRUD9faCaIXsqEPpN44%n;U`G5m}fs;}@ZHba$X*p|>blEWA21)6%m4xWu zsap}chCwFBZw9OfWQVyPxS1H1>T2LFWIY0jv8-3voR*3=dQ1Q*TXG3<{*x|l)|BLa z7R3THwa@r&up=bdjT8nEJPTQ5Z4|xNqWrz^yDTmrP^BKloi-MGqv&&hV=&2~K836E zVozFpeH710zJWV)5rVVWtc{W{TXg*g<1c`&L{j0?^5RUk8+iH#`I7EJ#9|YebPbnu zo%lNl-lw7_8}@UY!x4NOg6o%stKh|#h0%W@+!gTSU@rX2yyOQKN9P={D884B^Lxnv zUIv67^{IE(z*szreTHz?=@Nw=QJp6FC2rnlvt(h{P~@F(3w_Qr@Xn@p1)Rw4 zROS;`03AehBb}Gvl$USsIQ`J9U$JLDyROffgByIjEnnoup0N0oV73$GicJdwY`_3* zt}NLYZiX6$>!F56gHbNov>`SZ)@X9MY~yj5TrS-h&c4It8;`@}atX(9%jAkddI{-{ zVW}>`x;IK`xG_i`r$LI-C|5zi%dc@|mR<`?Yb+8d-9feg^6QlZ3>OLXK_oE*;Gksr zjc)Q!7RR9EBCOq1!n+LKpyy`NvoffRQ5bj>0-HIc;bs9tncLkEN@{nws-5Acb{=Q# zVy~l24+;jwD9d~#xLsz$b(v3qw^e3~vdn2JWhNbEmDzBw%ud9&J``+oI)~D^ zgU(;*gd%V@ptAr@c}^|zg;GC;X6syz;c5tm-?c~EuZJ*L zuyK|@>x$7Z9Nm*0Fik~sNV5@|MuVE;aWjXFAb{ON4L3b>G9o({;E$`4vL4xi`sww^ z9>DU_NnBi9MOc{P(qsT{ruDL98K7R4tO86gOV%<>A(EB!8vwXCD64`E@Y1V-Eew@j z6{IBXRYCH#T@?%>4ps#tJJY5BI|t$KQa;i;OVlHC0YkX>MLWHYDEuF?O4;$Fl}GR2 z_yBp`fz0ESZWk+F?23?kiPfU-05erWcJPwFywF?!Wy6+_O>+I07e{@wPm6I4*wD1V z!x9zu<6Mxf1VdJ`B3nnSS7cj=)rxEfBcx@Y!^Eu>S@N}&J@t$$vU*AV7qsoNxZVOJ zim)F%Ul@-S`zkoRVCNlwl^fmA<`doI6pNQnjT#Y*WRzoFPX^?affqnjs3jdhREUe^ zco=S~(-ak{LfJOCMmN*p@V<}D#Iki$M%8YdMeHZ8a^o!CAn`;u#i9kV2g53sx2V(sC5#amtD1X=L^bT`5+(Rje+nSbdqr5;QuQAo9Pj0WHZy7yp2%i*$cEGASh!TF_Qts3-xuOrRHj>!W_DMM zapIdGNDa$(x-0K}8d<=ZVrSb4m7VP*RIh(}0JWX%2TXVSK?#m@Bb`(l`MB~PqR&j1 zyA_^$BGc$qx?C9gJO1n4Bwx$$+5&&&b3N7h{%w@JN$0S>q!_!-qJ;ru7VFe^Fd<

    rg%rfTCjVou$f}Z9%c>Sw%c_x3$*Pr5$*KcT%c=`7EvsG$j;!O9 z#{d}97qMXHlr56YGeyDyf^8eghi4ntUL>%XY`$a5wM-61UbLanWgH9QVsrVQRc0v6 z9ba2zTAA->hGK{4_?)N!gql=Dy93pg2wib8k>dt8UHS zble=MOfwu_(wm^MQlvWEkiN!w0&y(u0J)1}eGnJrrjp$(z?#O;Cj!2hT`eZ_$EJqK|6IX#~fq-8RQK z^e*>@!5YwOd%fP+BNHYEc@BlHU zJLS0f_C~+Hu%#}s>m4xfbB77LC%wZKa zl1#cEp}NJ(Nj(JIN4#b1alp9<#zqT&<&VD#?qF9<_-lXsCEx@xKA(FYxE2^+c}1TF z-VSlN^2AT*j%vb-K5z;pbb}i^!s0Sk;@MSun*hI6XT%w9&aP@i;`+0%ex$zy!THz> zo$rfYj`R$#sdkeW+x(;0c@`c00b5^=NP`$)AfS~d{fY^=lI2JQGGWa9L zNQtsIp7glEQf9Y0ku9K2kvcld=rq!Kn9dh;a~+*~={!wG?9hKCg-9km*Yk*Zj_8mZVfsEumhqytT4G9=yssl zDCl8%^7})EF7m5W#|<~XKV-PtTAA7vDLB|MbXZ<$Az&D=c7x;rfR`fOSI~QEUyasl zil@D^%}if(Pm3?w$QQkCQ%uwl90hh3ee6c>1ph5KS2oM?3goo&-|1qOy^IwIiSYvN zgc##LD#n{bV!UO?h%G~&f7c-xgL#fey}4Sm$mf$hBj9$PQE-Yz@{|;&>JW$#I|M22 z2+rQN2=4)z;xcf~eHR5(iic`{Q;WmF@y|-}7*OVk7!^#h5)xdL2cbrf0J{^u55SjF zI~zO#D}re~zX^}FT09kUlP6pJu)O5)7EOGbI7(CY!fHG8&^j>p-?lWsx+4GfGXnv77+miRmWGxV<^pR$zGlPja5@#f@kB;l0A zy@SJrrVkEB!SrEw5_?-6JH_-{kZH-}p}8bY!ffx7$zH-j(+RV6)hT*XW-k0QVv3tA z+nMkhf=b9rgyadK-U;|qnNRuzd{TT2DreDkA|Z1YT@SH7i>@EooJBWCtk0qgqUV{j z=n}v`FJxJ#-bUvZ80#6TV3lL{P1h$KBB6v|{ zb4JUH2t&CHpPVsC`JX`lvB^q{ZuMBA^Ed`p9ek@NQ!im8U5%=5^;GJ4z&gOFkD#`7g#mSwt0H{ehW24(!6df=zUvqZIoUw^I zO_>a&_pj~oKQ7usP*Y-3)W?)qQ&VC^y%Lk!C8k}&t1R!E1M+l<6MO3tuxsXoQcFMs zAqaU~#eRTgfK#TSJIRaVNM0p$WM?{;(YcOJAD#RS;OtK48akiRnLZ89WptjWBU|1? z@%|24z7d}4`B1Vicf%gHGpAs$7P6XE7(ESe8~E`tG%f6po@n!pv5OjyeEQSCP1_|a z)&~DQ!I6|RZC5;7Vo&2vX+jw_q~Ihk#f_y1l8Yd-3KJJvw6NDnUITtAyx9h`Mn|u- z=(MH&=+4N{cuzZ36@Z*JX4<^$=wa|bOQ$|%I_qR9)?)%sr1NYr6 zZVlX%H=tbSBcEwf%;YVg*MLq0g>G=^+M;~jWl^qNr>VR;BBc_V*IkC2g=r^wJ92nN zhnh7uc`V9hC^Brypm9o}7A-h!W_FwsXduRx5Z1nh7+XSE^LAiPm00UeVr&UvjeCGi zZKaK$L(aJr@x~OiG}7z1MKzrjl14JrG?K?p^-H6?Wm3?M;&I(59@mXxxM>uR>qar$ z6cZ(x)CC#!qv*3jsmB2a6?_OVh;2->CdBUtOaQvOWXUeV4^Su(yWT};xY|Xigzks( z(%jApi_i_#LQhi>dNmR^La!s%LT@D2LT?2&Lhm5fLhk}LwGp9bn{FdQ$Gm()blgYi zNXHc?eXnA=URM4M3j6X>yk9tG8YaU?bXGLA0&oBjZ?IYb9c*{vESf#N40u*F&YoTk zh&~!;FRvrkJsb&&2uu$rXVa&9IPZvlm>$j>oPNxTN)I;_J=~E`6dG9q{fR;=vDw24 zOyTeycNekVTGtC~gyW=s#p>YBtXS#{RtMX)P_t73!-S|A%}6Eite9vg^M^HZpq(+A z5RadVA8EdTN#Nq34FOcM^9E})t3sOHP~GflD#~prnqDl9$F*{MTr0QXM!7w%mD_Ny z#=HTue3K(kMrF)$3(vv44VO~l6<=&q>OH)41j)){rx2W~0ygcllVzkLS zV=nj*z>;0@!OLTF9p`r3*cCU949Lg)-JtV9A#Z-nZ&7~CZ_zhFA4TAeRbU=?kfw6r zK^rQqXQ(Ry(_gIr2hmt0T|z@80B)Cuc5)oPZ-~~p&Ll3bbtC$bqn$|cZF*eBp==B! z^)-Ivy$`-CT2egBcopI6nO_ZI-mPO{EzU_H&BT2uEU#zrx8jc(qudpL@_y&Z9_0qG z8_bMy%ZT+Tw+h&da%+k8D7S%FpSautyw;;!K8EcRm&tj)${J2wj_d+Wj4U?lh*dS2 zeZ z3|7pJ!M<3k;xLi{d2go6y;J5FDA9(N;l)Tq|I86@i%KZhO4aOD`rA> zS<@@s)SLn?1uNIjp>cyNMNKh^2 zv}hrk#hf!VUx+lgm~*Pdv6vI(Vh%6*qdjCb$8f!xL&~w5Ud6Yhj}seN}U|HF)eL zn?H`-mi_t$mueBfNxZ9X@Xbuq$Vm@E_+2Pc)5yd>wGYj0)5z3+u<5>+K6$A@zyZMZ zzKs75Abugw!FHYatn<<8z}xNT#%BOm0*^l_kg5c(0bcM}oIe{?54d%!PkuM5nfO>Y zwJYwo5vz0TRsx!H?7D$NXL>&t#X+t0V^O3-ek^JUZdnKTk=h6N3AYaLBTpaThhMxp z52v0XPu5~L;8nykU75}V%GNxcK}X5G49UP7GVuXc5xOc??Kj2pP7#}jGBl0!P7x!; zJcJVuUYc^^!E0mu!FLTOtu-JctyV37nQCQCJeW#)YLwjO4&HDarr)%Vr&DF13tQdj z?%F$7^PO!z9xGxN59XmqMfbPvAcfdIHh*=f7PeYiNIh;^N3^gVHE3EVQw!J0l-N2y zSYn-NiS-O$Vu{DJiIPq;Dzi|desH1s(}fxwexXuNp-{nz5L#hs;T|~W1aOay;&0xA z9tXH^i7);a;5OjkRc<_tL3TIswXXO1I$xd^?IyEhAZIH@d$rz?>e;dJwUku*ez%hL zAyciSs{k{Vl*Z1QzuUG?N*ut}b-ToT&{!oNr>H40$4yp=H8tHzQ&VC^6Q)}!iUia( z$=~BRWypPxnTdC?ro@X6k3D84ztVP+iwS#d;wb~EmAR%S^ZClxWRAH$1DnhhmBoZA z>@ zis!AivJ@dX;d3S6LL9R?sq93IM&*98ug1p|q!TuUV|@<^6T0v}Sx(}0?N1ZZRE*CM zIoOnK9=lwQJTD^Ud4Q3-iQc9&dSf^n!zpK4A7K)TMY`~4yoF8OFI)*@eec9h8mNUhu`@aCG3B4ce@&6-wmLJ? zg)_1zZ3Uh{PQf>mwc3j%2)-Gev#p9q%FknF*_?Y8ljdkdmIV>aZ;q4NCnE~Ce&3AT z{(Upy*6*7Mw|?J@d`++IaT|p&rzg=K2H(hB29;ky%P1x!@G})N2jwyIpdseADU#wU zbTu0|@?+bcI;5&iZ6n}tZBOccbnaFuQHn3qS4uJ|zDVy;kguc%6y)pZ09KY^9{4Ic zAu!J0cB}!!E9i>RzzxKYqz|fN3w`tJ=uAb8u2E52kmCP~6?LKR>Rd)@ibnUedj7(P zv!lCOyy_#@JDHUIqx9_b$)v)qlSzgDc>OO^v5|MiP@*X+y4{YJYKs2Yy4{IX%`gIR zt#rFzN+i1NU|TX&m%3f1Aa%Q1LF#tBg4FF6fuh?TfJV2wiHEJ*V$b^!r74mzjzRBd zx8o&k9`W|Ekm4z7_OWPcc7-M;>nan zQ9x6o@v6M0M4FlsDe9Go)GpBo^5N-0a=y-gJ(c0S3_7gCQc|o@09)ys;wjdq3=oRU znp7#sTGT4Y8Z-zL?QH=x+S^XNmZdJsEVZJ;Ds}PzZMfzmiKen-y+u)ailtK(nIh>C zm^u2uCzeA;AH&GmYhk_$L4%tX*3`7HqFxJ=ep?IY)8E=uMec2?@(doolYq)Sg~vQE zQk1~V0Jm4v%m6o5)XV@Cl^I~a2t&>y7zE5TcBPQpCgX;)C;kSOV(-B{ zyI|OiYZm?jC#3EGZA321{~YID%T~hqZUs+#=m6#>OI(p7%(R3L@{>6&aj}ts7qiQ| zEynG7hEBP}k0{5RC{f&RXO!tW3ZDjf_sPfcj6yo)9!5ExQO?2w{!6%Z3!`wm#QnH& zF>d5NDpTgKKq*?iabm>I85<`oN=>&YH9d&HmZqnvXnGeatRL;YfN8X*pP!52$;UnKcC&Fk=+3ctogf*;n9 zviSPrnlJ+Dk885<0S;gG>5psvg@DXje_Ugz`MBm&cvBtJ$2BO(mZ#_)9&>Pa5Cw^c z>aY!o1#w)-8uumZ#<7V921qmwBld|K8s}zIC?d{1L|?If3>v@;a>VYaA5W30L9+Ra z=mXsa*gE z0S~W`O*NJH^r(3fRAn*ldu3UYSY*+|tDWRh&Ep7@zbtvMrfOs*)}aO|i4KaeK0&xK zMp*Um%0Ekl)eLBa)yCUeSSyK@u(|>N+rsK&an2QC1@QTm7FHGD>cYBUsIZ(!tO|-F z2iyF0eW=w;(yi#cx-aNuM6!S44@BH&9{D5DM|8gMoRKp@3&W<0w+cC|%m>Jzu(M($|! zDMj{`$-6+ufnLerS4JNNoe9b%ChP!6c55D?cSrPIi{d9zquXBNNN{==U+zY?vN-*F zYc2m$fAlGvhyAg~EbjeUt<0YIy1J0U| z;*s4ggzA{d4nVUPwu@Nrh3y44dtnEN^IP%k^Rp7YgYVi@HYDWH7oiaFuxk2A9vscI4IH_{xQGB zM;$8GI{qo*tW;^oKLYLsM%?&6fcx})zWi7PJZhILdHWH-M=<8?M;S5SeyD3w4r)_{ zd-+|d5rDOX&!>Wb4S*Q1Ka7$3TPPG?F6q%p3w+e*gvU;eErOMTXa0+_58qHk$Dy@H3RR}=F9b*V)?13fOaI0;EgEqbIDzXG;uVNuq? zqO8RQ2yE3NO{Esi$V9hp8=z|44-xHYM6+sPsIG+?+;0U*@&P1gIRVQt0r~1ICqwmF zPAiePdHm3e4+4FpW;g4pj@0Y}EP2OBg`!|mJ5MS(1`}>@;af3>lza1o80_7-QcQ^I;zYPM4 zeTpEb;D$U8jz^HmY>6)_V1O7{jg=Ph-Z6A;r1Kb^cj;6#BS>%)pz(0ZU)vpTePJ%P zK<3f)7UMfQ+<1bSALPc1!RsN2{QcZ$0@$|)W_<7~tn|ksn#)sce>e8o&UiTke|E+E z#YpS}n9SpGgH{m{#rRC zjvTnS%Ac!<)*{?UO#FERVH4Y0e8TN$+bVc|3D473AT(QGJKT^KI8?PjKXcJ7us{6l z79h7<;27|X7U;u`C{i~q@E35a1uV)Iuqay~O{E14H7!7Hx4=i>b_*D8wEzx+pz7^G z=NLM_qti?0V>%-)ghXcSr8>j{>g1aT;)`h9!0_40zYa$MTAXJOzG!haVXw_`2**>J z^I?x>j6G&^d@dk2<{$%(pLCCp{{?{tDfa7C;|B4$qHf&15Y#j-4vEL|@wlG+7|v8V`SG}({21<~>csdB zOEHp_!Ap-@K?~PN0X&OG+Y+pH5&zLmT>!ii`0$WC@OuE8Ls(GxHSP~E%*(D|2j8OQ zzwX9Y;(nO;EqBsyfGdFypQ-k-*6{w{&=w&!$QE?!>9o=LEgYGw(-FH@gEcu`dMW2ciBzut!432Z95D<^w?odxp&if={7Tc;0!R0Ive4?xsHw{9+${$9y1| zg&XWr`U62jy$=M#NZw3}Dv9-^s0J8{ARh?U6YEJ)Gq9)X@_}F*?&uE$y8-nFf~yGi z2ZCkTW}-h39EIX!vBdfVL64gc1j`rc3YZTBW4cEA13^PE&EUtlX(}HG8frce^tk>& z(Bt|8LBpx?{5aR+`U643y&9wFxKi(+ajQ_PLo4HN0M-NUdy1=$mj}+rfs1myJh8HR zU4VM{)=Q{|Z!1tc>Y289SAlX~q|Y@q)L1-^Yl~+%i%*N^ac%Jo_lhrLCM&SS1qEQ`V3$7yk#TG?3wdm-#-PoIR#8yC$yeQ=t+w*p$(c?05#Rng^`3Zs|FFMs!cdVRSnI+s)a4e zs;z7DAyqpNQKV}7>Oi|Qje0K)QkKZ1Azad!3?FA}{2kwhj&T&68Z^TEZDKPZZC=^< z3m*U*Bq5(6!zNsB_bt7PcAIp?i&(Zn#G>6Y-nCo1Trs%jrq>^NduB88G!tOJ^aL2W z*%M$xy$SGLP*PUr)m~khzu|^dW*@1{N>*kcRhf;@qY<=dADPXM1(nL|Bb6xwod;iN z^ivR-MLC_&tWKfyScc&}UmrYM;Sd{RUVb_DEuXkdt*{n^uX5y()`S%^*HTQOP`eG z6F5oxG|&g5(MSWv1CfjA+)d|wI{BNynM`M6IuBe0)ty7M9i83joJ!|;I^j8R7Sp+t zPF^*fz3Dtbr(|MR`HeF#&U=IH-UdIW5yp4U-nK>F2)29gu}ST1 zi^65wVwukMEQyfW2OkjSgojej$A9de)`B+GJ*^#Z*gY*3MWH(pBY2~HJKGBwK08Og zogD!puB>QBpY?YTrUYe z7yX4r@g^h5_cFZbz4u~yEn}#9agqG|UFj$CutowOThvaVC^G?4l|YIgX4SHdUX<^$ z8UW2KqJ>z^BHGz>`@5;_5V{jMbmpY30ec8{_CC>KC$&D&BDE$IVA74PPqY}qOel=^ zn$7^AU+QQGrym&xU-G&+#me6RHT#2vqnk&~kA%t!`&%&KFfG%%4Zob zK3nkM%|+B~Dx@U{wz%HbJaS}Yb`@%BHo|Gj1tDIVnr%{w zdfTK(&Fegd=7ZI|&NJLv0E+y>$n|gVC5b-P>|;RZF8l@WOn-^QE?=}%KK-ahor{)c zj)j(HTIi)ewuP=si@b68B1f4cADJqShU%QV`%u;CcPq+H#DgD+2K$GoPX7?q>Hp!X z(~+)6*YN8R=isN8MSRPZG0*@o#z1jVDXet`-*)9Ka2Ob`eyK{83Q~<~6r>8(D@gTe z7AS9l+W^->ZDhE#FNAy3J$Rf=+yn?0H6%EI&MNEPzAb%(Q90RAE;onAk zaFi4qcZ^awF8BmLbfaaO%h2JUZszBVV-dmrhBmm$t=Qu}ynsX%f*-jRQAF-mIMWVb zYqqfiTQj4N(v3-u4!G8Kpid+yv%6J*!?XkO=_q0VD@wtS-S|}CGT`vn+3_TB74euH zvFEkGp>vb#o{r+-l2xI-6YE$sd6W3W$NvKdd@;q(-T1%@uG0csx=U{SiR-Y>47hl{ zPo5{8z$KT<^P~sRJWu+G^{N!0d7cC@qSeon1Y!Dl!iS{wJRu$OJmFfK^*kZ9pC`ht zPkzbM3sg>gCPYz zGJKuZi0}JkXhlBy$9-4qpwt@yfdBoXFW5uaH~g6-~`} zMN>0g(bSAr6!pd{q;`p9plWU7mXYe^2qc$RA`Wxx66rzFe`5r7hv_P`Kfhkh{)|z2 zHweiG#|+WCF+=oj%n#SQV6|s|5`e?iJ1%ZiBYdz(*`GRKu5pOsHPU0OQoL4Rt#};@ zve~;7WRv$Q$mSjpD2nG`-NJ6>?;4gqYJ}>8Q0K2U+%NW3?0qucHzCzv@erXF4-snd z4;N}B^3g`U25^`{%~aNL>F)DiRMsyb*T^i$GeV)tC=Bm1oU+|u;qN>}jlz=bTjff^ z^^`D{Rx>74LbRRBUXXG=x2Evzq z>?u$SQZHZk(%4jlfuGigTr@mH6jdW%8ECa#2REpPA(` za&_!te8USJrvt?bPWQ#P2JT_exA4hNLa=5cxV?Odr!7HJ68wsnmpm}H9nROgVj>5a z)ds$(c{nrq;4Gi_(G@u!<>u+EsF#@(MsE&g=EA?>=^WY7Sd=hqHiu>)q~K1 zM{v_276reQ+-r{+H~rxjC5(J@XQ>1nW@m}>%|H!{xS4to)&uhefjkJC=`lw=2-|@5 zgK(vS6mhqLd=U02NXf1eC=bHGmTUJQ+yha?OmiSkk}1@=N~mQ>H8^*OQ0ER2>f9eL z)GFkog<1ls2@)kpijDC=z2V4B`BDbWA+&=sw$N5gFlSQ1TjC&6- zUM-0l^z;5UN(}~qwHgGs5=b>jC`dJ^R*-5?Cs5R&5pek9A#WtX&X1h`w++Ot68#s) zHj7MG$wF7TX0?I%0$;_sXXB9o$p;q<(Ypmh^lrfq*SijBY?-rm0S>dPcr7gxoE_3F z{oj+TSRab?hSfy6qY`N^MY`hTLZzMY{9<29ZX7ZB+Fn$n|%S zYxEW_x8vFxfB3#2af8k0W2RM-amUzP#ootMXqtqS|2y1%8=>b-Z(XOg~z; zM|k-E*u&CFWNT(e!*3QW%>QOXIKQLQ33;fE(tNce8h08bb1x)QG51{TVPegGfdLb6 zGx0&b_;$c;#7DT%g}}Tvz+d4hZj5mZhd*F^SKM03;7f)G@0QH*@hzF}F}i+iY4xHE zT3Q2u!?X+7c**x$PK{ImI|3-MP4VoJ4df!Q5aw|YLtydL@ffZ%;JLnd47eJ2)Lb_{ z5x5SR=R)$`Vk2<)tbi;Aw*q4^ILSjFjo`MvGP=;BSQJk3C8O~UotfZ^MqV-*SewOR zPXDdNVN!c>Sh%$~OrBmGj{p4-453w}D*g)GLk!#C#Ev^pwYxkgF&o)X7m)8Of>-!r zQ!GB}VZS3^DD@*cJmdUAX^=_jFO-7wUGEE}1hIUf6y;JouT7ceHNGg9+YQH(dz4G= zhGW@1Nl_bKa(Q%5i`o*8B8(+*Qd{EWmc%)sSgYlDj@&JYliCs&Zb_UxEpfF$wi+@B zUgV3P4k6bQU*=1l1l$aaBQ|+RXB!~Zi-&Zs1U83sb_1{JHwV-ioqZ|+-(?sn6Y4WM z1KWHE;G7T*dgq*z7sbGNff45g^m}rx+%37&?*k zpXFfBq5mWwzfdVrJ#LIC^!opi>& za%@(xU%8DrDqVp;uU3Imf9wi0q$|+!y($pG>%zN>D;wdpfhSCJ3_>p7}iV;tV z1?mSh7HAOId?Oj$)>xoPh3(kA4T{5NxBZ6qF0nJg$&A{d;13jx(a!k zqm*lj^-;av=QqZ3lKj0;UKRM;WL^2aP*M(J^%$rJvBd^P zHZv{77W^A~PVHqX_AR(^^zzIh?|j+E+K<>p^D_r<^D_r<^F8Y^PjdAPxTeN{Yx>;= zd=Po+!Uv&L!#3bfWS(8ak66QLms>SFG_!`aQo{tYD5}k@VQpp&Yk%w-RwGYc!@9Mr z;kKrRPeaxu$uU=`8s5Y>9SFYuK@NHLNu?oQev4 zfi_HiiW+tyk)w~2H@3a3&I$}H_AntQA>@cX5VGvo_;iXPkCTwj4hVTPLLOj3@)1Fj z+6E!R@ILxP30cXICn4lPCM44&NgaWZH4J&Ggsf-C(-87V6LJJXk|chOki57P@92Lh zqgV>eeL6|A{5vyBl2OjJqmV>*wxc+1W}GRE(}a1Cmkmj@)sB-rBo01Z!=`PM&uA2l zBzB*UGYU73&c}oNIunEsCX(2jItb$&JqkhU@!*r3`G}l=7LNHkEE(^lt54s_tNHF~ z`EI_NFBHp5nJ0&5ro0z2zt@zHQvs6L2|Du}mT#F(Ad2elhXmwV*9`5@&$>23^{iV7 zsGoJ+faY1(2W*~otANe3E>P<|>&gJlv#yF*KkI6V)w8Yv(2Ox!fPe01T|4qL&$>=x z{jBQ&{+4H5KfLv`Zjewv>w*ivDVAz3O8ZhH?F0gAX;%{}Y1aX2X*U8IX}1C!X?Fk{ zX?FqZkwq_{k@f(wmbSB_C+#qxk#;5U&n@j5`(r#dKO4==eM%wMbM%tagMz?!_wY2*I zjkE`ewX}oS2BM{%05sCB2L8FFU57l4v>S=Fv|EAKEI0YNmkxMqX?GE7-R}LySW4O) zNK7`;9zb9%ZKuwYb{J4gyAseyy9U@uyB^p`yBSzZyA9AtdnK`!b~mxo?LI&w?Nz`( zx3mKoZy0Hp5o>8z0e_3MYvHY>-9V_N-SUmG(sp}}k#;)*YiV~9D&6j3a!R-R0gbc= zfsM3-uti4N31BVlYCt3HI$|yDMq(xHRzM@|4&a|#+Fi)gNV}I#FBKvTT8o#P)oc28)GSHb9J9Gl-bxI0&lv{ zq>0)16`;Kd@!M|j&vMqmG$G5qhB9^Dg**FB*ZCU%^ICO`>-Z`W)Bjg|Je`F*8-ZlS z0L%>+OJFx|M9(cGq4@|f-Z=yA)kx^q_@7tbg-GZ*kQpG^m>A)w4XfesmXnpW6X0nm zRrX8Z*{{LLIRUgFEB77XgW$`&vq^HAl*fC(mxxF1;kdIi0%QdO3-DhVC<6bTfp-KB zWaa)3Fu&`}a&k8{fwOYA27CoU5yZp`kk_gNSeCr`#3<9X_&@trI(Ng#zYk6heNIx9 znO+Y*0S+>I8h*#KI8JUKAQv5cSyISzaMzcUI||_*0CWR^)A8Tl`yd*@A_Gbgz{$CP z5!62`_fJUURB$AB7y{gYfT-wd5uKcU8GRVpuZM6KO7^*R9$Zs`NfaPU36H;)lBG(S zQCvuC1ZB4^7M)$UU<3T;6wD=I6MO~fY#(@+T{^(F8;R=~+E#GNCNswI3UXBEn$ zgWZ)5cA5%CA?UU(M&z9J;XsC_>71Nf5gRwGaPJ_<$dS11^X0w=OsU~_s6PUHgw5gv z*d&r@&cAUJ!RROLWciJpE-4R9A{TnBn@%MWQNfsm%1NXuej|@l!W>eHZIA@y`jV+y z&TJKoN${ra=VZ6lquNixK{H=~|3vAX+z!AtmIZamzL8-bfa7!5xg0k~Q9gJ<=H%Xr zo83}me8G`>7ufTPL2?q_5+!|oZtlJKPvTo*MjjvHwlw>f0BH74@SjsKNCIC!nm;?2 zPCgt77pF$J1tamFQ!tvOAPm=6Pzo1?z?H>(a#8KVEI7Gt;pY4=ON_=cR!oBVj|9|4 zgAuMmpe&4Poj*cugCQ}`MG^NsFD3$J@M0^#70G4s$gf!xs%q@wN>I9XJbX51gm z#!`2o6HJ{y`KUAeE1=GhcIX&XQi6Py4w9Fh4ubSwFhM5bzD{LQItVj+A3=)tLEVcQ z=rnrhY@&JzJ0Yckr4wLQpHVhQc2M-(zo!Q?PsTy7|UPs0m79b z4HU@o=Gs)~P&{x8xC(@euSF!tpG^v9<4!4pjGKxe)ktB)Xs756SA6qYi*~ zOcLN3i)Z84(!)2}DI6uKIz0CqSQ994l z`H$yhF9w}VXInaLbh_xgO=q10;1qh!cp`Difut7qqsyN}ot(|3XIyyy>l9w%7DFgb zEs9ilrCYo?a076`Rj$;w1=zp8s%<;4u5Bmbch?s0{;4ZH2#s@Si>W88fD7XOV(Liv zcqG1ccJVIAw3@gnx40I#p7;s3cw68W;Hr&tNi!46sIwzFTZkPL3Z@9E#iMfI18O0)}VlkUNbh0s! z!mHc~$7#-$_S^?2G-uMoGwHz@G_=&BSmvmC>VkuvOtruGhmRkpEWouu2r6@K)8sYJg1-s|PkctQlDMur|VB_pp@+ zU3i=7VZFenhYbRo9#+-@tb15BvF>5@z~8rrwIJ?)v4`EB*605vJ?!RmiKxFnPY*Lz zXFaOh-RTmH$t;1UrjKiC`naNAA157lANLfVwy5w<*Bc?s)ZB~^$n8E)KHNUvPMy_# zz7yE=`5t23=lhBEs9_Lzt@}LBzp?u~`B3A|hPB1~vo*9+v>hMoi|8CgX9b-T>6}I9 zS~?%mnRXzYqv)JN=TbT!(D{f?`4TwO=~Tm!!NH{%9Gs28LGg0bIC!G#th<3PbS!I+ z3x1AoA2-xw@$8T^3o!x8!>CazGIm5A>k zH+;Lri$1{dMKV09p+u(n)bI${81GhKW4u=aYvbKRI2_|0wg>O)Zs;qyAKCXKHn3B) z7n`V=&h>O2rt>zPkqvN)>BQ*Fpi@O>0iC_*ETwad=bQ>84IM;dUcfQ^GR{$Oai~)A zWat2kuJ@=fRB!V$eI529eXOWcw}fP*IiBT*bYcsytVwB)JKQ92fzWWssA&=D5* zclpNiM~d(n{@u=J5-q=(Zviq7eD?xNF8Cl?zyisE#(qSHdBhfW`z!e7AI zkxnxm$@dH*$?XoJhv)w?nv0O?^Fw#p z{D^#Saf<%(;ALjvT}5GV2CK>y*7Z>xkCj6iL){k7^QY65%Hx4Ry^!Wkn|ze;`K94#h>$eZZ%Qk2G6f2~to ze@KeuLsE>cO^V$1mKPnO#ql)fV=%8G&84YR(988))G7?Am0n-`B}7z7ILCN_i_izm9FDVk%cPIR-v;?T`dxy8pO zazmvypPwU^uNSo%8_5yNH^|y*%U5<9u(o{Fz-zP}p0$y7v8>;BTN`P4#K^E$mIeIo z6hwblw}4_#>sfls`bqEjZfmTqUo&IV`W4TG#M;2dmgf|23fx5u$yEXO6IbMhx7JeS zdP-XD)JkCBbm-klYMr7C*sN1j0h>`=EwLWOH4^JlTstsFaog$iWgYAcpEs&woxbm= zt{Z6&8P!po_DUi7FjorA8nqdLnHLknvBD$^;(e?d-eUZeLqM~{Wmd4r%?g&94s426 zz1bUHphzV*tKmhkH9fqj1UAEqT3|iAXe1oY@WOiz!D=`qSgbYAA#(dUM9zt&c@B}Q z-YETf1Dm`$kW2oZsB~kd%f#>_fP3f1I*9ro5So)tM^T>JU?u7 z;`~zgPrU8n;Bg+E9qH^3N4m=)Fp2k|okQo8L8iE{yU8i}(DmlO>`fEyPtSkJIsYv= zzl_gNOt|h>iczUC--Xlw8^x#x){4wbRw3??ZcfSD-JE=w-P}yH7{#7wk?V<;nXl1$Pk6%h=4<4fuVt()Pk7wT znBYx#BOQS%wt9ru@L<293|_dTZ+)nn`!855?>61K7PT(eL@!%AfQFwMkI zDbbQ45+%1Kx(YQZn5QHfK07VZYG5PL24W*oVlB~?z_vtbv%c^6st0NP_!8CQD{s|I zp7YkKnQ&{>Ot`gbMm}`ajNe4sI!dl3>J&9C$20Y0I%mgIxeVA?|Dp)oe^aKoc)ehpvjI+A%eGv6mLY+e!h4xq+e*X%FeP-+x-<6dljn z-C$~W3JUffYgd`VND?^}yyGuU0oMcjr>feuuy!YZckRsnjvrFI2UxrwI?vO2)f99; zbluNU(2^%nxDFOHl@)ppnAg_$E0~n!%}ObL|5tu*pAugu`F&Zd?^7~EL)q4V0A?wl zTt<2?=p3j)et(t|ep%nR5jP4ZXL%bbxL`wWwq23KxXUcFi?Y<)u6l{}3)BH%^8(dr z1J*B4!^HXpY9+8Sk7i0Mh55E^SKl-k_O^9M3bO60h?|#--ZNsZMX|qvm_wUP2Ervq zEH}L&MEJhhj<@lTNfnI9&XnzMum{Y@77gbV6l8m{C1;Ji!{YLfrJZ?UC}Bd1orz8hoMt!IRzbo-rM99 zbE9K3u>b6w)#{3Y|JXwy#xmoG=Q`7G;`&gu5?tU6%Sly9>=cPMxf>?LtYGU1y>wwp~BlF2=4}|1tFWcOT`TDRC zX|n8mb=b#vw&&-DjwZ$>Rs-BSG*4HHxO^(%iOcL*Xnx~%?3f)61nYgw&N9tk$fwYKh{^WE^r5M z?i{|?!k%mtxaeRy$C#pDXo~&>!ge8S!5x9(KLPgv7mjt;dlq;VaLHq0O@bFdDO!DE zO)81CHK`?5)}#T@Sd$iDJ;ZG%TpMe`2fbxYNNsB(+_EO*o;4ZAHIq){Sn?Qd7oEcD z-g||5r^IFtKeQpf<;M*U{tG@0I7PprSi0yuXk>E`{AiRi9&80u^Fr?;GOtniE2zx# z_AgTL{KsTDp?~TC+$4hl6W+IY?t`A9im7-z&(nY5_R~#nyp!iWYRF~eU>-Hnh5wS5 z@wD?J#i36-87cIzVgAY}MSo{Sxm#R%*A(31ozS0HU|f7O7F6ej`ZTAd&f7M<5YMM< z_U$xGO~yM1z|DIFKP!#@c{MM?PukxA;=6^;ZFGK5=V3VhC*kys z#-6Zs)aM-oycs`S-wdjomEiuv;QS9mj!`#{<;@4+a1Xazq;5XJn*~SUQzhOUt8R`3 z_wNp;gf~O#=3?Hw0ZyDZOVrIfz#ZS`aI?OKGaX*Oajx>KJd*YCt>l*AXW^6uays$f zGK2{@Id>Wu$hp_RU`{vSp-d#4^9bPXSmtrLrs5lqjkLaUIN6)Q2?uhL_-_+G?O$#l+wlXn#yrkaf(7sju^&pwSJ_DT5=ScMCF=|dg)wuf)UWU3LKM9Pl=lAMSTTPD^=9n8D14wvIqx5lTd8 zq69=}f&dW^KvWAt_~bx{2ni9zAWX3U19D7}A%IMkO%u%sLQx0-kx)bz5Q2bU{`WmI zvpZL|v2ghOf8YQ7`#g8 zblz`{mi@u!E*!#b?34RjpZi^KBe#^@JcQfiE4S5fJJC&%L`>z7Iv|Hd@S!-E-`6S- z{~StVO@1nC^9Ra5gmPPxp9-|7%SMwMuACNT&aw+F4Wh} zxtA@;&AAOlg1}LGYlMk{2>I7E;&W3L!CNcU!I?)$# zs}*`N#;$mp0;S`}h-LXP3UV2!VqA{5MN4Qx(0!va+ zPLx3vF){IMmOpx3hHI~5$%a_bx$r}=e}Dekterxj*fo~5nSnV@^tZt2Sk_+n)0X^+ zf%#eW1{P$U0H}v0U;fyjG>fz58Q#fRXBn7)Qpds8sJpBl{nTCAT2+sobr>wS_UchL zqc*50g;n)2g|{YzKlQQ|LH&+#|!D4@ErZ`kk}H;&%*zVM#Hh90_RG2h>B*Z7V-q}O)}Pr1q4R2`rtbk!wT9Mht*F& zI?)qRouSia_>-a7$@&rCA~Y1#EWfVD{1~|mQr5}AK}Ix3CiVji@Tga8JOWi>btQY*9;ZR7((=s~;n)HLvGOeSv%wC6%Wql{)X^|j_b5L-i3su-9_>)mzDW<}BLNyY}`z+84 zT>H{!<=Xy$~hLv+ZVBoMV0V*w(w?Kcr23p zRfcfXK<1d95blRL(dA0`vNeQ1ujHWOKpt_bWtv{0MhdI$PXqO>3ZxpIW zK3fxJ-%9n(;RB;;={qV)87AcV&B%!|?T{JvpdIgC~iiIQK}c^Q?^c{9=wFUHhf zQn{$iTku1LyBdEI(~&tx1?rv~%lb2XmD$uRrVF&|#+axRYag2(k*sO>J4>|6`Z1sy9Ff@{frv#4zmLDS7}Y5} z4O$HlqU`$7D;GzyMqrSALE1zXQ>$hz$HNMPI9@SH*hsp)elKv7N(gJO{={W4k)G`|CWn2GF(KV4z=1)PVN zZgJLGfKsI+S?2&=A<1XmY9QV~!FF;AXjG%0;LnL2N+Nb7+)(W2aKlb?3I3q%jffp+ zdjUM(Qu?7LTnOq5O@*>912qDDEprmix(3u(MLAJM%gjQQaWlPgC?FQeVaynWIMEx` zxHucO-c^l@3jy~fMERTp?6_Im;_o8t4WUx*0Jx_Nl~@rW?iP{27EWNSNS1G`3Ng#| zs!VAtfdxU0Db9KnLbEu|C4xdvqk>(ES`)egPINCU&XJWi;9iyEXtnaX0bb`pH;m}4 zS(g(+^YI8pjqXI~wJMZy?v&81ECdRSWfdBTj>ZYCMmvax#5n7yvQB7kC>z=jPV`VX z>#W<5wiw}34{ifMJy?oACw2=7gf7E0A#^94Xd&hYRk5tQf%UBLJ_E5H#|%fhrb_9s zc-TKykoB}-sK|N_P#EUOr0GN{oLtU63OMhGK8A2?h45yNmj0lDu`D(z@h!-D#P}9t zcL*30xy9e5V!u*~aTX+s`G-v#yy9>Shf`uviTx5k!=$rZDNu$W_u*3Wbfrf6VRnVEf}-` z*~iMRk?LawLWu%+XUB?)se5QVYvXSqCmNnJrobugfko-%L?q-I31MD~xtpLuCNO`` zf~n|fIN7eyACl$}8;caZhQDkj;O~I|ZeCcT{~d&I>%j^chb5cZD=X$^h!s*1gm6i# zLZUmO?xEFffj?CML2ZoSo(#N0uH@!~AUanFmf-V(5U$0w;OSUZtW)q9T0vPKo9B$N zDiFd2x+T6p2;r`T6%xV_qw~tOf)z432;negh0F>Kj zX$`pavO=y7LbzsEA(HKhQlZg5OyH5}*Dx4b*63E&cv)f(jz^_B6yuzVEmdU}TFQja z5j+=Q4AoI)46BHI;6p2v0MrpVxE%|Au{6*1N5ko2$mWvA(s^$QnZuBSgUD3iL=*W` zVUarB6tFyu{(67(vJ*Ih+ydUBrEs#H3I9SsiUCUza6kMev1^~q&fJ;s0Njt@H$~B+ z-1G3$`jg30?!zGD3qM2>Xg~rIxe)jGbmS?3I`eGMt%haGfTb#6Ve7uiu+#=DKMhz| zjjlB;zX({)4Ol)!rd}{CR|hOh0v1-&e;bw+0n3vC%kzNQn3xrXIm1+a%)7#wo`!1fc>b!H`dOU@VffJ3X@((z72so?IZS8D?9T>126|fuwmfskb zvjUd$0v4A4Qp0jhz;aW-f(eE5nqhe;V0k)VX~ZP?dl;rg-M0dkj{_D?>UTFRxtLe# zycYrLymN_ioMG8CV5tmPxN`WtVW|mN4h&eh-flN6CkHHN1uPdr%4>$@(tzcffMq7O z60$K4OOBQYEDr@N?_x!p!s2$qm1u7t!%ESFOj4w4{wMe_`|&3V5oZE>ud(2Wz8A1f zQqwz|?P*ARjBHPs3a2}>F6Ap%~UEnk6zo7eMP8=s62gjN4 z6L8ERE90yJt7Pf|gy}N498j0RUr^Y`AXCD!EMU1eU|~My8WVHt&|Cv~PL z0&2VPPRmaX%Vq(~wgC(8$=qUCejKpW1uWd%e$}uv1}tX>EZjx;mtnagV7Vb+;qKB1 z?EOlP?hjZV3s|@nlrk)@1uX9cET01Y0xT0&0~`X7vkx5HQe=+DV#`*?ABP^!{Eb{}FhfvLqH7u70EZo6Xx=7^PgAm^OutJ^+LV5$S zeGvPO5jzmDd>OEu1at3%ooA6h28R>072<%}3I#}NsbQHFuxuZ&RDtDYY+Q?!0|J&K z0+wdzGV=n>a%RBtn}DSnt-2961x3oDfaQ+?%V}Vli)rNCSiFa zU>OKlxQKepu*4F6rpEy4Ot*n$4AxsBWqQCeD`4R|bEaY0BVaioVBvyp7sGO5z;b55 z!o}#X49g_}%c6jVGr4;V%UuD>%7BGy`bP}QO99Ip0SnjoZyT1c0+v{bpJ^`mr(i`X znNGl8SBB{U%iYNIc7|n#fMt(>)Ta3MJ_C1)(Y2!E&?>frLM%N-~2 zH8^;oPw;t%-F zDx%eNVwb=vrjw$xC7ro+enjUGI!F7?DMW2_B<_tw57Ajg=dX0WrsE3`E#5`Xdt4vx z@%;>B(`DFSDNUXR*an#Qm3JawCt&^;Ib}Zw?je2yqe=1?p!$U=bvYm}bV^QsPJZGN zo906g<$r)rtQ8Vhr+=#h;f(}RzqZKytMd{~Ha#;0CebX7$Zk?JtEL>KSskF!tdZE) ztVNiHsaXe^1I;kAvo#~R4$ZEHvOS3Gddb@WW0ymYle`%)L3pv(4p<48Kaf*)9dHeC zAI#@?D?rwh>v-3@7r2?Y)-AgWxE*-J#bKxH5fI%BI2aqRj4?=}LB&Wclo%dkR0AVM z>Lp-a=y#pu&@v#@q|T>Y(tflMC&R0U^hk0c(EDe9pt8%7BA9vdZy@2 zdO|ZjTuGX#6$0HdF;h2XD>L;GDl-iN8Z#AKkzuAZNMojIVr`}dU@9@ZEVVGEv11Pj zZO1_+QtX(x^1HQT736)Vc5Hw^Hzjs#qikizPC{kJ9zbKqe&V3IIah&8SGNSQwqrH$ z@aTP}8NrEF!#4nk$eZa`zlKH|WR zgXGe7EM5exGhGF2H;VtX5!O+*)d;anXCq9QMo1dz>CU8u+`1?_EUkLKW32{7El*O1EDI4W4qF87D!N5N)>^fG$69p`(W*>o<@eI0?Fz|(hXb_frG?hLv=g7Y z0JDP`bhe?hE1mu6@Q`ktr*q@HClo)MNSq6ZE~2x*cb+7Ao=!iVkLY|#XW^xAme6^c zj)=;|1R_3(&P+POye-kubWWwSjLr%;GV)BtB!0vnaYp8oX~+vMwlQ~~#0M6c^Kg!n z{>t)j_e~61WDd@Sl!vBc`U3O0hYO5d3;0uk3Bn^v^1;9hOCrZTvShR-sfGK?WCCO* z8Go6a1Xv50_mDRZumNz?N#R79j=-8XiZ51{$xAaCACYNQ8=#rIbP~(tWd@@42vc$z zU_W5NwDeY57?mkllG?%|^Isb4Pq-KyRWJW8pG%(WklLe8atGjIVE30PYRgL|IbCjw zDjOPVmr?CXu!_nar!qAZvci?QOg*q^iA}_8iC#70w36#VH?_Z(mj|Jvx6DcJZP6n( zN$hTu6EWNH7@-4^N6*bklDP-iVr2P_nCN=PB4~g?z()bc7UR9(i^JYwzzO0ux9lL` zO64zkDrROY1C>==>VU#ZzK<>=WlpwX<6*w?H@n1-oY z2blxSu+FnJBWY`f`|VDCpji(hyJw4L1Cppz{n!nGW(i_nvr14{6%21hQA_3x(9Cbl zE*iN{$cLrcL;HaI$9-CJ`by@CuY+tb(fxBGk z4idnAyCP;+pxPC=bh~N*Htni~nC&XXcE#&7{OqW&?4CHTQtFwl(uW+tws) z8A(Xrn#~Yrtl0)UViW0^ItjJ)dVo#O)K9Ff=U~`^Kcs8x6~n_=k2R|Tv^z)aQ3Gh~ z(Ex1h(L${4(N3PV4K!kpE^=yn^a2}u3=n^J_J}PF?2!Q0_NXM(_NW0i_NXV;_GnW6 zfjwH`VeG-$)B)PvMru-9sNsZ9>H$F%i|3AObqfQ|L4iM93Wlz(8oMtIoPYXR-f5$m-B zYU_0Y8te7a8`h((2gtpxaK~=(xf6hfyOQ4TqoK36s{!HOBb{9X{f$w9zrm>FG)4vX zjY^zh)WeW1yNTikM@ADRZ8cFL{U+KEamJ{zTWM5()?s&eX$EN{R{?hZTP6?f5K`ADHEvwq4Sj8Y+inYL|6dQ&BveChm7{ti{-Yt(#a^wLaw!VOW)LhQy0gV%;;Rx&O~=6a3tRhTaKq z;tzAR%T0E*Tz-XUHJv zN#}Yx9dtVBtb)Utuk!>}6$>%>%3NFjZ9Qx2SJu9^9)u;_*E3hqZ}^>H1+)KI@}#Y? zF1-VcpC#u3Ruj(fc>AFNFt5p#THXR|DqjaNE1x$X5qcC?`I*4|z#}$s%FYFL?nLbQ zxT!&@#UR|xL}~^7wbW{0Bejm$m)fYfL~0ALk=jmwNOh$1?g9n9*?IRdK&}1<0oPg| zr9~Co1xD3*rvXj!Rm9SwICHKQCRzPA09vbmZZcV`f0FjAu0_iSEm!0u<# zygC6*^Xegso@@6L>w(uNM~{-%WlHf`KkLfP37~q$xn4!^l0$k zZqqAqro)dxb@S&0F-Y4ngwBY;K`4LQAO>kWhR}@RQL8!{Wp2JljT(W$Sw?MIh()fs z1t)Un2Ai!yW3$y)RXnyIM#7nQ^|lX0ih1<@ttXok(88VUN;~fYHtoC@*tGKjV%^ST z_k2@3PaxE^^GaY-F=~i2+WEe)nLm6Y)Ni)HX80sD!zZw5rrpH4nf57v2(yMy+@LnY zr^ltrAefLxS*sM>3k}sSLmJRbbgSt7z9S~71$L(>lQaMulQfe@cYSTd+9aLiS?9vA zhn#vw(GP4);@mgXBzr^c4et7iAOZnyAH*5^4FYTX6+95wFAZ$$S4FJtSF8L3`!&GBwqG-77)0#X2CVJZ325xs zLvL-rezH$h_H()d`xOHl`&AHY`&E-?o%X9Er?y`su(4kY@posxc8D|f>jKvH>m}6n zZvfcXFSa7EUxL`)=Bk8;ZND1OFo@W%9$4G23DDTDmEN!)cilV4o^)ks?xDY0k@N$a zq1jmpEb}KGN+||4>@DOLC((u10=wf~?@@N`6!}F?st=f#^wleJQ-8JTKjtQ0 zuxLH^@}7ZTtCE#^Lx)RGjXQ6K-|x9q9?3mT=MmWCQ7It@Z=44+@(619c_cIP$c>v? zV5H=)r@rYnPy={_HGeau=$h9CY-(O7aYoJik2Y9)AkNgheqdemoQHy%R}5@wUInpk zxz);F%1gGV>);_ZFLT-T+M3I**Dl9G=mR=DU=xongp)&uXKd8^X$H|DaAd8tGd8{F z^$l4og|7bQwNhx&8f&HG+do8QgPx)5%STtE-T;o>%@OZTdfy=4J<7ZM6L1gE`_A$~ zz~YAimkX>Wyr<+V`0~07zffOU2qNnklI42&z%9fxTrV5A9hfbM)xC?DEl6VYDlU;5 zdjv7=F8M&qT}ru&o%oT)5SL+MbUqA`FdR3M<4(7XswNouF1L)jRuOl)i3|-_xn&b~ zfr)CmbBPnZmUEHN3pi$Jx(htK*fWjkNZ(_V`y}qPNZw!9Vg@K?fryE9Qw;8xZ^bg$ zmd=mq98G5)olD_JY3vIv_QmF4$(Fk^MaMZFzj5~^Swj;LGwyMzpp}58g4PgA7r!0i z)C*JD)__e6z^fLMyMSn=|3k?g0XqOkY?9goke8HMbI|_^%}*XVl4>_2u8>swC{QrX4$260QAu zw023c8q&t?tx~MBQf#zRZ21-`dbdE0b_)He>n#E9QbNlX1NRcM4{_ps)ayMu1HSX6 z(eNE`+yxEO+jFqQ1sgfV{fRjinKL%qN$;vXD6;sy)Xo+;>X2}vM$@teZ6gpLOWN(t2k@1s2N=LChafSn|BXhmB+J81feq`aDQat96tj4FFS(J841gNK>t$^$idH%bD*q>^53)A{{vSbIWpUk+OF%Ra6J&A;7%ZY#rz`U1A zCp zqnGnTEL%&yE&;;D$}{;oCw{l7&s)Kx2lY8gwt}bdl8j|TnN`Nwp805jABu-$oXK5I z{4pbn93)CE;zAjhaI8?8(CZm$Vje~iO`f$h*#R7)3E9%rq;Dwm5KW9IN$110X)>9+ zy|{#9z={7E>cwBC^RCf)B#uA42m^R5f+{AvnJXnx53Ea~2~d|rE8uWTqJt7@f_dn@ z&}8x~*JF>?gRse!t|~F|>5gp`V9>EiK?f5d+RT~=3AxUWElpA5os>D2n9tO=asBlG zY4(HuG?^3h$#dMq4%%oVNY8|=+^coxhk38_8Y{~w*j=lJ{3%g(_Y()>AC{b^;)JIFs2J^CmG+x zSL(aWxD(Gu5yvOcnM@}|=lgJE%sUXp{-G)M*wfJcFws3hsEWN3&=h+OvGjQ*`|pRW zGxzvSIXrn3$a+RPE`68|VKzoynK;NINAX2Pep#@ZPC4GsHc7iIgtp2;XsayPM)Iw) zAZ^MbeXLG3#WYSUF@q*$O!yuqOniM&yxN!{4R89CAGbdy`N&4RyW}K5UOeU+?{?z* z(QrSbb1a<`>0CiaR)tG|#G=oE{c~FM7Q}C*s29B@fL(y$nk;WIa6j>nvlEMS60Bw6 z%53j;(6JtbZI$iM325JNb+$iDlUBJ*-KV2-T&1{9iynCn$2L(S0g3TmQKFi{wGs`) z>rkTQ+bdBpLt>x?Gv;;uhIDB>^jF-Bf4UFa>7p?12i;5QD2(O61H^t|#GVDUL4~mb znVhh33j>n~DU8hy0>EVoV^f<(VWe$Z3S)ci!_^83BQ?jScPvcIwrRgm(lm}$D3U%3 zB_n+l%KFo>Yyg--m%rn$G4GBY@ipE-xZ zMtX`y+8&REw#H+jhdCZgchbHNBl-3j`aBSOcd^+@)Zp$X*RVBkKrLRs4u!T3 zsKp~}8nrlP(|#@PUPl3~r54Yo-cPJqB7R<^z8zaw#xb&=a?v#}s8g0XlKDi}++x$P z<@q)(wRxfT5zD}qi#0vLQMO!U(;K%oJJ@Pme}6m`it>Du)80KyV*D~vvN&FMIk=P%!T1l;?xo4z{=Dz-PNBmT2 zI-Z(hCJ_VOLFt%Dgn_$>{bt@rYArJfHgl=3*k*EGe{4;gueEVI&p{gM>zPL=9j0h& z&9iA(>m-|&`Z{0xa1qV=YPK_QlTSKI^O&X38@Ij|GgIp@QEK5>5XfkRw_vY z`D^H3LMd6t-FXys#vKIwa(WBPxUTCYJHAd6e-|scQidLjAK6RZ(CoXwBQet{ee7n( zxdM1o%vdGxeR%wkfd}B(UK9OGcr3uMQttf>;|ruGk18SLm5pEWC@21Jt{QU|!AaAR zb@~=Sl0NI+G7xFrpyZXpFL|1OH9XChX(KhH9sRzQf8GgxmB{`a8b02dbwkI;P zb~L^WrZ3EciE6HM08z@Ip-P4V_ zWe~(L?-sDPgS~83j<*E33%IB?TWUft@uF@V4x7+lEuxtD*if^WKIn#LL zR%|kZnQ5dZBbW3@z$3L&C^g=qi=NIZDYWSF1HmMvzShl#)NUcCw122@dWi4?lyE~E z;f7wH@Vb!INYYS*>dQvc08Ej7xa6-aFI=4Cq#w@Iv&7yMN&iy?o(@I|@te+0@c7<2 zxK9i#NuP8#JQ|OIwSEAH*C_m^U8|pimxtj4hpixfCk;%_zu`yW>7#YjX^h%ea)c&x zNuE`5ye3hQ&a~4@PSzynWz!m+G!y4_27ZWa)EGnZTBqcfI+%@Y+H1ILLKXUq3OHcl zRHF5#zSL~v;W2G9*JGy9)yyt@=S6wlXU z+8OmIC1$`9vlNWJJ=HM_c12=?xe!1ibq%b>Yg_!L{mf0#io87hrj2&jFenO!wM~Su z7L!Q4sUw}rNaw=pemdkMk;pj?2v-Sy)6UZZLb@c%n91~u$VR{GXIRYsc0fzTe8&~u zD)PQRBYU`Y2y7!f-*54_XYNe@3U5Z5x6E;F0zn=L zeF`4cDzx<7tMRf-V1AfP_FX$6WfP3CMy9Do?oGXp!b@EdWB>O2i?I#1Fi__6c!u0;~D zUfhSfCX~Jrm>1J8?@TSzS3!R&3+!Hw&X%=_?pmJw#9uGZv(AoCAW zhtC*1f;66xXh-;0pvRKlCco@v(4ExeU>rPS;Fvq`ied)NQGq>n;3g(;TNT)^13kuc z{sJ*`RX{PZ5!s4ZoI>VrpPyiQJ`DyZbr*a(z%hy((D*ismZ?<9z3_Py95Harn3G%q zvI6pF>|Da3+=!u7DL(-{_d|qNnWLK2Bbw~dCSbM>L+~il zD6}4gpA6a*+Vh}Ws4y+e!1EAj3XOs7cHp%p5QWCTE*Tr8R!ZqE(^24xg>TF;TMU#6M<}lCzg`3NvVRLDT!j)YdF|d(=FdPHxh6c7U5JqF*307c=G0%brmn1xGONL*A&LeF^w=*`3 z#=tIO8ZA`=>T$5L!(x%|YSCgmr}XbvK^lUeFk@XWW4pOd>ERgN8PaD$1{so#5O_Kh zFa!AvA^s?iPQ}SzGD6l@WFWoHQM~wNh*~lt$x*xlxV+Qj2wn|nM(;X$2ctI&X;`Co zeB?EHqEUq?lmG5IiK+8|aIwASe==5OU@S5)9ie^(W+AlV(qT?R8lfGShcgXn$;`;G zry=nv$Vhw>Iu&#(>FiAB1Uhm^<8&hF?0!RZC7q>kq=-&Hei_|+ANg;m!r5W3AGk+w zB=wnPmx`=t;$w@>FM@qMHi-dpPl!mHi2V)arrShNXlmo<2W^@8fvs444b&oQ7{!NGl$?QH$!hTuopto zAu0aSqMZ&^iwgYss;`Kym`umi&4kIn6$!`aU%?nR#Y{$Nvn8R^>?e zo|)l>WVp<@Dj|R7nKI+5VX}I%T~Dk}?KctYd(S6BoU|=H+cLCPQKfmIN%K(A$&kKI zt(oD5lyEKpmg_`j9xC_84T*3$;^@=*h@(%-5l6}OizbDAMFT_n8oZJjZb)B)uZ;%# ziUx)>8u+xi6J4pP3$q8G4Vax>>i%2jsCny&+3r92aT$hCLtl;=t(Zpi$dTv=)OwC>;xt=o&tF(zY{AY07bM(0(G-^{E0 zjoXPN7x}x>9GGV=^hvHbXI|*UL)T(hlI>-2zDIIPI@NRzpmP+R)99Q}M~+su63IzR zIbSJp@28)C$g(3#t7rB%r!d9#3V#2 zq6gT1s==Q#2XQ?KPkI0(uRT%FGnb{`Z4yezssBoU zp-Ilpr*^`Oh`64a|JNZ)EFi z629pYjPQ_JOmX!s9i4rnEqtjHfAm^(IPbwJ-5Yr{($2j`b@oX}i}y6iTeIb`Fn- z_=|t8rPsOmFL)hVkBAIs?VJXywF$u5GOSI2QZPEyaukN`j1~T{wX7PxmbDwI<%_5g zEif*7#S}OAw|hwSY2g>6vcqp^?(jSDBT%66vskL-iydci1m7cO#Ls`@ID5bY6~YNW zm+i3=ZJ_p#Wy=!(5QK4)4-HqA_=ZN~g|BMo*Q@*9;lHbP-puH_owos-c0L|_QAEOQ zUwSy7)_ty_O`j{ebW+$GN|)^+KpL>t#n7UQjKw|Vemh&n;(p>;AvsRejF@b)7>{L? zdj__S{FU?7J;@q1)ugMOa_PaSbF3wH*{F( zxIJiTTd|Ogt3NW~dR%qhKz=x`CfFUfA(Rz0{7$yqWh!RqyV+%{QJ$5=Z!7;A;+GU| zAbuqqvmn#BIaL0d)gby?AY4)W!XM}Q&n*ZY9`fL_^}H#=b$P{C{sJ}ZLRK?z+KKL` z^CX?z#c-z5ku9f9iRRMTiOybhISYwyrZYf?58TIduZJ_4&Kx>B!jU$6 zCR)Qq$c=Xla?|n#GJE5Q)R8)8V)`RTrs^!ZVstpiI4ZCQe}*+vJH zqBS+w@lJ=-4r*}JNbeNj9^i_DL&+0>2Z&odP9qE61k4Xf-K_vN^T=9aJ&$Z6*7L}A zU{gn#sMI*tFqsK z^qOI{*jq5wsE~IyaDuqc_09sW1V%Y~7XjA*Pi+Z#zXz@d-t4Q0Y&|pqZ?Tn30$Tx1 zhr~Rv7c(7_Pg|2fhU;Q2xeQ`?(Gpv1Ef9`(H@rI_Hhk#qLJRmz|Fwyyxs?HBUYVPC!y}VddaRA!GpxQ^D2G^ z7=x~Pfq*?kGJlyJSS7iw4vZ$SyC9+0?1J<{xQ4N<4s4jQzo7&B&lbY<)JHn7R8|W! zi_g;GhfXZz+H{|rVn@b{;V6L=J2PH;)nt+`vTTGnGqgw9bZ?ym9@dRDMkDVu%P0JF|cUuMWnu#i2# zNWHN3N`=lCVDy?#Vz)B(|DXY;gZglQNo{?pvJMVbinX@WG|wsEtVZhHCKXOPynK|u z^~!tO*4C>cLr!`}9e)DDA1m2Klblpdz1@+W*={60^$DMIJcFJb$_dZZK031OFLjPe z>|xP(wUJuJIwfG`qZWSMk!k5ag1RHLRd-~PWYrzgdZI2Zr5rRXYNo)P0>3hT3xV;k zQN@)LYX=%j=QKLMrn8XFjdV6&qMJf~7Ct16p)I}B<_sMxR7@M=*0U7J0(=UFK{*RtV`6n ziw63i6Y}^*z-D0F*pZt+ZNz-|q;(HnEYy#`7qIJ$(h#0tDP}Z5J$v5Fe>zt(NLqWqj{1`DW zl9NBs)~SR}>#|M*!?bl;fsJ*#=&!BQ3v8@2KfDEYx-C^BnY?6;^GlKpmKo&7H2Z;}1aP4>S;Zns7DlNVowVuF+{cTbtDOOr?puSpCd>bR1i z!0UdGVb86ei#S#Gk^i_!0VW@qLi>_+_)**VNF9jTbly2I+Q5{NqP&#GP4 z62Gb1WdpELteO7rs&?51Y!vGx){2e4N!z&-irqoQ9*1H*;DBPr&eCB(vEkUcpNVS4 z5}yW&RRSBuYUr;Os|PlUH4$sYPK9Fev*}zwN6sH!P87V?sEed52IX%1Wsl>9shG#` zQM_b*8xDy;T>0e0PXR|gp&s%G*X4P~f$l&MaB3d#VuYc~a4L3o6DL_TmK5q>VKP+CDqWnDYgvY5{ zs-!tkguhgGpliviZ?!ZiiE?;+qX^Y$#+d%iI{2XrEmR`X0Kyz{dQV<_E>r@8KS38YdsBZ^i1*AZzm$CTY{0ll?!znGh4eyIW^?VhL zEIsZzJSYs0RVcgiU!^92+y&&5AaVLQ&1Z*dK+}%pXUp?L`-9}n2sa<)CUZY+_y>7* z=sE;VVo-~akAa*@@)iOFC^eWAM zN^Jnq%Bk}g<6%>H>`p6>byF>%r-R;AnK`up^k$$XPepEm&uMK1TI{?B?r`%oL?soQ z>L!R=5h$h|@1|(Xhe7`WnJk~^iZy*&S+mBn=0CyeTT_Jnc$GTtTFw(p`e8LzoT-Zt z@JDzhp2fmv-|HP`1w2k-GCSZMuAmBQt!e;^xjG3 zqwr~+^ba$Wj*AUzA%I%P+nR(5Q#?Dzw)X4>&O_=xbsp^|OK zPZ6*Mytb=HM}FlExSPkKoF7VE0~~oq)mG#|RLlV_CYp~nYDrNhftNE50b-KBBRa3A zkzV-|q10QNehM^A@}8!}Bu|E&xE9^ z`Lr@oyJaEIM*Eu%Gv>e!Z=n5^6tz3f&hS9(bBg|mcN>u7G1Tf);6b8fHaOmbM>RR{9#+28 zR-V@{o%?6?dcD!FqY@qhHhL70t-vigK+`eM5&Ysmp=1Dgf^0IPBrXICuPpqEJS~;l zO5*pN1(rW)mc7Zc5G+SB^|R?*P3Lak$+`vP-oCSl=sG$#(dnl10iDn2jJwr12N7NC zJ8u(>?0{1Yr}R}M-w*Bi9`n>|Ad*Y8x*vp7FIzNk5Wi^AG9;x2;By{g#Hjt(;ncep zJ$lehziH70#q!*xVJ}!H&s`eQJaxmFT$L1!khGkokM&H(KvL9N3#X^}rvS|>o; zB1=IBB8w5D13v6`i+%_#%i;03j#BimaH`azSsqg?T9=1m*X3bIlt&p~U|tCm`(-f` z(Q9b)e}$8q05?ckq-Ozsf>b$A!YA-pZ4AldQ?$0B_4FrIg(#=qtnyM6izK$OXqimL z)2ySL(cuSE`r_Y=@Xq%V)8UPt(uptmNy zFe00uEzml=gE|zt2w|*l=H8r7ORae5x45SW4q80CV+gk|A?{P{QFLF#`v7!14f1G2 zzVFsWyh&7E9Wwewb!Lsg%`hzxX$HS^yu&dh=C9@km zxIb6)L8OFFjv0DnkK=8J@C23oEaGhqTm{UROuXELIzc=$R}O--0h@cNJ;eH6s`CY~ zJ_wQqhV|v?jw)hWUdpMKT>2jBU!e{B{c`eYDW}(v?la(EEkF#3-N4v-i+l1lnX!G^ zk6j23iLLLU&NZ|?OuRQ}TGbpTJ^-{`Z+zO9SO*T;-5e%vrap2H6%(o*VYJcLBA;L= z`gcTDNQMq~#pEy=X^s_GA<6l*$)H8xoR~a(WN35ODT#3D8uXzwpVli7Lz@){if|XG zF$>WOwHjQ4vT>1l>ePn+W

    _BcloW^I{_^Ix||vug5eq?3AeN*0m9z8kOC;PGGaW)kDnftrWiz!;94hoF)8F z3@_6B$}3aorwgYZ+9GeY()uK*|O>&&5o#iDhfHiwJCDOIh^%akf`+NK2ecUBs!jU?7oCtT{hm{XP`(-~#dl)ylHO9k7psD$&-Y@ zl2>L`>!8vdU&3}Gxd4uiEn`(9uova12Aa*-j915lw!2iH_9dPQ4tu<+pg!u%&p;El5fOY4%DQMtwmkh}X#Mm{ z`OB)K)3;y)Qa}At4QW%KfT42cJ5D`_qMNei@t0;MqaS~1C)SU@RR3+r<1Y*|kG}w$ z*18|~#L&96`m}DXhBmELhSnnysf5-skH1*LW2*zu=H<^h-&5zfN| z<^h{lD=?zgst4OjT zdNEiy5}IdW46Qm|F=ms>o|xiUuou%5f68`BfAJ_P89GnDgE$u+lNh=(JH=Z65a`2b z`Uh35H?*$xIo-+zy4DAzK6o$@;S(TEA3T@}l3leqc+d*H^udG3W9p%6eefU$q~=8b z$4amTd?qPPq!Jj~RDvTA{w`#jO3($GW(g|6j~~~S;Gt}>#L1vpphb_s68LxagLqm( zrvLO9i(k=G*)sh%G^YQ4cx*^GX@r+?%cYYx?@=i+?iBK_!ioL;FjmA*rZbNY6O1n+ zx}MHbI(PWai$s%e)02=9P>|8RyO!hj5EJ+^+uzvAW&*EfdygP&fMNaF$rZq{uU#i{ zOZmNk3BtK0PXO}D!7s91NslH+DDrtt()^L_lCOiTWW0U6R{?7Pd8go29+K+qXKPX1I`SfIi2JO(68IGz5`!5Qpa2gxVh?A~y{OUGYq4|S zF}pA1zsiBBrWy&WcZwhNr}g# z)5!nqw?ZB@s3x{j7vWawM)(G#u0FLPwmb;QkG>Bb?jj^#$0P?rsjsHN7nfxCTG#*d zsATvr$gp7$oo)yiL?W{s0%+G>rtVYi?nmXYt<{kFs)Z5u&-B*3iwX+ zazv+#pwsVIP}HfO;tRqaZPiSy?bN1{6+3kT`}*{#fbT}1_$8*1?gFLGdI0l~J>m2- zjS1n*$~FOZWe+ZS*bnTNF%OIr3xPcmmZ%lPYl*6&wduh|cJLrV=AN@V!u~^?KZM`x zWno#NFg!{6&LQ;jA@scgT|)i`pef%W7;i)FMBRr%xE%;}6X`B6;Nl!+_Lbqprd_1e zbOW?^G3-#oEZh+GEv_Rk0q_o21;u{iq7{$p4kM{Q-Sr3!ZtUjr?cv0-%4d4|qA zbmVoZIky8%ptC8RN;suCD{y}l2D$}`CU5D&9T14wJeKMN+yP-|{<03a-KIH{m-kZi zkvUHe^9%w)Y54}&X^2QQ&4C`D*6#r^w4RV9`D|c8n4;vFhl>zh=5u;Q&z032L9Gscq^jqgaO9<}K#$Z1R3nPH=m>`*&)DxV%hO& zhc>9Q*<^Wos}oS47w-WyQ)O_glCgFiq@=7J2hzG^{HM2=Bp-ArrGP{6yNm6RY4$VC zx78zKPQ*{N81TDFbgD^|2jnHu3P?APbW{h4)_sSGst>d6z=m=H9XaFhks0Vub8&wL zCP;n#AeF-o9XvLRL{nebbYZmYQ_zi6>)dErbb#>6 z&f%PQr~>B(oOe)$h{F)FT*%Nd;jULnd4X*$l}xz9(X!z`(Xs@VT4QRu)qZ+3SbOME zI`l#vS9ysF|)}&S*CNX8+WPk65dw4LG z|GgWb#bD3q80^dJ@7)M(eeXu-jc2g(n_+}H=JNEC+q6BTslawez+&-6I=2|xy$|iB z)xG|hGQb7Q&Ki|WY}dFB+nH~#OlDMksm6SJMQH2WD?*Fy%(qvhP_1vTxRe0fnQyNM zy%BBqHjL1sZ1;h-hq2w;G}~%ATi&7TT^-aD+woIWy#9&bI&9az4%;oLV?=C=;YZuG z)REFOYGXX57VTH)yG)l?$pNS7%j0b(rjZ?tjjc+DA&%tPNtX1_>>w-d;OnM`_`Xxla|`cal?CW-By}A|JEuU{3YNY`cl|$87tE{el=IwU&Y~X{MPb3c{o*w3VjN zk|sZ9Ta3GU=3}-M#QI~l)x@e0K7%#uNSyhX__u&_LzXA;f3S}5_^4>R(rC+j=)AVVFL$ckO*bU(rkl-cu55YxJk7JuyspC! z{5%EC>va6gDQME%U*?fpp5*4m8M-+IO`3gK`5x|&Bey%LQ^;f}A%mQPP8$`I@Um1S zX{$(DRNPR0CTYnhY0DRlU;<^pnPFYrCN&yx+~RL%K=5x&1O7j#;x)?Z8^MaI*jb%r zfp3bP4PzWWTf}21yhz)%#x$JN|GWq)N4vRe>9?kg8(zQFj^1d>xZ(6$T^rbMNpFR& zOZBbBh-~Xq%6y{_t1I~L%r9h;woyrE^!LN$S9fzO5c@V%uH?;dV!0tF?_#eV zFagM08rK0=67!aZiqZwpg01Bwa=L`-)_?@ zv1ZSVG3Q&y*mf8(JZd#aL(I+hs8KOME$H;B- zxfVJ4qtsS5c}Z4k3yU7HcQif2re~$9HOXqm578Kt2#uG>rS{eg`I=#OO|wdk*eB|E zWN2r0@TD3P$eA1i{n%0g@wJ+DGDv#(T8&{~kw8M~Ae|huKVsi#Vt5*%JMYu-btaTdAOZEzrT2O8oVTYA=w!f4 zCFJ47qRM+g@!bx59{e-&_s%f$*F(YYN&fl)P5zt_cK(V%<-I5Qs{q{a{8dxX`%3S7 zp!d&U2QhOU1HKY98Uc+OEyQBxUx2e+m{ON(<4Ntp9baQip?UAL{14#hCiCj_Z#6Rq zrM$0FzqZKytMd{~nwE+=GXy5_CGO-bA;2C2$4sn5EzPW5c3OHRY5mb?QYO5!p$7Tu^n_Mz zKpk@Or8cOldKKuaky{yQVg(ST<|_$8HPTc9nvtf4SVkHZeFs>31)`_S{DX6ayjs^E zcx3Ki4Lqb};PLK7w0fpe>w0$qw*rs2IGoBDsnG_^7~&7BsUC3iVyi%m#1j@R9~KkY zU6g&0lHEH*wrO8Rw%@*-vPU3nfKdv^5dr$y9qH$bs3O2$HtvNN8t(;K5uW)51QwMB%k49ov*;F;t z#`Qz|@*Z?k`)fK6^yn>f(tBI6gaBSqd}zyri>ZrMS=v9aP$6`ZmLcqHI4dIuT}!a3)tghyVRE0dra;`hoq32Fc= zn5L#QE%e5X(fA?vpiLhQM@lRS5&RIdH{mTPL!M=B*;wFSV0j;mEJoS5XzC5L@c;#D z8^?+Q8z+cqV~;kj1hv8TtwCgC-v(f-AY?)f8`It`4AS;)2R8QZBG&fqRsOWDviATy zU~j+R!w48XD=2u0>FVTkPEg?B%V!l9e41)8XbG={nqlEF!hP>z9a#o!L zF#BNgRnq?j-M3dD!oR_sc&>1AqVTq_d?8u8OnjLw8O-uKg5d$6hw~T>~e7!L|Nn<>$j*gt% z#lY;ysZ9m3Xky+7E%O3&wr6tlywh zb03^8Iy3HvBQ@bdqR0bqeoklgmAbC}8Bt|L&pJ_!OkhRNN>@jyDqSO>sdO#GQt8q~ z?=o4ObHxt}^a6{-0zJbP80 zaw+>gO-tj)>e;hsSv`YKx20}o>sDz?eO9&xO}5IvkGKWJU|R0P|4vJZBVUf`U!ZOF z3Z(IIg3RULaF)0E)oAFH{)jyJS_8?71`;XA?eDms-+V+?04Ok)gE(tBczf(d~!(!{mnZbV}= zFy;4gWCk6qbfGJe+p|AJWuo%U4E;)!Zv!+X*-0$QKZ8Q*5vKLOO}YHw4=@EH^J-=M zPcVx33u0#?0`!8o7}%O$tlbQC>}1dKFwJI>;)x5s)ix>?B^S8wehhS8H9Gs)f<8)}_VTiIv5=0FA|ZiG7O= z2-7ev7Mlc#t5s$b#A{jWQj1E4VXaFoYKfH=4S+_AW@2B9Henj37M)~XtylWD!WM_1 z!pJb&%Mdk=4-l#@H8vSZ>2W+kEM2M-AK!%@XB9{D&58DdBU85{V95Tc4|YXL8*#0Y(xs%J2v?g0;587|145qG z?;|f(m)UHwz{X+)Q?$iAKCPby1+H>Fsb2-mna$4V8EWaz)#Z2`6o{X~jGawq6nd68 zPix1IMndrx`ib)b(HC^KSOG^^{HK}T4C$3AXEF^Gjg=_}uV!L3p=l#jmhJ>JmhK@| zgVzR6XgE8zCNw1N360SIt0px4G>V?k;G2{Fgr=By&DqDso6w|gLjm*R2*s7@%@)m- zX}e9!%9Q;ruN?gH^vbjX`7kTfT41Z^B%9T93Mng7P6C=34=dA0kV+ddR;DX}JAt_} zy%)HL7%S7efcwd_K`T>Ew;a4|fvYAyT2u^dsx031uc~b7d8EN>NBp>Q>d`d&d#+5M zuxKn$%x82Mj71QJ14gKZIIf(?TnCJmDWAA$B*aSTN#GV>u9O}HZYOSY%T@w+DSwAo z*-MDu3lD!~${D~QJh(FD{G}iP{9ZYS>`FkcOgV?Bqc>NkFQQ>f&qjxfQh8Y^W%D2& z7N#k_tdtjNEKU=*d@7{$aQTM?w9ID?;|`Dv&=&!)I5uGQ%5rF-g1Q{qflWDd5wq*? zSPs49+R!o>Kx9(}1tly4zp$kDMmexdDj1~8q#D?iNgc5+lSbt)hLJL9fd^NwrgCt3 z%GIl>9Hg!Egw(574n0yLcrobOSFcr{VRncFxO!#v>IOEe*FO4V^(qpkYY7>TtBlPX z-Ys{hG~|rUOWt@q8UkQ>r?(8S0uYC)l6(tkHNBV18%UY+7=GmsskecW9#8sS|M(W4 zBrCt00r9_^O1BxPJnU{Jl7kFTl`Ln}NQ-3_e1&Ca&60peCJXZ_EJte=ro0Z8->sA7 zG9%?y&4RrEks_w-2C>GWo18JD{i6Y_^!CvJ(mWcFap>lMX#`c9?n91va5`n4tGNLl zIWtFZ(1SH~s5>~0=`B1Gy&kcCu%?Arj;Ak12rnMn=|K04|}e$7Y1y*fw#{^Gf|NPs4DlVngg=9*HStd>mgk zkHiR#qr`klpO?@XkHkn_upWuQ;RUHH=8+hoH@01lH+C^ky71`VhS+669dqqCtoXD` zOC2dq!!GC738}&}9(Uo5YWs1Q38byZU4-7)b}4}wGKLo(-^xkL%s<}+tU`(oVKXwjQ|ovYtw8kENfp`mUY?RePv17HHCD>+1LN2{Mc*3lPK}i7r`kcq7mYyKH7|E zmQTtnvJUh~z8y=-`e;)V?}`B7;(EC3=1Af;n=Zf!#uf1BN8uu{l1DVj z^=D*3$rGBKK(aOY5=k%QL@r4_4_HiiYk3b~1>v^e{K~A7SG6>%7nv(>(5hxU^)jkD zKrXWR2CYWowZ1_s`8I^KFxI8X*8$rJl@48m+m?KwQ^{v4+m&R#wrg!V^fI2(VF1wR z5Gz}k4p=}+VM#e!q-0nUM}r}Obk<)I$7@lNtJdVnAS)43 zmqZPrvO+!K29!h-<0&h&0vaoH5U;%?8lgisW2utpBUCyJ5^g|A6r_9|(tt*XD&n>3 zfRbopOBhld(nK!wn~1zc?k+=05glua=o7vm(G&?9%Lg{iA{vB8EfiRP5q+hj>c)~E zbDaie=#peMU^8Jyc?htLaPI$M?@GX`s@C=f98lnJ02M4lkU`W^OieTg8cZ!KDlN)N z5K%M-0#vd=tee-So6R(1qm7qlo6ROGE1S95z-^@2%Ku)f+wFhfwf92Y%#n9uH_tq>(W4U_}YleRmn!2OiyqCOCl zDB3<`Q*7cxvvbFuu*~O7ScuYxO3DF!Ko`9qpo`SB5#4c&?2gO%dIki!c3q_F?2fBp zSc}S9?v5HKt21M6hPs~4+ugB|qD@5|#U@m={Pe%=%x6;(ndPG*g>pbD(r$+jIf!<; zBafo(LkYzuKD68&Rm|tiT8OecYAFZw0p0PfyF1idE$oLc{wC*%{qV(%r=0_m=%*88 zKV?L@`zb}&*-v=fq_r7dwAfEsBb}@%==Ltvsl&9Ay5REa0nqE&%1hHGKy0LV&%iMd zy@Ld2Q=AMTPopg6vpLI!C^^fg9FViLBT+>ub6uWxD8w}sZ69hVPDu6hq2+$tzO8PbEaj&sxd>`APd1d|1z1b{}n|X!}q{v55~Y z_tAFdvwesh;`1SeazG!@M|-Ywc4HiknLM$4n#b-1Zrn4j>0%`x@9sv?d5dVfgdZ>R zL)gSYOdPs+RU~;kBNCp$#|VC$zz?Pq^RiI(`Atr3a{ats*V*T{!H|O%v^XzQ?{>2C zbOrW)o1o?)Bl`Gph$R&7P1^vmisHC|_d%?NhzkJ&pNCva^Muqb5E=N(xuv6A>T6D7 zX6dq@IN)q%F?KIBK*UH$=MFJ)PtgmR^-d0+Y~lm#wmCZK=6hS;)^z9Q7R01|33C>T zz-ajtVlG9yHTe|n)|5h&tyx2Jlh!mlhyt~yhQ-*e*$7d#rk-*{R2y4^ad#GngKuq6 zD}rx`93_XyPhPu2l`BgrD3m7hDb!5U6hyIRhV<>JW(3wJgRawHBfzbt~mIlbRNT)@*0V_7I623ej#&3Prm$IS^%Q@@Q_- znpO{y5*A~(W(`Eyn)Q_1+!_p#OWi}n@9=S}YdulN`F;uR!IG%!94x6YY=&zst|wVT zoUAEgu%u>cCGj|)4ZWUCzf?S(xsjs%bY|}`!E39Z&YZ=3Hj%jyL8SO?nNK<3`kgiw zK9n-omg)z_Q86x1DzmEMWHy zN(im{roh=j388dfK^wbIjL0J-q53J$!AnE)u@W^8UMfy_uB8+93D5Nqn6&5O zG#mw+Y?+4)2<<4Chp|0mKqyDS5~OU)mRTGH1N(S$Xg*fa$D2d(vAT^ua$9As0N$LV zZR=^>ElVA#L)v?FKzd&<55);N*AJs{n?hr-7QBqx6bgfz+sL5mLjl_#D^$-90ZF-c;{vovWZw&@a_79<~e>Lrz6ONB+POzi1m-}uO3)b;s6Tg8@B5^15 zy6=!8rm%h@B>RK#7C99+A#SC+AB2ZOYD0TS#YGeMLL*51yk%0=-u6cJ0y1<0vF@I4 zjg#v-&q=%Y%j95n_5L>@_P#X&z5h)}y`O}nZ9WwCl)dlr^5%%p#%MOZyg4G2F*>C^ zUSg1q>s-F9|wGdKkG7XLni-ol?C-ksPYtTozKVp5T&2c zI~2P1zpG-XzW-f`p9$o#+v(W&=p!=XwGi)^-A*T83+eShkt5qNZzPj$FV72ccBi1~ zi1R|4-8t>?G8J69Hj!N0Bi?CwZ5Id3JbH=5ov^OkOJ*$G9rBU3=N0Z=9-%gZ%^u%N z=q?gVcgr|H4+zUV_GSnO3jvJKo$^CX4^yAZuxLodGz$;+BH zdYSwY?`QCRggpyYeB@CQ?>ZG98P7>|7^MaL_=mFX`8-td@i3+5H{+xG3;3AD5AkHH zrzj=8h>ubHIEEk33+W|DUAExkGJbr}JFv_3lwPS|O|m z$07A6Z{}^f{+>7MCP(Mx@ZI9FuGiFYXJ=jIsEbg-xMwmi(^Ss~T{73|dSREW`y8Eb zl=57YS$z^~MowUGVOZ8By8eA?`2rCu{+T@Z-%8~@aDyAO<~y<6Z4Le@b&jL*zLCLa zq%PLgQ`~v^Z!3l@>E6ju#yzXNn*>$!j;ijR(0$$scYNOQj!4bB0aQcvPUN+{bNlw( zF6A4T+v0R&I7dZ%*7KS=E;(zHqsF1}7!{9eYD{W)$_7o3coQY4#x7$9Uq?)as&xca zy(5GkYDc6qb9*|1=l#d|I^tlrZ&Y>PgdVDI8Ey0pzieJ}xJ*S6yWxhR^eI+BV4BA@7!-_BO=q(KuawW!iTTODX=4p0o;227wrt z)-C;7Ov?3;2hR;luf(j{NI5Djb$`eVyh~~D4fx26*av-y&F+a!+nuAE7B>HPeU2km>J`!{GT`K5Kh<8>7RwujhfTm9G}x!lsnC7 zbOXuEMWy4y!-Qi6kR_W{nqxJc>{wbN2;7KDcPmJXhu8>l+*mduc}G|}A5Q5Vi`x*L z*LGvrh<_qQ^C9jcWe#E^ezo7#&DgGho?7Tko$}8r#@ibn*s6lY znK;B@?hs5!Fqf67>Eq{Teuaz-jE?Yn2mV%tr!XRG|Ch23yj;YHrxNwwk~-B<(IHm< z`xuoz3T16TVw5X}(N@ULY~0T3oh2l4U*9lFq1?pp)}()e29(U{glK;Q0(_&UWa-aKYW|M zo2U+Z!`bvbfUzt#eeX`RSLT0#8*cjE()9*!)>ci&@%$x6<2fo()(?aL|p`RJrhOcYJxh3jb0W56_*2H-)mZ@a93*moDyaeG6|TQ?_~GUCZ3N z(89Z({)mM)18i-CM)Fe}=FUUQx$y3;=~#ICXlg`XZ>DRt9T662xgCrwbts+7Er-W; z$XITQi`xu@hHJxk2 zFij7(HXPuj*@0TIHcZe|xi*y8)u(f9sG`Hp+E7i|SsOM(4!$;QXUaCO4UxIXy$h`k zDfEYHL*|hVTN}|=Tptc~^myo8AEszJ)(5#BFgl{Qx9NJ2d5n|cZl?e_7^q`e;9$r> z?ad8_-I0{O$iYBe9}FU1`*}uP{yc-2>8dh3ER%II@I*#)^|oUWit@Q5uq=#1&QjO? zZWBWMCrKWdnGn)HNlK8iEoZCMrNDlt`1{zu#Z&6ya%B~L>>tV*_3AeID0q~YDO@-D zOc>GPB`a~GRV{rS(RmjsK_M{EJQs3=>ZF-JDIm znH%2_+cf)`A!JYf07oz}?hZg1bqnxZ?!LIMwh@gPwKDa?J77fM|BXiN?fjc=KPaqB zB=qiwgsWA;o=(E#U*v)DAep)p#bz<}1@6?iLMg_SD`74ZUfLvKa=(9Q-d?a8PCSod z^O?FOZ<(-^2?KaL2F1FaNIn!Nz?ixvZ<(-$37dK=XkCZ)?{hd_5)d~9Pe(?=E)_Q4 zjCf8))M*h9B7%SS6*(HUhzAhCe^-i#r2R!v_J5h@VgZ-`Kod_dIu!=(=|$C0@oUcN za#_}i>n-bgs65+>Crcdbs3I2kJUoYrb6B+fkJCJg_P;$#DBAz_d>;9^J9qxNz7;C} z+u}S}=zXaC#ouM3__t>j^V$FQtcEE6?O97%{oAt-?)(#Zro)GSfYQy(W&h)}o}%qT zBSqVX5y;{AKu*R%<(Un~hbgi=+XwFf%7-k7(uZ8i%7;}l4}7qakHe5iR?m^T3MMh; zhoi^xS(^P&pHhnBQ`x}`{B%5^YO@gN@k(o$&nBgYPB?$V-9TA6q>6w;$)~&gxe{^0 zpQljsRu*Ra(?D^2D#sN=$o^OdDu0q7N`JB`2lS`^-#1y-t*C;JzY-6=n!+M%FA6By zk6Zc}$+WSt9jeAk*wc=W_Jgk~na^frEo*jISx;GcF%)@35n!eNRUcW_E%1U5z!HzX z+Q=eoFX|}T4_tZ$$+Xe&E>z8nub>L1Y%jJmpY28DB%c>4l$94rAN#yWzFsaLSHl(2 zEhk_$<{*RfB%3^nz9-r6q#TAxv!h1Lof77=U8!RA4k6W)l`AMr5t970bVZHW2Dnno za_oodY^K=6m1YNwaHXF4Y*!jtz2l1apkS_u)eozS#b-W=r#)pMt>Z;5MV}YiV#3yF z1BR;IRlK|;v4lKArZAuFN&%~PT&biSkdWk_?>fgi z_@|_r`W`mmPg1&=CfU?WA%b<*vO^X_kfK^;Y0IFOQ6SvTu#tR3lSVB& z8t4C6m))qX6zxVeK$MNL4i40)W`|&)MkTQryHPn1Wux*bx4BVbMd7}f5C0L5{i$R% zc6-)RwA-^DqHNDbnth$bT{71HRzK6Fj>XvRX@n@-lXOVC+jBcS;^TkBgMV^Rp3|N@ zigtTSAjQMRX!a+~`nxdMaEer%h1P}Bf4&$eXX0u~?VgsI3&8i3L$M$~rVqqne*s0UDLWVw{NuQ8p@{a@!mAxNOwZpilJF zO~-{Moo#D0$xg&C6%TrvB%6Jgf}{F{yFz z6)Dg^;#V=Bk(rvzr#&G!Df(|&Z%6W>f2n-b9}NMs^Z8$?C%ChV_2(g!xKt8W%7)m4 zu^NrAHH@(dQ!zGSHH@(dV~p4%+JsRR&e())U_zU)trTs-R34i!s)A&jFshQUDEyUG zxZD>;PQ=u`PPFL|4>fa6*sO3O)k#1e8GH9qCjo`}Z8!C*8S4D6W=E&DT~GD*E`{Em zsJs)Z<{fqMPts)mkyo^yx2v6j4oe?`vEBe8d#~v3I*B;$w9rl>T6wtia#|=S5tERz zEoY9c&#HRE@-pYcS)}~(vJKbSFElmutyp%V!(4N z`9Yb4PZB;JNzxxdl1jT_t{cxi?{#UhW#Y#3waARbp)_rMo16BA^cy=~>mvGHR)|Z0 zw%=+Fq@kIfOVy~Ps-Nbi?wT`W-07+6>D3&QkKkBmr|*n^1X#&GpvlQU^P|Um&K$yx zG}d+Rqw&SFanaN1G-L)?4HhZ z#2cBep}Tl2VI5@W1nqW;O&$r@><=ArUMKQMRaDG;$u5sxLzp{#x{(+Bo+m+6$W zC%v8yZ8lrLCvD^*50^YS$T%fB-~k$~Eg$}#Eg8r87VAR#`VtwBv zlOWdmm8@KaBx@X2^#4On*r&ziU0ejMLEZ`bgfe?JAZ6QT&nMDr&ib4$;C0?SoQb!+ zcF+2~LY(yt$Q-j*NVDELs;zzxyVqHm*&!Fe@07?AyF;*g+8we7mTP+{&!Th)KZeve z*WKPhs^@ValRJUs%?Ya67aL4k08T zeGeMT9k18`o)6Rg;3#w8e4C>p7`UqM>F9jVRqr#p5BzklWo5(lq5HFtBfyx*&$00~ z@~1CE`YDL#x}=ZjaUpKS3XnIntym=q^u7I&JNl3w6lo>%C@sA14zCaW5?&9$)!?-O zypGu(+B{s3yfNEDnTH$O?6vBvgVEB}^qSYO>uj&>OWBYETpV^DDE_c)HRr>H$e)>X zlHJ$N0+o{B*3rLeN6MYum8^3b(j-lHA9vDFptg=v)fY+Xf0&(}7#HMW3tNjj1+8qm zwavdOCzRJ1OhG}o*v!`$6i~F!yH`^5U4zih{)0CC>_62Az&Y=}mig>`#CnKwAF+{g zzxjX@oA*^kKIPSN%uaz-E@nmq#}_A)8VXZw%?QTmWaIiL^tJstH4b}-(oEA;NwEP8DmnUqw_+(Y_X1OVPd}TZQ!6 z<&z7b+60R0)Yn1f_;+4Kw3+$rw$wwEZE2*e+VX-d0{gNwz5vI2G;-N5z{#R$`;be~ zz8?D>a%dM%evt)C6h1_M>hd9<`D`CbAxaL6mLDrmWgRhh$sCtDUAWm(6DZ zMcao;ifwqI&|2nm<_JXT!$!&heZZ2Zmf6GM+xsMy&#JCN79P^%R-4D-j(B9XeO$s` z+3NZgs^;r%8ttl^Uw={qyza)EkJj6-yUC(xUkT2o*yKuZ%fDOlna>%U5G9vuCR_h2#~DPqP-asOxJZe27foR|p>W~_J(mcO`-V?N)wcGP9 z@&t(XNKK(=kJKE9a-`%fw?^OG@R#qG>}cM9UxQ-N(XQX?6GFTV ze*^M{b{qayq-@)v@OXJB#EoQD^w;qEb$H!id+j=eXMY{ybHuD!c(UEsAw5Sd2}#@L z_k8I$w;ub`?{imR>w)rk_}0&kU^mg?i3V{!X9_Zhy7g$Y-?vD=aifKGHT~ZIR9uI$ z{dSF#-C|mFTb!p{i@dwVh}V9sr(5=GKQ=VcC_I%j1LrwYKE{bW26e7k{fyyE-%M8c(7nil zreiPUXYZvTbBNF0%Ry4DH(POTj;960p&q|vtqX zT8`(_P#7cz1nq-^Kdoq!ow0IxF^oryy{%7fSTwWR?oal#JwaagA#I`e!)UjxHP z7}zi#pKgJ!T?>_}Jcqs>(XP84eud#4)Q964uZ8ye%(C=rp#z}n*Fwia=V?&+LY|4x z#qsqptPZ?bbtnv?f=OXQuYjJ)43puceG}8)9g}kim8x`6>dv*$d*u?wjnCEW%d^hH zWg(jtS6_yFSqOPUye!oIzT}y|KHtIXF@M3?2ghrHuX5XHaMT^Bn- zOpii&AQ#I@FR(U&^*@aIYwh~QZ3 z&VwkYa0%rgQ`kz5sK+%$J~B1AFF(@xaR@*1@gbV_F(~48KJ(PGIkqedH(!XuQ*G-_9RCX$uu5fM-QxwK zxHVjAae^qa*j{Sw<1u2meG)sP6elLR$(?uU%$;LLi$e08r1ltHf|1ERiEE*n*z%4^ z{L(2wQ4>SjFjXOCTMjy+rI~?z%!v){*H|@b&WR0WQ&-y_A9=dE36DABL-TPneH&iE5zfB>vvth?efu-j*a@Du?t`vPZQ9BTFh0}Z;| z9-$4oQnVXs<)B*%$2;gIID62w%h@%Z>}*wgn62q#X9KQ1p$>x$ZfEuVKSqRW|4&`t z|5JDE|7pX=P(JKN#RwrdzG0c8%Fex3jzUm|fe+&bDjJuJ2@L z+qD{O>||#f!rQUV*14VS@Co)~dzP;4Zf84ug0*Wkh%9j(ZaduBc8%GTPIk6kV>ZX_ z?5;g#^W4sM_%LYKm@VmKXWKPqt2)`)b}?Js$}kW?LRg&zSWyoetq{8)sKh%$WKjs#&T zVSj^Yg>Rwtb$mPrYxo{v{}9&QzlSvyA8)`KF(hmtM8?m-clZK)bom_W-ynpAbv>Dp zU6)bmdKx~%yZ!~A{3oK-Z38~KKS|LFw<4FJ@a~a4R^ThLyNK&4;=ES3dZe(G7%MUj z`MX3$F2+~)u&B%MWq;gEsg@s)@ME+5;D18JMVF)g6=ucoKB=6Q;a2w4$QE$F2ocxCV zHA??RBdV1CjmHiso7K;;S)*wCS3=QYjiSRE#GT>a{-~FM7uCA&1^<4bf8Bn-hnFA8 z{1|`_LFXW(T1j_5N48pevmoXph?^-^#Jmr&o??H&Y$L^Z(cj)x5N*%1AnKlzAg#Zt zhS1;MuN}t)v2n5AJ1Xyr>K>;C6Q@CUj~XphSvZFvgNTmyau_m*Xg-z(A!;~VzOQWg zK`>pwmVbprxopjnn9m>qVyundSk*4yZ){C`1oPj7fP z#@YXBdn_hic(=Op7-bRTaYN97cY?&Xe6 zbXSq+Uxhn!@7N5ztUlfpO~nLL?u(lgy{c@sF*;tAO_hF1$DC+a+k3T8m1i)ju3_7g zyu%zXL^%nnSkc}D<&#ij+&;xL?^BFBbF6oyQ=N85v4Kp@ zjy;7pO(2L$2Y4$ql^t@1qw}Z`ou*X&KO}mP_bew?(46gEqpQQc7ieWg5BFZ|sDkxT zswh!$j^_%**3+divFn_KVu+9NUZbgzt1OYSktxS}Z_%Qn$E%E@hVd#RRb&K#+ek+{ z2;@zxPmsV`^q}`F_%Jv25q2hmL*N6NN&=sBbpELc1WJ`l2?%_~iFF8kL05-+U(w0} zfp0jfL!d0mA+QdyIdo}E>_<*QhrstWl>{+*rw%7~eW{RU!_E_YJ&WTAzOg&@9c=|%L{(?HeP8#GC z$kAg&id>50MT!zTg*S_-5kxuTMTWH^6-Jntj@#MhpWS24cTf zb??}Tdgeafv6{+dUpmV17421y3Qyv_(oyNjC?~fQEi*fgwNTZ8dgcVLEK6igP>zVA zW899!H19}^$}Gx?^-gta5{-&>$3}Uxomh?zto2eAiF>Mw#cb`VDyE9QK!}RKZ*oz@ zdQ|r|HwK(33=3h1UasbhP)~~GoMA`@q6c_6Zy2aHGk5wRI`G`7=Mb~!PNOYy?s(6J zHQ?OIVvId^ra+W)r$m^=+*w1>o;$U6ia>LxPNafc+94|jTxbh*64hkM&jm>PDd)(s zn1PMVy((rp#H`g25A_@lF&|>&s@O%Gq6nNHk*mBVx;g`YHR8suO5}Y)X`T}y zZeRi8pgV+hk5nJNm2E%R#G=NZZdv$8Ow1?9Sci!|v%*%R&dAllyp^u?j7#iH%L zW*;q^JqGohh^07Y8xCe!@X>RCI-WVr){kds_NP4RA#l*6+4Y*rW`74gm*sdpUqURf zo4vzH6{HWnvJR)6@|fwUGM3XH&6XaB*l6W}D4R=f)ND3;F+WblhnS9g!@h&V?LG8% zCH>2bc?aTJiUT~aL#(B%XUDpF=Q{!qs2t z>R++l*i8Rs#GDDS-gfnLZbH@wS6!?Ia8>dqh)PpC5l5A=j;k(KQv$GhAqlPK$4%1J zgWyWHf5X+iF>{jOl&2tOFNoO`vtu})@@y+-RVl@tFss(G9D7#PLc|i`>a&iXRhEZ) z;>~nogxYxv5=W?=H&uJ(*`Qc^O0qTuk?~}$1QV~GDYw5%Y*Dl2~!he^78T=Mm z`;Z@M(H7JA4p5g&>aOfQ8yOQ5b0ZRY&!yrua%dEzeC>pB||8|&du z`65Ljo(drNB6l)oip$_??(oD~5NVwjPdE3b& zVlqUFHrg?+CS<6>dH9U&uSygROc5p4F`q9+c!7U8MD@}6K8!w}iyuwfnR=#TRHPmw ze2%;TF=G|=!n1t^g(-{~qxwk1j1@lT*fB1j$Ed;uxuaBxjw-npO&A47Q^@rYesGA0 z{nIgM?ce*N#X0z3m<+_ujUAz@hj{p_AdfD1J>2q_P>dB~6-AGCypvwI9P5?83%G4! zH(ODoBuS;v@gUw05<$E+3+IN`s8k? zc^`Z*90kNKj~%Y7Gt}=4Og@Y=(c*emnBi`5hT47cCr50iQpGe&Q7TX6#PXjpQTdV& zK9pk~`JguplYrP$m0v>j`6bkVel_k4zpSXar0HZy6UWCpyThRq@WCL)$I94zU7h8o zX{?~h`!~=u#!b^0l~B;MuTsT0!4SpPPx8WXvW&d2dWL<0*t3))LiIT!)PRm;waF1H z>Kqcm zD+jB{g~Q%=RmnS{B6~^Qh)OP$mE^OMPj+f0QR~RqE&O;;awpdEBph9?LB;X%RQMp$ z(IZUhTpX$E#}4W)t^??jZ9#t1{0Y^2pkM?+KjQWD-R_IAT3bQr1xkP9^w&E1rN92^ zZ}4MKrWb=U0OPWKPP}R#b+*s1{9bHdDTiW@F!6hP4P>^mkTv!ub9}C{Nu!JrtBDpxv2|Zr6oXm)^(qRRPwW6tq3H$AiOH0XCnF;M&FI-t&Hx6Xx`pnFBOQU;&~a-4IB)o+v_j6 z;9yZRfQQnSe?yAt#k?GtYBY+xEuJ$Fmk@>-{t_7)9*guopZPPK~C8ObX->Q|(Q zJlPk?GfwIpf{0vdMg2n(!nKKt_erO0(S4_AoD4w!%Etcy1{4HAMV;B0pRO@F3{L~tjSXqx_pZvzA*|+z$a}UsZ__rY z{^MzGbspWnb9t3X{n+*IT%LbXXI+|fF1L-MbFWE#E?`RFVxpq{4U%G9s^SV9cZh5I8Fz^1D#TW!EJv&rV(j%!9)2OuO^!-;;!nY$N1QlN zRq=P+2TiKVb61rY(=!Xhg5~FVV<9rA0#z%7?;j)TOBOiONhf?i(JN;Fm$$eRJq3uZ zXMwiZC`9Eu=WE=FO?(#>a5el_lL{8ND_9^Z@Lq%pY%xoSq8+(HY^fbJXkR$~XYENF zgz>{Hr5^TtsV!!~y2dB27ozf?%T!#c@}Gm1+zbC}QLslAypj2qih}EGkp*w}iQbEu zK=_>{MCG@u&?ivCZYb2qB&sBm*E;<8YpsJfK-R;sF< zgsQUcEN7+NyyqbALr+{CzDD%N8Wv-VHA0NxVBH|Zz+P}B9N46^i$rN#na>s*gc!?F z%CI{Scagulwtp3H{z#T6r!m*exXV4{-MR!N+G2_j6;oUm<1SY|y0~A35(}D?c(o`o zhsD@pz7Um>$H%a@Q+llY& zv>9-sMmn*EPV8`3vBOSx8mhaUWl9oyu>POy$TJ~7)Fkr1cH}lhK7+`3nNzGo5zY!b zAF;17R<=u&8|lQZLhJ`kVq=_Gmi(0-D@u;XDn5|wxwwr)+*7CS=sg)Z8j&NW7z;xU zTANU*8pO;A!(I1VC5-ScKtcx4WF?GN=a1=S!Z_~|CzkUrVUo8(PdrK8y~Mpn!a?fp zrEXNGczO2{gNU83VntC$qkpqy*JC$gSwCT)I%p^*`*MB4>B@2L%@P(U$3+1P-HtDD z$1YNNMLSM%7DOzJRun1{>}()At5m{Wjh%f}4~rX$+}-?FGQx&T9)=%lY{+G5P;>8q zZkD%N@Pq=oc^VQjINdBy3p?F>gdRK2d$glEy*^WqouqELa(Z3fa^>_oZ=_;ydR@k< zUO!Ow`WPhIoxR>aTV$|u@Re|tYDX;91*#o9R3t2Pw_}Mrc9F^}8ZCSMLgdVpWHpei z>r}#BoUFq+2*f2j&T#wIGI3vHJ|o0^jk76?QECPZLY^-6V}F~vsPd$beH5rk;DZg83Im9Ewe&iP&$>hL8J zXSfq*xf2g^Cm!UT=~N_2-qTy4t3y?+DA}iS)b$#zn#9r9Yofd4iOLNTJ541P?LRuU z*r^D=FsxoP)s};?@n@*>1k4*>e3vSq+UyuDq~i~x701Fd)!QOwnQ9MJ_VyB|SV8kLb+fQ=>3qeUh+V5x zQPxGu2ccf9d=NBW?5_CqCKb!}hz6YPJ;m{Z$ADgIVk`94u2wV)ug|emRf3x<-Q9ns zxW<>q)~{0ug-`1QFC~nral2R3#61@;HL7n!Q}6Pg;kYM?^;7RwBnt2D_3*y#Dpq=* zo51^&-=fq96rY^ey>3^D1^KtDo)V>&sKjEl%up&<(_Yh6UQzNMYC+%+&|cWfMxD+z z#JAvxwPrPKehbcdw7FNED5euj&j>VsG?$*oN8x89TewLrxQVQ(pIWyCQOU8JkdQ&N zFx4wh@lxereBOx`ElyR(0G#3B(j$*$B6Eh?=ZeG`?!;N{#Dm<42YKajP?WrD7by>gda?3Qbi&1Mw@z>3mK-V~ z^-8a7ycmRMd%ttM6vwbNv0pkWd$8APSD!>;*^(nzjHD~wW93S5jlY3Zty2j_rRxNV z)@6vPaeG_S#9J4MHEt4X6cJ*a->zs9B;M}b;W#fUz03QPqYBpUQe#3SzRR8XZgu0a zv*fY2lIZY#suEGmeX7kueZc#gQ;EoTi|R*bjnnUi?lnUtc9uLDE4ZJoVnxZ*-SzIF z)}G-4kc!nQu;zQI`h@IwK{vDAxJD$dRYQ&{hnzfjEy%do+u*pxQ)h`+sIo-n8`Yo^UB6y!>qJerd012< zsj794kvqkP&wDvy?owk~Bab{RI$RFO!f0X)R*p#O;naAgUXsmF0?f#Cy8`ozawO9tk-Jn0}DAE*vW&ODdfIyukv zZ5`&h%q&PBs-kGjl9#(-??ebJvqJ@Pq-1KE}Xw42* z4ry${k(chN9b1 zpLYh7=!_;SfaF)yyV}j~YS&gI@p|R6DEWHz&m=+7b*c%XGp<)-(^(MY*pv&x7RRkr z_VX1gv$F!ovuVQV^{!n`;%%zih0}L>xap~~r@f>?_;8oIIko<)fZPKKl9#FJA=FH@ zQ|F#7G2I=Tu6A_Jq9E%PdDB#^aDRZxE4&)up40uYDE!Ptp)3AE5!IU?1Mopkt@&63 zDzPZ^di?lT9GW;2rCbylXQ+nr7@9Ow#R`^Y zdU)SV5{oTYqmTYTmFHnZ!df-O`3oj#gS*tn+@(IIj?DbApY)tMe2Q*-&h?M=q|HtK z94~LB7M#AQigr{vB!pYfsG5YjNp-qNyvdz+qxyfLXyNMEe;xq$5J+6o>e%;mbwI*9 zn%eF9F7fgXBc|>aMjG7Z{Z*-=yfyCP*R;3zbKJ$B>n{G>_7;Dhnu@~vOT>mRn*(E= z+VGJ!acqze65xI$X`RX`NI%WpC8w&+7Za#VO=*$XeR4Nxuse3J+PsLNJjfk8NX2pm zOv+NRqIa{@Iwa;|23E1XM1A}VIT}i&xN^`#iT~H zXo`mXmLShyiG?j9O#J|NR7BBCG z5UqpmO7HPYAM2MMx;$MW$chj1P@ls7wNzDN#ZL0e3SDLuD@dxHwZP6Q&wB7kmoy?Q zK|lADG%_sMUWA-AUGm~(X`;((sNlAW-o}x$e#y}q(!m+*l+O$_#FK&C* zvgixL#J;B%GRL+W?4qEP!;~&~FAs~C4_=b-a^E2I6=Cu66qz9N!Z6h)(XZEssbxg0 zqqq7wdWWB*(Dkz|Ne}qS=cz&J^5l$ITcJPbj9O9OLtzQg6c8L;J?n=$Zn#pNFZ_Sl zuYTxqoQnMS`RW(?J-%@$@1X$H{co)Q z2XL9^EpS|3to6XT{6SlN7*)%<73h12I&5%j+}HPenI7~Vpti4MvTueu@=@hk1bxqh zXgL?@QQtwa*E%(k_P#^Byf2M`DsEL&KO#ixJ=IAtk$Nxn1BCOw?`Tytr(NIis%SQ? z??hEJRTeF;WAI?qH&>-*pY+XDsi`uxJoE@ha@|!;P*>mt1>@9aR8Vk^c^#UoL$gPBO%q+Fa$_6(gOiHvj&gzo7@aVVI`@qkx?ijz(FF06t!6HNa;s$fq8$4nE1~KHvdh3-Ah1 z2bkbyU=B92i-B^Wikn&|P+tnH@UzSKP`{(FRq74w1`GsbpxzHi^|Q!@u80vct zcnPQjWT5^s@VcK}#+&c|Z3a%p<;zon3xMl^TYy?%XN604x2$V{^}r**D?l9}!vOpp zV^3f-FcmlfmVR- z*d4!9`UB~J{99K`c}#rh44jmO{~iL%fYSjPI@gqknvfc-N02+Z`0U4e_{Of>> zZ^_QIEYH83=Ik*+(l=-S8F~Jr`N{H`K2&=H(*GY2jy!?#?P_*%nh5*|NN&3fmc3zF z$3mV5TmsZ;_SKHwY`^&P{19d=u{Eco;U?^}l zupW>>PxlSd{sR08$k5*S9;nL;TXFs1BL;^fMFmM2C{Jj+^N|(_Y8avd;xq59FJQFN&p#{ zZWd4qoCe6Sv+VP=vNvhv>-O_By9FP+2k>)e*{7rInLr6Zeq=Ze@}+>zmHekZ(?o!? z7$6B43`_u~0wx#+3GHFkl!k3>XFs1BQWM3_Oi<{VxM=0tXHCrPA$t!afSn z<0nHu4wwU60LVanF>nTOmS$&~tAOi(FM(fx9@_6L8Gmz-_+WNfulY6%G{?Xi{5D>( zH=a2Pya>oZdz52;JVg5!$is5(@k`&)_Dh1)+ZsE4WP2Y3^!7Gq-+?^-=~)K(+yv-+ z(mpMSy-xtU><9C07%&VN1`Gp+0mFb{z%XDKFbo(53GHFkl!k3>XFs1BL;^ zfMLKe@aJaW;51xk0=~|`yX*iNXqyEr08R#004sr?k*2Hm908^~0+8use%hEnSibhg z=lhi}>kZ`d<48Lw9shj>WYF96U>oAkM4mwTg4qv4-TA-?zyi$=>a&13es;dTc{R9B z0@pbj-?Z=N*oTB@@9(7N8;fONIUQ|(0d>%S|9V?vr;luJI?B=8+njxHfb=Ybd}gB@ zozLd%(*mU5j(-0c_zj3g`(&UV2E7}g+s{WCcLUu}Zvr4g|Gh7j@MD_uw^$Px4iVPPin9ooPP=qL8*qOHX?pkOW&<2=;q}qz`5v zk1{6%(|}{O@~IyN9OY-HFZ8ngNG#{p_DY-@&+jaSsn5Lu>8dIOSa8S5DWlc<3Z>1aK@M!$8Q{z*u0SW?v3@6|fq( zM6*+016<%|zXSTeff&^5)%?$cd>k+fSg6^l7Xowr?7u?qJ`QsQ=nKd|-2)`}*=4-> zHVhaB3Hr$OR4trUNqEG6K(c0v-ik2L1_r1(;wMFbo(53GHFkl!k3>XFs1BL;^fMLKeU>GnA7zPXjh5^HXVZbn87%&VN1`Gp+0mFb{z%XDl zaAU4z?Y=*r`3xKa%mgk3WMKTu0OKdN!ydk$WyK=@Y(Ouc_Pqew=WFHDo)p9$6Tr?g z-T;=Mj5D=zXwPx%%XR_#iH@JA`uR!we8AuS18lznkw{Pe{tD>)$#{Re7wOoqxd8iB zhSu6;KJ#rDFbo(53GHFkl!k4E%W*xEa48J_o)4z6E{+8iBL}Eh__%f$44o zYJpujeW-r7luLAD@5V9$aX#I*WTvrw*^SgGRWui zfX;Js_Lq>yKRwq5_MhxG*GHFkl!k3>XFs z1BL;^fMLKeU>N8q1~PGt;ws>NU;{AtAj{etkfEjc3CMFauo!5r9Hu)2@GqbC$-q=6 zUe?RBvfN7`OaD3|z7*x30;~ou1X`*ul=S{-q~9}9{%l|_un3T$qwRX%c(ndq2OlK2 zy8TnwzXNsvVOo0X{{nvTv&(jvZ^J-)7&s4O?f<4&R+p)kwH%P)M%Z&E<5`Trdw>kI z-wD(L4*@a+v+HR$BK@<#^FS)f%+Si+5AqaX8gNu6+P_6zOVIumz-hoL;5@2(V%X}LK3)7{adDoZE=Y9El&E`e(5{f{?{P&w#H5$+1`16 z?QPEfPJr|*gM5|)I-kwie?lJr^rs^K-+t~>6gBv?KcIfw>5V9$oBpP(A(RbeFyURr)L@Db1k6r*_^#k zfb=5{v8-o+f@yfa6d(ibXF2xr5bcFd`gwloJK8=WNWHDG(?_;p?5zN@2LX%0y0qd0119}86WERGsyo6 z@CHy1$Uyxq;9Wnvj5ptg0mFb{z%XDKFbo(53GHFkl!k3>XFs1BL;^fMLKe zU>GnA7zPXjh5^HXVZbn87%&VN1`Gp+0mFb{z%XDKFbo(53GHFkl!k3>XFs z1BL;^fMLKeU>GnA7zPXjh5^HXVZbn87%&VN1`Gp+0mFb{z%XDKFbo(53;}jX%>MKdmi035G4Ovtk0bHSIY5SGd6so5Fbi=D0U6GLZ4c;+fZH|u zqp-(8KMSY^t^;laWY~!KHvt*nlAUQ;o_{&b*?R;@AISa@%KrwikcaUyu+9YFNMjH8F+aDyqbvT%jV+UK!6ObwX=+Iz)+Mi3XmZQwzL3t+A@HF zz;Hl@@sRHXJ_n+5@$7hD5U>w$1|Y*UC*Ah}(oNn8=~$m$&Izbz7ElPx1!TAj@?*fq zz^4FxJO_}Wz433N%sSwGfOW_)y^Cc%+Rd_F0^R~-2xh;kt7Tme+z#9U$nYNWehQ4} zj`xiKGk{|N8NNnbSLj|~Pt7jl&G#RRfrAHH)_kCU7M?c^$nY|3uLAD??*TIWUiJp~ z@C`5wK91A;q%8vacp$eOc9ziIlq@(@@>BVm<-h8H}RLicffzN-^bLy2ma+} zA956qlfY!42r$7g@MmOTImZ5Jz$#$1HV<}|{m;m$X|rL#Fkl!k3>XFs1BL;^z^=o< zkm>l{2aE+K12Rw_2khr({~PpMf!l!l02wwy-Uhr6M9+{`yt@(l55RwbE}Gq!!bpaJ zrVQK|XIakyTYz@}8Cq*EipTjyU_I~%Aj9uv{~SJi4OI2EtP21cZco5{2EhBk$G|VZ zuYe5gjo*Z_UI1POSdR=HZErwbvMq7Fa1ROEe3jPjof+Q)<;(Cr>irkn37c-G9LSH> z+M|P%(^`8n%EKYQ4IEY=Yq{5Z>64x9lz49GxvBd{6x zK(jxk*}l^3l%roDL1K!(=ZPe$H5fkbe!2OtA&uLF^=$+!uvh-W@85U=ImTg$&4W&Z&D8~7QJ;RK|a z1Z%A{B^+g7Ru4nbGnkHo;U<8aL# zxO6gWheBcs4`GnA z7zPXjh5^HXVZbn87%&VN1`Gp+0mHzboq@>_mNgxi0n7%9fKuRO;B?^k4)=G*ezxtUmbPP9m^I`~QwFWnk&8-j+3`50HrassaBH+t;#|0n33?fEB=L!0EuX zK(KHf;@;Kbw?Xc@Td>qVdpD#>0aAf|f$_l8fPcu_-Lk#{z5!PB^TnP9xyK&3*BrPA zxENRm$Z#WMPk;PB33v#QVFTnnQ*aL}unxEZ=#y$$Nx(NgDhZ!pk+V_go8IcMX({3mm8OaKnXb-7(VY{42(-po3>ZoFkZ4m<(83v2^^1a<)4 z3HT2b@E4%H;cS%g(oQI+t$tjXi)Ya9-}>AaA&+-b>+|jG9P#jB?}L1$j)c5?s!wl8 zIt6L(Jh*A9TI{7Cz#jS-?4fVM9{O&ishWoW(gKqY^`)N**>jjrHXIf z2n1`bBsj}6fNl{lAvUn|aI`!g^O=P?fh{KGyt$EQE%+&?}K zJ{<{62l^a^^S?kj(AH3ayyvzd|M|!>dpfQ!02cs!ZrT071Hh92pI4SJBe+-R;+!>~ zQ`8%2K0Df%j?ZQ3dW=u+200Em4t?+nkO28!;Jst*=ZfUa#Cg%<@oXKG^(HV1GM^K2 zJMa#0KhnO7w826h(j0yQ{(laX&kB~RWqSqkzO3bchUc>b^l!^0nG~Tgkc07mIN%>1 z9EEp@;hcpDJC}iJz3+>n5M&Ex5dGHFkl!k3>XFs1BL;^fMLKeU>GnA7zPXjhJpWS z2JW~P@2vv<=;2Yc;hmk>j%!iY?K`o&KRUn0f5U)bz%XDKFbo(53GHFkl!k z3>XFs1BL;^fMLKeU>GnA7zPXjh5^HXVZbn87%&VN1`Gp+0mFb{z%XDKFbo(53GHFkl!k3>XFs1BL;^fMLKeU>GnA7zPXjh5^HXVZbn882Do`5LIhgi-0oV44?`) z7dRhy0eBgB7kCf&0{9AO1bzm(+~aHOMCdH1wfTG{>>5&^>+ybHU?6Y+Aj6f{S=Nof z-M~iRHDDVcL)RM1>IuXG`v7eX$KH>3Q~-;CD&Sn;QlO=<8EIYw-UPnU(zn+B8}jye zz_Ox&I6#KpkOu%6z+lZj6!N~n1mFP8J_+(MKrygDvrmRRJ%GK(gO(K!WC6nf8FC>X z4$OGSvI+nhT5Dg5GFAd-0)GW$I1h3)a5Ye)*>8e;4{$&5ux5W0^2@+BpkA{-4*A6Z z_I2>N7I*@97WnmH%ZhwN){b{Mw=;eV^5<-@to?zrflGjg02zuPF90e5#>)`Q&a(Cc zRs$Dn>4VvSLYi>2X?I`%AVU`9VL%VGwU^f3*4js-j2D16f$sqsj(~ikV}D<>7eHPF zd;ol|*_S{*4QK%La_)xy0Pq;VdSnP@kH?(v2Mh$p00#rp0U0jFnsE(qEATMzBJd_) zf??qIU|`?J@Q!+5f1m)6LAM{%O8e9x=|i#4L*DtoV&HtO9Nm6aEA2~zqz}cu8F^m> zUIo6<%F*qgw9@`|ko2M0=RXc^fO4P`kYQ)p)1Sb5YJroUw5$q1hG6!Sk#;4p6lu@b z(g(9YfwWtI3y}6EEqyS16w>qsZU!FL(g(9kf6cdHz%bxr;KZ9OYZY)Ia62G__h!7a z4oC$00Wt)$4@a64ffC@aTKYAR?*v{0N^g;+;GLa8>@$$&IG`AqtEEr46~C{5y@3OP zg}`z^29~`PcziwHM-IsF5YjvYybAmi_zmc(#UBd!IG`9<4qOl14wzsVFbo(53GHFkl!k3>XFs1BL;^z@LwS*q1D8&=$*@3QPxNm=wf*2kiF({^^6+w;^pk@L!;t zR(>#h5z_n>_!QWor4ME=Lz?BlDZm+8`e62JkmecS|A4M9%huu=RS^3Pu-^*Y2HXwE z5X@eDFRm{FtAT1jhVl2|{0>k6%m(HG3xJlwWcWA@mW5c#eJ z9tUK25%Lz`72plc{wCyq06zlJsAmw6t<~33{Aq7l)>**yz&(HrUEj8>A;5>g;qOQ* zuKhz!1ttRfY4&Q!PXg6-7(;*zwBHiIeh4xqABvCWnaD!(5>ITc|ek1xGSPNVX)Bq;@F&H@YUCe=PmUaAxSSJA)XnzRyxv(t?(SASj zYyn;eCL-@7;C$fX0Oj0;G|i=#e!PKn9{>%&H-HRDD6>B>2p9>-a1G>jz@5Ndntj51 zxK;_A3|t4?1l$40F!+63g8GHFkl!k3>XFs z1BL;^fMLKeU>GnA7zPXjh5^HXVZbn87%&VN1`Gp+0mFb{z%XDKFbo(53GH zFkl!k3>XIfxD0gt2>)vU{svqD$dCnjIItgZh-R1Z=G!n}7%&VN1`Gp+0mFb{z%XDK zFbo(53VodhaX$k2p|`bf%aE`Pk^rg8NP=c79f3V?Xo=cZ5a4pU|?`Po>>R11MUW7pnViD z12_(lVHV^ifPebd+Gk@fZU*XrPXQTdUj&>FT%_4AhkOg*pT4zrS&#WP3>XFs1BQV= z7XxR!fp<^=_W%z8GEjaVcold{vv+wD?+67vKpY^$RLF+`M*&A`_Cm;Wfs=s6nqB5I z--ZFhfMLKe@aJG);3s&_`=>Zg0E++_3Soa6pnaBRU)YSj3UOBe*8wuz1o>XTzns?E zx1kLBSpevMHfR41dAcHfwB~<2jtz%XDKFbo(53GHFkl!k z3>XG>1_K%Q;C*Yr-armuf?>cgU>GnAbPNM^*W!JPK(Me4aqnyKA3(0x^kDgn-7wG^ z2429sN#|(yqXx^n0r!MHtKBCWEL|}BbIAL-mcIdVkJ@0Vcb+{8b#!mXekKxmdjY+H ze!w0;Iv~SX$oasrKrt{ESOhEvmIBLxw0m(6=5@FhaJ^;C$M=^&1LWKqS&C(iz8~-N z1^mNpu$4Z9_W%Ne9T%vZY+U_+y^N z{Qy9y;T@!%_q;FlS)1^_NMPVimi5wlpM6)Cu6WUYA9Du!a38IIy1$HjwqL=!8G)&< zf>+>Uyu0`lU%9et_y?|C)gT@m`-d)wO9ci1mjgR1T!FG~0&WKG)ylmO z@>jsuK<2wmYa0mL{sHX%DGx-NpFYI>(?DdsWu1yKbs75P_YO~D?sUg{?s@=xuU;*D zoAuAoy(&Q3(pIDoy=0TpFkl!k4E#A5D8m|BjsLWmU>N932Ik^7lm0(DS@++u7vTTD zuELnq|Bof(Tl(%g$2~n6_YF z`Tiehe=hy+=JQ`+dlkk=eLg6AI1PC7zPXjh5^HXVZbn8 z7%&VN1`Gp+0mFb{z%XDKFbo(53GHFkl!k3>XFs1BL;^fMLKe@CRbx=9rkF zbBbp#oj0p+_Uy9aWnpn)8J>i$5gu>i?w+`?8Htt^KGKTtOic(+!mZ5-)*cBFo~Wob zVX>CgCDxh>4R>ab3FB9{1bjJh-D5;1q|1rIEyKf{ls!g-^-i#?o-xox+{nI`71cMa z4-!Rp37eX*sIMv_CJROMLp>hbfw58hMujIWMn$p8(A740wc1!>TmrH>p2UwpcO^j4Oxu-K*c=^KWpL#qfj+KxyXfr!4sy%@{dEgh9jh>AiJb`L`n@DGJl zG;cuEXjt}OWK`4yh{?9qvijRa;>kq4QBG=CB*q=#y+zivp-7MaHVj2a#CM~Zu}9eO z1SP;gc0;G}sPC z_#Euwt~FpLyTv@*73baumfR`bMY69)_{5Vd%AoVVti!(b9I%#T5chx3uH*GrM{(3(~BPF9f^q!D2Jj$jv+C^=QO|3JLMRz$fHkH+0>+CokgsR zUr%+FJ=M*ouDh?@kv{5r_^9jY<2K4>A==lt7}Xy5<*1c@CoJq2PYl1%bruj-URE@0;r!X< z6?2AFl#~@0&apJh{3V*EiNnfIDW6reWYMA}i*@VJp~Fy4`TRw5h82|+Ruq?0oi(Sp zqPVDH7>l(P>wclJIb_MSZ=r)YTb$T4$9&MDq! zWKQ9joZ;ECMOOG&w4|)KJ$Z-CT~wjFJ9qAUT}7LQEiWve->xbaFI}XUxwyEZt;H2C zT)3pDt(i&Hu=0iTi`qw6QAuH0yIfdOTCUR}DISKA0;(6atL*Yq7PpU|`4z=w!z#)O z=U4bSiE_0`P_$&>LJZ*fOBR<8D=925X_wROE2#6_(Vl0?I4eoL>y? zVLG$3E6R$Cb=ujz!xoj6yZS;6pyJ93+}pfl&QOqmWen@g{3VpbEvsVwqGE~>mQ`3W ztGIH0#jN>@N@?kWzn~TtorEqg5-FhDYn~HnE3+`~3Ku#irwXJLE<5Fx7A~G&bkh9A z^BldXu&6|oh}Bo+hFgV;Phkoit(|hZTUOC5@J4GS{&-tXp$Fc|P|ES;PK)Ils|jt$ zg@wdPI#;wAc`AxTqi}dBD_lNnS#c2)L|c|mT2ijnWh=90pMrInDbb|)vH*DGGzR%+ zFR3gRbwDmID_bI*1+S%r6(!6FUY*upJ3o8r{DpHc5*YzEOYNqi!KGzOii*o+`(&TM z?ZP>8M2Ya*DF)IKnQ&2YMahymLc^xUNr1`~`*3RR(#2vrvQGTqS+umGxRSCLEn3W$ zl+P~`CBTisiY1HY3ufXlN-(6D5M?YZTp_v!MXUT^q^NkI=y~>7vEUvOCko0DUdJPi zJ(!rJu&B)T97w|2Sg+&#!%IB{TGXMmsLBo>l0RhIxjUCIQ(%7*! zYh%ZXNt9x16S!+}mIKy{Qsyo!tf(j!a{`svGX(|8Q3y`dq=$?dzEHTvu~IhQ9;p}{ z*fuzADq31ruEw&xSRh|n;o^D1Z~Sy$S}|XAK8q+SvZo##DJxdwgT=zKvO+njOAE`& zi~R;O_R&k{$ay82DC=LiWU;6TJkDN%d9~ajSeq$qpKso<&+Kl(etz+iIU+a2*;r!a z;C07-UQC7;!6DQ_v+op<2pWTs6_;>K&}9cVxWMOqL9lomu$v=Ky5Yy=eq8d=<+5!^$AfO~`Bg8KiS zs(bHSn>~s1`;VWG^t*NIR-HO^>eSil)PDi=pA4YT$o1D5?#Iu9!f4@5x> z{KyEj%&`1F0SMKQ;j?}is`dMjVs+_%q%HkJ+R__ir8TC7R%V(>%vet(Au)qyuyfDpHUrXW&J``hAPw7v@QuotY4&g8OWjsb>~fXo^Ifimj0eT ze=8Y>2Zia33T>=2)YO}*f|b^pLAxIhMbV)8u)>b0yL@5!5tcTB>Z?{YO*N5abyv^c z7_|a+PpkV)y36NV`TM5tGR)|@0k-EBvbALb+rtv~_QX(_;YnVvi}mE|zjH8({99j!j<-4>BRC!V(yM>H^BH%m7+ zU99#YwP3KFPn`?Z+UB`|E_`!WG-9<^)BSmtJuuKpjVOc=B?XAB= zt;{hDVZ%-khSQaB*@VvxgF ze(mfYR-Zw7;)b=d>;75bHp!8N9^p1DvY;AOWT-vuDx+c??Nn=~ER%jlP!;7JE@N&D zV;(-JDp+mjt5FpV>T6hKR?xmg8tfiC2T&^fz1b8De~;smKSyWq*52QJk`IJ6kkOk> zX&l>22j=(;GsmAL%<*0SFlYmPtS%w-P9abU51bLol@baxlM(K=74FtYP4hFw{I213 zU!Lr+)l%&)m)$H&t!Z7Qiw1y9XURf;=i=1F41qt=0pQJqV%Xsa8!a z^(ILQ%y$i`kK7rYpl7hPnh>qBx~eUp!I_bbdLAFu^SDvZV?Xt%na7n#2r`emTFE^2 zQ!mHnaif_>{TT?IkaiwBhSb{`cHZJaP|*EDqgD&GEhB1W1l5cis^Pisw1z7O3$3=# zSXqmMYT6C8!ZfzG4qH8@TRquQdqk{kcH7`~yDfc;8yZbZD+iPfY`#}d`|6XngZl5| zcCaOGb*D`0uEdv3ZWV%!L}BQ=#4lqn+q#1Koj#w{7D3$+?W~p$Fbx&qB$>`?dA}(( z!kpD|x>-ZVs2LI1vrvxI!$5OF$Sw@@vs$Y={79S-$EvbAt3yyNR`B)d)(;?#tjgd| zt&{li18U@}7s{%o!n0CgZkh@Sm7gm^ZmpxL)6h?JL$r8Fti^;6YRf7E{iXdq&5c+OktQN)XW?5x^{6jyx6*3W|KX=e{5*wKd~uiYjF- z1=U*_;lPP%jITDRrc{J!lRc$F*xw-mj(=#68?gkce`t^YitWwm(T)Tw>-?E%MjsA3 z8eLC!&Ytu6Lda104M)StH0x`~C=k9FMki|#RPP{dv{l{Bd$A z;{ME``laTHR!9x&5J@xH5i{AkmG#Ayx(8vRW*?Gaw8ogHWEhxs3|p=iFr?B^v1fNs zv7UywJ;n82lBTTODHBYDRJS~hh^Tea<(l(PF4g-%Z0xZP^g7csLe18Px2vRUC0Kn_ z)0((#rRg9J57jOn@{S4UaV@_QYZ-j1ZnYYndgZGr2A8!mSDKER2J&>5;@4*Ttd1f3 z7glHgFWOsK_G+vBOnzU+?@dALt84qUw&adex}%13$ES2i2@V)H)GK zt9P|^T2L)Qx~0>3MPhe=BhBxReElbC=BQa$=Lgk;MOCzgYWtmH^BP`O8#oi`=090=c|8H<-X(TLHayhB!wN> zHO8jojqbzP=+2Q51=X0p)?4inF|zG^hWXprFgvKdH^hcX^ZgN!d_caaqTWJ(9*<)8 zBlP;Ptmn01;n87gWvKfv%Qc1X^%Lik z`!A~m;_gAUH#;ojRxez~7*|$Qn{f7)Z%+e`pe(Efp8&nIJr3;y*bM-7e za%8jgLeeaay#6R=sm`6HHqc-YSAyE)_gR^to|ZL)HCCP%I74=r845 zlv>-G`Cv2tzHJd6ZMCtaK5!<>Aw=w9QcowZ0} z+GVraFi+2mlJ3RK*cVvD`$1^;_=GW32RaIum}up)>1C={i=$GY9t&!&0fQJ|ov0qS zP{CflshTQ~`wBFnp6bmO5v#viS|ldjO!c6jy>b5#DC;=uf}olM$@a6d)zXqET2{5N z&sWi@{wbXtM^A8 zt?s3Gt?uFO2g3ZzdP?le>Ep&q`ZY4U%Ch6EA&aDiL#cRD_z)}Jf2b8Z_MpW&cn9in zNIh!X*xx}!J&2%0Jz_`Dmk0dg^yM}2m~Hqz1E(47_Z4$14!})6_$Oh=^B@ z73K2qYO`D_J%*iz_Jm5BgPJJNBv;Hhp5^rq-M1hSU>-h zYc8sCwGHWVmVPLTAbV*5?j7oBODM(9=Y$jVq^AcNrMOG*WIc#^WsYTOfWR;}a3C0T zL$e(1`Y;;GCzwRV4F;2|jHW7ZHcWrL632U{dbBLcGXjS~G5o9~SBDy=l9pRSN9OsAlt1fT=t3Nh_&#_lz?NGyFv z)VU7ENZYxLR!z9JMyo#gX$A{@qwnJ5@2RHZ+h-{lAhx$lw4fZu9G~4cagNOt*PsKm zw%VW!sY*SOTbO02bc}xR%%3Rg@#=kylC@<=HFPLA5*p579W4^DUd7UskEO|WdCD>= zebMD9UnTLBhd@a@Ptk06dzR1Y6H-gdkT#CejV#Muo#D8jM10pBh~euD9G-ZnP)3Zs zE%jw>lc6crxkRZraVegZ-sm=p`V_LmI6H%CFzjKh1hwqO=<>s$-PiG{mYDK98rtnP z)D`G939^=2KC5?VwMZAevkjjaT~@2^LSGWgb$-0%x~p)K=Pk#wm+200y%AFeT9&_O zTQffI-A4V6K%m{4mAjuzM)A?Y=9YxwMHFM79H@!tmZ5fyCU{5HH$2i)^=TleYW-n* z1pOZ0R@=GU=3g?+<2$naz1t>q@fEB$)5;2|$IHW7I(yw_;we!N4~aSj=)U_2Cdh;t z;SY#}NeH-m+7=mhz1?=NXYSGbt6;#tH9th{%P?9SJss_f}A(-cvGYc-N#sp;?fH}DY zc`Y+oqpreBNT-#@2&7#C((d9z1L?wkkYpnu=_z`;lsFu*1s{BltgLI`B*&>Ot@4?T zHtOR-!BmlOKealmk+LlH%=J})^T6Ue%$V4lYb(UV7zqy0(?5}kK2`l2MpJc5MO^?s zUgLKu#1MoU*+RBlkTbSOSn%SO5zv~cUMtL__=oClOCWgJiqM;_zAUt}t<1|c1kYy) z`|YpB4T_@1+@@!%gQ^*fFS0OjK0N(i6eXd-Tm1zZh%lu#ku8R6Ps?HjKYM+xR7nL( z#>8u-4c_W4@o)XN!}gP9gcQShjgT&KOEZL*4~yztlX*~G3+B%hub0qJh$*C?dENzdZ==JUq1Ig=1*CvlQI;3DfafpDD@S0Csi>zf_WIkTug{CH zLIL%y%_Q>9RtsdN<>R#hQIm8*eXvf7usH?nTBlIpl}e5cgU@7YrNo#qT&kYc%vpS+ zOIU37sxsAM z{u(Q9fE5nf4Z^8{YJIsaCf2CBHXp{-0c#3B^KfoC3l)>?;$S7;=IDibCcI{kim-m| zY_$U3t6gCz3_f(E(Y9WDPT@Y*vf$zlR(2b;kgbEdYFW9K=F|Xm3iU}w0Sh`u-4N05 z8VL=N$2)wvTG5z+s9-7$fcM;Wiq4(&zgaVqTU$--W?NXP(|zbn$^9; z2ghAr5tScWkaO4YnC7A+g+l7dR>EHsxo4(YRD|gB(O|nqgpyg}_}nr$9M6ebs;xH~ zhQFxj*ssI$)O13fWOG{4tWx7;a-m?-Qe&FKt${`6ZIZyXOTtMVXXK%C)&yKU>EdEc zE15)F?Yj|Cc3=W8d)KY=Zc7naZ1vzxb($nc7ln~Fgd8(q*YI(IuY>9l?Bi|Jqk$@{ z^R3mJnE?ILwNeRmZf#yeP|n~6UNJ-S+lLdRs|L5DH@%K(4%|^t)kE>R>GzxGY7@UZ z%O5lcR75^vlYgdJ=xZ$njb?8Lpd&}K51TK*&C1pd$E~~ zBeWu6NP&x7I3{-T1^z`05s&>b9JolmmJ<#9i<_r@aj+n9=fEGgw#!4vjnD=ZvF6XY zR`zd&NQMusLQeUPr3}(pz5W_%XyVB;-#y;GT7QT5!~T4OSbICDEyhx!q8J_)4s8sa z6hvYw-~-$cp?X^Ar(XNBb{VNT?SvcViTDJJ-uJfFK$05}3-VXk3HYK0YY+0*!Yt{r zi`si_^+BvV*;XfZfsSIi$y9UyQWrQAXlu;zw#R#j_ zG%Ir(WR;`l4;4FFng1-dN$?`F{;^h&Vk>is#tN+Ai8f&w(i4BJwN7BUWJk2^ zaSN>I)Vk}OQ#BrPs}oh>So^bFtdD7v2h#Cz90Jm%kN3;`C$PtE zhM+qN<<7^cD&?PFXH?Nx7d1`wjS(8AqdFlH*y>LWR!fPa)pK}1`q0Hh^uCQKAQO1M zztYNFtnvR{S#{I%fp51|Q!W6lm1$g1Q71aadY`|)FNWC`1CX2=7&$8tWFm+a)m`}v= zB}y+o_irqj7oYkNOF&TFjdppwu#j7Qjhc-21`w6tL*tNgI;hWJI~UX1&QhYL)kgSt z;9~VCF*5Q{qkmJR-{k418i{tI$mI=5Yx+B8I5T9QXZ2XDm8i32TC>!@8o%&av?x!~ zB%PjB?YxAymBWoG3#w<(gDUT#qYSOJ^H>4ql*>lV`cuqvM;l& z3oQHBmbJql5ZjzrX`$bl@m0!ynmgk)2b}SOG&3$n=%j9=&66L0-I24ya#i91wst!wTi01K=sQ?&$@FwOHp-+YWvORjE11PeQ2I^ z1zQZ5(9yq@MPqc9=8e<49{o2~6;tTL$_e4FC}$fKBz(&Ta6-cLJgE(5a>&Wv61aFO ze|7{ewjcIqCDeM?oy2>U2xey49>F9MyQe2n>}=BoqaflV+ka|P6RA=6W(5k`K=qUA z!$y@xh%8CS!CjI&%2+=4luM~WNKjRlL^Wo5Cye<$4>RiWde+_XvLG+#v==|^8WTg| zQTbT>RHs{~hcGc2j=a*B%#p_{Mww0y+{L$WlaOjClW#3mt(+4JUh|*v?Rl8Jb>N0q zdN-C$ks#GXESoafANi9zU5sQM2=y@ba__@uF#)HQE;nMr{HfKF0~RHySvl-XZGwd? zGTc0;7wc4zH8{u~!epjpCB8i9`rCoPwCnA{azB36a6o8&?ZORWI>j6?wEdx|7 z1un#tDnPD5%f-DH#J^XGbd)cSJrRbm)Mkr;B^XgJ{Z(sxvJXIlY%nht*3gzfcmz94 zoRBO*fcCwHl%1t^xh`Pui%(tr?-KlX3C7`{BSW&PUUtO&d7;P^8vjqH!GE=t zXIT{Hy)Q8I#!288sQN+4taoxS3Et0I z7#9twU(*=0g% zG~oybmQ)-OzaVgeS|#qI)B%t3bIA0fT$M+sV>mFEAT%@u!M*I(VX<(v4chf$y|`zn zQE|p2$)xGzF+U@_XJ{@b=IG|VvZlxO2rbL>YdOF};1g*}pP^K*7YkqSNtSiF3AFXT zTF(1CSElev>(aLM(m~p)Kgj#H(ze=gkgq;S`&DDw(qUq3Ou@{Aw51Z5lv;O2+R}&9 zmd>U0K)9X9+V3E4Z4s1~Rx}1qWKr!aLmr({LDmHp0z35+!2-*&+xa_-*xA}$%P&B_ zcm_ghLpd6Q#3!Ws48))-J_D2l#Az%mtNc-ZVH=23gGeY*XN7aEb`iCxJWne}R&cP{ zkfpcfC$U`L(aV*^@~Mum>aNCP1dzC@hl%ct#Z@6cPqgZ+PF;k}eoCNKCsic@RKYWj zCW7i-u>dusMox337(pRDlZ0rPYE9r`@{579KIp|X?tJnyg_SG zg&X_;es6h0;OF3@m)TOh3A_Vw9^o*go@HvVMqu{JLvma%krh=|sLBdN#1aN*v^0T8 zF`XO2`+Pm0V}0TH2&x8KjCu^Sy?ukW$kdk->^1@>)KwiZ`s*6xW4oZF0 z%9DN9e_pm>RcG4LQ782iV?QHl1rxZpv|5Z5qXS5W`$`dYQG~{TjrM~CD0NA-5p+C| zw(E7;TSGH1!13-I0>r6c{G%R^zEH{+LYwI@T87vkdHLn~Ay0v=6@Be`W1Jt4WGa&JDL<7HI4XwZs z+?wf~to%O}CzGunQvP3wD&J0R#<=)PB<2^(8iVTLihR$mVg%)1ip_Pi4^s#Nlbxp? zVx@#F91WEnqgMC|(Ec#~Fv%_vR=+Yr)SKA1v7xF5P)%A}XRC#O&7+6z>LnffHWO== zX%i}X2s3~-xsUXdm&RX7y^GX`s4B9;=PMhEZIp1HaaJXUZCvOD0xRc2%CIp%%rOeb zV1v;?ZS-Ru#Q{>nltNqMt;QsDPC|sTLcPrP;UV!pkjSP_KyRsIg2Mmxu30px7Cmpnm39}F)N|ICcHK?YY~&tXGmyu-cXnRe) z0wkKuc9kNev{rWq#1^o#6b2*@;*ne&;{w;70%LvC1^(k=ge7fSjA2#84gYVF1uPM~ zuCNP|hAP=x#`&-p(nt&SJAW?6x8-&fgTpG-VvDvXdN7RQ)QdKwIEkjb z7q|1m+tt0&DpP8;TqP1vVpDg!O(8NS?7`0yB%)dP?ZpRY;VYXZv+x~!uD9@cMM5sH zq1T!rPvf+aWG5dH?3EeJ51tZKRYf9BH%iFD9Ys~xThzz$dwh{uzs)4S;#`(c-M5KY!%WN1Q)Ito?57c-ahaIXA=o#?U;e=0JbvWy zH#Pvxd_7Nej8xw@J%7}6&yd&fb`cZIw*EH-CcrLVHokd;sTu_7BYSvsenZv?Icb-# zotqk>Cw>n^lYqoIk{4xO3Xq}$5XHBBTrg9g#nz5hnj0pPgqY-0STH*Fm%>a4@v#v_mUNo@Uwq#vEdJ zO+=a3=IgYHnJuJtRc-K(;bDmfy!6qp*vIeUgzVLuf*OB>>QlQw4ioP1ke zmGQ1Dy@XZPk?me&X-TQFF6~)`f22&Uu{{w7PU6(gav`3rA?}9VxrTL$yeYWP3Q7nI z0y3v3Ivd)ZfT(1opQqY(J+fHX#{m zu{pScrVuFJ#Y&~QoQKE>NRb3dk?W76-NI1dB2RY_@428p{V`O-Qgky5*k+u`^u^g0?ZNrhmLYN@YQ$V1I1agRK&C)&(BS31v{TkyWpY(idJ3*EN< zhT}v&nNE0kB89J_isr%#@zoz97Z(1uqPQNmf*$xJ!G=w+mCdw`3K>$PobJC#!2z-7 zS|(8m9Cd`YWO4}D{#g>Zw`&2tXVN$)xB~XhLl>|G9TP;r-kBm`d-!`q!@-d+7Q&>V zWHXeN(D_(v%s|3{PGJPE0ZN?4?7=Zgi+jC{`0tfYLV{+AhSaK_LhWe;2;K4&k$B%P z&Qnu}b5ET7X>JS89k2xgp5a2YFg>M(2iz8(K41$ENei24;h~fkzR@Cc4^a>_aF@FK zErDG^JEGzR$evcl(T7Xb2)xN>s_*YkeaFP!-Hqmq_H}4 z0z)fGF|Q%Jc2NC|bY=Y|-5id6HBwwk&SPS*)kfyS5 zv=^P|4H4%a)P`Mp8bO{~8SBy^m8^urKbm%_fO{*!6SS>f%fMAGjaM;fmcVG~YG1r3 zULRue2x6Wgh*64InpA>d&=ADjBFqq)0^VqLAc~mpP{evDV!lfe&{p^UyZh9)681SWJ4 zf-aB3KF}Wl^Bo_dHK;cb2p(^$I(&5%H_QA=D=Y1uw=C zs*aGL5o7&1phdx>=2r|gH^{2Zl1U(|RU`{R1@ZZV=Nass%HJTzQbU~T_znB+cpI@rV(Cd77cbBRt% z+++26P*cVHy1DcaO={lkuLe5C6HjCsw(DfKW%(_5d1&)JYm9Sv*8(Si!|f0N<>oQtS;`M9WQ) z3~^>`4XFT)K`_=ho+<#T_X&u};u8^za6PyRy4Ul>Sj$}zLcEqgNNstF+wuh6^2fU6 z@lMO1q_oW0P^OwObrj_}?XVW;DhPtMV_@;XTH*G!m?bQbuToLJ))>4ho82mpI#o8M zRFOyq4!M3&oEOZ^m9_OGG19_!*%W9L4-c|wVyjclC)>PFrkYQ-yPr%;`Q&l)$@(Tg zS&;I{tLBqAO@6X5<&&E+%yPbJpxy?)_SZ9jc4|~PyXF@~5snawJSkg=a%H~64dWOI za-+o-yN`pPf;`t0>rKg6U_1x+c_K>hq*TtQCzd`yshFmN3A@Y^%*0u85O->^gdX%@ zU$o9sD}s)d#_MT=TW^G}*GKAIpk7a@M;<4$8g_8{=~63KO>X8`vAm}CYCz6QTK^Mm zkts=o|0EH}S>)@vlkiARGIJh8;zrx6Pf-knFgb>q%)=JB-%fD8o#=e~b<($=q<*`} z{dNywgVOI5=i7Zr-`+uz{Un&*<_I1uZiLl?Q$%1<$+5OetsWe9gKb`Bb+fk%GSuBg zQru1LY)0`pR(E@eE}p83yK`KS;kB8{(D)rsY% zYT}sFR-J;NDX2{xqORIo9FrO9y&};Ys;fmjJjC1>@||qRNf~C{QW~rNel?~U(oWlP zoOtBPAp?*O}o2#KDhCfUg}Kg+GMR#&mqlVnp$ z+=!RCRi4yUPFF9c(AyTb%Kf^^8S3qnD*N3kBXyNLwLhiG$WWX;$Q$+;O2z4z$TaSx z6bipj$B>LI<|2;Wa$crNB37qsO}eMrjcnQmfA`p8{}m!9Nr{M0nd)gi2+T#XA(t|~ zepGKQP5rx^s>5VJ1Ntb=A06rHF1k;Yffs~)WHCg3*@Y_1sZ4c0i3>%^8p)YKSILs+ z=~0POFnN6VKz&7ikV`QcPbxO~6JlcZMw--jMx!0Odm#f5ZZkm$C zyNsq~Fx!0Od)|aWn&T1?Bv9_=&_iN<`2Q!{YEM)HqGAE7cdgQ!Kfc9g(WC)=LGPN& zy#{*}j`0AlcUkdo5}794ZEiEifaFcg9W5L~^d!HrRlY7qP)ES6Fk4{C&M?Z<0sP!z zOT>_(+uy9c`JY6S4T@fO6I&Q5BG6skDyMP`){Sa=NLXk0m*AEbs&24dZM3}y1w=D{NU#)S=h>!YrXC zRF6qF*#s^uD6isp$y$GY;NL~@sKvI_U2b*AhAO`#ktCb@$n1ik|00}oOZ{T=xKw?P z@7-$4vADYHtK`VpV*1J4h8v<@y+EFaZeq^)nl#_N?92JOtX9qeej{W)g2PLfN^Z&} zS$JEQUoS3QwUf*aLRwpgG)Vf-4nf@A!SUk2KuPZ|>~sn_GzdF)^!-E1$?B;4BAyrm z6>`T{CK6Z&wW4*{%4HF0wmjm-XplJ2LuT<_)0av>;j@fgRzuf_dj5Kebp_t%eQ1H` zV}fTU!;h}E0K9sez+rY4AZO<%l2~~`If+kcFLJ=Sg4*Vn`!9lAc58<9bRni0psJFP zCG{!les|KXt2H69Y-Xxke1u!(fOIS?OlOW-mL+_Pd4C=f7E{-=#M&_V*9-H}qhs!z ztWk%JwOU$)VpbT6=|E1FS}5j#)|Y=_BncrW;@nD&&bXBD_g7o%gYQeO=Rmz4f|y*4 zCYdOg0>wXv^43Fn$GepG)eT2XdGNeChw|XVi=e!N7=`4RKchx~elaU~gINa)5usS` zdS|<4@jI~_wFucif;ezRqDkjg*S7W;cV-8EULNsc^}T`_K?g9 zE}ZE6qS!K2?*>Y2btN{0*~GuJ5q5o-FF)YFN~TEdVXD&1(6O;>v=@Kn>zIYk2BzoP zx`?Ax@0Y{&ruxIva8{Hz5IqQ+;Xt;U*fzp07Lj~uLG{63ByQ|XHM*@XQ2YL3j(-pd z13!{l;^`p%u$-_BF=x`|R%B*37QtxJg3BF}((irjJso8We_n2hI$JF-5#Dz^s-7#^WZPZC831vLju8=>wTbm`utvRF_h+*|zs7mQUlDJ(g=qySq^&Cb zyo(HwG6MrKW0(o(Y9`Su6y1F*sf*;hI(<4kNJ1SL8DsP~P+{xzbk zz~v)iAmRY&kwtki{pxn*KL;!B2z=}vAzLn=$WlL-yHl1j-JR7s45uP*E$5=8p6XMm zL4x#d1+&bt`l1AbsF-}u4ys|yqGb~#_#IZO`1Bi^PP}8{310ZE8I0@zp<+T*qt1Y+ zHe%t?MD)r<7@s}ijoilKx$RoF$YW@P1;s?QC>la#_ zD#xz3bIe$e;O#)z9u!nF3G;KG-MSUZ`|=g(q3AHgI5!0ulT6N-IVgp7Gb?98u-tz>Qyrz#;}wm+HfN6PCk z+>_updA4=ZheK3tJ-Nr-S;g1no=Qo{65;OnNnWm}I;75Mq-3?bA%* z9Iey?+)$Z$jn%>2ud}zfKG<;hZr6I6LfU>26tsqIcSJeNQ%@EVogP%{h|ScoMVCSD zIItoI0AF0v;9ey5=iSlUb~+59gPCE*UeF}F~2+Uny0q5^Ekv?RQCD{@AdY!tKD zCndk^EWpo@8Ib(4FYElW5@F~BIfnz6soRHCZDhf4*I^zR5iVgPA^J&k;b)u_I{^T_x+Gr<#nt;W8*~2PfC$?YD?#@?7cH z9A98ZwL+=C40PRdZLa0pL|8%7V}5`!x0mamve6$t4ogZ1q5sc+FK5RvEs#}Q0_Z;I zBqM01ru;5~1T8iK0NiGy|EQ@$(H3~#Zqv2_4PDvziIhEcb z-L0IuT|o8*lFFzJ*|HS+tD3*cL1KA^0j|3SvFL!BLD8XU25^Q1r;@7*(8un=Drbks zhA_B5*2~Nmte3Y?2mwfk&FS&KCn4_75f*Wo;B^6pa2e0NF%r=HZgG1}sRXhP)-0|g za@2Czo|YQr)U=^pjW)Gg2|+;&qi@XBee7$+#y`J=(*+0IFZDO?kY3dx7$!t58d5cg z9=Yo(!X8P^8dPi%NtYv%9*SbXkXZ&CvbnYfO)q6ZEcN>kT{#7X=AsGf=8ohK&?|y- z1L9Z~D&IiI16j-(MKySX1@X@`E06;90s+?GAwzvt0hfH1oMS|;96pN?37a)olT%5X zTacE8yq8~#`0^CyT)hW0q4UYqftDBjP9(Rt+TVoo#j?_aGaZQAR?rD&_bQNbL034T zsR|8L_yK0o(}RvV)BAMi!P@@lU~PYv+;%sYe-1QIxz{{<<=^7I)y~+p6}Z0=Rp)Lz zbA*8`50*a{3GFNB!#$B;g1)?FCThr3_b`bKTB_}^7x{Q9%+EYmI?p%`)gK&lo%bV}<%!nI~A*%~mF9O0G3$0lXS}sF4{uk9AQ_{&1{NxWf9enchND z6xm6>CP+X>GJ0PuCcaUBv5Y_|zIaYWB^j4`P7+t~#WMG3m-mI7g4AD3H(&gXFM5;2 zPqUk^%Mc3XoPIa?xFO}^FWiqul{I4L%BRahaw-Vv{E7TsoEVPTyR>%5?K4KV_WG|R z8c`>P>15x+vEGiPS&GnIbM-2z3IpZ>)#kx-__^6?ej~&^R8E`F>}}A0Pf{#>UMe|P z*lb5pkhR+C?f+prE9)lfczcPgLF;%q68Hz!eham^950DBK}J$cka~n;3H#NzfeLtQ zPel^F(|~u0)yY4wgA5HA*^pn)&`DdZ&M^82_N0112Bs;j{!Gr9!6DaGR0>dc1td9C z*KI(i51-5;0ckgOk1alP7-be=XXe>Cj4}&%w^u`eUQMPOIb4$rvQ9=SX>t5}A@gq5 z>FO=i`kq0ZOp;mC4fmwbX?P~*vbw>WsD)Ngs!zGx!*~-3=sssU)a8;9tJ5YKGKNb& znF)G3fzMtM^;W4IJd2-Nc8e#(E+?agQXUNW@Ado4AyRLqA99+OG<@}vd839ygieba zO4(-R%g2C7pFQfQ3}oWI=IFq=aH3y&=c(k? zQhD{Qd#b?3up{12dGm(68NsmvVPEG3U5|~t+9R)S)+Y{npu@&})aE?i+~%A`Kn5q6 z$hpz(XGX-kg3q;x_nF(LbF9aE@u=Hw@(Vc=4=e^kulgHF)%|VY zl3erH9rTBCuh5|ztNIIA`=bqLyeL4^QM%+tq~jc|Zk|;w??sb!-ZNgcuz8-ECTH-dSFt2P9YaW)MW=?_Q9u?&1g z8PND7@>Qo-{{&0uG0S?bx%VtT8pKj0*LZFKzM3$6Fb_%TI1g-J^;X_WSBP~sDeuKP zcS-JU2m3x&OaeMu<1mSI=YyU%neE&}e;lNPd9S`L#~c`YO$Hy`=Sy ziU@7(hqize)r)`yX<$XOh#*i&>SW#*XpA2JC>o6(Fae^^8p~Mf?*bF(|aKeb}zQXDbn-f}@ zI6u@p)W{A4g$t^eP-Z2H`f<7HZW#9XB-Usn)Bn?XV<&Zok^?j2S|Y(bi-Q*?dhiP< zqIxYqFVj0SHoYeEd7{thAZ8(B4e(grTP{UxjZp+UXPgvrM1m0{@rFYZ|CUM;r^#9v zqZrHGC3SK-d>2k=u8UTYozQgB}rC&j>OS!G5LZs7!y{ z*qv=X$#*Sj8_U8 zhtP}|87C7cn%+f(FGSyh-M5;yGS%dvJfA!uFaeJpf| z8u$)(=GV&1ivwyH=POwo>Xp_ehv;0A8)`2H>;QM6I$2)lsJaelofvxI$X{I}u_mDR zTacE6twM;VSDtlpuBMx?sx)*n0ufh;Vi-qJgi3}LIaD&{pj2|Yp^`ftD)~4@B?9!3 zpGI_&6fxc+2H96F{G(hY4Qc<2IB(8Z=N5=N0j}1}b15AY_caWX2D!FKCZwLF zBG{eRAzuhh4aWg=oa%IlbOwE)DG+?&hVaxnAw1s~0{b9^z{F^LD!Qo{DxTwzl<2k> zR9ZhJp^Y|nc|7QImlDqxZ|rgEgNiB^OWuJNAB_#f{p;Acy_UX8qaKXA029zF1p8>q z%?sRX$0~=#{XH!=67iueH>WbuvpL8s2A$_h{e3aPYx7EyUFO&drs_^sSWi^;z_K;YMtF+)$ zqUfA21k8yEe7mQ@!9Kw0BF_`q1LXBi?lKY!;OB#LaUDE|@FAsg4~E=lHk~WcfQr-4 zS~F~FKi7j@JqUSZFNqcSAVIj)Z*ML}^pv*<%W}yP(5?U^jnXmLo)cHr7#ABejtUzD z0jFX^uu!Q3(`+@D+|0t;zG+pfUDDrF2ou4y!GMuxoMj~Jo&`+P^^Y2R{<^dDBU zNII7T|A_E=A_0x!0^M>AWc@#q8iWs?>Bv7XT*KD2M1C#5rdm28v%I))qEgMlYoozy ze{m0d#eB)!epghl=eE9yxlO&RE>2d{v$s~}c6U>AJ6h(Jw@SP}i4!^2oyck~v^p1RD2`^#NU4v_SB#NjFw!HO0D*YY+?^M)!I8_= z@V&`LGp0M8G2NYJOgo)1?RUmBk}>rsE@G#ZXZ77gw5d3pGK2oUZ3AbjX#`e@HFRF-W!WxM!^!)@VJ0@0WPj&FiPhZmhvHU6KXAff z2pZDnNH~#*g-ZrwIwycjss>f>YJ}8?x-y^2SawHJS(=zW7{G_51@Q;vz!HKu7dZYM zU8t_JG)dkbcG%_)9)?f zY6Wr2nnv7G7jYX9ywl2s@g#IeYW|xjB$)-sTCF7Hn*y-Dqjo?T;Pf&;@5Z^iUDx=cHPQ)FCp5|qlBWewwjaY%EmvAz(2_pU29p94wmE+qd;~SlRe5YT`{7on2 zX3G$1VPq=Cl=(08#Z4mTP}Q@}Bo1q?CqxZny8Jl3$8a^aSb+9&A*Y-R9L?F1E^-po zf0n-Tj%+{~oDLE4EX>!|9lXcPA2v{#=Bi|3sBDrL96JZw`gqPscIDb#-G|nQ-wnY< zC3f-c!3_Y@3;lR3mSpJWQSmXUSLJRC+2wQclD>R9{!5dYLG^-8<#WIIuds=J z4C1BbMnu2Z1xAqRKoVhmV@3EaTsl^_P6$&NE+$6jwAc|-=1l4StzzyN)}UDAHsK6d z88LzCO(K-#H-PdROPoBg`sAtF-%cWjV*+jb{0{%W`TgF^Z;j0Fh9jNd{%&}+BtmV& z(U_h@-sqsd5xAH7v-^Hq>ev&!s(-_;MwO6S8RX&@DrKqVkT*qY38#i6L~&)YTtAQ} znxgFMpZSSFmG>`@Lo|o=bq}`#$@4ZkkwA-^TSurbJ)eljehACw<(tIR&yrZ&UJiZ} z<4Y<6PU=g3x;M33fLM%d^SqCMNZH|sVfd5x!v@pZ1ptz%evLJNL$6%36TF`_$H5^d zl!Q2c6Z6`LkmJO>b|#;s2_;!xksD;6Iow1c5?%zzq6^FDYCUYo=sawE=ZCutFUMEN z34^aB@8`{&b#@OZ>XTU#;2|fpXb&Up&7@qD_U0-beBx8{%Bqc>Htn4B|A);1Bv*3%=Ijj zvy2n#HBLGAfZ@OO7bKfIHNn23;I?60OZ!@x%ZwuW49%P(iR`u1q#@Pjw2n-3@lV-h zzaV)VlpZ3{wEj|DV<{%i{QqUHF{6%fv|x)K^$OcPAmLH>LarZ?Opn~aG#JYsTF9d2 z-l(FZ2@ZQoE=*a?sZosQPjjDz@T|Qpyx_2#2Z;w#j#!)E zu<_A|YR=yM+~6t+4O>E12@@KomJgPVoHgB49QL6`gu&+OY#kG}YA}NAVFmo@Krjdl z38T5=@M!|ouv1jU*^sGa?`3wf)a^P$(Ep(w$~#7ApBG|byA-ZdUwl2dMhAYK(CCKc zcq(R4-Op9$3DO}|*>m1OdzEt)TWkVdR}J=5cF9iI`jGQz>9(GUZzy)4$c;S_;oEbu z9T~YgivmZvAn{Pb7PTlax4oAgpy?H-k6}XBNY3yEcU{D`%gb8Dp<6SQg20ueVMeA% zs{)JAe>Zn~iEHH0qcdcwER^HV=~hbIcGry)^>Ga9$hJE)n(sY>a@ArJ|KLswavnm? zp%6eSyLv32iQLJ~&?%&dR8Fu@_Wb)hixJ%li9&IF#InUaFBxrIb?q?pHFr5DBodV~ zSjMG{mRqQE%8Zd%hrNXdJ?3v*r^3-IF9Ai3ponWx3$1qi-_d0KSTm&V*nuj-3J1*h z$(kEIxL$1bU$d|1bH?7j@=u52r~mfP#zhxqL_5;&=8UU85{}Bkky_3yWWz4@hpGZy zU^XKP8?Er~FL6Cg&k3$slK11xcNGaMVc;8}nk= zc%S?0{~y6dzQM*58XIrmm+g-{xVlUy$a&J|tPT$c>og9|L#SILi7CkU>aSM6 zm}DC{^pUa#k)1b5e$LrsLtx)nCU(80a@XjDKn?2JiVQO7RqtJJ>_Uc8!dlAY;DHB{tGuNxgMN^m&&VC^16}^g*zCuiQkZmX#;BAs79S z^??hN<;e0}UnQ-*%EzoK>H0CbM&ZdJav(w7%(X3C_Cp|lEA=85Ft@btlYv{=*T{Ht z8F;N8cgk4n(vP*y9qVX0nzOGwESJ!jq!8W^@73V-w5(AkAkTZTu&EbvUweBl3vCyy z40gBL|55+w*6RFulL?P9K1ZlzXoGNI+=)^TDlVsf^0lAc!&!1x8LXa$Gd-1U$$hQN`$Nj)euDT?G{FqKjiSRgv zae_35=qyj;;Y97#%f(T`I_9x%^Z%b`*V~)H*++ykWCOhp_@tJ9EXR&VkZr$Ea z-CpuT3LoZdxyY?+r>Ih(iOc(HW6S*~ z`2ty>a5ky*I>6NUp7)0pPpXLIptjKN)hv2ynm5vFzo;q+XtL z#>fqnCU;UYXIMpr%+O$1DhVKist8iyum#y;mX?^ba3EBto%N9Oit~l7uB&AlvxT^> zqjgNB&NrJ)C^4+n7|$P~!w8&Xmg+I0X% z(0D{WNDL{=lCa^F#`o#Q*|lyq2-G&v6p>e1^`vJip$j?@%h6K|2*9 z>nYTNp}ZZ#;nxs;{hq%}Tf5)!mzCM>YW{K~b-Sx9`&U*wq78m+wfn7Q{|9}xPF|qq zTIchu%ro==KaUe;Gk>Rx_Qn@ot&8@>7hR=`zKAcnQWt$0U-VmD^i_P(6}sr__@c{o zQM^QLsZcV=3rWHWqy2Am$L}fBu6(Vh`PHl8R3dOc)}zKLNFLE@GooMqFB#ExcSKX2 z5pBOZc|=^VA~}B+B5sIKT$?BqBgCZ$#cZmh5EP3fSGx$R{^sJx^p?PI?zN!7DF`06 z+L4iFd!9lK?j#;gjc~A1SlKXSLu*db3Y%-HeSlEuRGXBpTAisTvZs+lGqoIQBZ4CI z3`lBpyMc}?p>TTX@%|Jk7!@ELftG3_PgqtZx+q~;73-peWmTk$5|-5vU6in_2J51P zWo4Mx{t&)!Ma#f+MlV!5O3t!yc9F7-Mdj^O3nRl3fllk&A>?2Ub zH{2H|ou!d^#W)K^>?9*}c&wFqMYj=5x#$v?^%!P_dm*0^e96MxP80H5l#TcG?*g6Ylj(CsFRBd~68jqG5r`q^6A1@jQ@d#N2kE*>E!K5TDK6!9}q`~GTc z`DAJHNYV~n2be}aaWZ&$_fb1IidQuH{&QxOxVJWg786wJ5qul~SLYeAT3I_2X z<9gcPz_~GYjJ9fn+}may*TBs_xfIn(qMx^La$E@9Ib_Jonx_3&?-Y^Bj(N{gGn&;| z$IsD)Z<8s<6p7#k%BgjNTMO}PCg(43p3#SSy`u;*4P;GeMxr^C0A9;yk{C|5Kd@+C z)W~E2!>- z8gviURHjeegRWka+Ne|~R8|18Ym@6o4_M!S8TY{@c5sjnddmk@fPPx~hNI#e`?fjP zD8YCM-yz#R0&hpP-A|%DmM)GjXWGOxavVu%>NMIH6DMPyoq1SHs&!Lh5xAAd|HcmQp!1Si42%elCUnU%Jt~| zHNaIAVZe^l5Y z{9I>IG7b}ugWRp}MZ#L(WK8v5%nUgfMlb0G|C9^}!P5ZEQqTQo9TtE>4o{{CUXRci zngZ6KLS%TfxR8$ZP)~Fd;U7*KJWVW$4bl$4xR*3}eR4~Z`F^$eev$M2?6lw4rhH$= z_btWrkvy1}bi*U9oW=0FA*|ddjpcn~N)ww62vpOmOWRz2{Z)U!{((0x<%6yI1GSX9 z7=+<|9ulfI#@_FPe2k`+8T@{V?vgJ-oz8l@9DKc1Ea{lT*dubG90{z*K%t9LmZRR_ zib5^*)%B3%Z0*#dt7Vl~>NbV2F%?qWo@?S10)k@AWn)2FMxj&E~gifLrtS#(tQga_+LS0aOM;H6A(yARL zB2YOcw4GuOd5{KBU7o?H+EcCI;0-q}V0Z1#ZxNZ~Hyqac-6`%jS0Z`kZR37t#r z_ZwYNnml4naaD?a>>UmKKnXPyOF~b=C=Tu4b|i@5dIej3PMl3UH3q}9t@i5QqxJ87 z`uDB+_ZRy2E&BJD`uENH_gDJ&DE<3u{d*+X;*1c#U53!d_0&j`)l3xTu8Z|dO>QGb zr9RBej_d5ab1iEKI~0;Vd{k~EmdTvbCRbN@p9)ZDzSUJ2!dxTgd+m<(k!8CP|8TzM zw^hDetIuM4oNn+V8tj981M}d?V5pDyP-Y~3KOGY}W+fd5@K%LCk0&+L#}$Xc`>d08 zGny|&7g1v>xEu_16`G3?t>D4O7pidu9R$%^vL9X-JPPz^c zCx3Hlxi)d{1zE23B&58UfK42MSL3}hs}a20>f7tVyLC|#1hc7Wg?bx{jMwmD^Sxyi zCRG<>I~#;6rmw_ znXc>EB|NakU>k2OCi^Rrnz>gS&3nYylK07@ym0~E)ye>T_l?N_OY&?NUt3xkfM?y9 z4&V)LPmb-{>u87jA{k}--51GUa4KFpO-1q~=S4TM&I*wyV~sPvRyX<5e@@#ZOg!Lx znJKJMz_kb!#-4` z(T7Yf?AI{*Yc<;&+a@s4#as%FG<}F&32~+GiXer>Nj-4cHa#d##4*}q)W@=d zzAKTZzAnKkMM54tF#UAX%rKFdr#MgCjRhklAS9)u2elDemUYU~oTFbUZd}e;MnBl1 zE!EsH33}sRXe!+(-m^CTe|0S1-s>g2ZW-Fmg{}TG$tcX#hT;zAVnaa#4kTL@;04=U zjD6~%V3;5NU;5;i0Nd5Mq}^+5wdw1sFj=8{8_9ib3!xX(yJ#cr_7%qq{G>VH z3T_apel6dgzq0_ zX}C4O+~6}n&356%td$Lz)n+iam)eay)j*RT&{oa>J)TLWb`3)O-F{mbXMYmq^FtDL zyi4BdI6&uXKuPhUAzkP~x+VeAM_bT?fVxqGdKZ__w3C4i=X~p#s!8H}W^fl;1O(Wzz zmn!laALB1l2YaV}cqWgE3f?1QAji&|~C>LaI4-Op{VdTL4Q z5oLxM-itwX1ri&_ig@uV<}t>sj_3L?Zc=B&m>;>tOSTtz*9RCL3g8CPNPe|gE}4jt z!*d49l?KZXxme!pU|HQ<3>0AQTftmq)0i8nJrV<9CbCfnw6uE{zSch2Lp~(emB^oW zaodrsD4tVAr@M3mJpwsuF0?I)V&CP2fmHttSlr-+4z9qCU@W5!soj#VMlua8QngK8 zV~jsG!bQO(i$x%XGCHt~>&u-h1-vHTahq(YFjcC3j?3Pwvd69Rn%nEh!|U~tisW8r za>zyxWDgfP31D|{n~mN8yk0+at32UUc`2m|5~FG5HmAzIlqye?IYW2U$RW@UT&i$K zAi1N(Zk0W{3b3S9S?N~!NLTqe;Y7);)VWnYaau{O@;=+v*{(M3jq?Laf1Xmh$8Bx| zN7k&)b`N5gZFO-jgXyf!K_)v_qwPDzl_*AH@ETmmSxi0TR~<;^r2zY)TV(~JpQfW{ z{D(zH!~DrJ`Zt<{pM{8Bz&q_E@=FM&{*Ai=51g-vP+Ik-9}B!5;63mnm@%h(4-!Ue zc$$ZVyWwdX3Hv#%D+G44l{{mM-6{=EmFko#>)k3Fohoxus@%c~=45E0#^Um_Iy&Q^ z7&mCj>Re6|0`qM0f-UECu6c%WqDSd$R36Ota>7Q#JX0h}ch0}X5+jpdDU!IE^>-|9 z)_?D^hAMZFO7^_pGvKF&Is^8qtZ`{-9m_?kEOeKPS4D2()F9M3RcceJ$kBXVMHZd3 z;w?I_m1Qp4ro|KQ+sN}WkozS@77F>#aRC--p>vq?QypadDw#L zDlvU?7LK2@McL=YK90F(sSq1HImgU?!|ZV*Es`CrV7wjalfx|$2@#w&R42y;6q*?+ z*X8Udg$H#;W8dIHsi8DOAF^v9KwhbXnkNwpsl#l%;mu-r*&!|uV~X3WFOX6)Wg<74vO3S3LXK1VV!{l}asvh+Ey8_iC?BOU^orAAU za3o5D#!;iXOYXFj0awa^L4gcdV~O8YLk-yMvNCwDh8Q6kofJY3 zK{9#J5=c9T4r{=QZa42>m_Cl9nxsbLD7XEz7Hf7^0GOGO-u${UDw4-@0_}55rc8`D zG#-||pE}CEJ962Z>6>)8culUxx$+3{bGF(n)~>7a4drSefU^!p(XI^TNDOA`8cvd_ z3_a*Zsj`$R$js1w;%spfkkI~InW`N16#e&sMqAi>gbp|xdy3G4 zy2Gksh&@$fi9|BBQ)BgWC$-yozFj{{ZcX$4HvN2J(sNJsx$}OE^Zj1ud9?HWKIi#X zt13udG3m4qs*|r8#9}_lmctHoFQOpYy%3DMB4v?!D^jScL6&Pq96i-*dVcJOY z=iVY}$;xHve1Ju>t9`!J?oq4jKt#oCwY+TsY#;(48R{kHlG(@GS6QvY6hWu^|11ok zQoSaL21Usk*+QRl! zd$sy`pjzoXKdqn7P^+BhMf!Pws&k&7($D?WYUlY${oF&n=sYjf&z;p8=Xrs_E`y5W zy&lOJk=ec3Rjznd>p3z*-8n*Q2%PNxy_p}l0f_D!X1`hQ^FQG8`CBG1g0Br}aUD<| zw{^-9YRS5=WGGq|sN)_c!EZ#*XJz{7bXW81MEyFGB&%4@n7jStdD~ChbgWf&je~Pl zF`Nr~WJVMCW@Q}TBq3`e=Z&rLYBVynmQB75YiI)*jI@&ld#5~)#@-2=<+?zIEjtlN zyt1BGP|pl>fUCjZc3~P{me)#|w;Rf@q}6&WW?fb*sWD-iECbmw`BE-*hKGHu?HsO*#M8hs-f|#!0GBGQV zFE8Az;vlOez~Eu z4XiZBe+JenWY&n)#@{QO>yTU;vZn*#V}AcHpy(RH+`vFRhgK3X@P>itsq*wTusq04 zL6} zhVx#^a7McxD<@{(!+aGlBzC&3?4SSXYF#ra4TO4_S?cbV5@{FcC-bx~5Ds)loETGD zVELT560g?%)cP-cm}=fo|0O=ip}G1IVrqA`$ijMbjtUt(vg8JK`_>%!V)asGtFMx; zI;st2l~ir6YE&g}xfU#&^V4-!D|TVEsoZ}t>NOH5cOJ1R*RyMN=0VK1$ho=J8LB0B zIg@%`;wH{PlVN-K5fYTP@2@BJNfZn&s8IJ`Ce}EN{_ph@E-&#Qr_t>R>V?Zu1 zW@Ks-Mkp$yH^ej4!U#j$hRhg;qF4j+G3RD3b1o))uOBGPyoypwZMmWjUQs3(^l%&d zFm2CbsCAJWYrsN5n~6Xd$-}6LChbS6I~MI824IOOStlr2cX%i(l<^9#&#uaJ77JTGWB>Uqw#&Y&k>9b@Z_0Xo7=oPiBG zkLMHRnd_bFYMqPGggoWa;Vt^zx#~+|45dS!kETO2@g{(2ksizWst$LB1Uc~xb7xD> z2O0>3a)5e3R+9tNBMwj>>o3n$;~gyUd{jVz;Q3C|+Z_ap-$=&G^HDXe3Brtbrf&L7 zg1XFjd5(>jdXzKXan5+@9jWS#W??2_U=%J>Y4v6$9_2)f9#O!tAenDM(MuD_pvkw# z5E8Wt&dz+ge;KDH!6y4o|2ApatYO&<2&pA$m(98Ac1^`+s6CpBFO+A9TrZnP4rAHe zEz4$p^0L`2%Z5^K*~o22f$r)9r!%?x=qNfn{3SyUKMx?iWYm5kJvCC(^o8@)zfNDL93sQ9d9wERwp(E=2bkc3L@3&8jPuI_K|({a_bqj?VU0Yq><|-^FHD zi$AtIv82PZnZ_^ws+HZ5*#&_fnB(8M32D;*-`vPyXLADA|9gEmN58gKd;6zIjOaq$ zB~qYEt<`cy(umgL7STfR&1G7nMFy^?wkHCglqdpUj-vo{aTK3U`##i}>9(m%-Y`l~)tiFM^zU&yN837@;tPPdyN?Yf%H3HF#UjNcmCv;DrC5ELAsWCr>h__?M6Yv+B+X5+P!8WODKG>0#Fwug z_aRrmTZRN6_G0XOODY<~HvIwtlo-@y!<=Acor{37xS~=H5^cn8)+HF_dN`e`VVzHW zJ#p3Mn`+peb+sjO%v@j>ABN;!ZKYixVs7pp8~`>O4J;EiGC%Z?xrx2GznTrAup0)! zoqAiT^OBs%`jU>30W{xT*vX}b(EL(q{$jA)SdnjVTrWV%tzXi>vcGEk zwi%8tcZTz<9!@`2eMctkzH77#?QxQl;gZnq2-p%4aX~?stv2;!E#H5cW>!)vsPIa) zwR(Pg);89B=t8~S50bNc@w0}B`vr_^+*Q22ji47e$S1xiR9~fDBB#XTq&>M*r~_Z3 zf^~5JEG;wH+xx*KRF!--27=Ng{9ZrV2gJ;SGOs3F1&6u?LZQQ35PL2Ef3!_9Xxs)x z^dNafnVhye9R5`;jZP6fCh;%fa!mKTBm)A-<#-?Cm{?u>D)o3+Z1F_WvNWN3Z*9X@ zU}-&J%Z$iY)kF2_Rh3x+kuZ6#X~b33Q{Y>OU-SQC?>xY(s?xomoOSle$sv#g0s$0> z1#~PyamF$eb=sY|!#M3uG3dd>GlKUf3d=CS**)wB^I7m-EI;or_TPV+@&1w?B}x?YCvAn}%v>U( z+Sb%RwJz*-UZVToj3vODdR0R3?ObNH}@TSvfPCRv|Gia zo}aQALT3)PKK^)gp|6{~Sr^qOF%i8zC1VX+*pk}9HB+|H!dGpyFcV{=ZkSk2#=qQB zRI9`eJq*f&^1>DKfNbdmKvYp)e>9;K%g74u^l=vEmnIRp>l6; zOsIR%WbY)@UF0WSI0YTdX`O^!?M-d(bvW}Ia&$-!1-+<&B6CJ%ITdVtYS1#d?ey{^ z(q?M8&sTzm`$;{_OGH|THj1lx!W$~q-`j0DSL1|6hcxSjGap{*V{NwTUwNHB9mg2c_NPQw4a%{ybuz3x?ZYG$H}6^-@@ulfX2 zb14dGy?j+xBQIh3&4et~_#T@*ECM2y=fsmMbZ5?Cq03XiLJGZ zbEuhZsmvnt##k3Xorr2GU^c)zlpMttEi?~ImRCGS!Q2s*>A8C+Rz`0~v0e#vG66Gu zWi*|uMS5;Rtv0~5{suV9-vA%CY=Bez4R8u)BisPB{swqg8(;$)fJMJq?L9mJb}@~b zg{&VsJ9S4@`!BnJxx!cpQn;->D zsUFefEM;;Wh5%`8n>DPVVhU^629`+M`j&%S!9ogI-8e}!Xaitn3A0;EyL++`e6&VQ z4hJ=*o-#+JZ6^+be_ofva$e6iI2=BVIVh>NTkoq$!FHVC1>5nfNp3sNz-C?B@wy3e zTVxA9M7@K!Om%S0rjDWodz&lSbls~EdazB|vX5#OZ**JsiPZ8N{qpnt@{1_LmV8m= z>%uJ=u(Y9JPH!#E^C~pQRbcwqgl|tBK;N?n4YGIoJ%VG8C@K)lyB)>%y2}LHCN2Km zTqc_OPnE$pyeA$|>vyo3eXK9*D|R_AAD%=nY|$L(x4V2?38o5wWc-xer0Q3=v+#1O zv+x!swpL2B2|)&(XG&@MrAujkpRTAB^j0#XHjMJbwQgbW^cH^JP76%h6$XkUzIz5a z@^Jv+hJQVT*R~1amjQ%N{_7#EZxg~f1lYmP=$CeP{bLGum~_|A$TZ;=NQi9<1Mv;I zX=>z0klh5c(-ys>8rf7W!9L%O3UeI*hme4{!5DP4+{VX=9YyQx@B{RLhQj~#8bUzkg?%OtckcZ>sc z4C>hZ4#U)11G$Q2fp6UCI`<=lj=xx_n3!Yrdc+=gg)Mc z8!9&Qlj=`tEu6I=gW8fTQ#BO#oruol*F$MeJ?_zV>S>BS1;NdbC4a#jFs_7oU_1xT zIk;#BqvkqI>GsKH-Etr@jlb`&Mx(Ga>%r2bt_VNxn`HaxX%;L0${k2o=CV(x>hd(n-ZWr8Scfmghr_(F;Lv1?qKGAaAR?zwH zg$Yv)s)+aD52|q>QF^Uf%5^hOgA3$5m=w||GR0_VekliqdTMcS*Cl}T`s#|nNLZA6 z-2A>#FI9uYJU0-Xn2op=hZGJ8_A6-0_`Miw0x}pO1cKTqILdaiZn8QpG)tpR-2Ic1 zdI|o+0#$FG^RLfNf8`U|oQWorX{^sM6Ok2+ojNXp**(~{w z%$qK}3U9v=Z>@9*%sdCPv}c9YI(xMeID-eCX_%79)^IA6o$i zBpf+JRrs`YHhJ|TnzTSL6_HifFoY!IxX7y>5P`U`N2>hhNCKu;Ph((NWHF*d2ch=i4{5+$h?n(+gi0{Y^CTW(B zuQMOuGO0_eoR+tJ`J58TynJTTsKw=XCU@d2t14G~c7;E}06T977C=t^WV9j{*~@wv zU11b9%rjSd%^CaVvH-vvb_PI!C(UKCxqGzGP5LFW9bmfp=90!1E-AP30NF-3pOh^ogI6g_DrKp`O*%du+$uG(1 zd2WH7uZ26%Gq|a73`EcNPLG)*J5Wm^ZK;$$*7Jny-_4h%!ls|z(VFXS7>%$F7_TeH zgmHy~@tkiH#=AloKOJLLuY@DccTDRiW9)4p)o{jUTk8P(Xzcbco1HuvvTonjihh?h zd<~~8){lGY!qJfi;-t`t4l|%PqQY&M z&6#8DB69CL&j`sVP#SHN?W=49I!HlJ+yh7rSqbC3KM*QsF}Chj1AKFFt)*hN5O-0k z<4xS=PMvlXDUpV&REcTm)=1T(%>DlFW&ZE`{NHzWYwTwW+%sH6c8R>YZYAY%gib zbS_YnsTfj2g5;>&-Q8LgWJj4LCrf;&x2k=NuV>q)cC5tP+uVf4y@UA&rVfxB$Y>6< z0vgg|BceW;?enG`9@N&2T_gK(u+wFbg}Q!j5qa^@B)ged$M;*E(z6OJCb|3DT{by~ z{oks!UbQ}LuiBGQR;?bg-lG3=3o}vc+`??RuP4j~L;;T90Q*^nL##j=!{PfODuzlg zv$~_x7a-xlDz3GJ!}0;zBageEXHGA9vVB+f<#0XxOn>@?%$vsz7QjL+PdV|>Z7sQ)dm*a{M_EF|)a5kLE?H&n8s+D*hXr&|8Ny!H z2faX1?r<-g)XOYF9NS*zwcpE(&KBo9I0k-o`z};PYwDSC;mmWbEZF{56!x2zj?47( zc(`+R^mn2^uaLl0aUotBzq!4rEs>#}UEG#B^AHZ3_Jp36?>o_j6Zt~W=4R|g@}SX$(oFah$l6Y6u&Nj%^Rg`S zfebs9_YEr#l8f(5vOzoBcX!ET?>7YfpF4r%Dz1OY=%83R@ei8;fG@|ES>UNl2|i@0 zGA#RKZ9U8OMxMDZ9g6@+5x_8I_3!qyh=>8f& z_jxPmW))>ekqjivo0V>PFYcJKXOiC|ZQV^2>E!(w88O>RQiRh9d##;tTgS{Dcn3v$ zD(2oRCxbwQe=f(lfj8#mlZi{{9c`W>W3cM3^8D<=;VxQPWYNOeqjr!khdJI}JYtqd z+GeGnaD9I=@>}ftv3B}?+V%b3x7qjlcKUvSzU6F~E-rh=y^RhQ<8dD0!nI(VS;)bX z?cM0~A{z-Xt`CGAFB*{H9d}VzU$ArIh^Czudk9W zh(-PV35Cb_S^1ZVA8OuEx`vLp76ts)&Z6pnID?l`|uvof`;mB&p;}<2gvVX z6kQeI{Pnro=dWUSaiTE$ifl!7e~1j>`gpGA%rUM)R9m4Pux7lAVsR_h!M6Na6S2gl zyuRm|%VjmbVXV~y*GqfzWVNKq$e>pu%RLbm=5{b}oY;>wJb#7MSj+(B-jNpH+)7B( z60>HqgYei2YUGj1ufhU+ExtSg5^ie~?3D!v>kO4ai<~RF%BUgdAALbCpQupCD|B^T z;O+ZgG$Y0JiYdrhbX6a!vD|`_urD)KD;+RkRbh_Du#u-w>7j*bbdG7}rXoNW&q&gyvCea%&DFe|2mrAL;oq!`+S%07cAv&#m&U zIZWECV{MQ_EWNT2I3Ymi0V_mF(zzNx>7w=SWgZx

    WGh#|5t6FDhx7dw~#h-gNGK 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 literal 0 HcmV?d00001 diff --git a/examples/plugin-for-example/Cargo.toml b/examples/plugin-for-example/Cargo.toml new file mode 100644 index 000000000..7b8e6b723 --- /dev/null +++ b/examples/plugin-for-example/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "plugin-for-example" +version = "0.1.0" +authors = ["The Wasmer Engineering Team "] +edition = "2018" + +[dependencies] \ No newline at end of file diff --git a/examples/plugin-for-example/README.md b/examples/plugin-for-example/README.md new file mode 100644 index 000000000..3f7f2e3ad --- /dev/null +++ b/examples/plugin-for-example/README.md @@ -0,0 +1,33 @@ +# WASI plugin example + +In this example we extend the imports of Wasmer's WASI ABI to demonstrate how custom plugins work. + +See the `wasmer/examples/plugin.rs` file for the source code of the host system. + +## Compiling + +``` +# Install an up to date version of Rust nightly +# Add the target +rustup target add wasm32-unknown-wasi +# build it +cargo build --release --target=wasm32-unknown-wasi +# copy it to examples folder +cp ../../target/wasm32-unknown-wasi/release/plugin-for-example.wasm ../ +``` + +## Running +``` +# Go back to top level Wasmer dir +cd .. +# Run the example +cargo run --example plugin +``` + +## Explanation + +In this example, we instantiate a system with an extended (WASI)[wasi] ABI, allowing our program to rely on Wasmer's implementation of the syscalls defined by WASI as well as our own that we made. This allows us to use the full power of an existing ABI, like WASI, and give it super-powers for our specific use case. + +Because the Rust WASI doesn't support the crate type of `cdylib`, we have to include a main function which we don't use. + +[wasi]: https://hacks.mozilla.org/2019/03/standardizing-wasi-a-webassembly-system-interface/ \ No newline at end of file diff --git a/examples/plugin-for-example/src/bin.rs b/examples/plugin-for-example/src/bin.rs new file mode 100644 index 000000000..33da75f09 --- /dev/null +++ b/examples/plugin-for-example/src/bin.rs @@ -0,0 +1,14 @@ +extern "C" { + fn it_works() -> i32; +} + +#[no_mangle] +pub fn plugin_entrypoint(n: i32) -> i32 { + println!("It works from inside WASI"); + let result = unsafe { it_works() }; + result + n +} + +pub fn main() { + println!("hello"); +} diff --git a/examples/plugin-for-example/src/main.rs b/examples/plugin-for-example/src/main.rs new file mode 100644 index 000000000..9ee284aab --- /dev/null +++ b/examples/plugin-for-example/src/main.rs @@ -0,0 +1,12 @@ +extern "C" { + fn it_works() -> i32; +} + +#[no_mangle] +pub fn plugin_entrypoint(n: i32) -> i32 { + println!("Hello from inside WASI"); + let result = unsafe { it_works() }; + result + n +} + +pub fn main() {} diff --git a/examples/plugin.rs b/examples/plugin.rs new file mode 100644 index 000000000..42803bb75 --- /dev/null +++ b/examples/plugin.rs @@ -0,0 +1,28 @@ +use wasmer_runtime::{func, imports, instantiate}; +use wasmer_runtime_core::vm::Ctx; +use wasmer_wasi::generate_import_object; + +static PLUGIN_WASM: &'static [u8] = include_bytes!("plugin-for-example.wasm"); + +fn it_works(_ctx: &mut Ctx) -> i32 { + println!("Hello from outside WASI"); + 5 +} + +fn main() { + // WASI imports + let mut base_imports = generate_import_object(vec![], vec![], vec![]); + // env is the default namespace for extern functions + let custom_imports = imports! { + "env" => { + "it_works" => func!(it_works), + }, + }; + base_imports.extend(custom_imports); + let instance = + instantiate(PLUGIN_WASM, &base_imports).expect("failed to instantiate wasm module"); + + let entry_point = instance.func::<(i32), i32>("plugin_entrypoint").unwrap(); + let result = entry_point.call(2).expect("failed to execute plugin"); + println!("result: {}", result); +} From eca8ccdbd404b09c29745c5b0a977d9ec641941f Mon Sep 17 00:00:00 2001 From: losfair Date: Sat, 27 Apr 2019 12:31:04 +0800 Subject: [PATCH 321/413] Move out parser and codegen traits. --- lib/runtime-core/src/codegen.rs | 240 ++++++++++++++++++ lib/runtime-core/src/lib.rs | 2 + .../src/parse.rs | 53 ++-- lib/singlepass-backend/Cargo.toml | 2 +- lib/singlepass-backend/src/codegen.rs | 51 ---- lib/singlepass-backend/src/codegen_x64.rs | 29 ++- lib/singlepass-backend/src/lib.rs | 74 +----- 7 files changed, 304 insertions(+), 147 deletions(-) create mode 100644 lib/runtime-core/src/codegen.rs rename lib/{singlepass-backend => runtime-core}/src/parse.rs (89%) delete mode 100644 lib/singlepass-backend/src/codegen.rs diff --git a/lib/runtime-core/src/codegen.rs b/lib/runtime-core/src/codegen.rs new file mode 100644 index 000000000..8682a6fa8 --- /dev/null +++ b/lib/runtime-core/src/codegen.rs @@ -0,0 +1,240 @@ +use crate::{ + backend::RunnableModule, + structures::Map, + types::{FuncIndex, FuncSig, SigIndex}, + backend::{sys::Memory, Backend, CacheGen, Compiler, CompilerConfig, Token}, + cache::{Artifact, Error as CacheError}, + error::{CompileError, CompileResult}, + module::{ModuleInfo, ModuleInner}, + parse::LoadError, +}; +use wasmparser::{Operator, Type as WpType}; +use std::fmt::Debug; +use smallvec::SmallVec; +use std::marker::PhantomData; + +pub enum Event<'a, 'b> { + Internal(InternalEvent), + Wasm(&'b Operator<'a>), +} + +#[derive(Copy, Clone, Debug)] +pub enum InternalEvent { + FunctionBegin, + FunctionEnd, + Trace, +} + +pub trait ModuleCodeGenerator, RM: RunnableModule, E: Debug> { + fn new() -> Self; + fn backend_id() -> Backend; + fn check_precondition(&mut self, module_info: &ModuleInfo) -> Result<(), E>; + + /// Creates a new function and returns the function-scope code generator for it. + fn next_function(&mut self) -> Result<&mut FCG, E>; + fn finalize(self, module_info: &ModuleInfo) -> Result; + fn feed_signatures(&mut self, signatures: Map) -> Result<(), E>; + + /// Sets function signatures. + fn feed_function_signatures( + &mut self, + assoc: Map, + ) -> Result<(), E>; + + /// Adds an import function. + fn feed_import_function(&mut self) -> Result<(), E>; +} + +pub struct StreamingCompiler< + MCG: ModuleCodeGenerator, + FCG: FunctionCodeGenerator, + RM: RunnableModule + 'static, + E: Debug, + CGEN: Fn() -> MiddlewareChain, +> { + middleware_chain_generator: CGEN, + _phantom_mcg: PhantomData, + _phantom_fcg: PhantomData, + _phantom_rm: PhantomData, + _phantom_e: PhantomData, +} + +pub struct SimpleStreamingCompilerGen< + MCG: ModuleCodeGenerator, + FCG: FunctionCodeGenerator, + RM: RunnableModule + 'static, + E: Debug, +> { + _phantom_mcg: PhantomData, + _phantom_fcg: PhantomData, + _phantom_rm: PhantomData, + _phantom_e: PhantomData, +} + +impl< + MCG: ModuleCodeGenerator, + FCG: FunctionCodeGenerator, + RM: RunnableModule + 'static, + E: Debug, +> SimpleStreamingCompilerGen { + pub fn new() -> StreamingCompiler MiddlewareChain> { + StreamingCompiler::new(|| MiddlewareChain::new()) + } +} + +impl< + MCG: ModuleCodeGenerator, + FCG: FunctionCodeGenerator, + RM: RunnableModule + 'static, + E: Debug, + CGEN: Fn() -> MiddlewareChain, +> StreamingCompiler { + pub fn new(chain_gen: CGEN) -> Self { + Self { + middleware_chain_generator: chain_gen, + _phantom_mcg: PhantomData, + _phantom_fcg: PhantomData, + _phantom_rm: PhantomData, + _phantom_e: PhantomData, + } + } +} + +impl< + MCG: ModuleCodeGenerator, + FCG: FunctionCodeGenerator, + RM: RunnableModule + 'static, + E: Debug, + CGEN: Fn() -> MiddlewareChain, +>Compiler for StreamingCompiler { + fn compile( + &self, + wasm: &[u8], + compiler_config: CompilerConfig, + _: Token, + ) -> CompileResult { + struct Placeholder; + impl CacheGen for Placeholder { + fn generate_cache(&self) -> Result<(Box<[u8]>, Memory), CacheError> { + Err(CacheError::Unknown( + "the singlepass backend doesn't support caching yet".to_string(), + )) + } + } + + let mut mcg = MCG::new(); + let mut chain = (self.middleware_chain_generator)(); + let info = crate::parse::read_module(wasm, MCG::backend_id(), &mut mcg, &mut chain, &compiler_config)?; + let exec_context = mcg.finalize(&info).map_err(|x| CompileError::InternalError { + msg: format!("{:?}", x), + })?; + Ok(ModuleInner { + cache_gen: Box::new(Placeholder), + runnable_module: Box::new(exec_context), + info: info, + }) + } + + unsafe fn from_cache(&self, _artifact: Artifact, _: Token) -> Result { + Err(CacheError::Unknown( + "the singlepass backend doesn't support caching yet".to_string(), + )) + } +} + +pub struct EventSink<'a, 'b> { + buffer: SmallVec<[Event<'a, 'b>; 2]> +} + +impl<'a, 'b> EventSink<'a, 'b> { + pub fn push(&mut self, ev: Event<'a, 'b>) { + self.buffer.push(ev); + } +} + +pub struct MiddlewareChain { + chain: Vec>, +} + +impl MiddlewareChain { + pub fn new() -> MiddlewareChain { + MiddlewareChain { + chain: vec! [], + } + } + + pub fn push(&mut self, m: M) { + self.chain.push(Box::new(m)); + } + + pub(crate) fn run>(&mut self, fcg: Option<&mut FCG>, ev: Event, module_info: &ModuleInfo) -> Result<(), String> { + let mut sink = EventSink { + buffer: SmallVec::new(), + }; + sink.push(ev); + for m in &mut self.chain { + let prev: SmallVec<[Event; 2]> = sink.buffer.drain().collect(); + for ev in prev { + m.feed_event(ev, module_info, &mut sink)?; + } + } + if let Some(fcg) = fcg { + for ev in sink.buffer { + fcg.feed_event(ev, module_info).map_err(|x| format!("{:?}", x))?; + } + } + + Ok(()) + } +} + +pub trait FunctionMiddleware { + type Error: Debug; + fn feed_event( + &mut self, + op: Event, + module_info: &ModuleInfo, + sink: &mut EventSink, + ) -> Result<(), Self::Error>; +} + +pub(crate) trait GenericFunctionMiddleware { + fn feed_event( + &mut self, + op: Event, + module_info: &ModuleInfo, + sink: &mut EventSink, + ) -> Result<(), String>; +} + +impl> GenericFunctionMiddleware for T { + fn feed_event( + &mut self, + op: Event, + module_info: &ModuleInfo, + sink: &mut EventSink, + ) -> Result<(), String> { + ::feed_event(self, op, module_info, sink).map_err(|x| format!("{:?}", x)) + } +} + +/// The function-scope code generator trait. +pub trait FunctionCodeGenerator { + /// Sets the return type. + fn feed_return(&mut self, ty: WpType) -> Result<(), E>; + + /// Adds a parameter to the function. + fn feed_param(&mut self, ty: WpType) -> Result<(), E>; + + /// Adds `n` locals to the function. + fn feed_local(&mut self, ty: WpType, n: usize) -> Result<(), E>; + + /// Called before the first call to `feed_opcode`. + fn begin_body(&mut self) -> Result<(), E>; + + /// Called for each operator. + fn feed_event(&mut self, op: Event, module_info: &ModuleInfo) -> Result<(), E>; + + /// Finalizes the function. + fn finalize(&mut self) -> Result<(), E>; +} diff --git a/lib/runtime-core/src/lib.rs b/lib/runtime-core/src/lib.rs index a43a4c63a..d07af88c1 100644 --- a/lib/runtime-core/src/lib.rs +++ b/lib/runtime-core/src/lib.rs @@ -31,6 +31,8 @@ pub mod units; pub mod vm; #[doc(hidden)] pub mod vmcalls; +pub mod codegen; +pub mod parse; use self::error::CompileResult; #[doc(inline)] diff --git a/lib/singlepass-backend/src/parse.rs b/lib/runtime-core/src/parse.rs similarity index 89% rename from lib/singlepass-backend/src/parse.rs rename to lib/runtime-core/src/parse.rs index e02b4b8c1..4c851d6df 100644 --- a/lib/singlepass-backend/src/parse.rs +++ b/lib/runtime-core/src/parse.rs @@ -1,6 +1,6 @@ -use crate::codegen::{CodegenError, FunctionCodeGenerator, ModuleCodeGenerator}; +use crate::codegen::*; use hashbrown::HashMap; -use wasmer_runtime_core::{ +use crate::{ backend::{Backend, CompilerConfig, RunnableModule}, module::{ DataInitializer, ExportIndex, ImportName, ModuleInfo, StringTable, StringTableBuilder, @@ -13,17 +13,27 @@ use wasmer_runtime_core::{ TableIndex, Type, Value, }, units::Pages, + error::CompileError, }; use wasmparser::{ BinaryReaderError, Data, DataKind, Element, ElementKind, Export, ExternalKind, FuncType, Import, ImportSectionEntryType, InitExpr, ModuleReader, Operator, SectionCode, Type as WpType, WasmDecoder, }; +use std::fmt::Debug; #[derive(Debug)] pub enum LoadError { Parse(BinaryReaderError), - Codegen(CodegenError), + Codegen(String), +} + +impl From for CompileError { + fn from(other: LoadError) -> CompileError { + CompileError::InternalError { + msg: format!("{:?}", other), + } + } } impl From for LoadError { @@ -32,20 +42,16 @@ impl From for LoadError { } } -impl From for LoadError { - fn from(other: CodegenError) -> LoadError { - LoadError::Codegen(other) - } -} - pub fn read_module< - MCG: ModuleCodeGenerator, - FCG: FunctionCodeGenerator, + MCG: ModuleCodeGenerator, + FCG: FunctionCodeGenerator, RM: RunnableModule, + E: Debug, >( wasm: &[u8], backend: Backend, mcg: &mut MCG, + middlewares: &mut MiddlewareChain, compiler_config: &CompilerConfig, ) -> Result { let mut info = ModuleInfo { @@ -116,7 +122,7 @@ pub fn read_module< let sigindex = SigIndex::new(sigindex as usize); info.imported_functions.push(import_name); info.func_assoc.push(sigindex); - mcg.feed_import_function()?; + mcg.feed_import_function().map_err(|x| LoadError::Codegen(format!("{:?}", x)))?; } ImportSectionEntryType::Table(table_ty) => { assert_eq!(table_ty.element_type, WpType::AnyFunc); @@ -186,12 +192,14 @@ pub fn read_module< if func_count == 0 { info.namespace_table = namespace_builder.take().unwrap().finish(); info.name_table = name_builder.take().unwrap().finish(); - mcg.feed_signatures(info.signatures.clone())?; - mcg.feed_function_signatures(info.func_assoc.clone())?; - mcg.check_precondition(&info)?; + mcg.feed_signatures(info.signatures.clone()).map_err(|x| LoadError::Codegen(format!("{:?}", x)))?; + mcg.feed_function_signatures(info.func_assoc.clone()).map_err(|x| LoadError::Codegen(format!("{:?}", x)))?; + mcg.check_precondition(&info).map_err(|x| LoadError::Codegen(format!("{:?}", x)))?; } - let fcg = mcg.next_function()?; + let fcg = mcg.next_function().map_err(|x| LoadError::Codegen(format!("{:?}", x)))?; + middlewares.run(Some(fcg), Event::Internal(InternalEvent::FunctionBegin), &info).map_err(|x| LoadError::Codegen(x))?; + let sig = info .signatures .get( @@ -202,10 +210,10 @@ pub fn read_module< ) .unwrap(); for ret in sig.returns() { - fcg.feed_return(type_to_wp_type(*ret))?; + fcg.feed_return(type_to_wp_type(*ret)).map_err(|x| LoadError::Codegen(format!("{:?}", x)))?; } for param in sig.params() { - fcg.feed_param(type_to_wp_type(*param))?; + fcg.feed_param(type_to_wp_type(*param)).map_err(|x| LoadError::Codegen(format!("{:?}", x)))?; } let mut body_begun = false; @@ -216,21 +224,22 @@ pub fn read_module< ParserState::Error(err) => return Err(LoadError::Parse(err)), ParserState::FunctionBodyLocals { ref locals } => { for &(count, ty) in locals.iter() { - fcg.feed_local(ty, count as usize)?; + fcg.feed_local(ty, count as usize).map_err(|x| LoadError::Codegen(format!("{:?}", x)))?; } } ParserState::CodeOperator(ref op) => { if !body_begun { body_begun = true; - fcg.begin_body()?; + fcg.begin_body().map_err(|x| LoadError::Codegen(format!("{:?}", x)))?; } - fcg.feed_opcode(op, &info)?; + middlewares.run(Some(fcg), Event::Wasm(op), &info).map_err(|x| LoadError::Codegen(x))?; } ParserState::EndFunctionBody => break, _ => unreachable!(), } } - fcg.finalize()?; + middlewares.run(Some(fcg), Event::Internal(InternalEvent::FunctionEnd), &info).map_err(|x| LoadError::Codegen(x))?; + fcg.finalize().map_err(|x| LoadError::Codegen(format!("{:?}", x)))?; } ParserState::BeginActiveElementSectionEntry(table_index) => { let table_index = TableIndex::new(table_index as usize); diff --git a/lib/singlepass-backend/Cargo.toml b/lib/singlepass-backend/Cargo.toml index 51fa61319..b4046e76c 100644 --- a/lib/singlepass-backend/Cargo.toml +++ b/lib/singlepass-backend/Cargo.toml @@ -9,7 +9,7 @@ edition = "2018" [dependencies] wasmer-runtime-core = { path = "../runtime-core", version = "0.3.0" } -wasmparser = "0.28.0" +wasmparser = "0.29.2" dynasm = "0.3.1" dynasmrt = "0.3.1" lazy_static = "1.2.0" diff --git a/lib/singlepass-backend/src/codegen.rs b/lib/singlepass-backend/src/codegen.rs deleted file mode 100644 index a5bfbf594..000000000 --- a/lib/singlepass-backend/src/codegen.rs +++ /dev/null @@ -1,51 +0,0 @@ -use wasmer_runtime_core::{ - backend::RunnableModule, - module::ModuleInfo, - structures::Map, - types::{FuncIndex, FuncSig, SigIndex}, -}; -use wasmparser::{Operator, Type as WpType}; - -pub trait ModuleCodeGenerator { - fn check_precondition(&mut self, module_info: &ModuleInfo) -> Result<(), CodegenError>; - - /// Creates a new function and returns the function-scope code generator for it. - fn next_function(&mut self) -> Result<&mut FCG, CodegenError>; - fn finalize(self, module_info: &ModuleInfo) -> Result; - fn feed_signatures(&mut self, signatures: Map) -> Result<(), CodegenError>; - - /// Sets function signatures. - fn feed_function_signatures( - &mut self, - assoc: Map, - ) -> Result<(), CodegenError>; - - /// Adds an import function. - fn feed_import_function(&mut self) -> Result<(), CodegenError>; -} - -/// The function-scope code generator trait. -pub trait FunctionCodeGenerator { - /// Sets the return type. - fn feed_return(&mut self, ty: WpType) -> Result<(), CodegenError>; - - /// Adds a parameter to the function. - fn feed_param(&mut self, ty: WpType) -> Result<(), CodegenError>; - - /// Adds `n` locals to the function. - fn feed_local(&mut self, ty: WpType, n: usize) -> Result<(), CodegenError>; - - /// Called before the first call to `feed_opcode`. - fn begin_body(&mut self) -> Result<(), CodegenError>; - - /// Called for each operator. - fn feed_opcode(&mut self, op: &Operator, module_info: &ModuleInfo) -> Result<(), CodegenError>; - - /// Finalizes the function. - fn finalize(&mut self) -> Result<(), CodegenError>; -} - -#[derive(Debug)] -pub struct CodegenError { - pub message: &'static str, -} diff --git a/lib/singlepass-backend/src/codegen_x64.rs b/lib/singlepass-backend/src/codegen_x64.rs index ad4963214..0368bc04c 100644 --- a/lib/singlepass-backend/src/codegen_x64.rs +++ b/lib/singlepass-backend/src/codegen_x64.rs @@ -1,6 +1,5 @@ #![allow(clippy::forget_copy)] // Used by dynasm. -use super::codegen::*; use crate::emitter_x64::*; use crate::machine::*; use crate::protect_unix; @@ -11,7 +10,7 @@ use smallvec::SmallVec; use std::ptr::NonNull; use std::{any::Any, collections::HashMap, sync::Arc}; use wasmer_runtime_core::{ - backend::RunnableModule, + backend::{Backend, RunnableModule}, memory::MemoryType, module::ModuleInfo, structures::{Map, TypedIndex}, @@ -22,6 +21,7 @@ use wasmer_runtime_core::{ }, vm::{self, LocalGlobal, LocalMemory, LocalTable}, vmcalls, + codegen::*, }; use wasmparser::{Operator, Type as WpType}; @@ -262,8 +262,13 @@ impl RunnableModule for X64ExecutionContext { } } -impl X64ModuleCodeGenerator { - pub fn new() -> X64ModuleCodeGenerator { +#[derive(Debug)] +pub struct CodegenError { + pub message: &'static str, +} + +impl ModuleCodeGenerator for X64ModuleCodeGenerator { + fn new() -> X64ModuleCodeGenerator { X64ModuleCodeGenerator { functions: vec![], signatures: None, @@ -273,9 +278,11 @@ impl X64ModuleCodeGenerator { func_import_count: 0, } } -} -impl ModuleCodeGenerator for X64ModuleCodeGenerator { + fn backend_id() -> Backend { + Backend::Singlepass + } + fn check_precondition(&mut self, _module_info: &ModuleInfo) -> Result<(), CodegenError> { Ok(()) } @@ -1335,7 +1342,7 @@ impl X64FunctionCode { } } -impl FunctionCodeGenerator for X64FunctionCode { +impl FunctionCodeGenerator for X64FunctionCode { fn feed_return(&mut self, ty: WpType) -> Result<(), CodegenError> { self.returns.push(ty); Ok(()) @@ -1377,7 +1384,13 @@ impl FunctionCodeGenerator for X64FunctionCode { Ok(()) } - fn feed_opcode(&mut self, op: &Operator, module_info: &ModuleInfo) -> Result<(), CodegenError> { + fn feed_event(&mut self, ev: Event, module_info: &ModuleInfo) -> Result<(), CodegenError> { + let op = match ev { + Event::Wasm(x) => x, + Event::Internal(x) => { + return Ok(()); + } + }; //println!("{:?} {}", op, self.value_stack.len()); let was_unreachable; diff --git a/lib/singlepass-backend/src/lib.rs b/lib/singlepass-backend/src/lib.rs index 7ecd029e4..51415a69c 100644 --- a/lib/singlepass-backend/src/lib.rs +++ b/lib/singlepass-backend/src/lib.rs @@ -18,74 +18,18 @@ extern crate byteorder; #[macro_use] extern crate smallvec; -mod codegen; mod codegen_x64; mod emitter_x64; mod machine; -mod parse; mod protect_unix; -use crate::codegen::{CodegenError, ModuleCodeGenerator}; -use crate::parse::LoadError; -use wasmer_runtime_core::{ - backend::{sys::Memory, Backend, CacheGen, Compiler, CompilerConfig, Token}, - cache::{Artifact, Error as CacheError}, - error::{CompileError, CompileResult}, - module::{ModuleInfo, ModuleInner}, -}; +pub use codegen_x64::X64ModuleCodeGenerator as ModuleCodeGenerator; +pub use codegen_x64::X64FunctionCode as FunctionCodeGenerator; -struct Placeholder; -impl CacheGen for Placeholder { - fn generate_cache(&self) -> Result<(Box<[u8]>, Memory), CacheError> { - Err(CacheError::Unknown( - "the singlepass backend doesn't support caching yet".to_string(), - )) - } -} - -pub struct SinglePassCompiler {} -impl SinglePassCompiler { - pub fn new() -> Self { - Self {} - } -} - -impl Compiler for SinglePassCompiler { - fn compile( - &self, - wasm: &[u8], - compiler_config: CompilerConfig, - _: Token, - ) -> CompileResult { - let mut mcg = codegen_x64::X64ModuleCodeGenerator::new(); - let info = parse::read_module(wasm, Backend::Singlepass, &mut mcg, &compiler_config)?; - let exec_context = mcg.finalize(&info)?; - Ok(ModuleInner { - cache_gen: Box::new(Placeholder), - runnable_module: Box::new(exec_context), - info: info, - }) - } - - unsafe fn from_cache(&self, _artifact: Artifact, _: Token) -> Result { - Err(CacheError::Unknown( - "the singlepass backend doesn't support caching yet".to_string(), - )) - } -} - -impl From for CompileError { - fn from(other: CodegenError) -> CompileError { - CompileError::InternalError { - msg: other.message.into(), - } - } -} - -impl From for CompileError { - fn from(other: LoadError) -> CompileError { - CompileError::InternalError { - msg: format!("{:?}", other), - } - } -} +use wasmer_runtime_core::codegen::SimpleStreamingCompilerGen; +pub type SinglePassCompiler = SimpleStreamingCompilerGen< + codegen_x64::X64ModuleCodeGenerator, + codegen_x64::X64FunctionCode, + codegen_x64::X64ExecutionContext, + codegen_x64::CodegenError, +>; \ No newline at end of file From 2262c8a6da2df1fe5e4d8d093d355ebcf7b97623 Mon Sep 17 00:00:00 2001 From: losfair Date: Sat, 27 Apr 2019 16:31:47 +0800 Subject: [PATCH 322/413] Finished middleware impl and made a CallTrace middleware --- lib/middleware-common/Cargo.toml | 11 ++ lib/middleware-common/src/call_trace.rs | 27 +++++ lib/middleware-common/src/lib.rs | 9 ++ lib/runtime-core/src/codegen.rs | 112 +++++++++++-------- lib/runtime-core/src/lib.rs | 4 +- lib/runtime-core/src/parse.rs | 57 +++++++--- lib/runtime-core/src/vm.rs | 2 +- lib/singlepass-backend/src/codegen_x64.rs | 121 ++++++++++++++------- lib/singlepass-backend/src/emitter_x64.rs | 6 + lib/singlepass-backend/src/lib.rs | 4 +- lib/singlepass-backend/src/protect_unix.rs | 22 +++- 11 files changed, 266 insertions(+), 109 deletions(-) create mode 100644 lib/middleware-common/Cargo.toml create mode 100644 lib/middleware-common/src/call_trace.rs create mode 100644 lib/middleware-common/src/lib.rs diff --git a/lib/middleware-common/Cargo.toml b/lib/middleware-common/Cargo.toml new file mode 100644 index 000000000..9abb4041a --- /dev/null +++ b/lib/middleware-common/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "wasmer-middleware-common" +version = "0.3.0" +repository = "https://github.com/wasmerio/wasmer" +description = "Wasmer runtime common middlewares" +license = "MIT" +authors = ["The Wasmer Engineering Team "] +edition = "2018" + +[dependencies] +wasmer-runtime-core = { path = "../runtime-core", version = "0.3.0" } diff --git a/lib/middleware-common/src/call_trace.rs b/lib/middleware-common/src/call_trace.rs new file mode 100644 index 000000000..2f0879ca6 --- /dev/null +++ b/lib/middleware-common/src/call_trace.rs @@ -0,0 +1,27 @@ +use wasmer_runtime_core::{ + codegen::{Event, EventSink, FunctionMiddleware, InternalEvent}, + module::ModuleInfo, +}; + +pub struct CallTrace; + +impl FunctionMiddleware for CallTrace { + type Error = String; + fn feed_event<'a, 'b: 'a>( + &mut self, + op: Event<'a, 'b>, + module_info: &ModuleInfo, + sink: &mut EventSink<'a, 'b>, + ) -> Result<(), Self::Error> { + match op { + Event::Internal(InternalEvent::FunctionBegin(id)) => { + sink.push(Event::Internal(InternalEvent::Bkpt(Box::new(move |_| { + println!("func ({})", id); + })))) + } + _ => {} + } + sink.push(op); + Ok(()) + } +} diff --git a/lib/middleware-common/src/lib.rs b/lib/middleware-common/src/lib.rs new file mode 100644 index 000000000..a61b6e1ec --- /dev/null +++ b/lib/middleware-common/src/lib.rs @@ -0,0 +1,9 @@ +pub mod call_trace; + +#[cfg(test)] +mod tests { + #[test] + fn it_works() { + assert_eq!(2 + 2, 4); + } +} diff --git a/lib/runtime-core/src/codegen.rs b/lib/runtime-core/src/codegen.rs index 8682a6fa8..4beb653d1 100644 --- a/lib/runtime-core/src/codegen.rs +++ b/lib/runtime-core/src/codegen.rs @@ -1,30 +1,33 @@ use crate::{ backend::RunnableModule, - structures::Map, - types::{FuncIndex, FuncSig, SigIndex}, backend::{sys::Memory, Backend, CacheGen, Compiler, CompilerConfig, Token}, cache::{Artifact, Error as CacheError}, error::{CompileError, CompileResult}, module::{ModuleInfo, ModuleInner}, parse::LoadError, + structures::Map, + types::{FuncIndex, FuncSig, SigIndex}, }; -use wasmparser::{Operator, Type as WpType}; -use std::fmt::Debug; use smallvec::SmallVec; +use std::fmt::Debug; use std::marker::PhantomData; +use wasmparser::{Operator, Type as WpType}; pub enum Event<'a, 'b> { Internal(InternalEvent), Wasm(&'b Operator<'a>), } -#[derive(Copy, Clone, Debug)] pub enum InternalEvent { - FunctionBegin, + FunctionBegin(u32), FunctionEnd, - Trace, + Bkpt(Box), + SetInternal(u32), + GetInternal(u32), } +pub struct BkptInfo {} + pub trait ModuleCodeGenerator, RM: RunnableModule, E: Debug> { fn new() -> Self; fn backend_id() -> Backend; @@ -36,10 +39,7 @@ pub trait ModuleCodeGenerator, RM: RunnableModule, fn feed_signatures(&mut self, signatures: Map) -> Result<(), E>; /// Sets function signatures. - fn feed_function_signatures( - &mut self, - assoc: Map, - ) -> Result<(), E>; + fn feed_function_signatures(&mut self, assoc: Map) -> Result<(), E>; /// Adds an import function. fn feed_import_function(&mut self) -> Result<(), E>; @@ -72,23 +72,25 @@ pub struct SimpleStreamingCompilerGen< } impl< - MCG: ModuleCodeGenerator, - FCG: FunctionCodeGenerator, - RM: RunnableModule + 'static, - E: Debug, -> SimpleStreamingCompilerGen { + MCG: ModuleCodeGenerator, + FCG: FunctionCodeGenerator, + RM: RunnableModule + 'static, + E: Debug, + > SimpleStreamingCompilerGen +{ pub fn new() -> StreamingCompiler MiddlewareChain> { StreamingCompiler::new(|| MiddlewareChain::new()) } } impl< - MCG: ModuleCodeGenerator, - FCG: FunctionCodeGenerator, - RM: RunnableModule + 'static, - E: Debug, - CGEN: Fn() -> MiddlewareChain, -> StreamingCompiler { + MCG: ModuleCodeGenerator, + FCG: FunctionCodeGenerator, + RM: RunnableModule + 'static, + E: Debug, + CGEN: Fn() -> MiddlewareChain, + > StreamingCompiler +{ pub fn new(chain_gen: CGEN) -> Self { Self { middleware_chain_generator: chain_gen, @@ -101,12 +103,13 @@ impl< } impl< - MCG: ModuleCodeGenerator, - FCG: FunctionCodeGenerator, - RM: RunnableModule + 'static, - E: Debug, - CGEN: Fn() -> MiddlewareChain, ->Compiler for StreamingCompiler { + MCG: ModuleCodeGenerator, + FCG: FunctionCodeGenerator, + RM: RunnableModule + 'static, + E: Debug, + CGEN: Fn() -> MiddlewareChain, + > Compiler for StreamingCompiler +{ fn compile( &self, wasm: &[u8], @@ -124,10 +127,18 @@ impl< let mut mcg = MCG::new(); let mut chain = (self.middleware_chain_generator)(); - let info = crate::parse::read_module(wasm, MCG::backend_id(), &mut mcg, &mut chain, &compiler_config)?; - let exec_context = mcg.finalize(&info).map_err(|x| CompileError::InternalError { - msg: format!("{:?}", x), - })?; + let info = crate::parse::read_module( + wasm, + MCG::backend_id(), + &mut mcg, + &mut chain, + &compiler_config, + )?; + let exec_context = mcg + .finalize(&info) + .map_err(|x| CompileError::InternalError { + msg: format!("{:?}", x), + })?; Ok(ModuleInner { cache_gen: Box::new(Placeholder), runnable_module: Box::new(exec_context), @@ -143,7 +154,7 @@ impl< } pub struct EventSink<'a, 'b> { - buffer: SmallVec<[Event<'a, 'b>; 2]> + buffer: SmallVec<[Event<'a, 'b>; 2]>, } impl<'a, 'b> EventSink<'a, 'b> { @@ -158,16 +169,19 @@ pub struct MiddlewareChain { impl MiddlewareChain { pub fn new() -> MiddlewareChain { - MiddlewareChain { - chain: vec! [], - } + MiddlewareChain { chain: vec![] } } pub fn push(&mut self, m: M) { self.chain.push(Box::new(m)); } - pub(crate) fn run>(&mut self, fcg: Option<&mut FCG>, ev: Event, module_info: &ModuleInfo) -> Result<(), String> { + pub(crate) fn run>( + &mut self, + fcg: Option<&mut FCG>, + ev: Event, + module_info: &ModuleInfo, + ) -> Result<(), String> { let mut sink = EventSink { buffer: SmallVec::new(), }; @@ -180,7 +194,8 @@ impl MiddlewareChain { } if let Some(fcg) = fcg { for ev in sink.buffer { - fcg.feed_event(ev, module_info).map_err(|x| format!("{:?}", x))?; + fcg.feed_event(ev, module_info) + .map_err(|x| format!("{:?}", x))?; } } @@ -190,31 +205,32 @@ impl MiddlewareChain { pub trait FunctionMiddleware { type Error: Debug; - fn feed_event( + fn feed_event<'a, 'b: 'a>( &mut self, - op: Event, + op: Event<'a, 'b>, module_info: &ModuleInfo, - sink: &mut EventSink, + sink: &mut EventSink<'a, 'b>, ) -> Result<(), Self::Error>; } pub(crate) trait GenericFunctionMiddleware { - fn feed_event( + fn feed_event<'a, 'b: 'a>( &mut self, - op: Event, + op: Event<'a, 'b>, module_info: &ModuleInfo, - sink: &mut EventSink, + sink: &mut EventSink<'a, 'b>, ) -> Result<(), String>; } impl> GenericFunctionMiddleware for T { - fn feed_event( + fn feed_event<'a, 'b: 'a>( &mut self, - op: Event, + op: Event<'a, 'b>, module_info: &ModuleInfo, - sink: &mut EventSink, + sink: &mut EventSink<'a, 'b>, ) -> Result<(), String> { - ::feed_event(self, op, module_info, sink).map_err(|x| format!("{:?}", x)) + ::feed_event(self, op, module_info, sink) + .map_err(|x| format!("{:?}", x)) } } diff --git a/lib/runtime-core/src/lib.rs b/lib/runtime-core/src/lib.rs index d07af88c1..46c435db5 100644 --- a/lib/runtime-core/src/lib.rs +++ b/lib/runtime-core/src/lib.rs @@ -14,6 +14,7 @@ pub mod backend; mod backing; pub mod cache; +pub mod codegen; pub mod error; pub mod export; pub mod global; @@ -21,6 +22,7 @@ pub mod import; pub mod instance; pub mod memory; pub mod module; +pub mod parse; mod sig_registry; pub mod structures; mod sys; @@ -31,8 +33,6 @@ pub mod units; pub mod vm; #[doc(hidden)] pub mod vmcalls; -pub mod codegen; -pub mod parse; use self::error::CompileResult; #[doc(inline)] diff --git a/lib/runtime-core/src/parse.rs b/lib/runtime-core/src/parse.rs index 4c851d6df..550a1b94f 100644 --- a/lib/runtime-core/src/parse.rs +++ b/lib/runtime-core/src/parse.rs @@ -1,7 +1,7 @@ use crate::codegen::*; -use hashbrown::HashMap; use crate::{ backend::{Backend, CompilerConfig, RunnableModule}, + error::CompileError, module::{ DataInitializer, ExportIndex, ImportName, ModuleInfo, StringTable, StringTableBuilder, TableInitializer, @@ -13,14 +13,14 @@ use crate::{ TableIndex, Type, Value, }, units::Pages, - error::CompileError, }; +use hashbrown::HashMap; +use std::fmt::Debug; use wasmparser::{ BinaryReaderError, Data, DataKind, Element, ElementKind, Export, ExternalKind, FuncType, Import, ImportSectionEntryType, InitExpr, ModuleReader, Operator, SectionCode, Type as WpType, WasmDecoder, }; -use std::fmt::Debug; #[derive(Debug)] pub enum LoadError { @@ -122,7 +122,8 @@ pub fn read_module< let sigindex = SigIndex::new(sigindex as usize); info.imported_functions.push(import_name); info.func_assoc.push(sigindex); - mcg.feed_import_function().map_err(|x| LoadError::Codegen(format!("{:?}", x)))?; + mcg.feed_import_function() + .map_err(|x| LoadError::Codegen(format!("{:?}", x)))?; } ImportSectionEntryType::Table(table_ty) => { assert_eq!(table_ty.element_type, WpType::AnyFunc); @@ -192,13 +193,24 @@ pub fn read_module< if func_count == 0 { info.namespace_table = namespace_builder.take().unwrap().finish(); info.name_table = name_builder.take().unwrap().finish(); - mcg.feed_signatures(info.signatures.clone()).map_err(|x| LoadError::Codegen(format!("{:?}", x)))?; - mcg.feed_function_signatures(info.func_assoc.clone()).map_err(|x| LoadError::Codegen(format!("{:?}", x)))?; - mcg.check_precondition(&info).map_err(|x| LoadError::Codegen(format!("{:?}", x)))?; + mcg.feed_signatures(info.signatures.clone()) + .map_err(|x| LoadError::Codegen(format!("{:?}", x)))?; + mcg.feed_function_signatures(info.func_assoc.clone()) + .map_err(|x| LoadError::Codegen(format!("{:?}", x)))?; + mcg.check_precondition(&info) + .map_err(|x| LoadError::Codegen(format!("{:?}", x)))?; } - let fcg = mcg.next_function().map_err(|x| LoadError::Codegen(format!("{:?}", x)))?; - middlewares.run(Some(fcg), Event::Internal(InternalEvent::FunctionBegin), &info).map_err(|x| LoadError::Codegen(x))?; + let fcg = mcg + .next_function() + .map_err(|x| LoadError::Codegen(format!("{:?}", x)))?; + middlewares + .run( + Some(fcg), + Event::Internal(InternalEvent::FunctionBegin(id as u32)), + &info, + ) + .map_err(|x| LoadError::Codegen(x))?; let sig = info .signatures @@ -210,10 +222,12 @@ pub fn read_module< ) .unwrap(); for ret in sig.returns() { - fcg.feed_return(type_to_wp_type(*ret)).map_err(|x| LoadError::Codegen(format!("{:?}", x)))?; + fcg.feed_return(type_to_wp_type(*ret)) + .map_err(|x| LoadError::Codegen(format!("{:?}", x)))?; } for param in sig.params() { - fcg.feed_param(type_to_wp_type(*param)).map_err(|x| LoadError::Codegen(format!("{:?}", x)))?; + fcg.feed_param(type_to_wp_type(*param)) + .map_err(|x| LoadError::Codegen(format!("{:?}", x)))?; } let mut body_begun = false; @@ -224,22 +238,33 @@ pub fn read_module< ParserState::Error(err) => return Err(LoadError::Parse(err)), ParserState::FunctionBodyLocals { ref locals } => { for &(count, ty) in locals.iter() { - fcg.feed_local(ty, count as usize).map_err(|x| LoadError::Codegen(format!("{:?}", x)))?; + fcg.feed_local(ty, count as usize) + .map_err(|x| LoadError::Codegen(format!("{:?}", x)))?; } } ParserState::CodeOperator(ref op) => { if !body_begun { body_begun = true; - fcg.begin_body().map_err(|x| LoadError::Codegen(format!("{:?}", x)))?; + fcg.begin_body() + .map_err(|x| LoadError::Codegen(format!("{:?}", x)))?; } - middlewares.run(Some(fcg), Event::Wasm(op), &info).map_err(|x| LoadError::Codegen(x))?; + middlewares + .run(Some(fcg), Event::Wasm(op), &info) + .map_err(|x| LoadError::Codegen(x))?; } ParserState::EndFunctionBody => break, _ => unreachable!(), } } - middlewares.run(Some(fcg), Event::Internal(InternalEvent::FunctionEnd), &info).map_err(|x| LoadError::Codegen(x))?; - fcg.finalize().map_err(|x| LoadError::Codegen(format!("{:?}", x)))?; + middlewares + .run( + Some(fcg), + Event::Internal(InternalEvent::FunctionEnd), + &info, + ) + .map_err(|x| LoadError::Codegen(x))?; + fcg.finalize() + .map_err(|x| LoadError::Codegen(format!("{:?}", x)))?; } ParserState::BeginActiveElementSectionEntry(table_index) => { let table_index = TableIndex::new(table_index as usize); diff --git a/lib/runtime-core/src/vm.rs b/lib/runtime-core/src/vm.rs index a1e493f8c..7d9039b7d 100644 --- a/lib/runtime-core/src/vm.rs +++ b/lib/runtime-core/src/vm.rs @@ -22,7 +22,7 @@ pub struct Ctx { local_backing: *mut LocalBacking, import_backing: *mut ImportBacking, - pub(crate) module: *const ModuleInner, + pub module: *const ModuleInner, pub data: *mut c_void, pub data_finalizer: Option, diff --git a/lib/singlepass-backend/src/codegen_x64.rs b/lib/singlepass-backend/src/codegen_x64.rs index 0368bc04c..3c40d97d9 100644 --- a/lib/singlepass-backend/src/codegen_x64.rs +++ b/lib/singlepass-backend/src/codegen_x64.rs @@ -11,6 +11,7 @@ use std::ptr::NonNull; use std::{any::Any, collections::HashMap, sync::Arc}; use wasmer_runtime_core::{ backend::{Backend, RunnableModule}, + codegen::*, memory::MemoryType, module::ModuleInfo, structures::{Map, TypedIndex}, @@ -21,7 +22,6 @@ use wasmer_runtime_core::{ }, vm::{self, LocalGlobal, LocalMemory, LocalTable}, vmcalls, - codegen::*, }; use wasmparser::{Operator, Type as WpType}; @@ -135,6 +135,7 @@ pub struct X64FunctionCode { assembler: Option, function_labels: Option)>>, br_table_data: Option>>, + breakpoints: Option>>, returns: SmallVec<[WpType; 1]>, locals: Vec, num_params: usize, @@ -160,6 +161,7 @@ pub struct X64ExecutionContext { function_pointers: Vec, signatures: Arc>, _br_table_data: Vec>, + breakpoints: Arc>>, func_import_count: usize, } @@ -209,12 +211,18 @@ impl RunnableModule for X64ExecutionContext { user_error: *mut Option>, num_params_plus_one: Option>, ) -> bool { + let rm: &Box = &unsafe { &*(*ctx).module }.runnable_module; + let execution_context = unsafe { + ::std::mem::transmute_copy::<&dyn RunnableModule, &X64ExecutionContext>(&&**rm) + }; let args = ::std::slice::from_raw_parts( args, num_params_plus_one.unwrap().as_ptr() as usize - 1, ); let args_reverse: SmallVec<[u64; 8]> = args.iter().cloned().rev().collect(); - match protect_unix::call_protected(|| { + protect_unix::BKPT_MAP + .with(|x| x.borrow_mut().push(execution_context.breakpoints.clone())); + let ret = match protect_unix::call_protected(|| { CONSTRUCT_STACK_AND_CALL_WASM( args_reverse.as_ptr(), args_reverse.as_ptr().offset(args_reverse.len() as isize), @@ -235,7 +243,9 @@ impl RunnableModule for X64ExecutionContext { } false } - } + }; + protect_unix::BKPT_MAP.with(|x| x.borrow_mut().pop().unwrap()); + ret } unsafe extern "C" fn dummy_trampoline( @@ -267,7 +277,9 @@ pub struct CodegenError { pub message: &'static str, } -impl ModuleCodeGenerator for X64ModuleCodeGenerator { +impl ModuleCodeGenerator + for X64ModuleCodeGenerator +{ fn new() -> X64ModuleCodeGenerator { X64ModuleCodeGenerator { functions: vec![], @@ -288,18 +300,21 @@ impl ModuleCodeGenerator for } fn next_function(&mut self) -> Result<&mut X64FunctionCode, CodegenError> { - let (mut assembler, mut function_labels, br_table_data) = match self.functions.last_mut() { - Some(x) => ( - x.assembler.take().unwrap(), - x.function_labels.take().unwrap(), - x.br_table_data.take().unwrap(), - ), - None => ( - self.assembler.take().unwrap(), - self.function_labels.take().unwrap(), - vec![], - ), - }; + let (mut assembler, mut function_labels, br_table_data, breakpoints) = + match self.functions.last_mut() { + Some(x) => ( + x.assembler.take().unwrap(), + x.function_labels.take().unwrap(), + x.br_table_data.take().unwrap(), + x.breakpoints.take().unwrap(), + ), + None => ( + self.assembler.take().unwrap(), + self.function_labels.take().unwrap(), + vec![], + HashMap::new(), + ), + }; let begin_offset = assembler.offset(); let begin_label_info = function_labels .entry(self.functions.len() + self.func_import_count) @@ -320,6 +335,7 @@ impl ModuleCodeGenerator for assembler: Some(assembler), function_labels: Some(function_labels), br_table_data: Some(br_table_data), + breakpoints: Some(breakpoints), returns: smallvec![], locals: vec![], num_params: 0, @@ -334,8 +350,12 @@ impl ModuleCodeGenerator for } fn finalize(mut self, _: &ModuleInfo) -> Result { - let (assembler, mut br_table_data) = match self.functions.last_mut() { - Some(x) => (x.assembler.take().unwrap(), x.br_table_data.take().unwrap()), + let (assembler, mut br_table_data, breakpoints) = match self.functions.last_mut() { + Some(x) => ( + x.assembler.take().unwrap(), + x.br_table_data.take().unwrap(), + x.breakpoints.take().unwrap(), + ), None => { return Err(CodegenError { message: "no function", @@ -377,11 +397,19 @@ impl ModuleCodeGenerator for out_labels.push(FuncPtr(output.ptr(*offset) as _)); } + let breakpoints: Arc> = Arc::new( + breakpoints + .into_iter() + .map(|(offset, f)| (output.ptr(offset) as usize, f)) + .collect(), + ); + Ok(X64ExecutionContext { code: output, functions: self.functions, signatures: self.signatures.as_ref().unwrap().clone(), _br_table_data: br_table_data, + breakpoints: breakpoints, func_import_count: self.func_import_count, function_pointers: out_labels, }) @@ -1385,35 +1413,32 @@ impl FunctionCodeGenerator for X64FunctionCode { } fn feed_event(&mut self, ev: Event, module_info: &ModuleInfo) -> Result<(), CodegenError> { - let op = match ev { - Event::Wasm(x) => x, - Event::Internal(x) => { - return Ok(()); - } - }; //println!("{:?} {}", op, self.value_stack.len()); let was_unreachable; if self.unreachable_depth > 0 { was_unreachable = true; - match *op { - Operator::Block { .. } | Operator::Loop { .. } | Operator::If { .. } => { - self.unreachable_depth += 1; - } - Operator::End => { - self.unreachable_depth -= 1; - } - Operator::Else => { - // We are in a reachable true branch - if self.unreachable_depth == 1 { - if let Some(IfElseState::If(_)) = - self.control_stack.last().map(|x| x.if_else) - { - self.unreachable_depth -= 1; + + if let Event::Wasm(op) = ev { + match *op { + Operator::Block { .. } | Operator::Loop { .. } | Operator::If { .. } => { + self.unreachable_depth += 1; + } + Operator::End => { + self.unreachable_depth -= 1; + } + Operator::Else => { + // We are in a reachable true branch + if self.unreachable_depth == 1 { + if let Some(IfElseState::If(_)) = + self.control_stack.last().map(|x| x.if_else) + { + self.unreachable_depth -= 1; + } } } + _ => {} } - _ => {} } if self.unreachable_depth > 0 { return Ok(()); @@ -1423,6 +1448,24 @@ impl FunctionCodeGenerator for X64FunctionCode { } let a = self.assembler.as_mut().unwrap(); + + let op = match ev { + Event::Wasm(x) => x, + Event::Internal(x) => { + match x { + InternalEvent::Bkpt(callback) => { + a.emit_bkpt(); + self.breakpoints + .as_mut() + .unwrap() + .insert(a.get_offset(), callback); + } + InternalEvent::FunctionBegin(_) | InternalEvent::FunctionEnd => {} + _ => unimplemented!(), + } + return Ok(()); + } + }; match *op { Operator::GetGlobal { global_index } => { let global_index = global_index as usize; diff --git a/lib/singlepass-backend/src/emitter_x64.rs b/lib/singlepass-backend/src/emitter_x64.rs index 8a949f8a5..889b1099d 100644 --- a/lib/singlepass-backend/src/emitter_x64.rs +++ b/lib/singlepass-backend/src/emitter_x64.rs @@ -194,6 +194,8 @@ pub trait Emitter { fn emit_ret(&mut self); fn emit_call_label(&mut self, label: Self::Label); fn emit_call_location(&mut self, loc: Location); + + fn emit_bkpt(&mut self); } macro_rules! unop_gpr { @@ -947,4 +949,8 @@ impl Emitter for Assembler { _ => unreachable!(), } } + + fn emit_bkpt(&mut self) { + dynasm!(self ; int 0x3); + } } diff --git a/lib/singlepass-backend/src/lib.rs b/lib/singlepass-backend/src/lib.rs index 51415a69c..08d977487 100644 --- a/lib/singlepass-backend/src/lib.rs +++ b/lib/singlepass-backend/src/lib.rs @@ -23,8 +23,8 @@ mod emitter_x64; mod machine; mod protect_unix; -pub use codegen_x64::X64ModuleCodeGenerator as ModuleCodeGenerator; pub use codegen_x64::X64FunctionCode as FunctionCodeGenerator; +pub use codegen_x64::X64ModuleCodeGenerator as ModuleCodeGenerator; use wasmer_runtime_core::codegen::SimpleStreamingCompilerGen; pub type SinglePassCompiler = SimpleStreamingCompilerGen< @@ -32,4 +32,4 @@ pub type SinglePassCompiler = SimpleStreamingCompilerGen< codegen_x64::X64FunctionCode, codegen_x64::X64ExecutionContext, codegen_x64::CodegenError, ->; \ No newline at end of file +>; diff --git a/lib/singlepass-backend/src/protect_unix.rs b/lib/singlepass-backend/src/protect_unix.rs index 213db5f6a..b66c77b94 100644 --- a/lib/singlepass-backend/src/protect_unix.rs +++ b/lib/singlepass-backend/src/protect_unix.rs @@ -12,11 +12,15 @@ use libc::{c_int, c_void, siginfo_t}; use nix::sys::signal::{ sigaction, SaFlags, SigAction, SigHandler, SigSet, Signal, SIGBUS, SIGFPE, SIGILL, SIGSEGV, + SIGTRAP, }; use std::any::Any; -use std::cell::{Cell, UnsafeCell}; +use std::cell::{Cell, RefCell, UnsafeCell}; +use std::collections::HashMap; use std::ptr; +use std::sync::Arc; use std::sync::Once; +use wasmer_runtime_core::codegen::BkptInfo; use wasmer_runtime_core::typed_func::WasmTrapInfo; extern "C" fn signal_trap_handler( @@ -25,6 +29,20 @@ extern "C" fn signal_trap_handler( ucontext: *mut c_void, ) { unsafe { + match Signal::from_c_int(signum) { + Ok(SIGTRAP) => { + let (_, ip) = get_faulting_addr_and_ip(siginfo as _, ucontext); + let bkpt_map = BKPT_MAP.with(|x| x.borrow().last().map(|x| x.clone())); + if let Some(bkpt_map) = bkpt_map { + if let Some(ref x) = bkpt_map.get(&(ip as usize)) { + (x)(BkptInfo {}); + return; + } + } + } + _ => {} + } + do_unwind(signum, siginfo as _, ucontext); } } @@ -44,6 +62,7 @@ pub unsafe fn install_sighandler() { sigaction(SIGILL, &sa).unwrap(); sigaction(SIGSEGV, &sa).unwrap(); sigaction(SIGBUS, &sa).unwrap(); + sigaction(SIGTRAP, &sa).unwrap(); } const SETJMP_BUFFER_LEN: usize = 27; @@ -54,6 +73,7 @@ thread_local! { pub static CAUGHT_ADDRESSES: Cell<(*const c_void, *const c_void)> = Cell::new((ptr::null(), ptr::null())); pub static CURRENT_EXECUTABLE_BUFFER: Cell<*const c_void> = Cell::new(ptr::null()); pub static TRAP_EARLY_DATA: Cell>> = Cell::new(None); + pub static BKPT_MAP: RefCell>>>> = RefCell::new(Vec::new()); } pub unsafe fn trigger_trap() -> ! { From 18e6216b70c90bd0c5eeb2359f9c25be6de14c04 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Sat, 27 Apr 2019 09:21:31 -0700 Subject: [PATCH 323/413] Delete bin.rs --- examples/plugin-for-example/src/bin.rs | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 examples/plugin-for-example/src/bin.rs diff --git a/examples/plugin-for-example/src/bin.rs b/examples/plugin-for-example/src/bin.rs deleted file mode 100644 index 33da75f09..000000000 --- a/examples/plugin-for-example/src/bin.rs +++ /dev/null @@ -1,14 +0,0 @@ -extern "C" { - fn it_works() -> i32; -} - -#[no_mangle] -pub fn plugin_entrypoint(n: i32) -> i32 { - println!("It works from inside WASI"); - let result = unsafe { it_works() }; - result + n -} - -pub fn main() { - println!("hello"); -} From f2d9d22e9481f048e170ca8d26e4be71271b977d Mon Sep 17 00:00:00 2001 From: Syrus Date: Sat, 27 Apr 2019 12:40:49 -0700 Subject: [PATCH 324/413] Fixed wapm-cli git module url location --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index ea4c03efb..af96cdf0e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "wapm-cli"] path = wapm-cli - url = git@github.com:wasmerio/wapm-cli.git + url = https://github.com/wasmerio/wapm-cli.git From a4170d44956d418280299672a810a41d0c3724c1 Mon Sep 17 00:00:00 2001 From: Syrus Date: Sat, 27 Apr 2019 12:53:13 -0700 Subject: [PATCH 325/413] Improved fault debugging with emscripten --- lib/emscripten/src/lib.rs | 3 +++ lib/emscripten/src/memory.rs | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/lib/emscripten/src/lib.rs b/lib/emscripten/src/lib.rs index b3484770b..c41e4b96d 100644 --- a/lib/emscripten/src/lib.rs +++ b/lib/emscripten/src/lib.rs @@ -646,6 +646,9 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject "_emscripten_get_heap_size" => func!(crate::memory::_emscripten_get_heap_size), "_emscripten_resize_heap" => func!(crate::memory::_emscripten_resize_heap), "enlargeMemory" => func!(crate::memory::enlarge_memory), + "segfault" => func!(crate::memory::segfault), + "alignfault" => func!(crate::memory::alignfault), + "ftfault" => func!(crate::memory::ftfault), "getTotalMemory" => func!(crate::memory::get_total_memory), "___map_file" => func!(crate::memory::___map_file), diff --git a/lib/emscripten/src/memory.rs b/lib/emscripten/src/memory.rs index 9a0874015..1795dcae6 100644 --- a/lib/emscripten/src/memory.rs +++ b/lib/emscripten/src/memory.rs @@ -95,6 +95,24 @@ pub fn abort_on_cannot_grow_memory_old(ctx: &mut Ctx) -> u32 { 0 } +/// emscripten: segfault +pub fn segfault(ctx: &mut Ctx) { + debug!("emscripten::segfault"); + abort_with_message(ctx, "segmentation fault"); +} + +/// emscripten: alignfault +pub fn alignfault(ctx: &mut Ctx) { + debug!("emscripten::alignfault"); + abort_with_message(ctx, "alignment fault"); +} + +/// emscripten: ftfault +pub fn ftfault(ctx: &mut Ctx) { + debug!("emscripten::ftfault"); + abort_with_message(ctx, "Function table mask error"); +} + /// emscripten: ___map_file pub fn ___map_file(_ctx: &mut Ctx, _one: u32, _two: u32) -> c_int { debug!("emscripten::___map_file"); From 6beb76c3ae75df8f8db1d0096c633aaf7aa7bc85 Mon Sep 17 00:00:00 2001 From: losfair Date: Sun, 28 Apr 2019 12:48:01 +0800 Subject: [PATCH 326/413] Various cleanups. --- lib/middleware-common/src/call_trace.rs | 2 +- lib/middleware-common/src/lib.rs | 8 -------- lib/runtime-core/src/codegen.rs | 6 +++--- lib/singlepass-backend/src/codegen_x64.rs | 2 +- 4 files changed, 5 insertions(+), 13 deletions(-) diff --git a/lib/middleware-common/src/call_trace.rs b/lib/middleware-common/src/call_trace.rs index 2f0879ca6..3be25a67e 100644 --- a/lib/middleware-common/src/call_trace.rs +++ b/lib/middleware-common/src/call_trace.rs @@ -15,7 +15,7 @@ impl FunctionMiddleware for CallTrace { ) -> Result<(), Self::Error> { match op { Event::Internal(InternalEvent::FunctionBegin(id)) => { - sink.push(Event::Internal(InternalEvent::Bkpt(Box::new(move |_| { + sink.push(Event::Internal(InternalEvent::Breakpoint(Box::new(move |_| { println!("func ({})", id); })))) } diff --git a/lib/middleware-common/src/lib.rs b/lib/middleware-common/src/lib.rs index a61b6e1ec..10c8dfd37 100644 --- a/lib/middleware-common/src/lib.rs +++ b/lib/middleware-common/src/lib.rs @@ -1,9 +1 @@ pub mod call_trace; - -#[cfg(test)] -mod tests { - #[test] - fn it_works() { - assert_eq!(2 + 2, 4); - } -} diff --git a/lib/runtime-core/src/codegen.rs b/lib/runtime-core/src/codegen.rs index 4beb653d1..210a105be 100644 --- a/lib/runtime-core/src/codegen.rs +++ b/lib/runtime-core/src/codegen.rs @@ -21,7 +21,7 @@ pub enum Event<'a, 'b> { pub enum InternalEvent { FunctionBegin(u32), FunctionEnd, - Bkpt(Box), + Breakpoint(Box), SetInternal(u32), GetInternal(u32), } @@ -120,7 +120,7 @@ impl< impl CacheGen for Placeholder { fn generate_cache(&self) -> Result<(Box<[u8]>, Memory), CacheError> { Err(CacheError::Unknown( - "the singlepass backend doesn't support caching yet".to_string(), + "the streaming compiler API doesn't support caching yet".to_string(), )) } } @@ -148,7 +148,7 @@ impl< unsafe fn from_cache(&self, _artifact: Artifact, _: Token) -> Result { Err(CacheError::Unknown( - "the singlepass backend doesn't support caching yet".to_string(), + "the streaming compiler API doesn't support caching yet".to_string(), )) } } diff --git a/lib/singlepass-backend/src/codegen_x64.rs b/lib/singlepass-backend/src/codegen_x64.rs index 3c40d97d9..fb465c2a8 100644 --- a/lib/singlepass-backend/src/codegen_x64.rs +++ b/lib/singlepass-backend/src/codegen_x64.rs @@ -1453,7 +1453,7 @@ impl FunctionCodeGenerator for X64FunctionCode { Event::Wasm(x) => x, Event::Internal(x) => { match x { - InternalEvent::Bkpt(callback) => { + InternalEvent::Breakpoint(callback) => { a.emit_bkpt(); self.breakpoints .as_mut() From cf83a9785f1dfc841af88ae3114bdc8fa0b0a3b2 Mon Sep 17 00:00:00 2001 From: losfair Date: Sun, 28 Apr 2019 12:51:51 +0800 Subject: [PATCH 327/413] Print call trace to stderr. --- lib/middleware-common/src/call_trace.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/middleware-common/src/call_trace.rs b/lib/middleware-common/src/call_trace.rs index 3be25a67e..97a82354f 100644 --- a/lib/middleware-common/src/call_trace.rs +++ b/lib/middleware-common/src/call_trace.rs @@ -16,7 +16,7 @@ impl FunctionMiddleware for CallTrace { match op { Event::Internal(InternalEvent::FunctionBegin(id)) => { sink.push(Event::Internal(InternalEvent::Breakpoint(Box::new(move |_| { - println!("func ({})", id); + eprintln!("func ({})", id); })))) } _ => {} From 480308c62c3cf3daf645ba83cdc4b351b199c1dd Mon Sep 17 00:00:00 2001 From: losfair Date: Sun, 28 Apr 2019 12:54:45 +0800 Subject: [PATCH 328/413] Cargo fmt --- lib/middleware-common/src/call_trace.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/middleware-common/src/call_trace.rs b/lib/middleware-common/src/call_trace.rs index 97a82354f..3f856eacd 100644 --- a/lib/middleware-common/src/call_trace.rs +++ b/lib/middleware-common/src/call_trace.rs @@ -14,11 +14,11 @@ impl FunctionMiddleware for CallTrace { sink: &mut EventSink<'a, 'b>, ) -> Result<(), Self::Error> { match op { - Event::Internal(InternalEvent::FunctionBegin(id)) => { - sink.push(Event::Internal(InternalEvent::Breakpoint(Box::new(move |_| { + Event::Internal(InternalEvent::FunctionBegin(id)) => sink.push(Event::Internal( + InternalEvent::Breakpoint(Box::new(move |_| { eprintln!("func ({})", id); - })))) - } + })), + )), _ => {} } sink.push(op); From cb4c716ee5920b27b397b53da18018fb16a8f829 Mon Sep 17 00:00:00 2001 From: losfair Date: Sun, 28 Apr 2019 12:55:07 +0800 Subject: [PATCH 329/413] Update dependencies --- Cargo.lock | 10 +++++++++- Cargo.toml | 3 ++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9c2fd0078..bd04fc245 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2233,6 +2233,7 @@ dependencies = [ "wasmer-clif-backend 0.3.0", "wasmer-emscripten 0.3.0", "wasmer-llvm-backend 0.3.0", + "wasmer-middleware-common 0.3.0", "wasmer-runtime 0.3.0", "wasmer-runtime-abi 0.3.0", "wasmer-runtime-core 0.3.0", @@ -2302,6 +2303,13 @@ dependencies = [ "wasmparser 0.28.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "wasmer-middleware-common" +version = "0.3.0" +dependencies = [ + "wasmer-runtime-core 0.3.0", +] + [[package]] name = "wasmer-runtime" version = "0.3.0" @@ -2381,7 +2389,7 @@ dependencies = [ "nix 0.13.0 (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.3.0", - "wasmparser 0.28.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmparser 0.29.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index e71b90718..055d3768b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,6 +25,7 @@ wabt = "0.7.2" hashbrown = "0.1.8" wasmer-clif-backend = { path = "lib/clif-backend" } wasmer-singlepass-backend = { path = "lib/singlepass-backend", optional = true } +wasmer-middleware-common = { path = "lib/middleware-common" } wasmer-runtime = { path = "lib/runtime" } wasmer-runtime-abi = { path = "lib/runtime-abi", optional = true } wasmer-runtime-core = { path = "lib/runtime-core" } @@ -33,7 +34,7 @@ wasmer-llvm-backend = { path = "lib/llvm-backend", optional = true } wasmer-wasi = { path = "lib/wasi", optional = true } [workspace] -members = ["lib/clif-backend", "lib/singlepass-backend", "lib/runtime", "lib/runtime-abi", "lib/runtime-core", "lib/emscripten", "lib/spectests", "lib/win-exception-handler", "lib/runtime-c-api", "lib/llvm-backend", "lib/wasi"] +members = ["lib/clif-backend", "lib/singlepass-backend", "lib/runtime", "lib/runtime-abi", "lib/runtime-core", "lib/emscripten", "lib/spectests", "lib/win-exception-handler", "lib/runtime-c-api", "lib/llvm-backend", "lib/wasi", "lib/middleware-common"] [build-dependencies] wabt = "0.7.2" From 46fb72af9d3146dd87d5fb7d2a98c7212b3b3745 Mon Sep 17 00:00:00 2001 From: losfair Date: Sun, 28 Apr 2019 13:31:22 +0800 Subject: [PATCH 330/413] Add missing `.rev()` on parameter list and simulate "red zone". --- lib/singlepass-backend/src/codegen_x64.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/singlepass-backend/src/codegen_x64.rs b/lib/singlepass-backend/src/codegen_x64.rs index fb465c2a8..783ca13af 100644 --- a/lib/singlepass-backend/src/codegen_x64.rs +++ b/lib/singlepass-backend/src/codegen_x64.rs @@ -1063,7 +1063,7 @@ impl X64FunctionCode { let mut call_movs: Vec<(Location, GPR)> = vec![]; // Prepare register & stack parameters. - for (i, param) in params.iter().enumerate() { + for (i, param) in params.iter().enumerate().rev() { let loc = Machine::get_param_location(1 + i); match loc { Location::GPR(x) => { @@ -1396,6 +1396,8 @@ impl FunctionCodeGenerator for X64FunctionCode { .machine .init_locals(a, self.num_locals, self.num_params); + a.emit_sub(Size::S64, Location::Imm32(32), Location::GPR(GPR::RSP)); // simulate "red zone" if not supported by the platform + self.control_stack.push(ControlFrame { label: a.get_label(), loop_like: false, From 305e1801ffcfcfb1d42e3923aed671d188a2b89e Mon Sep 17 00:00:00 2001 From: losfair Date: Sun, 28 Apr 2019 15:38:18 +0800 Subject: [PATCH 331/413] Fix incomplete data section --- lib/runtime-core/src/parse.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/runtime-core/src/parse.rs b/lib/runtime-core/src/parse.rs index 8f8d2b37f..e8fabf194 100644 --- a/lib/runtime-core/src/parse.rs +++ b/lib/runtime-core/src/parse.rs @@ -314,7 +314,7 @@ pub fn read_module< base = Some(eval_init_expr(op)?) } ParserState::DataSectionEntryBodyChunk(chunk) => { - data = chunk.to_vec(); + data.extend_from_slice(chunk); } ParserState::BeginInitExpressionBody | ParserState::EndInitExpressionBody => {} From 53bebf9c7326ed466be27785842d743b20186755 Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Mon, 29 Apr 2019 00:13:34 -0500 Subject: [PATCH 332/413] Add initial progress to add LLVM to module refactor --- Cargo.lock | 8 +- lib/llvm-backend/Cargo.toml | 2 +- lib/llvm-backend/src/code.rs | 2248 +++++++++++++++++++++++++ lib/llvm-backend/src/lib.rs | 8 + lib/spectests/examples/simple/main.rs | 4 +- 5 files changed, 2260 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 03a29e4ee..7995d9aa6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2300,7 +2300,7 @@ dependencies = [ "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", "wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", "wasmer-runtime-core 0.3.0", - "wasmparser 0.28.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmparser 0.29.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2433,11 +2433,6 @@ name = "wasmparser" version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "wasmparser" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "wasmparser" version = "0.29.2" @@ -2832,7 +2827,6 @@ dependencies = [ "checksum walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "9d9d7ed3431229a144296213105a390676cc49c9b6a72bd19f3176c98e129fa1" "checksum want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "797464475f30ddb8830cc529aaaae648d581f99e2036a928877dfde027ddf6b3" "checksum wasmparser 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b5e01c420bc7d36e778bd242e1167b079562ba8b34087122cc9057187026d060" -"checksum wasmparser 0.28.0 (registry+https://github.com/rust-lang/crates.io-index)" = "40f426b1929bd26517fb10702e2a8e520d1845c49567aa4d244f426f10b206c1" "checksum wasmparser 0.29.2 (registry+https://github.com/rust-lang/crates.io-index)" = "981a8797cf89762e0233ec45fae731cb79a4dfaee12d9f0fe6cee01e4ac58d00" "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" diff --git a/lib/llvm-backend/Cargo.toml b/lib/llvm-backend/Cargo.toml index 944db6d41..c1a1cbbdc 100644 --- a/lib/llvm-backend/Cargo.toml +++ b/lib/llvm-backend/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" [dependencies] wasmer-runtime-core = { path = "../runtime-core", version = "0.3.0" } inkwell = { git = "https://github.com/wasmerio/inkwell", branch = "llvm7-0" } -wasmparser = "0.28.0" +wasmparser = "0.29.2" hashbrown = "0.1.8" smallvec = "0.6.8" goblin = "0.0.20" diff --git a/lib/llvm-backend/src/code.rs b/lib/llvm-backend/src/code.rs index 05cde0694..bc13bf281 100644 --- a/lib/llvm-backend/src/code.rs +++ b/lib/llvm-backend/src/code.rs @@ -8,7 +8,10 @@ use inkwell::{ AddressSpace, FloatPredicate, IntPredicate, }; use smallvec::SmallVec; +use std::{any::Any, collections::HashMap, sync::Arc}; use wasmer_runtime_core::{ + backend::Backend, + codegen::*, memory::MemoryType, module::ModuleInfo, structures::{Map, SliceMap, TypedIndex}, @@ -19,12 +22,14 @@ use wasmer_runtime_core::{ }; use wasmparser::{ BinaryReaderError, CodeSectionReader, LocalsReader, MemoryImmediate, Operator, OperatorsReader, + Type as WpType, }; use crate::intrinsics::{CtxType, GlobalCache, Intrinsics, MemoryCache}; use crate::read_info::type_to_type; use crate::state::{ControlFrame, IfElseState, State}; use crate::trampolines::generate_trampolines; +use crate::backend::LLVMBackend; fn func_sig_to_llvm(context: &Context, intrinsics: &Intrinsics, sig: &FuncSig) -> FunctionType { let user_param_types = sig.params().iter().map(|&ty| type_to_llvm(intrinsics, ty)); @@ -2460,3 +2465,2246 @@ fn resolve_memory_ptr( builder.build_int_add(mem_base_int, effective_offset, &state.var_name()); Ok(builder.build_int_to_ptr(effective_address_int, ptr_ty, &state.var_name())) } + +#[derive(Debug)] +pub struct CodegenError { + pub message: &'static str, +} + +pub struct LLVMModuleCodeGenerator { + context: Context, + builder: &'static Builder, + functions: Vec, + functions_llvm: &'static SliceMap, +// signatures: Option>>, + signatures: &'static SliceMap, + function_signatures: Option>>, + // function_labels: Option)>>, + // assembler: Option, + func_import_count: usize, + intrinsics: &'static Intrinsics, +// ctx: CtxType, +} + +// pub struct LLVMExecutionContext { +// // #[allow(dead_code)] +// // code: ExecutableBuffer, +// // #[allow(dead_code)] +// // functions: Vec, +// // function_pointers: Vec, +// // signatures: Arc>, +// // _br_table_data: Vec>, +// // breakpoints: Arc>>, +// // func_import_count: usize, +// } + +pub struct LLVMFunctionCodeGenerator { + state: State, + builder: &'static Builder, + context: &'static Context, + function: FunctionValue, + func_sig: &'static FuncSig, + intrinsics: &'static Intrinsics, + signatures: &'static SliceMap, + // signatures: Arc>, + + // function_signatures: Arc>, + + // assembler: Option, + // function_labels: Option)>>, + // br_table_data: Option>>, + // breakpoints: Option>>, + // returns: SmallVec<[WpType; 1]>, + locals: Vec, + // num_params: usize, + // num_locals: usize, + // value_stack: Vec<(Location, LocalOrTemp)>, + // control_stack: Vec, + // machine: Machine, + // unreachable_depth: usize, +} + +impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { + fn feed_return(&mut self, ty: WpType) -> Result<(), CodegenError> { + unimplemented!() + } + + fn feed_param(&mut self, ty: WpType) -> Result<(), CodegenError> { + unimplemented!() + } + + fn feed_local(&mut self, ty: WpType, n: usize) -> Result<(), CodegenError> { + unimplemented!() + } + + fn begin_body(&mut self) -> Result<(), CodegenError> { + unimplemented!() + } + + fn feed_event(&mut self, event: Event, module_info: &ModuleInfo) -> Result<(), CodegenError> { + +// let sig_index = info.func_assoc[func_index.convert_up(info)]; +// let func_sig = &info.signatures[sig_index]; +// +// let function = self.functions[func_index]; +// let mut state = State::new(); +// let entry_block = context.append_basic_block(&function, "entry"); +// +// let return_block = context.append_basic_block(&function, "return"); +// builder.position_at_end(&return_block); +// +// let phis: SmallVec<[PhiValue; 1]> = func_sig +// .returns() +// .iter() +// .map(|&wasmer_ty| type_to_llvm(intrinsics, wasmer_ty)) +// .map(|ty| builder.build_phi(ty, &state.var_name())) +// .collect(); +// +// state.push_block(return_block, phis); +// builder.position_at_end(&entry_block); +// +// let mut locals = Vec::with_capacity(locals_reader.get_count() as usize); // TODO fix capacity +// +// locals.extend( +// function +// .get_param_iter() +// .skip(1) +// .enumerate() +// .map(|(index, param)| { +// let ty = param.get_type(); +// +// let alloca = builder.build_alloca(ty, &format!("local{}", index)); +// builder.build_store(alloca, param); +// alloca +// }), +// ); +// +// let param_len = locals.len(); +// +// let mut local_idx = 0; +// for local in locals_reader.into_iter() { +// let (count, ty) = local?; +// let wasmer_ty = type_to_type(ty)?; +// let ty = type_to_llvm(intrinsics, wasmer_ty); +// +// let default_value = match wasmer_ty { +// Type::I32 => intrinsics.i32_zero.as_basic_value_enum(), +// Type::I64 => intrinsics.i64_zero.as_basic_value_enum(), +// Type::F32 => intrinsics.f32_zero.as_basic_value_enum(), +// Type::F64 => intrinsics.f64_zero.as_basic_value_enum(), +// }; +// +// for _ in 0..count { +// let alloca = builder.build_alloca(ty, &format!("local{}", param_len + local_idx)); +// +// builder.build_store(alloca, default_value); +// +// locals.push(alloca); +// local_idx += 1; +// } +// } +// +// let start_of_code_block = context.append_basic_block(&function, "start_of_code"); +// let entry_end_inst = builder.build_unconditional_branch(&start_of_code_block); +// builder.position_at_end(&start_of_code_block); +// +// let cache_builder = context.create_builder(); +// cache_builder.position_before(&entry_end_inst); + + + let mut state = &mut self.state; + let builder = self.builder; + let context = self.context; + let function = self.function; + let intrinsics = self.intrinsics; + let locals = &self.locals; + let info = module_info; + let signatures = self.signatures; + + + // TODO this should be done only once per function I believe + // just adding here to get compilation + let cache_builder = context.create_builder(); +// cache_builder.position_before(&entry_end_inst); + let mut ctx = intrinsics.ctx(info, builder, &function, cache_builder); +// self.ctx; + + + let op = match event { + Event::Wasm(x) => x, + Event::Internal(x) => { + unimplemented!() + } + }; + + let mut unreachable_depth = 0; + if !state.reachable { + match *op { + Operator::Block { ty: _ } | Operator::Loop { ty: _ } | Operator::If { ty: _ } => { + unreachable_depth += 1; +// continue; + return Ok(()); + } + Operator::Else => { + if unreachable_depth != 0 { + // continue; + return Ok(()); + } + } + Operator::End => { + if unreachable_depth != 0 { + unreachable_depth -= 1; + // continue; + return Ok(()); + } + } + _ => { + // continue; + return Ok(()); + } + } + } + + match *op { + /*************************** + * Control Flow instructions. + * https://github.com/sunfishcode/wasm-reference-manual/blob/master/WebAssembly.md#control-flow-instructions + ***************************/ + Operator::Block { ty } => { + let current_block = builder.get_insert_block().ok_or(BinaryReaderError { + message: "not currently in a block", + offset: -1isize as usize, + })?; + + let end_block = context.append_basic_block(&function, "end"); + builder.position_at_end(&end_block); + + let phis = if let Ok(wasmer_ty) = type_to_type(ty) { + let llvm_ty = type_to_llvm(intrinsics, wasmer_ty); + [llvm_ty] + .iter() + .map(|&ty| builder.build_phi(ty, &state.var_name())) + .collect() + } else { + SmallVec::new() + }; + + state.push_block(end_block, phis); + builder.position_at_end(¤t_block); + } + Operator::Loop { ty } => { + let loop_body = context.append_basic_block(&function, "loop_body"); + let loop_next = context.append_basic_block(&function, "loop_outer"); + + builder.build_unconditional_branch(&loop_body); + + builder.position_at_end(&loop_next); + let phis = if let Ok(wasmer_ty) = type_to_type(ty) { + let llvm_ty = type_to_llvm(intrinsics, wasmer_ty); + [llvm_ty] + .iter() + .map(|&ty| builder.build_phi(ty, &state.var_name())) + .collect() + } else { + SmallVec::new() + }; + + builder.position_at_end(&loop_body); + state.push_loop(loop_body, loop_next, phis); + } + Operator::Br { relative_depth } => { + let frame = state.frame_at_depth(relative_depth)?; + + let current_block = builder.get_insert_block().ok_or(BinaryReaderError { + message: "not currently in a block", + offset: -1isize as usize, + })?; + + let value_len = if frame.is_loop() { + 0 + } else { + frame.phis().len() + }; + + let values = state.peekn(value_len)?; + + // For each result of the block we're branching to, + // pop a value off the value stack and load it into + // the corresponding phi. + for (phi, value) in frame.phis().iter().zip(values.iter()) { + phi.add_incoming(&[(value, ¤t_block)]); + } + + builder.build_unconditional_branch(frame.br_dest()); + + state.popn(value_len)?; + state.reachable = false; + } + Operator::BrIf { relative_depth } => { + let cond = state.pop1()?; + let frame = state.frame_at_depth(relative_depth)?; + + let current_block = builder.get_insert_block().ok_or(BinaryReaderError { + message: "not currently in a block", + offset: -1isize as usize, + })?; + + let value_len = if frame.is_loop() { + 0 + } else { + frame.phis().len() + }; + + let param_stack = state.peekn(value_len)?; + + for (phi, value) in frame.phis().iter().zip(param_stack.iter()) { + phi.add_incoming(&[(value, ¤t_block)]); + } + + let else_block = context.append_basic_block(&function, "else"); + + let cond_value = builder.build_int_compare( + IntPredicate::NE, + cond.into_int_value(), + intrinsics.i32_zero, + &state.var_name(), + ); + builder.build_conditional_branch(cond_value, frame.br_dest(), &else_block); + builder.position_at_end(&else_block); + } + Operator::BrTable { ref table } => { + let current_block = builder.get_insert_block().ok_or(BinaryReaderError { + message: "not currently in a block", + offset: -1isize as usize, + })?; + + let (label_depths, default_depth) = table.read_table()?; + + let index = state.pop1()?; + + let default_frame = state.frame_at_depth(default_depth)?; + + let args = if default_frame.is_loop() { + &[] + } else { + let res_len = default_frame.phis().len(); + state.peekn(res_len)? + }; + + for (phi, value) in default_frame.phis().iter().zip(args.iter()) { + phi.add_incoming(&[(value, ¤t_block)]); + } + + let cases: Vec<_> = label_depths + .iter() + .enumerate() + .map(|(case_index, &depth)| { + let frame_result: Result<&ControlFrame, BinaryReaderError> = state.frame_at_depth(depth); + let frame = match frame_result { + Ok(v) => v, + Err(e) => return Err(e), + }; + let case_index_literal = + context.i32_type().const_int(case_index as u64, false); + + for (phi, value) in frame.phis().iter().zip(args.iter()) { + phi.add_incoming(&[(value, ¤t_block)]); + } + + Ok((case_index_literal, frame.br_dest())) + }) + .collect::>()?; + + builder.build_switch(index.into_int_value(), default_frame.br_dest(), &cases[..]); + + state.popn(args.len())?; + state.reachable = false; + } + Operator::If { ty } => { + let current_block = builder.get_insert_block().ok_or(BinaryReaderError { + message: "not currently in a block", + offset: -1isize as usize, + })?; + let if_then_block = context.append_basic_block(&function, "if_then"); + let if_else_block = context.append_basic_block(&function, "if_else"); + let end_block = context.append_basic_block(&function, "if_end"); + + let end_phis = { + builder.position_at_end(&end_block); + + let phis = if let Ok(wasmer_ty) = type_to_type(ty) { + let llvm_ty = type_to_llvm(intrinsics, wasmer_ty); + [llvm_ty] + .iter() + .map(|&ty| builder.build_phi(ty, &state.var_name())) + .collect() + } else { + SmallVec::new() + }; + + builder.position_at_end(¤t_block); + phis + }; + + let cond = state.pop1()?; + + let cond_value = builder.build_int_compare( + IntPredicate::NE, + cond.into_int_value(), + intrinsics.i32_zero, + &state.var_name(), + ); + + builder.build_conditional_branch(cond_value, &if_then_block, &if_else_block); + builder.position_at_end(&if_then_block); + state.push_if(if_then_block, if_else_block, end_block, end_phis); + } + Operator::Else => { + if state.reachable { + let frame = state.frame_at_depth(0)?; + builder.build_unconditional_branch(frame.code_after()); + let current_block = builder.get_insert_block().ok_or(BinaryReaderError { + message: "not currently in a block", + offset: -1isize as usize, + })?; + + for phi in frame.phis().to_vec().iter().rev() { + let value = state.pop1()?; + phi.add_incoming(&[(&value, ¤t_block)]) + } + } + + let (if_else_block, if_else_state) = if let ControlFrame::IfElse { + if_else, + if_else_state, + .. + } = state.frame_at_depth_mut(0)? + { + (if_else, if_else_state) + } else { + unreachable!() + }; + + *if_else_state = IfElseState::Else; + + builder.position_at_end(if_else_block); + state.reachable = true; + } + + Operator::End => { + let frame = state.pop_frame()?; + let current_block = builder.get_insert_block().ok_or(BinaryReaderError { + message: "not currently in a block", + offset: -1isize as usize, + })?; + + if state.reachable { + builder.build_unconditional_branch(frame.code_after()); + + for phi in frame.phis().iter().rev() { + let value = state.pop1()?; + phi.add_incoming(&[(&value, ¤t_block)]); + } + } + + if let ControlFrame::IfElse { + if_else, + next, + if_else_state, + .. + } = &frame + { + if let IfElseState::If = if_else_state { + builder.position_at_end(if_else); + builder.build_unconditional_branch(next); + } + } + + builder.position_at_end(frame.code_after()); + state.reset_stack(&frame); + + state.reachable = true; + + // Push each phi value to the value stack. + for phi in frame.phis() { + if phi.count_incoming() != 0 { + state.push1(phi.as_basic_value()); + } else { + let basic_ty = phi.as_basic_value().get_type(); + let placeholder_value = match basic_ty { + BasicTypeEnum::IntType(int_ty) => { + int_ty.const_int(0, false).as_basic_value_enum() + } + BasicTypeEnum::FloatType(float_ty) => { + float_ty.const_float(0.0).as_basic_value_enum() + } + _ => unimplemented!(), + }; + state.push1(placeholder_value); + phi.as_instruction().erase_from_basic_block(); + } + } + } + Operator::Return => { + let frame = state.outermost_frame()?; + let current_block = builder.get_insert_block().ok_or(BinaryReaderError { + message: "not currently in a block", + offset: -1isize as usize, + })?; + + builder.build_unconditional_branch(frame.br_dest()); + + let phis = frame.phis().to_vec(); + + for phi in phis.iter() { + let arg = state.pop1()?; + phi.add_incoming(&[(&arg, ¤t_block)]); + } + + state.reachable = false; + } + + Operator::Unreachable => { + // Emit an unreachable instruction. + // If llvm cannot prove that this is never touched, + // it will emit a `ud2` instruction on x86_64 arches. + + builder.build_call( + intrinsics.throw_trap, + &[intrinsics.trap_unreachable], + "throw", + ); + builder.build_unreachable(); + + state.reachable = false; + } + + /*************************** + * Basic instructions. + * https://github.com/sunfishcode/wasm-reference-manual/blob/master/WebAssembly.md#basic-instructions + ***************************/ + Operator::Nop => { + // Do nothing. + } + Operator::Drop => { + state.pop1()?; + } + + // Generate const values. + Operator::I32Const { value } => { + let i = intrinsics.i32_ty.const_int(value as u64, false); + state.push1(i); + } + Operator::I64Const { value } => { + let i = intrinsics.i64_ty.const_int(value as u64, false); + state.push1(i); + } + Operator::F32Const { value } => { + let bits = intrinsics.i32_ty.const_int(value.bits() as u64, false); + let space = + builder.build_alloca(intrinsics.f32_ty.as_basic_type_enum(), "const_space"); + let i32_space = + builder.build_pointer_cast(space, intrinsics.i32_ptr_ty, "i32_space"); + builder.build_store(i32_space, bits); + let f = builder.build_load(space, "f"); + state.push1(f); + } + Operator::F64Const { value } => { + let bits = intrinsics.i64_ty.const_int(value.bits(), false); + let space = + builder.build_alloca(intrinsics.f64_ty.as_basic_type_enum(), "const_space"); + let i64_space = + builder.build_pointer_cast(space, intrinsics.i64_ptr_ty, "i32_space"); + builder.build_store(i64_space, bits); + let f = builder.build_load(space, "f"); + state.push1(f); + } + + // Operate on locals. + Operator::GetLocal { local_index } => { + let pointer_value = locals[local_index as usize]; + let v = builder.build_load(pointer_value, &state.var_name()); + state.push1(v); + } + Operator::SetLocal { local_index } => { + let pointer_value = locals[local_index as usize]; + let v = state.pop1()?; + builder.build_store(pointer_value, v); + } + Operator::TeeLocal { local_index } => { + let pointer_value = locals[local_index as usize]; + let v = state.peek1()?; + builder.build_store(pointer_value, v); + } + + Operator::GetGlobal { global_index } => { + let index = GlobalIndex::new(global_index as usize); + let global_cache = ctx.global_cache(index); + match global_cache { + GlobalCache::Const { value } => { + state.push1(value); + } + GlobalCache::Mut { ptr_to_value } => { + let value = builder.build_load(ptr_to_value, "global_value"); + state.push1(value); + } + } + } + Operator::SetGlobal { global_index } => { + let value = state.pop1()?; + let index = GlobalIndex::new(global_index as usize); + let global_cache = ctx.global_cache(index); + match global_cache { + GlobalCache::Mut { ptr_to_value } => { + builder.build_store(ptr_to_value, value); + } + GlobalCache::Const { value: _ } => { + unreachable!("cannot set non-mutable globals") + } + } + } + + Operator::Select => { + let (v1, v2, cond) = state.pop3()?; + let cond_value = builder.build_int_compare( + IntPredicate::NE, + cond.into_int_value(), + intrinsics.i32_zero, + &state.var_name(), + ); + let res = builder.build_select(cond_value, v1, v2, &state.var_name()); + state.push1(res); + } + Operator::Call { function_index } => { + let func_index = FuncIndex::new(function_index as usize); + let sigindex = info.func_assoc[func_index]; + let llvm_sig = signatures[sigindex]; + let func_sig = &info.signatures[sigindex]; + + let call_site = match func_index.local_or_import(info) { + LocalOrImport::Local(local_func_index) => { + let params: Vec<_> = [ctx.basic()] + .iter() + .chain(state.peekn(func_sig.params().len())?.iter()) + .map(|v| *v) + .collect(); + + let func_ptr = ctx.local_func(local_func_index, llvm_sig); + + builder.build_call(func_ptr, ¶ms, &state.var_name()) + } + LocalOrImport::Import(import_func_index) => { + let (func_ptr_untyped, ctx_ptr) = ctx.imported_func(import_func_index); + let params: Vec<_> = [ctx_ptr.as_basic_value_enum()] + .iter() + .chain(state.peekn(func_sig.params().len())?.iter()) + .map(|v| *v) + .collect(); + + let func_ptr_ty = llvm_sig.ptr_type(AddressSpace::Generic); + + let func_ptr = builder.build_pointer_cast( + func_ptr_untyped, + func_ptr_ty, + "typed_func_ptr", + ); + + builder.build_call(func_ptr, ¶ms, &state.var_name()) + } + }; + + state.popn(func_sig.params().len())?; + + if let Some(basic_value) = call_site.try_as_basic_value().left() { + match func_sig.returns().len() { + 1 => state.push1(basic_value), + count @ _ => { + // This is a multi-value return. + let struct_value = basic_value.into_struct_value(); + for i in 0..(count as u32) { + let value = builder + .build_extract_value(struct_value, i, &state.var_name()) + .unwrap(); + state.push1(value); + } + } + } + } + } + Operator::CallIndirect { index, table_index } => { + let sig_index = SigIndex::new(index as usize); + let expected_dynamic_sigindex = ctx.dynamic_sigindex(sig_index); + let (table_base, table_bound) = ctx.table(TableIndex::new(table_index as usize)); + let func_index = state.pop1()?.into_int_value(); + + // We assume the table has the `anyfunc` element type. + let casted_table_base = builder.build_pointer_cast( + table_base, + intrinsics.anyfunc_ty.ptr_type(AddressSpace::Generic), + "casted_table_base", + ); + + let anyfunc_struct_ptr = unsafe { + builder.build_in_bounds_gep( + casted_table_base, + &[func_index], + "anyfunc_struct_ptr", + ) + }; + + // Load things from the anyfunc data structure. + let (func_ptr, ctx_ptr, found_dynamic_sigindex) = unsafe { + ( + builder + .build_load( + builder.build_struct_gep(anyfunc_struct_ptr, 0, "func_ptr_ptr"), + "func_ptr", + ) + .into_pointer_value(), + builder.build_load( + builder.build_struct_gep(anyfunc_struct_ptr, 1, "ctx_ptr_ptr"), + "ctx_ptr", + ), + builder + .build_load( + builder.build_struct_gep(anyfunc_struct_ptr, 2, "sigindex_ptr"), + "sigindex", + ) + .into_int_value(), + ) + }; + + let truncated_table_bounds = builder.build_int_truncate( + table_bound, + intrinsics.i32_ty, + "truncated_table_bounds", + ); + + // First, check if the index is outside of the table bounds. + let index_in_bounds = builder.build_int_compare( + IntPredicate::ULT, + func_index, + truncated_table_bounds, + "index_in_bounds", + ); + + let index_in_bounds = builder + .build_call( + intrinsics.expect_i1, + &[ + index_in_bounds.as_basic_value_enum(), + intrinsics.i1_ty.const_int(1, false).as_basic_value_enum(), + ], + "index_in_bounds_expect", + ) + .try_as_basic_value() + .left() + .unwrap() + .into_int_value(); + + let in_bounds_continue_block = + context.append_basic_block(&function, "in_bounds_continue_block"); + let not_in_bounds_block = + context.append_basic_block(&function, "not_in_bounds_block"); + builder.build_conditional_branch( + index_in_bounds, + &in_bounds_continue_block, + ¬_in_bounds_block, + ); + builder.position_at_end(¬_in_bounds_block); + builder.build_call( + intrinsics.throw_trap, + &[intrinsics.trap_call_indirect_oob], + "throw", + ); + builder.build_unreachable(); + builder.position_at_end(&in_bounds_continue_block); + + // Next, check if the signature id is correct. + + let sigindices_equal = builder.build_int_compare( + IntPredicate::EQ, + expected_dynamic_sigindex, + found_dynamic_sigindex, + "sigindices_equal", + ); + + // Tell llvm that `expected_dynamic_sigindex` should equal `found_dynamic_sigindex`. + let sigindices_equal = builder + .build_call( + intrinsics.expect_i1, + &[ + sigindices_equal.as_basic_value_enum(), + intrinsics.i1_ty.const_int(1, false).as_basic_value_enum(), + ], + "sigindices_equal_expect", + ) + .try_as_basic_value() + .left() + .unwrap() + .into_int_value(); + + let continue_block = context.append_basic_block(&function, "continue_block"); + let sigindices_notequal_block = + context.append_basic_block(&function, "sigindices_notequal_block"); + builder.build_conditional_branch( + sigindices_equal, + &continue_block, + &sigindices_notequal_block, + ); + + builder.position_at_end(&sigindices_notequal_block); + builder.build_call( + intrinsics.throw_trap, + &[intrinsics.trap_call_indirect_sig], + "throw", + ); + builder.build_unreachable(); + builder.position_at_end(&continue_block); + + let wasmer_fn_sig = &info.signatures[sig_index]; + let fn_ty = signatures[sig_index]; + + let pushed_args = state.popn_save(wasmer_fn_sig.params().len())?; + + let args: Vec<_> = std::iter::once(ctx_ptr) + .chain(pushed_args.into_iter()) + .collect(); + + let typed_func_ptr = builder.build_pointer_cast( + func_ptr, + fn_ty.ptr_type(AddressSpace::Generic), + "typed_func_ptr", + ); + + let call_site = builder.build_call(typed_func_ptr, &args, "indirect_call"); + + match wasmer_fn_sig.returns() { + [] => {} + [_] => { + let value = call_site.try_as_basic_value().left().unwrap(); + state.push1(value); + } + _ => unimplemented!("multi-value returns"), + } + } + + /*************************** + * Integer Arithmetic instructions. + * https://github.com/sunfishcode/wasm-reference-manual/blob/master/WebAssembly.md#integer-arithmetic-instructions + ***************************/ + Operator::I32Add | Operator::I64Add => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); + let res = builder.build_int_add(v1, v2, &state.var_name()); + state.push1(res); + } + Operator::I32Sub | Operator::I64Sub => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); + let res = builder.build_int_sub(v1, v2, &state.var_name()); + state.push1(res); + } + Operator::I32Mul | Operator::I64Mul => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); + let res = builder.build_int_mul(v1, v2, &state.var_name()); + state.push1(res); + } + Operator::I32DivS | Operator::I64DivS => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); + + trap_if_zero_or_overflow(builder, intrinsics, context, &function, v1, v2); + + let res = builder.build_int_signed_div(v1, v2, &state.var_name()); + state.push1(res); + } + Operator::I32DivU | Operator::I64DivU => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); + + trap_if_zero(builder, intrinsics, context, &function, v2); + + let res = builder.build_int_unsigned_div(v1, v2, &state.var_name()); + state.push1(res); + } + Operator::I32RemS | Operator::I64RemS => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); + + trap_if_zero(builder, intrinsics, context, &function, v2); + + let res = builder.build_int_signed_rem(v1, v2, &state.var_name()); + state.push1(res); + } + Operator::I32RemU | Operator::I64RemU => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); + + trap_if_zero(builder, intrinsics, context, &function, v2); + + let res = builder.build_int_unsigned_rem(v1, v2, &state.var_name()); + state.push1(res); + } + Operator::I32And | Operator::I64And => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); + let res = builder.build_and(v1, v2, &state.var_name()); + state.push1(res); + } + Operator::I32Or | Operator::I64Or => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); + let res = builder.build_or(v1, v2, &state.var_name()); + state.push1(res); + } + Operator::I32Xor | Operator::I64Xor => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); + let res = builder.build_xor(v1, v2, &state.var_name()); + state.push1(res); + } + Operator::I32Shl | Operator::I64Shl => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); + let res = builder.build_left_shift(v1, v2, &state.var_name()); + state.push1(res); + } + Operator::I32ShrS | Operator::I64ShrS => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); + let res = builder.build_right_shift(v1, v2, true, &state.var_name()); + state.push1(res); + } + Operator::I32ShrU | Operator::I64ShrU => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); + let res = builder.build_right_shift(v1, v2, false, &state.var_name()); + state.push1(res); + } + Operator::I32Rotl => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); + let lhs = builder.build_left_shift(v1, v2, &state.var_name()); + let rhs = { + let int_width = intrinsics.i32_ty.const_int(32 as u64, false); + let rhs = builder.build_int_sub(int_width, v2, &state.var_name()); + builder.build_right_shift(v1, rhs, false, &state.var_name()) + }; + let res = builder.build_or(lhs, rhs, &state.var_name()); + state.push1(res); + } + Operator::I64Rotl => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); + let lhs = builder.build_left_shift(v1, v2, &state.var_name()); + let rhs = { + let int_width = intrinsics.i64_ty.const_int(64 as u64, false); + let rhs = builder.build_int_sub(int_width, v2, &state.var_name()); + builder.build_right_shift(v1, rhs, false, &state.var_name()) + }; + let res = builder.build_or(lhs, rhs, &state.var_name()); + state.push1(res); + } + Operator::I32Rotr => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); + let lhs = builder.build_right_shift(v1, v2, false, &state.var_name()); + let rhs = { + let int_width = intrinsics.i32_ty.const_int(32 as u64, false); + let rhs = builder.build_int_sub(int_width, v2, &state.var_name()); + builder.build_left_shift(v1, rhs, &state.var_name()) + }; + let res = builder.build_or(lhs, rhs, &state.var_name()); + state.push1(res); + } + Operator::I64Rotr => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); + let lhs = builder.build_right_shift(v1, v2, false, &state.var_name()); + let rhs = { + let int_width = intrinsics.i64_ty.const_int(64 as u64, false); + let rhs = builder.build_int_sub(int_width, v2, &state.var_name()); + builder.build_left_shift(v1, rhs, &state.var_name()) + }; + let res = builder.build_or(lhs, rhs, &state.var_name()); + state.push1(res); + } + Operator::I32Clz => { + let input = state.pop1()?; + let ensure_defined_zero = intrinsics + .i1_ty + .const_int(1 as u64, false) + .as_basic_value_enum(); + let res = builder + .build_call( + intrinsics.ctlz_i32, + &[input, ensure_defined_zero], + &state.var_name(), + ) + .try_as_basic_value() + .left() + .unwrap(); + state.push1(res); + } + Operator::I64Clz => { + let input = state.pop1()?; + let ensure_defined_zero = intrinsics + .i1_ty + .const_int(1 as u64, false) + .as_basic_value_enum(); + let res = builder + .build_call( + intrinsics.ctlz_i64, + &[input, ensure_defined_zero], + &state.var_name(), + ) + .try_as_basic_value() + .left() + .unwrap(); + state.push1(res); + } + Operator::I32Ctz => { + let input = state.pop1()?; + let ensure_defined_zero = intrinsics + .i1_ty + .const_int(1 as u64, false) + .as_basic_value_enum(); + let res = builder + .build_call( + intrinsics.cttz_i32, + &[input, ensure_defined_zero], + &state.var_name(), + ) + .try_as_basic_value() + .left() + .unwrap(); + state.push1(res); + } + Operator::I64Ctz => { + let input = state.pop1()?; + let ensure_defined_zero = intrinsics + .i1_ty + .const_int(1 as u64, false) + .as_basic_value_enum(); + let res = builder + .build_call( + intrinsics.cttz_i64, + &[input, ensure_defined_zero], + &state.var_name(), + ) + .try_as_basic_value() + .left() + .unwrap(); + state.push1(res); + } + Operator::I32Popcnt => { + let input = state.pop1()?; + let res = builder + .build_call(intrinsics.ctpop_i32, &[input], &state.var_name()) + .try_as_basic_value() + .left() + .unwrap(); + state.push1(res); + } + Operator::I64Popcnt => { + let input = state.pop1()?; + let res = builder + .build_call(intrinsics.ctpop_i64, &[input], &state.var_name()) + .try_as_basic_value() + .left() + .unwrap(); + state.push1(res); + } + Operator::I32Eqz => { + let input = state.pop1()?.into_int_value(); + let cond = builder.build_int_compare( + IntPredicate::EQ, + input, + intrinsics.i32_zero, + &state.var_name(), + ); + let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); + state.push1(res); + } + Operator::I64Eqz => { + let input = state.pop1()?.into_int_value(); + let cond = builder.build_int_compare( + IntPredicate::EQ, + input, + intrinsics.i64_zero, + &state.var_name(), + ); + let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); + state.push1(res); + } + + /*************************** + * Floating-Point Arithmetic instructions. + * https://github.com/sunfishcode/wasm-reference-manual/blob/master/WebAssembly.md#floating-point-arithmetic-instructions + ***************************/ + Operator::F32Add | Operator::F64Add => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_float_value(), v2.into_float_value()); + let res = builder.build_float_add(v1, v2, &state.var_name()); + state.push1(res); + } + Operator::F32Sub | Operator::F64Sub => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_float_value(), v2.into_float_value()); + let res = builder.build_float_sub(v1, v2, &state.var_name()); + state.push1(res); + } + Operator::F32Mul | Operator::F64Mul => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_float_value(), v2.into_float_value()); + let res = builder.build_float_mul(v1, v2, &state.var_name()); + state.push1(res); + } + Operator::F32Div | Operator::F64Div => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_float_value(), v2.into_float_value()); + let res = builder.build_float_div(v1, v2, &state.var_name()); + state.push1(res); + } + Operator::F32Sqrt => { + let input = state.pop1()?; + let res = builder + .build_call(intrinsics.sqrt_f32, &[input], &state.var_name()) + .try_as_basic_value() + .left() + .unwrap(); + state.push1(res); + } + Operator::F64Sqrt => { + let input = state.pop1()?; + let res = builder + .build_call(intrinsics.sqrt_f64, &[input], &state.var_name()) + .try_as_basic_value() + .left() + .unwrap(); + state.push1(res); + } + Operator::F32Min => { + let (v1, v2) = state.pop2()?; + let res = builder + .build_call(intrinsics.minimum_f32, &[v1, v2], &state.var_name()) + .try_as_basic_value() + .left() + .unwrap(); + state.push1(res); + } + Operator::F64Min => { + let (v1, v2) = state.pop2()?; + let res = builder + .build_call(intrinsics.minimum_f64, &[v1, v2], &state.var_name()) + .try_as_basic_value() + .left() + .unwrap(); + state.push1(res); + } + Operator::F32Max => { + let (v1, v2) = state.pop2()?; + let res = builder + .build_call(intrinsics.maximum_f32, &[v1, v2], &state.var_name()) + .try_as_basic_value() + .left() + .unwrap(); + state.push1(res); + } + Operator::F64Max => { + let (v1, v2) = state.pop2()?; + let res = builder + .build_call(intrinsics.maximum_f64, &[v1, v2], &state.var_name()) + .try_as_basic_value() + .left() + .unwrap(); + state.push1(res); + } + Operator::F32Ceil => { + let input = state.pop1()?; + let res = builder + .build_call(intrinsics.ceil_f32, &[input], &state.var_name()) + .try_as_basic_value() + .left() + .unwrap(); + state.push1(res); + } + Operator::F64Ceil => { + let input = state.pop1()?; + let res = builder + .build_call(intrinsics.ceil_f64, &[input], &state.var_name()) + .try_as_basic_value() + .left() + .unwrap(); + state.push1(res); + } + Operator::F32Floor => { + let input = state.pop1()?; + let res = builder + .build_call(intrinsics.floor_f32, &[input], &state.var_name()) + .try_as_basic_value() + .left() + .unwrap(); + state.push1(res); + } + Operator::F64Floor => { + let input = state.pop1()?; + let res = builder + .build_call(intrinsics.floor_f64, &[input], &state.var_name()) + .try_as_basic_value() + .left() + .unwrap(); + state.push1(res); + } + Operator::F32Trunc => { + let input = state.pop1()?; + let res = builder + .build_call(intrinsics.trunc_f32, &[input], &state.var_name()) + .try_as_basic_value() + .left() + .unwrap(); + state.push1(res); + } + Operator::F64Trunc => { + let input = state.pop1()?; + let res = builder + .build_call(intrinsics.trunc_f64, &[input], &state.var_name()) + .try_as_basic_value() + .left() + .unwrap(); + state.push1(res); + } + Operator::F32Nearest => { + let input = state.pop1()?; + let res = builder + .build_call(intrinsics.nearbyint_f32, &[input], &state.var_name()) + .try_as_basic_value() + .left() + .unwrap(); + state.push1(res); + } + Operator::F64Nearest => { + let input = state.pop1()?; + let res = builder + .build_call(intrinsics.nearbyint_f64, &[input], &state.var_name()) + .try_as_basic_value() + .left() + .unwrap(); + state.push1(res); + } + Operator::F32Abs => { + let input = state.pop1()?; + let res = builder + .build_call(intrinsics.fabs_f32, &[input], &state.var_name()) + .try_as_basic_value() + .left() + .unwrap(); + state.push1(res); + } + Operator::F64Abs => { + let input = state.pop1()?; + let res = builder + .build_call(intrinsics.fabs_f64, &[input], &state.var_name()) + .try_as_basic_value() + .left() + .unwrap(); + state.push1(res); + } + Operator::F32Neg | Operator::F64Neg => { + let input = state.pop1()?.into_float_value(); + let res = builder.build_float_neg(input, &state.var_name()); + state.push1(res); + } + Operator::F32Copysign => { + let (mag, sgn) = state.pop2()?; + let res = builder + .build_call(intrinsics.copysign_f32, &[mag, sgn], &state.var_name()) + .try_as_basic_value() + .left() + .unwrap(); + state.push1(res); + } + Operator::F64Copysign => { + let (msg, sgn) = state.pop2()?; + let res = builder + .build_call(intrinsics.copysign_f64, &[msg, sgn], &state.var_name()) + .try_as_basic_value() + .left() + .unwrap(); + state.push1(res); + } + + /*************************** + * Integer Comparison instructions. + * https://github.com/sunfishcode/wasm-reference-manual/blob/master/WebAssembly.md#integer-comparison-instructions + ***************************/ + Operator::I32Eq | Operator::I64Eq => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); + let cond = builder.build_int_compare(IntPredicate::EQ, v1, v2, &state.var_name()); + let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); + state.push1(res); + } + Operator::I32Ne | Operator::I64Ne => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); + let cond = builder.build_int_compare(IntPredicate::NE, v1, v2, &state.var_name()); + let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); + state.push1(res); + } + Operator::I32LtS | Operator::I64LtS => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); + let cond = builder.build_int_compare(IntPredicate::SLT, v1, v2, &state.var_name()); + let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); + state.push1(res); + } + Operator::I32LtU | Operator::I64LtU => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); + let cond = builder.build_int_compare(IntPredicate::ULT, v1, v2, &state.var_name()); + let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); + state.push1(res); + } + Operator::I32LeS | Operator::I64LeS => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); + let cond = builder.build_int_compare(IntPredicate::SLE, v1, v2, &state.var_name()); + let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); + state.push1(res); + } + Operator::I32LeU | Operator::I64LeU => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); + let cond = builder.build_int_compare(IntPredicate::ULE, v1, v2, &state.var_name()); + let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); + state.push1(res); + } + Operator::I32GtS | Operator::I64GtS => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); + let cond = builder.build_int_compare(IntPredicate::SGT, v1, v2, &state.var_name()); + let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); + state.push1(res); + } + Operator::I32GtU | Operator::I64GtU => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); + let cond = builder.build_int_compare(IntPredicate::UGT, v1, v2, &state.var_name()); + let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); + state.push1(res); + } + Operator::I32GeS | Operator::I64GeS => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); + let cond = builder.build_int_compare(IntPredicate::SGE, v1, v2, &state.var_name()); + let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); + state.push1(res); + } + Operator::I32GeU | Operator::I64GeU => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); + let cond = builder.build_int_compare(IntPredicate::UGE, v1, v2, &state.var_name()); + let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); + state.push1(res); + } + + /*************************** + * Floating-Point Comparison instructions. + * https://github.com/sunfishcode/wasm-reference-manual/blob/master/WebAssembly.md#floating-point-comparison-instructions + ***************************/ + Operator::F32Eq | Operator::F64Eq => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_float_value(), v2.into_float_value()); + let cond = + builder.build_float_compare(FloatPredicate::OEQ, v1, v2, &state.var_name()); + let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); + state.push1(res); + } + Operator::F32Ne | Operator::F64Ne => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_float_value(), v2.into_float_value()); + let cond = + builder.build_float_compare(FloatPredicate::UNE, v1, v2, &state.var_name()); + let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); + state.push1(res); + } + Operator::F32Lt | Operator::F64Lt => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_float_value(), v2.into_float_value()); + let cond = + builder.build_float_compare(FloatPredicate::OLT, v1, v2, &state.var_name()); + let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); + state.push1(res); + } + Operator::F32Le | Operator::F64Le => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_float_value(), v2.into_float_value()); + let cond = + builder.build_float_compare(FloatPredicate::OLE, v1, v2, &state.var_name()); + let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); + state.push1(res); + } + Operator::F32Gt | Operator::F64Gt => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_float_value(), v2.into_float_value()); + let cond = + builder.build_float_compare(FloatPredicate::OGT, v1, v2, &state.var_name()); + let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); + state.push1(res); + } + Operator::F32Ge | Operator::F64Ge => { + let (v1, v2) = state.pop2()?; + let (v1, v2) = (v1.into_float_value(), v2.into_float_value()); + let cond = + builder.build_float_compare(FloatPredicate::OGE, v1, v2, &state.var_name()); + let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); + state.push1(res); + } + + /*************************** + * Conversion instructions. + * https://github.com/sunfishcode/wasm-reference-manual/blob/master/WebAssembly.md#conversion-instructions + ***************************/ + Operator::I32WrapI64 => { + let v1 = state.pop1()?.into_int_value(); + let res = builder.build_int_truncate(v1, intrinsics.i32_ty, &state.var_name()); + state.push1(res); + } + Operator::I64ExtendSI32 => { + let v1 = state.pop1()?.into_int_value(); + let res = builder.build_int_s_extend(v1, intrinsics.i64_ty, &state.var_name()); + state.push1(res); + } + Operator::I64ExtendUI32 => { + let v1 = state.pop1()?.into_int_value(); + let res = builder.build_int_z_extend(v1, intrinsics.i64_ty, &state.var_name()); + state.push1(res); + } + Operator::I32TruncSF32 => { + let v1 = state.pop1()?.into_float_value(); + trap_if_not_representatable_as_int( + builder, + intrinsics, + context, + &function, + -2147483904.0, + 2147483648.0, + v1, + ); + let res = + builder.build_float_to_signed_int(v1, intrinsics.i32_ty, &state.var_name()); + state.push1(res); + } + Operator::I32TruncSF64 => { + let v1 = state.pop1()?.into_float_value(); + trap_if_not_representatable_as_int( + builder, + intrinsics, + context, + &function, + -2147483649.0, + 2147483648.0, + v1, + ); + let res = + builder.build_float_to_signed_int(v1, intrinsics.i32_ty, &state.var_name()); + state.push1(res); + } + Operator::I32TruncSSatF32 | Operator::I32TruncSSatF64 => { + let v1 = state.pop1()?.into_float_value(); + let res = + builder.build_float_to_signed_int(v1, intrinsics.i32_ty, &state.var_name()); + state.push1(res); + } + Operator::I64TruncSF32 => { + let v1 = state.pop1()?.into_float_value(); + trap_if_not_representatable_as_int( + builder, + intrinsics, + context, + &function, + -9223373136366403584.0, + 9223372036854775808.0, + v1, + ); + let res = + builder.build_float_to_signed_int(v1, intrinsics.i64_ty, &state.var_name()); + state.push1(res); + } + Operator::I64TruncSF64 => { + let v1 = state.pop1()?.into_float_value(); + trap_if_not_representatable_as_int( + builder, + intrinsics, + context, + &function, + -9223372036854777856.0, + 9223372036854775808.0, + v1, + ); + let res = + builder.build_float_to_signed_int(v1, intrinsics.i64_ty, &state.var_name()); + state.push1(res); + } + Operator::I64TruncSSatF32 | Operator::I64TruncSSatF64 => { + let v1 = state.pop1()?.into_float_value(); + let res = + builder.build_float_to_signed_int(v1, intrinsics.i64_ty, &state.var_name()); + state.push1(res); + } + Operator::I32TruncUF32 => { + let v1 = state.pop1()?.into_float_value(); + trap_if_not_representatable_as_int( + builder, + intrinsics, + context, + &function, + -1.0, + 4294967296.0, + v1, + ); + let res = + builder.build_float_to_unsigned_int(v1, intrinsics.i32_ty, &state.var_name()); + state.push1(res); + } + Operator::I32TruncUF64 => { + let v1 = state.pop1()?.into_float_value(); + trap_if_not_representatable_as_int( + builder, + intrinsics, + context, + &function, + -1.0, + 4294967296.0, + v1, + ); + let res = + builder.build_float_to_unsigned_int(v1, intrinsics.i32_ty, &state.var_name()); + state.push1(res); + } + Operator::I32TruncUSatF32 | Operator::I32TruncUSatF64 => { + let v1 = state.pop1()?.into_float_value(); + let res = + builder.build_float_to_unsigned_int(v1, intrinsics.i32_ty, &state.var_name()); + state.push1(res); + } + Operator::I64TruncUF32 => { + let v1 = state.pop1()?.into_float_value(); + trap_if_not_representatable_as_int( + builder, + intrinsics, + context, + &function, + -1.0, + 18446744073709551616.0, + v1, + ); + let res = + builder.build_float_to_unsigned_int(v1, intrinsics.i64_ty, &state.var_name()); + state.push1(res); + } + Operator::I64TruncUF64 => { + let v1 = state.pop1()?.into_float_value(); + trap_if_not_representatable_as_int( + builder, + intrinsics, + context, + &function, + -1.0, + 18446744073709551616.0, + v1, + ); + let res = + builder.build_float_to_unsigned_int(v1, intrinsics.i64_ty, &state.var_name()); + state.push1(res); + } + Operator::I64TruncUSatF32 | Operator::I64TruncUSatF64 => { + let v1 = state.pop1()?.into_float_value(); + let res = + builder.build_float_to_unsigned_int(v1, intrinsics.i64_ty, &state.var_name()); + state.push1(res); + } + Operator::F32DemoteF64 => { + let v1 = state.pop1()?.into_float_value(); + let res = builder.build_float_trunc(v1, intrinsics.f32_ty, &state.var_name()); + state.push1(res); + } + Operator::F64PromoteF32 => { + let v1 = state.pop1()?.into_float_value(); + let res = builder.build_float_ext(v1, intrinsics.f64_ty, &state.var_name()); + state.push1(res); + } + Operator::F32ConvertSI32 | Operator::F32ConvertSI64 => { + let v1 = state.pop1()?.into_int_value(); + let res = + builder.build_signed_int_to_float(v1, intrinsics.f32_ty, &state.var_name()); + state.push1(res); + } + Operator::F64ConvertSI32 | Operator::F64ConvertSI64 => { + let v1 = state.pop1()?.into_int_value(); + let res = + builder.build_signed_int_to_float(v1, intrinsics.f64_ty, &state.var_name()); + state.push1(res); + } + Operator::F32ConvertUI32 | Operator::F32ConvertUI64 => { + let v1 = state.pop1()?.into_int_value(); + let res = + builder.build_unsigned_int_to_float(v1, intrinsics.f32_ty, &state.var_name()); + state.push1(res); + } + Operator::F64ConvertUI32 | Operator::F64ConvertUI64 => { + let v1 = state.pop1()?.into_int_value(); + let res = + builder.build_unsigned_int_to_float(v1, intrinsics.f64_ty, &state.var_name()); + state.push1(res); + } + Operator::I32ReinterpretF32 => { + let v = state.pop1()?; + let space = + builder.build_alloca(intrinsics.i32_ty.as_basic_type_enum(), &state.var_name()); + let f32_space = + builder.build_pointer_cast(space, intrinsics.f32_ptr_ty, &state.var_name()); + builder.build_store(f32_space, v); + let int = builder.build_load(space, &state.var_name()); + state.push1(int); + } + Operator::I64ReinterpretF64 => { + let v = state.pop1()?; + let space = + builder.build_alloca(intrinsics.i64_ty.as_basic_type_enum(), &state.var_name()); + let f64_space = + builder.build_pointer_cast(space, intrinsics.f64_ptr_ty, &state.var_name()); + builder.build_store(f64_space, v); + let int = builder.build_load(space, &state.var_name()); + state.push1(int); + } + Operator::F32ReinterpretI32 => { + let v = state.pop1()?; + let space = + builder.build_alloca(intrinsics.f32_ty.as_basic_type_enum(), &state.var_name()); + let i32_space = + builder.build_pointer_cast(space, intrinsics.i32_ptr_ty, &state.var_name()); + builder.build_store(i32_space, v); + let f = builder.build_load(space, &state.var_name()); + state.push1(f); + } + Operator::F64ReinterpretI64 => { + let v = state.pop1()?; + let space = + builder.build_alloca(intrinsics.f64_ty.as_basic_type_enum(), &state.var_name()); + let i64_space = + builder.build_pointer_cast(space, intrinsics.i64_ptr_ty, &state.var_name()); + builder.build_store(i64_space, v); + let f = builder.build_load(space, &state.var_name()); + state.push1(f); + } + + /*************************** + * Sign-extension operators. + * https://github.com/WebAssembly/sign-extension-ops/blob/master/proposals/sign-extension-ops/Overview.md + ***************************/ + Operator::I32Extend8S => { + let value = state.pop1()?.into_int_value(); + let narrow_value = + builder.build_int_truncate(value, intrinsics.i8_ty, &state.var_name()); + let extended_value = + builder.build_int_s_extend(narrow_value, intrinsics.i32_ty, &state.var_name()); + state.push1(extended_value); + } + Operator::I32Extend16S => { + let value = state.pop1()?.into_int_value(); + let narrow_value = + builder.build_int_truncate(value, intrinsics.i16_ty, &state.var_name()); + let extended_value = + builder.build_int_s_extend(narrow_value, intrinsics.i32_ty, &state.var_name()); + state.push1(extended_value); + } + Operator::I64Extend8S => { + let value = state.pop1()?.into_int_value(); + let narrow_value = + builder.build_int_truncate(value, intrinsics.i8_ty, &state.var_name()); + let extended_value = + builder.build_int_s_extend(narrow_value, intrinsics.i64_ty, &state.var_name()); + state.push1(extended_value); + } + Operator::I64Extend16S => { + let value = state.pop1()?.into_int_value(); + let narrow_value = + builder.build_int_truncate(value, intrinsics.i16_ty, &state.var_name()); + let extended_value = + builder.build_int_s_extend(narrow_value, intrinsics.i64_ty, &state.var_name()); + state.push1(extended_value); + } + Operator::I64Extend32S => { + let value = state.pop1()?.into_int_value(); + let narrow_value = + builder.build_int_truncate(value, intrinsics.i32_ty, &state.var_name()); + let extended_value = + builder.build_int_s_extend(narrow_value, intrinsics.i64_ty, &state.var_name()); + state.push1(extended_value); + } + + /*************************** + * Load and Store instructions. + * https://github.com/sunfishcode/wasm-reference-manual/blob/master/WebAssembly.md#load-and-store-instructions + ***************************/ + Operator::I32Load { memarg } => { + let effective_address = resolve_memory_ptr( + builder, + intrinsics, + context, + &function, + &mut state, + &mut ctx, + memarg, + intrinsics.i32_ptr_ty, + )?; + let result = builder.build_load(effective_address, &state.var_name()); + state.push1(result); + } + Operator::I64Load { memarg } => { + let effective_address = resolve_memory_ptr( + builder, + intrinsics, + context, + &function, + &mut state, + &mut ctx, + memarg, + intrinsics.i64_ptr_ty, + )?; + let result = builder.build_load(effective_address, &state.var_name()); + state.push1(result); + } + Operator::F32Load { memarg } => { + let effective_address = resolve_memory_ptr( + builder, + intrinsics, + context, + &function, + &mut state, + &mut ctx, + memarg, + intrinsics.f32_ptr_ty, + )?; + let result = builder.build_load(effective_address, &state.var_name()); + state.push1(result); + } + Operator::F64Load { memarg } => { + let effective_address = resolve_memory_ptr( + builder, + intrinsics, + context, + &function, + &mut state, + &mut ctx, + memarg, + intrinsics.f64_ptr_ty, + )?; + let result = builder.build_load(effective_address, &state.var_name()); + state.push1(result); + } + + Operator::I32Store { memarg } => { + let value = state.pop1()?; + let effective_address = resolve_memory_ptr( + builder, + intrinsics, + context, + &function, + &mut state, + &mut ctx, + memarg, + intrinsics.i32_ptr_ty, + )?; + builder.build_store(effective_address, value); + } + Operator::I64Store { memarg } => { + let value = state.pop1()?; + let effective_address = resolve_memory_ptr( + builder, + intrinsics, + context, + &function, + &mut state, + &mut ctx, + memarg, + intrinsics.i64_ptr_ty, + )?; + builder.build_store(effective_address, value); + } + Operator::F32Store { memarg } => { + let value = state.pop1()?; + let effective_address = resolve_memory_ptr( + builder, + intrinsics, + context, + &function, + &mut state, + &mut ctx, + memarg, + intrinsics.f32_ptr_ty, + )?; + builder.build_store(effective_address, value); + } + Operator::F64Store { memarg } => { + let value = state.pop1()?; + let effective_address = resolve_memory_ptr( + builder, + intrinsics, + context, + &function, + &mut state, + &mut ctx, + memarg, + intrinsics.f64_ptr_ty, + )?; + builder.build_store(effective_address, value); + } + + Operator::I32Load8S { memarg } => { + let effective_address = resolve_memory_ptr( + builder, + intrinsics, + context, + &function, + &mut state, + &mut ctx, + memarg, + intrinsics.i8_ptr_ty, + )?; + let narrow_result = builder + .build_load(effective_address, &state.var_name()) + .into_int_value(); + let result = + builder.build_int_s_extend(narrow_result, intrinsics.i32_ty, &state.var_name()); + state.push1(result); + } + Operator::I32Load16S { memarg } => { + let effective_address = resolve_memory_ptr( + builder, + intrinsics, + context, + &function, + &mut state, + &mut ctx, + memarg, + intrinsics.i16_ptr_ty, + )?; + let narrow_result = builder + .build_load(effective_address, &state.var_name()) + .into_int_value(); + let result = + builder.build_int_s_extend(narrow_result, intrinsics.i32_ty, &state.var_name()); + state.push1(result); + } + Operator::I64Load8S { memarg } => { + let effective_address = resolve_memory_ptr( + builder, + intrinsics, + context, + &function, + &mut state, + &mut ctx, + memarg, + intrinsics.i8_ptr_ty, + )?; + let narrow_result = builder + .build_load(effective_address, &state.var_name()) + .into_int_value(); + let result = + builder.build_int_s_extend(narrow_result, intrinsics.i64_ty, &state.var_name()); + state.push1(result); + } + Operator::I64Load16S { memarg } => { + let effective_address = resolve_memory_ptr( + builder, + intrinsics, + context, + &function, + &mut state, + &mut ctx, + memarg, + intrinsics.i16_ptr_ty, + )?; + let narrow_result = builder + .build_load(effective_address, &state.var_name()) + .into_int_value(); + let result = + builder.build_int_s_extend(narrow_result, intrinsics.i64_ty, &state.var_name()); + state.push1(result); + } + Operator::I64Load32S { memarg } => { + let effective_address = resolve_memory_ptr( + builder, + intrinsics, + context, + &function, + &mut state, + &mut ctx, + memarg, + intrinsics.i32_ptr_ty, + )?; + let narrow_result = builder + .build_load(effective_address, &state.var_name()) + .into_int_value(); + let result = + builder.build_int_s_extend(narrow_result, intrinsics.i64_ty, &state.var_name()); + state.push1(result); + } + + Operator::I32Load8U { memarg } => { + let effective_address = resolve_memory_ptr( + builder, + intrinsics, + context, + &function, + &mut state, + &mut ctx, + memarg, + intrinsics.i8_ptr_ty, + )?; + let narrow_result = builder + .build_load(effective_address, &state.var_name()) + .into_int_value(); + let result = + builder.build_int_z_extend(narrow_result, intrinsics.i32_ty, &state.var_name()); + state.push1(result); + } + Operator::I32Load16U { memarg } => { + let effective_address = resolve_memory_ptr( + builder, + intrinsics, + context, + &function, + &mut state, + &mut ctx, + memarg, + intrinsics.i16_ptr_ty, + )?; + let narrow_result = builder + .build_load(effective_address, &state.var_name()) + .into_int_value(); + let result = + builder.build_int_z_extend(narrow_result, intrinsics.i32_ty, &state.var_name()); + state.push1(result); + } + Operator::I64Load8U { memarg } => { + let effective_address = resolve_memory_ptr( + builder, + intrinsics, + context, + &function, + &mut state, + &mut ctx, + memarg, + intrinsics.i8_ptr_ty, + )?; + let narrow_result = builder + .build_load(effective_address, &state.var_name()) + .into_int_value(); + let result = + builder.build_int_z_extend(narrow_result, intrinsics.i64_ty, &state.var_name()); + state.push1(result); + } + Operator::I64Load16U { memarg } => { + let effective_address = resolve_memory_ptr( + builder, + intrinsics, + context, + &function, + &mut state, + &mut ctx, + memarg, + intrinsics.i16_ptr_ty, + )?; + let narrow_result = builder + .build_load(effective_address, &state.var_name()) + .into_int_value(); + let result = + builder.build_int_z_extend(narrow_result, intrinsics.i64_ty, &state.var_name()); + state.push1(result); + } + Operator::I64Load32U { memarg } => { + let effective_address = resolve_memory_ptr( + builder, + intrinsics, + context, + &function, + &mut state, + &mut ctx, + memarg, + intrinsics.i32_ptr_ty, + )?; + let narrow_result = builder + .build_load(effective_address, &state.var_name()) + .into_int_value(); + let result = + builder.build_int_z_extend(narrow_result, intrinsics.i64_ty, &state.var_name()); + state.push1(result); + } + + Operator::I32Store8 { memarg } | Operator::I64Store8 { memarg } => { + let value = state.pop1()?.into_int_value(); + let effective_address = resolve_memory_ptr( + builder, + intrinsics, + context, + &function, + &mut state, + &mut ctx, + memarg, + intrinsics.i8_ptr_ty, + )?; + let narrow_value = + builder.build_int_truncate(value, intrinsics.i8_ty, &state.var_name()); + builder.build_store(effective_address, narrow_value); + } + Operator::I32Store16 { memarg } | Operator::I64Store16 { memarg } => { + let value = state.pop1()?.into_int_value(); + let effective_address = resolve_memory_ptr( + builder, + intrinsics, + context, + &function, + &mut state, + &mut ctx, + memarg, + intrinsics.i16_ptr_ty, + )?; + let narrow_value = + builder.build_int_truncate(value, intrinsics.i16_ty, &state.var_name()); + builder.build_store(effective_address, narrow_value); + } + Operator::I64Store32 { memarg } => { + let value = state.pop1()?.into_int_value(); + let effective_address = resolve_memory_ptr( + builder, + intrinsics, + context, + &function, + &mut state, + &mut ctx, + memarg, + intrinsics.i32_ptr_ty, + )?; + let narrow_value = + builder.build_int_truncate(value, intrinsics.i32_ty, &state.var_name()); + builder.build_store(effective_address, narrow_value); + } + + Operator::MemoryGrow { reserved } => { + let memory_index = MemoryIndex::new(reserved as usize); + let func_value = match memory_index.local_or_import(info) { + LocalOrImport::Local(local_mem_index) => { + let mem_desc = &info.memories[local_mem_index]; + match mem_desc.memory_type() { + MemoryType::Dynamic => intrinsics.memory_grow_dynamic_local, + MemoryType::Static => intrinsics.memory_grow_static_local, + MemoryType::SharedStatic => intrinsics.memory_grow_shared_local, + } + } + LocalOrImport::Import(import_mem_index) => { + let mem_desc = &info.imported_memories[import_mem_index].1; + match mem_desc.memory_type() { + MemoryType::Dynamic => intrinsics.memory_grow_dynamic_import, + MemoryType::Static => intrinsics.memory_grow_static_import, + MemoryType::SharedStatic => intrinsics.memory_grow_shared_import, + } + } + }; + + let memory_index_const = intrinsics + .i32_ty + .const_int(reserved as u64, false) + .as_basic_value_enum(); + let delta = state.pop1()?; + + let result = builder.build_call( + func_value, + &[ctx.basic(), memory_index_const, delta], + &state.var_name(), + ); + state.push1(result.try_as_basic_value().left().unwrap()); + } + Operator::MemorySize { reserved } => { + let memory_index = MemoryIndex::new(reserved as usize); + let func_value = match memory_index.local_or_import(info) { + LocalOrImport::Local(local_mem_index) => { + let mem_desc = &info.memories[local_mem_index]; + match mem_desc.memory_type() { + MemoryType::Dynamic => intrinsics.memory_size_dynamic_local, + MemoryType::Static => intrinsics.memory_size_static_local, + MemoryType::SharedStatic => intrinsics.memory_size_shared_local, + } + } + LocalOrImport::Import(import_mem_index) => { + let mem_desc = &info.imported_memories[import_mem_index].1; + match mem_desc.memory_type() { + MemoryType::Dynamic => intrinsics.memory_size_dynamic_import, + MemoryType::Static => intrinsics.memory_size_static_import, + MemoryType::SharedStatic => intrinsics.memory_size_shared_import, + } + } + }; + + let memory_index_const = intrinsics + .i32_ty + .const_int(reserved as u64, false) + .as_basic_value_enum(); + let result = builder.build_call( + func_value, + &[ctx.basic(), memory_index_const], + &state.var_name(), + ); + state.push1(result.try_as_basic_value().left().unwrap()); + } + op @ _ => { + unimplemented!("{:?}", op); + } + } + + unimplemented!() + + } + + fn finalize(&mut self) -> Result<(), CodegenError> { + unimplemented!() + } +} + +impl From for CodegenError { + fn from(other: BinaryReaderError) -> CodegenError { + unimplemented!() + //CodegenError + } +} + +impl ModuleCodeGenerator + for LLVMModuleCodeGenerator +{ + fn new() -> LLVMModuleCodeGenerator { + let context = Context::create(); + let module = context.create_module("module"); + let builder = context.create_builder(); + + let intrinsics = Intrinsics::declare(&module, &context); + + let personality_func = module.add_function( + "__gxx_personality_v0", + intrinsics.i32_ty.fn_type(&[], false), + Some(Linkage::External), + ); + + + // TODO signatures and functions +// let signatures: Map = info +// .signatures +// .iter() +// .map(|(_, sig)| func_sig_to_llvm(&context, &intrinsics, sig)) +// .collect(); + let signatures = Map::new(); +// let functions: Map = info +// .func_assoc +// .iter() +// .skip(info.imported_functions.len()) +// .map(|(func_index, &sig_index)| { +// let func = module.add_function( +// &format!("fn{}", func_index.index()), +// signatures[sig_index], +// Some(Linkage::External), +// ); +// func.set_personality_function(personality_func); +// func +// }) +// .collect(); + let functions = Map::new(); + +// let mut ctx = intrinsics.ctx(info, builder, &function, cache_builder); + + LLVMModuleCodeGenerator { + context: context, + builder: &builder, + functions: vec![], + functions_llvm: &functions, + signatures: &signatures, + function_signatures: None, + // function_labels: Some(HashMap::new()), + // assembler: Some(Assembler::new().unwrap()), + func_import_count: 0, + intrinsics: &intrinsics, +// ctx: ctx, + } + } + + fn backend_id() -> Backend { + Backend::LLVM + } + + fn check_precondition(&mut self, module_info: &ModuleInfo) -> Result<(), CodegenError> { + Ok(()) + } + + fn next_function(&mut self) -> Result<&mut LLVMFunctionCodeGenerator, CodegenError> { + // Creates a new function and returns the function-scope code generator for it. + + use std::mem; + + let func_sig_dummy: FuncSig = unsafe { mem::uninitialized() }; + let function_dummy: FunctionValue = unsafe { mem::uninitialized() }; + let intrinsics_dummy: &Intrinsics = unsafe { mem::uninitialized() }; + let context_dummy: &Context = unsafe { mem::uninitialized() }; + + let code = LLVMFunctionCodeGenerator { + state: State::new(), + builder: self.builder, + context: context_dummy, //&self.context, + function: function_dummy, + func_sig: &func_sig_dummy, + locals: vec![], + signatures: &Map::new(), +// context: self.fu + +// signatures: self.signatures.as_ref().unwrap().clone(), +// function_signatures: self.function_signatures.as_ref().unwrap().clone(), +// +// assembler: Some(assembler), +// function_labels: Some(function_labels), +// br_table_data: Some(br_table_data), +// breakpoints: Some(breakpoints), +// returns: smallvec![], +// locals: vec![], +// num_params: 0, +// num_locals: 0, +// value_stack: vec![], +// control_stack: vec![], +// machine: Machine::new(), +// unreachable_depth: 0, + intrinsics: intrinsics_dummy, + }; + self.functions.push(code); + Ok(self.functions.last_mut().unwrap()) + } + + fn finalize(self, module_info: &ModuleInfo) -> Result { + unimplemented!() + } + + fn feed_signatures(&mut self, signatures: Map) -> Result<(), CodegenError> { +// self.signatures = Some(Arc::new(signatures)); + Ok(()) + } + + fn feed_function_signatures(&mut self, assoc: Map) -> Result<(), CodegenError> { + self.function_signatures = Some(Arc::new(assoc)); + Ok(()) + } + + fn feed_import_function(&mut self) -> Result<(), CodegenError> { + // TODO + Ok(()) + } +} \ No newline at end of file diff --git a/lib/llvm-backend/src/lib.rs b/lib/llvm-backend/src/lib.rs index 6ce8139c3..ee5d4d2ef 100644 --- a/lib/llvm-backend/src/lib.rs +++ b/lib/llvm-backend/src/lib.rs @@ -26,6 +26,14 @@ impl LLVMCompiler { } } +use wasmer_runtime_core::codegen::SimpleStreamingCompilerGen; +pub type LLVMStreamingCompiler = SimpleStreamingCompilerGen< + code::LLVMModuleCodeGenerator, + code::LLVMFunctionCodeGenerator, + backend::LLVMBackend, + code::CodegenError, +>; + impl Compiler for LLVMCompiler { fn compile( &self, diff --git a/lib/spectests/examples/simple/main.rs b/lib/spectests/examples/simple/main.rs index 357adb5f7..8ac05dedb 100644 --- a/lib/spectests/examples/simple/main.rs +++ b/lib/spectests/examples/simple/main.rs @@ -18,8 +18,8 @@ fn get_compiler() -> impl Compiler { #[cfg(feature = "llvm")] fn get_compiler() -> impl Compiler { - use wasmer_llvm_backend::LLVMCompiler; - LLVMCompiler::new() + use wasmer_llvm_backend::LLVMStreamingCompiler; + LLVMStreamingCompiler::new() } #[cfg(feature = "singlepass")] From 9c773df959619ab07f978a1e7a673f8a03e701e7 Mon Sep 17 00:00:00 2001 From: Ivan Enderlin Date: Mon, 29 Apr 2019 14:26:31 +0200 Subject: [PATCH 333/413] chore(changelog) 0.4.0 and 0.3.0 have been released --- CHANGELOG.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f46d5cbd8..22137a86e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,9 @@ All PRs to the Wasmer repository must add to this file. Blocks of changes will separated by version increments. ## **[Unreleased]** + +## 0.4.0 - 2018-04-23 + - [#397](https://github.com/wasmerio/wasmer/pull/397) Fix WASI fs abstraction to work on Windows - [#390](https://github.com/wasmerio/wasmer/pull/390) Pin released wapm version and add it as a git submodule - [#383](https://github.com/wasmerio/wasmer/pull/383) Hook up wasi exit code to wasmer cli. @@ -22,3 +25,17 @@ Blocks of changes will separated by version increments. - [#351](https://github.com/wasmerio/wasmer/pull/351) Add hidden option to specify wasm program name (can be used to improve error messages) - [#350](https://github.com/wasmerio/wasmer/pull/350) Enforce that CHANGELOG.md is updated through CI. - [#349](https://github.com/wasmerio/wasmer/pull/349) Add [CHANGELOG.md](https://github.com/wasmerio/wasmer/blob/master/CHANGELOG.md). + +## 0.3.0 - 2018-04-12 + +- [#276] [#288] [#344] Use new singlepass backend (with the `--backend=singlepass` when running Wasmer) +- [#338] Actually catch traps/panics/etc when using a typed func. +- [#325] Fixed func_index in debug mode +- [#323] Add validate subcommand to validate Wasm files +- [#321] Upgrade to Cranelift 0.3.0 +- [#319] Add Export and GlobalDescriptor to Runtime API +- [#310] Cleanup warnings +- [#299] [#300] [#301] [#303] [#304] [#305] [#306] [#307] Add support for WASI 🎉 +- [#286] Add extend to imports +- [#278] Add versioning to cache +- [#250] Setup bors From 6e0e836d5934435978bacd07e708e881589bd2d4 Mon Sep 17 00:00:00 2001 From: Ivan Enderlin Date: Mon, 29 Apr 2019 14:29:04 +0200 Subject: [PATCH 334/413] chore(changelog) Format links. --- CHANGELOG.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 22137a86e..a6940da60 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,14 +28,14 @@ Blocks of changes will separated by version increments. ## 0.3.0 - 2018-04-12 -- [#276] [#288] [#344] Use new singlepass backend (with the `--backend=singlepass` when running Wasmer) -- [#338] Actually catch traps/panics/etc when using a typed func. -- [#325] Fixed func_index in debug mode -- [#323] Add validate subcommand to validate Wasm files -- [#321] Upgrade to Cranelift 0.3.0 -- [#319] Add Export and GlobalDescriptor to Runtime API -- [#310] Cleanup warnings -- [#299] [#300] [#301] [#303] [#304] [#305] [#306] [#307] Add support for WASI 🎉 -- [#286] Add extend to imports -- [#278] Add versioning to cache -- [#250] Setup bors +- [#276](https://github.com/wasmerio/wasmer/pull/276) [#288](https://github.com/wasmerio/wasmer/pull/288) [#344](https://github.com/wasmerio/wasmer/pull/344) Use new singlepass backend (with the `--backend=singlepass` when running Wasmer) +- [#338](https://github.com/wasmerio/wasmer/pull/338) Actually catch traps/panics/etc when using a typed func. +- [#325](https://github.com/wasmerio/wasmer/pull/325) Fixed func_index in debug mode +- [#323](https://github.com/wasmerio/wasmer/pull/323) Add validate subcommand to validate Wasm files +- [#321](https://github.com/wasmerio/wasmer/pull/321) Upgrade to Cranelift 0.3.0 +- [#319](https://github.com/wasmerio/wasmer/pull/319) Add Export and GlobalDescriptor to Runtime API +- [#310](https://github.com/wasmerio/wasmer/pull/310) Cleanup warnings +- [#299](https://github.com/wasmerio/wasmer/pull/299) [#300](https://github.com/wasmerio/wasmer/pull/300) [#301](https://github.com/wasmerio/wasmer/pull/301) [#303](https://github.com/wasmerio/wasmer/pull/303) [#304](https://github.com/wasmerio/wasmer/pull/304) [#305](https://github.com/wasmerio/wasmer/pull/305) [#306](https://github.com/wasmerio/wasmer/pull/306) [#307](https://github.com/wasmerio/wasmer/pull/307) Add support for WASI 🎉 +- [#286](https://github.com/wasmerio/wasmer/pull/286) Add extend to imports +- [#278](https://github.com/wasmerio/wasmer/pull/278) Add versioning to cache +- [#250](https://github.com/wasmerio/wasmer/pull/250) Setup bors From 6f942ae31766a716d8ffefe966954f21482066ed Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Mon, 29 Apr 2019 08:09:42 -0700 Subject: [PATCH 335/413] Add new line to Cargo.toml --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 17c72dcba..2391db8b3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -52,4 +52,4 @@ vfs = ["wasmer-runtime-abi"] [[example]] name = "plugin" -crate-type = ["bin"] \ No newline at end of file +crate-type = ["bin"] From e7b53c65f89713a4649f81f27aaf3edf71eab6b2 Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Mon, 29 Apr 2019 08:10:05 -0700 Subject: [PATCH 336/413] Add new line to example Cargo.toml --- examples/plugin-for-example/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/plugin-for-example/Cargo.toml b/examples/plugin-for-example/Cargo.toml index 7b8e6b723..28d234910 100644 --- a/examples/plugin-for-example/Cargo.toml +++ b/examples/plugin-for-example/Cargo.toml @@ -4,4 +4,4 @@ version = "0.1.0" authors = ["The Wasmer Engineering Team "] edition = "2018" -[dependencies] \ No newline at end of file +[dependencies] From 0add4584e3525411e48b8fad25793782969a4f11 Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Mon, 29 Apr 2019 11:18:17 -0700 Subject: [PATCH 337/413] Update examples/plugin.rs Co-Authored-By: MarkMcCaskey --- examples/plugin.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/plugin.rs b/examples/plugin.rs index 42803bb75..c7066e59b 100644 --- a/examples/plugin.rs +++ b/examples/plugin.rs @@ -18,6 +18,8 @@ fn main() { "it_works" => func!(it_works), }, }; + // The WASI imports object contains all required import functions for a WASI module to run. + // Extend this imports with our custom imports containing "it_works" function so that our custom wasm code may run. base_imports.extend(custom_imports); let instance = instantiate(PLUGIN_WASM, &base_imports).expect("failed to instantiate wasm module"); From bc0289cb840a91cb74716e2fa446c46f59bb63ba Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Mon, 29 Apr 2019 11:18:35 -0700 Subject: [PATCH 338/413] Update examples/plugin.rs Co-Authored-By: MarkMcCaskey --- examples/plugin.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/plugin.rs b/examples/plugin.rs index c7066e59b..05b8d501f 100644 --- a/examples/plugin.rs +++ b/examples/plugin.rs @@ -24,6 +24,7 @@ fn main() { let instance = instantiate(PLUGIN_WASM, &base_imports).expect("failed to instantiate wasm module"); + // get a reference to the function "plugin_entrypoint" which takes an i32 and returns an i32 let entry_point = instance.func::<(i32), i32>("plugin_entrypoint").unwrap(); let result = entry_point.call(2).expect("failed to execute plugin"); println!("result: {}", result); From 8e9767cf532ac8abd823f3b45a7dd1801b944201 Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Mon, 29 Apr 2019 11:18:53 -0700 Subject: [PATCH 339/413] Update examples/plugin.rs Co-Authored-By: MarkMcCaskey --- examples/plugin.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/plugin.rs b/examples/plugin.rs index 05b8d501f..78f149720 100644 --- a/examples/plugin.rs +++ b/examples/plugin.rs @@ -26,6 +26,7 @@ fn main() { // get a reference to the function "plugin_entrypoint" which takes an i32 and returns an i32 let entry_point = instance.func::<(i32), i32>("plugin_entrypoint").unwrap(); + // call the "entry_point" function in WebAssembly with the number "2" as the i32 argument let result = entry_point.call(2).expect("failed to execute plugin"); println!("result: {}", result); } From 4f4473c84eacf7182fbf7650a6ce54d3e89e4514 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 29 Apr 2019 11:27:19 -0700 Subject: [PATCH 340/413] update from feedback --- examples/plugin-for-example/README.md | 14 ++++++++++++-- examples/plugin.rs | 9 +++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/examples/plugin-for-example/README.md b/examples/plugin-for-example/README.md index 3f7f2e3ad..e55c123f2 100644 --- a/examples/plugin-for-example/README.md +++ b/examples/plugin-for-example/README.md @@ -11,7 +11,7 @@ See the `wasmer/examples/plugin.rs` file for the source code of the host system. # Add the target rustup target add wasm32-unknown-wasi # build it -cargo build --release --target=wasm32-unknown-wasi +cargo +nightly build --release --target=wasm32-unknown-wasi # copy it to examples folder cp ../../target/wasm32-unknown-wasi/release/plugin-for-example.wasm ../ ``` @@ -24,10 +24,20 @@ cd .. cargo run --example plugin ``` +## Inspecting the plugin +``` +# Install wabt via wapm; installed globally with the `g` flag +wapm install -g wabt +# Turn the binary WASM file in to a readable WAT text file +wapm run wasm2wat examples/plugin-for-example.wasm +``` + +At the top of the file we can see which functions this plugin expects. Most are covered by WASI, but we handle the rest. + ## Explanation In this example, we instantiate a system with an extended (WASI)[wasi] ABI, allowing our program to rely on Wasmer's implementation of the syscalls defined by WASI as well as our own that we made. This allows us to use the full power of an existing ABI, like WASI, and give it super-powers for our specific use case. -Because the Rust WASI doesn't support the crate type of `cdylib`, we have to include a main function which we don't use. +Because the Rust WASI doesn't support the crate type of `cdylib`, we have to include a main function which we don't use. This is being discussed [here](https://github.com/WebAssembly/WASI/issues/24). [wasi]: https://hacks.mozilla.org/2019/03/standardizing-wasi-a-webassembly-system-interface/ \ No newline at end of file diff --git a/examples/plugin.rs b/examples/plugin.rs index 42803bb75..ab649376d 100644 --- a/examples/plugin.rs +++ b/examples/plugin.rs @@ -2,7 +2,7 @@ use wasmer_runtime::{func, imports, instantiate}; use wasmer_runtime_core::vm::Ctx; use wasmer_wasi::generate_import_object; -static PLUGIN_WASM: &'static [u8] = include_bytes!("plugin-for-example.wasm"); +static PLUGIN_LOCATION: &'static str = "examples/plugin-for-example.wasm"; fn it_works(_ctx: &mut Ctx) -> i32 { println!("Hello from outside WASI"); @@ -10,6 +10,11 @@ fn it_works(_ctx: &mut Ctx) -> i32 { } fn main() { + let wasm_bytes = std::fs::read(PLUGIN_LOCATION).expect(&format!( + "Could not read in WASM plugin at {}", + PLUGIN_LOCATION + )); + // WASI imports let mut base_imports = generate_import_object(vec![], vec![], vec![]); // env is the default namespace for extern functions @@ -20,7 +25,7 @@ fn main() { }; base_imports.extend(custom_imports); let instance = - instantiate(PLUGIN_WASM, &base_imports).expect("failed to instantiate wasm module"); + instantiate(&wasm_bytes[..], &base_imports).expect("failed to instantiate wasm module"); let entry_point = instance.func::<(i32), i32>("plugin_entrypoint").unwrap(); let result = entry_point.call(2).expect("failed to execute plugin"); From 0f22a515be99aa99c67aa38f9dab21b9b5f44490 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 29 Apr 2019 11:33:03 -0700 Subject: [PATCH 341/413] add comment; add wapm.toml --- examples/plugin-for-example/wapm.toml | 12 ++++++++++++ examples/plugin.rs | 1 + 2 files changed, 13 insertions(+) create mode 100644 examples/plugin-for-example/wapm.toml diff --git a/examples/plugin-for-example/wapm.toml b/examples/plugin-for-example/wapm.toml new file mode 100644 index 000000000..7e2e261a7 --- /dev/null +++ b/examples/plugin-for-example/wapm.toml @@ -0,0 +1,12 @@ +[package] +name = "plugin-for-example" +version = "0.1.0" +description = "A plugin for our example system" +readme = "README.md" +repository = "https://github.com/wasmerio/wasmer/examples/plugin-for-example" +license = "MIT" + +[[module]] +name = "plugin-for-example" +source = "../../target/wasm32-unknown-wasi/release/plugin-for-example.wasm" +abi = "none" \ No newline at end of file diff --git a/examples/plugin.rs b/examples/plugin.rs index 106ccebc9..dbb06fe61 100644 --- a/examples/plugin.rs +++ b/examples/plugin.rs @@ -10,6 +10,7 @@ fn it_works(_ctx: &mut Ctx) -> i32 { } fn main() { + // Load the plugin data let wasm_bytes = std::fs::read(PLUGIN_LOCATION).expect(&format!( "Could not read in WASM plugin at {}", PLUGIN_LOCATION From f862032e911f7246cab9c39eec231836b7e2cc14 Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Mon, 29 Apr 2019 11:41:14 -0700 Subject: [PATCH 342/413] add comment about wasi on windows --- examples/plugin-for-example/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/plugin-for-example/README.md b/examples/plugin-for-example/README.md index e55c123f2..42bc3ac26 100644 --- a/examples/plugin-for-example/README.md +++ b/examples/plugin-for-example/README.md @@ -5,7 +5,7 @@ In this example we extend the imports of Wasmer's WASI ABI to demonstrate how cu See the `wasmer/examples/plugin.rs` file for the source code of the host system. ## Compiling - +_Attention Windows users: WASI target only works with the `nightly-x86_64-pc-windows-gnu` toolchain._ ``` # Install an up to date version of Rust nightly # Add the target @@ -40,4 +40,4 @@ In this example, we instantiate a system with an extended (WASI)[wasi] ABI, allo Because the Rust WASI doesn't support the crate type of `cdylib`, we have to include a main function which we don't use. This is being discussed [here](https://github.com/WebAssembly/WASI/issues/24). -[wasi]: https://hacks.mozilla.org/2019/03/standardizing-wasi-a-webassembly-system-interface/ \ No newline at end of file +[wasi]: https://hacks.mozilla.org/2019/03/standardizing-wasi-a-webassembly-system-interface/ From 49aa104ed841a46bdeae2cda2957c72a0fb04868 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 29 Apr 2019 11:45:52 -0700 Subject: [PATCH 343/413] fix changelog; add entry --- CHANGELOG.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a6940da60..37b1390ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,11 +5,12 @@ All PRs to the Wasmer repository must add to this file. Blocks of changes will separated by version increments. ## **[Unreleased]** +- [#399](https://github.com/wasmerio/wasmer/pull/399) Add example of using a plugin extended from WASI +- [#397](https://github.com/wasmerio/wasmer/pull/397) Fix WASI fs abstraction to work on Windows +- [#390](https://github.com/wasmerio/wasmer/pull/390) Pin released wapm version and add it as a git submodule ## 0.4.0 - 2018-04-23 -- [#397](https://github.com/wasmerio/wasmer/pull/397) Fix WASI fs abstraction to work on Windows -- [#390](https://github.com/wasmerio/wasmer/pull/390) Pin released wapm version and add it as a git submodule - [#383](https://github.com/wasmerio/wasmer/pull/383) Hook up wasi exit code to wasmer cli. - [#382](https://github.com/wasmerio/wasmer/pull/382) Improve error message on `--backend` flag to only suggest currently enabled backends - [#381](https://github.com/wasmerio/wasmer/pull/381) Allow retrieving propagated user errors. From d020ffd7591acc5cbb7049abb16da2ad9b08369b Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 29 Apr 2019 13:26:51 -0700 Subject: [PATCH 344/413] update version to 0.4.0 --- lib/clif-backend/Cargo.toml | 6 +++--- lib/emscripten/Cargo.toml | 10 +++++----- lib/llvm-backend/Cargo.toml | 4 ++-- lib/runtime-abi/Cargo.toml | 2 +- lib/runtime-c-api/Cargo.toml | 6 +++--- lib/runtime-core/Cargo.toml | 2 +- lib/runtime/Cargo.toml | 8 ++++---- lib/singlepass-backend/Cargo.toml | 4 ++-- lib/spectests/Cargo.toml | 10 +++++----- lib/wasi/Cargo.toml | 4 ++-- lib/win-exception-handler/Cargo.toml | 4 ++-- update_version_numbers.sh | 4 ++-- 12 files changed, 32 insertions(+), 32 deletions(-) diff --git a/lib/clif-backend/Cargo.toml b/lib/clif-backend/Cargo.toml index 9259a1903..c31ae0de1 100644 --- a/lib/clif-backend/Cargo.toml +++ b/lib/clif-backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-clif-backend" -version = "0.3.0" +version = "0.4.0" description = "Wasmer runtime Cranelift compiler backend" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -8,7 +8,7 @@ repository = "https://github.com/wasmerio/wasmer" edition = "2018" [dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.3.0" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.4.0" } cranelift-native = "0.30.0" cranelift-codegen = "0.30.0" cranelift-entity = "0.30.0" @@ -33,7 +33,7 @@ version = "0.0.7" [target.'cfg(windows)'.dependencies] winapi = { version = "0.3", features = ["errhandlingapi", "minwindef", "minwinbase", "winnt"] } -wasmer-win-exception-handler = { path = "../win-exception-handler", version = "0.3.0" } +wasmer-win-exception-handler = { path = "../win-exception-handler", version = "0.4.0" } [features] debug = ["wasmer-runtime-core/debug"] diff --git a/lib/emscripten/Cargo.toml b/lib/emscripten/Cargo.toml index 6f37da948..5b37433af 100644 --- a/lib/emscripten/Cargo.toml +++ b/lib/emscripten/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-emscripten" -version = "0.3.0" +version = "0.4.0" description = "Wasmer runtime emscripten implementation library" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -9,14 +9,14 @@ edition = "2018" build = "build/mod.rs" [dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.3.0" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.4.0" } lazy_static = "1.2.0" libc = "0.2.49" byteorder = "1" time = "0.1.41" -wasmer-clif-backend = { path = "../clif-backend", version = "0.3.0" } -wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.3.0", optional = true } -wasmer-llvm-backend = { path = "../llvm-backend", version = "0.3.0", optional = true } +wasmer-clif-backend = { path = "../clif-backend", version = "0.4.0" } +wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.4.0", optional = true } +wasmer-llvm-backend = { path = "../llvm-backend", version = "0.4.0", optional = true } [target.'cfg(windows)'.dependencies] rand = "0.6" diff --git a/lib/llvm-backend/Cargo.toml b/lib/llvm-backend/Cargo.toml index 944db6d41..efb69e8cf 100644 --- a/lib/llvm-backend/Cargo.toml +++ b/lib/llvm-backend/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "wasmer-llvm-backend" -version = "0.3.0" +version = "0.4.0" authors = ["Lachlan Sneff "] edition = "2018" [dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.3.0" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.4.0" } inkwell = { git = "https://github.com/wasmerio/inkwell", branch = "llvm7-0" } wasmparser = "0.28.0" hashbrown = "0.1.8" diff --git a/lib/runtime-abi/Cargo.toml b/lib/runtime-abi/Cargo.toml index 459c08de2..d1c94b5e2 100644 --- a/lib/runtime-abi/Cargo.toml +++ b/lib/runtime-abi/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-runtime-abi" -version = "0.3.0" +version = "0.4.0" description = "Wasmer runtime core library" license = "MIT" authors = ["The Wasmer Engineering Team "] diff --git a/lib/runtime-c-api/Cargo.toml b/lib/runtime-c-api/Cargo.toml index 881c37fcb..54cff9c90 100644 --- a/lib/runtime-c-api/Cargo.toml +++ b/lib/runtime-c-api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-runtime-c-api" -version = "0.3.0" +version = "0.4.0" description = "Wasmer C API library" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -16,11 +16,11 @@ libc = "0.2" [dependencies.wasmer-runtime] path = "../runtime" -version = "0.3.0" +version = "0.4.0" [dependencies.wasmer-runtime-core] path = "../runtime-core" -version = "0.3.0" +version = "0.4.0" [features] debug = ["wasmer-runtime/debug"] diff --git a/lib/runtime-core/Cargo.toml b/lib/runtime-core/Cargo.toml index e311be8fb..9ed814c0c 100644 --- a/lib/runtime-core/Cargo.toml +++ b/lib/runtime-core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-runtime-core" -version = "0.3.0" +version = "0.4.0" description = "Wasmer runtime core library" license = "MIT" authors = ["The Wasmer Engineering Team "] diff --git a/lib/runtime/Cargo.toml b/lib/runtime/Cargo.toml index 678d6861c..a43bdb270 100644 --- a/lib/runtime/Cargo.toml +++ b/lib/runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-runtime" -version = "0.3.0" +version = "0.4.0" description = "Wasmer runtime library" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -9,17 +9,17 @@ edition = "2018" readme = "README.md" [dependencies] -wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.3.0", optional = true } +wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.4.0", optional = true } lazy_static = "1.2.0" memmap = "0.7.0" [dependencies.wasmer-runtime-core] path = "../runtime-core" -version = "0.3.0" +version = "0.4.0" [dependencies.wasmer-clif-backend] path = "../clif-backend" -version = "0.3.0" +version = "0.4.0" optional = true [dev-dependencies] diff --git a/lib/singlepass-backend/Cargo.toml b/lib/singlepass-backend/Cargo.toml index 51fa61319..1216ae290 100644 --- a/lib/singlepass-backend/Cargo.toml +++ b/lib/singlepass-backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-singlepass-backend" -version = "0.3.0" +version = "0.4.0" repository = "https://github.com/wasmerio/wasmer" description = "Wasmer runtime single pass compiler backend" license = "MIT" @@ -8,7 +8,7 @@ authors = ["The Wasmer Engineering Team "] edition = "2018" [dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.3.0" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.4.0" } wasmparser = "0.28.0" dynasm = "0.3.1" dynasmrt = "0.3.1" diff --git a/lib/spectests/Cargo.toml b/lib/spectests/Cargo.toml index 390e7ebe9..1b6dbe59b 100644 --- a/lib/spectests/Cargo.toml +++ b/lib/spectests/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-spectests" -version = "0.3.0" +version = "0.4.0" description = "Wasmer spectests library" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -9,10 +9,10 @@ edition = "2018" build = "build/mod.rs" [dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.3.0" } -wasmer-clif-backend = { path = "../clif-backend", version = "0.3.0" } -wasmer-llvm-backend = { path = "../llvm-backend", version = "0.3.0", optional = true } -wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.3.0", optional = true } +wasmer-runtime-core = { path = "../runtime-core", version = "0.4.0" } +wasmer-clif-backend = { path = "../clif-backend", version = "0.4.0" } +wasmer-llvm-backend = { path = "../llvm-backend", version = "0.4.0", optional = true } +wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.4.0", optional = true } [build-dependencies] wabt = "0.7.2" diff --git a/lib/wasi/Cargo.toml b/lib/wasi/Cargo.toml index 30493f8fa..1bb3cbaa0 100644 --- a/lib/wasi/Cargo.toml +++ b/lib/wasi/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-wasi" -version = "0.3.0" +version = "0.4.0" description = "Wasmer runtime WASI implementation library" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -8,7 +8,7 @@ repository = "https://github.com/wasmerio/wasmer" edition = "2018" [dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.3.0" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.4.0" } libc = "0.2.50" rand = "0.6.5" # wasmer-runtime-abi = { path = "../runtime-abi" } diff --git a/lib/win-exception-handler/Cargo.toml b/lib/win-exception-handler/Cargo.toml index c11d497bd..b4a102813 100644 --- a/lib/win-exception-handler/Cargo.toml +++ b/lib/win-exception-handler/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-win-exception-handler" -version = "0.3.0" +version = "0.4.0" description = "Wasmer runtime exception handling for Windows" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -8,7 +8,7 @@ repository = "https://github.com/wasmerio/wasmer" edition = "2018" [target.'cfg(windows)'.dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.3.0" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.4.0" } winapi = { version = "0.3", features = ["winbase", "errhandlingapi", "minwindef", "minwinbase", "winnt"] } libc = "0.2.49" diff --git a/update_version_numbers.sh b/update_version_numbers.sh index df7f38952..c1a677f56 100755 --- a/update_version_numbers.sh +++ b/update_version_numbers.sh @@ -1,5 +1,5 @@ -PREVIOUS_VERSION='0.2.1' -NEXT_VERSION='0.3.0' +PREVIOUS_VERSION='0.3.0' +NEXT_VERSION='0.4.0' # quick hack fd Cargo.toml --exec sed -i '' "s/version = \"$PREVIOUS_VERSION\"/version = \"$NEXT_VERSION\"/" From a127b770b36dd369fbb452a9e4880f6420202dbe Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Mon, 29 Apr 2019 23:34:48 -0500 Subject: [PATCH 345/413] Update to newer common wasmparser version --- Cargo.lock | 20 ++++---------------- lib/clif-backend/Cargo.toml | 2 +- lib/llvm-backend/Cargo.toml | 2 +- lib/runtime-abi/Cargo.toml | 2 +- lib/singlepass-backend/Cargo.toml | 2 +- 5 files changed, 8 insertions(+), 20 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 44e77e7df..7b0a1d07e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2264,7 +2264,7 @@ dependencies = [ "target-lexicon 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "wasmer-runtime-core 0.3.0", "wasmer-win-exception-handler 0.3.0", - "wasmparser 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmparser 0.29.2 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2303,7 +2303,7 @@ dependencies = [ "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", "wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", "wasmer-runtime-core 0.3.0", - "wasmparser 0.28.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmparser 0.29.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2331,7 +2331,7 @@ dependencies = [ "tar 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", "wasmer-runtime-core 0.3.0", - "wasmparser 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmparser 0.29.2 (registry+https://github.com/rust-lang/crates.io-index)", "zbox 0.6.1 (git+https://github.com/wasmerio/zbox?branch=bundle-libsodium)", "zstd 0.4.22+zstd.1.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2385,7 +2385,7 @@ dependencies = [ "nix 0.13.0 (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.3.0", - "wasmparser 0.28.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmparser 0.29.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2424,16 +2424,6 @@ dependencies = [ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "wasmparser" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "wasmparser" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "wasmparser" version = "0.29.2" @@ -2827,8 +2817,6 @@ dependencies = [ "checksum wabt-sys 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a6265b25719e82598d104b3717375e37661d41753e2c84cde3f51050c7ed7e3c" "checksum walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "9d9d7ed3431229a144296213105a390676cc49c9b6a72bd19f3176c98e129fa1" "checksum want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "797464475f30ddb8830cc529aaaae648d581f99e2036a928877dfde027ddf6b3" -"checksum wasmparser 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b5e01c420bc7d36e778bd242e1167b079562ba8b34087122cc9057187026d060" -"checksum wasmparser 0.28.0 (registry+https://github.com/rust-lang/crates.io-index)" = "40f426b1929bd26517fb10702e2a8e520d1845c49567aa4d244f426f10b206c1" "checksum wasmparser 0.29.2 (registry+https://github.com/rust-lang/crates.io-index)" = "981a8797cf89762e0233ec45fae731cb79a4dfaee12d9f0fe6cee01e4ac58d00" "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" diff --git a/lib/clif-backend/Cargo.toml b/lib/clif-backend/Cargo.toml index 9259a1903..f1aa6ef04 100644 --- a/lib/clif-backend/Cargo.toml +++ b/lib/clif-backend/Cargo.toml @@ -15,7 +15,7 @@ cranelift-entity = "0.30.0" cranelift-wasm = "0.30.0" hashbrown = "0.1" target-lexicon = "0.3.0" -wasmparser = "0.23.0" +wasmparser = "0.29.2" byteorder = "1" nix = "0.13.0" libc = "0.2.49" diff --git a/lib/llvm-backend/Cargo.toml b/lib/llvm-backend/Cargo.toml index 944db6d41..c1a1cbbdc 100644 --- a/lib/llvm-backend/Cargo.toml +++ b/lib/llvm-backend/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" [dependencies] wasmer-runtime-core = { path = "../runtime-core", version = "0.3.0" } inkwell = { git = "https://github.com/wasmerio/inkwell", branch = "llvm7-0" } -wasmparser = "0.28.0" +wasmparser = "0.29.2" hashbrown = "0.1.8" smallvec = "0.6.8" goblin = "0.0.20" diff --git a/lib/runtime-abi/Cargo.toml b/lib/runtime-abi/Cargo.toml index 459c08de2..bf971f7e8 100644 --- a/lib/runtime-abi/Cargo.toml +++ b/lib/runtime-abi/Cargo.toml @@ -13,7 +13,7 @@ wasmer-runtime-core = { path = "../runtime-core" } hashbrown = "0.1" failure = "0.1" tar = "0.4" -wasmparser = "0.23.0" +wasmparser = "0.29.2" zstd = "0.4" [target.'cfg(unix)'.dependencies.zbox] diff --git a/lib/singlepass-backend/Cargo.toml b/lib/singlepass-backend/Cargo.toml index 51fa61319..b4046e76c 100644 --- a/lib/singlepass-backend/Cargo.toml +++ b/lib/singlepass-backend/Cargo.toml @@ -9,7 +9,7 @@ edition = "2018" [dependencies] wasmer-runtime-core = { path = "../runtime-core", version = "0.3.0" } -wasmparser = "0.28.0" +wasmparser = "0.29.2" dynasm = "0.3.1" dynasmrt = "0.3.1" lazy_static = "1.2.0" From da807ed2a17dd89899c8cb03a725da8f82c74773 Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Mon, 29 Apr 2019 23:40:16 -0500 Subject: [PATCH 346/413] Remove unused imports --- lib/singlepass-backend/src/protect_unix.rs | 2 +- src/webassembly.rs | 9 +-------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/lib/singlepass-backend/src/protect_unix.rs b/lib/singlepass-backend/src/protect_unix.rs index 213db5f6a..b969f1656 100644 --- a/lib/singlepass-backend/src/protect_unix.rs +++ b/lib/singlepass-backend/src/protect_unix.rs @@ -11,7 +11,7 @@ //! use libc::{c_int, c_void, siginfo_t}; use nix::sys::signal::{ - sigaction, SaFlags, SigAction, SigHandler, SigSet, Signal, SIGBUS, SIGFPE, SIGILL, SIGSEGV, + sigaction, SaFlags, SigAction, SigHandler, SigSet, SIGBUS, SIGFPE, SIGILL, SIGSEGV, }; use std::any::Any; use std::cell::{Cell, UnsafeCell}; diff --git a/src/webassembly.rs b/src/webassembly.rs index 3d051f078..0df8b59e8 100644 --- a/src/webassembly.rs +++ b/src/webassembly.rs @@ -1,13 +1,6 @@ use std::panic; pub use wasmer_runtime::compile_with_config_with; -use wasmer_runtime::{ - self as runtime, - error::{CallResult, Result}, - ImportObject, Instance, Module, -}; -use wasmer_runtime_core::types::Value; - -use wasmer_emscripten::run_emscripten_instance; +use wasmer_runtime::{self as runtime, error::Result, ImportObject, Instance, Module}; pub struct ResultObject { /// A webassembly::Module object representing the compiled WebAssembly module. From 8acf9edf678e7f3f6e9860d0b40c688ec893ce8c Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Mon, 29 Apr 2019 23:45:38 -0500 Subject: [PATCH 347/413] Remove unneeded returns --- lib/emscripten/src/process.rs | 2 +- lib/emscripten/src/time.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/emscripten/src/process.rs b/lib/emscripten/src/process.rs index 4c6e33e70..319dc9eb4 100644 --- a/lib/emscripten/src/process.rs +++ b/lib/emscripten/src/process.rs @@ -159,7 +159,7 @@ pub fn _system(_ctx: &mut Ctx, _one: i32) -> c_int { debug!("emscripten::_system"); // TODO: May need to change this Em impl to a working version eprintln!("Can't call external programs"); - return EAGAIN; + EAGAIN } pub fn _popen(_ctx: &mut Ctx, _one: i32, _two: i32) -> c_int { diff --git a/lib/emscripten/src/time.rs b/lib/emscripten/src/time.rs index 312808a82..56dfdbda8 100644 --- a/lib/emscripten/src/time.rs +++ b/lib/emscripten/src/time.rs @@ -345,7 +345,7 @@ pub fn _strftime( // pad for null? let bytes = result_str.chars().count(); if bytes as u32 > maxsize { - return 0; + 0 } else { // write output string for (i, c) in result_str.chars().enumerate() { From 01ba789eed1cded255b42034dffdf422b5c6a539 Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Mon, 29 Apr 2019 23:49:00 -0500 Subject: [PATCH 348/413] Cleanup some long literal lacking separators --- lib/llvm-backend/src/code.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/llvm-backend/src/code.rs b/lib/llvm-backend/src/code.rs index 05cde0694..2795e6271 100644 --- a/lib/llvm-backend/src/code.rs +++ b/lib/llvm-backend/src/code.rs @@ -1468,7 +1468,7 @@ fn parse_function( context, &function, -2147483904.0, - 2147483648.0, + 2_147_483_648.0, v1, ); let res = @@ -1482,8 +1482,8 @@ fn parse_function( intrinsics, context, &function, - -2147483649.0, - 2147483648.0, + -2_147_483_649.0, + 2_147_483_648.0, v1, ); let res = @@ -1503,8 +1503,8 @@ fn parse_function( intrinsics, context, &function, - -9223373136366403584.0, - 9223372036854775808.0, + -9_223_373_136_366_403_584.0, + 9_223_372_036_854_775_808.0, v1, ); let res = From 21dd01c3aa1b6b7f21598e9bbf267428611d96eb Mon Sep 17 00:00:00 2001 From: losfair Date: Tue, 30 Apr 2019 15:52:43 +0800 Subject: [PATCH 349/413] Fix LLVM backend compilation and segfaults. --- lib/llvm-backend/src/code.rs | 159 +++++++++++++++++++---------------- lib/llvm-backend/src/lib.rs | 8 +- 2 files changed, 91 insertions(+), 76 deletions(-) diff --git a/lib/llvm-backend/src/code.rs b/lib/llvm-backend/src/code.rs index bc13bf281..42474a79b 100644 --- a/lib/llvm-backend/src/code.rs +++ b/lib/llvm-backend/src/code.rs @@ -1733,7 +1733,7 @@ fn parse_function( * Load and Store instructions. * https://github.com/sunfishcode/wasm-reference-manual/blob/master/WebAssembly.md#load-and-store-instructions ***************************/ - Operator::I32Load { memarg } => { + Operator::I32Load { ref memarg } => { let effective_address = resolve_memory_ptr( builder, intrinsics, @@ -1747,7 +1747,7 @@ fn parse_function( let result = builder.build_load(effective_address, &state.var_name()); state.push1(result); } - Operator::I64Load { memarg } => { + Operator::I64Load { ref memarg } => { let effective_address = resolve_memory_ptr( builder, intrinsics, @@ -1761,7 +1761,7 @@ fn parse_function( let result = builder.build_load(effective_address, &state.var_name()); state.push1(result); } - Operator::F32Load { memarg } => { + Operator::F32Load { ref memarg } => { let effective_address = resolve_memory_ptr( builder, intrinsics, @@ -1775,7 +1775,7 @@ fn parse_function( let result = builder.build_load(effective_address, &state.var_name()); state.push1(result); } - Operator::F64Load { memarg } => { + Operator::F64Load { ref memarg } => { let effective_address = resolve_memory_ptr( builder, intrinsics, @@ -1790,7 +1790,7 @@ fn parse_function( state.push1(result); } - Operator::I32Store { memarg } => { + Operator::I32Store { ref memarg } => { let value = state.pop1()?; let effective_address = resolve_memory_ptr( builder, @@ -1804,7 +1804,7 @@ fn parse_function( )?; builder.build_store(effective_address, value); } - Operator::I64Store { memarg } => { + Operator::I64Store { ref memarg } => { let value = state.pop1()?; let effective_address = resolve_memory_ptr( builder, @@ -1818,7 +1818,7 @@ fn parse_function( )?; builder.build_store(effective_address, value); } - Operator::F32Store { memarg } => { + Operator::F32Store { ref memarg } => { let value = state.pop1()?; let effective_address = resolve_memory_ptr( builder, @@ -1832,7 +1832,7 @@ fn parse_function( )?; builder.build_store(effective_address, value); } - Operator::F64Store { memarg } => { + Operator::F64Store { ref memarg } => { let value = state.pop1()?; let effective_address = resolve_memory_ptr( builder, @@ -1847,7 +1847,7 @@ fn parse_function( builder.build_store(effective_address, value); } - Operator::I32Load8S { memarg } => { + Operator::I32Load8S { ref memarg } => { let effective_address = resolve_memory_ptr( builder, intrinsics, @@ -1865,7 +1865,7 @@ fn parse_function( builder.build_int_s_extend(narrow_result, intrinsics.i32_ty, &state.var_name()); state.push1(result); } - Operator::I32Load16S { memarg } => { + Operator::I32Load16S { ref memarg } => { let effective_address = resolve_memory_ptr( builder, intrinsics, @@ -1883,7 +1883,7 @@ fn parse_function( builder.build_int_s_extend(narrow_result, intrinsics.i32_ty, &state.var_name()); state.push1(result); } - Operator::I64Load8S { memarg } => { + Operator::I64Load8S { ref memarg } => { let effective_address = resolve_memory_ptr( builder, intrinsics, @@ -1901,7 +1901,7 @@ fn parse_function( builder.build_int_s_extend(narrow_result, intrinsics.i64_ty, &state.var_name()); state.push1(result); } - Operator::I64Load16S { memarg } => { + Operator::I64Load16S { ref memarg } => { let effective_address = resolve_memory_ptr( builder, intrinsics, @@ -1919,7 +1919,7 @@ fn parse_function( builder.build_int_s_extend(narrow_result, intrinsics.i64_ty, &state.var_name()); state.push1(result); } - Operator::I64Load32S { memarg } => { + Operator::I64Load32S { ref memarg } => { let effective_address = resolve_memory_ptr( builder, intrinsics, @@ -1938,7 +1938,7 @@ fn parse_function( state.push1(result); } - Operator::I32Load8U { memarg } => { + Operator::I32Load8U { ref memarg } => { let effective_address = resolve_memory_ptr( builder, intrinsics, @@ -1956,7 +1956,7 @@ fn parse_function( builder.build_int_z_extend(narrow_result, intrinsics.i32_ty, &state.var_name()); state.push1(result); } - Operator::I32Load16U { memarg } => { + Operator::I32Load16U { ref memarg } => { let effective_address = resolve_memory_ptr( builder, intrinsics, @@ -1974,7 +1974,7 @@ fn parse_function( builder.build_int_z_extend(narrow_result, intrinsics.i32_ty, &state.var_name()); state.push1(result); } - Operator::I64Load8U { memarg } => { + Operator::I64Load8U { ref memarg } => { let effective_address = resolve_memory_ptr( builder, intrinsics, @@ -1992,7 +1992,7 @@ fn parse_function( builder.build_int_z_extend(narrow_result, intrinsics.i64_ty, &state.var_name()); state.push1(result); } - Operator::I64Load16U { memarg } => { + Operator::I64Load16U { ref memarg } => { let effective_address = resolve_memory_ptr( builder, intrinsics, @@ -2010,7 +2010,7 @@ fn parse_function( builder.build_int_z_extend(narrow_result, intrinsics.i64_ty, &state.var_name()); state.push1(result); } - Operator::I64Load32U { memarg } => { + Operator::I64Load32U { ref memarg } => { let effective_address = resolve_memory_ptr( builder, intrinsics, @@ -2029,7 +2029,7 @@ fn parse_function( state.push1(result); } - Operator::I32Store8 { memarg } | Operator::I64Store8 { memarg } => { + Operator::I32Store8 { ref memarg } | Operator::I64Store8 { ref memarg } => { let value = state.pop1()?.into_int_value(); let effective_address = resolve_memory_ptr( builder, @@ -2045,7 +2045,7 @@ fn parse_function( builder.build_int_truncate(value, intrinsics.i8_ty, &state.var_name()); builder.build_store(effective_address, narrow_value); } - Operator::I32Store16 { memarg } | Operator::I64Store16 { memarg } => { + Operator::I32Store16 { ref memarg } | Operator::I64Store16 { ref memarg } => { let value = state.pop1()?.into_int_value(); let effective_address = resolve_memory_ptr( builder, @@ -2061,7 +2061,7 @@ fn parse_function( builder.build_int_truncate(value, intrinsics.i16_ty, &state.var_name()); builder.build_store(effective_address, narrow_value); } - Operator::I64Store32 { memarg } => { + Operator::I64Store32 { ref memarg } => { let value = state.pop1()?.into_int_value(); let effective_address = resolve_memory_ptr( builder, @@ -2392,7 +2392,7 @@ fn resolve_memory_ptr( function: &FunctionValue, state: &mut State, ctx: &mut CtxType, - memarg: MemoryImmediate, + memarg: &MemoryImmediate, ptr_ty: PointerType, ) -> Result { // Ignore alignment hint for the time being. @@ -2468,21 +2468,24 @@ fn resolve_memory_ptr( #[derive(Debug)] pub struct CodegenError { - pub message: &'static str, + pub message: String, } pub struct LLVMModuleCodeGenerator { context: Context, - builder: &'static Builder, + builder: Builder, functions: Vec, - functions_llvm: &'static SliceMap, + functions_llvm: Map, // signatures: Option>>, - signatures: &'static SliceMap, + signatures: Map, + signatures_raw: Map, function_signatures: Option>>, // function_labels: Option)>>, // assembler: Option, func_import_count: usize, - intrinsics: &'static Intrinsics, + intrinsics: Intrinsics, + personality_func: FunctionValue, + module: Module, // ctx: CtxType, } @@ -2503,9 +2506,9 @@ pub struct LLVMFunctionCodeGenerator { builder: &'static Builder, context: &'static Context, function: FunctionValue, - func_sig: &'static FuncSig, + func_sig: FuncSig, intrinsics: &'static Intrinsics, - signatures: &'static SliceMap, + signatures: Map, // signatures: Arc>, // function_signatures: Arc>, @@ -2538,7 +2541,7 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { } fn begin_body(&mut self) -> Result<(), CodegenError> { - unimplemented!() + Ok(()) } fn feed_event(&mut self, event: Event, module_info: &ModuleInfo) -> Result<(), CodegenError> { @@ -2619,7 +2622,7 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { let intrinsics = self.intrinsics; let locals = &self.locals; let info = module_info; - let signatures = self.signatures; + let signatures = &self.signatures; // TODO this should be done only once per function I believe @@ -2633,7 +2636,8 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { let op = match event { Event::Wasm(x) => x, Event::Internal(x) => { - unimplemented!() + return Ok(()); + //unimplemented!() } }; @@ -4151,7 +4155,7 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { * Load and Store instructions. * https://github.com/sunfishcode/wasm-reference-manual/blob/master/WebAssembly.md#load-and-store-instructions ***************************/ - Operator::I32Load { memarg } => { + Operator::I32Load { ref memarg } => { let effective_address = resolve_memory_ptr( builder, intrinsics, @@ -4165,7 +4169,7 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { let result = builder.build_load(effective_address, &state.var_name()); state.push1(result); } - Operator::I64Load { memarg } => { + Operator::I64Load { ref memarg } => { let effective_address = resolve_memory_ptr( builder, intrinsics, @@ -4179,7 +4183,7 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { let result = builder.build_load(effective_address, &state.var_name()); state.push1(result); } - Operator::F32Load { memarg } => { + Operator::F32Load { ref memarg } => { let effective_address = resolve_memory_ptr( builder, intrinsics, @@ -4193,7 +4197,7 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { let result = builder.build_load(effective_address, &state.var_name()); state.push1(result); } - Operator::F64Load { memarg } => { + Operator::F64Load { ref memarg } => { let effective_address = resolve_memory_ptr( builder, intrinsics, @@ -4208,7 +4212,7 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { state.push1(result); } - Operator::I32Store { memarg } => { + Operator::I32Store { ref memarg } => { let value = state.pop1()?; let effective_address = resolve_memory_ptr( builder, @@ -4222,7 +4226,7 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { )?; builder.build_store(effective_address, value); } - Operator::I64Store { memarg } => { + Operator::I64Store { ref memarg } => { let value = state.pop1()?; let effective_address = resolve_memory_ptr( builder, @@ -4236,7 +4240,7 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { )?; builder.build_store(effective_address, value); } - Operator::F32Store { memarg } => { + Operator::F32Store { ref memarg } => { let value = state.pop1()?; let effective_address = resolve_memory_ptr( builder, @@ -4250,7 +4254,7 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { )?; builder.build_store(effective_address, value); } - Operator::F64Store { memarg } => { + Operator::F64Store { ref memarg } => { let value = state.pop1()?; let effective_address = resolve_memory_ptr( builder, @@ -4265,7 +4269,7 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { builder.build_store(effective_address, value); } - Operator::I32Load8S { memarg } => { + Operator::I32Load8S { ref memarg } => { let effective_address = resolve_memory_ptr( builder, intrinsics, @@ -4283,7 +4287,7 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { builder.build_int_s_extend(narrow_result, intrinsics.i32_ty, &state.var_name()); state.push1(result); } - Operator::I32Load16S { memarg } => { + Operator::I32Load16S { ref memarg } => { let effective_address = resolve_memory_ptr( builder, intrinsics, @@ -4301,7 +4305,7 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { builder.build_int_s_extend(narrow_result, intrinsics.i32_ty, &state.var_name()); state.push1(result); } - Operator::I64Load8S { memarg } => { + Operator::I64Load8S { ref memarg } => { let effective_address = resolve_memory_ptr( builder, intrinsics, @@ -4319,7 +4323,7 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { builder.build_int_s_extend(narrow_result, intrinsics.i64_ty, &state.var_name()); state.push1(result); } - Operator::I64Load16S { memarg } => { + Operator::I64Load16S { ref memarg } => { let effective_address = resolve_memory_ptr( builder, intrinsics, @@ -4337,7 +4341,7 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { builder.build_int_s_extend(narrow_result, intrinsics.i64_ty, &state.var_name()); state.push1(result); } - Operator::I64Load32S { memarg } => { + Operator::I64Load32S { ref memarg } => { let effective_address = resolve_memory_ptr( builder, intrinsics, @@ -4356,7 +4360,7 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { state.push1(result); } - Operator::I32Load8U { memarg } => { + Operator::I32Load8U { ref memarg } => { let effective_address = resolve_memory_ptr( builder, intrinsics, @@ -4374,7 +4378,7 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { builder.build_int_z_extend(narrow_result, intrinsics.i32_ty, &state.var_name()); state.push1(result); } - Operator::I32Load16U { memarg } => { + Operator::I32Load16U { ref memarg } => { let effective_address = resolve_memory_ptr( builder, intrinsics, @@ -4392,7 +4396,7 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { builder.build_int_z_extend(narrow_result, intrinsics.i32_ty, &state.var_name()); state.push1(result); } - Operator::I64Load8U { memarg } => { + Operator::I64Load8U { ref memarg } => { let effective_address = resolve_memory_ptr( builder, intrinsics, @@ -4410,7 +4414,7 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { builder.build_int_z_extend(narrow_result, intrinsics.i64_ty, &state.var_name()); state.push1(result); } - Operator::I64Load16U { memarg } => { + Operator::I64Load16U { ref memarg } => { let effective_address = resolve_memory_ptr( builder, intrinsics, @@ -4428,7 +4432,7 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { builder.build_int_z_extend(narrow_result, intrinsics.i64_ty, &state.var_name()); state.push1(result); } - Operator::I64Load32U { memarg } => { + Operator::I64Load32U { ref memarg } => { let effective_address = resolve_memory_ptr( builder, intrinsics, @@ -4447,7 +4451,7 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { state.push1(result); } - Operator::I32Store8 { memarg } | Operator::I64Store8 { memarg } => { + Operator::I32Store8 { ref memarg } | Operator::I64Store8 { ref memarg } => { let value = state.pop1()?.into_int_value(); let effective_address = resolve_memory_ptr( builder, @@ -4463,7 +4467,7 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { builder.build_int_truncate(value, intrinsics.i8_ty, &state.var_name()); builder.build_store(effective_address, narrow_value); } - Operator::I32Store16 { memarg } | Operator::I64Store16 { memarg } => { + Operator::I32Store16 { ref memarg } | Operator::I64Store16 { ref memarg } => { let value = state.pop1()?.into_int_value(); let effective_address = resolve_memory_ptr( builder, @@ -4479,7 +4483,7 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { builder.build_int_truncate(value, intrinsics.i16_ty, &state.var_name()); builder.build_store(effective_address, narrow_value); } - Operator::I64Store32 { memarg } => { + Operator::I64Store32 { ref memarg } => { let value = state.pop1()?.into_int_value(); let effective_address = resolve_memory_ptr( builder, @@ -4562,7 +4566,7 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { ); state.push1(result.try_as_basic_value().left().unwrap()); } - op @ _ => { + _ => { unimplemented!("{:?}", op); } } @@ -4578,8 +4582,7 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { impl From for CodegenError { fn from(other: BinaryReaderError) -> CodegenError { - unimplemented!() - //CodegenError + CodegenError { message: format!("{:?}", other) } } } @@ -4627,15 +4630,18 @@ impl ModuleCodeGenerator LLVMModuleCodeGenerator { context: context, - builder: &builder, + builder: builder, + module: module, functions: vec![], - functions_llvm: &functions, - signatures: &signatures, + functions_llvm: functions, + signatures: signatures, + signatures_raw: Map::new(), function_signatures: None, // function_labels: Some(HashMap::new()), // assembler: Some(Assembler::new().unwrap()), func_import_count: 0, - intrinsics: &intrinsics, + intrinsics: intrinsics, + personality_func: personality_func, // ctx: ctx, } } @@ -4653,19 +4659,24 @@ impl ModuleCodeGenerator use std::mem; - let func_sig_dummy: FuncSig = unsafe { mem::uninitialized() }; - let function_dummy: FunctionValue = unsafe { mem::uninitialized() }; - let intrinsics_dummy: &Intrinsics = unsafe { mem::uninitialized() }; - let context_dummy: &Context = unsafe { mem::uninitialized() }; + let sig_id = self.function_signatures.as_ref().unwrap()[FuncIndex::new(self.func_import_count + self.functions.len())]; + let func_sig = self.signatures_raw[sig_id].clone(); + + let func = self.module.add_function( + &format!("fn{}", self.func_import_count + self.functions.len()), + self.signatures[sig_id], + Some(Linkage::External), + ); + func.set_personality_function(self.personality_func); let code = LLVMFunctionCodeGenerator { state: State::new(), - builder: self.builder, - context: context_dummy, //&self.context, - function: function_dummy, - func_sig: &func_sig_dummy, + builder: unsafe { ::std::mem::transmute::<&Builder, &'static Builder>(&self.builder) }, + context: unsafe { ::std::mem::transmute::<&Context, &'static Context>(&self.context) }, + function: func, + func_sig: func_sig, locals: vec![], - signatures: &Map::new(), + signatures: self.signatures.clone(), // context: self.fu // signatures: self.signatures.as_ref().unwrap().clone(), @@ -4683,7 +4694,7 @@ impl ModuleCodeGenerator // control_stack: vec![], // machine: Machine::new(), // unreachable_depth: 0, - intrinsics: intrinsics_dummy, + intrinsics: unsafe { ::std::mem::transmute::<&Intrinsics, &'static Intrinsics>(&self.intrinsics) }, }; self.functions.push(code); Ok(self.functions.last_mut().unwrap()) @@ -4694,7 +4705,11 @@ impl ModuleCodeGenerator } fn feed_signatures(&mut self, signatures: Map) -> Result<(), CodegenError> { -// self.signatures = Some(Arc::new(signatures)); + self.signatures = signatures + .iter() + .map(|(_, sig)| func_sig_to_llvm(&self.context, &self.intrinsics, sig)) + .collect(); + self.signatures_raw = signatures.clone(); Ok(()) } @@ -4704,7 +4719,7 @@ impl ModuleCodeGenerator } fn feed_import_function(&mut self) -> Result<(), CodegenError> { - // TODO + self.func_import_count += 1; Ok(()) } } \ No newline at end of file diff --git a/lib/llvm-backend/src/lib.rs b/lib/llvm-backend/src/lib.rs index ee5d4d2ef..53ba7cd98 100644 --- a/lib/llvm-backend/src/lib.rs +++ b/lib/llvm-backend/src/lib.rs @@ -16,25 +16,25 @@ mod read_info; mod state; mod trampolines; -pub struct LLVMCompiler { +pub struct LLVMOldCompiler { _private: (), } -impl LLVMCompiler { +impl LLVMOldCompiler { pub fn new() -> Self { Self { _private: () } } } use wasmer_runtime_core::codegen::SimpleStreamingCompilerGen; -pub type LLVMStreamingCompiler = SimpleStreamingCompilerGen< +pub type LLVMCompiler = SimpleStreamingCompilerGen< code::LLVMModuleCodeGenerator, code::LLVMFunctionCodeGenerator, backend::LLVMBackend, code::CodegenError, >; -impl Compiler for LLVMCompiler { +impl Compiler for LLVMOldCompiler { fn compile( &self, wasm: &[u8], From 6af87c1b5bd30d27f58bcbe6e3494f3a0f34d725 Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Tue, 30 Apr 2019 09:21:08 -0700 Subject: [PATCH 350/413] add images to installer and add wapm bin dir to path --- media/wizard_logo.ico | Bin 0 -> 30138 bytes media/wizard_logo_2.bmp | Bin 0 -> 980726 bytes media/wizard_logo_small.bmp | Bin 0 -> 4158 bytes src/installer/wasmer.iss | 17 ++++++++++++++--- 4 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 media/wizard_logo.ico create mode 100644 media/wizard_logo_2.bmp create mode 100644 media/wizard_logo_small.bmp diff --git a/media/wizard_logo.ico b/media/wizard_logo.ico new file mode 100644 index 0000000000000000000000000000000000000000..664b0d7a16bf2c6388add01b22ff370850e25aa5 GIT binary patch literal 30138 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 zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z g1Rwwb2tWV=5P$##AOHafKmY;|fB*y_kSYTIAA~+r82|tP literal 0 HcmV?d00001 diff --git a/media/wizard_logo_small.bmp b/media/wizard_logo_small.bmp new file mode 100644 index 0000000000000000000000000000000000000000..9ca204fcabda77087321ab8256b6d1887220c6ec GIT binary patch literal 4158 zcmeI#c~n$Y90%}cw%BHyG}>yGWviwnGE9IYfwGDsn}Qpnfk+ApRN#^zR4l1!3JCbl z5s5HkF)J5NS(1PW0v*vnITal^!Z2*ZY~SuM%$xg$H{kR~e|gXO&HLSZ-)DaB-M5?> zsfYc;%wU^+C&Nr5naxm)VaDkv$mhB7`e4S84v8bv9gsiW5&1KvD3~!9g)^i$I!lUU zGo5hM+6e_V&M35VMWMtEMGl@QndOW!YZnsp@vZd&oSyBDGbGO1c;Lr5UijJ88|Q5o zp+dYEzmmA13wvKwNqkT(S%MmSKOB>K>Pv^GWVP38dNWfM2&AaY6By2IcO6uFONb!*|xf_ z#6Kk3-B+Q*GX$L^WL|3^TNnzNPZ+xV)}zZm0$o8HQ63(H^7XN}ydoO)A+cx(i^uN~ zTk%s=0_3Y>AP@nsMGxs$CZ?k@ zDFan0yKymfAFgf7K+WDPTu;kJXL>ezcJ4uM%6{~wX5vQ1A=DknLtQ3|hMau-nN@(k zJ$dNcdl>yWg}8F02v@%<#1hm{J&)F3E})~l0?P99P@bzqTXhY(s%p`7u@1@$HBeR7qWw}GX8K|Vn4%G>cj zt^q69@-}Y~9OniZE~Ar#1>$JBKRg$5NsGi{%Uybi9buNbtcbUD%2F5SqF0u=9SaT0 z68CYCQPD1U0X2x~-aF)o+tjpW%z*AhkWDk+ZyxY3KL=Cx&z)6Ieb4iPb zsX>>${zaWKj*UT0Gp&Bo5qD`B_6-c;!OOPvgg@Al}|h!Iv|@he6~o!@~KQ~rZH z9QF(|*>d;6^W^1dvD@WLl*R5dzk3FmW%Y8_-mh1d)tmmDL0RU8e(nrnOV;JKVb9TX>=w4Iw z`B^7w2l$Hbym#tfZj^I%W5!xpJ*4~7!EeTT^WWDiy57u#z6>*dET0Va49-6C zkbzOhxt%3Wuo>KLPEqyVWX-wz*6R0XC}ynZZ^qrVByDJaAvbAxhOnEP$W;+=o+-Ln z`uv^^a3|+FC5BThJIqPr^|O?l`Z>!^efr&8ikZ4MHsuY?8r@{V*ll}hWm4~*)d#s* zqkE4VqY~b6?x!X=H!hPJ Date: Tue, 30 Apr 2019 09:59:00 -0700 Subject: [PATCH 351/413] add global wapm packages bin dir to path --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 40b95cc22..fd2cf4778 100755 --- a/install.sh +++ b/install.sh @@ -131,7 +131,7 @@ wasmer_link() { printf "$cyan> Adding to bash profile...$reset\n" WASMER_PROFILE="$(wasmer_detect_profile)" LOAD_STR="\n# Wasmer\nexport WASMER_DIR=\"\$HOME/.wasmer\"\n[ -s \"\$WASMER_DIR/wasmer.sh\" ] && source \"\$WASMER_DIR/wasmer.sh\" # This loads wasmer\n" - SOURCE_STR="# Wasmer config\nexport WASMER_DIR=\"\$HOME/.wasmer\"\nexport WASMER_CACHE_DIR=\"\$WASMER_DIR/cache\"\nexport PATH=\"\$HOME/.wasmer/bin:\$PATH\"\n" + SOURCE_STR="# Wasmer config\nexport WASMER_DIR=\"\$HOME/.wasmer\"\nexport WASMER_CACHE_DIR=\"\$WASMER_DIR/cache\"\nexport PATH=\"\$HOME/.wasmer/globals/wapm_packages/.bin:$HOME/.wasmer/bin:\$PATH\"\n" # We create the wasmer.sh file printf "$SOURCE_STR" > "$HOME/.wasmer/wasmer.sh" From 18a8341e5abb0cd694333b83c5d6310d77fa516d Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Tue, 30 Apr 2019 09:59:07 -0700 Subject: [PATCH 352/413] add changelog record --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 37b1390ec..91b04b3ad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ Blocks of changes will separated by version increments. - [#399](https://github.com/wasmerio/wasmer/pull/399) Add example of using a plugin extended from WASI - [#397](https://github.com/wasmerio/wasmer/pull/397) Fix WASI fs abstraction to work on Windows - [#390](https://github.com/wasmerio/wasmer/pull/390) Pin released wapm version and add it as a git submodule +- [#408](https://github.com/wasmerio/wasmer/pull/408) Add images to windows installer and update installer to add wapm bin directory to path ## 0.4.0 - 2018-04-23 From bc50fe090cf8152eab4749e04d21e0fb9102de5a Mon Sep 17 00:00:00 2001 From: Syrus Akbary Date: Tue, 30 Apr 2019 10:09:04 -0700 Subject: [PATCH 353/413] Update install.sh Co-Authored-By: xmclark --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index fd2cf4778..c0d0982bd 100755 --- a/install.sh +++ b/install.sh @@ -131,7 +131,7 @@ wasmer_link() { printf "$cyan> Adding to bash profile...$reset\n" WASMER_PROFILE="$(wasmer_detect_profile)" LOAD_STR="\n# Wasmer\nexport WASMER_DIR=\"\$HOME/.wasmer\"\n[ -s \"\$WASMER_DIR/wasmer.sh\" ] && source \"\$WASMER_DIR/wasmer.sh\" # This loads wasmer\n" - SOURCE_STR="# Wasmer config\nexport WASMER_DIR=\"\$HOME/.wasmer\"\nexport WASMER_CACHE_DIR=\"\$WASMER_DIR/cache\"\nexport PATH=\"\$HOME/.wasmer/globals/wapm_packages/.bin:$HOME/.wasmer/bin:\$PATH\"\n" + SOURCE_STR="# Wasmer config\nexport WASMER_DIR=\"\$HOME/.wasmer\"\nexport WASMER_CACHE_DIR=\"\$WASMER_DIR/cache\"\nexport PATH=\"\$HOME/.wasmer/bin:\$HOME/.wasmer/globals/wapm_packages/.bin:\$PATH\"\n" # We create the wasmer.sh file printf "$SOURCE_STR" > "$HOME/.wasmer/wasmer.sh" From e68f5e10e4ed698b902f98217a265972c5bbb7b8 Mon Sep 17 00:00:00 2001 From: Syrus Date: Tue, 30 Apr 2019 11:47:03 -0700 Subject: [PATCH 354/413] Improved emscripten functions to be able to run jsc --- lib/emscripten/src/emscripten_target.rs | 36 +++++++++++++++++++++++++ lib/emscripten/src/exception.rs | 6 +++++ lib/emscripten/src/lib.rs | 12 ++++++++- lib/emscripten/src/math.rs | 5 ++++ lib/emscripten/src/process.rs | 7 ++++- 5 files changed, 64 insertions(+), 2 deletions(-) diff --git a/lib/emscripten/src/emscripten_target.rs b/lib/emscripten/src/emscripten_target.rs index 5b14a1099..08a7ef516 100644 --- a/lib/emscripten/src/emscripten_target.rs +++ b/lib/emscripten/src/emscripten_target.rs @@ -15,6 +15,15 @@ pub fn getTempRet0(ctx: &mut Ctx) -> i32 { get_emscripten_data(ctx).temp_ret_0 } +pub fn _atexit(_ctx: &mut Ctx, _func: i32) -> i32 { + debug!("emscripten::_atexit"); + // TODO: implement atexit properly + // __ATEXIT__.unshift({ + // func: func, + // arg: arg + // }); + 0 +} pub fn __Unwind_Backtrace(_ctx: &mut Ctx, _a: i32, _b: i32) -> i32 { debug!("emscripten::__Unwind_Backtrace"); 0 @@ -45,14 +54,37 @@ pub fn _dladdr(_ctx: &mut Ctx, _a: i32, _b: i32) -> i32 { debug!("emscripten::_dladdr"); 0 } +pub fn _pthread_attr_init(_ctx: &mut Ctx, _a: i32) -> i32 { + debug!("emscripten::_pthread_attr_init"); + 0 +} +pub fn _pthread_attr_destroy(_ctx: &mut Ctx, _a: i32) -> i32 { + debug!("emscripten::_pthread_attr_destroy"); + 0 +} +pub fn _pthread_attr_getstack(_ctx: &mut Ctx, _stackaddr: i32, _stacksize: i32, _other: i32) -> i32 { + debug!("emscripten::_pthread_attr_getstack"); + // TODO: Translate from Emscripten + // HEAP32[stackaddr >> 2] = STACK_BASE; + // HEAP32[stacksize >> 2] = TOTAL_STACK; + 0 +} pub fn _pthread_cond_destroy(_ctx: &mut Ctx, _a: i32) -> i32 { debug!("emscripten::_pthread_cond_destroy"); 0 } +pub fn _pthread_cond_timedwait(_ctx: &mut Ctx, _a: i32, _b: i32, _c: i32) -> i32 { + debug!("emscripten::_pthread_cond_timedwait"); + 0 +} pub fn _pthread_getspecific(_ctx: &mut Ctx, _a: i32) -> i32 { debug!("emscripten::_pthread_getspecific"); 0 } +pub fn _pthread_getattr_np(_ctx: &mut Ctx, _thread: i32, _attr: i32) -> i32 { + debug!("emscripten::_pthread_getattr_np"); + 0 +} pub fn _pthread_setspecific(_ctx: &mut Ctx, _a: i32, _b: i32) -> i32 { debug!("emscripten::_pthread_setspecific"); 0 @@ -69,6 +101,10 @@ pub fn _pthread_create(_ctx: &mut Ctx, _a: i32, _b: i32, _c: i32, _d: i32) -> i3 debug!("emscripten::_pthread_create"); 0 } +pub fn _pthread_detach(_ctx: &mut Ctx, _a: i32) -> i32 { + debug!("emscripten::_pthread_detach"); + 0 +} pub fn _pthread_join(_ctx: &mut Ctx, _a: i32, _b: i32) -> i32 { debug!("emscripten::_pthread_join"); 0 diff --git a/lib/emscripten/src/exception.rs b/lib/emscripten/src/exception.rs index 1f2b098d8..f37c015e5 100644 --- a/lib/emscripten/src/exception.rs +++ b/lib/emscripten/src/exception.rs @@ -28,3 +28,9 @@ pub fn ___cxa_uncaught_exception(_ctx: &mut Ctx) -> i32 { debug!("emscripten::___cxa_uncaught_exception"); -1 } + +pub fn ___cxa_pure_virtual(_ctx: &mut Ctx) { + debug!("emscripten::___cxa_pure_virtual"); + // ABORT = true + panic!("Pure virtual function called!"); +} diff --git a/lib/emscripten/src/lib.rs b/lib/emscripten/src/lib.rs index c41e4b96d..116a0e88d 100644 --- a/lib/emscripten/src/lib.rs +++ b/lib/emscripten/src/lib.rs @@ -619,6 +619,7 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject "_llvm_eh_typeid_for" => func!(crate::process::_llvm_eh_typeid_for), "_raise" => func!(crate::process::_raise), "_sem_init" => func!(crate::process::_sem_init), + "_sem_destroy" => func!(crate::process::_sem_destroy), "_sem_post" => func!(crate::process::_sem_post), "_sem_wait" => func!(crate::process::_sem_wait), "_getgrent" => func!(crate::process::_getgrent), @@ -658,6 +659,7 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject "___cxa_begin_catch" => func!(crate::exception::___cxa_begin_catch), "___cxa_end_catch" => func!(crate::exception::___cxa_end_catch), "___cxa_uncaught_exception" => func!(crate::exception::___cxa_uncaught_exception), + "___cxa_pure_virtual" => func!(crate::exception::___cxa_pure_virtual), // Time "_gettimeofday" => func!(crate::time::_gettimeofday), @@ -686,6 +688,7 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject "_llvm_cos_f64" => func!(crate::math::_llvm_cos_f64), "_llvm_exp2_f32" => func!(crate::math::_llvm_exp2_f32), "_llvm_exp2_f64" => func!(crate::math::_llvm_exp2_f64), + "_llvm_trunc_f64" => func!(crate::math::_llvm_trunc_f64), "_emscripten_random" => func!(crate::math::_emscripten_random), // Jump @@ -704,6 +707,7 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject "_dlsym" => func!(crate::linking::_dlsym), // wasm32-unknown-emscripten + "_atexit" => func!(crate::emscripten_target::_atexit), "setTempRet0" => func!(crate::emscripten_target::setTempRet0), "getTempRet0" => func!(crate::emscripten_target::getTempRet0), "invoke_i" => func!(crate::emscripten_target::invoke_i), @@ -726,10 +730,15 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject "___resumeException" => func!(crate::emscripten_target::___resumeException), "_dladdr" => func!(crate::emscripten_target::_dladdr), "_pthread_create" => func!(crate::emscripten_target::_pthread_create), + "_pthread_detach" => func!(crate::emscripten_target::_pthread_detach), "_pthread_join" => func!(crate::emscripten_target::_pthread_join), - "_pthread_cond_destroy" => func!(crate::emscripten_target::_pthread_cond_destroy), + "_pthread_attr_init" => func!(crate::emscripten_target::_pthread_attr_init), + "_pthread_attr_destroy" => func!(crate::emscripten_target::_pthread_attr_destroy), + "_pthread_attr_getstack" => func!(crate::emscripten_target::_pthread_attr_getstack), "_pthread_cond_init" => func!(crate::emscripten_target::_pthread_cond_init), + "_pthread_cond_destroy" => func!(crate::emscripten_target::_pthread_cond_destroy), "_pthread_cond_signal" => func!(crate::emscripten_target::_pthread_cond_signal), + "_pthread_cond_timedwait" => func!(crate::emscripten_target::_pthread_cond_timedwait), "_pthread_cond_wait" => func!(crate::emscripten_target::_pthread_cond_wait), "_pthread_condattr_destroy" => func!(crate::emscripten_target::_pthread_condattr_destroy), "_pthread_condattr_init" => func!(crate::emscripten_target::_pthread_condattr_init), @@ -743,6 +752,7 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject "_pthread_rwlock_unlock" => func!(crate::emscripten_target::_pthread_rwlock_unlock), "_pthread_setcancelstate" => func!(crate::emscripten_target::_pthread_setcancelstate), "_pthread_getspecific" => func!(crate::emscripten_target::_pthread_getspecific), + "_pthread_getattr_np" => func!(crate::emscripten_target::_pthread_getattr_np), "_pthread_setspecific" => func!(crate::emscripten_target::_pthread_setspecific), "_pthread_once" => func!(crate::emscripten_target::_pthread_once), "_pthread_key_create" => func!(crate::emscripten_target::_pthread_key_create), diff --git a/lib/emscripten/src/math.rs b/lib/emscripten/src/math.rs index e0eb10c7d..3256b49c5 100644 --- a/lib/emscripten/src/math.rs +++ b/lib/emscripten/src/math.rs @@ -44,6 +44,11 @@ pub fn _llvm_exp2_f64(_ctx: &mut Ctx, value: f64) -> f64 { 2f64.powf(value) } +pub fn _llvm_trunc_f64(_ctx: &mut Ctx, value: f64) -> f64 { + debug!("emscripten::_llvm_trunc_f64"); + value.trunc() +} + pub fn _emscripten_random(_ctx: &mut Ctx) -> f64 { debug!("emscripten::_emscripten_random"); -1.0 diff --git a/lib/emscripten/src/process.rs b/lib/emscripten/src/process.rs index 4c6e33e70..bd21e69bf 100644 --- a/lib/emscripten/src/process.rs +++ b/lib/emscripten/src/process.rs @@ -83,7 +83,12 @@ pub fn _raise(_ctx: &mut Ctx, _one: i32) -> i32 { pub fn _sem_init(_ctx: &mut Ctx, _one: i32, _two: i32, _three: i32) -> i32 { debug!("emscripten::_sem_init"); - -1 + 0 +} + +pub fn _sem_destroy(_ctx: &mut Ctx, _one: i32) -> i32 { + debug!("emscripten::_sem_destroy"); + 0 } pub fn _sem_post(_ctx: &mut Ctx, _one: i32) -> i32 { From 747e5321a2af62de14e3c8e2b9a98fefee8ccb94 Mon Sep 17 00:00:00 2001 From: Syrus Date: Tue, 30 Apr 2019 12:05:13 -0700 Subject: [PATCH 355/413] Fixed issues. Updated CHANGELOG --- CHANGELOG.md | 1 + lib/emscripten/src/emscripten_target.rs | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 37b1390ec..6d3fffc86 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ All PRs to the Wasmer repository must add to this file. Blocks of changes will separated by version increments. ## **[Unreleased]** +- [#409](https://github.com/wasmerio/wasmer/pull/409) Improved Emscripten functions to run JavascriptCore compiled to wasm - [#399](https://github.com/wasmerio/wasmer/pull/399) Add example of using a plugin extended from WASI - [#397](https://github.com/wasmerio/wasmer/pull/397) Fix WASI fs abstraction to work on Windows - [#390](https://github.com/wasmerio/wasmer/pull/390) Pin released wapm version and add it as a git submodule diff --git a/lib/emscripten/src/emscripten_target.rs b/lib/emscripten/src/emscripten_target.rs index 08a7ef516..8e107bd3c 100644 --- a/lib/emscripten/src/emscripten_target.rs +++ b/lib/emscripten/src/emscripten_target.rs @@ -62,7 +62,12 @@ pub fn _pthread_attr_destroy(_ctx: &mut Ctx, _a: i32) -> i32 { debug!("emscripten::_pthread_attr_destroy"); 0 } -pub fn _pthread_attr_getstack(_ctx: &mut Ctx, _stackaddr: i32, _stacksize: i32, _other: i32) -> i32 { +pub fn _pthread_attr_getstack( + _ctx: &mut Ctx, + _stackaddr: i32, + _stacksize: i32, + _other: i32, +) -> i32 { debug!("emscripten::_pthread_attr_getstack"); // TODO: Translate from Emscripten // HEAP32[stackaddr >> 2] = STACK_BASE; From ec253c73ab6530902b4040235ea29d5fa00f29a5 Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Tue, 30 Apr 2019 20:11:44 -0500 Subject: [PATCH 356/413] Implement feed_local --- lib/llvm-backend/src/code.rs | 326 +++++++++++++++----------- lib/spectests/examples/simple/main.rs | 4 +- 2 files changed, 187 insertions(+), 143 deletions(-) diff --git a/lib/llvm-backend/src/code.rs b/lib/llvm-backend/src/code.rs index 42474a79b..f5b5e9c2e 100644 --- a/lib/llvm-backend/src/code.rs +++ b/lib/llvm-backend/src/code.rs @@ -25,11 +25,11 @@ use wasmparser::{ Type as WpType, }; +use crate::backend::LLVMBackend; use crate::intrinsics::{CtxType, GlobalCache, Intrinsics, MemoryCache}; use crate::read_info::type_to_type; use crate::state::{ControlFrame, IfElseState, State}; use crate::trampolines::generate_trampolines; -use crate::backend::LLVMBackend; fn func_sig_to_llvm(context: &Context, intrinsics: &Intrinsics, sig: &FuncSig) -> FunctionType { let user_param_types = sig.params().iter().map(|&ty| type_to_llvm(intrinsics, ty)); @@ -2476,7 +2476,7 @@ pub struct LLVMModuleCodeGenerator { builder: Builder, functions: Vec, functions_llvm: Map, -// signatures: Option>>, + // signatures: Option>>, signatures: Map, signatures_raw: Map, function_signatures: Option>>, @@ -2486,7 +2486,7 @@ pub struct LLVMModuleCodeGenerator { intrinsics: Intrinsics, personality_func: FunctionValue, module: Module, -// ctx: CtxType, + // ctx: CtxType, } // pub struct LLVMExecutionContext { @@ -2518,8 +2518,8 @@ pub struct LLVMFunctionCodeGenerator { // br_table_data: Option>>, // breakpoints: Option>>, // returns: SmallVec<[WpType; 1]>, - locals: Vec, - // num_params: usize, + locals: Vec, // Contains params and locals + num_params: usize, // num_locals: usize, // value_stack: Vec<(Location, LocalOrTemp)>, // control_stack: Vec, @@ -2529,15 +2529,40 @@ pub struct LLVMFunctionCodeGenerator { impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { fn feed_return(&mut self, ty: WpType) -> Result<(), CodegenError> { - unimplemented!() + Ok(()) } fn feed_param(&mut self, ty: WpType) -> Result<(), CodegenError> { - unimplemented!() + Ok(()) } fn feed_local(&mut self, ty: WpType, n: usize) -> Result<(), CodegenError> { - unimplemented!() + let param_len = self.num_params; + + let mut local_idx = 0; + // let (count, ty) = local?; + let count = n; + let wasmer_ty = type_to_type(ty)?; + let ty = type_to_llvm(self.intrinsics, wasmer_ty); + + let default_value = match wasmer_ty { + Type::I32 => self.intrinsics.i32_zero.as_basic_value_enum(), + Type::I64 => self.intrinsics.i64_zero.as_basic_value_enum(), + Type::F32 => self.intrinsics.f32_zero.as_basic_value_enum(), + Type::F64 => self.intrinsics.f64_zero.as_basic_value_enum(), + }; + + for _ in 0..count { + let alloca = self + .builder + .build_alloca(ty, &format!("local{}", param_len + local_idx)); + + self.builder.build_store(alloca, default_value); + + self.locals.push(alloca); + local_idx += 1; + } + Ok(()) } fn begin_body(&mut self) -> Result<(), CodegenError> { @@ -2545,75 +2570,73 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { } fn feed_event(&mut self, event: Event, module_info: &ModuleInfo) -> Result<(), CodegenError> { - -// let sig_index = info.func_assoc[func_index.convert_up(info)]; -// let func_sig = &info.signatures[sig_index]; -// -// let function = self.functions[func_index]; -// let mut state = State::new(); -// let entry_block = context.append_basic_block(&function, "entry"); -// -// let return_block = context.append_basic_block(&function, "return"); -// builder.position_at_end(&return_block); -// -// let phis: SmallVec<[PhiValue; 1]> = func_sig -// .returns() -// .iter() -// .map(|&wasmer_ty| type_to_llvm(intrinsics, wasmer_ty)) -// .map(|ty| builder.build_phi(ty, &state.var_name())) -// .collect(); -// -// state.push_block(return_block, phis); -// builder.position_at_end(&entry_block); -// -// let mut locals = Vec::with_capacity(locals_reader.get_count() as usize); // TODO fix capacity -// -// locals.extend( -// function -// .get_param_iter() -// .skip(1) -// .enumerate() -// .map(|(index, param)| { -// let ty = param.get_type(); -// -// let alloca = builder.build_alloca(ty, &format!("local{}", index)); -// builder.build_store(alloca, param); -// alloca -// }), -// ); -// -// let param_len = locals.len(); -// -// let mut local_idx = 0; -// for local in locals_reader.into_iter() { -// let (count, ty) = local?; -// let wasmer_ty = type_to_type(ty)?; -// let ty = type_to_llvm(intrinsics, wasmer_ty); -// -// let default_value = match wasmer_ty { -// Type::I32 => intrinsics.i32_zero.as_basic_value_enum(), -// Type::I64 => intrinsics.i64_zero.as_basic_value_enum(), -// Type::F32 => intrinsics.f32_zero.as_basic_value_enum(), -// Type::F64 => intrinsics.f64_zero.as_basic_value_enum(), -// }; -// -// for _ in 0..count { -// let alloca = builder.build_alloca(ty, &format!("local{}", param_len + local_idx)); -// -// builder.build_store(alloca, default_value); -// -// locals.push(alloca); -// local_idx += 1; -// } -// } -// -// let start_of_code_block = context.append_basic_block(&function, "start_of_code"); -// let entry_end_inst = builder.build_unconditional_branch(&start_of_code_block); -// builder.position_at_end(&start_of_code_block); -// -// let cache_builder = context.create_builder(); -// cache_builder.position_before(&entry_end_inst); - + // let sig_index = info.func_assoc[func_index.convert_up(info)]; + // let func_sig = &info.signatures[sig_index]; + // + // let function = self.functions[func_index]; + // let mut state = State::new(); + // let entry_block = context.append_basic_block(&function, "entry"); + // + // let return_block = context.append_basic_block(&function, "return"); + // builder.position_at_end(&return_block); + // + // let phis: SmallVec<[PhiValue; 1]> = func_sig + // .returns() + // .iter() + // .map(|&wasmer_ty| type_to_llvm(intrinsics, wasmer_ty)) + // .map(|ty| builder.build_phi(ty, &state.var_name())) + // .collect(); + // + // state.push_block(return_block, phis); + // builder.position_at_end(&entry_block); + // + // let mut locals = Vec::with_capacity(locals_reader.get_count() as usize); // TODO fix capacity + // + // locals.extend( + // function + // .get_param_iter() + // .skip(1) + // .enumerate() + // .map(|(index, param)| { + // let ty = param.get_type(); + // + // let alloca = builder.build_alloca(ty, &format!("local{}", index)); + // builder.build_store(alloca, param); + // alloca + // }), + // ); + // + // let param_len = locals.len(); + // + // let mut local_idx = 0; + // for local in locals_reader.into_iter() { + // let (count, ty) = local?; + // let wasmer_ty = type_to_type(ty)?; + // let ty = type_to_llvm(intrinsics, wasmer_ty); + // + // let default_value = match wasmer_ty { + // Type::I32 => intrinsics.i32_zero.as_basic_value_enum(), + // Type::I64 => intrinsics.i64_zero.as_basic_value_enum(), + // Type::F32 => intrinsics.f32_zero.as_basic_value_enum(), + // Type::F64 => intrinsics.f64_zero.as_basic_value_enum(), + // }; + // + // for _ in 0..count { + // let alloca = builder.build_alloca(ty, &format!("local{}", param_len + local_idx)); + // + // builder.build_store(alloca, default_value); + // + // locals.push(alloca); + // local_idx += 1; + // } + // } + // + // let start_of_code_block = context.append_basic_block(&function, "start_of_code"); + // let entry_end_inst = builder.build_unconditional_branch(&start_of_code_block); + // builder.position_at_end(&start_of_code_block); + // + // let cache_builder = context.create_builder(); + // cache_builder.position_before(&entry_end_inst); let mut state = &mut self.state; let builder = self.builder; @@ -2624,14 +2647,12 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { let info = module_info; let signatures = &self.signatures; - // TODO this should be done only once per function I believe // just adding here to get compilation let cache_builder = context.create_builder(); -// cache_builder.position_before(&entry_end_inst); + // cache_builder.position_before(&entry_end_inst); let mut ctx = intrinsics.ctx(info, builder, &function, cache_builder); -// self.ctx; - + // self.ctx; let op = match event { Event::Wasm(x) => x, @@ -2646,7 +2667,7 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { match *op { Operator::Block { ty: _ } | Operator::Loop { ty: _ } | Operator::If { ty: _ } => { unreachable_depth += 1; -// continue; + // continue; return Ok(()); } Operator::Else => { @@ -2803,7 +2824,8 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { .iter() .enumerate() .map(|(case_index, &depth)| { - let frame_result: Result<&ControlFrame, BinaryReaderError> = state.frame_at_depth(depth); + let frame_result: Result<&ControlFrame, BinaryReaderError> = + state.frame_at_depth(depth); let frame = match frame_result { Ok(v) => v, Err(e) => return Err(e), @@ -4572,7 +4594,6 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { } unimplemented!() - } fn finalize(&mut self) -> Result<(), CodegenError> { @@ -4582,7 +4603,9 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { impl From for CodegenError { fn from(other: BinaryReaderError) -> CodegenError { - CodegenError { message: format!("{:?}", other) } + CodegenError { + message: format!("{:?}", other), + } } } @@ -4590,43 +4613,42 @@ impl ModuleCodeGenerator for LLVMModuleCodeGenerator { fn new() -> LLVMModuleCodeGenerator { - let context = Context::create(); - let module = context.create_module("module"); - let builder = context.create_builder(); + let context = Context::create(); + let module = context.create_module("module"); + let builder = context.create_builder(); - let intrinsics = Intrinsics::declare(&module, &context); - - let personality_func = module.add_function( - "__gxx_personality_v0", - intrinsics.i32_ty.fn_type(&[], false), - Some(Linkage::External), - ); + let intrinsics = Intrinsics::declare(&module, &context); + let personality_func = module.add_function( + "__gxx_personality_v0", + intrinsics.i32_ty.fn_type(&[], false), + Some(Linkage::External), + ); // TODO signatures and functions -// let signatures: Map = info -// .signatures -// .iter() -// .map(|(_, sig)| func_sig_to_llvm(&context, &intrinsics, sig)) -// .collect(); - let signatures = Map::new(); -// let functions: Map = info -// .func_assoc -// .iter() -// .skip(info.imported_functions.len()) -// .map(|(func_index, &sig_index)| { -// let func = module.add_function( -// &format!("fn{}", func_index.index()), -// signatures[sig_index], -// Some(Linkage::External), -// ); -// func.set_personality_function(personality_func); -// func -// }) -// .collect(); + // let signatures: Map = info + // .signatures + // .iter() + // .map(|(_, sig)| func_sig_to_llvm(&context, &intrinsics, sig)) + // .collect(); + let signatures = Map::new(); + // let functions: Map = info + // .func_assoc + // .iter() + // .skip(info.imported_functions.len()) + // .map(|(func_index, &sig_index)| { + // let func = module.add_function( + // &format!("fn{}", func_index.index()), + // signatures[sig_index], + // Some(Linkage::External), + // ); + // func.set_personality_function(personality_func); + // func + // }) + // .collect(); let functions = Map::new(); -// let mut ctx = intrinsics.ctx(info, builder, &function, cache_builder); + // let mut ctx = intrinsics.ctx(info, builder, &function, cache_builder); LLVMModuleCodeGenerator { context: context, @@ -4642,7 +4664,7 @@ impl ModuleCodeGenerator func_import_count: 0, intrinsics: intrinsics, personality_func: personality_func, -// ctx: ctx, + // ctx: ctx, } } @@ -4659,42 +4681,61 @@ impl ModuleCodeGenerator use std::mem; - let sig_id = self.function_signatures.as_ref().unwrap()[FuncIndex::new(self.func_import_count + self.functions.len())]; + let sig_id = self.function_signatures.as_ref().unwrap() + [FuncIndex::new(self.func_import_count + self.functions.len())]; let func_sig = self.signatures_raw[sig_id].clone(); - let func = self.module.add_function( + let function = self.module.add_function( &format!("fn{}", self.func_import_count + self.functions.len()), self.signatures[sig_id], Some(Linkage::External), ); - func.set_personality_function(self.personality_func); + function.set_personality_function(self.personality_func); + + let mut locals = Vec::new(); + locals.extend( + function + .get_param_iter() + .skip(1) + .enumerate() + .map(|(index, param)| { + let ty = param.get_type(); + + let alloca = self.builder.build_alloca(ty, &format!("local{}", index)); + self.builder.build_store(alloca, param); + alloca + }), + ); + let num_params = locals.len(); let code = LLVMFunctionCodeGenerator { state: State::new(), builder: unsafe { ::std::mem::transmute::<&Builder, &'static Builder>(&self.builder) }, context: unsafe { ::std::mem::transmute::<&Context, &'static Context>(&self.context) }, - function: func, + function, func_sig: func_sig, - locals: vec![], + locals, signatures: self.signatures.clone(), -// context: self.fu + // context: self.fu -// signatures: self.signatures.as_ref().unwrap().clone(), -// function_signatures: self.function_signatures.as_ref().unwrap().clone(), -// -// assembler: Some(assembler), -// function_labels: Some(function_labels), -// br_table_data: Some(br_table_data), -// breakpoints: Some(breakpoints), -// returns: smallvec![], -// locals: vec![], -// num_params: 0, -// num_locals: 0, -// value_stack: vec![], -// control_stack: vec![], -// machine: Machine::new(), -// unreachable_depth: 0, - intrinsics: unsafe { ::std::mem::transmute::<&Intrinsics, &'static Intrinsics>(&self.intrinsics) }, + // signatures: self.signatures.as_ref().unwrap().clone(), + // function_signatures: self.function_signatures.as_ref().unwrap().clone(), + // + // assembler: Some(assembler), + // function_labels: Some(function_labels), + // br_table_data: Some(br_table_data), + // breakpoints: Some(breakpoints), + // returns: smallvec![], + // locals: vec![], + num_params, + // num_locals: 0, + // value_stack: vec![], + // control_stack: vec![], + // machine: Machine::new(), + // unreachable_depth: 0, + intrinsics: unsafe { + ::std::mem::transmute::<&Intrinsics, &'static Intrinsics>(&self.intrinsics) + }, }; self.functions.push(code); Ok(self.functions.last_mut().unwrap()) @@ -4713,7 +4754,10 @@ impl ModuleCodeGenerator Ok(()) } - fn feed_function_signatures(&mut self, assoc: Map) -> Result<(), CodegenError> { + fn feed_function_signatures( + &mut self, + assoc: Map, + ) -> Result<(), CodegenError> { self.function_signatures = Some(Arc::new(assoc)); Ok(()) } @@ -4722,4 +4766,4 @@ impl ModuleCodeGenerator self.func_import_count += 1; Ok(()) } -} \ No newline at end of file +} diff --git a/lib/spectests/examples/simple/main.rs b/lib/spectests/examples/simple/main.rs index 8ac05dedb..357adb5f7 100644 --- a/lib/spectests/examples/simple/main.rs +++ b/lib/spectests/examples/simple/main.rs @@ -18,8 +18,8 @@ fn get_compiler() -> impl Compiler { #[cfg(feature = "llvm")] fn get_compiler() -> impl Compiler { - use wasmer_llvm_backend::LLVMStreamingCompiler; - LLVMStreamingCompiler::new() + use wasmer_llvm_backend::LLVMCompiler; + LLVMCompiler::new() } #[cfg(feature = "singlepass")] From 0ee2ba0ee6fc0828ac29a29848dc7f64fa1031f5 Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Tue, 30 Apr 2019 23:22:41 -0500 Subject: [PATCH 357/413] Implement more of next_function and finalize --- lib/llvm-backend/src/code.rs | 52 +++++++++++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 4 deletions(-) diff --git a/lib/llvm-backend/src/code.rs b/lib/llvm-backend/src/code.rs index f5b5e9c2e..1a309dcfe 100644 --- a/lib/llvm-backend/src/code.rs +++ b/lib/llvm-backend/src/code.rs @@ -4593,11 +4593,11 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { } } - unimplemented!() + Ok(()) } fn finalize(&mut self) -> Result<(), CodegenError> { - unimplemented!() + Ok(()) } } @@ -4692,6 +4692,22 @@ impl ModuleCodeGenerator ); function.set_personality_function(self.personality_func); + let mut state = State::new(); + let entry_block = self.context.append_basic_block(&function, "entry"); + + let return_block = self.context.append_basic_block(&function, "return"); + self.builder.position_at_end(&return_block); + + let phis: SmallVec<[PhiValue; 1]> = func_sig + .returns() + .iter() + .map(|&wasmer_ty| type_to_llvm(&self.intrinsics, wasmer_ty)) + .map(|ty| self.builder.build_phi(ty, &state.var_name())) + .collect(); + + state.push_block(return_block, phis); + self.builder.position_at_end(&entry_block); + let mut locals = Vec::new(); locals.extend( function @@ -4709,7 +4725,7 @@ impl ModuleCodeGenerator let num_params = locals.len(); let code = LLVMFunctionCodeGenerator { - state: State::new(), + state, builder: unsafe { ::std::mem::transmute::<&Builder, &'static Builder>(&self.builder) }, context: unsafe { ::std::mem::transmute::<&Context, &'static Context>(&self.context) }, function, @@ -4742,7 +4758,35 @@ impl ModuleCodeGenerator } fn finalize(self, module_info: &ModuleInfo) -> Result { - unimplemented!() +// self.module.print_to_stderr(); + + generate_trampolines( + module_info, + &self.signatures, + &self.module, + &self.context, + &self.builder, + &self.intrinsics, + ); + + let pass_manager = PassManager::create_for_module(); + // pass_manager.add_verifier_pass(); + pass_manager.add_function_inlining_pass(); + pass_manager.add_promote_memory_to_register_pass(); + pass_manager.add_cfg_simplification_pass(); + // pass_manager.add_instruction_combining_pass(); + pass_manager.add_aggressive_inst_combiner_pass(); + pass_manager.add_merged_load_store_motion_pass(); + // pass_manager.add_sccp_pass(); + // pass_manager.add_gvn_pass(); + pass_manager.add_new_gvn_pass(); + pass_manager.add_aggressive_dce_pass(); + pass_manager.run_on_module(&self.module); + + // self.module.print_to_stderr(); + + let (backend, _cache_gen) = LLVMBackend::new(self.module, self.intrinsics); + Ok(backend) } fn feed_signatures(&mut self, signatures: Map) -> Result<(), CodegenError> { From b016ec6b344e63bf18d3f90b3926c531288e2071 Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Tue, 30 Apr 2019 23:44:34 -0500 Subject: [PATCH 358/413] Add start_of_code_block to function --- lib/llvm-backend/src/code.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/llvm-backend/src/code.rs b/lib/llvm-backend/src/code.rs index 1a309dcfe..f9bfba26b 100644 --- a/lib/llvm-backend/src/code.rs +++ b/lib/llvm-backend/src/code.rs @@ -4724,6 +4724,12 @@ impl ModuleCodeGenerator ); let num_params = locals.len(); + let start_of_code_block = self.context.append_basic_block(&function, "start_of_code"); + let entry_end_inst = self + .builder + .build_unconditional_branch(&start_of_code_block); + self.builder.position_at_end(&start_of_code_block); + let code = LLVMFunctionCodeGenerator { state, builder: unsafe { ::std::mem::transmute::<&Builder, &'static Builder>(&self.builder) }, From f2defcd61528a6cdaa42e30cc14382966177840a Mon Sep 17 00:00:00 2001 From: Ivan Enderlin Date: Wed, 1 May 2019 14:50:39 +0200 Subject: [PATCH 359/413] doc(readme) Add `ruby-ext-wasm`. --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d38ab5c88..b78db7314 100644 --- a/README.md +++ b/README.md @@ -27,10 +27,12 @@ curl https://get.wasmer.io -sSfL | sh ``` Wasmer runtime can also be embedded in different languages, so you can use WebAssembly anywhere ✨: + * [**Rust**](https://github.com/wasmerio/wasmer-rust-example) * [**C/C++**](https://github.com/wasmerio/wasmer-c-api) -* [**PHP**](https://github.com/wasmerio/php-ext-wasm) -* [**Python**](https://github.com/wasmerio/python-ext-wasm) +* [**🐘 PHP**](https://github.com/wasmerio/php-ext-wasm) +* [**🐍 Python**](https://github.com/wasmerio/python-ext-wasm) +* [**💎 Ruby**](https://github.com/wasmerio/ruby-ext-wasm) ### Usage From 67c4d74eb4b6ec35886c5229a7686f3752577b7c Mon Sep 17 00:00:00 2001 From: Syrus Akbary Date: Wed, 1 May 2019 11:28:14 -0700 Subject: [PATCH 360/413] Update middleware version to 0.4.0 --- lib/middleware-common/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/middleware-common/Cargo.toml b/lib/middleware-common/Cargo.toml index 9abb4041a..7fc44fe43 100644 --- a/lib/middleware-common/Cargo.toml +++ b/lib/middleware-common/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-middleware-common" -version = "0.3.0" +version = "0.4.0" repository = "https://github.com/wasmerio/wasmer" description = "Wasmer runtime common middlewares" license = "MIT" From c0a5f74d0cea2de3f4754bc2ce0631330ac2354f Mon Sep 17 00:00:00 2001 From: Syrus Akbary Date: Wed, 1 May 2019 11:32:57 -0700 Subject: [PATCH 361/413] Update lib/middleware-common/Cargo.toml --- lib/middleware-common/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/middleware-common/Cargo.toml b/lib/middleware-common/Cargo.toml index 7fc44fe43..9f1c6984f 100644 --- a/lib/middleware-common/Cargo.toml +++ b/lib/middleware-common/Cargo.toml @@ -8,4 +8,4 @@ authors = ["The Wasmer Engineering Team "] edition = "2018" [dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.3.0" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.4.0" } From 5e37368ec9987f6d2c882c773d23316e1f7ab178 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Thu, 2 May 2019 11:09:57 +0200 Subject: [PATCH 362/413] Exception logging (win32): Handle error codes correctly, add some more strings. --- lib/clif-backend/src/signal/unix.rs | 2 +- lib/clif-backend/src/signal/windows.rs | 37 ++++++++++++++----- lib/singlepass-backend/src/protect_unix.rs | 2 +- .../exception_handling/exception_handling.c | 11 ++++-- 4 files changed, 37 insertions(+), 15 deletions(-) diff --git a/lib/clif-backend/src/signal/unix.rs b/lib/clif-backend/src/signal/unix.rs index 343203b9c..a56613384 100644 --- a/lib/clif-backend/src/signal/unix.rs +++ b/lib/clif-backend/src/signal/unix.rs @@ -107,7 +107,7 @@ pub fn call_protected( Ok(SIGSEGV) => "segmentation violation", Ok(SIGBUS) => "bus error", Err(_) => "error while getting the Signal", - _ => "unkown trapped signal", + _ => "unknown trapped signal", }; // When the trap-handler is fully implemented, this will return more information. let s = format!("unknown trap at {:p} - {}", faulting_addr, signal); diff --git a/lib/clif-backend/src/signal/windows.rs b/lib/clif-backend/src/signal/windows.rs index 30cb44ce6..d755cd575 100644 --- a/lib/clif-backend/src/signal/windows.rs +++ b/lib/clif-backend/src/signal/windows.rs @@ -4,7 +4,6 @@ use crate::trampoline::Trampoline; use std::cell::Cell; use std::ffi::c_void; use std::ptr::{self, NonNull}; -use wasmer_runtime_core::error::{RuntimeError, RuntimeResult}; use wasmer_runtime_core::typed_func::WasmTrapInfo; use wasmer_runtime_core::vm::Ctx; use wasmer_runtime_core::vm::Func; @@ -12,10 +11,14 @@ use wasmer_win_exception_handler::CallProtectedData; pub use wasmer_win_exception_handler::_call_protected; use winapi::shared::minwindef::DWORD; use winapi::um::minwinbase::{ - EXCEPTION_ACCESS_VIOLATION, EXCEPTION_FLT_DENORMAL_OPERAND, EXCEPTION_FLT_DIVIDE_BY_ZERO, + EXCEPTION_ACCESS_VIOLATION, EXCEPTION_ARRAY_BOUNDS_EXCEEDED, EXCEPTION_BREAKPOINT, + EXCEPTION_DATATYPE_MISALIGNMENT, EXCEPTION_FLT_DENORMAL_OPERAND, EXCEPTION_FLT_DIVIDE_BY_ZERO, EXCEPTION_FLT_INEXACT_RESULT, EXCEPTION_FLT_INVALID_OPERATION, EXCEPTION_FLT_OVERFLOW, - EXCEPTION_FLT_STACK_CHECK, EXCEPTION_FLT_UNDERFLOW, EXCEPTION_ILLEGAL_INSTRUCTION, - EXCEPTION_INT_DIVIDE_BY_ZERO, EXCEPTION_INT_OVERFLOW, EXCEPTION_STACK_OVERFLOW, + EXCEPTION_FLT_STACK_CHECK, EXCEPTION_FLT_UNDERFLOW, EXCEPTION_GUARD_PAGE, + EXCEPTION_ILLEGAL_INSTRUCTION, EXCEPTION_INT_DIVIDE_BY_ZERO, EXCEPTION_INT_OVERFLOW, + EXCEPTION_INVALID_HANDLE, EXCEPTION_IN_PAGE_ERROR, EXCEPTION_NONCONTINUABLE_EXCEPTION, + EXCEPTION_POSSIBLE_DEADLOCK, EXCEPTION_PRIV_INSTRUCTION, EXCEPTION_SINGLE_STEP, + EXCEPTION_STACK_OVERFLOW, }; thread_local! { @@ -43,7 +46,7 @@ pub fn call_protected( } let CallProtectedData { - code: signum, + code, exception_address, instruction_pointer, } = result.unwrap_err(); @@ -53,7 +56,7 @@ pub fn call_protected( srcloc: _, }) = handler_data.lookup(instruction_pointer as _) { - Err(CallProtError::Trap(match signum as DWORD { + Err(CallProtError::Trap(match code as DWORD { EXCEPTION_ACCESS_VIOLATION => WasmTrapInfo::MemoryOutOfBounds, EXCEPTION_ILLEGAL_INSTRUCTION => match trapcode { TrapCode::BadSignature => WasmTrapInfo::IncorrectCallIndirectSignature, @@ -70,7 +73,7 @@ pub fn call_protected( _ => WasmTrapInfo::Unknown, })) } else { - let signal = match signum as DWORD { + let signal = match code as DWORD { EXCEPTION_FLT_DENORMAL_OPERAND | EXCEPTION_FLT_DIVIDE_BY_ZERO | EXCEPTION_FLT_INEXACT_RESULT @@ -80,10 +83,26 @@ pub fn call_protected( | EXCEPTION_FLT_UNDERFLOW => "floating-point exception", EXCEPTION_ILLEGAL_INSTRUCTION => "illegal instruction", EXCEPTION_ACCESS_VIOLATION => "segmentation violation", - _ => "unkown trapped signal", + EXCEPTION_DATATYPE_MISALIGNMENT => "datatype misalignment", + EXCEPTION_BREAKPOINT => "breakpoint", + EXCEPTION_SINGLE_STEP => "single step", + EXCEPTION_ARRAY_BOUNDS_EXCEEDED => "array bounds exceeded", + EXCEPTION_INT_DIVIDE_BY_ZERO => "int div by zero", + EXCEPTION_INT_OVERFLOW => "int overflow", + EXCEPTION_PRIV_INSTRUCTION => "priv instruction", + EXCEPTION_IN_PAGE_ERROR => "in page error", + EXCEPTION_NONCONTINUABLE_EXCEPTION => "non continuable exception", + EXCEPTION_STACK_OVERFLOW => "stack overflow", + EXCEPTION_GUARD_PAGE => "guard page", + EXCEPTION_INVALID_HANDLE => "invalid handle", + EXCEPTION_POSSIBLE_DEADLOCK => "possible deadlock", + _ => "unknown exception code", }; - let s = format!("unknown trap at {} - {}", exception_address, signal); + let s = format!( + "unhandled trap at {:x} - code #{:x}: {}", + exception_address, code, signal, + ); Err(CallProtError::Error(Box::new(s))) } diff --git a/lib/singlepass-backend/src/protect_unix.rs b/lib/singlepass-backend/src/protect_unix.rs index b66c77b94..83ba42c79 100644 --- a/lib/singlepass-backend/src/protect_unix.rs +++ b/lib/singlepass-backend/src/protect_unix.rs @@ -111,7 +111,7 @@ pub fn call_protected(f: impl FnOnce() -> T) -> Result { // Ok(SIGSEGV) => "segmentation violation", // Ok(SIGBUS) => "bus error", // Err(_) => "error while getting the Signal", - // _ => "unkown trapped signal", + // _ => "unknown trapped signal", // }; // // When the trap-handler is fully implemented, this will return more information. // Err(RuntimeError::Trap { diff --git a/lib/win-exception-handler/exception_handling/exception_handling.c b/lib/win-exception-handler/exception_handling/exception_handling.c index 3c7990ec2..c3ecbab1d 100644 --- a/lib/win-exception-handler/exception_handling/exception_handling.c +++ b/lib/win-exception-handler/exception_handling/exception_handling.c @@ -5,6 +5,7 @@ #define CALL_FIRST 1 __declspec(thread) jmp_buf jmpBuf; +__declspec(thread) DWORD caughtExceptionCode; __declspec(thread) PVOID caughtExceptionAddress; __declspec(thread) DWORD64 caughtInstructionPointer; __declspec(thread) PVOID savedStackPointer; @@ -25,6 +26,7 @@ static LONG WINAPI exceptionHandler(struct _EXCEPTION_POINTERS *ExceptionInfo) { EXCEPTION_RECORD* pExceptionRecord = ExceptionInfo->ExceptionRecord; PCONTEXT pCONTEXT = ExceptionInfo->ContextRecord; + caughtExceptionCode = pExceptionRecord->ExceptionCode; caughtExceptionAddress = pExceptionRecord->ExceptionAddress; caughtInstructionPointer = pCONTEXT->Rip; if (alreadyHandlingException == TRUE) { @@ -61,8 +63,9 @@ uint8_t callProtected(trampoline_t trampoline, } // jmp jmp jmp! - int signum = setjmp(jmpBuf); - if (signum == 0) { + int status = setjmp(jmpBuf); + if (status == 0) // 0 means the original call + { // save the stack pointer savedStackPointer = get_callee_frame_address(); trampoline(ctx, func, param_vec, return_vec); @@ -74,7 +77,7 @@ uint8_t callProtected(trampoline_t trampoline, return TRUE; } - out_result->code = (uint64_t)signum; + out_result->code = (uint64_t)caughtExceptionCode; out_result->exception_address = (uint64_t)caughtExceptionAddress; out_result->instruction_pointer = caughtInstructionPointer; @@ -83,4 +86,4 @@ uint8_t callProtected(trampoline_t trampoline, removeExceptionHandler(); return FALSE; -} +} \ No newline at end of file From 49accd8dbe84e6a24e66911f7571cdbfdcb26542 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Thu, 2 May 2019 15:07:56 -0700 Subject: [PATCH 363/413] use $INSTALL_DIRECTORY instead of $HOME/.wasmer in install.sh --- install.sh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/install.sh b/install.sh index c0d0982bd..8cc5ffbff 100755 --- a/install.sh +++ b/install.sh @@ -130,11 +130,11 @@ wasmer_detect_profile() { wasmer_link() { printf "$cyan> Adding to bash profile...$reset\n" WASMER_PROFILE="$(wasmer_detect_profile)" - LOAD_STR="\n# Wasmer\nexport WASMER_DIR=\"\$HOME/.wasmer\"\n[ -s \"\$WASMER_DIR/wasmer.sh\" ] && source \"\$WASMER_DIR/wasmer.sh\" # This loads wasmer\n" - SOURCE_STR="# Wasmer config\nexport WASMER_DIR=\"\$HOME/.wasmer\"\nexport WASMER_CACHE_DIR=\"\$WASMER_DIR/cache\"\nexport PATH=\"\$HOME/.wasmer/bin:\$HOME/.wasmer/globals/wapm_packages/.bin:\$PATH\"\n" + LOAD_STR="\n# Wasmer\nexport WASMER_DIR=\"\$INSTALL_DIRECTORY\"\n[ -s \"\$WASMER_DIR/wasmer.sh\" ] && source \"\$WASMER_DIR/wasmer.sh\" # This loads wasmer\n" + SOURCE_STR="# Wasmer config\nexport WASMER_DIR=\"\$INSTALL_DIRECTORY\"\nexport WASMER_CACHE_DIR=\"\$WASMER_DIR/cache\"\nexport PATH=\"\$WASMER_DIR/bin:\$WASMER_DIR/globals/wapm_packages/.bin:\$PATH\"\n" # We create the wasmer.sh file - printf "$SOURCE_STR" > "$HOME/.wasmer/wasmer.sh" + printf "$SOURCE_STR" > "$INSTALL_DIRECTORY/wasmer.sh" if [ -z "${WASMER_PROFILE-}" ] ; then printf "${red}Profile not found. Tried:\n* ${WASMER_PROFILE} (as defined in \$PROFILE)\n* ~/.bashrc\n* ~/.bash_profile\n* ~/.zshrc\n* ~/.profile.\n" @@ -156,12 +156,12 @@ wasmer_link() { echo "If this isn't the profile of your current shell then please add the following to your correct profile:" printf "$LOAD_STR$reset\n" - version=`$HOME/.wasmer/bin/wasmer --version` || ( + version=`$INSTALL_DIRECTORY/bin/wasmer --version` || ( printf "$red> wasmer was installed, but doesn't seem to be working :($reset\n" exit 1; ) - printf "$green> Successfully installed $version!\n\n${reset}If you want to have the command available now please execute:\nsource $HOME/.wasmer/wasmer.sh$reset\n" + printf "$green> Successfully installed $version!\n\n${reset}If you want to have the command available now please execute:\nsource $INSTALL_DIRECTORY/wasmer.sh$reset\n" printf "\nOtherwise, wasmer and wapm will be available the next time you open the terminal.\n" echo "Note: during the alpha release of wapm, telemetry is enabled by default; if you would like to opt out, run \`wapm config set telemetry.enabled false\`." echo "If you notice anything wrong or have any issues, please file a bug at https://github.com/wasmerio/wapm-cli :)" @@ -257,7 +257,7 @@ wasmer_install() { " fi -# if [ -d "$HOME/.wasmer" ]; then +# if [ -d "$INSTALL_DIRECTORY" ]; then # if which wasmer; then # local latest_url # local specified_version @@ -286,11 +286,11 @@ wasmer_install() { # exit 0 # else # printf "$yellow> $wasmer_alt_version is already installed, Specified version: $specified_version.$reset\n" -# rm -rf "$HOME/.wasmer" +# rm -rf "$INSTALL_DIRECTORY" # fi # else -# printf "$red> $HOME/.wasmer already exists, possibly from a past Wasmer install.$reset\n" -# printf "$red> Remove it (rm -rf $HOME/.wasmer) and run this script again.$reset\n" +# printf "$red> $INSTALL_DIRECTORY already exists, possibly from a past Wasmer install.$reset\n" +# printf "$red> Remove it (rm -rf $INSTALL_DIRECTORY) and run this script again.$reset\n" # exit 0 # fi # fi From 7104e1c963e69cef8b77b2740fbf9e893bff4725 Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Thu, 2 May 2019 15:29:35 -0700 Subject: [PATCH 364/413] create wasmer dir on install for windows --- Cargo.lock | 86 ++++++++++++++++++++-------------------- src/installer/wasmer.iss | 7 +++- 2 files changed, 48 insertions(+), 45 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ad4e6b3b2..2da3792cf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2234,20 +2234,20 @@ dependencies = [ "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "structopt 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)", "wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-clif-backend 0.3.0", - "wasmer-emscripten 0.3.0", - "wasmer-llvm-backend 0.3.0", - "wasmer-middleware-common 0.3.0", - "wasmer-runtime 0.3.0", - "wasmer-runtime-abi 0.3.0", - "wasmer-runtime-core 0.3.0", - "wasmer-singlepass-backend 0.3.0", - "wasmer-wasi 0.3.0", + "wasmer-clif-backend 0.4.0", + "wasmer-emscripten 0.4.0", + "wasmer-llvm-backend 0.4.0", + "wasmer-middleware-common 0.4.0", + "wasmer-runtime 0.4.0", + "wasmer-runtime-abi 0.4.0", + "wasmer-runtime-core 0.4.0", + "wasmer-singlepass-backend 0.4.0", + "wasmer-wasi 0.4.0", ] [[package]] name = "wasmer-clif-backend" -version = "0.3.0" +version = "0.4.0" dependencies = [ "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "cranelift-codegen 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2263,15 +2263,15 @@ dependencies = [ "serde_bytes 0.10.5 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", "target-lexicon 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-runtime-core 0.3.0", - "wasmer-win-exception-handler 0.3.0", + "wasmer-runtime-core 0.4.0", + "wasmer-win-exception-handler 0.4.0", "wasmparser 0.29.2 (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-emscripten" -version = "0.3.0" +version = "0.4.0" dependencies = [ "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2280,15 +2280,15 @@ dependencies = [ "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)", "wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-clif-backend 0.3.0", - "wasmer-llvm-backend 0.3.0", - "wasmer-runtime-core 0.3.0", - "wasmer-singlepass-backend 0.3.0", + "wasmer-clif-backend 0.4.0", + "wasmer-llvm-backend 0.4.0", + "wasmer-runtime-core 0.4.0", + "wasmer-singlepass-backend 0.4.0", ] [[package]] name = "wasmer-llvm-backend" -version = "0.3.0" +version = "0.4.0" dependencies = [ "capstone 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2303,42 +2303,42 @@ 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.7.4 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-runtime-core 0.3.0", + "wasmer-runtime-core 0.4.0", "wasmparser 0.29.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasmer-middleware-common" -version = "0.3.0" +version = "0.4.0" dependencies = [ - "wasmer-runtime-core 0.3.0", + "wasmer-runtime-core 0.4.0", ] [[package]] name = "wasmer-runtime" -version = "0.3.0" +version = "0.4.0" dependencies = [ "criterion 0.2.10 (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.7 (registry+https://github.com/rust-lang/crates.io-index)", "wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-clif-backend 0.3.0", - "wasmer-llvm-backend 0.3.0", - "wasmer-runtime-core 0.3.0", - "wasmer-singlepass-backend 0.3.0", + "wasmer-clif-backend 0.4.0", + "wasmer-llvm-backend 0.4.0", + "wasmer-runtime-core 0.4.0", + "wasmer-singlepass-backend 0.4.0", ] [[package]] name = "wasmer-runtime-abi" -version = "0.3.0" +version = "0.4.0" dependencies = [ "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "tar 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-runtime-core 0.3.0", + "wasmer-runtime-core 0.4.0", "wasmparser 0.29.2 (registry+https://github.com/rust-lang/crates.io-index)", "zbox 0.6.1 (git+https://github.com/wasmerio/zbox?branch=bundle-libsodium)", "zstd 0.4.22+zstd.1.3.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2346,17 +2346,17 @@ dependencies = [ [[package]] name = "wasmer-runtime-c-api" -version = "0.3.0" +version = "0.4.0" dependencies = [ "cbindgen 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-runtime 0.3.0", - "wasmer-runtime-core 0.3.0", + "wasmer-runtime 0.4.0", + "wasmer-runtime-core 0.4.0", ] [[package]] name = "wasmer-runtime-core" -version = "0.3.0" +version = "0.4.0" dependencies = [ "blake2b_simd 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2382,7 +2382,7 @@ dependencies = [ [[package]] name = "wasmer-singlepass-backend" -version = "0.3.0" +version = "0.4.0" dependencies = [ "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "dynasm 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2392,24 +2392,24 @@ dependencies = [ "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "nix 0.13.0 (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.3.0", + "wasmer-runtime-core 0.4.0", "wasmparser 0.29.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasmer-spectests" -version = "0.3.0" +version = "0.4.0" dependencies = [ "wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-clif-backend 0.3.0", - "wasmer-llvm-backend 0.3.0", - "wasmer-runtime-core 0.3.0", - "wasmer-singlepass-backend 0.3.0", + "wasmer-clif-backend 0.4.0", + "wasmer-llvm-backend 0.4.0", + "wasmer-runtime-core 0.4.0", + "wasmer-singlepass-backend 0.4.0", ] [[package]] name = "wasmer-wasi" -version = "0.3.0" +version = "0.4.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)", @@ -2417,18 +2417,18 @@ dependencies = [ "libc 0.2.51 (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.3.0", + "wasmer-runtime-core 0.4.0", ] [[package]] name = "wasmer-win-exception-handler" -version = "0.3.0" +version = "0.4.0" dependencies = [ "bindgen 0.46.0 (registry+https://github.com/rust-lang/crates.io-index)", "cmake 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-runtime-core 0.3.0", + "wasmer-runtime-core 0.4.0", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] diff --git a/src/installer/wasmer.iss b/src/installer/wasmer.iss index 999b4f49d..16a396593 100644 --- a/src/installer/wasmer.iss +++ b/src/installer/wasmer.iss @@ -18,6 +18,9 @@ DisableWelcomePage=no Source: "..\..\target\release\wasmer.exe"; DestDir: "{app}\bin" Source: "..\..\wapm-cli\target\release\wapm.exe"; DestDir: "{app}\bin" +[Dirs] +Name: "{%USERPROFILE}\.wasmer" + [Code] const EnvironmentKey = 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment'; @@ -68,7 +71,7 @@ begin if CurStep = ssPostInstall then begin EnvAddPath(ExpandConstant('{app}') +'\bin'); - EnvAddPath(ExpandConstant('{app}') +'\globals\wapm_packages\.bin'); + EnvAddPath(ExpandConstant('{%USERPROFILE}') +'\globals\wapm_packages\.bin'); end end; @@ -77,6 +80,6 @@ begin if CurUninstallStep = usPostUninstall then begin EnvRemovePath(ExpandConstant('{app}') +'\bin'); - EnvAddPath(ExpandConstant('{app}') +'\globals\wapm_packages\.bin'); + EnvAddPath(ExpandConstant('{%USERPROFILE}') +'\globals\wapm_packages\.bin'); end end; \ No newline at end of file From fdc6e53f6efaaf48d8ef0fa7cbde05422200970a Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Thu, 2 May 2019 15:35:48 -0700 Subject: [PATCH 365/413] unescape $INSTALL_DIRECTORY in message to user --- install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 8cc5ffbff..8d4e1e9d2 100755 --- a/install.sh +++ b/install.sh @@ -130,8 +130,8 @@ wasmer_detect_profile() { wasmer_link() { printf "$cyan> Adding to bash profile...$reset\n" WASMER_PROFILE="$(wasmer_detect_profile)" - LOAD_STR="\n# Wasmer\nexport WASMER_DIR=\"\$INSTALL_DIRECTORY\"\n[ -s \"\$WASMER_DIR/wasmer.sh\" ] && source \"\$WASMER_DIR/wasmer.sh\" # This loads wasmer\n" - SOURCE_STR="# Wasmer config\nexport WASMER_DIR=\"\$INSTALL_DIRECTORY\"\nexport WASMER_CACHE_DIR=\"\$WASMER_DIR/cache\"\nexport PATH=\"\$WASMER_DIR/bin:\$WASMER_DIR/globals/wapm_packages/.bin:\$PATH\"\n" + LOAD_STR="\n# Wasmer\nexport WASMER_DIR=\"$INSTALL_DIRECTORY\"\n[ -s \"\$WASMER_DIR/wasmer.sh\" ] && source \"\$WASMER_DIR/wasmer.sh\" # This loads wasmer\n" + SOURCE_STR="# Wasmer config\nexport WASMER_DIR=\"$INSTALL_DIRECTORY\"\nexport WASMER_CACHE_DIR=\"\$WASMER_DIR/cache\"\nexport PATH=\"\$WASMER_DIR/bin:\$WASMER_DIR/globals/wapm_packages/.bin:\$PATH\"\n" # We create the wasmer.sh file printf "$SOURCE_STR" > "$INSTALL_DIRECTORY/wasmer.sh" From c5caf9b6dbff43947a0c3e8219627be210e48c9f Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Fri, 3 May 2019 00:14:25 -0500 Subject: [PATCH 366/413] Update LLVM FCG begin_body --- lib/llvm-backend/src/code.rs | 54 +++++++++++++---------- lib/runtime-core/src/codegen.rs | 17 ++++++- lib/runtime-core/src/parse.rs | 2 +- lib/singlepass-backend/src/codegen_x64.rs | 2 +- 4 files changed, 49 insertions(+), 26 deletions(-) diff --git a/lib/llvm-backend/src/code.rs b/lib/llvm-backend/src/code.rs index f9bfba26b..8745f7e38 100644 --- a/lib/llvm-backend/src/code.rs +++ b/lib/llvm-backend/src/code.rs @@ -2520,6 +2520,7 @@ pub struct LLVMFunctionCodeGenerator { // returns: SmallVec<[WpType; 1]>, locals: Vec, // Contains params and locals num_params: usize, + ctx: Option>, // num_locals: usize, // value_stack: Vec<(Location, LocalOrTemp)>, // control_stack: Vec, @@ -2565,7 +2566,27 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { Ok(()) } - fn begin_body(&mut self) -> Result<(), CodegenError> { + fn begin_body(&mut self, module_info: &ModuleInfo) -> Result<(), CodegenError> { + let start_of_code_block = self + .context + .append_basic_block(&self.function, "start_of_code"); + let entry_end_inst = self + .builder + .build_unconditional_branch(&start_of_code_block); + self.builder.position_at_end(&start_of_code_block); + + let cache_builder = self.context.create_builder(); + cache_builder.position_before(&entry_end_inst); + let module_info = + unsafe { ::std::mem::transmute::<&ModuleInfo, &'static ModuleInfo>(module_info) }; + let function = unsafe { + ::std::mem::transmute::<&FunctionValue, &'static FunctionValue>(&self.function) + }; + let mut ctx = self + .intrinsics + .ctx(module_info, self.builder, function, cache_builder); + + self.ctx = Some(ctx); Ok(()) } @@ -2637,6 +2658,12 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { // // let cache_builder = context.create_builder(); // cache_builder.position_before(&entry_end_inst); + let op = match event { + Event::Wasm(x) => x, + Event::Internal(x) => { + return Ok(()); + } + }; let mut state = &mut self.state; let builder = self.builder; @@ -2646,21 +2673,7 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { let locals = &self.locals; let info = module_info; let signatures = &self.signatures; - - // TODO this should be done only once per function I believe - // just adding here to get compilation - let cache_builder = context.create_builder(); - // cache_builder.position_before(&entry_end_inst); - let mut ctx = intrinsics.ctx(info, builder, &function, cache_builder); - // self.ctx; - - let op = match event { - Event::Wasm(x) => x, - Event::Internal(x) => { - return Ok(()); - //unimplemented!() - } - }; + let mut ctx = self.ctx.as_mut().unwrap(); let mut unreachable_depth = 0; if !state.reachable { @@ -4724,12 +4737,6 @@ impl ModuleCodeGenerator ); let num_params = locals.len(); - let start_of_code_block = self.context.append_basic_block(&function, "start_of_code"); - let entry_end_inst = self - .builder - .build_unconditional_branch(&start_of_code_block); - self.builder.position_at_end(&start_of_code_block); - let code = LLVMFunctionCodeGenerator { state, builder: unsafe { ::std::mem::transmute::<&Builder, &'static Builder>(&self.builder) }, @@ -4758,13 +4765,14 @@ impl ModuleCodeGenerator intrinsics: unsafe { ::std::mem::transmute::<&Intrinsics, &'static Intrinsics>(&self.intrinsics) }, + ctx: None, }; self.functions.push(code); Ok(self.functions.last_mut().unwrap()) } fn finalize(self, module_info: &ModuleInfo) -> Result { -// self.module.print_to_stderr(); + // self.module.print_to_stderr(); generate_trampolines( module_info, diff --git a/lib/runtime-core/src/codegen.rs b/lib/runtime-core/src/codegen.rs index 210a105be..6694fbb86 100644 --- a/lib/runtime-core/src/codegen.rs +++ b/lib/runtime-core/src/codegen.rs @@ -12,7 +12,9 @@ use smallvec::SmallVec; use std::fmt::Debug; use std::marker::PhantomData; use wasmparser::{Operator, Type as WpType}; +use std::fmt; +#[derive(Debug)] pub enum Event<'a, 'b> { Internal(InternalEvent), Wasm(&'b Operator<'a>), @@ -26,6 +28,19 @@ pub enum InternalEvent { GetInternal(u32), } +impl fmt::Debug for InternalEvent { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + match self { + InternalEvent::FunctionBegin(_) => write!(f, "FunctionBegin"), + InternalEvent::FunctionEnd => write!(f, "FunctionEnd"), + InternalEvent::Breakpoint(_) => write!(f, "Breakpoint"), + InternalEvent::SetInternal(_) => write!(f, "SetInternal"), + InternalEvent::GetInternal(_) => write!(f, "GetInternal"), + _ => panic!("unknown event") + } + } +} + pub struct BkptInfo {} pub trait ModuleCodeGenerator, RM: RunnableModule, E: Debug> { @@ -246,7 +261,7 @@ pub trait FunctionCodeGenerator { fn feed_local(&mut self, ty: WpType, n: usize) -> Result<(), E>; /// Called before the first call to `feed_opcode`. - fn begin_body(&mut self) -> Result<(), E>; + fn begin_body(&mut self, module_info: &ModuleInfo) -> Result<(), E>; /// Called for each operator. fn feed_event(&mut self, op: Event, module_info: &ModuleInfo) -> Result<(), E>; diff --git a/lib/runtime-core/src/parse.rs b/lib/runtime-core/src/parse.rs index e8fabf194..e7e80fc29 100644 --- a/lib/runtime-core/src/parse.rs +++ b/lib/runtime-core/src/parse.rs @@ -244,7 +244,7 @@ pub fn read_module< ParserState::CodeOperator(ref op) => { if !body_begun { body_begun = true; - fcg.begin_body() + fcg.begin_body(&info) .map_err(|x| LoadError::Codegen(format!("{:?}", x)))?; } middlewares diff --git a/lib/singlepass-backend/src/codegen_x64.rs b/lib/singlepass-backend/src/codegen_x64.rs index 783ca13af..86bcde07e 100644 --- a/lib/singlepass-backend/src/codegen_x64.rs +++ b/lib/singlepass-backend/src/codegen_x64.rs @@ -1387,7 +1387,7 @@ impl FunctionCodeGenerator for X64FunctionCode { Ok(()) } - fn begin_body(&mut self) -> Result<(), CodegenError> { + fn begin_body(&mut self, module_info: &ModuleInfo) -> Result<(), CodegenError> { let a = self.assembler.as_mut().unwrap(); a.emit_push(Size::S64, Location::GPR(GPR::RBP)); a.emit_mov(Size::S64, Location::GPR(GPR::RSP), Location::GPR(GPR::RBP)); From fac36a1141ecfd3838cc78125eacdf35b540a130 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 3 May 2019 10:19:35 -0700 Subject: [PATCH 367/413] Add wapm section to README --- README.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/README.md b/README.md index b78db7314..3289811d4 100644 --- a/README.md +++ b/README.md @@ -55,6 +55,24 @@ wasmer run examples/sqlite.wasm wasmer run examples/nginx/nginx.wasm -- -p examples/nginx -c nginx.conf ``` +#### With WAPM + +Installing Wasmer through `get.wasmer.io` includes +[wapm](https://github.com/wasmerio/wapm-cli), the WebAssembly package manager. + +Wapm allows us to easily download, run, and distribute WebAssembly binaries. + +```sh +# Install cowsay globally +wapm install cowsay + +# Run cowsay +wapm run cowsay "Hello, world!" +``` + +For more information about wapm, check out the [website](https://www.wapm.io) +and this [example program](https://github.com/wapm-packages/rust-wasi-example). + ## Code Structure Wasmer is structured into different directories: From 1e357d90e4b571b1e4e062f4a1bf24588dbc2471 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 3 May 2019 10:21:26 -0700 Subject: [PATCH 368/413] change 'us' to 'you' for consistency --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3289811d4..cc833cad5 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ wasmer run examples/nginx/nginx.wasm -- -p examples/nginx -c nginx.conf Installing Wasmer through `get.wasmer.io` includes [wapm](https://github.com/wasmerio/wapm-cli), the WebAssembly package manager. -Wapm allows us to easily download, run, and distribute WebAssembly binaries. +Wapm allows you to easily download, run, and distribute WebAssembly binaries. ```sh # Install cowsay globally From 6d9256dd1f3b2ae406c77b1ae99b304d43414d3a Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 3 May 2019 10:28:42 -0700 Subject: [PATCH 369/413] fix typo in install command --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cc833cad5..c90eb48ee 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,7 @@ Wapm allows you to easily download, run, and distribute WebAssembly binaries. ```sh # Install cowsay globally -wapm install cowsay +wapm install -g cowsay # Run cowsay wapm run cowsay "Hello, world!" From 353ff60c0f7ec107e010402fa725801b0d2f315a Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 3 May 2019 17:34:57 -0700 Subject: [PATCH 370/413] add misc changes while debugging --- lib/emscripten/src/env/mod.rs | 42 +++++++++++++++++++++++++----- lib/emscripten/src/jmp.rs | 2 +- lib/emscripten/src/lib.rs | 39 ++++++++++++++++----------- lib/emscripten/src/memory.rs | 7 +++-- lib/emscripten/src/process.rs | 2 +- lib/emscripten/src/syscalls/mod.rs | 16 +++++++++--- src/bin/wasmer.rs | 5 ++++ 7 files changed, 85 insertions(+), 28 deletions(-) diff --git a/lib/emscripten/src/env/mod.rs b/lib/emscripten/src/env/mod.rs index 2f799a679..897fb38f0 100644 --- a/lib/emscripten/src/env/mod.rs +++ b/lib/emscripten/src/env/mod.rs @@ -60,21 +60,51 @@ pub fn ___build_environment(ctx: &mut Ctx, environ: c_int) { const MAX_ENV_VALUES: u32 = 64; const TOTAL_ENV_SIZE: u32 = 1024; let environment = emscripten_memory_pointer!(ctx.memory(0), environ) as *mut c_int; - unsafe { + let (mut pool_offset, env_ptr, mut pool_ptr) = unsafe { let (pool_offset, _pool_slice): (u32, &mut [u8]) = allocate_on_stack(ctx, TOTAL_ENV_SIZE as u32); let (env_offset, _env_slice): (u32, &mut [u8]) = allocate_on_stack(ctx, (MAX_ENV_VALUES * 4) as u32); let env_ptr = emscripten_memory_pointer!(ctx.memory(0), env_offset) as *mut c_int; - let mut _pool_ptr = emscripten_memory_pointer!(ctx.memory(0), pool_offset) as *mut c_int; + let pool_ptr = emscripten_memory_pointer!(ctx.memory(0), pool_offset) as *mut u8; *env_ptr = pool_offset as i32; *environment = env_offset as i32; - // *env_ptr = 0; + (pool_offset, env_ptr, pool_ptr) }; - // unsafe { - // *env_ptr = 0; - // }; + + // *env_ptr = 0; + let default_vars = vec![ + ["USER", "web_user"], + ["LOGNAME", "web_user"], + ["PATH", "/"], + ["PWD", "/"], + ["HOME", "/home/web_user"], + ["LANG", "C.UTF-8"], + ["_", "thisProgram"], + ]; + let mut strings = vec![]; + let mut total_size = 0; + for [key, val] in &default_vars { + let line = key.to_string() + "=" + val; + total_size += line.len(); + strings.push(line); + } + if total_size as u32 > TOTAL_ENV_SIZE { + panic!("Environment size exceeded TOTAL_ENV_SIZE!"); + } + unsafe { + for (i, s) in strings.iter().enumerate() { + for (j, c) in s.chars().enumerate() { + debug_assert!(c < u8::max_value() as char); + *pool_ptr.add(j) = c as u8; + } + *env_ptr.add(i * 4) = pool_offset as i32; + pool_offset += s.len() as u32 + 1; + pool_ptr = pool_ptr.add(s.len() + 1); + } + *env_ptr.add(strings.len() * 4) = 0; + } } pub fn ___assert_fail(_ctx: &mut Ctx, _a: c_int, _b: c_int, _c: c_int, _d: c_int) { diff --git a/lib/emscripten/src/jmp.rs b/lib/emscripten/src/jmp.rs index 015496d29..1d9691bc1 100644 --- a/lib/emscripten/src/jmp.rs +++ b/lib/emscripten/src/jmp.rs @@ -7,7 +7,7 @@ use wasmer_runtime_core::vm::Ctx; /// setjmp pub fn __setjmp(ctx: &mut Ctx, _env_addr: u32) -> c_int { debug!("emscripten::__setjmp (setjmp)"); - abort_with_message(ctx, "missing function: _longjmp"); + abort_with_message(ctx, "missing function: _setjmp"); unreachable!() // unsafe { // // Rather than using the env as the holder of the jump buffer pointer, diff --git a/lib/emscripten/src/lib.rs b/lib/emscripten/src/lib.rs index 116a0e88d..e2b1de82d 100644 --- a/lib/emscripten/src/lib.rs +++ b/lib/emscripten/src/lib.rs @@ -282,6 +282,7 @@ pub fn run_emscripten_instance( instance: &mut Instance, path: &str, args: Vec<&str>, + entrypoint: Option, ) -> CallResult<()> { let mut data = EmscriptenData::new(instance); let data_ptr = &mut data as *mut _ as *mut c_void; @@ -299,21 +300,29 @@ pub fn run_emscripten_instance( // println!("running emscripten instance"); - let main_func = instance.dyn_func("_main")?; - let num_params = main_func.signature().params().len(); - let _result = match num_params { - 2 => { - let (argc, argv) = store_module_arguments(instance.context_mut(), path, args); - instance.call("_main", &[Value::I32(argc as i32), Value::I32(argv as i32)])?; - } - 0 => { - instance.call("_main", &[])?; - } - _ => panic!( - "The emscripten main function has received an incorrect number of params {}", - num_params - ), - }; + if let Some(ep) = entrypoint { + println!("RUnning entry point: {}", &ep); + let ep_fn = instance.dyn_func(&ep)?; + let arg = unsafe { allocate_cstr_on_stack(instance.context_mut(), args[0]).0 }; + //let (argc, argv) = store_module_arguments(instance.context_mut(), path, args); + instance.call(&ep, &[Value::I32(arg as i32)])?; + } else { + let main_func = instance.dyn_func("_main")?; + let num_params = main_func.signature().params().len(); + let _result = match num_params { + 2 => { + let (argc, argv) = store_module_arguments(instance.context_mut(), path, args); + instance.call("_main", &[Value::I32(argc as i32), Value::I32(argv as i32)])?; + } + 0 => { + instance.call("_main", &[])?; + } + _ => panic!( + "The emscripten main function has received an incorrect number of params {}", + num_params + ), + }; + } // TODO atexit for emscripten // println!("{:?}", data); diff --git a/lib/emscripten/src/memory.rs b/lib/emscripten/src/memory.rs index 1795dcae6..0f1cb1f19 100644 --- a/lib/emscripten/src/memory.rs +++ b/lib/emscripten/src/memory.rs @@ -21,8 +21,11 @@ pub fn _emscripten_memcpy_big(ctx: &mut Ctx, dest: u32, src: u32, len: u32) -> u /// emscripten: _emscripten_get_heap_size pub fn _emscripten_get_heap_size(ctx: &mut Ctx) -> u32 { - debug!("emscripten::_emscripten_get_heap_size",); - ctx.memory(0).size().bytes().0 as u32 + debug!("emscripten::_emscripten_get_heap_size"); + let result = ctx.memory(0).size().bytes().0 as u32; + debug!("=> {}", result); + + result } // From emscripten implementation diff --git a/lib/emscripten/src/process.rs b/lib/emscripten/src/process.rs index dbbbcebc2..538ed528f 100644 --- a/lib/emscripten/src/process.rs +++ b/lib/emscripten/src/process.rs @@ -82,7 +82,7 @@ pub fn _raise(_ctx: &mut Ctx, _one: i32) -> i32 { } pub fn _sem_init(_ctx: &mut Ctx, _one: i32, _two: i32, _three: i32) -> i32 { - debug!("emscripten::_sem_init"); + debug!("emscripten::_sem_init: {}, {}, {}", _one, _two, _three); 0 } diff --git a/lib/emscripten/src/syscalls/mod.rs b/lib/emscripten/src/syscalls/mod.rs index 37f6e2f51..7d048dd5a 100644 --- a/lib/emscripten/src/syscalls/mod.rs +++ b/lib/emscripten/src/syscalls/mod.rs @@ -246,12 +246,22 @@ pub fn ___syscall192(ctx: &mut Ctx, _which: c_int, mut varargs: VarArgs) -> c_in if fd == -1 { let ptr = env::call_memalign(ctx, 16384, len); if ptr == 0 { - return -1; + // ENOMEM + return -12; } + let real_ptr = emscripten_memory_pointer!(ctx.memory(0), ptr) as *const u8; env::call_memset(ctx, ptr, 0, len); - ptr as _ + for i in 0..(len as usize) { + unsafe { + assert_eq!(*real_ptr.add(i), 0); + } + } + debug!("=> ptr: {}", ptr); + return ptr as i32; } else { - -1 + unimplemented!("temp during dev"); + // return ENODEV + return -19; } } diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index 6774fab58..7516e3acc 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -86,6 +86,10 @@ struct Run { #[structopt(long = "em-symbol-map", parse(from_os_str), group = "emscripten")] em_symbol_map: Option, + /// Begin execution at the specified symbol + #[structopt(long = "with-entry-point")] + entrypoint: Option, + /// WASI pre-opened directory #[structopt(long = "dir", multiple = true, group = "wasi")] pre_opened_directories: Vec, @@ -320,6 +324,7 @@ fn execute_wasm(options: &Run) -> Result<(), String> { options.path.to_str().unwrap() }, options.args.iter().map(|arg| arg.as_str()).collect(), + options.entrypoint.clone(), ) .map_err(|e| format!("{:?}", e))?; } else { From 60c0504bdf727b6643fbd5eecff14f01cf08c64e Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Sat, 4 May 2019 12:07:21 -0500 Subject: [PATCH 371/413] Implement llvm returns in function code generator finalize --- lib/llvm-backend/src/code.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/llvm-backend/src/code.rs b/lib/llvm-backend/src/code.rs index 8745f7e38..a65cb25d1 100644 --- a/lib/llvm-backend/src/code.rs +++ b/lib/llvm-backend/src/code.rs @@ -4610,6 +4610,21 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { } fn finalize(&mut self) -> Result<(), CodegenError> { + let results = self.state.popn_save(self.func_sig.returns().len())?; + + match results.as_slice() { + [] => { + self.builder.build_return(None); + } + [one_value] => { + self.builder.build_return(Some(one_value)); + } + _ => { + // let struct_ty = llvm_sig.get_return_type().as_struct_type(); + // let ret_struct = struct_ty.const_zero(); + unimplemented!("multi-value returns not yet implemented") + } + } Ok(()) } } From 90dd4bc4581f803c81cfd96662bb4425ffb59d61 Mon Sep 17 00:00:00 2001 From: Syrus Date: Sun, 5 May 2019 11:21:28 -0700 Subject: [PATCH 372/413] Fix emtests --- Cargo.toml | 2 +- lib/emscripten/tests/emtests/_common.rs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index edd1c5b38..6dc113c65 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -43,7 +43,7 @@ rustc_version = "0.2.3" [features] default = ["fast-tests", "wasi"] -debug = ["wasmer-clif-backend/debug", "wasmer-runtime-core/debug"] +debug = ["wasmer-runtime-core/debug"] # This feature will allow cargo test to run much faster fast-tests = [] "backend:llvm" = ["wasmer-llvm-backend"] diff --git a/lib/emscripten/tests/emtests/_common.rs b/lib/emscripten/tests/emtests/_common.rs index 18664e4ea..c2e304e32 100644 --- a/lib/emscripten/tests/emtests/_common.rs +++ b/lib/emscripten/tests/emtests/_common.rs @@ -53,6 +53,7 @@ macro_rules! assert_emscripten_output { &mut instance, $name, $args, + None, ).expect("run_emscripten_instance finishes"); let output = capturer.end().unwrap().0; From 10a965cc1eae56b23c8dc33996f8819be05b373c Mon Sep 17 00:00:00 2001 From: Syrus Date: Sun, 5 May 2019 11:24:57 -0700 Subject: [PATCH 373/413] Added few syscalls to run optipng --- Makefile | 2 +- lib/emscripten/src/emscripten_target.rs | 19 ++++++++++++++++--- lib/emscripten/src/lib.rs | 24 +++++++++++++----------- lib/emscripten/src/syscalls/mod.rs | 6 ++++++ 4 files changed, 36 insertions(+), 15 deletions(-) diff --git a/Makefile b/Makefile index 1bca6b951..d52d8c09f 100644 --- a/Makefile +++ b/Makefile @@ -62,7 +62,7 @@ test-emscripten-clif: cargo test --manifest-path lib/emscripten/Cargo.toml --features clif -- --test-threads=1 $(runargs) test-emscripten-singlepass: - cargo test --manifest-path lib/emscripten/Cargo.toml --features singlepass -- --test-threads=1 $(runargs) + cargo +nightly test --manifest-path lib/emscripten/Cargo.toml --features singlepass -- --test-threads=1 $(runargs) singlepass-debug-release: cargo +nightly build --features "backend:singlepass debug" --release diff --git a/lib/emscripten/src/emscripten_target.rs b/lib/emscripten/src/emscripten_target.rs index 8e107bd3c..aa243af57 100644 --- a/lib/emscripten/src/emscripten_target.rs +++ b/lib/emscripten/src/emscripten_target.rs @@ -55,7 +55,7 @@ pub fn _dladdr(_ctx: &mut Ctx, _a: i32, _b: i32) -> i32 { 0 } pub fn _pthread_attr_init(_ctx: &mut Ctx, _a: i32) -> i32 { - debug!("emscripten::_pthread_attr_init"); + debug!("emscripten::_pthread_attr_init({})", _a); 0 } pub fn _pthread_attr_destroy(_ctx: &mut Ctx, _a: i32) -> i32 { @@ -68,7 +68,7 @@ pub fn _pthread_attr_getstack( _stacksize: i32, _other: i32, ) -> i32 { - debug!("emscripten::_pthread_attr_getstack"); + debug!("emscripten::_pthread_attr_getstack({}, {}, {})", _stackaddr, _stacksize, _other); // TODO: Translate from Emscripten // HEAP32[stackaddr >> 2] = STACK_BASE; // HEAP32[stacksize >> 2] = TOTAL_STACK; @@ -87,7 +87,7 @@ pub fn _pthread_getspecific(_ctx: &mut Ctx, _a: i32) -> i32 { 0 } pub fn _pthread_getattr_np(_ctx: &mut Ctx, _thread: i32, _attr: i32) -> i32 { - debug!("emscripten::_pthread_getattr_np"); + debug!("emscripten::_pthread_getattr_np({}, {})", _thread, _attr); 0 } pub fn _pthread_setspecific(_ctx: &mut Ctx, _a: i32, _b: i32) -> i32 { @@ -732,6 +732,19 @@ pub fn invoke_vj(ctx: &mut Ctx, index: i32, a1: i32, a2: i32) { panic!("dyn_call_vj is set to None"); } } +pub fn invoke_vjji(ctx: &mut Ctx, index: i32, a1: i32, a2: i32, a3: i32, a4: i32, a5: i32) { + debug!("emscripten::invoke_vjji"); + invoke_no_return!( + ctx, + dyn_call_vjji, + index, + a1, + a2, + a3, + a4, + a5 + ) +} pub fn invoke_vij(ctx: &mut Ctx, index: i32, a1: i32, a2: i32, a3: i32) { debug!("emscripten::invoke_vij"); if let Some(dyn_call_vij) = &get_emscripten_data(ctx).dyn_call_vij { diff --git a/lib/emscripten/src/lib.rs b/lib/emscripten/src/lib.rs index e2b1de82d..3a9d53a11 100644 --- a/lib/emscripten/src/lib.rs +++ b/lib/emscripten/src/lib.rs @@ -127,6 +127,7 @@ pub struct EmscriptenData<'a> { pub dyn_call_viijiii: Option>, pub dyn_call_viijj: Option>, pub dyn_call_vj: Option>, + pub dyn_call_vjji: Option>, pub dyn_call_vij: Option>, pub dyn_call_viji: Option>, pub dyn_call_vijiii: Option>, @@ -146,11 +147,7 @@ impl<'a> EmscriptenData<'a> { pub fn new(instance: &'a mut Instance) -> EmscriptenData<'a> { let malloc = instance.func("_malloc").unwrap(); let free = instance.func("_free").unwrap(); - let memalign = if let Ok(func) = instance.func("_memalign") { - Some(func) - } else { - None - }; + let memalign = instance.func("_memalign").ok(); let memset = instance.func("_memset").unwrap(); let stack_alloc = instance.func("stackAlloc").unwrap(); @@ -198,6 +195,7 @@ impl<'a> EmscriptenData<'a> { let dyn_call_viijiii = instance.func("dynCall_viijiii").ok(); let dyn_call_viijj = instance.func("dynCall_viijj").ok(); let dyn_call_vj = instance.func("dynCall_vj").ok(); + let dyn_call_vjji = instance.func("dynCall_vjji").ok(); let dyn_call_vij = instance.func("dynCall_vij").ok(); let dyn_call_viji = instance.func("dynCall_viji").ok(); let dyn_call_vijiii = instance.func("dynCall_vijiii").ok(); @@ -261,6 +259,7 @@ impl<'a> EmscriptenData<'a> { dyn_call_viijiii, dyn_call_viijj, dyn_call_vj, + dyn_call_vjji, dyn_call_vij, dyn_call_viji, dyn_call_vijiii, @@ -301,17 +300,19 @@ pub fn run_emscripten_instance( // println!("running emscripten instance"); if let Some(ep) = entrypoint { - println!("RUnning entry point: {}", &ep); + println!("Running entry point: {}", &ep); let ep_fn = instance.dyn_func(&ep)?; let arg = unsafe { allocate_cstr_on_stack(instance.context_mut(), args[0]).0 }; - //let (argc, argv) = store_module_arguments(instance.context_mut(), path, args); + //let (argc, argv) = store_module_arguments(instance.context_mut(), args); instance.call(&ep, &[Value::I32(arg as i32)])?; } else { let main_func = instance.dyn_func("_main")?; let num_params = main_func.signature().params().len(); let _result = match num_params { 2 => { - let (argc, argv) = store_module_arguments(instance.context_mut(), path, args); + let mut new_args = vec![path]; + new_args.extend(args); + let (argc, argv) = store_module_arguments(instance.context_mut(), new_args); instance.call("_main", &[Value::I32(argc as i32), Value::I32(argv as i32)])?; } 0 => { @@ -329,12 +330,11 @@ pub fn run_emscripten_instance( Ok(()) } -fn store_module_arguments(ctx: &mut Ctx, path: &str, args: Vec<&str>) -> (u32, u32) { +fn store_module_arguments(ctx: &mut Ctx, args: Vec<&str>) -> (u32, u32) { let argc = args.len() + 1; let mut args_slice = vec![0; argc]; - args_slice[0] = unsafe { allocate_cstr_on_stack(ctx, path).0 }; - for (slot, arg) in args_slice[1..argc].iter_mut().zip(args.iter()) { + for (slot, arg) in args_slice[0..argc].iter_mut().zip(args.iter()) { *slot = unsafe { allocate_cstr_on_stack(ctx, &arg).0 }; } @@ -606,6 +606,7 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject "___syscall272" => func!(crate::syscalls::___syscall272), "___syscall295" => func!(crate::syscalls::___syscall295), "___syscall300" => func!(crate::syscalls::___syscall300), + "___syscall320" => func!(crate::syscalls::___syscall320), "___syscall324" => func!(crate::syscalls::___syscall324), "___syscall330" => func!(crate::syscalls::___syscall330), "___syscall334" => func!(crate::syscalls::___syscall334), @@ -727,6 +728,7 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject "invoke_v" => func!(crate::emscripten_target::invoke_v), "invoke_vi" => func!(crate::emscripten_target::invoke_vi), "invoke_vj" => func!(crate::emscripten_target::invoke_vj), + "invoke_vjji" => func!(crate::emscripten_target::invoke_vjji), "invoke_vii" => func!(crate::emscripten_target::invoke_vii), "invoke_viii" => func!(crate::emscripten_target::invoke_viii), "invoke_viiii" => func!(crate::emscripten_target::invoke_viiii), diff --git a/lib/emscripten/src/syscalls/mod.rs b/lib/emscripten/src/syscalls/mod.rs index 7d048dd5a..32223768a 100644 --- a/lib/emscripten/src/syscalls/mod.rs +++ b/lib/emscripten/src/syscalls/mod.rs @@ -471,6 +471,12 @@ pub fn ___syscall300(_ctx: &mut Ctx, _one: i32, _two: i32) -> i32 { -1 } +// utimensat +pub fn ___syscall320(ctx: &mut Ctx, _which: c_int, mut _varargs: VarArgs) -> c_int { + debug!("emscripten::___syscall320 (utimensat), {}", _which); + 0 +} + pub fn ___syscall334(_ctx: &mut Ctx, _one: i32, _two: i32) -> i32 { debug!("emscripten::___syscall334"); -1 From 31acf817623aefeda471342074e471907df406d1 Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Sun, 5 May 2019 13:37:36 -0500 Subject: [PATCH 374/413] cargo fmt --- lib/runtime-core/src/codegen.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/runtime-core/src/codegen.rs b/lib/runtime-core/src/codegen.rs index 6694fbb86..6cb0021bd 100644 --- a/lib/runtime-core/src/codegen.rs +++ b/lib/runtime-core/src/codegen.rs @@ -9,10 +9,10 @@ use crate::{ types::{FuncIndex, FuncSig, SigIndex}, }; use smallvec::SmallVec; +use std::fmt; use std::fmt::Debug; use std::marker::PhantomData; use wasmparser::{Operator, Type as WpType}; -use std::fmt; #[derive(Debug)] pub enum Event<'a, 'b> { @@ -36,7 +36,7 @@ impl fmt::Debug for InternalEvent { InternalEvent::Breakpoint(_) => write!(f, "Breakpoint"), InternalEvent::SetInternal(_) => write!(f, "SetInternal"), InternalEvent::GetInternal(_) => write!(f, "GetInternal"), - _ => panic!("unknown event") + _ => panic!("unknown event"), } } } From e1138a553bb118952235acc6413657c10fc04c28 Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Sun, 5 May 2019 13:56:02 -0500 Subject: [PATCH 375/413] Fix LLVM refactor unreachable depth --- lib/llvm-backend/src/code.rs | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/lib/llvm-backend/src/code.rs b/lib/llvm-backend/src/code.rs index 0de1c2ade..7c85040ab 100644 --- a/lib/llvm-backend/src/code.rs +++ b/lib/llvm-backend/src/code.rs @@ -2525,7 +2525,7 @@ pub struct LLVMFunctionCodeGenerator { // value_stack: Vec<(Location, LocalOrTemp)>, // control_stack: Vec, // machine: Machine, - // unreachable_depth: usize, + unreachable_depth: usize, } impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { @@ -2675,29 +2675,24 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { let signatures = &self.signatures; let mut ctx = self.ctx.as_mut().unwrap(); - let mut unreachable_depth = 0; if !state.reachable { match *op { Operator::Block { ty: _ } | Operator::Loop { ty: _ } | Operator::If { ty: _ } => { - unreachable_depth += 1; - // continue; + self.unreachable_depth += 1; return Ok(()); } Operator::Else => { - if unreachable_depth != 0 { - // continue; + if self.unreachable_depth != 0 { return Ok(()); } } Operator::End => { - if unreachable_depth != 0 { - unreachable_depth -= 1; - // continue; + if self.unreachable_depth != 0 { + self.unreachable_depth -= 1; return Ok(()); } } _ => { - // continue; return Ok(()); } } @@ -4781,6 +4776,7 @@ impl ModuleCodeGenerator ::std::mem::transmute::<&Intrinsics, &'static Intrinsics>(&self.intrinsics) }, ctx: None, + unreachable_depth: 0, }; self.functions.push(code); Ok(self.functions.last_mut().unwrap()) From 2ba680ad2f37548ffec310833887d231cfe98620 Mon Sep 17 00:00:00 2001 From: Syrus Date: Sun, 5 May 2019 12:09:27 -0700 Subject: [PATCH 376/413] Improved rename function --- lib/emscripten/src/syscalls/mod.rs | 21 ++++++++++++++++++--- lib/emscripten/src/syscalls/unix.rs | 3 ++- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/lib/emscripten/src/syscalls/mod.rs b/lib/emscripten/src/syscalls/mod.rs index 32223768a..c8ddcd413 100644 --- a/lib/emscripten/src/syscalls/mod.rs +++ b/lib/emscripten/src/syscalls/mod.rs @@ -36,6 +36,7 @@ use libc::{ // writev, stat, write, + rename, // sockaddr_in, }; use wasmer_runtime_core::vm::Ctx; @@ -118,9 +119,23 @@ pub fn ___syscall20(_ctx: &mut Ctx, _one: i32, _two: i32) -> i32 { unsafe { getpid() } } -pub fn ___syscall38(_ctx: &mut Ctx, _one: i32, _two: i32) -> i32 { - debug!("emscripten::___syscall38"); - -1 +// rename +pub fn ___syscall38(ctx: &mut Ctx, _which: c_int, mut varargs: VarArgs) -> i32 { + debug!("emscripten::___syscall38 (rename)"); + let old_path_addr: u32 = varargs.get(ctx); + let new_path_addr: u32 = varargs.get(ctx); + let old_path = emscripten_memory_pointer!(ctx.memory(0), old_path_addr) as *const i8; + let new_path = emscripten_memory_pointer!(ctx.memory(0), new_path_addr) as *const i8; + let result = unsafe { rename(old_path, new_path) }; + unsafe { + debug!( + "=> old_path: {}, new_path: {}, result: {}", + std::ffi::CStr::from_ptr(old_path).to_str().unwrap(), + std::ffi::CStr::from_ptr(new_path).to_str().unwrap(), + result + ); + } + result } // rmdir diff --git a/lib/emscripten/src/syscalls/unix.rs b/lib/emscripten/src/syscalls/unix.rs index 32b63593f..d4c2f1413 100644 --- a/lib/emscripten/src/syscalls/unix.rs +++ b/lib/emscripten/src/syscalls/unix.rs @@ -251,8 +251,9 @@ pub fn ___syscall33(ctx: &mut Ctx, _which: c_int, mut varargs: VarArgs) -> c_int let path = emscripten_memory_pointer!(ctx.memory(0), path_ptr) as *const i8; let result = unsafe { access(path, amode) }; debug!( - "=> path: {}, result: {}", + "=> path: {}, amode: {}, result: {}", unsafe { std::ffi::CStr::from_ptr(path).to_str().unwrap() }, + amode, result ); result From 341766dee58f8ee9b955762143edc602ac8c321d Mon Sep 17 00:00:00 2001 From: Syrus Date: Sun, 5 May 2019 12:09:55 -0700 Subject: [PATCH 377/413] Fixed format --- lib/emscripten/src/emscripten_target.rs | 16 +++++----------- lib/emscripten/src/syscalls/mod.rs | 4 ++-- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/lib/emscripten/src/emscripten_target.rs b/lib/emscripten/src/emscripten_target.rs index aa243af57..88073bc32 100644 --- a/lib/emscripten/src/emscripten_target.rs +++ b/lib/emscripten/src/emscripten_target.rs @@ -68,7 +68,10 @@ pub fn _pthread_attr_getstack( _stacksize: i32, _other: i32, ) -> i32 { - debug!("emscripten::_pthread_attr_getstack({}, {}, {})", _stackaddr, _stacksize, _other); + debug!( + "emscripten::_pthread_attr_getstack({}, {}, {})", + _stackaddr, _stacksize, _other + ); // TODO: Translate from Emscripten // HEAP32[stackaddr >> 2] = STACK_BASE; // HEAP32[stacksize >> 2] = TOTAL_STACK; @@ -734,16 +737,7 @@ pub fn invoke_vj(ctx: &mut Ctx, index: i32, a1: i32, a2: i32) { } pub fn invoke_vjji(ctx: &mut Ctx, index: i32, a1: i32, a2: i32, a3: i32, a4: i32, a5: i32) { debug!("emscripten::invoke_vjji"); - invoke_no_return!( - ctx, - dyn_call_vjji, - index, - a1, - a2, - a3, - a4, - a5 - ) + invoke_no_return!(ctx, dyn_call_vjji, index, a1, a2, a3, a4, a5) } pub fn invoke_vij(ctx: &mut Ctx, index: i32, a1: i32, a2: i32, a3: i32) { debug!("emscripten::invoke_vij"); diff --git a/lib/emscripten/src/syscalls/mod.rs b/lib/emscripten/src/syscalls/mod.rs index c8ddcd413..a777628d3 100644 --- a/lib/emscripten/src/syscalls/mod.rs +++ b/lib/emscripten/src/syscalls/mod.rs @@ -31,13 +31,13 @@ use libc::{ off_t, // open, read, + rename, + // sockaddr_in, // readv, rmdir, // writev, stat, write, - rename, - // sockaddr_in, }; use wasmer_runtime_core::vm::Ctx; From eef28c19b751fc60937ab43cce445e78f0d7bfae Mon Sep 17 00:00:00 2001 From: Syrus Date: Sun, 5 May 2019 12:13:35 -0700 Subject: [PATCH 378/413] Fixed emscripten entrypoint name --- src/bin/wasmer.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index 7516e3acc..7760cc399 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -87,8 +87,8 @@ struct Run { em_symbol_map: Option, /// Begin execution at the specified symbol - #[structopt(long = "with-entry-point")] - entrypoint: Option, + #[structopt(long = "em-entrypoint", group = "emscripten")] + em_entrypoint: Option, /// WASI pre-opened directory #[structopt(long = "dir", multiple = true, group = "wasi")] @@ -324,7 +324,7 @@ fn execute_wasm(options: &Run) -> Result<(), String> { options.path.to_str().unwrap() }, options.args.iter().map(|arg| arg.as_str()).collect(), - options.entrypoint.clone(), + options.em_entrypoint.clone(), ) .map_err(|e| format!("{:?}", e))?; } else { From f076c04b762289a92ceeada163adf2d23f7718ee Mon Sep 17 00:00:00 2001 From: Syrus Date: Sun, 5 May 2019 12:14:25 -0700 Subject: [PATCH 379/413] Moved from println to debug the emscripten entrypoint statement --- lib/emscripten/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/emscripten/src/lib.rs b/lib/emscripten/src/lib.rs index 3a9d53a11..07ae9a2a2 100644 --- a/lib/emscripten/src/lib.rs +++ b/lib/emscripten/src/lib.rs @@ -300,7 +300,7 @@ pub fn run_emscripten_instance( // println!("running emscripten instance"); if let Some(ep) = entrypoint { - println!("Running entry point: {}", &ep); + debug!("Running entry point: {}", &ep); let ep_fn = instance.dyn_func(&ep)?; let arg = unsafe { allocate_cstr_on_stack(instance.context_mut(), args[0]).0 }; //let (argc, argv) = store_module_arguments(instance.context_mut(), args); From 3093e65bc1ea9ce369589569bd3c9cf1e1d571e0 Mon Sep 17 00:00:00 2001 From: Syrus Date: Sun, 5 May 2019 12:17:10 -0700 Subject: [PATCH 380/413] Added extra-debug option --- Cargo.toml | 1 + Makefile | 3 +++ 2 files changed, 4 insertions(+) diff --git a/Cargo.toml b/Cargo.toml index 6dc113c65..d4cfef3e8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -44,6 +44,7 @@ rustc_version = "0.2.3" [features] default = ["fast-tests", "wasi"] debug = ["wasmer-runtime-core/debug"] +extra-debug = ["wasmer-clif-backend/debug", "wasmer-runtime-core/debug"] # This feature will allow cargo test to run much faster fast-tests = [] "backend:llvm" = ["wasmer-llvm-backend"] diff --git a/Makefile b/Makefile index d52d8c09f..ea9522a03 100644 --- a/Makefile +++ b/Makefile @@ -84,5 +84,8 @@ production-release: debug-release: cargo build --release --features "debug" +extra-debug-release: + cargo build --release --features "extra-debug" + publish-release: ghr -t ${GITHUB_TOKEN} -u ${CIRCLE_PROJECT_USERNAME} -r ${CIRCLE_PROJECT_REPONAME} -c ${CIRCLE_SHA1} -delete ${VERSION} ./artifacts/ From 4770277b15959c1d669e7ab6be8d1a6c3906c727 Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Sun, 5 May 2019 14:28:40 -0500 Subject: [PATCH 381/413] Remove parser refactor commented out code, unused imports and fields --- lib/llvm-backend/src/code.rs | 166 +++-------------------------------- 1 file changed, 12 insertions(+), 154 deletions(-) diff --git a/lib/llvm-backend/src/code.rs b/lib/llvm-backend/src/code.rs index 7c85040ab..302db5367 100644 --- a/lib/llvm-backend/src/code.rs +++ b/lib/llvm-backend/src/code.rs @@ -8,7 +8,7 @@ use inkwell::{ AddressSpace, FloatPredicate, IntPredicate, }; use smallvec::SmallVec; -use std::{any::Any, collections::HashMap, sync::Arc}; +use std::sync::Arc; use wasmer_runtime_core::{ backend::Backend, codegen::*, @@ -2475,32 +2475,15 @@ pub struct LLVMModuleCodeGenerator { context: Context, builder: Builder, functions: Vec, - functions_llvm: Map, - // signatures: Option>>, signatures: Map, signatures_raw: Map, function_signatures: Option>>, - // function_labels: Option)>>, - // assembler: Option, func_import_count: usize, intrinsics: Intrinsics, personality_func: FunctionValue, module: Module, - // ctx: CtxType, } -// pub struct LLVMExecutionContext { -// // #[allow(dead_code)] -// // code: ExecutableBuffer, -// // #[allow(dead_code)] -// // functions: Vec, -// // function_pointers: Vec, -// // signatures: Arc>, -// // _br_table_data: Vec>, -// // breakpoints: Arc>>, -// // func_import_count: usize, -// } - pub struct LLVMFunctionCodeGenerator { state: State, builder: &'static Builder, @@ -2509,31 +2492,18 @@ pub struct LLVMFunctionCodeGenerator { func_sig: FuncSig, intrinsics: &'static Intrinsics, signatures: Map, - // signatures: Arc>, - - // function_signatures: Arc>, - - // assembler: Option, - // function_labels: Option)>>, - // br_table_data: Option>>, - // breakpoints: Option>>, - // returns: SmallVec<[WpType; 1]>, locals: Vec, // Contains params and locals num_params: usize, ctx: Option>, - // num_locals: usize, - // value_stack: Vec<(Location, LocalOrTemp)>, - // control_stack: Vec, - // machine: Machine, unreachable_depth: usize, } impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { - fn feed_return(&mut self, ty: WpType) -> Result<(), CodegenError> { + fn feed_return(&mut self, _ty: WpType) -> Result<(), CodegenError> { Ok(()) } - fn feed_param(&mut self, ty: WpType) -> Result<(), CodegenError> { + fn feed_param(&mut self, _ty: WpType) -> Result<(), CodegenError> { Ok(()) } @@ -2582,7 +2552,7 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { let function = unsafe { ::std::mem::transmute::<&FunctionValue, &'static FunctionValue>(&self.function) }; - let mut ctx = self + let ctx = self .intrinsics .ctx(module_info, self.builder, function, cache_builder); @@ -2591,76 +2561,9 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { } fn feed_event(&mut self, event: Event, module_info: &ModuleInfo) -> Result<(), CodegenError> { - // let sig_index = info.func_assoc[func_index.convert_up(info)]; - // let func_sig = &info.signatures[sig_index]; - // - // let function = self.functions[func_index]; - // let mut state = State::new(); - // let entry_block = context.append_basic_block(&function, "entry"); - // - // let return_block = context.append_basic_block(&function, "return"); - // builder.position_at_end(&return_block); - // - // let phis: SmallVec<[PhiValue; 1]> = func_sig - // .returns() - // .iter() - // .map(|&wasmer_ty| type_to_llvm(intrinsics, wasmer_ty)) - // .map(|ty| builder.build_phi(ty, &state.var_name())) - // .collect(); - // - // state.push_block(return_block, phis); - // builder.position_at_end(&entry_block); - // - // let mut locals = Vec::with_capacity(locals_reader.get_count() as usize); // TODO fix capacity - // - // locals.extend( - // function - // .get_param_iter() - // .skip(1) - // .enumerate() - // .map(|(index, param)| { - // let ty = param.get_type(); - // - // let alloca = builder.build_alloca(ty, &format!("local{}", index)); - // builder.build_store(alloca, param); - // alloca - // }), - // ); - // - // let param_len = locals.len(); - // - // let mut local_idx = 0; - // for local in locals_reader.into_iter() { - // let (count, ty) = local?; - // let wasmer_ty = type_to_type(ty)?; - // let ty = type_to_llvm(intrinsics, wasmer_ty); - // - // let default_value = match wasmer_ty { - // Type::I32 => intrinsics.i32_zero.as_basic_value_enum(), - // Type::I64 => intrinsics.i64_zero.as_basic_value_enum(), - // Type::F32 => intrinsics.f32_zero.as_basic_value_enum(), - // Type::F64 => intrinsics.f64_zero.as_basic_value_enum(), - // }; - // - // for _ in 0..count { - // let alloca = builder.build_alloca(ty, &format!("local{}", param_len + local_idx)); - // - // builder.build_store(alloca, default_value); - // - // locals.push(alloca); - // local_idx += 1; - // } - // } - // - // let start_of_code_block = context.append_basic_block(&function, "start_of_code"); - // let entry_end_inst = builder.build_unconditional_branch(&start_of_code_block); - // builder.position_at_end(&start_of_code_block); - // - // let cache_builder = context.create_builder(); - // cache_builder.position_before(&entry_end_inst); let op = match event { Event::Wasm(x) => x, - Event::Internal(x) => { + Event::Internal(_x) => { return Ok(()); } }; @@ -4648,46 +4551,19 @@ impl ModuleCodeGenerator Some(Linkage::External), ); - // TODO signatures and functions - // let signatures: Map = info - // .signatures - // .iter() - // .map(|(_, sig)| func_sig_to_llvm(&context, &intrinsics, sig)) - // .collect(); let signatures = Map::new(); - // let functions: Map = info - // .func_assoc - // .iter() - // .skip(info.imported_functions.len()) - // .map(|(func_index, &sig_index)| { - // let func = module.add_function( - // &format!("fn{}", func_index.index()), - // signatures[sig_index], - // Some(Linkage::External), - // ); - // func.set_personality_function(personality_func); - // func - // }) - // .collect(); - let functions = Map::new(); - - // let mut ctx = intrinsics.ctx(info, builder, &function, cache_builder); LLVMModuleCodeGenerator { - context: context, - builder: builder, - module: module, + context, + builder, + module, functions: vec![], - functions_llvm: functions, - signatures: signatures, + signatures, signatures_raw: Map::new(), function_signatures: None, - // function_labels: Some(HashMap::new()), - // assembler: Some(Assembler::new().unwrap()), func_import_count: 0, - intrinsics: intrinsics, - personality_func: personality_func, - // ctx: ctx, + intrinsics, + personality_func, } } @@ -4695,15 +4571,13 @@ impl ModuleCodeGenerator Backend::LLVM } - fn check_precondition(&mut self, module_info: &ModuleInfo) -> Result<(), CodegenError> { + fn check_precondition(&mut self, _module_info: &ModuleInfo) -> Result<(), CodegenError> { Ok(()) } fn next_function(&mut self) -> Result<&mut LLVMFunctionCodeGenerator, CodegenError> { // Creates a new function and returns the function-scope code generator for it. - use std::mem; - let sig_id = self.function_signatures.as_ref().unwrap() [FuncIndex::new(self.func_import_count + self.functions.len())]; let func_sig = self.signatures_raw[sig_id].clone(); @@ -4755,23 +4629,7 @@ impl ModuleCodeGenerator func_sig: func_sig, locals, signatures: self.signatures.clone(), - // context: self.fu - - // signatures: self.signatures.as_ref().unwrap().clone(), - // function_signatures: self.function_signatures.as_ref().unwrap().clone(), - // - // assembler: Some(assembler), - // function_labels: Some(function_labels), - // br_table_data: Some(br_table_data), - // breakpoints: Some(breakpoints), - // returns: smallvec![], - // locals: vec![], num_params, - // num_locals: 0, - // value_stack: vec![], - // control_stack: vec![], - // machine: Machine::new(), - // unreachable_depth: 0, intrinsics: unsafe { ::std::mem::transmute::<&Intrinsics, &'static Intrinsics>(&self.intrinsics) }, From 789af39f9e5f377c7c0c496e76ae04788a50a6d9 Mon Sep 17 00:00:00 2001 From: Syrus Date: Sun, 5 May 2019 12:31:31 -0700 Subject: [PATCH 382/413] Improved ioctl calls --- lib/emscripten/src/syscalls/unix.rs | 73 +++++++++++++++-------------- 1 file changed, 39 insertions(+), 34 deletions(-) diff --git a/lib/emscripten/src/syscalls/unix.rs b/lib/emscripten/src/syscalls/unix.rs index d4c2f1413..dc018188b 100644 --- a/lib/emscripten/src/syscalls/unix.rs +++ b/lib/emscripten/src/syscalls/unix.rs @@ -355,41 +355,46 @@ pub fn ___syscall54(ctx: &mut Ctx, _which: c_int, mut varargs: VarArgs) -> c_int debug!("emscripten::___syscall54 (ioctl) {}", _which); let fd: i32 = varargs.get(ctx); let request: u32 = varargs.get(ctx); - debug!("fd: {}, op: {}", fd, request); + debug!("=> fd: {}, op: {}", fd, request); // Got the equivalents here: https://code.woboq.org/linux/linux/include/uapi/asm-generic/ioctls.h.html - match request as _ { - 21537 => { - // FIONBIO - let argp: u32 = varargs.get(ctx); - let argp_ptr = emscripten_memory_pointer!(ctx.memory(0), argp) as *mut c_void; - let ret = unsafe { ioctl(fd, FIONBIO, argp_ptr) }; - debug!("ret(FIONBIO): {}", ret); - ret - // 0 - } - 21523 => { - // TIOCGWINSZ - let argp: u32 = varargs.get(ctx); - let argp_ptr = emscripten_memory_pointer!(ctx.memory(0), argp) as *mut c_void; - let ret = unsafe { ioctl(fd, TIOCGWINSZ, argp_ptr) }; - debug!("ret(TIOCGWINSZ): {} (harcoded to 0)", ret); - // ret - // TODO: We hardcode the value to have emscripten tests pass, as for some reason - // when the capturer is active, ioctl returns -1 instead of 0 - if ret == -1 { - 0 - } else { - ret - } - } - _ => { - debug!( - "emscripten::___syscall54 -> non implemented case {}", - request - ); - 0 - } - } + let argp: u32 = varargs.get(ctx); + let argp_ptr = emscripten_memory_pointer!(ctx.memory(0), argp) as *mut c_void; + let ret = unsafe { ioctl(fd, request as _, argp_ptr) }; + debug!("=> {}", ret); + ret + // match request as _ { + // 21537 => { + // // FIONBIO + // let argp: u32 = varargs.get(ctx); + // let argp_ptr = emscripten_memory_pointer!(ctx.memory(0), argp) as *mut c_void; + // let ret = unsafe { ioctl(fd, FIONBIO, argp_ptr) }; + // debug!("ret(FIONBIO): {}", ret); + // ret + // // 0 + // } + // 21523 => { + // // TIOCGWINSZ + // let argp: u32 = varargs.get(ctx); + // let argp_ptr = emscripten_memory_pointer!(ctx.memory(0), argp) as *mut c_void; + // let ret = unsafe { ioctl(fd, TIOCGWINSZ, argp_ptr) }; + // debug!("ret(TIOCGWINSZ): {} (harcoded to 0)", ret); + // // ret + // // TODO: We hardcode the value to have emscripten tests pass, as for some reason + // // when the capturer is active, ioctl returns -1 instead of 0 + // if ret == -1 { + // 0 + // } else { + // ret + // } + // } + // _ => { + // debug!( + // "emscripten::___syscall54 -> non implemented case {}", + // request + // ); + // 0 + // } + // } } // socketcall From 8f345e9e8ccfaa1edd3677677e7956fedfd11791 Mon Sep 17 00:00:00 2001 From: Syrus Date: Sun, 5 May 2019 13:55:30 -0700 Subject: [PATCH 383/413] Fixed ioctl in Unix. Fixed provied main arguments --- lib/emscripten/src/lib.rs | 4 +- lib/emscripten/src/syscalls/unix.rs | 76 ++++++++++++++--------------- 2 files changed, 40 insertions(+), 40 deletions(-) diff --git a/lib/emscripten/src/lib.rs b/lib/emscripten/src/lib.rs index 07ae9a2a2..48b970a03 100644 --- a/lib/emscripten/src/lib.rs +++ b/lib/emscripten/src/lib.rs @@ -339,14 +339,14 @@ fn store_module_arguments(ctx: &mut Ctx, args: Vec<&str>) -> (u32, u32) { } let (argv_offset, argv_slice): (_, &mut [u32]) = - unsafe { allocate_on_stack(ctx, ((argc + 1) * 4) as u32) }; + unsafe { allocate_on_stack(ctx, ((argc) * 4) as u32) }; assert!(!argv_slice.is_empty()); for (slot, arg) in argv_slice[0..argc].iter_mut().zip(args_slice.iter()) { *slot = *arg } argv_slice[argc] = 0; - (argc as u32, argv_offset) + (argc as u32 - 1, argv_offset) } pub fn emscripten_set_up_memory(memory: &Memory, globals: &EmscriptenGlobalsData) { diff --git a/lib/emscripten/src/syscalls/unix.rs b/lib/emscripten/src/syscalls/unix.rs index dc018188b..a66cf3097 100644 --- a/lib/emscripten/src/syscalls/unix.rs +++ b/lib/emscripten/src/syscalls/unix.rs @@ -357,44 +357,44 @@ pub fn ___syscall54(ctx: &mut Ctx, _which: c_int, mut varargs: VarArgs) -> c_int let request: u32 = varargs.get(ctx); debug!("=> fd: {}, op: {}", fd, request); // Got the equivalents here: https://code.woboq.org/linux/linux/include/uapi/asm-generic/ioctls.h.html - let argp: u32 = varargs.get(ctx); - let argp_ptr = emscripten_memory_pointer!(ctx.memory(0), argp) as *mut c_void; - let ret = unsafe { ioctl(fd, request as _, argp_ptr) }; - debug!("=> {}", ret); - ret - // match request as _ { - // 21537 => { - // // FIONBIO - // let argp: u32 = varargs.get(ctx); - // let argp_ptr = emscripten_memory_pointer!(ctx.memory(0), argp) as *mut c_void; - // let ret = unsafe { ioctl(fd, FIONBIO, argp_ptr) }; - // debug!("ret(FIONBIO): {}", ret); - // ret - // // 0 - // } - // 21523 => { - // // TIOCGWINSZ - // let argp: u32 = varargs.get(ctx); - // let argp_ptr = emscripten_memory_pointer!(ctx.memory(0), argp) as *mut c_void; - // let ret = unsafe { ioctl(fd, TIOCGWINSZ, argp_ptr) }; - // debug!("ret(TIOCGWINSZ): {} (harcoded to 0)", ret); - // // ret - // // TODO: We hardcode the value to have emscripten tests pass, as for some reason - // // when the capturer is active, ioctl returns -1 instead of 0 - // if ret == -1 { - // 0 - // } else { - // ret - // } - // } - // _ => { - // debug!( - // "emscripten::___syscall54 -> non implemented case {}", - // request - // ); - // 0 - // } - // } + // let argp: u32 = varargs.get(ctx); + // let argp_ptr = emscripten_memory_pointer!(ctx.memory(0), argp) as *mut c_void; + // let ret = unsafe { ioctl(fd, request as _, argp_ptr) }; + // debug!("=> {}", ret); + // ret + match request as _ { + 21537 => { + // FIONBIO + let argp: u32 = varargs.get(ctx); + let argp_ptr = emscripten_memory_pointer!(ctx.memory(0), argp) as *mut c_void; + let ret = unsafe { ioctl(fd, FIONBIO, argp_ptr) }; + debug!("ret(FIONBIO): {}", ret); + ret + // 0 + } + 21523 => { + // TIOCGWINSZ + let argp: u32 = varargs.get(ctx); + let argp_ptr = emscripten_memory_pointer!(ctx.memory(0), argp) as *mut c_void; + let ret = unsafe { ioctl(fd, TIOCGWINSZ, argp_ptr) }; + debug!("ret(TIOCGWINSZ): {} (harcoded to 0)", ret); + // ret + // TODO: We hardcode the value to have emscripten tests pass, as for some reason + // when the capturer is active, ioctl returns -1 instead of 0 + if ret == -1 { + 0 + } else { + ret + } + } + _ => { + debug!( + "emscripten::___syscall54 -> non implemented case {}", + request + ); + 0 + } + } } // socketcall From d8028a4345253d531655488fb5d4fd56a9aef896 Mon Sep 17 00:00:00 2001 From: Syrus Date: Sun, 5 May 2019 14:18:12 -0700 Subject: [PATCH 384/413] Fixed emscripten-singlepass tests call --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index ea9522a03..2a1bfa138 100644 --- a/Makefile +++ b/Makefile @@ -62,7 +62,7 @@ test-emscripten-clif: cargo test --manifest-path lib/emscripten/Cargo.toml --features clif -- --test-threads=1 $(runargs) test-emscripten-singlepass: - cargo +nightly test --manifest-path lib/emscripten/Cargo.toml --features singlepass -- --test-threads=1 $(runargs) + cargo test --manifest-path lib/emscripten/Cargo.toml --features singlepass -- --test-threads=1 $(runargs) singlepass-debug-release: cargo +nightly build --features "backend:singlepass debug" --release From a3e933df1b05d1e050c6cb647d607a3f43b59d61 Mon Sep 17 00:00:00 2001 From: Syrus Date: Sun, 5 May 2019 17:03:49 -0700 Subject: [PATCH 385/413] Added changes to the Changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a06380a54..8442d6b89 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ All PRs to the Wasmer repository must add to this file. Blocks of changes will separated by version increments. ## **[Unreleased]** +- [#422](https://github.com/wasmerio/wasmer/pull/422) Improved Emscripten functions to run optipng and pngquant compiled to wasm - [#409](https://github.com/wasmerio/wasmer/pull/409) Improved Emscripten functions to run JavascriptCore compiled to wasm - [#399](https://github.com/wasmerio/wasmer/pull/399) Add example of using a plugin extended from WASI - [#397](https://github.com/wasmerio/wasmer/pull/397) Fix WASI fs abstraction to work on Windows From ca4606516acf8e4a13fc572805c172e51b65f000 Mon Sep 17 00:00:00 2001 From: Syrus Date: Sun, 5 May 2019 17:17:01 -0700 Subject: [PATCH 386/413] Added README to the examples dir --- examples/README.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 examples/README.md diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 000000000..5abb6eaee --- /dev/null +++ b/examples/README.md @@ -0,0 +1,9 @@ +# WebAssembly Examples + +In this directory you can find a set of different examples that can run on the Wasmer WebAssembly runtime: + +* Cowsay (WASI ABI) [[source-code](https://github.com/wapm-packages/cowsay)] [[wapm-package](https://wapm.io/package/cowsay)] +* Nginx (Emscripten ABI) [[source-code](https://github.com/wapm-packages/nginx)] [[wapm-package](https://wapm.io/package/nginx)] +* Lua (Emscripten ABI) [[source-code](https://github.com/wapm-packages/lua)] [[wapm-package](https://wapm.io/package/lua)] +* PHP (Emscripten ABI) [[source-code](https://github.com/wapm-packages/php)] [[wapm-package](https://wapm.io/package/php)] +* SQLite (Emscripten ABI) [[source-code](https://github.com/wapm-packages/sqlite)] [[wapm-package](https://wapm.io/package/sqlite)] From 0926a5020e74ae64cf608317b2b6adaf29d4ca54 Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Sun, 5 May 2019 20:11:47 -0500 Subject: [PATCH 387/413] Implement caching for parser refactor --- lib/llvm-backend/src/code.rs | 29 +++++++++++--- lib/runtime-core/src/codegen.rs | 37 ++++++++---------- lib/singlepass-backend/src/codegen_x64.rs | 46 +++++++++++++++++------ 3 files changed, 73 insertions(+), 39 deletions(-) diff --git a/lib/llvm-backend/src/code.rs b/lib/llvm-backend/src/code.rs index 302db5367..2a607a076 100644 --- a/lib/llvm-backend/src/code.rs +++ b/lib/llvm-backend/src/code.rs @@ -10,10 +10,11 @@ use inkwell::{ use smallvec::SmallVec; use std::sync::Arc; use wasmer_runtime_core::{ - backend::Backend, + backend::{Backend, CacheGen, Token}, + cache::{Artifact, Error as CacheError}, codegen::*, memory::MemoryType, - module::ModuleInfo, + module::{ModuleInfo, ModuleInner}, structures::{Map, SliceMap, TypedIndex}, types::{ FuncIndex, FuncSig, GlobalIndex, LocalFuncIndex, LocalOrImport, MemoryIndex, SigIndex, @@ -25,7 +26,7 @@ use wasmparser::{ Type as WpType, }; -use crate::backend::LLVMBackend; +use crate::backend::{LLVMBackend, LLVMCache}; use crate::intrinsics::{CtxType, GlobalCache, Intrinsics, MemoryCache}; use crate::read_info::type_to_type; use crate::state::{ControlFrame, IfElseState, State}; @@ -4640,7 +4641,10 @@ impl ModuleCodeGenerator Ok(self.functions.last_mut().unwrap()) } - fn finalize(self, module_info: &ModuleInfo) -> Result { + fn finalize( + self, + module_info: &ModuleInfo, + ) -> Result<(LLVMBackend, Box), CodegenError> { // self.module.print_to_stderr(); generate_trampolines( @@ -4668,8 +4672,8 @@ impl ModuleCodeGenerator // self.module.print_to_stderr(); - let (backend, _cache_gen) = LLVMBackend::new(self.module, self.intrinsics); - Ok(backend) + let (backend, cache_gen) = LLVMBackend::new(self.module, self.intrinsics); + Ok((backend, Box::new(cache_gen))) } fn feed_signatures(&mut self, signatures: Map) -> Result<(), CodegenError> { @@ -4693,4 +4697,17 @@ impl ModuleCodeGenerator self.func_import_count += 1; Ok(()) } + + unsafe fn from_cache(artifact: Artifact, _: Token) -> Result { + let (info, _, memory) = artifact.consume(); + let (backend, cache_gen) = + LLVMBackend::from_buffer(memory).map_err(CacheError::DeserializeError)?; + + Ok(ModuleInner { + runnable_module: Box::new(backend), + cache_gen: Box::new(cache_gen), + + info, + }) + } } diff --git a/lib/runtime-core/src/codegen.rs b/lib/runtime-core/src/codegen.rs index 6cb0021bd..07cc7d94a 100644 --- a/lib/runtime-core/src/codegen.rs +++ b/lib/runtime-core/src/codegen.rs @@ -50,7 +50,7 @@ pub trait ModuleCodeGenerator, RM: RunnableModule, /// Creates a new function and returns the function-scope code generator for it. fn next_function(&mut self) -> Result<&mut FCG, E>; - fn finalize(self, module_info: &ModuleInfo) -> Result; + fn finalize(self, module_info: &ModuleInfo) -> Result<(RM, Box), E>; fn feed_signatures(&mut self, signatures: Map) -> Result<(), E>; /// Sets function signatures. @@ -58,6 +58,8 @@ pub trait ModuleCodeGenerator, RM: RunnableModule, /// Adds an import function. fn feed_import_function(&mut self) -> Result<(), E>; + + unsafe fn from_cache(cache: Artifact, _: Token) -> Result; } pub struct StreamingCompiler< @@ -131,15 +133,6 @@ impl< compiler_config: CompilerConfig, _: Token, ) -> CompileResult { - struct Placeholder; - impl CacheGen for Placeholder { - fn generate_cache(&self) -> Result<(Box<[u8]>, Memory), CacheError> { - Err(CacheError::Unknown( - "the streaming compiler API doesn't support caching yet".to_string(), - )) - } - } - let mut mcg = MCG::new(); let mut chain = (self.middleware_chain_generator)(); let info = crate::parse::read_module( @@ -149,22 +142,24 @@ impl< &mut chain, &compiler_config, )?; - let exec_context = mcg - .finalize(&info) - .map_err(|x| CompileError::InternalError { - msg: format!("{:?}", x), - })?; + let (exec_context, cache_gen) = + mcg.finalize(&info) + .map_err(|x| CompileError::InternalError { + msg: format!("{:?}", x), + })?; Ok(ModuleInner { - cache_gen: Box::new(Placeholder), + cache_gen, runnable_module: Box::new(exec_context), - info: info, + info, }) } - unsafe fn from_cache(&self, _artifact: Artifact, _: Token) -> Result { - Err(CacheError::Unknown( - "the streaming compiler API doesn't support caching yet".to_string(), - )) + unsafe fn from_cache( + &self, + artifact: Artifact, + token: Token, + ) -> Result { + MCG::from_cache(artifact, token) } } diff --git a/lib/singlepass-backend/src/codegen_x64.rs b/lib/singlepass-backend/src/codegen_x64.rs index 86bcde07e..22687cd9f 100644 --- a/lib/singlepass-backend/src/codegen_x64.rs +++ b/lib/singlepass-backend/src/codegen_x64.rs @@ -10,10 +10,11 @@ use smallvec::SmallVec; use std::ptr::NonNull; use std::{any::Any, collections::HashMap, sync::Arc}; use wasmer_runtime_core::{ - backend::{Backend, RunnableModule}, + backend::{sys::Memory, Backend, CacheGen, RunnableModule, Token}, + cache::{Artifact, Error as CacheError}, codegen::*, memory::MemoryType, - module::ModuleInfo, + module::{ModuleInfo, ModuleInner}, structures::{Map, TypedIndex}, typed_func::Wasm, types::{ @@ -349,7 +350,10 @@ impl ModuleCodeGenerator Ok(self.functions.last_mut().unwrap()) } - fn finalize(mut self, _: &ModuleInfo) -> Result { + fn finalize( + mut self, + _: &ModuleInfo, + ) -> Result<(X64ExecutionContext, Box), CodegenError> { let (assembler, mut br_table_data, breakpoints) = match self.functions.last_mut() { Some(x) => ( x.assembler.take().unwrap(), @@ -404,15 +408,27 @@ impl ModuleCodeGenerator .collect(), ); - Ok(X64ExecutionContext { - code: output, - functions: self.functions, - signatures: self.signatures.as_ref().unwrap().clone(), - _br_table_data: br_table_data, - breakpoints: breakpoints, - func_import_count: self.func_import_count, - function_pointers: out_labels, - }) + struct Placeholder; + impl CacheGen for Placeholder { + fn generate_cache(&self) -> Result<(Box<[u8]>, Memory), CacheError> { + Err(CacheError::Unknown( + "the singlepass backend doesn't support caching yet".to_string(), + )) + } + } + + Ok(( + X64ExecutionContext { + code: output, + functions: self.functions, + signatures: self.signatures.as_ref().unwrap().clone(), + _br_table_data: br_table_data, + breakpoints: breakpoints, + func_import_count: self.func_import_count, + function_pointers: out_labels, + }, + Box::new(Placeholder), + )) } fn feed_signatures(&mut self, signatures: Map) -> Result<(), CodegenError> { @@ -461,6 +477,12 @@ impl ModuleCodeGenerator Ok(()) } + + unsafe fn from_cache(artifact: Artifact, _: Token) -> Result { + Err(CacheError::Unknown( + "the singlepass compiler API doesn't support caching yet".to_string(), + )) + } } impl X64FunctionCode { From 089aab296d59a93dc4a1245b71c063b3c556b202 Mon Sep 17 00:00:00 2001 From: Pekka Enberg Date: Mon, 6 May 2019 20:42:14 +0300 Subject: [PATCH 388/413] codegen: Remove unused LoadError import Rustc complains that: warning: unused import: `parse::LoadError` --> lib/runtime-core/src/codegen.rs:7:5 | 7 | parse::LoadError, | ^^^^^^^^^^^^^^^^ | --- lib/runtime-core/src/codegen.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/runtime-core/src/codegen.rs b/lib/runtime-core/src/codegen.rs index 210a105be..777104001 100644 --- a/lib/runtime-core/src/codegen.rs +++ b/lib/runtime-core/src/codegen.rs @@ -4,7 +4,6 @@ use crate::{ cache::{Artifact, Error as CacheError}, error::{CompileError, CompileResult}, module::{ModuleInfo, ModuleInner}, - parse::LoadError, structures::Map, types::{FuncIndex, FuncSig, SigIndex}, }; From ab184aceeabe8e0156c7f543873eeeeacc44bbee Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 6 May 2019 14:05:04 -0700 Subject: [PATCH 389/413] Update emscripten to run JSC --- lib/emscripten/src/lib.rs | 17 +++++++++++----- lib/emscripten/src/time.rs | 4 +++- lib/emscripten/src/utils.rs | 38 +++++++++++++++++++++++++++++++++++ lib/runtime-core/src/types.rs | 2 +- 4 files changed, 54 insertions(+), 7 deletions(-) diff --git a/lib/emscripten/src/lib.rs b/lib/emscripten/src/lib.rs index 48b970a03..e213b5048 100644 --- a/lib/emscripten/src/lib.rs +++ b/lib/emscripten/src/lib.rs @@ -50,7 +50,7 @@ mod varargs; pub use self::storage::{align_memory, static_alloc}; pub use self::utils::{ - allocate_cstr_on_stack, allocate_on_stack, get_emscripten_memory_size, + allocate_cstr_on_stack, allocate_on_stack, get_emscripten_memory_size, get_emscripten_metadata, get_emscripten_table_size, is_emscripten_module, }; @@ -351,9 +351,7 @@ fn store_module_arguments(ctx: &mut Ctx, args: Vec<&str>) -> (u32, u32) { pub fn emscripten_set_up_memory(memory: &Memory, globals: &EmscriptenGlobalsData) { let dynamictop_ptr = globals.dynamictop_ptr; - let stack_max = globals.stack_max; - - let dynamic_base = align_memory(stack_max); + let dynamic_base = globals.dynamic_base; memory.view::()[(dynamictop_ptr / 4) as usize].set(dynamic_base); } @@ -364,6 +362,7 @@ pub struct EmscriptenGlobalsData { stacktop: u32, stack_max: u32, dynamictop_ptr: u32, + dynamic_base: u32, memory_base: u32, table_base: u32, temp_double_ptr: u32, @@ -433,7 +432,14 @@ impl EmscriptenGlobals { let temp_double_ptr = static_top; static_top += 16; - let dynamictop_ptr = static_alloc(&mut static_top, 4); + let (dynamic_base, dynamictop_ptr) = + get_emscripten_metadata(&module).unwrap_or_else(|| { + let dynamictop_ptr = static_alloc(&mut static_top, 4); + ( + align_memory(align_memory(static_top) + TOTAL_STACK), + dynamictop_ptr, + ) + }); let stacktop = align_memory(static_top); let stack_max = stacktop + TOTAL_STACK; @@ -443,6 +449,7 @@ impl EmscriptenGlobals { stacktop, stack_max, dynamictop_ptr, + dynamic_base, memory_base, table_base, temp_double_ptr, diff --git a/lib/emscripten/src/time.rs b/lib/emscripten/src/time.rs index 56dfdbda8..32e7a61c6 100644 --- a/lib/emscripten/src/time.rs +++ b/lib/emscripten/src/time.rs @@ -28,7 +28,9 @@ use wasmer_runtime_core::vm::Ctx; use libc::{CLOCK_MONOTONIC, CLOCK_MONOTONIC_COARSE, CLOCK_REALTIME}; #[cfg(target_os = "macos")] -use libc::{CLOCK_MONOTONIC, CLOCK_REALTIME}; +use libc::CLOCK_REALTIME; +#[cfg(target_os = "macos")] +const CLOCK_MONOTONIC: clockid_t = 1; #[cfg(target_os = "macos")] const CLOCK_MONOTONIC_COARSE: clockid_t = 6; diff --git a/lib/emscripten/src/utils.rs b/lib/emscripten/src/utils.rs index e1cf13ef5..2ad5b9a40 100644 --- a/lib/emscripten/src/utils.rs +++ b/lib/emscripten/src/utils.rs @@ -1,5 +1,6 @@ use super::env; use super::env::get_emscripten_data; +use crate::storage::align_memory; use libc::stat; use std::ffi::CStr; use std::mem::size_of; @@ -39,6 +40,43 @@ pub fn get_emscripten_memory_size(module: &Module) -> (Pages, Option) { (memory.minimum, memory.maximum) } +/// Reads values written by `-s EMIT_EMSCRIPTEN_METADATA=1` +/// Assumes values start from the end in this order: +/// Last export: Dynamic Base +/// Second-to-Last export: Dynamic top pointer +pub fn get_emscripten_metadata(module: &Module) -> Option<(u32, u32)> { + let max_idx = &module.info().globals.iter().map(|(k, _)| k).max()?; + let snd_max_idx = &module + .info() + .globals + .iter() + .map(|(k, _)| k) + .filter(|k| k != max_idx) + .max()?; + + use wasmer_runtime_core::types::{GlobalInit, Initializer::Const, Value::I32}; + if let ( + GlobalInit { + init: Const(I32(dynamic_base)), + .. + }, + GlobalInit { + init: Const(I32(dynamictop_ptr)), + .. + }, + ) = ( + &module.info().globals[*max_idx], + &module.info().globals[*snd_max_idx], + ) { + Some(( + align_memory(*dynamic_base as u32 - 32), + align_memory(*dynamictop_ptr as u32 - 32), + )) + } else { + None + } +} + pub unsafe fn write_to_buf(ctx: &mut Ctx, string: *const c_char, buf: u32, max: u32) -> u32 { let buf_addr = emscripten_memory_pointer!(ctx.memory(0), buf) as *mut c_char; diff --git a/lib/runtime-core/src/types.rs b/lib/runtime-core/src/types.rs index bf5df2183..23a1c8379 100644 --- a/lib/runtime-core/src/types.rs +++ b/lib/runtime-core/src/types.rs @@ -401,7 +401,7 @@ pub trait LocalImport { macro_rules! define_map_index { ($ty:ident) => { #[derive(Serialize, Deserialize)] - #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] pub struct $ty (u32); impl TypedIndex for $ty { #[doc(hidden)] From 91d01d1c0521ffe3e2635593e0ad9a2f6d05bd24 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 6 May 2019 14:17:23 -0700 Subject: [PATCH 390/413] clean up warnings --- lib/emscripten/src/lib.rs | 1 - lib/emscripten/src/syscalls/mod.rs | 17 +++++++---------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/lib/emscripten/src/lib.rs b/lib/emscripten/src/lib.rs index e213b5048..54cbad632 100644 --- a/lib/emscripten/src/lib.rs +++ b/lib/emscripten/src/lib.rs @@ -301,7 +301,6 @@ pub fn run_emscripten_instance( if let Some(ep) = entrypoint { debug!("Running entry point: {}", &ep); - let ep_fn = instance.dyn_func(&ep)?; let arg = unsafe { allocate_cstr_on_stack(instance.context_mut(), args[0]).0 }; //let (argc, argv) = store_module_arguments(instance.context_mut(), args); instance.call(&ep, &[Value::I32(arg as i32)])?; diff --git a/lib/emscripten/src/syscalls/mod.rs b/lib/emscripten/src/syscalls/mod.rs index a777628d3..72b04884f 100644 --- a/lib/emscripten/src/syscalls/mod.rs +++ b/lib/emscripten/src/syscalls/mod.rs @@ -127,14 +127,12 @@ pub fn ___syscall38(ctx: &mut Ctx, _which: c_int, mut varargs: VarArgs) -> i32 { let old_path = emscripten_memory_pointer!(ctx.memory(0), old_path_addr) as *const i8; let new_path = emscripten_memory_pointer!(ctx.memory(0), new_path_addr) as *const i8; let result = unsafe { rename(old_path, new_path) }; - unsafe { - debug!( - "=> old_path: {}, new_path: {}, result: {}", - std::ffi::CStr::from_ptr(old_path).to_str().unwrap(), - std::ffi::CStr::from_ptr(new_path).to_str().unwrap(), - result - ); - } + debug!( + "=> old_path: {}, new_path: {}, result: {}", + std::ffi::CStr::from_ptr(old_path).to_str().unwrap(), + std::ffi::CStr::from_ptr(new_path).to_str().unwrap(), + result + ); result } @@ -274,7 +272,6 @@ pub fn ___syscall192(ctx: &mut Ctx, _which: c_int, mut varargs: VarArgs) -> c_in debug!("=> ptr: {}", ptr); return ptr as i32; } else { - unimplemented!("temp during dev"); // return ENODEV return -19; } @@ -487,7 +484,7 @@ pub fn ___syscall300(_ctx: &mut Ctx, _one: i32, _two: i32) -> i32 { } // utimensat -pub fn ___syscall320(ctx: &mut Ctx, _which: c_int, mut _varargs: VarArgs) -> c_int { +pub fn ___syscall320(_ctx: &mut Ctx, _which: c_int, mut _varargs: VarArgs) -> c_int { debug!("emscripten::___syscall320 (utimensat), {}", _which); 0 } From e40b4a2c3984ba83e77b22c2e48382bdff42fd9e Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 6 May 2019 14:58:44 -0700 Subject: [PATCH 391/413] fix debug code --- lib/emscripten/src/syscalls/mod.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/emscripten/src/syscalls/mod.rs b/lib/emscripten/src/syscalls/mod.rs index 72b04884f..5654a1299 100644 --- a/lib/emscripten/src/syscalls/mod.rs +++ b/lib/emscripten/src/syscalls/mod.rs @@ -129,8 +129,8 @@ pub fn ___syscall38(ctx: &mut Ctx, _which: c_int, mut varargs: VarArgs) -> i32 { let result = unsafe { rename(old_path, new_path) }; debug!( "=> old_path: {}, new_path: {}, result: {}", - std::ffi::CStr::from_ptr(old_path).to_str().unwrap(), - std::ffi::CStr::from_ptr(new_path).to_str().unwrap(), + unsafe { std::ffi::CStr::from_ptr(old_path).to_str().unwrap() }, + unsafe { std::ffi::CStr::from_ptr(new_path).to_str().unwrap() }, result ); result From 8b51a0530f8c2bdd3d1b90350b844343fac26321 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 6 May 2019 16:41:59 -0700 Subject: [PATCH 392/413] address feedback; clarify URL --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c90eb48ee..b1a4ccfa2 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ wasmer run examples/nginx/nginx.wasm -- -p examples/nginx -c nginx.conf #### With WAPM -Installing Wasmer through `get.wasmer.io` includes +Installing Wasmer through `wasmer.io` includes [wapm](https://github.com/wasmerio/wapm-cli), the WebAssembly package manager. Wapm allows you to easily download, run, and distribute WebAssembly binaries. From e5dc94c7d6efa8565276061c7bc7f4960a00306e Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 6 May 2019 18:02:39 -0700 Subject: [PATCH 393/413] update version number to 0.4.1 --- Cargo.lock | 88 ++++++++++++++-------------- Cargo.toml | 2 +- lib/clif-backend/Cargo.toml | 6 +- lib/emscripten/Cargo.toml | 10 ++-- lib/llvm-backend/Cargo.toml | 4 +- lib/middleware-common/Cargo.toml | 4 +- lib/runtime-abi/Cargo.toml | 2 +- lib/runtime-c-api/Cargo.toml | 6 +- lib/runtime-core/Cargo.toml | 2 +- lib/runtime/Cargo.toml | 8 +-- lib/singlepass-backend/Cargo.toml | 4 +- lib/spectests/Cargo.toml | 10 ++-- lib/wasi/Cargo.toml | 4 +- lib/win-exception-handler/Cargo.toml | 4 +- update_version_numbers.sh | 4 +- 15 files changed, 79 insertions(+), 79 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2da3792cf..4a0e4d5d0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2226,7 +2226,7 @@ dependencies = [ [[package]] name = "wasmer" -version = "0.4.0" +version = "0.4.1" dependencies = [ "errno 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2234,20 +2234,20 @@ dependencies = [ "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "structopt 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)", "wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-clif-backend 0.4.0", - "wasmer-emscripten 0.4.0", - "wasmer-llvm-backend 0.4.0", - "wasmer-middleware-common 0.4.0", - "wasmer-runtime 0.4.0", - "wasmer-runtime-abi 0.4.0", - "wasmer-runtime-core 0.4.0", - "wasmer-singlepass-backend 0.4.0", - "wasmer-wasi 0.4.0", + "wasmer-clif-backend 0.4.1", + "wasmer-emscripten 0.4.1", + "wasmer-llvm-backend 0.4.1", + "wasmer-middleware-common 0.4.1", + "wasmer-runtime 0.4.1", + "wasmer-runtime-abi 0.4.1", + "wasmer-runtime-core 0.4.1", + "wasmer-singlepass-backend 0.4.1", + "wasmer-wasi 0.4.1", ] [[package]] name = "wasmer-clif-backend" -version = "0.4.0" +version = "0.4.1" dependencies = [ "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "cranelift-codegen 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2263,15 +2263,15 @@ dependencies = [ "serde_bytes 0.10.5 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", "target-lexicon 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-runtime-core 0.4.0", - "wasmer-win-exception-handler 0.4.0", + "wasmer-runtime-core 0.4.1", + "wasmer-win-exception-handler 0.4.1", "wasmparser 0.29.2 (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-emscripten" -version = "0.4.0" +version = "0.4.1" dependencies = [ "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2280,15 +2280,15 @@ dependencies = [ "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)", "wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-clif-backend 0.4.0", - "wasmer-llvm-backend 0.4.0", - "wasmer-runtime-core 0.4.0", - "wasmer-singlepass-backend 0.4.0", + "wasmer-clif-backend 0.4.1", + "wasmer-llvm-backend 0.4.1", + "wasmer-runtime-core 0.4.1", + "wasmer-singlepass-backend 0.4.1", ] [[package]] name = "wasmer-llvm-backend" -version = "0.4.0" +version = "0.4.1" dependencies = [ "capstone 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2303,42 +2303,42 @@ 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.7.4 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-runtime-core 0.4.0", + "wasmer-runtime-core 0.4.1", "wasmparser 0.29.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasmer-middleware-common" -version = "0.4.0" +version = "0.4.1" dependencies = [ - "wasmer-runtime-core 0.4.0", + "wasmer-runtime-core 0.4.1", ] [[package]] name = "wasmer-runtime" -version = "0.4.0" +version = "0.4.1" dependencies = [ "criterion 0.2.10 (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.7 (registry+https://github.com/rust-lang/crates.io-index)", "wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-clif-backend 0.4.0", - "wasmer-llvm-backend 0.4.0", - "wasmer-runtime-core 0.4.0", - "wasmer-singlepass-backend 0.4.0", + "wasmer-clif-backend 0.4.1", + "wasmer-llvm-backend 0.4.1", + "wasmer-runtime-core 0.4.1", + "wasmer-singlepass-backend 0.4.1", ] [[package]] name = "wasmer-runtime-abi" -version = "0.4.0" +version = "0.4.1" dependencies = [ "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "tar 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-runtime-core 0.4.0", + "wasmer-runtime-core 0.4.1", "wasmparser 0.29.2 (registry+https://github.com/rust-lang/crates.io-index)", "zbox 0.6.1 (git+https://github.com/wasmerio/zbox?branch=bundle-libsodium)", "zstd 0.4.22+zstd.1.3.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2346,17 +2346,17 @@ dependencies = [ [[package]] name = "wasmer-runtime-c-api" -version = "0.4.0" +version = "0.4.1" dependencies = [ "cbindgen 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-runtime 0.4.0", - "wasmer-runtime-core 0.4.0", + "wasmer-runtime 0.4.1", + "wasmer-runtime-core 0.4.1", ] [[package]] name = "wasmer-runtime-core" -version = "0.4.0" +version = "0.4.1" dependencies = [ "blake2b_simd 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2382,7 +2382,7 @@ dependencies = [ [[package]] name = "wasmer-singlepass-backend" -version = "0.4.0" +version = "0.4.1" dependencies = [ "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "dynasm 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2392,24 +2392,24 @@ dependencies = [ "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "nix 0.13.0 (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.4.0", + "wasmer-runtime-core 0.4.1", "wasmparser 0.29.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasmer-spectests" -version = "0.4.0" +version = "0.4.1" dependencies = [ "wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-clif-backend 0.4.0", - "wasmer-llvm-backend 0.4.0", - "wasmer-runtime-core 0.4.0", - "wasmer-singlepass-backend 0.4.0", + "wasmer-clif-backend 0.4.1", + "wasmer-llvm-backend 0.4.1", + "wasmer-runtime-core 0.4.1", + "wasmer-singlepass-backend 0.4.1", ] [[package]] name = "wasmer-wasi" -version = "0.4.0" +version = "0.4.1" 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)", @@ -2417,18 +2417,18 @@ dependencies = [ "libc 0.2.51 (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.4.0", + "wasmer-runtime-core 0.4.1", ] [[package]] name = "wasmer-win-exception-handler" -version = "0.4.0" +version = "0.4.1" dependencies = [ "bindgen 0.46.0 (registry+https://github.com/rust-lang/crates.io-index)", "cmake 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-runtime-core 0.4.0", + "wasmer-runtime-core 0.4.1", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] diff --git a/Cargo.toml b/Cargo.toml index d4cfef3e8..5de0f17ee 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer" -version = "0.4.0" +version = "0.4.1" authors = ["The Wasmer Engineering Team "] edition = "2018" repository = "https://github.com/wasmerio/wasmer" diff --git a/lib/clif-backend/Cargo.toml b/lib/clif-backend/Cargo.toml index 321f3e224..cbfbfb44a 100644 --- a/lib/clif-backend/Cargo.toml +++ b/lib/clif-backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-clif-backend" -version = "0.4.0" +version = "0.4.1" description = "Wasmer runtime Cranelift compiler backend" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -8,7 +8,7 @@ repository = "https://github.com/wasmerio/wasmer" edition = "2018" [dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.4.0" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.4.1" } cranelift-native = "0.30.0" cranelift-codegen = "0.30.0" cranelift-entity = "0.30.0" @@ -33,7 +33,7 @@ version = "0.0.7" [target.'cfg(windows)'.dependencies] winapi = { version = "0.3", features = ["errhandlingapi", "minwindef", "minwinbase", "winnt"] } -wasmer-win-exception-handler = { path = "../win-exception-handler", version = "0.4.0" } +wasmer-win-exception-handler = { path = "../win-exception-handler", version = "0.4.1" } [features] debug = ["wasmer-runtime-core/debug"] diff --git a/lib/emscripten/Cargo.toml b/lib/emscripten/Cargo.toml index 5b37433af..f89f96ca6 100644 --- a/lib/emscripten/Cargo.toml +++ b/lib/emscripten/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-emscripten" -version = "0.4.0" +version = "0.4.1" description = "Wasmer runtime emscripten implementation library" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -9,14 +9,14 @@ edition = "2018" build = "build/mod.rs" [dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.4.0" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.4.1" } lazy_static = "1.2.0" libc = "0.2.49" byteorder = "1" time = "0.1.41" -wasmer-clif-backend = { path = "../clif-backend", version = "0.4.0" } -wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.4.0", optional = true } -wasmer-llvm-backend = { path = "../llvm-backend", version = "0.4.0", optional = true } +wasmer-clif-backend = { path = "../clif-backend", version = "0.4.1" } +wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.4.1", optional = true } +wasmer-llvm-backend = { path = "../llvm-backend", version = "0.4.1", optional = true } [target.'cfg(windows)'.dependencies] rand = "0.6" diff --git a/lib/llvm-backend/Cargo.toml b/lib/llvm-backend/Cargo.toml index c6f6a4cd7..fabf70cef 100644 --- a/lib/llvm-backend/Cargo.toml +++ b/lib/llvm-backend/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "wasmer-llvm-backend" -version = "0.4.0" +version = "0.4.1" authors = ["Lachlan Sneff "] edition = "2018" [dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.4.0" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.4.1" } inkwell = { git = "https://github.com/wasmerio/inkwell", branch = "llvm7-0" } wasmparser = "0.29.2" hashbrown = "0.1.8" diff --git a/lib/middleware-common/Cargo.toml b/lib/middleware-common/Cargo.toml index 9f1c6984f..57a42577c 100644 --- a/lib/middleware-common/Cargo.toml +++ b/lib/middleware-common/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-middleware-common" -version = "0.4.0" +version = "0.4.1" repository = "https://github.com/wasmerio/wasmer" description = "Wasmer runtime common middlewares" license = "MIT" @@ -8,4 +8,4 @@ authors = ["The Wasmer Engineering Team "] edition = "2018" [dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.4.0" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.4.1" } diff --git a/lib/runtime-abi/Cargo.toml b/lib/runtime-abi/Cargo.toml index 56ea2ae4e..f8b540e4b 100644 --- a/lib/runtime-abi/Cargo.toml +++ b/lib/runtime-abi/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-runtime-abi" -version = "0.4.0" +version = "0.4.1" description = "Wasmer runtime core library" license = "MIT" authors = ["The Wasmer Engineering Team "] diff --git a/lib/runtime-c-api/Cargo.toml b/lib/runtime-c-api/Cargo.toml index 54cff9c90..de93c42a5 100644 --- a/lib/runtime-c-api/Cargo.toml +++ b/lib/runtime-c-api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-runtime-c-api" -version = "0.4.0" +version = "0.4.1" description = "Wasmer C API library" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -16,11 +16,11 @@ libc = "0.2" [dependencies.wasmer-runtime] path = "../runtime" -version = "0.4.0" +version = "0.4.1" [dependencies.wasmer-runtime-core] path = "../runtime-core" -version = "0.4.0" +version = "0.4.1" [features] debug = ["wasmer-runtime/debug"] diff --git a/lib/runtime-core/Cargo.toml b/lib/runtime-core/Cargo.toml index 9ed814c0c..d6b735cff 100644 --- a/lib/runtime-core/Cargo.toml +++ b/lib/runtime-core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-runtime-core" -version = "0.4.0" +version = "0.4.1" description = "Wasmer runtime core library" license = "MIT" authors = ["The Wasmer Engineering Team "] diff --git a/lib/runtime/Cargo.toml b/lib/runtime/Cargo.toml index a43bdb270..5e620bc66 100644 --- a/lib/runtime/Cargo.toml +++ b/lib/runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-runtime" -version = "0.4.0" +version = "0.4.1" description = "Wasmer runtime library" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -9,17 +9,17 @@ edition = "2018" readme = "README.md" [dependencies] -wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.4.0", optional = true } +wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.4.1", optional = true } lazy_static = "1.2.0" memmap = "0.7.0" [dependencies.wasmer-runtime-core] path = "../runtime-core" -version = "0.4.0" +version = "0.4.1" [dependencies.wasmer-clif-backend] path = "../clif-backend" -version = "0.4.0" +version = "0.4.1" optional = true [dev-dependencies] diff --git a/lib/singlepass-backend/Cargo.toml b/lib/singlepass-backend/Cargo.toml index e857a7a4a..72ec5200a 100644 --- a/lib/singlepass-backend/Cargo.toml +++ b/lib/singlepass-backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-singlepass-backend" -version = "0.4.0" +version = "0.4.1" repository = "https://github.com/wasmerio/wasmer" description = "Wasmer runtime single pass compiler backend" license = "MIT" @@ -8,7 +8,7 @@ authors = ["The Wasmer Engineering Team "] edition = "2018" [dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.4.0" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.4.1" } wasmparser = "0.29.2" dynasm = "0.3.1" dynasmrt = "0.3.1" diff --git a/lib/spectests/Cargo.toml b/lib/spectests/Cargo.toml index 1b6dbe59b..88136daa1 100644 --- a/lib/spectests/Cargo.toml +++ b/lib/spectests/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-spectests" -version = "0.4.0" +version = "0.4.1" description = "Wasmer spectests library" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -9,10 +9,10 @@ edition = "2018" build = "build/mod.rs" [dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.4.0" } -wasmer-clif-backend = { path = "../clif-backend", version = "0.4.0" } -wasmer-llvm-backend = { path = "../llvm-backend", version = "0.4.0", optional = true } -wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.4.0", optional = true } +wasmer-runtime-core = { path = "../runtime-core", version = "0.4.1" } +wasmer-clif-backend = { path = "../clif-backend", version = "0.4.1" } +wasmer-llvm-backend = { path = "../llvm-backend", version = "0.4.1", optional = true } +wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.4.1", optional = true } [build-dependencies] wabt = "0.7.2" diff --git a/lib/wasi/Cargo.toml b/lib/wasi/Cargo.toml index 1bb3cbaa0..c4c936a02 100644 --- a/lib/wasi/Cargo.toml +++ b/lib/wasi/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-wasi" -version = "0.4.0" +version = "0.4.1" description = "Wasmer runtime WASI implementation library" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -8,7 +8,7 @@ repository = "https://github.com/wasmerio/wasmer" edition = "2018" [dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.4.0" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.4.1" } libc = "0.2.50" rand = "0.6.5" # wasmer-runtime-abi = { path = "../runtime-abi" } diff --git a/lib/win-exception-handler/Cargo.toml b/lib/win-exception-handler/Cargo.toml index b4a102813..fe9342feb 100644 --- a/lib/win-exception-handler/Cargo.toml +++ b/lib/win-exception-handler/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-win-exception-handler" -version = "0.4.0" +version = "0.4.1" description = "Wasmer runtime exception handling for Windows" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -8,7 +8,7 @@ repository = "https://github.com/wasmerio/wasmer" edition = "2018" [target.'cfg(windows)'.dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.4.0" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.4.1" } winapi = { version = "0.3", features = ["winbase", "errhandlingapi", "minwindef", "minwinbase", "winnt"] } libc = "0.2.49" diff --git a/update_version_numbers.sh b/update_version_numbers.sh index c1a677f56..db448940e 100755 --- a/update_version_numbers.sh +++ b/update_version_numbers.sh @@ -1,5 +1,5 @@ -PREVIOUS_VERSION='0.3.0' -NEXT_VERSION='0.4.0' +PREVIOUS_VERSION='0.4.0' +NEXT_VERSION='0.4.1' # quick hack fd Cargo.toml --exec sed -i '' "s/version = \"$PREVIOUS_VERSION\"/version = \"$NEXT_VERSION\"/" From 2d4299b32584eb4b4af42b8619363f4d27997891 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 6 May 2019 18:14:53 -0700 Subject: [PATCH 394/413] update for 0.4.1 --- CHANGELOG.md | 4 ++++ wapm-cli | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8442d6b89..f8a367e34 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,10 @@ All PRs to the Wasmer repository must add to this file. Blocks of changes will separated by version increments. ## **[Unreleased]** + +## 0.4.1 - 2018-05-06 + +- [#426](https://github.com/wasmerio/wasmer/pull/426) Update wapm-cli submodule, bump version to 0.4.1 - [#422](https://github.com/wasmerio/wasmer/pull/422) Improved Emscripten functions to run optipng and pngquant compiled to wasm - [#409](https://github.com/wasmerio/wasmer/pull/409) Improved Emscripten functions to run JavascriptCore compiled to wasm - [#399](https://github.com/wasmerio/wasmer/pull/399) Add example of using a plugin extended from WASI diff --git a/wapm-cli b/wapm-cli index c9399f3fb..0b7f8a6b7 160000 --- a/wapm-cli +++ b/wapm-cli @@ -1 +1 @@ -Subproject commit c9399f3fb117c8ab1cbaf17b02bd5aeefb8e8e54 +Subproject commit 0b7f8a6b724ea0a1ff8bfb499524593c203b25e4 From c90224621ecee5dde167fb1e09ea037b3e1ef789 Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Mon, 6 May 2019 20:14:37 -0700 Subject: [PATCH 395/413] updated wapm-cli to 0.2.0 tag (#427) --- wapm-cli | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wapm-cli b/wapm-cli index 0b7f8a6b7..8286d0a4b 160000 --- a/wapm-cli +++ b/wapm-cli @@ -1 +1 @@ -Subproject commit 0b7f8a6b724ea0a1ff8bfb499524593c203b25e4 +Subproject commit 8286d0a4bcd771c2f5e622b40543143e25e096df From 9c0cbc9775027b75bcd25db89cf7b1ea8313d2c5 Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Mon, 6 May 2019 23:41:31 -0500 Subject: [PATCH 396/413] Remove previous LLVM parser code --- lib/llvm-backend/src/code.rs | 2121 +---------------------------- lib/llvm-backend/src/lib.rs | 118 +- lib/llvm-backend/src/read_info.rs | 331 +---- 3 files changed, 9 insertions(+), 2561 deletions(-) diff --git a/lib/llvm-backend/src/code.rs b/lib/llvm-backend/src/code.rs index 2a607a076..8c3d89d74 100644 --- a/lib/llvm-backend/src/code.rs +++ b/lib/llvm-backend/src/code.rs @@ -15,18 +15,14 @@ use wasmer_runtime_core::{ codegen::*, memory::MemoryType, module::{ModuleInfo, ModuleInner}, - structures::{Map, SliceMap, TypedIndex}, + structures::{Map, TypedIndex}, types::{ - FuncIndex, FuncSig, GlobalIndex, LocalFuncIndex, LocalOrImport, MemoryIndex, SigIndex, - TableIndex, Type, + FuncIndex, FuncSig, GlobalIndex, LocalOrImport, MemoryIndex, SigIndex, TableIndex, Type, }, }; -use wasmparser::{ - BinaryReaderError, CodeSectionReader, LocalsReader, MemoryImmediate, Operator, OperatorsReader, - Type as WpType, -}; +use wasmparser::{BinaryReaderError, MemoryImmediate, Operator, Type as WpType}; -use crate::backend::{LLVMBackend, LLVMCache}; +use crate::backend::LLVMBackend; use crate::intrinsics::{CtxType, GlobalCache, Intrinsics, MemoryCache}; use crate::read_info::type_to_type; use crate::state::{ControlFrame, IfElseState, State}; @@ -64,2112 +60,6 @@ fn type_to_llvm(intrinsics: &Intrinsics, ty: Type) -> BasicTypeEnum { } } -pub fn parse_function_bodies( - info: &ModuleInfo, - code_reader: CodeSectionReader, -) -> Result<(Module, Intrinsics), BinaryReaderError> { - let context = Context::create(); - let module = context.create_module("module"); - let builder = context.create_builder(); - - let intrinsics = Intrinsics::declare(&module, &context); - - let personality_func = module.add_function( - "__gxx_personality_v0", - intrinsics.i32_ty.fn_type(&[], false), - Some(Linkage::External), - ); - - let signatures: Map = info - .signatures - .iter() - .map(|(_, sig)| func_sig_to_llvm(&context, &intrinsics, sig)) - .collect(); - let functions: Map = info - .func_assoc - .iter() - .skip(info.imported_functions.len()) - .map(|(func_index, &sig_index)| { - let func = module.add_function( - &format!("fn{}", func_index.index()), - signatures[sig_index], - Some(Linkage::External), - ); - func.set_personality_function(personality_func); - func - }) - .collect(); - - for (local_func_index, body) in code_reader.into_iter().enumerate() { - let body = body?; - - let locals_reader = body.get_locals_reader()?; - let op_reader = body.get_operators_reader()?; - - parse_function( - &context, - &builder, - &intrinsics, - info, - &signatures, - &functions, - LocalFuncIndex::new(local_func_index), - locals_reader, - op_reader, - ) - .map_err(|e| BinaryReaderError { - message: e.message, - offset: local_func_index, - })?; - } - - // module.print_to_stderr(); - - generate_trampolines(info, &signatures, &module, &context, &builder, &intrinsics); - - let pass_manager = PassManager::create_for_module(); - // pass_manager.add_verifier_pass(); - pass_manager.add_function_inlining_pass(); - pass_manager.add_promote_memory_to_register_pass(); - pass_manager.add_cfg_simplification_pass(); - // pass_manager.add_instruction_combining_pass(); - pass_manager.add_aggressive_inst_combiner_pass(); - pass_manager.add_merged_load_store_motion_pass(); - // pass_manager.add_sccp_pass(); - // pass_manager.add_gvn_pass(); - pass_manager.add_new_gvn_pass(); - pass_manager.add_aggressive_dce_pass(); - pass_manager.run_on_module(&module); - - // module.print_to_stderr(); - - Ok((module, intrinsics)) -} - -fn parse_function( - context: &Context, - builder: &Builder, - intrinsics: &Intrinsics, - info: &ModuleInfo, - signatures: &SliceMap, - functions: &SliceMap, - func_index: LocalFuncIndex, - locals_reader: LocalsReader, - op_reader: OperatorsReader, -) -> Result<(), BinaryReaderError> { - let sig_index = info.func_assoc[func_index.convert_up(info)]; - let func_sig = &info.signatures[sig_index]; - - let function = functions[func_index]; - let mut state = State::new(); - let entry_block = context.append_basic_block(&function, "entry"); - - let return_block = context.append_basic_block(&function, "return"); - builder.position_at_end(&return_block); - - let phis: SmallVec<[PhiValue; 1]> = func_sig - .returns() - .iter() - .map(|&wasmer_ty| type_to_llvm(intrinsics, wasmer_ty)) - .map(|ty| builder.build_phi(ty, &state.var_name())) - .collect(); - - state.push_block(return_block, phis); - builder.position_at_end(&entry_block); - - let mut locals = Vec::with_capacity(locals_reader.get_count() as usize); // TODO fix capacity - - locals.extend( - function - .get_param_iter() - .skip(1) - .enumerate() - .map(|(index, param)| { - let ty = param.get_type(); - - let alloca = builder.build_alloca(ty, &format!("local{}", index)); - builder.build_store(alloca, param); - alloca - }), - ); - - let param_len = locals.len(); - - let mut local_idx = 0; - for local in locals_reader.into_iter() { - let (count, ty) = local?; - let wasmer_ty = type_to_type(ty)?; - let ty = type_to_llvm(intrinsics, wasmer_ty); - - let default_value = match wasmer_ty { - Type::I32 => intrinsics.i32_zero.as_basic_value_enum(), - Type::I64 => intrinsics.i64_zero.as_basic_value_enum(), - Type::F32 => intrinsics.f32_zero.as_basic_value_enum(), - Type::F64 => intrinsics.f64_zero.as_basic_value_enum(), - }; - - for _ in 0..count { - let alloca = builder.build_alloca(ty, &format!("local{}", param_len + local_idx)); - - builder.build_store(alloca, default_value); - - locals.push(alloca); - local_idx += 1; - } - } - - let start_of_code_block = context.append_basic_block(&function, "start_of_code"); - let entry_end_inst = builder.build_unconditional_branch(&start_of_code_block); - builder.position_at_end(&start_of_code_block); - - let cache_builder = context.create_builder(); - cache_builder.position_before(&entry_end_inst); - let mut ctx = intrinsics.ctx(info, builder, &function, cache_builder); - let mut unreachable_depth = 0; - - for op in op_reader { - let op = op?; - if !state.reachable { - match op { - Operator::Block { ty: _ } | Operator::Loop { ty: _ } | Operator::If { ty: _ } => { - unreachable_depth += 1; - continue; - } - Operator::Else => { - if unreachable_depth != 0 { - continue; - } - } - Operator::End => { - if unreachable_depth != 0 { - unreachable_depth -= 1; - continue; - } - } - _ => { - continue; - } - } - } - - match op { - /*************************** - * Control Flow instructions. - * https://github.com/sunfishcode/wasm-reference-manual/blob/master/WebAssembly.md#control-flow-instructions - ***************************/ - Operator::Block { ty } => { - let current_block = builder.get_insert_block().ok_or(BinaryReaderError { - message: "not currently in a block", - offset: -1isize as usize, - })?; - - let end_block = context.append_basic_block(&function, "end"); - builder.position_at_end(&end_block); - - let phis = if let Ok(wasmer_ty) = type_to_type(ty) { - let llvm_ty = type_to_llvm(intrinsics, wasmer_ty); - [llvm_ty] - .iter() - .map(|&ty| builder.build_phi(ty, &state.var_name())) - .collect() - } else { - SmallVec::new() - }; - - state.push_block(end_block, phis); - builder.position_at_end(¤t_block); - } - Operator::Loop { ty } => { - let loop_body = context.append_basic_block(&function, "loop_body"); - let loop_next = context.append_basic_block(&function, "loop_outer"); - - builder.build_unconditional_branch(&loop_body); - - builder.position_at_end(&loop_next); - let phis = if let Ok(wasmer_ty) = type_to_type(ty) { - let llvm_ty = type_to_llvm(intrinsics, wasmer_ty); - [llvm_ty] - .iter() - .map(|&ty| builder.build_phi(ty, &state.var_name())) - .collect() - } else { - SmallVec::new() - }; - - builder.position_at_end(&loop_body); - state.push_loop(loop_body, loop_next, phis); - } - Operator::Br { relative_depth } => { - let frame = state.frame_at_depth(relative_depth)?; - - let current_block = builder.get_insert_block().ok_or(BinaryReaderError { - message: "not currently in a block", - offset: -1isize as usize, - })?; - - let value_len = if frame.is_loop() { - 0 - } else { - frame.phis().len() - }; - - let values = state.peekn(value_len)?; - - // For each result of the block we're branching to, - // pop a value off the value stack and load it into - // the corresponding phi. - for (phi, value) in frame.phis().iter().zip(values.iter()) { - phi.add_incoming(&[(value, ¤t_block)]); - } - - builder.build_unconditional_branch(frame.br_dest()); - - state.popn(value_len)?; - state.reachable = false; - } - Operator::BrIf { relative_depth } => { - let cond = state.pop1()?; - let frame = state.frame_at_depth(relative_depth)?; - - let current_block = builder.get_insert_block().ok_or(BinaryReaderError { - message: "not currently in a block", - offset: -1isize as usize, - })?; - - let value_len = if frame.is_loop() { - 0 - } else { - frame.phis().len() - }; - - let param_stack = state.peekn(value_len)?; - - for (phi, value) in frame.phis().iter().zip(param_stack.iter()) { - phi.add_incoming(&[(value, ¤t_block)]); - } - - let else_block = context.append_basic_block(&function, "else"); - - let cond_value = builder.build_int_compare( - IntPredicate::NE, - cond.into_int_value(), - intrinsics.i32_zero, - &state.var_name(), - ); - builder.build_conditional_branch(cond_value, frame.br_dest(), &else_block); - builder.position_at_end(&else_block); - } - Operator::BrTable { ref table } => { - let current_block = builder.get_insert_block().ok_or(BinaryReaderError { - message: "not currently in a block", - offset: -1isize as usize, - })?; - - let (label_depths, default_depth) = table.read_table()?; - - let index = state.pop1()?; - - let default_frame = state.frame_at_depth(default_depth)?; - - let args = if default_frame.is_loop() { - &[] - } else { - let res_len = default_frame.phis().len(); - state.peekn(res_len)? - }; - - for (phi, value) in default_frame.phis().iter().zip(args.iter()) { - phi.add_incoming(&[(value, ¤t_block)]); - } - - let cases: Vec<_> = label_depths - .iter() - .enumerate() - .map(|(case_index, &depth)| { - let frame = state.frame_at_depth(depth)?; - let case_index_literal = - context.i32_type().const_int(case_index as u64, false); - - for (phi, value) in frame.phis().iter().zip(args.iter()) { - phi.add_incoming(&[(value, ¤t_block)]); - } - - Ok((case_index_literal, frame.br_dest())) - }) - .collect::>()?; - - builder.build_switch(index.into_int_value(), default_frame.br_dest(), &cases[..]); - - state.popn(args.len())?; - state.reachable = false; - } - Operator::If { ty } => { - let current_block = builder.get_insert_block().ok_or(BinaryReaderError { - message: "not currently in a block", - offset: -1isize as usize, - })?; - let if_then_block = context.append_basic_block(&function, "if_then"); - let if_else_block = context.append_basic_block(&function, "if_else"); - let end_block = context.append_basic_block(&function, "if_end"); - - let end_phis = { - builder.position_at_end(&end_block); - - let phis = if let Ok(wasmer_ty) = type_to_type(ty) { - let llvm_ty = type_to_llvm(intrinsics, wasmer_ty); - [llvm_ty] - .iter() - .map(|&ty| builder.build_phi(ty, &state.var_name())) - .collect() - } else { - SmallVec::new() - }; - - builder.position_at_end(¤t_block); - phis - }; - - let cond = state.pop1()?; - - let cond_value = builder.build_int_compare( - IntPredicate::NE, - cond.into_int_value(), - intrinsics.i32_zero, - &state.var_name(), - ); - - builder.build_conditional_branch(cond_value, &if_then_block, &if_else_block); - builder.position_at_end(&if_then_block); - state.push_if(if_then_block, if_else_block, end_block, end_phis); - } - Operator::Else => { - if state.reachable { - let frame = state.frame_at_depth(0)?; - builder.build_unconditional_branch(frame.code_after()); - let current_block = builder.get_insert_block().ok_or(BinaryReaderError { - message: "not currently in a block", - offset: -1isize as usize, - })?; - - for phi in frame.phis().to_vec().iter().rev() { - let value = state.pop1()?; - phi.add_incoming(&[(&value, ¤t_block)]) - } - } - - let (if_else_block, if_else_state) = if let ControlFrame::IfElse { - if_else, - if_else_state, - .. - } = state.frame_at_depth_mut(0)? - { - (if_else, if_else_state) - } else { - unreachable!() - }; - - *if_else_state = IfElseState::Else; - - builder.position_at_end(if_else_block); - state.reachable = true; - } - - Operator::End => { - let frame = state.pop_frame()?; - let current_block = builder.get_insert_block().ok_or(BinaryReaderError { - message: "not currently in a block", - offset: -1isize as usize, - })?; - - if state.reachable { - builder.build_unconditional_branch(frame.code_after()); - - for phi in frame.phis().iter().rev() { - let value = state.pop1()?; - phi.add_incoming(&[(&value, ¤t_block)]); - } - } - - if let ControlFrame::IfElse { - if_else, - next, - if_else_state, - .. - } = &frame - { - if let IfElseState::If = if_else_state { - builder.position_at_end(if_else); - builder.build_unconditional_branch(next); - } - } - - builder.position_at_end(frame.code_after()); - state.reset_stack(&frame); - - state.reachable = true; - - // Push each phi value to the value stack. - for phi in frame.phis() { - if phi.count_incoming() != 0 { - state.push1(phi.as_basic_value()); - } else { - let basic_ty = phi.as_basic_value().get_type(); - let placeholder_value = match basic_ty { - BasicTypeEnum::IntType(int_ty) => { - int_ty.const_int(0, false).as_basic_value_enum() - } - BasicTypeEnum::FloatType(float_ty) => { - float_ty.const_float(0.0).as_basic_value_enum() - } - _ => unimplemented!(), - }; - state.push1(placeholder_value); - phi.as_instruction().erase_from_basic_block(); - } - } - } - Operator::Return => { - let frame = state.outermost_frame()?; - let current_block = builder.get_insert_block().ok_or(BinaryReaderError { - message: "not currently in a block", - offset: -1isize as usize, - })?; - - builder.build_unconditional_branch(frame.br_dest()); - - let phis = frame.phis().to_vec(); - - for phi in phis.iter() { - let arg = state.pop1()?; - phi.add_incoming(&[(&arg, ¤t_block)]); - } - - state.reachable = false; - } - - Operator::Unreachable => { - // Emit an unreachable instruction. - // If llvm cannot prove that this is never touched, - // it will emit a `ud2` instruction on x86_64 arches. - - builder.build_call( - intrinsics.throw_trap, - &[intrinsics.trap_unreachable], - "throw", - ); - builder.build_unreachable(); - - state.reachable = false; - } - - /*************************** - * Basic instructions. - * https://github.com/sunfishcode/wasm-reference-manual/blob/master/WebAssembly.md#basic-instructions - ***************************/ - Operator::Nop => { - // Do nothing. - } - Operator::Drop => { - state.pop1()?; - } - - // Generate const values. - Operator::I32Const { value } => { - let i = intrinsics.i32_ty.const_int(value as u64, false); - state.push1(i); - } - Operator::I64Const { value } => { - let i = intrinsics.i64_ty.const_int(value as u64, false); - state.push1(i); - } - Operator::F32Const { value } => { - let bits = intrinsics.i32_ty.const_int(value.bits() as u64, false); - let space = - builder.build_alloca(intrinsics.f32_ty.as_basic_type_enum(), "const_space"); - let i32_space = - builder.build_pointer_cast(space, intrinsics.i32_ptr_ty, "i32_space"); - builder.build_store(i32_space, bits); - let f = builder.build_load(space, "f"); - state.push1(f); - } - Operator::F64Const { value } => { - let bits = intrinsics.i64_ty.const_int(value.bits(), false); - let space = - builder.build_alloca(intrinsics.f64_ty.as_basic_type_enum(), "const_space"); - let i64_space = - builder.build_pointer_cast(space, intrinsics.i64_ptr_ty, "i32_space"); - builder.build_store(i64_space, bits); - let f = builder.build_load(space, "f"); - state.push1(f); - } - - // Operate on locals. - Operator::GetLocal { local_index } => { - let pointer_value = locals[local_index as usize]; - let v = builder.build_load(pointer_value, &state.var_name()); - state.push1(v); - } - Operator::SetLocal { local_index } => { - let pointer_value = locals[local_index as usize]; - let v = state.pop1()?; - builder.build_store(pointer_value, v); - } - Operator::TeeLocal { local_index } => { - let pointer_value = locals[local_index as usize]; - let v = state.peek1()?; - builder.build_store(pointer_value, v); - } - - Operator::GetGlobal { global_index } => { - let index = GlobalIndex::new(global_index as usize); - let global_cache = ctx.global_cache(index); - match global_cache { - GlobalCache::Const { value } => { - state.push1(value); - } - GlobalCache::Mut { ptr_to_value } => { - let value = builder.build_load(ptr_to_value, "global_value"); - state.push1(value); - } - } - } - Operator::SetGlobal { global_index } => { - let value = state.pop1()?; - let index = GlobalIndex::new(global_index as usize); - let global_cache = ctx.global_cache(index); - match global_cache { - GlobalCache::Mut { ptr_to_value } => { - builder.build_store(ptr_to_value, value); - } - GlobalCache::Const { value: _ } => { - unreachable!("cannot set non-mutable globals") - } - } - } - - Operator::Select => { - let (v1, v2, cond) = state.pop3()?; - let cond_value = builder.build_int_compare( - IntPredicate::NE, - cond.into_int_value(), - intrinsics.i32_zero, - &state.var_name(), - ); - let res = builder.build_select(cond_value, v1, v2, &state.var_name()); - state.push1(res); - } - Operator::Call { function_index } => { - let func_index = FuncIndex::new(function_index as usize); - let sigindex = info.func_assoc[func_index]; - let llvm_sig = signatures[sigindex]; - let func_sig = &info.signatures[sigindex]; - - let call_site = match func_index.local_or_import(info) { - LocalOrImport::Local(local_func_index) => { - let params: Vec<_> = [ctx.basic()] - .iter() - .chain(state.peekn(func_sig.params().len())?.iter()) - .map(|v| *v) - .collect(); - - let func_ptr = ctx.local_func(local_func_index, llvm_sig); - - builder.build_call(func_ptr, ¶ms, &state.var_name()) - } - LocalOrImport::Import(import_func_index) => { - let (func_ptr_untyped, ctx_ptr) = ctx.imported_func(import_func_index); - let params: Vec<_> = [ctx_ptr.as_basic_value_enum()] - .iter() - .chain(state.peekn(func_sig.params().len())?.iter()) - .map(|v| *v) - .collect(); - - let func_ptr_ty = llvm_sig.ptr_type(AddressSpace::Generic); - - let func_ptr = builder.build_pointer_cast( - func_ptr_untyped, - func_ptr_ty, - "typed_func_ptr", - ); - - builder.build_call(func_ptr, ¶ms, &state.var_name()) - } - }; - - state.popn(func_sig.params().len())?; - - if let Some(basic_value) = call_site.try_as_basic_value().left() { - match func_sig.returns().len() { - 1 => state.push1(basic_value), - count @ _ => { - // This is a multi-value return. - let struct_value = basic_value.into_struct_value(); - for i in 0..(count as u32) { - let value = builder - .build_extract_value(struct_value, i, &state.var_name()) - .unwrap(); - state.push1(value); - } - } - } - } - } - Operator::CallIndirect { index, table_index } => { - let sig_index = SigIndex::new(index as usize); - let expected_dynamic_sigindex = ctx.dynamic_sigindex(sig_index); - let (table_base, table_bound) = ctx.table(TableIndex::new(table_index as usize)); - let func_index = state.pop1()?.into_int_value(); - - // We assume the table has the `anyfunc` element type. - let casted_table_base = builder.build_pointer_cast( - table_base, - intrinsics.anyfunc_ty.ptr_type(AddressSpace::Generic), - "casted_table_base", - ); - - let anyfunc_struct_ptr = unsafe { - builder.build_in_bounds_gep( - casted_table_base, - &[func_index], - "anyfunc_struct_ptr", - ) - }; - - // Load things from the anyfunc data structure. - let (func_ptr, ctx_ptr, found_dynamic_sigindex) = unsafe { - ( - builder - .build_load( - builder.build_struct_gep(anyfunc_struct_ptr, 0, "func_ptr_ptr"), - "func_ptr", - ) - .into_pointer_value(), - builder.build_load( - builder.build_struct_gep(anyfunc_struct_ptr, 1, "ctx_ptr_ptr"), - "ctx_ptr", - ), - builder - .build_load( - builder.build_struct_gep(anyfunc_struct_ptr, 2, "sigindex_ptr"), - "sigindex", - ) - .into_int_value(), - ) - }; - - let truncated_table_bounds = builder.build_int_truncate( - table_bound, - intrinsics.i32_ty, - "truncated_table_bounds", - ); - - // First, check if the index is outside of the table bounds. - let index_in_bounds = builder.build_int_compare( - IntPredicate::ULT, - func_index, - truncated_table_bounds, - "index_in_bounds", - ); - - let index_in_bounds = builder - .build_call( - intrinsics.expect_i1, - &[ - index_in_bounds.as_basic_value_enum(), - intrinsics.i1_ty.const_int(1, false).as_basic_value_enum(), - ], - "index_in_bounds_expect", - ) - .try_as_basic_value() - .left() - .unwrap() - .into_int_value(); - - let in_bounds_continue_block = - context.append_basic_block(&function, "in_bounds_continue_block"); - let not_in_bounds_block = - context.append_basic_block(&function, "not_in_bounds_block"); - builder.build_conditional_branch( - index_in_bounds, - &in_bounds_continue_block, - ¬_in_bounds_block, - ); - builder.position_at_end(¬_in_bounds_block); - builder.build_call( - intrinsics.throw_trap, - &[intrinsics.trap_call_indirect_oob], - "throw", - ); - builder.build_unreachable(); - builder.position_at_end(&in_bounds_continue_block); - - // Next, check if the signature id is correct. - - let sigindices_equal = builder.build_int_compare( - IntPredicate::EQ, - expected_dynamic_sigindex, - found_dynamic_sigindex, - "sigindices_equal", - ); - - // Tell llvm that `expected_dynamic_sigindex` should equal `found_dynamic_sigindex`. - let sigindices_equal = builder - .build_call( - intrinsics.expect_i1, - &[ - sigindices_equal.as_basic_value_enum(), - intrinsics.i1_ty.const_int(1, false).as_basic_value_enum(), - ], - "sigindices_equal_expect", - ) - .try_as_basic_value() - .left() - .unwrap() - .into_int_value(); - - let continue_block = context.append_basic_block(&function, "continue_block"); - let sigindices_notequal_block = - context.append_basic_block(&function, "sigindices_notequal_block"); - builder.build_conditional_branch( - sigindices_equal, - &continue_block, - &sigindices_notequal_block, - ); - - builder.position_at_end(&sigindices_notequal_block); - builder.build_call( - intrinsics.throw_trap, - &[intrinsics.trap_call_indirect_sig], - "throw", - ); - builder.build_unreachable(); - builder.position_at_end(&continue_block); - - let wasmer_fn_sig = &info.signatures[sig_index]; - let fn_ty = signatures[sig_index]; - - let pushed_args = state.popn_save(wasmer_fn_sig.params().len())?; - - let args: Vec<_> = std::iter::once(ctx_ptr) - .chain(pushed_args.into_iter()) - .collect(); - - let typed_func_ptr = builder.build_pointer_cast( - func_ptr, - fn_ty.ptr_type(AddressSpace::Generic), - "typed_func_ptr", - ); - - let call_site = builder.build_call(typed_func_ptr, &args, "indirect_call"); - - match wasmer_fn_sig.returns() { - [] => {} - [_] => { - let value = call_site.try_as_basic_value().left().unwrap(); - state.push1(value); - } - _ => unimplemented!("multi-value returns"), - } - } - - /*************************** - * Integer Arithmetic instructions. - * https://github.com/sunfishcode/wasm-reference-manual/blob/master/WebAssembly.md#integer-arithmetic-instructions - ***************************/ - Operator::I32Add | Operator::I64Add => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); - let res = builder.build_int_add(v1, v2, &state.var_name()); - state.push1(res); - } - Operator::I32Sub | Operator::I64Sub => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); - let res = builder.build_int_sub(v1, v2, &state.var_name()); - state.push1(res); - } - Operator::I32Mul | Operator::I64Mul => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); - let res = builder.build_int_mul(v1, v2, &state.var_name()); - state.push1(res); - } - Operator::I32DivS | Operator::I64DivS => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); - - trap_if_zero_or_overflow(builder, intrinsics, context, &function, v1, v2); - - let res = builder.build_int_signed_div(v1, v2, &state.var_name()); - state.push1(res); - } - Operator::I32DivU | Operator::I64DivU => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); - - trap_if_zero(builder, intrinsics, context, &function, v2); - - let res = builder.build_int_unsigned_div(v1, v2, &state.var_name()); - state.push1(res); - } - Operator::I32RemS | Operator::I64RemS => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); - - trap_if_zero(builder, intrinsics, context, &function, v2); - - let res = builder.build_int_signed_rem(v1, v2, &state.var_name()); - state.push1(res); - } - Operator::I32RemU | Operator::I64RemU => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); - - trap_if_zero(builder, intrinsics, context, &function, v2); - - let res = builder.build_int_unsigned_rem(v1, v2, &state.var_name()); - state.push1(res); - } - Operator::I32And | Operator::I64And => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); - let res = builder.build_and(v1, v2, &state.var_name()); - state.push1(res); - } - Operator::I32Or | Operator::I64Or => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); - let res = builder.build_or(v1, v2, &state.var_name()); - state.push1(res); - } - Operator::I32Xor | Operator::I64Xor => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); - let res = builder.build_xor(v1, v2, &state.var_name()); - state.push1(res); - } - Operator::I32Shl | Operator::I64Shl => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); - let res = builder.build_left_shift(v1, v2, &state.var_name()); - state.push1(res); - } - Operator::I32ShrS | Operator::I64ShrS => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); - let res = builder.build_right_shift(v1, v2, true, &state.var_name()); - state.push1(res); - } - Operator::I32ShrU | Operator::I64ShrU => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); - let res = builder.build_right_shift(v1, v2, false, &state.var_name()); - state.push1(res); - } - Operator::I32Rotl => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); - let lhs = builder.build_left_shift(v1, v2, &state.var_name()); - let rhs = { - let int_width = intrinsics.i32_ty.const_int(32 as u64, false); - let rhs = builder.build_int_sub(int_width, v2, &state.var_name()); - builder.build_right_shift(v1, rhs, false, &state.var_name()) - }; - let res = builder.build_or(lhs, rhs, &state.var_name()); - state.push1(res); - } - Operator::I64Rotl => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); - let lhs = builder.build_left_shift(v1, v2, &state.var_name()); - let rhs = { - let int_width = intrinsics.i64_ty.const_int(64 as u64, false); - let rhs = builder.build_int_sub(int_width, v2, &state.var_name()); - builder.build_right_shift(v1, rhs, false, &state.var_name()) - }; - let res = builder.build_or(lhs, rhs, &state.var_name()); - state.push1(res); - } - Operator::I32Rotr => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); - let lhs = builder.build_right_shift(v1, v2, false, &state.var_name()); - let rhs = { - let int_width = intrinsics.i32_ty.const_int(32 as u64, false); - let rhs = builder.build_int_sub(int_width, v2, &state.var_name()); - builder.build_left_shift(v1, rhs, &state.var_name()) - }; - let res = builder.build_or(lhs, rhs, &state.var_name()); - state.push1(res); - } - Operator::I64Rotr => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); - let lhs = builder.build_right_shift(v1, v2, false, &state.var_name()); - let rhs = { - let int_width = intrinsics.i64_ty.const_int(64 as u64, false); - let rhs = builder.build_int_sub(int_width, v2, &state.var_name()); - builder.build_left_shift(v1, rhs, &state.var_name()) - }; - let res = builder.build_or(lhs, rhs, &state.var_name()); - state.push1(res); - } - Operator::I32Clz => { - let input = state.pop1()?; - let ensure_defined_zero = intrinsics - .i1_ty - .const_int(1 as u64, false) - .as_basic_value_enum(); - let res = builder - .build_call( - intrinsics.ctlz_i32, - &[input, ensure_defined_zero], - &state.var_name(), - ) - .try_as_basic_value() - .left() - .unwrap(); - state.push1(res); - } - Operator::I64Clz => { - let input = state.pop1()?; - let ensure_defined_zero = intrinsics - .i1_ty - .const_int(1 as u64, false) - .as_basic_value_enum(); - let res = builder - .build_call( - intrinsics.ctlz_i64, - &[input, ensure_defined_zero], - &state.var_name(), - ) - .try_as_basic_value() - .left() - .unwrap(); - state.push1(res); - } - Operator::I32Ctz => { - let input = state.pop1()?; - let ensure_defined_zero = intrinsics - .i1_ty - .const_int(1 as u64, false) - .as_basic_value_enum(); - let res = builder - .build_call( - intrinsics.cttz_i32, - &[input, ensure_defined_zero], - &state.var_name(), - ) - .try_as_basic_value() - .left() - .unwrap(); - state.push1(res); - } - Operator::I64Ctz => { - let input = state.pop1()?; - let ensure_defined_zero = intrinsics - .i1_ty - .const_int(1 as u64, false) - .as_basic_value_enum(); - let res = builder - .build_call( - intrinsics.cttz_i64, - &[input, ensure_defined_zero], - &state.var_name(), - ) - .try_as_basic_value() - .left() - .unwrap(); - state.push1(res); - } - Operator::I32Popcnt => { - let input = state.pop1()?; - let res = builder - .build_call(intrinsics.ctpop_i32, &[input], &state.var_name()) - .try_as_basic_value() - .left() - .unwrap(); - state.push1(res); - } - Operator::I64Popcnt => { - let input = state.pop1()?; - let res = builder - .build_call(intrinsics.ctpop_i64, &[input], &state.var_name()) - .try_as_basic_value() - .left() - .unwrap(); - state.push1(res); - } - Operator::I32Eqz => { - let input = state.pop1()?.into_int_value(); - let cond = builder.build_int_compare( - IntPredicate::EQ, - input, - intrinsics.i32_zero, - &state.var_name(), - ); - let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); - state.push1(res); - } - Operator::I64Eqz => { - let input = state.pop1()?.into_int_value(); - let cond = builder.build_int_compare( - IntPredicate::EQ, - input, - intrinsics.i64_zero, - &state.var_name(), - ); - let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); - state.push1(res); - } - - /*************************** - * Floating-Point Arithmetic instructions. - * https://github.com/sunfishcode/wasm-reference-manual/blob/master/WebAssembly.md#floating-point-arithmetic-instructions - ***************************/ - Operator::F32Add | Operator::F64Add => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_float_value(), v2.into_float_value()); - let res = builder.build_float_add(v1, v2, &state.var_name()); - state.push1(res); - } - Operator::F32Sub | Operator::F64Sub => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_float_value(), v2.into_float_value()); - let res = builder.build_float_sub(v1, v2, &state.var_name()); - state.push1(res); - } - Operator::F32Mul | Operator::F64Mul => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_float_value(), v2.into_float_value()); - let res = builder.build_float_mul(v1, v2, &state.var_name()); - state.push1(res); - } - Operator::F32Div | Operator::F64Div => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_float_value(), v2.into_float_value()); - let res = builder.build_float_div(v1, v2, &state.var_name()); - state.push1(res); - } - Operator::F32Sqrt => { - let input = state.pop1()?; - let res = builder - .build_call(intrinsics.sqrt_f32, &[input], &state.var_name()) - .try_as_basic_value() - .left() - .unwrap(); - state.push1(res); - } - Operator::F64Sqrt => { - let input = state.pop1()?; - let res = builder - .build_call(intrinsics.sqrt_f64, &[input], &state.var_name()) - .try_as_basic_value() - .left() - .unwrap(); - state.push1(res); - } - Operator::F32Min => { - let (v1, v2) = state.pop2()?; - let res = builder - .build_call(intrinsics.minimum_f32, &[v1, v2], &state.var_name()) - .try_as_basic_value() - .left() - .unwrap(); - state.push1(res); - } - Operator::F64Min => { - let (v1, v2) = state.pop2()?; - let res = builder - .build_call(intrinsics.minimum_f64, &[v1, v2], &state.var_name()) - .try_as_basic_value() - .left() - .unwrap(); - state.push1(res); - } - Operator::F32Max => { - let (v1, v2) = state.pop2()?; - let res = builder - .build_call(intrinsics.maximum_f32, &[v1, v2], &state.var_name()) - .try_as_basic_value() - .left() - .unwrap(); - state.push1(res); - } - Operator::F64Max => { - let (v1, v2) = state.pop2()?; - let res = builder - .build_call(intrinsics.maximum_f64, &[v1, v2], &state.var_name()) - .try_as_basic_value() - .left() - .unwrap(); - state.push1(res); - } - Operator::F32Ceil => { - let input = state.pop1()?; - let res = builder - .build_call(intrinsics.ceil_f32, &[input], &state.var_name()) - .try_as_basic_value() - .left() - .unwrap(); - state.push1(res); - } - Operator::F64Ceil => { - let input = state.pop1()?; - let res = builder - .build_call(intrinsics.ceil_f64, &[input], &state.var_name()) - .try_as_basic_value() - .left() - .unwrap(); - state.push1(res); - } - Operator::F32Floor => { - let input = state.pop1()?; - let res = builder - .build_call(intrinsics.floor_f32, &[input], &state.var_name()) - .try_as_basic_value() - .left() - .unwrap(); - state.push1(res); - } - Operator::F64Floor => { - let input = state.pop1()?; - let res = builder - .build_call(intrinsics.floor_f64, &[input], &state.var_name()) - .try_as_basic_value() - .left() - .unwrap(); - state.push1(res); - } - Operator::F32Trunc => { - let input = state.pop1()?; - let res = builder - .build_call(intrinsics.trunc_f32, &[input], &state.var_name()) - .try_as_basic_value() - .left() - .unwrap(); - state.push1(res); - } - Operator::F64Trunc => { - let input = state.pop1()?; - let res = builder - .build_call(intrinsics.trunc_f64, &[input], &state.var_name()) - .try_as_basic_value() - .left() - .unwrap(); - state.push1(res); - } - Operator::F32Nearest => { - let input = state.pop1()?; - let res = builder - .build_call(intrinsics.nearbyint_f32, &[input], &state.var_name()) - .try_as_basic_value() - .left() - .unwrap(); - state.push1(res); - } - Operator::F64Nearest => { - let input = state.pop1()?; - let res = builder - .build_call(intrinsics.nearbyint_f64, &[input], &state.var_name()) - .try_as_basic_value() - .left() - .unwrap(); - state.push1(res); - } - Operator::F32Abs => { - let input = state.pop1()?; - let res = builder - .build_call(intrinsics.fabs_f32, &[input], &state.var_name()) - .try_as_basic_value() - .left() - .unwrap(); - state.push1(res); - } - Operator::F64Abs => { - let input = state.pop1()?; - let res = builder - .build_call(intrinsics.fabs_f64, &[input], &state.var_name()) - .try_as_basic_value() - .left() - .unwrap(); - state.push1(res); - } - Operator::F32Neg | Operator::F64Neg => { - let input = state.pop1()?.into_float_value(); - let res = builder.build_float_neg(input, &state.var_name()); - state.push1(res); - } - Operator::F32Copysign => { - let (mag, sgn) = state.pop2()?; - let res = builder - .build_call(intrinsics.copysign_f32, &[mag, sgn], &state.var_name()) - .try_as_basic_value() - .left() - .unwrap(); - state.push1(res); - } - Operator::F64Copysign => { - let (msg, sgn) = state.pop2()?; - let res = builder - .build_call(intrinsics.copysign_f64, &[msg, sgn], &state.var_name()) - .try_as_basic_value() - .left() - .unwrap(); - state.push1(res); - } - - /*************************** - * Integer Comparison instructions. - * https://github.com/sunfishcode/wasm-reference-manual/blob/master/WebAssembly.md#integer-comparison-instructions - ***************************/ - Operator::I32Eq | Operator::I64Eq => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); - let cond = builder.build_int_compare(IntPredicate::EQ, v1, v2, &state.var_name()); - let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); - state.push1(res); - } - Operator::I32Ne | Operator::I64Ne => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); - let cond = builder.build_int_compare(IntPredicate::NE, v1, v2, &state.var_name()); - let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); - state.push1(res); - } - Operator::I32LtS | Operator::I64LtS => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); - let cond = builder.build_int_compare(IntPredicate::SLT, v1, v2, &state.var_name()); - let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); - state.push1(res); - } - Operator::I32LtU | Operator::I64LtU => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); - let cond = builder.build_int_compare(IntPredicate::ULT, v1, v2, &state.var_name()); - let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); - state.push1(res); - } - Operator::I32LeS | Operator::I64LeS => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); - let cond = builder.build_int_compare(IntPredicate::SLE, v1, v2, &state.var_name()); - let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); - state.push1(res); - } - Operator::I32LeU | Operator::I64LeU => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); - let cond = builder.build_int_compare(IntPredicate::ULE, v1, v2, &state.var_name()); - let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); - state.push1(res); - } - Operator::I32GtS | Operator::I64GtS => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); - let cond = builder.build_int_compare(IntPredicate::SGT, v1, v2, &state.var_name()); - let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); - state.push1(res); - } - Operator::I32GtU | Operator::I64GtU => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); - let cond = builder.build_int_compare(IntPredicate::UGT, v1, v2, &state.var_name()); - let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); - state.push1(res); - } - Operator::I32GeS | Operator::I64GeS => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); - let cond = builder.build_int_compare(IntPredicate::SGE, v1, v2, &state.var_name()); - let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); - state.push1(res); - } - Operator::I32GeU | Operator::I64GeU => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_int_value(), v2.into_int_value()); - let cond = builder.build_int_compare(IntPredicate::UGE, v1, v2, &state.var_name()); - let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); - state.push1(res); - } - - /*************************** - * Floating-Point Comparison instructions. - * https://github.com/sunfishcode/wasm-reference-manual/blob/master/WebAssembly.md#floating-point-comparison-instructions - ***************************/ - Operator::F32Eq | Operator::F64Eq => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_float_value(), v2.into_float_value()); - let cond = - builder.build_float_compare(FloatPredicate::OEQ, v1, v2, &state.var_name()); - let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); - state.push1(res); - } - Operator::F32Ne | Operator::F64Ne => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_float_value(), v2.into_float_value()); - let cond = - builder.build_float_compare(FloatPredicate::UNE, v1, v2, &state.var_name()); - let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); - state.push1(res); - } - Operator::F32Lt | Operator::F64Lt => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_float_value(), v2.into_float_value()); - let cond = - builder.build_float_compare(FloatPredicate::OLT, v1, v2, &state.var_name()); - let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); - state.push1(res); - } - Operator::F32Le | Operator::F64Le => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_float_value(), v2.into_float_value()); - let cond = - builder.build_float_compare(FloatPredicate::OLE, v1, v2, &state.var_name()); - let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); - state.push1(res); - } - Operator::F32Gt | Operator::F64Gt => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_float_value(), v2.into_float_value()); - let cond = - builder.build_float_compare(FloatPredicate::OGT, v1, v2, &state.var_name()); - let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); - state.push1(res); - } - Operator::F32Ge | Operator::F64Ge => { - let (v1, v2) = state.pop2()?; - let (v1, v2) = (v1.into_float_value(), v2.into_float_value()); - let cond = - builder.build_float_compare(FloatPredicate::OGE, v1, v2, &state.var_name()); - let res = builder.build_int_z_extend(cond, intrinsics.i32_ty, &state.var_name()); - state.push1(res); - } - - /*************************** - * Conversion instructions. - * https://github.com/sunfishcode/wasm-reference-manual/blob/master/WebAssembly.md#conversion-instructions - ***************************/ - Operator::I32WrapI64 => { - let v1 = state.pop1()?.into_int_value(); - let res = builder.build_int_truncate(v1, intrinsics.i32_ty, &state.var_name()); - state.push1(res); - } - Operator::I64ExtendSI32 => { - let v1 = state.pop1()?.into_int_value(); - let res = builder.build_int_s_extend(v1, intrinsics.i64_ty, &state.var_name()); - state.push1(res); - } - Operator::I64ExtendUI32 => { - let v1 = state.pop1()?.into_int_value(); - let res = builder.build_int_z_extend(v1, intrinsics.i64_ty, &state.var_name()); - state.push1(res); - } - Operator::I32TruncSF32 => { - let v1 = state.pop1()?.into_float_value(); - trap_if_not_representatable_as_int( - builder, - intrinsics, - context, - &function, - -2147483904.0, - 2_147_483_648.0, - v1, - ); - let res = - builder.build_float_to_signed_int(v1, intrinsics.i32_ty, &state.var_name()); - state.push1(res); - } - Operator::I32TruncSF64 => { - let v1 = state.pop1()?.into_float_value(); - trap_if_not_representatable_as_int( - builder, - intrinsics, - context, - &function, - -2_147_483_649.0, - 2_147_483_648.0, - v1, - ); - let res = - builder.build_float_to_signed_int(v1, intrinsics.i32_ty, &state.var_name()); - state.push1(res); - } - Operator::I32TruncSSatF32 | Operator::I32TruncSSatF64 => { - let v1 = state.pop1()?.into_float_value(); - let res = - builder.build_float_to_signed_int(v1, intrinsics.i32_ty, &state.var_name()); - state.push1(res); - } - Operator::I64TruncSF32 => { - let v1 = state.pop1()?.into_float_value(); - trap_if_not_representatable_as_int( - builder, - intrinsics, - context, - &function, - -9_223_373_136_366_403_584.0, - 9_223_372_036_854_775_808.0, - v1, - ); - let res = - builder.build_float_to_signed_int(v1, intrinsics.i64_ty, &state.var_name()); - state.push1(res); - } - Operator::I64TruncSF64 => { - let v1 = state.pop1()?.into_float_value(); - trap_if_not_representatable_as_int( - builder, - intrinsics, - context, - &function, - -9223372036854777856.0, - 9223372036854775808.0, - v1, - ); - let res = - builder.build_float_to_signed_int(v1, intrinsics.i64_ty, &state.var_name()); - state.push1(res); - } - Operator::I64TruncSSatF32 | Operator::I64TruncSSatF64 => { - let v1 = state.pop1()?.into_float_value(); - let res = - builder.build_float_to_signed_int(v1, intrinsics.i64_ty, &state.var_name()); - state.push1(res); - } - Operator::I32TruncUF32 => { - let v1 = state.pop1()?.into_float_value(); - trap_if_not_representatable_as_int( - builder, - intrinsics, - context, - &function, - -1.0, - 4294967296.0, - v1, - ); - let res = - builder.build_float_to_unsigned_int(v1, intrinsics.i32_ty, &state.var_name()); - state.push1(res); - } - Operator::I32TruncUF64 => { - let v1 = state.pop1()?.into_float_value(); - trap_if_not_representatable_as_int( - builder, - intrinsics, - context, - &function, - -1.0, - 4294967296.0, - v1, - ); - let res = - builder.build_float_to_unsigned_int(v1, intrinsics.i32_ty, &state.var_name()); - state.push1(res); - } - Operator::I32TruncUSatF32 | Operator::I32TruncUSatF64 => { - let v1 = state.pop1()?.into_float_value(); - let res = - builder.build_float_to_unsigned_int(v1, intrinsics.i32_ty, &state.var_name()); - state.push1(res); - } - Operator::I64TruncUF32 => { - let v1 = state.pop1()?.into_float_value(); - trap_if_not_representatable_as_int( - builder, - intrinsics, - context, - &function, - -1.0, - 18446744073709551616.0, - v1, - ); - let res = - builder.build_float_to_unsigned_int(v1, intrinsics.i64_ty, &state.var_name()); - state.push1(res); - } - Operator::I64TruncUF64 => { - let v1 = state.pop1()?.into_float_value(); - trap_if_not_representatable_as_int( - builder, - intrinsics, - context, - &function, - -1.0, - 18446744073709551616.0, - v1, - ); - let res = - builder.build_float_to_unsigned_int(v1, intrinsics.i64_ty, &state.var_name()); - state.push1(res); - } - Operator::I64TruncUSatF32 | Operator::I64TruncUSatF64 => { - let v1 = state.pop1()?.into_float_value(); - let res = - builder.build_float_to_unsigned_int(v1, intrinsics.i64_ty, &state.var_name()); - state.push1(res); - } - Operator::F32DemoteF64 => { - let v1 = state.pop1()?.into_float_value(); - let res = builder.build_float_trunc(v1, intrinsics.f32_ty, &state.var_name()); - state.push1(res); - } - Operator::F64PromoteF32 => { - let v1 = state.pop1()?.into_float_value(); - let res = builder.build_float_ext(v1, intrinsics.f64_ty, &state.var_name()); - state.push1(res); - } - Operator::F32ConvertSI32 | Operator::F32ConvertSI64 => { - let v1 = state.pop1()?.into_int_value(); - let res = - builder.build_signed_int_to_float(v1, intrinsics.f32_ty, &state.var_name()); - state.push1(res); - } - Operator::F64ConvertSI32 | Operator::F64ConvertSI64 => { - let v1 = state.pop1()?.into_int_value(); - let res = - builder.build_signed_int_to_float(v1, intrinsics.f64_ty, &state.var_name()); - state.push1(res); - } - Operator::F32ConvertUI32 | Operator::F32ConvertUI64 => { - let v1 = state.pop1()?.into_int_value(); - let res = - builder.build_unsigned_int_to_float(v1, intrinsics.f32_ty, &state.var_name()); - state.push1(res); - } - Operator::F64ConvertUI32 | Operator::F64ConvertUI64 => { - let v1 = state.pop1()?.into_int_value(); - let res = - builder.build_unsigned_int_to_float(v1, intrinsics.f64_ty, &state.var_name()); - state.push1(res); - } - Operator::I32ReinterpretF32 => { - let v = state.pop1()?; - let space = - builder.build_alloca(intrinsics.i32_ty.as_basic_type_enum(), &state.var_name()); - let f32_space = - builder.build_pointer_cast(space, intrinsics.f32_ptr_ty, &state.var_name()); - builder.build_store(f32_space, v); - let int = builder.build_load(space, &state.var_name()); - state.push1(int); - } - Operator::I64ReinterpretF64 => { - let v = state.pop1()?; - let space = - builder.build_alloca(intrinsics.i64_ty.as_basic_type_enum(), &state.var_name()); - let f64_space = - builder.build_pointer_cast(space, intrinsics.f64_ptr_ty, &state.var_name()); - builder.build_store(f64_space, v); - let int = builder.build_load(space, &state.var_name()); - state.push1(int); - } - Operator::F32ReinterpretI32 => { - let v = state.pop1()?; - let space = - builder.build_alloca(intrinsics.f32_ty.as_basic_type_enum(), &state.var_name()); - let i32_space = - builder.build_pointer_cast(space, intrinsics.i32_ptr_ty, &state.var_name()); - builder.build_store(i32_space, v); - let f = builder.build_load(space, &state.var_name()); - state.push1(f); - } - Operator::F64ReinterpretI64 => { - let v = state.pop1()?; - let space = - builder.build_alloca(intrinsics.f64_ty.as_basic_type_enum(), &state.var_name()); - let i64_space = - builder.build_pointer_cast(space, intrinsics.i64_ptr_ty, &state.var_name()); - builder.build_store(i64_space, v); - let f = builder.build_load(space, &state.var_name()); - state.push1(f); - } - - /*************************** - * Sign-extension operators. - * https://github.com/WebAssembly/sign-extension-ops/blob/master/proposals/sign-extension-ops/Overview.md - ***************************/ - Operator::I32Extend8S => { - let value = state.pop1()?.into_int_value(); - let narrow_value = - builder.build_int_truncate(value, intrinsics.i8_ty, &state.var_name()); - let extended_value = - builder.build_int_s_extend(narrow_value, intrinsics.i32_ty, &state.var_name()); - state.push1(extended_value); - } - Operator::I32Extend16S => { - let value = state.pop1()?.into_int_value(); - let narrow_value = - builder.build_int_truncate(value, intrinsics.i16_ty, &state.var_name()); - let extended_value = - builder.build_int_s_extend(narrow_value, intrinsics.i32_ty, &state.var_name()); - state.push1(extended_value); - } - Operator::I64Extend8S => { - let value = state.pop1()?.into_int_value(); - let narrow_value = - builder.build_int_truncate(value, intrinsics.i8_ty, &state.var_name()); - let extended_value = - builder.build_int_s_extend(narrow_value, intrinsics.i64_ty, &state.var_name()); - state.push1(extended_value); - } - Operator::I64Extend16S => { - let value = state.pop1()?.into_int_value(); - let narrow_value = - builder.build_int_truncate(value, intrinsics.i16_ty, &state.var_name()); - let extended_value = - builder.build_int_s_extend(narrow_value, intrinsics.i64_ty, &state.var_name()); - state.push1(extended_value); - } - Operator::I64Extend32S => { - let value = state.pop1()?.into_int_value(); - let narrow_value = - builder.build_int_truncate(value, intrinsics.i32_ty, &state.var_name()); - let extended_value = - builder.build_int_s_extend(narrow_value, intrinsics.i64_ty, &state.var_name()); - state.push1(extended_value); - } - - /*************************** - * Load and Store instructions. - * https://github.com/sunfishcode/wasm-reference-manual/blob/master/WebAssembly.md#load-and-store-instructions - ***************************/ - Operator::I32Load { ref memarg } => { - let effective_address = resolve_memory_ptr( - builder, - intrinsics, - context, - &function, - &mut state, - &mut ctx, - memarg, - intrinsics.i32_ptr_ty, - )?; - let result = builder.build_load(effective_address, &state.var_name()); - state.push1(result); - } - Operator::I64Load { ref memarg } => { - let effective_address = resolve_memory_ptr( - builder, - intrinsics, - context, - &function, - &mut state, - &mut ctx, - memarg, - intrinsics.i64_ptr_ty, - )?; - let result = builder.build_load(effective_address, &state.var_name()); - state.push1(result); - } - Operator::F32Load { ref memarg } => { - let effective_address = resolve_memory_ptr( - builder, - intrinsics, - context, - &function, - &mut state, - &mut ctx, - memarg, - intrinsics.f32_ptr_ty, - )?; - let result = builder.build_load(effective_address, &state.var_name()); - state.push1(result); - } - Operator::F64Load { ref memarg } => { - let effective_address = resolve_memory_ptr( - builder, - intrinsics, - context, - &function, - &mut state, - &mut ctx, - memarg, - intrinsics.f64_ptr_ty, - )?; - let result = builder.build_load(effective_address, &state.var_name()); - state.push1(result); - } - - Operator::I32Store { ref memarg } => { - let value = state.pop1()?; - let effective_address = resolve_memory_ptr( - builder, - intrinsics, - context, - &function, - &mut state, - &mut ctx, - memarg, - intrinsics.i32_ptr_ty, - )?; - builder.build_store(effective_address, value); - } - Operator::I64Store { ref memarg } => { - let value = state.pop1()?; - let effective_address = resolve_memory_ptr( - builder, - intrinsics, - context, - &function, - &mut state, - &mut ctx, - memarg, - intrinsics.i64_ptr_ty, - )?; - builder.build_store(effective_address, value); - } - Operator::F32Store { ref memarg } => { - let value = state.pop1()?; - let effective_address = resolve_memory_ptr( - builder, - intrinsics, - context, - &function, - &mut state, - &mut ctx, - memarg, - intrinsics.f32_ptr_ty, - )?; - builder.build_store(effective_address, value); - } - Operator::F64Store { ref memarg } => { - let value = state.pop1()?; - let effective_address = resolve_memory_ptr( - builder, - intrinsics, - context, - &function, - &mut state, - &mut ctx, - memarg, - intrinsics.f64_ptr_ty, - )?; - builder.build_store(effective_address, value); - } - - Operator::I32Load8S { ref memarg } => { - let effective_address = resolve_memory_ptr( - builder, - intrinsics, - context, - &function, - &mut state, - &mut ctx, - memarg, - intrinsics.i8_ptr_ty, - )?; - let narrow_result = builder - .build_load(effective_address, &state.var_name()) - .into_int_value(); - let result = - builder.build_int_s_extend(narrow_result, intrinsics.i32_ty, &state.var_name()); - state.push1(result); - } - Operator::I32Load16S { ref memarg } => { - let effective_address = resolve_memory_ptr( - builder, - intrinsics, - context, - &function, - &mut state, - &mut ctx, - memarg, - intrinsics.i16_ptr_ty, - )?; - let narrow_result = builder - .build_load(effective_address, &state.var_name()) - .into_int_value(); - let result = - builder.build_int_s_extend(narrow_result, intrinsics.i32_ty, &state.var_name()); - state.push1(result); - } - Operator::I64Load8S { ref memarg } => { - let effective_address = resolve_memory_ptr( - builder, - intrinsics, - context, - &function, - &mut state, - &mut ctx, - memarg, - intrinsics.i8_ptr_ty, - )?; - let narrow_result = builder - .build_load(effective_address, &state.var_name()) - .into_int_value(); - let result = - builder.build_int_s_extend(narrow_result, intrinsics.i64_ty, &state.var_name()); - state.push1(result); - } - Operator::I64Load16S { ref memarg } => { - let effective_address = resolve_memory_ptr( - builder, - intrinsics, - context, - &function, - &mut state, - &mut ctx, - memarg, - intrinsics.i16_ptr_ty, - )?; - let narrow_result = builder - .build_load(effective_address, &state.var_name()) - .into_int_value(); - let result = - builder.build_int_s_extend(narrow_result, intrinsics.i64_ty, &state.var_name()); - state.push1(result); - } - Operator::I64Load32S { ref memarg } => { - let effective_address = resolve_memory_ptr( - builder, - intrinsics, - context, - &function, - &mut state, - &mut ctx, - memarg, - intrinsics.i32_ptr_ty, - )?; - let narrow_result = builder - .build_load(effective_address, &state.var_name()) - .into_int_value(); - let result = - builder.build_int_s_extend(narrow_result, intrinsics.i64_ty, &state.var_name()); - state.push1(result); - } - - Operator::I32Load8U { ref memarg } => { - let effective_address = resolve_memory_ptr( - builder, - intrinsics, - context, - &function, - &mut state, - &mut ctx, - memarg, - intrinsics.i8_ptr_ty, - )?; - let narrow_result = builder - .build_load(effective_address, &state.var_name()) - .into_int_value(); - let result = - builder.build_int_z_extend(narrow_result, intrinsics.i32_ty, &state.var_name()); - state.push1(result); - } - Operator::I32Load16U { ref memarg } => { - let effective_address = resolve_memory_ptr( - builder, - intrinsics, - context, - &function, - &mut state, - &mut ctx, - memarg, - intrinsics.i16_ptr_ty, - )?; - let narrow_result = builder - .build_load(effective_address, &state.var_name()) - .into_int_value(); - let result = - builder.build_int_z_extend(narrow_result, intrinsics.i32_ty, &state.var_name()); - state.push1(result); - } - Operator::I64Load8U { ref memarg } => { - let effective_address = resolve_memory_ptr( - builder, - intrinsics, - context, - &function, - &mut state, - &mut ctx, - memarg, - intrinsics.i8_ptr_ty, - )?; - let narrow_result = builder - .build_load(effective_address, &state.var_name()) - .into_int_value(); - let result = - builder.build_int_z_extend(narrow_result, intrinsics.i64_ty, &state.var_name()); - state.push1(result); - } - Operator::I64Load16U { ref memarg } => { - let effective_address = resolve_memory_ptr( - builder, - intrinsics, - context, - &function, - &mut state, - &mut ctx, - memarg, - intrinsics.i16_ptr_ty, - )?; - let narrow_result = builder - .build_load(effective_address, &state.var_name()) - .into_int_value(); - let result = - builder.build_int_z_extend(narrow_result, intrinsics.i64_ty, &state.var_name()); - state.push1(result); - } - Operator::I64Load32U { ref memarg } => { - let effective_address = resolve_memory_ptr( - builder, - intrinsics, - context, - &function, - &mut state, - &mut ctx, - memarg, - intrinsics.i32_ptr_ty, - )?; - let narrow_result = builder - .build_load(effective_address, &state.var_name()) - .into_int_value(); - let result = - builder.build_int_z_extend(narrow_result, intrinsics.i64_ty, &state.var_name()); - state.push1(result); - } - - Operator::I32Store8 { ref memarg } | Operator::I64Store8 { ref memarg } => { - let value = state.pop1()?.into_int_value(); - let effective_address = resolve_memory_ptr( - builder, - intrinsics, - context, - &function, - &mut state, - &mut ctx, - memarg, - intrinsics.i8_ptr_ty, - )?; - let narrow_value = - builder.build_int_truncate(value, intrinsics.i8_ty, &state.var_name()); - builder.build_store(effective_address, narrow_value); - } - Operator::I32Store16 { ref memarg } | Operator::I64Store16 { ref memarg } => { - let value = state.pop1()?.into_int_value(); - let effective_address = resolve_memory_ptr( - builder, - intrinsics, - context, - &function, - &mut state, - &mut ctx, - memarg, - intrinsics.i16_ptr_ty, - )?; - let narrow_value = - builder.build_int_truncate(value, intrinsics.i16_ty, &state.var_name()); - builder.build_store(effective_address, narrow_value); - } - Operator::I64Store32 { ref memarg } => { - let value = state.pop1()?.into_int_value(); - let effective_address = resolve_memory_ptr( - builder, - intrinsics, - context, - &function, - &mut state, - &mut ctx, - memarg, - intrinsics.i32_ptr_ty, - )?; - let narrow_value = - builder.build_int_truncate(value, intrinsics.i32_ty, &state.var_name()); - builder.build_store(effective_address, narrow_value); - } - - Operator::MemoryGrow { reserved } => { - let memory_index = MemoryIndex::new(reserved as usize); - let func_value = match memory_index.local_or_import(info) { - LocalOrImport::Local(local_mem_index) => { - let mem_desc = &info.memories[local_mem_index]; - match mem_desc.memory_type() { - MemoryType::Dynamic => intrinsics.memory_grow_dynamic_local, - MemoryType::Static => intrinsics.memory_grow_static_local, - MemoryType::SharedStatic => intrinsics.memory_grow_shared_local, - } - } - LocalOrImport::Import(import_mem_index) => { - let mem_desc = &info.imported_memories[import_mem_index].1; - match mem_desc.memory_type() { - MemoryType::Dynamic => intrinsics.memory_grow_dynamic_import, - MemoryType::Static => intrinsics.memory_grow_static_import, - MemoryType::SharedStatic => intrinsics.memory_grow_shared_import, - } - } - }; - - let memory_index_const = intrinsics - .i32_ty - .const_int(reserved as u64, false) - .as_basic_value_enum(); - let delta = state.pop1()?; - - let result = builder.build_call( - func_value, - &[ctx.basic(), memory_index_const, delta], - &state.var_name(), - ); - state.push1(result.try_as_basic_value().left().unwrap()); - } - Operator::MemorySize { reserved } => { - let memory_index = MemoryIndex::new(reserved as usize); - let func_value = match memory_index.local_or_import(info) { - LocalOrImport::Local(local_mem_index) => { - let mem_desc = &info.memories[local_mem_index]; - match mem_desc.memory_type() { - MemoryType::Dynamic => intrinsics.memory_size_dynamic_local, - MemoryType::Static => intrinsics.memory_size_static_local, - MemoryType::SharedStatic => intrinsics.memory_size_shared_local, - } - } - LocalOrImport::Import(import_mem_index) => { - let mem_desc = &info.imported_memories[import_mem_index].1; - match mem_desc.memory_type() { - MemoryType::Dynamic => intrinsics.memory_size_dynamic_import, - MemoryType::Static => intrinsics.memory_size_static_import, - MemoryType::SharedStatic => intrinsics.memory_size_shared_import, - } - } - }; - - let memory_index_const = intrinsics - .i32_ty - .const_int(reserved as u64, false) - .as_basic_value_enum(); - let result = builder.build_call( - func_value, - &[ctx.basic(), memory_index_const], - &state.var_name(), - ); - state.push1(result.try_as_basic_value().left().unwrap()); - } - op @ _ => { - unimplemented!("{:?}", op); - } - } - } - - let results = state.popn_save(func_sig.returns().len())?; - - match results.as_slice() { - [] => { - builder.build_return(None); - } - [one_value] => { - builder.build_return(Some(one_value)); - } - _ => { - // let struct_ty = llvm_sig.get_return_type().as_struct_type(); - // let ret_struct = struct_ty.const_zero(); - unimplemented!("multi-value returns not yet implemented") - } - } - - Ok(()) -} - fn trap_if_not_representatable_as_int( builder: &Builder, intrinsics: &Intrinsics, @@ -2755,7 +645,8 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { builder.build_switch(index.into_int_value(), default_frame.br_dest(), &cases[..]); - state.popn(args.len())?; + let args_len = args.len(); + state.popn(args_len)?; state.reachable = false; } Operator::If { ty } => { diff --git a/lib/llvm-backend/src/lib.rs b/lib/llvm-backend/src/lib.rs index 53ba7cd98..1d9a030e6 100644 --- a/lib/llvm-backend/src/lib.rs +++ b/lib/llvm-backend/src/lib.rs @@ -1,13 +1,5 @@ #![cfg_attr(nightly, feature(unwind_attributes))] -use wasmer_runtime_core::{ - backend::{Compiler, CompilerConfig, Token}, - cache::{Artifact, Error as CacheError}, - error::CompileError, - module::ModuleInner, -}; -use wasmparser::{self, WasmDecoder}; - mod backend; mod code; mod intrinsics; @@ -16,119 +8,11 @@ mod read_info; mod state; mod trampolines; -pub struct LLVMOldCompiler { - _private: (), -} - -impl LLVMOldCompiler { - pub fn new() -> Self { - Self { _private: () } - } -} - use wasmer_runtime_core::codegen::SimpleStreamingCompilerGen; + pub type LLVMCompiler = SimpleStreamingCompilerGen< code::LLVMModuleCodeGenerator, code::LLVMFunctionCodeGenerator, backend::LLVMBackend, code::CodegenError, >; - -impl Compiler for LLVMOldCompiler { - fn compile( - &self, - wasm: &[u8], - compiler_config: CompilerConfig, - _: Token, - ) -> Result { - validate(wasm)?; - - let (info, code_reader) = read_info::read_module(wasm, compiler_config).unwrap(); - let (module, intrinsics) = code::parse_function_bodies(&info, code_reader).unwrap(); - - let (backend, cache_gen) = backend::LLVMBackend::new(module, intrinsics); - - Ok(ModuleInner { - runnable_module: Box::new(backend), - cache_gen: Box::new(cache_gen), - - info, - }) - } - - unsafe fn from_cache(&self, artifact: Artifact, _: Token) -> Result { - let (info, _, memory) = artifact.consume(); - let (backend, cache_gen) = - backend::LLVMBackend::from_buffer(memory).map_err(CacheError::DeserializeError)?; - - Ok(ModuleInner { - runnable_module: Box::new(backend), - cache_gen: Box::new(cache_gen), - - info, - }) - } -} - -fn validate(bytes: &[u8]) -> Result<(), CompileError> { - let mut parser = wasmparser::ValidatingParser::new( - bytes, - Some(wasmparser::ValidatingParserConfig { - operator_config: wasmparser::OperatorValidatorConfig { - enable_threads: false, - enable_reference_types: false, - enable_simd: false, - enable_bulk_memory: false, - }, - mutable_global_imports: false, - }), - ); - - loop { - let state = parser.read(); - match *state { - wasmparser::ParserState::EndWasm => break Ok(()), - wasmparser::ParserState::Error(err) => Err(CompileError::ValidationError { - msg: err.message.to_string(), - })?, - _ => {} - } - } -} - -#[test] -fn test_read_module() { - use std::mem::transmute; - use wabt::wat2wasm; - use wasmer_runtime_core::{ - backend::RunnableModule, structures::TypedIndex, types::LocalFuncIndex, vm, - }; - // let wasm = include_bytes!("../../spectests/examples/simple/simple.wasm") as &[u8]; - let wat = r#" - (module - (type $t0 (func (param i32) (result i32))) - (type $t1 (func (result i32))) - (memory 1) - (global $g0 (mut i32) (i32.const 0)) - (func $foo (type $t0) (param i32) (result i32) - get_local 0 - )) - "#; - let wasm = wat2wasm(wat).unwrap(); - - let (info, code_reader) = read_info::read_module(&wasm, Default::default()).unwrap(); - - let (module, intrinsics) = code::parse_function_bodies(&info, code_reader).unwrap(); - - let (backend, _) = backend::LLVMBackend::new(module, intrinsics); - - let func_ptr = backend.get_func(&info, LocalFuncIndex::new(0)).unwrap(); - - println!("func_ptr: {:p}", func_ptr.as_ptr()); - - unsafe { - let func: unsafe extern "C" fn(*mut vm::Ctx, i32) -> i32 = transmute(func_ptr); - let result = func(0 as _, 42); - println!("result: {}", result); - } -} diff --git a/lib/llvm-backend/src/read_info.rs b/lib/llvm-backend/src/read_info.rs index 5ebfa5868..572469ce2 100644 --- a/lib/llvm-backend/src/read_info.rs +++ b/lib/llvm-backend/src/read_info.rs @@ -1,289 +1,5 @@ -use wasmer_runtime_core::{ - backend::{Backend, CompilerConfig}, - module::{ - DataInitializer, ExportIndex, ImportName, ModuleInfo, StringTable, StringTableBuilder, - TableInitializer, - }, - structures::{Map, TypedIndex}, - types::{ - ElementType, FuncIndex, FuncSig, GlobalDescriptor, GlobalIndex, GlobalInit, - ImportedGlobalIndex, Initializer, MemoryDescriptor, MemoryIndex, SigIndex, TableDescriptor, - TableIndex, Type, Value, - }, - units::Pages, -}; -use wasmparser::{ - BinaryReaderError, CodeSectionReader, Data, DataKind, Element, ElementKind, Export, - ExternalKind, FuncType, Import, ImportSectionEntryType, InitExpr, ModuleReader, Operator, - SectionCode, Type as WpType, -}; - -use hashbrown::HashMap; - -pub fn read_module( - wasm: &[u8], - compiler_config: CompilerConfig, -) -> Result<(ModuleInfo, CodeSectionReader), BinaryReaderError> { - let mut info = ModuleInfo { - memories: Map::new(), - globals: Map::new(), - tables: Map::new(), - - imported_functions: Map::new(), - imported_memories: Map::new(), - imported_tables: Map::new(), - imported_globals: Map::new(), - - exports: Default::default(), - - data_initializers: Vec::new(), - elem_initializers: Vec::new(), - - start_func: None, - - func_assoc: Map::new(), - signatures: Map::new(), - backend: Backend::LLVM, - - namespace_table: StringTable::new(), - name_table: StringTable::new(), - - em_symbol_map: compiler_config.symbol_map.clone(), - - custom_sections: HashMap::new(), - }; - - let mut reader = ModuleReader::new(wasm)?; - let mut code_reader = None; - - loop { - if reader.eof() { - return Ok((info, code_reader.unwrap())); - } - - let section = reader.read()?; - - match section.code { - SectionCode::Type => { - let type_reader = section.get_type_section_reader()?; - - for ty in type_reader { - let ty = ty?; - info.signatures.push(func_type_to_func_sig(ty)?); - } - } - SectionCode::Import => { - let import_reader = section.get_import_section_reader()?; - let mut namespace_builder = StringTableBuilder::new(); - let mut name_builder = StringTableBuilder::new(); - - for import in import_reader { - let Import { module, field, ty } = import?; - - let namespace_index = namespace_builder.register(module); - let name_index = name_builder.register(field); - let import_name = ImportName { - namespace_index, - name_index, - }; - - match ty { - ImportSectionEntryType::Function(sigindex) => { - let sigindex = SigIndex::new(sigindex as usize); - info.imported_functions.push(import_name); - info.func_assoc.push(sigindex); - } - ImportSectionEntryType::Table(table_ty) => { - assert_eq!(table_ty.element_type, WpType::AnyFunc); - let table_desc = TableDescriptor { - element: ElementType::Anyfunc, - minimum: table_ty.limits.initial, - maximum: table_ty.limits.maximum, - }; - - info.imported_tables.push((import_name, table_desc)); - } - ImportSectionEntryType::Memory(memory_ty) => { - let mem_desc = MemoryDescriptor { - minimum: Pages(memory_ty.limits.initial), - maximum: memory_ty.limits.maximum.map(|max| Pages(max)), - shared: memory_ty.shared, - }; - info.imported_memories.push((import_name, mem_desc)); - } - ImportSectionEntryType::Global(global_ty) => { - let global_desc = GlobalDescriptor { - mutable: global_ty.mutable, - ty: type_to_type(global_ty.content_type)?, - }; - info.imported_globals.push((import_name, global_desc)); - } - } - } - - info.namespace_table = namespace_builder.finish(); - info.name_table = name_builder.finish(); - } - SectionCode::Function => { - let func_decl_reader = section.get_function_section_reader()?; - - for sigindex in func_decl_reader { - let sigindex = sigindex?; - - let sigindex = SigIndex::new(sigindex as usize); - info.func_assoc.push(sigindex); - } - } - SectionCode::Table => { - let table_decl_reader = section.get_table_section_reader()?; - - for table_ty in table_decl_reader { - let table_ty = table_ty?; - - let table_desc = TableDescriptor { - element: ElementType::Anyfunc, - minimum: table_ty.limits.initial, - maximum: table_ty.limits.maximum, - }; - - info.tables.push(table_desc); - } - } - SectionCode::Memory => { - let mem_decl_reader = section.get_memory_section_reader()?; - - for memory_ty in mem_decl_reader { - let memory_ty = memory_ty?; - - let mem_desc = MemoryDescriptor { - minimum: Pages(memory_ty.limits.initial), - maximum: memory_ty.limits.maximum.map(|max| Pages(max)), - shared: memory_ty.shared, - }; - - info.memories.push(mem_desc); - } - } - SectionCode::Global => { - let global_decl_reader = section.get_global_section_reader()?; - - for global in global_decl_reader { - let global = global?; - - let desc = GlobalDescriptor { - mutable: global.ty.mutable, - ty: type_to_type(global.ty.content_type)?, - }; - - let global_init = GlobalInit { - desc, - init: eval_init_expr(&global.init_expr)?, - }; - - info.globals.push(global_init); - } - } - SectionCode::Export => { - let export_reader = section.get_export_section_reader()?; - - for export in export_reader { - let Export { field, kind, index } = export?; - - let export_index = match kind { - ExternalKind::Function => ExportIndex::Func(FuncIndex::new(index as usize)), - ExternalKind::Table => ExportIndex::Table(TableIndex::new(index as usize)), - ExternalKind::Memory => { - ExportIndex::Memory(MemoryIndex::new(index as usize)) - } - ExternalKind::Global => { - ExportIndex::Global(GlobalIndex::new(index as usize)) - } - }; - - info.exports.insert(field.to_string(), export_index); - } - } - SectionCode::Start => { - let start_index = section.get_start_section_content()?; - - info.start_func = Some(FuncIndex::new(start_index as usize)); - } - SectionCode::Element => { - let element_reader = section.get_element_section_reader()?; - - for element in element_reader { - let Element { kind, items } = element?; - - match kind { - ElementKind::Active { - table_index, - init_expr, - } => { - let table_index = TableIndex::new(table_index as usize); - let base = eval_init_expr(&init_expr)?; - let items_reader = items.get_items_reader()?; - - let elements: Vec<_> = items_reader - .into_iter() - .map(|res| res.map(|index| FuncIndex::new(index as usize))) - .collect::>()?; - - let table_init = TableInitializer { - table_index, - base, - elements, - }; - - info.elem_initializers.push(table_init); - } - ElementKind::Passive(_ty) => { - return Err(BinaryReaderError { - message: "passive tables are not yet supported", - offset: -1isize as usize, - }); - } - } - } - } - SectionCode::Code => { - code_reader = Some(section.get_code_section_reader()?); - } - SectionCode::Data => { - let data_reader = section.get_data_section_reader()?; - - for data in data_reader { - let Data { kind, data } = data?; - - match kind { - DataKind::Active { - memory_index, - init_expr, - } => { - let memory_index = MemoryIndex::new(memory_index as usize); - let base = eval_init_expr(&init_expr)?; - - let data_init = DataInitializer { - memory_index, - base, - data: data.to_vec(), - }; - - info.data_initializers.push(data_init); - } - DataKind::Passive => { - return Err(BinaryReaderError { - message: "passive memories are not yet supported", - offset: -1isize as usize, - }); - } - } - } - } - SectionCode::DataCount => {} - SectionCode::Custom { .. } => {} - } - } -} +use wasmer_runtime_core::types::Type; +use wasmparser::{BinaryReaderError, Type as WpType}; pub fn type_to_type(ty: WpType) -> Result { Ok(match ty { @@ -305,46 +21,3 @@ pub fn type_to_type(ty: WpType) -> Result { } }) } - -fn func_type_to_func_sig(func_ty: FuncType) -> Result { - assert_eq!(func_ty.form, WpType::Func); - - Ok(FuncSig::new( - func_ty - .params - .iter() - .cloned() - .map(type_to_type) - .collect::, _>>()?, - func_ty - .returns - .iter() - .cloned() - .map(type_to_type) - .collect::, _>>()?, - )) -} - -fn eval_init_expr(expr: &InitExpr) -> Result { - let mut reader = expr.get_operators_reader(); - let (op, offset) = reader.read_with_offset()?; - Ok(match op { - Operator::GetGlobal { global_index } => { - Initializer::GetGlobal(ImportedGlobalIndex::new(global_index as usize)) - } - Operator::I32Const { value } => Initializer::Const(Value::I32(value)), - Operator::I64Const { value } => Initializer::Const(Value::I64(value)), - Operator::F32Const { value } => { - Initializer::Const(Value::F32(f32::from_bits(value.bits()))) - } - Operator::F64Const { value } => { - Initializer::Const(Value::F64(f64::from_bits(value.bits()))) - } - _ => { - return Err(BinaryReaderError { - message: "init expr evaluation failed: unsupported opcode", - offset, - }); - } - }) -} From e53d5a91ca1d5ea6e2f7b9db2b122d55f0ac49bf Mon Sep 17 00:00:00 2001 From: losfair Date: Tue, 7 May 2019 19:20:18 +0800 Subject: [PATCH 397/413] Remove transmutes. --- lib/llvm-backend/src/code.rs | 152 ++++++++++++++++++----------- lib/llvm-backend/src/intrinsics.rs | 112 ++++++++++----------- 2 files changed, 151 insertions(+), 113 deletions(-) diff --git a/lib/llvm-backend/src/code.rs b/lib/llvm-backend/src/code.rs index 8c3d89d74..4981fd0ad 100644 --- a/lib/llvm-backend/src/code.rs +++ b/lib/llvm-backend/src/code.rs @@ -8,6 +8,7 @@ use inkwell::{ AddressSpace, FloatPredicate, IntPredicate, }; use smallvec::SmallVec; +use std::ops::{Deref, DerefMut}; use std::sync::Arc; use wasmer_runtime_core::{ backend::{Backend, CacheGen, Token}, @@ -292,7 +293,7 @@ fn resolve_memory_ptr( let var_offset = builder.build_int_z_extend(var_offset_i32, intrinsics.i64_ty, &state.var_name()); let effective_offset = builder.build_int_add(var_offset, imm_offset, &state.var_name()); - let memory_cache = ctx.memory(MemoryIndex::new(0)); + let memory_cache = ctx.memory(MemoryIndex::new(0), intrinsics); let mem_base_int = match memory_cache { MemoryCache::Dynamic { @@ -363,25 +364,25 @@ pub struct CodegenError { } pub struct LLVMModuleCodeGenerator { - context: Context, - builder: Builder, + context: Option, + builder: Option, + intrinsics: Option, functions: Vec, signatures: Map, signatures_raw: Map, function_signatures: Option>>, func_import_count: usize, - intrinsics: Intrinsics, personality_func: FunctionValue, module: Module, } pub struct LLVMFunctionCodeGenerator { + context: Option, + builder: Option, + intrinsics: Option, state: State, - builder: &'static Builder, - context: &'static Context, function: FunctionValue, func_sig: FuncSig, - intrinsics: &'static Intrinsics, signatures: Map, locals: Vec, // Contains params and locals num_params: usize, @@ -405,21 +406,23 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { // let (count, ty) = local?; let count = n; let wasmer_ty = type_to_type(ty)?; - let ty = type_to_llvm(self.intrinsics, wasmer_ty); + + let intrinsics = self.intrinsics.as_ref().unwrap(); + let ty = type_to_llvm(intrinsics, wasmer_ty); let default_value = match wasmer_ty { - Type::I32 => self.intrinsics.i32_zero.as_basic_value_enum(), - Type::I64 => self.intrinsics.i64_zero.as_basic_value_enum(), - Type::F32 => self.intrinsics.f32_zero.as_basic_value_enum(), - Type::F64 => self.intrinsics.f64_zero.as_basic_value_enum(), + Type::I32 => intrinsics.i32_zero.as_basic_value_enum(), + Type::I64 => intrinsics.i64_zero.as_basic_value_enum(), + Type::F32 => intrinsics.f32_zero.as_basic_value_enum(), + Type::F64 => intrinsics.f64_zero.as_basic_value_enum(), }; - for _ in 0..count { - let alloca = self - .builder - .build_alloca(ty, &format!("local{}", param_len + local_idx)); + let builder = self.builder.as_ref().unwrap(); - self.builder.build_store(alloca, default_value); + for _ in 0..count { + let alloca = builder.build_alloca(ty, &format!("local{}", param_len + local_idx)); + + builder.build_store(alloca, default_value); self.locals.push(alloca); local_idx += 1; @@ -430,22 +433,27 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { fn begin_body(&mut self, module_info: &ModuleInfo) -> Result<(), CodegenError> { let start_of_code_block = self .context + .as_ref() + .unwrap() .append_basic_block(&self.function, "start_of_code"); let entry_end_inst = self .builder + .as_ref() + .unwrap() .build_unconditional_branch(&start_of_code_block); - self.builder.position_at_end(&start_of_code_block); + self.builder + .as_ref() + .unwrap() + .position_at_end(&start_of_code_block); - let cache_builder = self.context.create_builder(); + let cache_builder = self.context.as_ref().unwrap().create_builder(); cache_builder.position_before(&entry_end_inst); let module_info = unsafe { ::std::mem::transmute::<&ModuleInfo, &'static ModuleInfo>(module_info) }; let function = unsafe { ::std::mem::transmute::<&FunctionValue, &'static FunctionValue>(&self.function) }; - let ctx = self - .intrinsics - .ctx(module_info, self.builder, function, cache_builder); + let ctx = CtxType::new(module_info, function, cache_builder); self.ctx = Some(ctx); Ok(()) @@ -460,10 +468,10 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { }; let mut state = &mut self.state; - let builder = self.builder; - let context = self.context; + let builder = self.builder.as_ref().unwrap(); + let context = self.context.as_ref().unwrap(); let function = self.function; - let intrinsics = self.intrinsics; + let intrinsics = self.intrinsics.as_ref().unwrap(); let locals = &self.locals; let info = module_info; let signatures = &self.signatures; @@ -868,7 +876,7 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { Operator::GetGlobal { global_index } => { let index = GlobalIndex::new(global_index as usize); - let global_cache = ctx.global_cache(index); + let global_cache = ctx.global_cache(index, intrinsics); match global_cache { GlobalCache::Const { value } => { state.push1(value); @@ -882,7 +890,7 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { Operator::SetGlobal { global_index } => { let value = state.pop1()?; let index = GlobalIndex::new(global_index as usize); - let global_cache = ctx.global_cache(index); + let global_cache = ctx.global_cache(index, intrinsics); match global_cache { GlobalCache::Mut { ptr_to_value } => { builder.build_store(ptr_to_value, value); @@ -918,12 +926,14 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { .map(|v| *v) .collect(); - let func_ptr = ctx.local_func(local_func_index, llvm_sig); + let func_ptr = + ctx.local_func(local_func_index, llvm_sig, intrinsics, builder); builder.build_call(func_ptr, ¶ms, &state.var_name()) } LocalOrImport::Import(import_func_index) => { - let (func_ptr_untyped, ctx_ptr) = ctx.imported_func(import_func_index); + let (func_ptr_untyped, ctx_ptr) = + ctx.imported_func(import_func_index, intrinsics); let params: Vec<_> = [ctx_ptr.as_basic_value_enum()] .iter() .chain(state.peekn(func_sig.params().len())?.iter()) @@ -962,8 +972,9 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { } Operator::CallIndirect { index, table_index } => { let sig_index = SigIndex::new(index as usize); - let expected_dynamic_sigindex = ctx.dynamic_sigindex(sig_index); - let (table_base, table_bound) = ctx.table(TableIndex::new(table_index as usize)); + let expected_dynamic_sigindex = ctx.dynamic_sigindex(sig_index, intrinsics); + let (table_base, table_bound) = + ctx.table(TableIndex::new(table_index as usize), intrinsics, builder); let func_index = state.pop1()?.into_int_value(); // We assume the table has the `anyfunc` element type. @@ -2404,10 +2415,10 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { match results.as_slice() { [] => { - self.builder.build_return(None); + self.builder.as_ref().unwrap().build_return(None); } [one_value] => { - self.builder.build_return(Some(one_value)); + self.builder.as_ref().unwrap().build_return(Some(one_value)); } _ => { // let struct_ty = llvm_sig.get_return_type().as_struct_type(); @@ -2446,15 +2457,15 @@ impl ModuleCodeGenerator let signatures = Map::new(); LLVMModuleCodeGenerator { - context, - builder, + context: Some(context), + builder: Some(builder), + intrinsics: Some(intrinsics), module, functions: vec![], signatures, signatures_raw: Map::new(), function_signatures: None, func_import_count: 0, - intrinsics, personality_func, } } @@ -2469,6 +2480,18 @@ impl ModuleCodeGenerator fn next_function(&mut self) -> Result<&mut LLVMFunctionCodeGenerator, CodegenError> { // Creates a new function and returns the function-scope code generator for it. + let (context, builder, intrinsics) = match self.functions.last_mut() { + Some(x) => ( + x.context.take().unwrap(), + x.builder.take().unwrap(), + x.intrinsics.take().unwrap(), + ), + None => ( + self.context.take().unwrap(), + self.builder.take().unwrap(), + self.intrinsics.take().unwrap(), + ), + }; let sig_id = self.function_signatures.as_ref().unwrap() [FuncIndex::new(self.func_import_count + self.functions.len())]; @@ -2482,20 +2505,20 @@ impl ModuleCodeGenerator function.set_personality_function(self.personality_func); let mut state = State::new(); - let entry_block = self.context.append_basic_block(&function, "entry"); + let entry_block = context.append_basic_block(&function, "entry"); - let return_block = self.context.append_basic_block(&function, "return"); - self.builder.position_at_end(&return_block); + let return_block = context.append_basic_block(&function, "return"); + builder.position_at_end(&return_block); let phis: SmallVec<[PhiValue; 1]> = func_sig .returns() .iter() - .map(|&wasmer_ty| type_to_llvm(&self.intrinsics, wasmer_ty)) - .map(|ty| self.builder.build_phi(ty, &state.var_name())) + .map(|&wasmer_ty| type_to_llvm(&intrinsics, wasmer_ty)) + .map(|ty| builder.build_phi(ty, &state.var_name())) .collect(); state.push_block(return_block, phis); - self.builder.position_at_end(&entry_block); + builder.position_at_end(&entry_block); let mut locals = Vec::new(); locals.extend( @@ -2506,8 +2529,8 @@ impl ModuleCodeGenerator .map(|(index, param)| { let ty = param.get_type(); - let alloca = self.builder.build_alloca(ty, &format!("local{}", index)); - self.builder.build_store(alloca, param); + let alloca = builder.build_alloca(ty, &format!("local{}", index)); + builder.build_store(alloca, param); alloca }), ); @@ -2515,16 +2538,14 @@ impl ModuleCodeGenerator let code = LLVMFunctionCodeGenerator { state, - builder: unsafe { ::std::mem::transmute::<&Builder, &'static Builder>(&self.builder) }, - context: unsafe { ::std::mem::transmute::<&Context, &'static Context>(&self.context) }, + context: Some(context), + builder: Some(builder), + intrinsics: Some(intrinsics), function, func_sig: func_sig, locals, signatures: self.signatures.clone(), num_params, - intrinsics: unsafe { - ::std::mem::transmute::<&Intrinsics, &'static Intrinsics>(&self.intrinsics) - }, ctx: None, unreachable_depth: 0, }; @@ -2533,18 +2554,33 @@ impl ModuleCodeGenerator } fn finalize( - self, + mut self, module_info: &ModuleInfo, ) -> Result<(LLVMBackend, Box), CodegenError> { // self.module.print_to_stderr(); + let (context, builder, intrinsics) = match self.functions.last_mut() { + Some(x) => ( + x.context.take().unwrap(), + x.builder.take().unwrap(), + x.intrinsics.take().unwrap(), + ), + None => ( + self.context.take().unwrap(), + self.builder.take().unwrap(), + self.intrinsics.take().unwrap(), + ), + }; + self.context = Some(context); + self.builder = Some(builder); + self.intrinsics = Some(intrinsics); generate_trampolines( module_info, &self.signatures, &self.module, - &self.context, - &self.builder, - &self.intrinsics, + self.context.as_ref().unwrap(), + self.builder.as_ref().unwrap(), + self.intrinsics.as_ref().unwrap(), ); let pass_manager = PassManager::create_for_module(); @@ -2563,14 +2599,20 @@ impl ModuleCodeGenerator // self.module.print_to_stderr(); - let (backend, cache_gen) = LLVMBackend::new(self.module, self.intrinsics); + let (backend, cache_gen) = LLVMBackend::new(self.module, self.intrinsics.take().unwrap()); Ok((backend, Box::new(cache_gen))) } fn feed_signatures(&mut self, signatures: Map) -> Result<(), CodegenError> { self.signatures = signatures .iter() - .map(|(_, sig)| func_sig_to_llvm(&self.context, &self.intrinsics, sig)) + .map(|(_, sig)| { + func_sig_to_llvm( + self.context.as_ref().unwrap(), + self.intrinsics.as_ref().unwrap(), + sig, + ) + }) .collect(); self.signatures_raw = signatures.clone(); Ok(()) diff --git a/lib/llvm-backend/src/intrinsics.rs b/lib/llvm-backend/src/intrinsics.rs index 1b367f5d4..6250fd4fd 100644 --- a/lib/llvm-backend/src/intrinsics.rs +++ b/lib/llvm-backend/src/intrinsics.rs @@ -369,31 +369,6 @@ impl Intrinsics { ctx_ptr_ty, } } - - pub fn ctx<'a>( - &'a self, - info: &'a ModuleInfo, - builder: &'a Builder, - func_value: &'a FunctionValue, - cache_builder: Builder, - ) -> CtxType<'a> { - CtxType { - ctx_ptr_value: func_value.get_nth_param(0).unwrap().into_pointer_value(), - - builder, - intrinsics: self, - info, - cache_builder, - - cached_memories: HashMap::new(), - cached_tables: HashMap::new(), - cached_sigindices: HashMap::new(), - cached_globals: HashMap::new(), - cached_imported_functions: HashMap::new(), - - _phantom: PhantomData, - } - } } #[derive(Clone, Copy)] @@ -429,8 +404,6 @@ struct ImportedFuncCache { pub struct CtxType<'a> { ctx_ptr_value: PointerValue, - builder: &'a Builder, - intrinsics: &'a Intrinsics, info: &'a ModuleInfo, cache_builder: Builder, @@ -444,16 +417,36 @@ pub struct CtxType<'a> { } impl<'a> CtxType<'a> { + pub fn new( + info: &'a ModuleInfo, + func_value: &'a FunctionValue, + cache_builder: Builder, + ) -> CtxType<'a> { + CtxType { + ctx_ptr_value: func_value.get_nth_param(0).unwrap().into_pointer_value(), + + info, + cache_builder, + + cached_memories: HashMap::new(), + cached_tables: HashMap::new(), + cached_sigindices: HashMap::new(), + cached_globals: HashMap::new(), + cached_imported_functions: HashMap::new(), + + _phantom: PhantomData, + } + } + pub fn basic(&self) -> BasicValueEnum { self.ctx_ptr_value.as_basic_value_enum() } - pub fn memory(&mut self, index: MemoryIndex) -> MemoryCache { - let (cached_memories, info, ctx_ptr_value, intrinsics, cache_builder) = ( + pub fn memory(&mut self, index: MemoryIndex, intrinsics: &Intrinsics) -> MemoryCache { + let (cached_memories, info, ctx_ptr_value, cache_builder) = ( &mut self.cached_memories, self.info, self.ctx_ptr_value, - self.intrinsics, &self.cache_builder, ); @@ -514,13 +507,16 @@ impl<'a> CtxType<'a> { }) } - pub fn table(&mut self, index: TableIndex) -> (PointerValue, IntValue) { - let (cached_tables, builder, info, ctx_ptr_value, intrinsics, cache_builder) = ( + pub fn table( + &mut self, + index: TableIndex, + intrinsics: &Intrinsics, + builder: &Builder, + ) -> (PointerValue, IntValue) { + let (cached_tables, info, ctx_ptr_value, cache_builder) = ( &mut self.cached_tables, - self.builder, self.info, self.ctx_ptr_value, - self.intrinsics, &self.cache_builder, ); @@ -575,41 +571,39 @@ impl<'a> CtxType<'a> { ) } - pub fn local_func(&mut self, index: LocalFuncIndex, fn_ty: FunctionType) -> PointerValue { - let local_func_array_ptr_ptr = unsafe { - self.builder - .build_struct_gep(self.ctx_ptr_value, 8, "local_func_array_ptr_ptr") - }; - let local_func_array_ptr = self - .builder + pub fn local_func( + &mut self, + index: LocalFuncIndex, + fn_ty: FunctionType, + intrinsics: &Intrinsics, + builder: &Builder, + ) -> PointerValue { + let local_func_array_ptr_ptr = + unsafe { builder.build_struct_gep(self.ctx_ptr_value, 8, "local_func_array_ptr_ptr") }; + let local_func_array_ptr = builder .build_load(local_func_array_ptr_ptr, "local_func_array_ptr") .into_pointer_value(); let local_func_ptr_ptr = unsafe { - self.builder.build_in_bounds_gep( + builder.build_in_bounds_gep( local_func_array_ptr, - &[self - .intrinsics - .i32_ty - .const_int(index.index() as u64, false)], + &[intrinsics.i32_ty.const_int(index.index() as u64, false)], "local_func_ptr_ptr", ) }; - let local_func_ptr = self - .builder + let local_func_ptr = builder .build_load(local_func_ptr_ptr, "local_func_ptr") .into_pointer_value(); - self.builder.build_pointer_cast( + builder.build_pointer_cast( local_func_ptr, fn_ty.ptr_type(AddressSpace::Generic), "local_func_ptr", ) } - pub fn dynamic_sigindex(&mut self, index: SigIndex) -> IntValue { - let (cached_sigindices, ctx_ptr_value, intrinsics, cache_builder) = ( + pub fn dynamic_sigindex(&mut self, index: SigIndex, intrinsics: &Intrinsics) -> IntValue { + let (cached_sigindices, ctx_ptr_value, cache_builder) = ( &mut self.cached_sigindices, self.ctx_ptr_value, - self.intrinsics, &self.cache_builder, ); @@ -636,12 +630,11 @@ impl<'a> CtxType<'a> { }) } - pub fn global_cache(&mut self, index: GlobalIndex) -> GlobalCache { - let (cached_globals, ctx_ptr_value, info, intrinsics, cache_builder) = ( + pub fn global_cache(&mut self, index: GlobalIndex, intrinsics: &Intrinsics) -> GlobalCache { + let (cached_globals, ctx_ptr_value, info, cache_builder) = ( &mut self.cached_globals, self.ctx_ptr_value, self.info, - self.intrinsics, &self.cache_builder, ); @@ -712,11 +705,14 @@ impl<'a> CtxType<'a> { }) } - pub fn imported_func(&mut self, index: ImportedFuncIndex) -> (PointerValue, PointerValue) { - let (cached_imported_functions, ctx_ptr_value, intrinsics, cache_builder) = ( + pub fn imported_func( + &mut self, + index: ImportedFuncIndex, + intrinsics: &Intrinsics, + ) -> (PointerValue, PointerValue) { + let (cached_imported_functions, ctx_ptr_value, cache_builder) = ( &mut self.cached_imported_functions, self.ctx_ptr_value, - self.intrinsics, &self.cache_builder, ); From 43bf83cd09d3cea8237dd0e5c24d37acf83d5909 Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Tue, 7 May 2019 22:46:04 -0500 Subject: [PATCH 398/413] Add LLVM backend parser update entry to changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f8a367e34..b3f831313 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ Blocks of changes will separated by version increments. ## **[Unreleased]** +- [#413](https://github.com/wasmerio/wasmer/pull/413) Update LLVM backend to use new parser codegen traits + ## 0.4.1 - 2018-05-06 - [#426](https://github.com/wasmerio/wasmer/pull/426) Update wapm-cli submodule, bump version to 0.4.1 From 54095fcd678c302d53f897ce1a0d787dbfd4ec82 Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Tue, 7 May 2019 22:53:48 -0500 Subject: [PATCH 399/413] Clean up commented out code in LLVM codegen --- lib/llvm-backend/src/code.rs | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/lib/llvm-backend/src/code.rs b/lib/llvm-backend/src/code.rs index 4981fd0ad..028207a8c 100644 --- a/lib/llvm-backend/src/code.rs +++ b/lib/llvm-backend/src/code.rs @@ -8,7 +8,6 @@ use inkwell::{ AddressSpace, FloatPredicate, IntPredicate, }; use smallvec::SmallVec; -use std::ops::{Deref, DerefMut}; use std::sync::Arc; use wasmer_runtime_core::{ backend::{Backend, CacheGen, Token}, @@ -2420,11 +2419,7 @@ impl FunctionCodeGenerator for LLVMFunctionCodeGenerator { [one_value] => { self.builder.as_ref().unwrap().build_return(Some(one_value)); } - _ => { - // let struct_ty = llvm_sig.get_return_type().as_struct_type(); - // let ret_struct = struct_ty.const_zero(); - unimplemented!("multi-value returns not yet implemented") - } + _ => unimplemented!("multi-value returns not yet implemented"), } Ok(()) } @@ -2557,7 +2552,6 @@ impl ModuleCodeGenerator mut self, module_info: &ModuleInfo, ) -> Result<(LLVMBackend, Box), CodegenError> { - // self.module.print_to_stderr(); let (context, builder, intrinsics) = match self.functions.last_mut() { Some(x) => ( x.context.take().unwrap(), @@ -2584,15 +2578,14 @@ impl ModuleCodeGenerator ); let pass_manager = PassManager::create_for_module(); - // pass_manager.add_verifier_pass(); + if cfg!(test) { + pass_manager.add_verifier_pass(); + } pass_manager.add_function_inlining_pass(); pass_manager.add_promote_memory_to_register_pass(); pass_manager.add_cfg_simplification_pass(); - // pass_manager.add_instruction_combining_pass(); pass_manager.add_aggressive_inst_combiner_pass(); pass_manager.add_merged_load_store_motion_pass(); - // pass_manager.add_sccp_pass(); - // pass_manager.add_gvn_pass(); pass_manager.add_new_gvn_pass(); pass_manager.add_aggressive_dce_pass(); pass_manager.run_on_module(&self.module); From 36a78a23b6159064d4fdf7038f5149fd533f8252 Mon Sep 17 00:00:00 2001 From: Johan Andersson Date: Wed, 8 May 2019 15:36:24 +0200 Subject: [PATCH 400/413] Fix Windows crash on caching compiled artifact. Memory clone function wasn't able to write to new reserved memory object. Changed so allocating Memory objects with protection flag allocates commited memory. --- lib/runtime-core/src/sys/windows/memory.rs | 30 +++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/lib/runtime-core/src/sys/windows/memory.rs b/lib/runtime-core/src/sys/windows/memory.rs index d47388170..888aeff4d 100644 --- a/lib/runtime-core/src/sys/windows/memory.rs +++ b/lib/runtime-core/src/sys/windows/memory.rs @@ -33,7 +33,13 @@ impl Memory { let protect = protection.to_protect_const(); - let ptr = unsafe { VirtualAlloc(ptr::null_mut(), size, MEM_RESERVE, protect) }; + let flags = if protection == Protect::None { + MEM_RESERVE + } else { + MEM_RESERVE | MEM_COMMIT + }; + + let ptr = unsafe { VirtualAlloc(ptr::null_mut(), size, flags, protect) }; if ptr.is_null() { Err("unable to allocate memory".to_string()) @@ -229,3 +235,25 @@ fn round_up_to_page_size(size: usize, page_size: usize) -> usize { fn round_down_to_page_size(size: usize, page_size: usize) -> usize { size & !(page_size - 1) } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn clone() { + // these should work + let _ = Memory::with_size_protect(200_000, Protect::Read) + .unwrap() + .clone(); + let _ = Memory::with_size_protect(200_000, Protect::ReadWrite) + .unwrap() + .clone(); + let _ = Memory::with_size_protect(200_000, Protect::ReadExec) + .unwrap() + .clone(); + + // this would cause segmentation fault as uncommited memory with no access + //let _ = Memory::with_size_protect(200_000, Protect::None).unwrap().clone(); + } +} From 1f99ef837774a82eacd926e734b1ae68b7a01b82 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Thu, 9 May 2019 16:01:36 -0700 Subject: [PATCH 401/413] implement some FS operations for rsign2 --- lib/wasi/src/syscalls/mod.rs | 111 +++++++++++++++++++++++++++++++---- 1 file changed, 101 insertions(+), 10 deletions(-) diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index fcd1caadd..dcddeedd9 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -987,8 +987,60 @@ pub fn path_create_directory( path_len: u32, ) -> __wasi_errno_t { debug!("wasi::path_create_directory"); - // check __WASI_RIGHT_PATH_CREATE_DIRECTORY - unimplemented!() + let memory = ctx.memory(0); + let state = get_wasi_state(ctx); + + let working_dir = wasi_try!(state.fs.fd_map.get(&fd).ok_or(__WASI_EBADF)); + if !has_rights(working_dir.rights, __WASI_RIGHT_PATH_CREATE_DIRECTORY) { + return __WASI_EACCES; + } + let path_cells = wasi_try!(path.deref(memory, 0, path_len)); + let path_string = + wasi_try!( + std::str::from_utf8(unsafe { &*(path_cells as *const [_] as *const [u8]) }) + .map_err(|_| __WASI_EINVAL) + ); + debug!("=> path: {}", &path_string); + + let path = std::path::PathBuf::from(path_string); + let path_vec = wasi_try!(path + .components() + .map(|comp| { + comp.as_os_str() + .to_str() + .map(|inner_str| inner_str.to_string()) + .ok_or(__WASI_EINVAL) + }) + .collect::, __wasi_errno_t>>()); + if path_vec.is_empty() { + return __WASI_EINVAL; + } + + assert!( + path_vec.len() == 1, + "path_create_directory for paths greater than depth 1 has not been implemented" + ); + debug!("Path vec: {:#?}", path_vec); + + let kind = Kind::Dir { + //parent: Some(working_dir.inode), + path: path.clone(), + entries: Default::default(), + }; + let new_inode = state.fs.inodes.insert(InodeVal { + stat: __wasi_filestat_t::default(), + is_preopened: false, + name: path_vec[0].clone(), + kind, + }); + + if let Kind::Dir { entries, .. } = &mut state.fs.inodes[working_dir.inode].kind { + entries.insert(path_vec[0].clone(), new_inode); + } else { + return __WASI_ENOTDIR; + } + + __WASI_ESUCCESS } /// ### `path_filestat_get()` @@ -1023,25 +1075,27 @@ pub fn path_filestat_get( return __WASI_EACCES; } - let path_vec = wasi_try!(::std::str::from_utf8(unsafe { + let path_string = wasi_try!(::std::str::from_utf8(unsafe { &*(wasi_try!(path.deref(memory, 0, path_len)) as *const [_] as *const [u8]) }) - .map_err(|_| __WASI_EINVAL)) - .split('/') - .map(|str| str.to_string()) - .collect::>(); + .map_err(|_| __WASI_EINVAL)); + debug!("=> path: {}", &path_string); + let path_vec = path_string + .split('/') + .map(|str| str.to_string()) + .collect::>(); let buf_cell = wasi_try!(buf.deref(memory)); // find the inode by traversing the path let mut inode = root_dir.inode; - 'outer: for segment in path_vec { + 'outer: for segment in &path_vec[..(path_vec.len() - 1)] { // loop to traverse symlinks // TODO: proper cycle detection let mut sym_count = 0; loop { match &state.fs.inodes[inode].kind { Kind::Dir { entries, .. } => { - if let Some(entry) = entries.get(&segment) { + if let Some(entry) = entries.get(segment) { inode = entry.clone(); continue 'outer; } else { @@ -1062,7 +1116,44 @@ pub fn path_filestat_get( } } - let stat = state.fs.inodes[inode].stat; + let final_inode = match &state.fs.inodes[inode].kind { + Kind::Dir { entries, .. } => { + // TODO: fail earlier if size 0 + let last_segment = path_vec.last().unwrap(); + if entries.contains_key(last_segment) { + entries[last_segment] + } else { + // lazily load it if we can + // TODO: adjust to directory correctly + + // HACK(mark): assumes current directory, cumulative dir should be built up in previous loop + let real_open_file = wasi_try!(std::fs::OpenOptions::new() + .read(true) + .write(true) + .open(&last_segment) + .map_err(|_| __WASI_ENOENT)); + + let new_inode = state.fs.inodes.insert(InodeVal { + stat: __wasi_filestat_t::default(), + is_preopened: false, // is this correct? + name: last_segment.clone(), + kind: Kind::File { + handle: WasiFile::HostFile(real_open_file), + }, + }); + // reborrow to insert entry + if let Kind::Dir { entries, .. } = &mut state.fs.inodes[inode].kind { + entries.insert(last_segment.clone(), new_inode); + } + new_inode + } + } + _ => { + return __WASI_ENOTDIR; + } + }; + + let stat = state.fs.inodes[final_inode].stat; buf_cell.set(stat); From 1d555301f7d86fb5ee75b17a588a92f4a851a5ca Mon Sep 17 00:00:00 2001 From: Ivan Enderlin Date: Fri, 10 May 2019 15:55:02 +0200 Subject: [PATCH 402/413] feat(runtime-c-api) Check buffer size before creating the slice. It's safer to check the buffer size is large enough to hold the error message before creating the slice from raw parts. Also, this patch remove the need for `last_error`, simplifying the code a little bit. The `length` variable is casted to `usize` once. --- lib/runtime-c-api/src/error.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/runtime-c-api/src/error.rs b/lib/runtime-c-api/src/error.rs index 5980c79a9..fda6c77b3 100644 --- a/lib/runtime-c-api/src/error.rs +++ b/lib/runtime-c-api/src/error.rs @@ -61,20 +61,20 @@ pub unsafe extern "C" fn wasmer_last_error_message(buffer: *mut c_char, length: return -1; } - let last_error = match take_last_error() { - Some(err) => err, + let error_message = match take_last_error() { + Some(err) => err.to_string(), None => return 0, }; - let error_message = last_error.to_string(); + let length = length as usize; - let buffer = slice::from_raw_parts_mut(buffer as *mut u8, length as usize); - - if error_message.len() >= buffer.len() { - // buffer to small for err message + if error_message.len() >= length { + // buffer to small to hold the error message return -1; } + let buffer = slice::from_raw_parts_mut(buffer as *mut u8, length); + ptr::copy_nonoverlapping( error_message.as_ptr(), buffer.as_mut_ptr(), From 7d2721ef7a5d08c83487c43dc514e6e01ad04897 Mon Sep 17 00:00:00 2001 From: Ivan Enderlin Date: Fri, 10 May 2019 16:00:13 +0200 Subject: [PATCH 403/413] fix(runtime-c-api) `wasmer_last_error_message` returns the length + 1. Returning the error message's length + 1 mimics the `wasmer_last_error_length` function that counts the trailing null byte. --- lib/runtime-c-api/src/error.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/runtime-c-api/src/error.rs b/lib/runtime-c-api/src/error.rs index fda6c77b3..0a578f9e2 100644 --- a/lib/runtime-c-api/src/error.rs +++ b/lib/runtime-c-api/src/error.rs @@ -85,7 +85,7 @@ pub unsafe extern "C" fn wasmer_last_error_message(buffer: *mut c_char, length: // accidentally read into garbage. buffer[error_message.len()] = 0; - error_message.len() as c_int + error_message.len() as c_int + 1 } #[derive(Debug)] From a527154c62166b4b9168572208f4f0f8bc2641de Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 10 May 2019 10:54:36 -0700 Subject: [PATCH 404/413] major improvements to wasi fs calls; include explanation in unimpl!s --- lib/wasi/src/syscalls/mod.rs | 153 ++++++++++++++++++++++++----------- 1 file changed, 107 insertions(+), 46 deletions(-) diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index dcddeedd9..3fce35916 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -279,7 +279,7 @@ pub fn fd_allocate( len: __wasi_filesize_t, ) -> __wasi_errno_t { debug!("wasi::fd_allocate"); - unimplemented!() + unimplemented!("wasi::fd_allocate") } /// ### `fd_close()` @@ -434,7 +434,7 @@ pub fn fd_filestat_set_size( st_size: __wasi_filesize_t, ) -> __wasi_errno_t { debug!("wasi::fd_filestat_set_size"); - unimplemented!() + unimplemented!("wasi::fd_filestat_set_size") } /// ### `fd_filestat_set_times()` @@ -474,14 +474,14 @@ pub fn fd_filestat_set_times( inode.stat.st_atim = st_atim; } else if fst_flags & __WASI_FILESTAT_SET_ATIM_NOW != 0 { // set to current real time - unimplemented!(); + unimplemented!("Set filestat time to the current real time"); } if fst_flags & __WASI_FILESTAT_SET_MTIM != 0 { inode.stat.st_mtim = st_mtim; } else if fst_flags & __WASI_FILESTAT_SET_MTIM_NOW != 0 { // set to current real time - unimplemented!(); + unimplemented!("Set filestat time to the current real time"); } __WASI_ESUCCESS @@ -501,7 +501,7 @@ pub fn fd_pread( let iov_cells = wasi_try!(iovs.deref(memory, 0, iovs_len)); let nread_cell = wasi_try!(nread.deref(memory)); - unimplemented!(); + unimplemented!("wasi::fd_pread"); __WASI_ESUCCESS } @@ -637,7 +637,7 @@ pub fn fd_pwrite( // TODO: verify return __WASI_EISDIR; } - Kind::Symlink { .. } => unimplemented!(), + Kind::Symlink { .. } => unimplemented!("Symlinks in wasi::fd_pwrite"), Kind::Buffer { buffer } => wasi_try!(write_bytes( &mut buffer[(offset as usize)..], memory, @@ -725,7 +725,7 @@ pub fn fd_read( // TODO: verify return __WASI_EISDIR; } - Kind::Symlink { .. } => unimplemented!(), + Kind::Symlink { .. } => unimplemented!("Symlinks in wasi::fd_read"), Kind::Buffer { buffer } => { wasi_try!(read_bytes(&buffer[offset..], memory, iovs_arr_cell)) } @@ -771,7 +771,7 @@ pub fn fd_readdir( if let (Ok(buf_arr_cell), Ok(bufused_cell)) = (buf.deref(memory, 0, buf_len), bufused.deref(memory)) { - unimplemented!() + unimplemented!("wasi::fd_readdir") } else { __WASI_EFAULT } @@ -833,7 +833,7 @@ pub fn fd_seek( // TODO: handle case if fd is a dir? match whence { __WASI_WHENCE_CUR => fd_entry.offset = (fd_entry.offset as i64 + offset) as u64, - __WASI_WHENCE_END => unimplemented!(), + __WASI_WHENCE_END => unimplemented!("__WASI__WHENCE_END in wasi::fd_seek"), __WASI_WHENCE_SET => fd_entry.offset = offset as u64, _ => return __WASI_EINVAL, } @@ -855,7 +855,7 @@ pub fn fd_seek( pub fn fd_sync(ctx: &mut Ctx, fd: __wasi_fd_t) -> __wasi_errno_t { debug!("wasi::fd_sync"); // TODO: check __WASI_RIGHT_FD_SYNC - unimplemented!() + unimplemented!("wasi::fd_sync") } /// ### `fd_tell()` @@ -950,7 +950,7 @@ pub fn fd_write( // TODO: verify return __WASI_EISDIR; } - Kind::Symlink { .. } => unimplemented!(), + Kind::Symlink { .. } => unimplemented!("Symlinks in wasi::fd_write"), Kind::Buffer { buffer } => { wasi_try!(write_bytes(&mut buffer[offset..], memory, iovs_arr_cell)) } @@ -1018,10 +1018,12 @@ pub fn path_create_directory( assert!( path_vec.len() == 1, - "path_create_directory for paths greater than depth 1 has not been implemented" + "path_create_directory for paths greater than depth 1 has not been implemented because our WASI FS abstractions are a work in progress. We apologize for the inconvenience" ); debug!("Path vec: {:#?}", path_vec); + wasi_try!(std::fs::create_dir(&path).map_err(|_| __WASI_EIO)); + let kind = Kind::Dir { //parent: Some(working_dir.inode), path: path.clone(), @@ -1080,12 +1082,19 @@ pub fn path_filestat_get( }) .map_err(|_| __WASI_EINVAL)); debug!("=> path: {}", &path_string); - let path_vec = path_string - .split('/') - .map(|str| str.to_string()) + let path = std::path::PathBuf::from(path_string); + let path_vec = path + .components() + .map(|comp| comp.as_os_str().to_string_lossy().to_string()) .collect::>(); let buf_cell = wasi_try!(buf.deref(memory)); + if path_vec.is_empty() { + return __WASI_EINVAL; + } + let mut cumulative_path = std::path::PathBuf::new(); + + debug!("=> Path vec: {:?}:", &path_vec); // find the inode by traversing the path let mut inode = root_dir.inode; 'outer: for segment in &path_vec[..(path_vec.len() - 1)] { @@ -1095,14 +1104,47 @@ pub fn path_filestat_get( loop { match &state.fs.inodes[inode].kind { Kind::Dir { entries, .. } => { + cumulative_path.push(&segment); if let Some(entry) = entries.get(segment) { + debug!("Entry {:?} found", &segment); inode = entry.clone(); - continue 'outer; } else { - return __WASI_ENOENT; + // lazily load + debug!("Lazily loading entry {:?}", &segment); + debug!("EEE"); + let path_metadata = + wasi_try!(cumulative_path.metadata().map_err(|_| __WASI_ENOENT)); + debug!("DDD"); + if !path_metadata.is_dir() { + // TODO: should this just return invalid arg? + return __WASI_ENOTDIR; + } + debug!("AAA"); + let kind = Kind::Dir { + path: std::path::PathBuf::from(&segment), + entries: Default::default(), + }; + let inode_val = InodeVal::from_file_metadata( + &path_metadata, + segment.clone(), + false, + kind, + ); + let new_inode = state.fs.inodes.insert(inode_val); + let inode_idx = state.fs.inode_counter.get(); + state.fs.inode_counter.replace(inode_idx + 1); + if let Kind::Dir { entries, .. } = &mut state.fs.inodes[inode].kind { + // check that we're not displacing any entries + assert!(entries.insert(segment.clone(), new_inode).is_none()); + state.fs.inodes[new_inode].stat.st_ino = state.fs.inode_counter.get(); + inode = new_inode; + } + debug!("Directory {:#?} lazily loaded", &cumulative_path); } + continue 'outer; } Kind::Symlink { forwarded } => { + // TODO: updated cumulative path sym_count += 1; inode = forwarded.clone(); if sym_count > MAX_SYMLINKS { @@ -1117,30 +1159,48 @@ pub fn path_filestat_get( } let final_inode = match &state.fs.inodes[inode].kind { - Kind::Dir { entries, .. } => { + Kind::Dir { path, entries, .. } => { // TODO: fail earlier if size 0 let last_segment = path_vec.last().unwrap(); + cumulative_path.push(last_segment); + if entries.contains_key(last_segment) { entries[last_segment] } else { // lazily load it if we can - // TODO: adjust to directory correctly + if !cumulative_path.exists() { + return __WASI_ENOENT; + } + let final_path_metadata = + wasi_try!(cumulative_path.metadata().map_err(|_| __WASI_EIO)); + let new_inode = if final_path_metadata.is_dir() { + debug!("Opening host directory {:#?}", &cumulative_path); + state.fs.inodes.insert(InodeVal { + stat: __wasi_filestat_t::default(), + is_preopened: false, // is this correct? + name: last_segment.clone(), + kind: Kind::Dir { + path: std::path::PathBuf::from(&last_segment), + entries: Default::default(), + }, + }) + } else { + debug!("Opening host file {:#?}", &cumulative_path); + let real_open_file = wasi_try!(std::fs::OpenOptions::new() + .read(true) + .write(true) + .open(&cumulative_path) + .map_err(|_| __WASI_ENOENT)); - // HACK(mark): assumes current directory, cumulative dir should be built up in previous loop - let real_open_file = wasi_try!(std::fs::OpenOptions::new() - .read(true) - .write(true) - .open(&last_segment) - .map_err(|_| __WASI_ENOENT)); - - let new_inode = state.fs.inodes.insert(InodeVal { - stat: __wasi_filestat_t::default(), - is_preopened: false, // is this correct? - name: last_segment.clone(), - kind: Kind::File { - handle: WasiFile::HostFile(real_open_file), - }, - }); + state.fs.inodes.insert(InodeVal { + stat: __wasi_filestat_t::default(), + is_preopened: false, // is this correct? + name: last_segment.clone(), + kind: Kind::File { + handle: WasiFile::HostFile(real_open_file), + }, + }) + }; // reborrow to insert entry if let Kind::Dir { entries, .. } = &mut state.fs.inodes[inode].kind { entries.insert(last_segment.clone(), new_inode); @@ -1188,7 +1248,7 @@ pub fn path_filestat_set_times( fst_flags: __wasi_fstflags_t, ) -> __wasi_errno_t { debug!("wasi::path_filestat_set_times"); - unimplemented!() + unimplemented!("wasi::path_filestat_set_times") } /// ### `path_link()` @@ -1219,7 +1279,7 @@ pub fn path_link( new_path_len: u32, ) -> __wasi_errno_t { debug!("wasi::path_link"); - unimplemented!() + unimplemented!("wasi::path_link") } /// ### `path_open()` @@ -1312,6 +1372,7 @@ pub fn path_open( match &state.fs.inodes[cur_dir_inode].kind { Kind::Dir { entries, .. } => { if let Some(child) = entries.get(path_segment) { + cumulative_path.push(path_segment); let inode_val = *child; cur_dir_inode = inode_val; } else { @@ -1467,7 +1528,7 @@ pub fn path_readlink( bufused: WasmPtr, ) -> __wasi_errno_t { debug!("wasi::path_readlink"); - unimplemented!() + unimplemented!("wasi::path_readlink") } pub fn path_remove_directory( ctx: &mut Ctx, @@ -1476,7 +1537,7 @@ pub fn path_remove_directory( path_len: u32, ) -> __wasi_errno_t { debug!("wasi::path_remove_directory"); - unimplemented!() + unimplemented!("wasi::path_remove_directory") } pub fn path_rename( ctx: &mut Ctx, @@ -1488,7 +1549,7 @@ pub fn path_rename( new_path_len: u32, ) -> __wasi_errno_t { debug!("wasi::path_rename"); - unimplemented!() + unimplemented!("wasi::path_rename") } pub fn path_symlink( ctx: &mut Ctx, @@ -1499,7 +1560,7 @@ pub fn path_symlink( new_path_len: u32, ) -> __wasi_errno_t { debug!("wasi::path_symlink"); - unimplemented!() + unimplemented!("wasi::path_symlink") } pub fn path_unlink_file( ctx: &mut Ctx, @@ -1508,7 +1569,7 @@ pub fn path_unlink_file( path_len: u32, ) -> __wasi_errno_t { debug!("wasi::path_unlink_file"); - unimplemented!() + unimplemented!("wasi::path_unlink_file") } pub fn poll_oneoff( ctx: &mut Ctx, @@ -1518,7 +1579,7 @@ pub fn poll_oneoff( nevents: WasmPtr, ) -> __wasi_errno_t { debug!("wasi::poll_oneoff"); - unimplemented!() + unimplemented!("wasi::poll_oneoff") } pub fn proc_exit(ctx: &mut Ctx, code: __wasi_exitcode_t) -> Result { debug!("wasi::proc_exit, {}", code); @@ -1526,7 +1587,7 @@ pub fn proc_exit(ctx: &mut Ctx, code: __wasi_exitcode_t) -> Result __wasi_errno_t { debug!("wasi::proc_raise"); - unimplemented!() + unimplemented!("wasi::proc_raise") } /// ### `random_get()` @@ -1569,7 +1630,7 @@ pub fn sock_recv( ro_flags: WasmPtr<__wasi_roflags_t>, ) -> __wasi_errno_t { debug!("wasi::sock_recv"); - unimplemented!() + unimplemented!("wasi::sock_recv") } pub fn sock_send( ctx: &mut Ctx, @@ -1580,9 +1641,9 @@ pub fn sock_send( so_datalen: WasmPtr, ) -> __wasi_errno_t { debug!("wasi::sock_send"); - unimplemented!() + unimplemented!("wasi::sock_send") } pub fn sock_shutdown(ctx: &mut Ctx, sock: __wasi_fd_t, how: __wasi_sdflags_t) -> __wasi_errno_t { debug!("wasi::sock_shutdown"); - unimplemented!() + unimplemented!("wasi::sock_shutdown") } From 02f3349cb143abad8d67ad15017e5d26834eb5f1 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 10 May 2019 10:58:06 -0700 Subject: [PATCH 405/413] clean up, update changelog --- CHANGELOG.md | 1 + lib/wasi/src/syscalls/mod.rs | 3 --- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b3f831313..3e759f960 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ Blocks of changes will separated by version increments. ## **[Unreleased]** +- [#429](https://github.com/wasmerio/wasmer/pull/429) Get wasi::path_filestat_get working for some programs; misc. minor WASI FS improvements - [#413](https://github.com/wasmerio/wasmer/pull/413) Update LLVM backend to use new parser codegen traits ## 0.4.1 - 2018-05-06 diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index 3fce35916..0389273fc 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -1111,15 +1111,12 @@ pub fn path_filestat_get( } else { // lazily load debug!("Lazily loading entry {:?}", &segment); - debug!("EEE"); let path_metadata = wasi_try!(cumulative_path.metadata().map_err(|_| __WASI_ENOENT)); - debug!("DDD"); if !path_metadata.is_dir() { // TODO: should this just return invalid arg? return __WASI_ENOTDIR; } - debug!("AAA"); let kind = Kind::Dir { path: std::path::PathBuf::from(&segment), entries: Default::default(), From 85158ac22ade7538fc7fc98897438234a96b39b7 Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Thu, 9 May 2019 19:53:23 -0500 Subject: [PATCH 406/413] Add some initial deny for unused_imports and unused_variables Additional unused variable fix on unix Remove unused import on unix Remove unused windows import --- lib/clif-backend/src/lib.rs | 2 ++ lib/emscripten/src/lib.rs | 2 ++ lib/emscripten/src/syscalls/unix.rs | 3 ++- lib/llvm-backend/src/lib.rs | 1 + lib/llvm-backend/src/platform/unix.rs | 2 +- lib/middleware-common/src/call_trace.rs | 2 +- lib/middleware-common/src/lib.rs | 2 ++ lib/runtime-abi/src/lib.rs | 2 ++ lib/runtime-c-api/src/lib.rs | 2 ++ lib/runtime-core/src/codegen.rs | 2 +- lib/runtime-core/src/lib.rs | 1 + lib/runtime/src/lib.rs | 2 ++ lib/singlepass-backend/src/codegen_x64.rs | 4 ++-- lib/singlepass-backend/src/lib.rs | 1 + lib/wasi/src/lib.rs | 2 ++ lib/win-exception-handler/src/exception_handling.rs | 1 - lib/win-exception-handler/src/lib.rs | 2 ++ src/bin/wasmer.rs | 2 ++ src/lib.rs | 2 ++ 19 files changed, 30 insertions(+), 7 deletions(-) diff --git a/lib/clif-backend/src/lib.rs b/lib/clif-backend/src/lib.rs index d09da6812..639249c34 100644 --- a/lib/clif-backend/src/lib.rs +++ b/lib/clif-backend/src/lib.rs @@ -1,3 +1,5 @@ +#![deny(unused_imports, unused_variables)] + mod cache; mod func_env; mod libcalls; diff --git a/lib/emscripten/src/lib.rs b/lib/emscripten/src/lib.rs index 54cbad632..e996fe58b 100644 --- a/lib/emscripten/src/lib.rs +++ b/lib/emscripten/src/lib.rs @@ -1,3 +1,5 @@ +#![deny(unused_imports, unused_variables)] + #[macro_use] extern crate wasmer_runtime_core; diff --git a/lib/emscripten/src/syscalls/unix.rs b/lib/emscripten/src/syscalls/unix.rs index a66cf3097..ec8b98f3f 100644 --- a/lib/emscripten/src/syscalls/unix.rs +++ b/lib/emscripten/src/syscalls/unix.rs @@ -1,4 +1,6 @@ use crate::varargs::VarArgs; +#[cfg(target_os = "macos")] +use libc::size_t; /// NOTE: TODO: These syscalls only support wasm_32 for now because they assume offsets are u32 /// Syscall list: https://www.cs.utexas.edu/~bismith/test/syscalls/syscalls32.html use libc::{ @@ -53,7 +55,6 @@ use libc::{ sendto, setpgid, setsockopt, - size_t, sockaddr, socket, socklen_t, diff --git a/lib/llvm-backend/src/lib.rs b/lib/llvm-backend/src/lib.rs index 1d9a030e6..c8bc50318 100644 --- a/lib/llvm-backend/src/lib.rs +++ b/lib/llvm-backend/src/lib.rs @@ -1,3 +1,4 @@ +#![deny(unused_imports, unused_variables)] #![cfg_attr(nightly, feature(unwind_attributes))] mod backend; diff --git a/lib/llvm-backend/src/platform/unix.rs b/lib/llvm-backend/src/platform/unix.rs index 12894f6bc..d16384179 100644 --- a/lib/llvm-backend/src/platform/unix.rs +++ b/lib/llvm-backend/src/platform/unix.rs @@ -34,7 +34,7 @@ pub unsafe fn visit_fde(addr: *mut u8, size: usize, visitor: extern "C" fn(*mut } #[cfg(not(target_os = "macos"))] -pub unsafe fn visit_fde(addr: *mut u8, size: usize, visitor: extern "C" fn(*mut u8)) { +pub unsafe fn visit_fde(addr: *mut u8, _size: usize, visitor: extern "C" fn(*mut u8)) { visitor(addr); } diff --git a/lib/middleware-common/src/call_trace.rs b/lib/middleware-common/src/call_trace.rs index 3f856eacd..9c47d7d7b 100644 --- a/lib/middleware-common/src/call_trace.rs +++ b/lib/middleware-common/src/call_trace.rs @@ -10,7 +10,7 @@ impl FunctionMiddleware for CallTrace { fn feed_event<'a, 'b: 'a>( &mut self, op: Event<'a, 'b>, - module_info: &ModuleInfo, + _module_info: &ModuleInfo, sink: &mut EventSink<'a, 'b>, ) -> Result<(), Self::Error> { match op { diff --git a/lib/middleware-common/src/lib.rs b/lib/middleware-common/src/lib.rs index 10c8dfd37..83b1ee35d 100644 --- a/lib/middleware-common/src/lib.rs +++ b/lib/middleware-common/src/lib.rs @@ -1 +1,3 @@ +#![deny(unused_imports, unused_variables)] + pub mod call_trace; diff --git a/lib/runtime-abi/src/lib.rs b/lib/runtime-abi/src/lib.rs index 2f0ee8c51..f4b51b1f0 100644 --- a/lib/runtime-abi/src/lib.rs +++ b/lib/runtime-abi/src/lib.rs @@ -1,3 +1,5 @@ +#![deny(unused_imports, unused_variables)] + #[cfg(not(target_os = "windows"))] #[macro_use] extern crate failure; diff --git a/lib/runtime-c-api/src/lib.rs b/lib/runtime-c-api/src/lib.rs index aa6455f60..6a26d6027 100644 --- a/lib/runtime-c-api/src/lib.rs +++ b/lib/runtime-c-api/src/lib.rs @@ -1,3 +1,5 @@ +#![deny(unused_imports, unused_variables)] + extern crate wasmer_runtime; extern crate wasmer_runtime_core; diff --git a/lib/runtime-core/src/codegen.rs b/lib/runtime-core/src/codegen.rs index 2ba85863c..296d1a740 100644 --- a/lib/runtime-core/src/codegen.rs +++ b/lib/runtime-core/src/codegen.rs @@ -1,6 +1,6 @@ use crate::{ backend::RunnableModule, - backend::{sys::Memory, Backend, CacheGen, Compiler, CompilerConfig, Token}, + backend::{Backend, CacheGen, Compiler, CompilerConfig, Token}, cache::{Artifact, Error as CacheError}, error::{CompileError, CompileResult}, module::{ModuleInfo, ModuleInner}, diff --git a/lib/runtime-core/src/lib.rs b/lib/runtime-core/src/lib.rs index 46c435db5..2a0cca431 100644 --- a/lib/runtime-core/src/lib.rs +++ b/lib/runtime-core/src/lib.rs @@ -1,3 +1,4 @@ +#![deny(unused_imports, unused_variables)] #![cfg_attr(nightly, feature(unwind_attributes))] #[cfg(test)] diff --git a/lib/runtime/src/lib.rs b/lib/runtime/src/lib.rs index 1836bb206..ba7f4440b 100644 --- a/lib/runtime/src/lib.rs +++ b/lib/runtime/src/lib.rs @@ -1,3 +1,5 @@ +#![deny(unused_imports, unused_variables)] + //! Wasmer-runtime is a library that makes embedding WebAssembly //! in your application easy, efficient, and safe. //! diff --git a/lib/singlepass-backend/src/codegen_x64.rs b/lib/singlepass-backend/src/codegen_x64.rs index 22687cd9f..f7868bc53 100644 --- a/lib/singlepass-backend/src/codegen_x64.rs +++ b/lib/singlepass-backend/src/codegen_x64.rs @@ -478,7 +478,7 @@ impl ModuleCodeGenerator Ok(()) } - unsafe fn from_cache(artifact: Artifact, _: Token) -> Result { + unsafe fn from_cache(_artifact: Artifact, _: Token) -> Result { Err(CacheError::Unknown( "the singlepass compiler API doesn't support caching yet".to_string(), )) @@ -1409,7 +1409,7 @@ impl FunctionCodeGenerator for X64FunctionCode { Ok(()) } - fn begin_body(&mut self, module_info: &ModuleInfo) -> Result<(), CodegenError> { + fn begin_body(&mut self, _module_info: &ModuleInfo) -> Result<(), CodegenError> { let a = self.assembler.as_mut().unwrap(); a.emit_push(Size::S64, Location::GPR(GPR::RBP)); a.emit_mov(Size::S64, Location::GPR(GPR::RSP), Location::GPR(GPR::RBP)); diff --git a/lib/singlepass-backend/src/lib.rs b/lib/singlepass-backend/src/lib.rs index 08d977487..eec02cbfd 100644 --- a/lib/singlepass-backend/src/lib.rs +++ b/lib/singlepass-backend/src/lib.rs @@ -1,3 +1,4 @@ +#![deny(unused_imports, unused_variables)] #![feature(proc_macro_hygiene)] #[cfg(not(any( diff --git a/lib/wasi/src/lib.rs b/lib/wasi/src/lib.rs index 82de5ad1f..241cc607c 100644 --- a/lib/wasi/src/lib.rs +++ b/lib/wasi/src/lib.rs @@ -1,3 +1,5 @@ +#![deny(unused_imports, unused_variables)] + #[macro_use] extern crate log; diff --git a/lib/win-exception-handler/src/exception_handling.rs b/lib/win-exception-handler/src/exception_handling.rs index ea36333ab..c448392b0 100644 --- a/lib/win-exception-handler/src/exception_handling.rs +++ b/lib/win-exception-handler/src/exception_handling.rs @@ -1,4 +1,3 @@ -use std::ffi::c_void; use std::ptr::NonNull; use wasmer_runtime_core::vm::{Ctx, Func}; diff --git a/lib/win-exception-handler/src/lib.rs b/lib/win-exception-handler/src/lib.rs index bc4a142b5..dfb95d0e1 100644 --- a/lib/win-exception-handler/src/lib.rs +++ b/lib/win-exception-handler/src/lib.rs @@ -1,3 +1,5 @@ +#![deny(unused_imports, unused_variables)] + #[cfg(windows)] mod exception_handling; diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index 7760cc399..cd36651a5 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -1,3 +1,5 @@ +#![deny(unused_imports, unused_variables)] + extern crate structopt; use std::env; diff --git a/src/lib.rs b/src/lib.rs index 25af8304f..9105e278e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,3 +1,5 @@ +#![deny(unused_imports, unused_variables)] + #[macro_use] extern crate wasmer_runtime_core; // extern crate wasmer_emscripten; From a96d5cb975c48111580d88c0b599dad8d4917c5d Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Sat, 11 May 2019 19:26:17 -0500 Subject: [PATCH 407/413] Fix f32/f64 conversion, add tests, and rename conversion method --- lib/runtime-core/src/typed_func.rs | 8 +-- lib/runtime-core/src/types.rs | 83 +++++++++++++++++++++++++----- 2 files changed, 73 insertions(+), 18 deletions(-) diff --git a/lib/runtime-core/src/typed_func.rs b/lib/runtime-core/src/typed_func.rs index 23a848738..0a9bc8c2f 100644 --- a/lib/runtime-core/src/typed_func.rs +++ b/lib/runtime-core/src/typed_func.rs @@ -247,7 +247,7 @@ impl WasmTypeList for (A,) { type CStruct = S1; type RetArray = [u64; 1]; fn from_ret_array(array: Self::RetArray) -> Self { - (WasmExternType::from_native(NativeWasmType::from_bits( + (WasmExternType::from_native(NativeWasmType::from_binary( array[0], )),) } @@ -274,7 +274,7 @@ impl WasmTypeList for (A,) { ctx: *mut Ctx, ) -> Result { let (a,) = self; - let args = [a.to_native().to_bits()]; + let args = [a.to_native().to_binary()]; let mut rets = Rets::empty_ret_array(); let mut trap = WasmTrapInfo::Unknown; let mut user_error = None; @@ -322,7 +322,7 @@ macro_rules! impl_traits { fn from_ret_array(array: Self::RetArray) -> Self { #[allow(non_snake_case)] let [ $( $x ),* ] = array; - ( $( WasmExternType::from_native(NativeWasmType::from_bits($x)) ),* ) + ( $( WasmExternType::from_native(NativeWasmType::from_binary($x)) ),* ) } fn empty_ret_array() -> Self::RetArray { [0; count_idents!( $( $x ),* )] @@ -344,7 +344,7 @@ macro_rules! impl_traits { unsafe fn call(self, f: NonNull, wasm: Wasm, ctx: *mut Ctx) -> Result { #[allow(unused_parens)] let ( $( $x ),* ) = self; - let args = [ $( $x.to_native().to_bits() ),* ]; + let args = [ $( $x.to_native().to_binary()),* ]; let mut rets = Rets::empty_ret_array(); let mut trap = WasmTrapInfo::Unknown; let mut user_error = None; diff --git a/lib/runtime-core/src/types.rs b/lib/runtime-core/src/types.rs index 23a1c8379..975b5cfba 100644 --- a/lib/runtime-core/src/types.rs +++ b/lib/runtime-core/src/types.rs @@ -76,44 +76,44 @@ where Self: Sized, { const TYPE: Type; - fn from_bits(bits: u64) -> Self; - fn to_bits(self) -> u64; + fn from_binary(bits: u64) -> Self; + fn to_binary(self) -> u64; } unsafe impl NativeWasmType for i32 { const TYPE: Type = Type::I32; - fn from_bits(bits: u64) -> Self { + fn from_binary(bits: u64) -> Self { bits as _ } - fn to_bits(self) -> u64 { + fn to_binary(self) -> u64 { self as _ } } unsafe impl NativeWasmType for i64 { const TYPE: Type = Type::I64; - fn from_bits(bits: u64) -> Self { + fn from_binary(bits: u64) -> Self { bits as _ } - fn to_bits(self) -> u64 { + fn to_binary(self) -> u64 { self as _ } } unsafe impl NativeWasmType for f32 { const TYPE: Type = Type::F32; - fn from_bits(bits: u64) -> Self { - bits as _ + fn from_binary(bits: u64) -> Self { + f32::from_bits(bits as u32) } - fn to_bits(self) -> u64 { - self as _ + fn to_binary(self) -> u64 { + self.to_bits() as _ } } unsafe impl NativeWasmType for f64 { const TYPE: Type = Type::F64; - fn from_bits(bits: u64) -> Self { - bits as _ + fn from_binary(bits: u64) -> Self { + f64::from_bits(bits) } - fn to_bits(self) -> u64 { - self as _ + fn to_binary(self) -> u64 { + self.to_bits() } } @@ -516,3 +516,58 @@ where } } } + +#[cfg(test)] +mod tests { + use crate::types::NativeWasmType; + use crate::types::WasmExternType; + + #[test] + fn test_native_types_round_trip() { + assert_eq!( + 42i32, + i32::from_native(i32::from_binary((42i32).to_native().to_binary())) + ); + + assert_eq!( + -42i32, + i32::from_native(i32::from_binary((-42i32).to_native().to_binary())) + ); + + use std::i64; + let xi64 = i64::MAX; + assert_eq!( + xi64, + i64::from_native(i64::from_binary((xi64).to_native().to_binary())) + ); + let yi64 = i64::MIN; + assert_eq!( + yi64, + i64::from_native(i64::from_binary((yi64).to_native().to_binary())) + ); + + assert_eq!( + 16.5f32, + f32::from_native(f32::from_binary((16.5f32).to_native().to_binary())) + ); + + assert_eq!( + -16.5f32, + f32::from_native(f32::from_binary((-16.5f32).to_native().to_binary())) + ); + + use std::f64; + let xf64: f64 = f64::MAX; + assert_eq!( + xf64, + f64::from_native(f64::from_binary((xf64).to_native().to_binary())) + ); + + let yf64: f64 = f64::MIN; + assert_eq!( + yf64, + f64::from_native(f64::from_binary((yf64).to_native().to_binary())) + ); + } + +} From 2aefa731a66616781f0632d756f1f68c9df831e5 Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Sun, 12 May 2019 00:33:02 -0500 Subject: [PATCH 408/413] Add deny for unreachable patterns and unused unsafe --- lib/clif-backend/src/lib.rs | 2 +- lib/emscripten/src/lib.rs | 2 +- lib/llvm-backend/src/lib.rs | 2 +- lib/middleware-common/src/lib.rs | 2 +- lib/runtime-abi/src/lib.rs | 2 +- lib/runtime-c-api/src/lib.rs | 2 +- lib/runtime-core/src/codegen.rs | 1 - lib/runtime-core/src/lib.rs | 2 +- lib/runtime/src/lib.rs | 2 +- lib/singlepass-backend/src/codegen_x64.rs | 8 ++++---- lib/singlepass-backend/src/lib.rs | 2 +- lib/wasi/src/lib.rs | 2 +- lib/win-exception-handler/src/lib.rs | 2 +- src/bin/wasmer.rs | 2 +- src/lib.rs | 2 +- 15 files changed, 17 insertions(+), 18 deletions(-) diff --git a/lib/clif-backend/src/lib.rs b/lib/clif-backend/src/lib.rs index 639249c34..50fbe5dbf 100644 --- a/lib/clif-backend/src/lib.rs +++ b/lib/clif-backend/src/lib.rs @@ -1,4 +1,4 @@ -#![deny(unused_imports, unused_variables)] +#![deny(unused_imports, unused_variables, unused_unsafe, unreachable_patterns)] mod cache; mod func_env; diff --git a/lib/emscripten/src/lib.rs b/lib/emscripten/src/lib.rs index e996fe58b..6b0340513 100644 --- a/lib/emscripten/src/lib.rs +++ b/lib/emscripten/src/lib.rs @@ -1,4 +1,4 @@ -#![deny(unused_imports, unused_variables)] +#![deny(unused_imports, unused_variables, unused_unsafe, unreachable_patterns)] #[macro_use] extern crate wasmer_runtime_core; diff --git a/lib/llvm-backend/src/lib.rs b/lib/llvm-backend/src/lib.rs index c8bc50318..6d8816af8 100644 --- a/lib/llvm-backend/src/lib.rs +++ b/lib/llvm-backend/src/lib.rs @@ -1,4 +1,4 @@ -#![deny(unused_imports, unused_variables)] +#![deny(unused_imports, unused_variables, unused_unsafe, unreachable_patterns)] #![cfg_attr(nightly, feature(unwind_attributes))] mod backend; diff --git a/lib/middleware-common/src/lib.rs b/lib/middleware-common/src/lib.rs index 83b1ee35d..e09d9ee03 100644 --- a/lib/middleware-common/src/lib.rs +++ b/lib/middleware-common/src/lib.rs @@ -1,3 +1,3 @@ -#![deny(unused_imports, unused_variables)] +#![deny(unused_imports, unused_variables, unused_unsafe, unreachable_patterns)] pub mod call_trace; diff --git a/lib/runtime-abi/src/lib.rs b/lib/runtime-abi/src/lib.rs index f4b51b1f0..d1c9e2326 100644 --- a/lib/runtime-abi/src/lib.rs +++ b/lib/runtime-abi/src/lib.rs @@ -1,4 +1,4 @@ -#![deny(unused_imports, unused_variables)] +#![deny(unused_imports, unused_variables, unused_unsafe, unreachable_patterns)] #[cfg(not(target_os = "windows"))] #[macro_use] diff --git a/lib/runtime-c-api/src/lib.rs b/lib/runtime-c-api/src/lib.rs index 6a26d6027..f4d4cc2be 100644 --- a/lib/runtime-c-api/src/lib.rs +++ b/lib/runtime-c-api/src/lib.rs @@ -1,4 +1,4 @@ -#![deny(unused_imports, unused_variables)] +#![deny(unused_imports, unused_variables, unused_unsafe, unreachable_patterns)] extern crate wasmer_runtime; extern crate wasmer_runtime_core; diff --git a/lib/runtime-core/src/codegen.rs b/lib/runtime-core/src/codegen.rs index 296d1a740..b61ce58bb 100644 --- a/lib/runtime-core/src/codegen.rs +++ b/lib/runtime-core/src/codegen.rs @@ -35,7 +35,6 @@ impl fmt::Debug for InternalEvent { InternalEvent::Breakpoint(_) => write!(f, "Breakpoint"), InternalEvent::SetInternal(_) => write!(f, "SetInternal"), InternalEvent::GetInternal(_) => write!(f, "GetInternal"), - _ => panic!("unknown event"), } } } diff --git a/lib/runtime-core/src/lib.rs b/lib/runtime-core/src/lib.rs index 2a0cca431..da9144a2b 100644 --- a/lib/runtime-core/src/lib.rs +++ b/lib/runtime-core/src/lib.rs @@ -1,4 +1,4 @@ -#![deny(unused_imports, unused_variables)] +#![deny(unused_imports, unused_variables, unused_unsafe, unreachable_patterns)] #![cfg_attr(nightly, feature(unwind_attributes))] #[cfg(test)] diff --git a/lib/runtime/src/lib.rs b/lib/runtime/src/lib.rs index ba7f4440b..bfdf6c9f7 100644 --- a/lib/runtime/src/lib.rs +++ b/lib/runtime/src/lib.rs @@ -1,4 +1,4 @@ -#![deny(unused_imports, unused_variables)] +#![deny(unused_imports, unused_variables, unused_unsafe, unreachable_patterns)] //! Wasmer-runtime is a library that makes embedding WebAssembly //! in your application easy, efficient, and safe. diff --git a/lib/singlepass-backend/src/codegen_x64.rs b/lib/singlepass-backend/src/codegen_x64.rs index f7868bc53..9aa6c9151 100644 --- a/lib/singlepass-backend/src/codegen_x64.rs +++ b/lib/singlepass-backend/src/codegen_x64.rs @@ -212,10 +212,10 @@ impl RunnableModule for X64ExecutionContext { user_error: *mut Option>, num_params_plus_one: Option>, ) -> bool { - let rm: &Box = &unsafe { &*(*ctx).module }.runnable_module; - let execution_context = unsafe { - ::std::mem::transmute_copy::<&dyn RunnableModule, &X64ExecutionContext>(&&**rm) - }; + let rm: &Box = &(&*(*ctx).module).runnable_module; + let execution_context = + ::std::mem::transmute_copy::<&dyn RunnableModule, &X64ExecutionContext>(&&**rm); + let args = ::std::slice::from_raw_parts( args, num_params_plus_one.unwrap().as_ptr() as usize - 1, diff --git a/lib/singlepass-backend/src/lib.rs b/lib/singlepass-backend/src/lib.rs index eec02cbfd..f1011591d 100644 --- a/lib/singlepass-backend/src/lib.rs +++ b/lib/singlepass-backend/src/lib.rs @@ -1,4 +1,4 @@ -#![deny(unused_imports, unused_variables)] +#![deny(unused_imports, unused_variables, unused_unsafe, unreachable_patterns)] #![feature(proc_macro_hygiene)] #[cfg(not(any( diff --git a/lib/wasi/src/lib.rs b/lib/wasi/src/lib.rs index 241cc607c..86f9ceaac 100644 --- a/lib/wasi/src/lib.rs +++ b/lib/wasi/src/lib.rs @@ -1,4 +1,4 @@ -#![deny(unused_imports, unused_variables)] +#![deny(unused_imports, unused_variables, unused_unsafe, unreachable_patterns)] #[macro_use] extern crate log; diff --git a/lib/win-exception-handler/src/lib.rs b/lib/win-exception-handler/src/lib.rs index dfb95d0e1..5329e1cc0 100644 --- a/lib/win-exception-handler/src/lib.rs +++ b/lib/win-exception-handler/src/lib.rs @@ -1,4 +1,4 @@ -#![deny(unused_imports, unused_variables)] +#![deny(unused_imports, unused_variables, unused_unsafe, unreachable_patterns)] #[cfg(windows)] mod exception_handling; diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index cd36651a5..14386d1b1 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -1,4 +1,4 @@ -#![deny(unused_imports, unused_variables)] +#![deny(unused_imports, unused_variables, unused_unsafe, unreachable_patterns)] extern crate structopt; diff --git a/src/lib.rs b/src/lib.rs index 9105e278e..78d6dae28 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,4 +1,4 @@ -#![deny(unused_imports, unused_variables)] +#![deny(unused_imports, unused_variables, unused_unsafe, unreachable_patterns)] #[macro_use] extern crate wasmer_runtime_core; From bedd305b06166262bf8f976f1464571de84b65b9 Mon Sep 17 00:00:00 2001 From: Ivan Enderlin Date: Mon, 13 May 2019 10:52:43 +0200 Subject: [PATCH 409/413] doc(runtime-c-api) Fix inline comment. --- lib/runtime-c-api/src/error.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/runtime-c-api/src/error.rs b/lib/runtime-c-api/src/error.rs index 0a578f9e2..d5fcfe354 100644 --- a/lib/runtime-c-api/src/error.rs +++ b/lib/runtime-c-api/src/error.rs @@ -69,7 +69,7 @@ pub unsafe extern "C" fn wasmer_last_error_message(buffer: *mut c_char, length: let length = length as usize; if error_message.len() >= length { - // buffer to small to hold the error message + // buffer is too small to hold the error message return -1; } From 8c8586faaa204e647c3bd4f40cadf1aa4d405c35 Mon Sep 17 00:00:00 2001 From: Ivan Enderlin Date: Mon, 13 May 2019 10:52:55 +0200 Subject: [PATCH 410/413] test(runtime-c-api) Assert returned value from `wasmer_last_error_message`. --- lib/runtime-c-api/tests/test-instantiate.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/runtime-c-api/tests/test-instantiate.c b/lib/runtime-c-api/tests/test-instantiate.c index 20332623e..8a7c2610e 100644 --- a/lib/runtime-c-api/tests/test-instantiate.c +++ b/lib/runtime-c-api/tests/test-instantiate.c @@ -46,7 +46,8 @@ int main() int error_len = wasmer_last_error_length(); printf("Error len: `%d`\n", error_len); char *error_str = malloc(error_len); - wasmer_last_error_message(error_str, error_len); + int error_result = wasmer_last_error_message(error_str, error_len); + assert(error_len == error_result); printf("Error str: `%s`\n", error_str); assert(0 == strcmp(error_str, "Call error: Parameters of type [I32] did not match signature [I32, I32] -> [I32]")); free(error_str); From 216e0005b18a322bfca4aabed1dcb7b1a1e22827 Mon Sep 17 00:00:00 2001 From: Ivan Enderlin Date: Mon, 13 May 2019 10:57:32 +0200 Subject: [PATCH 411/413] chore(changelog) Add #432. --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b3f831313..ee26d1cf7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ Blocks of changes will separated by version increments. ## **[Unreleased]** +- [#432](https://github.com/wasmerio/wasmer/pull/432) Fix returned value of `wasmer_last_error_message` in the runtime C API - [#413](https://github.com/wasmerio/wasmer/pull/413) Update LLVM backend to use new parser codegen traits ## 0.4.1 - 2018-05-06 From 8218e550fcabc4b389855e0054e0ac9ffa42804f Mon Sep 17 00:00:00 2001 From: Syrus Date: Mon, 13 May 2019 11:18:57 -0700 Subject: [PATCH 412/413] Improved docs and fixed few typos --- lib/clif-backend/src/signal/unix.rs | 2 +- lib/runtime-core/src/backing.rs | 6 +++--- lib/runtime-core/src/error.rs | 6 +++--- lib/runtime-core/src/instance.rs | 8 ++++---- lib/runtime-core/src/memory/static_/unshared.rs | 2 +- lib/runtime-core/src/vm.rs | 6 +++--- lib/singlepass-backend/src/protect_unix.rs | 2 +- 7 files changed, 16 insertions(+), 16 deletions(-) diff --git a/lib/clif-backend/src/signal/unix.rs b/lib/clif-backend/src/signal/unix.rs index a56613384..2f12713fa 100644 --- a/lib/clif-backend/src/signal/unix.rs +++ b/lib/clif-backend/src/signal/unix.rs @@ -1,5 +1,5 @@ //! Installing signal handlers allows us to handle traps and out-of-bounds memory -//! accesses that occur when runniing webassembly. +//! accesses that occur when running WebAssembly. //! //! This code is inspired by: https://github.com/pepyakin/wasmtime/commit/625a2b6c0815b21996e111da51b9664feb174622 //! diff --git a/lib/runtime-core/src/backing.rs b/lib/runtime-core/src/backing.rs index 14fe41cbf..b3d529460 100644 --- a/lib/runtime-core/src/backing.rs +++ b/lib/runtime-core/src/backing.rs @@ -17,7 +17,7 @@ use crate::{ }; use std::slice; -/// The `LocalBacking` "owns" the memory used by all the local resources. +/// The `LocalBacking` "owns" the memory used by all the local resources of an Instance. /// That is, local memories, tables, and globals (as well as some additional /// data for the virtual call machinery). #[derive(Debug)] @@ -103,7 +103,7 @@ impl LocalBacking { memories.into_boxed_map() } - /// Initialize each local memory. + /// Initialize each locally-defined memory in the Module. /// /// This involves copying in the data initializers. fn finalize_memories( @@ -178,7 +178,7 @@ impl LocalBacking { tables.into_boxed_map() } - /// This initializes all of the local tables, e.g. + /// This initializes all of the locally-defined tables in the Module, e.g. /// putting all the table elements (function pointers) /// in the right places. #[allow(clippy::cast_ptr_alignment)] diff --git a/lib/runtime-core/src/error.rs b/lib/runtime-core/src/error.rs index fb25acdb8..c93115d14 100644 --- a/lib/runtime-core/src/error.rs +++ b/lib/runtime-core/src/error.rs @@ -11,7 +11,7 @@ pub type ResolveResult = std::result::Result; pub type ParseResult = std::result::Result; /// This is returned when the chosen compiler is unable to -/// successfully compile the provided webassembly module into +/// successfully compile the provided WebAssembly module into /// a `Module`. /// /// Comparing two `CompileError`s always evaluates to false. @@ -114,7 +114,7 @@ impl std::fmt::Display for LinkError { impl std::error::Error for LinkError {} /// This is the error type returned when calling -/// a webassembly function. +/// a WebAssembly function. /// /// The main way to do this is `Instance.call`. /// @@ -270,7 +270,7 @@ impl std::error::Error for CreationError {} /// The amalgamation of all errors that can occur /// during the compilation, instantiation, or execution -/// of a webassembly module. +/// of a WebAssembly module. /// /// Comparing two `Error`s always evaluates to false. #[derive(Debug)] diff --git a/lib/runtime-core/src/instance.rs b/lib/runtime-core/src/instance.rs index 14d7a0146..d5f84acc2 100644 --- a/lib/runtime-core/src/instance.rs +++ b/lib/runtime-core/src/instance.rs @@ -262,7 +262,7 @@ impl Instance { } } - /// Call an exported webassembly function given the export name. + /// Call an exported WebAssembly function given the export name. /// Pass arguments by wrapping each one in the [`Value`] enum. /// The returned values are also each wrapped in a [`Value`]. /// @@ -270,7 +270,7 @@ impl Instance { /// /// # Note: /// This returns `CallResult>` in order to support - /// the future multi-value returns webassembly feature. + /// the future multi-value returns WebAssembly feature. /// /// # Usage: /// ``` @@ -601,7 +601,7 @@ pub struct DynFunc<'a> { } impl<'a> DynFunc<'a> { - /// Call an exported webassembly function safely. + /// Call an exported WebAssembly function safely. /// /// Pass arguments by wrapping each one in the [`Value`] enum. /// The returned values are also each wrapped in a [`Value`]. @@ -610,7 +610,7 @@ impl<'a> DynFunc<'a> { /// /// # Note: /// This returns `CallResult>` in order to support - /// the future multi-value returns webassembly feature. + /// the future multi-value returns WebAssembly feature. /// /// # Usage: /// ``` diff --git a/lib/runtime-core/src/memory/static_/unshared.rs b/lib/runtime-core/src/memory/static_/unshared.rs index b9e66de0a..602a02bac 100644 --- a/lib/runtime-core/src/memory/static_/unshared.rs +++ b/lib/runtime-core/src/memory/static_/unshared.rs @@ -11,7 +11,7 @@ use crate::{ /// This is an internal-only api. /// /// A static memory allocates 6GB of *virtual* memory when created -/// in order to allow the webassembly module to contain no bounds-checks. +/// in order to allow the WebAssembly module to contain no bounds-checks. /// /// Additionally, static memories stay at a single virtual address, so there is no need /// to reload its address on each use. diff --git a/lib/runtime-core/src/vm.rs b/lib/runtime-core/src/vm.rs index a4dac4ce6..6649b6a59 100644 --- a/lib/runtime-core/src/vm.rs +++ b/lib/runtime-core/src/vm.rs @@ -11,8 +11,8 @@ use hashbrown::HashMap; /// The context of the currently running WebAssembly instance. /// -/// This is implicitly passed to every webassembly function. -/// Since this is per-module, each field has a statically +/// This is implicitly passed to every WebAssembly function. +/// Since this is per-instance, each field has a statically /// (as in after compiling the wasm) known size, so no /// runtime checks are necessary. /// @@ -38,7 +38,7 @@ pub struct Ctx { //// This is intended to be user-supplied, per-instance /// contextual data. There are currently some issue with it, /// notably that it cannot be set before running the `start` - /// function in a webassembly module. + /// function in a WebAssembly module. /// /// [#219](https://github.com/wasmerio/wasmer/pull/219) fixes that /// issue, as well as allowing the user to have *per-function* diff --git a/lib/singlepass-backend/src/protect_unix.rs b/lib/singlepass-backend/src/protect_unix.rs index 83ba42c79..6204134a7 100644 --- a/lib/singlepass-backend/src/protect_unix.rs +++ b/lib/singlepass-backend/src/protect_unix.rs @@ -1,5 +1,5 @@ //! Installing signal handlers allows us to handle traps and out-of-bounds memory -//! accesses that occur when runniing webassembly. +//! accesses that occur when runniing WebAssembly. //! //! This code is inspired by: https://github.com/pepyakin/wasmtime/commit/625a2b6c0815b21996e111da51b9664feb174622 //! From 02d4affd6dd07a385ff9ecd3c42e9b9ecdcb36b0 Mon Sep 17 00:00:00 2001 From: Syrus Date: Mon, 13 May 2019 11:44:44 -0700 Subject: [PATCH 413/413] Updated changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 92b3c8221..00d7e67e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ Blocks of changes will separated by version increments. ## **[Unreleased]** +- [#269](https://github.com/wasmerio/wasmer/pull/269) Add better runtime docs - [#432](https://github.com/wasmerio/wasmer/pull/432) Fix returned value of `wasmer_last_error_message` in the runtime C API - [#429](https://github.com/wasmerio/wasmer/pull/429) Get wasi::path_filestat_get working for some programs; misc. minor WASI FS improvements - [#413](https://github.com/wasmerio/wasmer/pull/413) Update LLVM backend to use new parser codegen traits

    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 q-ww0E_ Date: Mon, 22 Apr 2019 18:06:37 -0700 Subject: [PATCH 300/413] Updated version to 0.4.0 --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bf77b0390..9c2fd0078 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2222,7 +2222,7 @@ dependencies = [ [[package]] name = "wasmer" -version = "0.3.0" +version = "0.4.0" dependencies = [ "errno 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/Cargo.toml b/Cargo.toml index 2fbe15ccd..e71b90718 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer" -version = "0.3.0" +version = "0.4.0" authors = ["The Wasmer Engineering Team "] edition = "2018" repository = "https://github.com/wasmerio/wasmer" From 017d52cd8fb1c922853f6b99f3ae13ddfbc979e6 Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Mon, 22 Apr 2019 22:37:12 -0500 Subject: [PATCH 301/413] Add comma to message in install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 84f1030d6..40b95cc22 100755 --- a/install.sh +++ b/install.sh @@ -163,7 +163,7 @@ wasmer_link() { printf "$green> Successfully installed $version!\n\n${reset}If you want to have the command available now please execute:\nsource $HOME/.wasmer/wasmer.sh$reset\n" printf "\nOtherwise, wasmer and wapm will be available the next time you open the terminal.\n" - echo "Note: during the alpha release of wapm telemetry is enabled by default; if you would like to opt out, run \`wapm config set telemetry.enabled false\`." + echo "Note: during the alpha release of wapm, telemetry is enabled by default; if you would like to opt out, run \`wapm config set telemetry.enabled false\`." echo "If you notice anything wrong or have any issues, please file a bug at https://github.com/wasmerio/wapm-cli :)" fi } From 85530525b038df9b0491ec28afae49c57d6d7bb7 Mon Sep 17 00:00:00 2001 From: Steven Date: Tue, 23 Apr 2019 10:37:35 -0400 Subject: [PATCH 302/413] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 551371f2b..596456db1 100644 --- a/README.md +++ b/README.md @@ -181,7 +181,7 @@ Below are some of the goals of this project (in order of priority): - [x] It should be 100% compatible with the [WebAssembly spec tests](https://github.com/wasmerio/wasmer/tree/master/lib/spectests/spectests) - [x] It should be fast _(partially achieved)_ -- [ ] Support WASI _(in the works)_ +- [x] Support WASI - released in [0.3.0](https://github.com/wasmerio/wasmer/releases/tag/0.3.0) - [ ] Support Emscripten calls _(in the works)_ - [ ] Support Rust ABI calls - [ ] Support Go ABI calls From f2130fc2271329909267fbce8d1ee14a5dd9447a Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Tue, 23 Apr 2019 12:06:55 -0700 Subject: [PATCH 303/413] pin wapm version --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 831abb956..9be02af8d 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -153,7 +153,7 @@ jobs: - run: name: "Pull dependencies" command: | - git clone git@github.com:wasmerio/wapm-cli.git + git clone --branch v0.1.0 --depth 1 https://github.com/wasmerio/wapm-cli - restore_cache: keys: - v8-cargo-cache-linux-nightly-{{ arch }}-{{ checksum "Cargo.lock" }} From f372fddb9e2fc6d0bf46e203bcf843b41152d69c Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Tue, 23 Apr 2019 12:59:55 -0700 Subject: [PATCH 304/413] add wapm-cli as git submodule at the v0.1.0 tag commit --- .gitmodules | 3 +++ wapm-cli | 1 + 2 files changed, 4 insertions(+) create mode 100644 .gitmodules create mode 160000 wapm-cli diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..ea4c03efb --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "wapm-cli"] + path = wapm-cli + url = git@github.com:wasmerio/wapm-cli.git diff --git a/wapm-cli b/wapm-cli new file mode 160000 index 000000000..c9399f3fb --- /dev/null +++ b/wapm-cli @@ -0,0 +1 @@ +Subproject commit c9399f3fb117c8ab1cbaf17b02bd5aeefb8e8e54 From 5881f5468280a69fb114f033f429c8f2ad7a2e85 Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Tue, 23 Apr 2019 12:06:55 -0700 Subject: [PATCH 305/413] Revert "pin wapm version" This reverts commit f2130fc2271329909267fbce8d1ee14a5dd9447a. --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 9be02af8d..831abb956 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -153,7 +153,7 @@ jobs: - run: name: "Pull dependencies" command: | - git clone --branch v0.1.0 --depth 1 https://github.com/wasmerio/wapm-cli + git clone git@github.com:wasmerio/wapm-cli.git - restore_cache: keys: - v8-cargo-cache-linux-nightly-{{ arch }}-{{ checksum "Cargo.lock" }} From 7494e2c8f2a88ad54c61d6f3728b00c063f2845a Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Tue, 23 Apr 2019 13:04:12 -0700 Subject: [PATCH 306/413] update config to update the new git submodule --- .circleci/config.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 831abb956..72b83a36a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -153,7 +153,8 @@ jobs: - run: name: "Pull dependencies" command: | - git clone git@github.com:wasmerio/wapm-cli.git + git submodule init + git submodule update --remote - restore_cache: keys: - v8-cargo-cache-linux-nightly-{{ arch }}-{{ checksum "Cargo.lock" }} @@ -220,7 +221,8 @@ jobs: - run: name: "Pull dependencies" command: | - git clone git@github.com:wasmerio/wapm-cli.git + git submodule init + git submodule update --remote - restore_cache: keys: - v8-cargo-cache-darwin-nightly-{{ arch }}-{{ checksum "Cargo.lock" }} From 24d5d2d8a7ff745a43bc7d4644c639a120435522 Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Tue, 23 Apr 2019 13:43:40 -0700 Subject: [PATCH 307/413] install rust with new https curl --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 72b83a36a..4d0722cfb 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -240,7 +240,7 @@ jobs: - run: name: Install Rust command: | - curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain nightly-2019-04-11 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain nightly export PATH="$HOME/.cargo/bin:$PATH" cargo --version # Use rust nightly (for singlepass, for now) From b1ece9dc41aa52d61113ec2da00639068082f35f Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Tue, 23 Apr 2019 13:53:48 -0700 Subject: [PATCH 308/413] add the other correct usage of rustup install --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 4d0722cfb..49d8b10d5 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -103,7 +103,7 @@ jobs: - run: name: Install Rust command: | - curl https://sh.rustup.rs -sSf | sh -s -- -y + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain nightly export PATH="$HOME/.cargo/bin:$PATH" cargo --version - run: From fccf46d32048332f895d1c322bca86d4a9148789 Mon Sep 17 00:00:00 2001 From: Charles Crete Date: Tue, 23 Apr 2019 21:25:12 -0400 Subject: [PATCH 309/413] Add `pkg-config` to Linux dependencies --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 596456db1..2704bb304 100644 --- a/README.md +++ b/README.md @@ -100,7 +100,7 @@ sudo port install cmake #### Debian-based Linuxes ```sh -sudo apt install cmake +sudo apt install cmake pkg-config ``` #### FreeBSD From 1959ef79888f76034e2fbeff906f5d31d1113d96 Mon Sep 17 00:00:00 2001 From: Charles Crete Date: Tue, 23 Apr 2019 21:26:19 -0400 Subject: [PATCH 310/413] Add `libssl-dev` to dependencies --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2704bb304..d38ab5c88 100644 --- a/README.md +++ b/README.md @@ -100,7 +100,7 @@ sudo port install cmake #### Debian-based Linuxes ```sh -sudo apt install cmake pkg-config +sudo apt install cmake pkg-config libssl-dev ``` #### FreeBSD From 389c6a015d694c7e9d9ae2b62ed04f2106dbae58 Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Wed, 24 Apr 2019 02:00:07 -0500 Subject: [PATCH 311/413] Remove unused function memory offset addr --- lib/runtime-core/src/instance.rs | 7 ------- 1 file changed, 7 deletions(-) diff --git a/lib/runtime-core/src/instance.rs b/lib/runtime-core/src/instance.rs index 78d0f7d91..14d7a0146 100644 --- a/lib/runtime-core/src/instance.rs +++ b/lib/runtime-core/src/instance.rs @@ -657,10 +657,3 @@ impl<'a> DynFunc<'a> { } } } - -#[doc(hidden)] -impl Instance { - pub fn memory_offset_addr(&self, _: u32, _: usize) -> *const u8 { - unimplemented!() - } -} From 6ff24a8aa18eb809d1e887f2554ed4a864e46654 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Thu, 25 Apr 2019 11:01:46 -0700 Subject: [PATCH 312/413] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c4deaceb2..1a2fc7739 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ All PRs to the Wasmer repository must add to this file. Blocks of changes will separated by version increments. ## **[Unreleased]** +- [#390](https://github.com/wasmerio/wasmer/pull/390) Pin released wapm version and add it as a git submodule - [#383](https://github.com/wasmerio/wasmer/pull/383) Hook up wasi exit code to wasmer cli. - [#382](https://github.com/wasmerio/wasmer/pull/382) Improve error message on `--backend` flag to only suggest currently enabled backends - [#381](https://github.com/wasmerio/wasmer/pull/381) Allow retrieving propagated user errors. From 3998c9ec179e6fa89b288ebb40871b78fafa4be6 Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Thu, 25 Apr 2019 12:45:45 -0700 Subject: [PATCH 313/413] remove zbox because wasmer will not build on windows nightly --- Cargo.lock | 1 - lib/wasi/Cargo.toml | 5 ----- lib/wasi/src/state.rs | 15 --------------- 3 files changed, 21 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9c2fd0078..2bac41a81 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2406,7 +2406,6 @@ dependencies = [ "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.3.0", - "zbox 0.6.1 (git+https://github.com/wasmerio/zbox?branch=bundle-libsodium)", ] [[package]] diff --git a/lib/wasi/Cargo.toml b/lib/wasi/Cargo.toml index 87224d529..30493f8fa 100644 --- a/lib/wasi/Cargo.toml +++ b/lib/wasi/Cargo.toml @@ -16,8 +16,3 @@ hashbrown = "0.1.8" generational-arena = "0.2.2" log = "0.4.6" byteorder = "1.3.1" - -[dependencies.zbox] -git = "https://github.com/wasmerio/zbox" -branch = "bundle-libsodium" -features = ["libsodium-bundled"] diff --git a/lib/wasi/src/state.rs b/lib/wasi/src/state.rs index 813250c57..eb7323bf7 100644 --- a/lib/wasi/src/state.rs +++ b/lib/wasi/src/state.rs @@ -12,42 +12,35 @@ use std::{ time::SystemTime, }; use wasmer_runtime_core::debug; -use zbox::init_env as zbox_init_env; pub const MAX_SYMLINKS: usize = 100; #[derive(Debug)] pub enum WasiFile { - #[allow(dead_code)] - ZboxFile(zbox::File), HostFile(fs::File), } impl Write for WasiFile { fn write(&mut self, buf: &[u8]) -> io::Result { match self { - WasiFile::ZboxFile(zbf) => zbf.write(buf), WasiFile::HostFile(hf) => hf.write(buf), } } fn flush(&mut self) -> io::Result<()> { match self { - WasiFile::ZboxFile(zbf) => zbf.flush(), WasiFile::HostFile(hf) => hf.flush(), } } fn write_all(&mut self, buf: &[u8]) -> io::Result<()> { match self { - WasiFile::ZboxFile(zbf) => zbf.write_all(buf), WasiFile::HostFile(hf) => hf.write_all(buf), } } fn write_fmt(&mut self, fmt: ::std::fmt::Arguments) -> io::Result<()> { match self { - WasiFile::ZboxFile(zbf) => zbf.write_fmt(fmt), WasiFile::HostFile(hf) => hf.write_fmt(fmt), } } @@ -56,28 +49,24 @@ impl Write for WasiFile { impl Read for WasiFile { fn read(&mut self, buf: &mut [u8]) -> io::Result { match self { - WasiFile::ZboxFile(zbf) => zbf.read(buf), WasiFile::HostFile(hf) => hf.read(buf), } } fn read_to_end(&mut self, buf: &mut Vec) -> io::Result { match self { - WasiFile::ZboxFile(zbf) => zbf.read_to_end(buf), WasiFile::HostFile(hf) => hf.read_to_end(buf), } } fn read_to_string(&mut self, buf: &mut String) -> io::Result { match self { - WasiFile::ZboxFile(zbf) => zbf.read_to_string(buf), WasiFile::HostFile(hf) => hf.read_to_string(buf), } } fn read_exact(&mut self, buf: &mut [u8]) -> io::Result<()> { match self { - WasiFile::ZboxFile(zbf) => zbf.read_exact(buf), WasiFile::HostFile(hf) => hf.read_exact(buf), } } @@ -86,7 +75,6 @@ impl Read for WasiFile { impl Seek for WasiFile { fn seek(&mut self, pos: io::SeekFrom) -> io::Result { match self { - WasiFile::ZboxFile(zbf) => zbf.seek(pos), WasiFile::HostFile(hf) => hf.seek(pos), } } @@ -183,9 +171,6 @@ pub struct WasiFs { impl WasiFs { pub fn new(preopened_files: &[String]) -> Result { - debug!("wasi::fs::init"); - zbox_init_env(); - debug!("wasi::fs::repo"); /*let repo = RepoOpener::new() .create(true) .open("mem://wasmer-test-fs", "") From 8eb6a0a53ec391e02de71c5319de8f2104d24a86 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Thu, 25 Apr 2019 13:47:58 -0700 Subject: [PATCH 314/413] revert curl command change --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 49d8b10d5..1837fcd89 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -103,7 +103,7 @@ jobs: - run: name: Install Rust command: | - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain nightly + curl -sSf https://sh.rustup.rs | sh -s -- -y export PATH="$HOME/.cargo/bin:$PATH" cargo --version - run: From 65e6f2582fdb707a13dd25364445373edd98a9d1 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Thu, 25 Apr 2019 15:09:01 -0700 Subject: [PATCH 315/413] revert curl command to not ask for tls 1.2 in ci --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 1837fcd89..946c0da63 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -240,7 +240,7 @@ jobs: - run: name: Install Rust command: | - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain nightly + curl -sSf https://sh.rustup.rs | sh -s -- -y export PATH="$HOME/.cargo/bin:$PATH" cargo --version # Use rust nightly (for singlepass, for now) From 750aafd7cad11770e24de23e80803ad7d8c64383 Mon Sep 17 00:00:00 2001 From: Syrus Akbary Date: Thu, 25 Apr 2019 15:59:46 -0700 Subject: [PATCH 316/413] Fix nightly on macos --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 946c0da63..e2905a425 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -240,7 +240,7 @@ jobs: - run: name: Install Rust command: | - curl -sSf https://sh.rustup.rs | sh -s -- -y + curl -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain nightly export PATH="$HOME/.cargo/bin:$PATH" cargo --version # Use rust nightly (for singlepass, for now) From 655188a7885584b1b0048c57b5458103a1ac9ea7 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 26 Apr 2019 13:17:36 -0700 Subject: [PATCH 317/413] Fix WASI FS abstraction for Windows --- lib/wasi/src/state.rs | 24 ++++++++++++------------ lib/wasi/src/syscalls/mod.rs | 9 +++------ 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/lib/wasi/src/state.rs b/lib/wasi/src/state.rs index eb7323bf7..b611bb2a7 100644 --- a/lib/wasi/src/state.rs +++ b/lib/wasi/src/state.rs @@ -9,6 +9,7 @@ use std::{ cell::Cell, fs, io::{self, Read, Seek, Write}, + path::PathBuf, time::SystemTime, }; use wasmer_runtime_core::debug; @@ -138,7 +139,9 @@ pub enum Kind { handle: WasiFile, }, Dir { - handle: WasiFile, + // TODO: wrap it like WasiFile + /// The path on the host system where the directory is located + path: PathBuf, /// The entries of a directory are lazily filled. entries: HashMap, }, @@ -170,7 +173,7 @@ pub struct WasiFs { } impl WasiFs { - pub fn new(preopened_files: &[String]) -> Result { + pub fn new(preopened_dirs: &[String]) -> Result { /*let repo = RepoOpener::new() .create(true) .open("mem://wasmer-test-fs", "") @@ -185,29 +188,26 @@ impl WasiFs { next_fd: Cell::new(3), inode_counter: Cell::new(1000), }; - for file in preopened_files { + for dir in preopened_dirs { debug!("Attempting to preopen {}", &file); // TODO: think about this let default_rights = 0x1FFFFFFF; // all rights - let cur_file: fs::File = fs::OpenOptions::new() - .read(true) - .open(file) - .expect("Could not find file"); - let cur_file_metadata = cur_file.metadata().unwrap(); - let kind = if cur_file_metadata.is_dir() { + let cur_dir = PathBuf::from(dir); + let cur_dir_metadata = cur_dir.metadata().expect("Could not find directory"); + let kind = if cur_dir_metadata.is_dir() { Kind::Dir { - handle: WasiFile::HostFile(cur_file), + path: cur_dir.clone(), entries: Default::default(), } } else { return Err(format!( "WASI only supports pre-opened directories right now; found \"{}\"", - file + &dir )); }; // TODO: handle nested pats in `file` let inode_val = - InodeVal::from_file_metadata(&cur_file_metadata, file.clone(), true, kind); + InodeVal::from_file_metadata(&cur_dir_metadata, dir.clone(), true, kind); let inode = wasi_fs.inodes.insert(inode_val); wasi_fs.inodes[inode].stat.st_ino = wasi_fs.inode_counter.get(); diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index ad2835d77..fcd1caadd 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -1242,15 +1242,12 @@ pub fn path_open( }; // TODO: handle __WASI_O_TRUNC on directories - let cur_dir = wasi_try!(open_options - .open(&cumulative_path) - .map_err(|_| __WASI_EINVAL)); - // TODO: refactor and reuse - let cur_file_metadata = cur_dir.metadata().unwrap(); + let cur_file_metadata = + wasi_try!(cumulative_path.metadata().map_err(|_| __WASI_EINVAL)); let kind = if cur_file_metadata.is_dir() { Kind::Dir { - handle: WasiFile::HostFile(cur_dir), + path: cumulative_path.clone(), entries: Default::default(), } } else { From a6091e1eea902229e202a1b15eb466ebe53927ec Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 26 Apr 2019 13:34:27 -0700 Subject: [PATCH 318/413] update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1a2fc7739..f46d5cbd8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ All PRs to the Wasmer repository must add to this file. Blocks of changes will separated by version increments. ## **[Unreleased]** +- [#397](https://github.com/wasmerio/wasmer/pull/397) Fix WASI fs abstraction to work on Windows - [#390](https://github.com/wasmerio/wasmer/pull/390) Pin released wapm version and add it as a git submodule - [#383](https://github.com/wasmerio/wasmer/pull/383) Hook up wasi exit code to wasmer cli. - [#382](https://github.com/wasmerio/wasmer/pull/382) Improve error message on `--backend` flag to only suggest currently enabled backends From a6b8c1b0fa4c8d89783b83abbb9717746f131d3b Mon Sep 17 00:00:00 2001 From: Syrus Akbary Date: Fri, 26 Apr 2019 17:40:55 -0700 Subject: [PATCH 319/413] Fix debug issue --- lib/wasi/src/state.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/wasi/src/state.rs b/lib/wasi/src/state.rs index b611bb2a7..f1608e768 100644 --- a/lib/wasi/src/state.rs +++ b/lib/wasi/src/state.rs @@ -189,7 +189,7 @@ impl WasiFs { inode_counter: Cell::new(1000), }; for dir in preopened_dirs { - debug!("Attempting to preopen {}", &file); + debug!("Attempting to preopen {}", &dir); // TODO: think about this let default_rights = 0x1FFFFFFF; // all rights let cur_dir = PathBuf::from(dir); From ef3996a1c8d4f4dda67a3f2bab89557c653bda1e Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 26 Apr 2019 18:45:18 -0700 Subject: [PATCH 320/413] Add extending WASI plugin example --- Cargo.lock | 4 +++ Cargo.toml | 6 ++++- examples/plugin-for-example.wasm | Bin 0 -> 969607 bytes examples/plugin-for-example/Cargo.toml | 7 +++++ examples/plugin-for-example/README.md | 33 ++++++++++++++++++++++++ examples/plugin-for-example/src/bin.rs | 14 ++++++++++ examples/plugin-for-example/src/main.rs | 12 +++++++++ examples/plugin.rs | 28 ++++++++++++++++++++ 8 files changed, 103 insertions(+), 1 deletion(-) create mode 100755 examples/plugin-for-example.wasm create mode 100644 examples/plugin-for-example/Cargo.toml create mode 100644 examples/plugin-for-example/README.md create mode 100644 examples/plugin-for-example/src/bin.rs create mode 100644 examples/plugin-for-example/src/main.rs create mode 100644 examples/plugin.rs diff --git a/Cargo.lock b/Cargo.lock index 2bac41a81..44e77e7df 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1317,6 +1317,10 @@ name = "plain" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "plugin-for-example" +version = "0.1.0" + [[package]] name = "podio" version = "0.1.6" diff --git a/Cargo.toml b/Cargo.toml index e71b90718..17c72dcba 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,7 +33,7 @@ wasmer-llvm-backend = { path = "lib/llvm-backend", optional = true } wasmer-wasi = { path = "lib/wasi", optional = true } [workspace] -members = ["lib/clif-backend", "lib/singlepass-backend", "lib/runtime", "lib/runtime-abi", "lib/runtime-core", "lib/emscripten", "lib/spectests", "lib/win-exception-handler", "lib/runtime-c-api", "lib/llvm-backend", "lib/wasi"] +members = ["lib/clif-backend", "lib/singlepass-backend", "lib/runtime", "lib/runtime-abi", "lib/runtime-core", "lib/emscripten", "lib/spectests", "lib/win-exception-handler", "lib/runtime-c-api", "lib/llvm-backend", "lib/wasi", "examples/plugin-for-example"] [build-dependencies] wabt = "0.7.2" @@ -49,3 +49,7 @@ fast-tests = [] "backend:singlepass" = ["wasmer-singlepass-backend"] wasi = ["wasmer-wasi"] vfs = ["wasmer-runtime-abi"] + +[[example]] +name = "plugin" +crate-type = ["bin"] \ No newline at end of file diff --git a/examples/plugin-for-example.wasm b/examples/plugin-for-example.wasm new file mode 100755 index 0000000000000000000000000000000000000000..4754287abdbbb4fedc1059eeadaae6f943ba2fc2 GIT binary patch literal 969607 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

hGu6^L-Lv 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%0A5}zX$^R<0$vmp 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 literal 514327 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�OB}n9d!yHZ_S65Du@th` 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

d$qQT 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