Commit Graph

66 Commits

Author SHA1 Message Date
Dan Gohman
e2f79ae405 Do more Vec reserving. 2019-03-01 14:27:40 -08:00
Dan Gohman
538ef20f50 Use with_capacity to minimize reallocation. 2019-03-01 14:27:40 -08:00
Dan Gohman
e5f7da2e22 Tidy up redundant conversions. 2019-03-01 14:27:40 -08:00
Dan Gohman
c91ca1b10c Reorganize ModuleEnvironment's contents to more closely reflect cranelift-wasm. 2019-02-21 20:41:36 -08:00
Dan Gohman
78f89f67a3 Update to Cranelift 0.28.0.
Also region 2.0.0 and bindgen 0.47.1.
2019-02-21 20:35:45 -08:00
Dan Gohman
4675948c2a Switch to passing the vmctx hidden argument at the beginning.
This switches to passing the vmctx hidden argument at the beginning of
the argument list, rather than the end.
2019-02-01 18:20:28 -08:00
Yury Delendik
e66f01b923 Update cranelift libraries to 0.28.0 2019-01-29 16:45:41 -08:00
Joel Martin
fdcb2184a8 Support 32-bit build. (#44)
* Support 32-bit build.

Signatures/functions/imports/exports etc are defined as varuint32 in
the WebAssembly specification so use u32 rather than u64.

Decrease the static memory constants for 32-bit addressing mode so
that they fit within 32-bit memory constraints.

Conditionalize cmake compile of SignalHandlers.cpp so that -m32 is
passed when building 32-bit.

Add a no-op match for Reloc::X86CallPCRel4 during linking. This is
probably the wrong thing, but it allows the tests to pass. Using the
same logic from the Reloc::X86PCRel4 case did not work.
2019-01-24 13:40:25 -08:00
Dan Gohman
00a4e93bcd Add a concept of "global exports".
This adds a feature which allows one to look up an export by name
without knowing what module it's in -- `lookup_global_export` on an
`InstanceContents`.

The main expected use for this is to support APIs where module A
imports a function from module B, and module B needs to access module
A's memory. B can't import it from A in the normal way, because that
would create a dependency cycle. So for now, allow B to look up A's
exported memory dynamically with `lookup_global_export`.

In the future, with reference types and possibly host bindings, we'll be
able to pass references to memory as arguments, which will obviate the
need for this mechanism.
2019-01-22 16:32:07 -08:00
Dan Gohman
dae04be948 Switch from hashmap_core to hashbrown.
As suggested
[here](https://github.com/Amanieu/hashmap_core/pull/10#issuecomment-455866083).

This also allows us to re-enable the basic compile fuzz target.
2019-01-22 13:41:04 -08:00
Dan Gohman
e876f0fb1d Add some Cargo.toml keywords. 2019-01-03 14:25:33 -08:00
Dan Gohman
40acc1f340 Add crate version identifiers. 2019-01-03 14:16:48 -08:00
Dan Gohman
a41bc1fe1e Fix unused use warnings. 2019-01-03 14:16:48 -08:00
Dan Gohman
ca2fdc5ccb Update no_std support.
This `no_std` support isn't complete though, as some dependencies
don't support it.
2019-01-03 14:16:48 -08:00
Dan Gohman
f6c2fe7d2d Update to Rust 2018 Edition. 2019-01-03 12:58:11 -08:00
Dan Gohman
701b1998e9 Avoid creating slices with null pointers. 2019-01-03 12:05:17 -08:00
Dan Gohman
df7724ce2b Update Cargo.toml authors fields. 2019-01-03 12:04:37 -08:00
Dan Gohman
c66a3c23f3 Tidy up some documentation comments. 2019-01-03 12:03:43 -08:00
Dan Gohman
3ce2127bfa Eliminate the intermediate "base" global variables. 2019-01-03 12:03:33 -08:00
Dan Gohman
1ae5c13b8c Signature ID loads are readonly. 2019-01-03 12:03:14 -08:00
Dan Gohman
3270369a69 Restructure VMContext to eliminate a level of indirection. 2019-01-03 12:02:35 -08:00
Dan Gohman
482a054c75 Move the signature_ids field first. 2019-01-03 11:49:15 -08:00
Dan Gohman
e8e8f453a4 Refactor out the code for creating the signature_ids base global value. 2019-01-03 11:49:04 -08:00
Dan Gohman
7592c99f3b Refactor the compilation and instantiation pipeline.
wasmtime-execute is now wasmtime-jit. Move `JITCode` and the TargetIsa
into a new `Compiler` type. `InstancePlus` is no more, with trampoline
functionality now handled by `Compiler`.
2019-01-03 11:47:55 -08:00
Dan Gohman
f997cde2db Don't create Static memories larger than the Tunables' static bound size. 2018-12-24 22:08:36 -08:00
Dan Gohman
4d4ecfd812 Bump version to 0.1.0 2018-12-17 13:45:12 -08:00
Dan Gohman
3f24098edc Implement the remaining valid spec tests.
And lots of other miscellaneous changes. Rename InstanceWorld to
InstancePlus and reorganize its contents. This still isn't a great name,
but at least now it has a clear purpose.
2018-12-12 11:49:02 -08:00
Dan Gohman
6dd39dee6a Update to Cranelift 0.26.0. 2018-12-11 13:21:03 -08:00
Dan Gohman
56850d481d Initial support for function, table, memory, and global imports. 2018-12-11 12:49:14 -08:00
Dan Gohman
7dcca6be5b Improve error handling, and start refactoring Instance.
Introduce proper error handling in several places, and perform a first
pass at refactoring Instance to make it easier to use.
2018-12-07 23:51:23 -05:00
Dan Gohman
dca7729313 Improve error handling and misc cleanups. 2018-12-06 23:03:12 -05:00
Dan Gohman
08488591a9 Fix clippy warning namespaces. 2018-12-06 23:02:42 -05:00
Dan Gohman
d9b4bd1de8 Support imports. 2018-12-06 23:02:19 -05:00
Dan Gohman
8170a9db79 Update to the rustfmt in rust 1.31, which is now stable. 2018-12-06 22:59:46 -05:00
Dan Gohman
96941a59af Implement call_indirect signature checking.
The call_indirect.wast spec test now passes.
2018-12-05 11:32:35 -05:00
Dan Gohman
57635eb62b Implement minimal call_indirect signature checking. 2018-12-05 11:32:28 -05:00
Dan Gohman
7faa15d7ac More infrastructure.
Improve handling of memory.grow/size, add a standalone wast runner,
test harness improvements.
2018-12-05 02:25:34 -05:00
Dan Gohman
4c47ce9b53 Add support for math libcalls. 2018-12-05 02:25:34 -05:00
Dan Gohman
bd69768e0d Improve infrastructure.
Do more encapsulation of raw pointers, use more PrimaryMaps instead of
Vecs, add a table.rs for managing table storage.
2018-12-05 02:25:34 -05:00
Dan Gohman
fe1643733b Remove use of offset_of! from wasmtime-environ.
wasmtime-environ is meant to support cross compilation, so it shouldn't
have dependencies on target layout of structs. This moves the layout
back into wasmtime-execute, and adds a system of asserts for checking
that wasmtime-environ's offsets stay in sync.
2018-12-05 02:25:34 -05:00
Dan Gohman
e940c97664 Tidy. 2018-12-05 02:25:34 -05:00
Dan Gohman
8dbd4b8d7c Start a wast testing harness and add some tests.
This implements a minimal wast testing harness in tests/wast.rs, which
runs the wast tests under tests/wast.

It also adds tests for trapping in a variety of ways, and fixes several
bugs exposed by those tests.
2018-12-05 02:25:34 -05:00
Dan Gohman
d5ed424b33 Add tunables.rs. 2018-12-05 02:25:34 -05:00
Dan Gohman
f44fe25f9c Rewrite linear memory handling in terms of simple mmap/VirtualAlloc.
The memmap crate doesn't make it straightforward to have part of the
region be writeable and part readonly. Since this is a fairly boutique
use case, and we don't need all that much code, just use the low-level
APIs directly.

Also, introduce a concept of "tunables" for adjusting the parameters of
the runtime.
2018-12-05 02:25:34 -05:00
Dan Gohman
ff25397c9e Fix the type of the heap bound variable. 2018-11-29 19:28:35 -08:00
Dan Gohman
b7d43edfd3 Be more careful about integer overflow when computing relocs. 2018-11-29 10:28:18 -08:00
Dan Gohman
862d859587 Add a LICENSE file to each crate. 2018-11-29 05:57:32 -08:00
Dan Gohman
8e1e75f1f4 Fix rustfmt diffs. 2018-11-27 05:41:19 -08:00
Geoffroy Couprie
bf5a06bc95 separate the context intialization from the function execution (#21)
the start function is called from the initialization phase
2018-11-27 05:33:56 -08:00
Dan Gohman
95fba6a9de Update to Cranelift 0.25. 2018-11-26 22:50:07 -08:00