Commit Graph

575 Commits

Author SHA1 Message Date
Syrus
f7197bf456 Added debug build 2019-02-26 15:39:54 -08:00
losfair
3c3c5db2e1 Native trampolines. 2019-02-26 20:56:10 +08:00
Syrus
e6d0f91832 Use blake2b SIMD version for increased performance 2019-02-26 01:12:34 -08:00
Lachlan Sneff
4f833876e0 Start work on object loader using llvm's RuntimeDyld api. 2019-02-25 18:08:06 -08:00
Syrus
2d49d58665 Use blake2b (simd) version instead of blake2 2019-02-25 17:43:25 -08:00
Syrus
e7d08712b5 Use blake2 hashing algorithm 2019-02-25 17:37:33 -08:00
Syrus
53c8603464 Updated crates version to 0.2.0 2019-02-25 13:33:33 -08:00
Syrus Akbary
09fe82862e
Merge pull request #211 from wasmerio/fix/error-display
Fix/error display
2019-02-25 12:35:16 -08:00
Syrus
f9c0e0c078 Fix formatting 2019-02-25 12:25:28 -08:00
Mackenzie Clark
3cfdaf3891
Merge branch 'master' into feature/emscripten-getcwd 2019-02-25 12:18:30 -08:00
Syrus Akbary
c5c967da00 Added parallel compilation (#209) 2019-02-25 12:03:48 -08:00
losfair
9d8c5a5c70 Add a note on incorrect code generation. 2019-02-25 23:57:12 +08:00
losfair
530294922a Allow more registers to be used. 2019-02-25 23:55:27 +08:00
losfair
78fd995ad3 Fix argument passing at entry. 2019-02-25 23:38:33 +08:00
losfair
80812e3809 Implement native call & fix stack alignment. 2019-02-25 23:29:18 +08:00
losfair
2432a6c9b3 Fix function calls. 2019-02-25 22:47:27 +08:00
Brandon Fish
b008a054de Fix C API to allow calling an exported func 2019-02-24 12:22:24 -06:00
losfair
dbebdf937f Code generation for br_table. 2019-02-24 12:00:35 +08:00
Brandon Fish
1dfa106850 Add C API module import descriptors 2019-02-23 18:25:51 -06:00
Brandon Fish
17fe7bdaea Add C API module export descriptors 2019-02-23 15:41:38 -06:00
losfair
09cbd4aeb0 Changed to using custom calling conventions; Implemented direct calls. 2019-02-24 00:52:32 +08:00
losfair
e9c0325784 Update dependencies 2019-02-24 00:51:47 +08:00
Andrew Cann
ed706133c4 fix stack overflow in Error's Display impl 2019-02-23 17:00:03 +08:00
Mackenzie Clark
82eef13f41
Create a grow error and refactor grow impl to return result (#191) 2019-02-22 22:18:59 -08:00
Lachlan Sneff
2a913f5663 Implement table, partial call_indirect 2019-02-22 17:34:55 -08:00
Mackenzie Clark
0c4aea2d84
Merge branch 'master' into feature/emscripten-getcwd 2019-02-22 16:54:19 -08:00
Lachlan Sneff
07c8975304 Fix clif backend 2019-02-22 16:20:26 -08:00
Mackenzie Clark
7fb7529b48 cargo fmt 2019-02-22 15:16:07 -08:00
Mackenzie Clark
70e0b8cee1
Merge branch 'master' into feature/emscripten-getcwd 2019-02-22 15:15:26 -08:00
Mackenzie Clark
b5056d676a update wasm file 2019-02-22 15:07:55 -08:00
Mackenzie Clark
966be3ee8f right to the out buffer that was passed in syscall183 2019-02-22 14:54:01 -08:00
Lachlan Sneff
df03d00e74 Merge upstream/master into feature/llvm-feature 2019-02-22 14:14:46 -08:00
Lachlan Sneff
0c19824425 Fix after merge 2019-02-22 14:07:03 -08:00
Lachlan Sneff
d9506ca5d5
Merge branch 'master' into feature/benchmarks 2019-02-22 13:32:09 -08:00
Lachlan Sneff
4042cff914 Change hashing algorithm from sha1 to meowhash 2019-02-22 13:02:28 -08:00
Mackenzie Clark
0f9369c67d cargo fmt and better error message 2019-02-22 12:39:19 -08:00
Mackenzie Clark
ad3d361f76 add the syscall and create a test 2019-02-22 12:32:14 -08:00
Lachlan Sneff
687f70df89 Add validation benchmark 2019-02-22 12:31:41 -08:00
Syrus
16d62ace52 Fixed cache example (again) 2019-02-22 12:17:49 -08:00
Mackenzie Clark
70ba4ec466
Merge branch 'master' into feature/benchmarks 2019-02-22 12:14:11 -08:00
Lachlan Sneff
6d092dc121 Fix lint 2019-02-22 12:08:56 -08:00
Lachlan Sneff
17901f992a Add benchmark runner and nginx compile vs. load bench 2019-02-22 12:07:07 -08:00
Syrus
b3dd47bce8 Fixed runtime example 2019-02-22 12:06:22 -08:00
Syrus
84042cecb3 Fixed wrong syntax 2019-02-22 12:00:30 -08:00
Syrus
fdb2a67579 Added cache into standalone app 2019-02-22 11:42:36 -08:00
Brandon Fish
c9969f269c Use minimum limit as initial table size (#196) 2019-02-22 11:16:15 -08:00
Mackenzie Clark
a6d72bdec9
more emscripten stubs and urandom hack (#199) 2019-02-22 10:42:38 -08:00
Syrus Akbary
e9d72740c0
Merge pull request #197 from wasmerio/feature/c-api-module-instantiate
Add C API module_instantiate function
2019-02-22 09:58:49 -08:00
losfair
08a2ec82b3 Unary operators, comparison opcodes, loops, etc. 2019-02-23 01:54:16 +08:00
Lachlan Sneff
f1b190743b Change file.write to file.write_all 2019-02-21 17:11:28 -08:00
Lachlan Sneff
199cabd0af Add comment about serde feature 2019-02-21 17:09:32 -08:00
Lachlan Sneff
696fd8fce3 Update api again and change SerializedCache to Artifact 2019-02-21 17:07:04 -08:00
Lachlan Sneff
64eadad7fa Fix review comments 2019-02-21 15:31:20 -08:00
Lachlan Sneff
244308374c Fix formatting 2019-02-21 15:27:20 -08:00
Lachlan Sneff
f9d7d56195 Add documentation and make load safe 2019-02-21 14:00:33 -08:00
Lachlan Sneff
c78d4a8674 Fix test compilation 2 2019-02-21 12:55:03 -08:00
Lachlan Sneff
2234f357b7
Merge branch 'master' into feature/cache-rework 2019-02-21 11:54:57 -08:00
Lachlan Sneff
f18da0690e Fix test compilation 2019-02-21 11:54:39 -08:00
Lachlan Sneff
7fa818ea06 Finalize new cache api 2019-02-21 11:47:28 -08:00
losfair
7c439932f1 Block and conditional branch. 2019-02-21 22:04:43 +08:00
losfair
63b3f41f05 Handle unreachable and fix return. 2019-02-21 21:14:10 +08:00
losfair
6f97ebd5f7 Remove a hack in parser. 2019-02-21 21:12:58 +08:00
Brandon Fish
ac57a1bc71 Add C API module_instantiate function 2019-02-20 23:08:23 -06:00
Lachlan Sneff
336c1d9c5f Fix lint 2019-02-20 17:00:48 -08:00
Lachlan Sneff
9f40eedba8 Get caching working again 2019-02-20 16:41:41 -08:00
Mackenzie Clark
1a951a9abf
stub wasm32-unknown-emscripten target imports (#193) 2019-02-20 14:05:12 -08:00
Syrus Akbary
a418595f2f
Merge pull request #135 from wasmerio/feature/c-api
C API
2019-02-20 11:51:45 -08:00
Brandon Fish
b073145dbb Clone import in instantiate to prevent import move 2019-02-20 09:52:42 -06:00
losfair
aaabbf169c Operator::Br and control stack fixes 2019-02-20 23:21:33 +08:00
losfair
61c83507a4 Control frames, jumps & stack unwinding. 2019-02-20 22:56:32 +08:00
Jordan Danford
64519b1581 Fix formatting and grammar in documentation 2019-02-19 17:01:44 -07:00
Lachlan Sneff
82eea00a02 Saved 2019-02-19 15:36:22 -08:00
Lachlan Sneff
3c7dc200fa close to working 2019-02-19 09:58:01 -08:00
losfair
93d2713bde Operators. 2019-02-19 20:25:09 +08:00
losfair
5583e96d96 Mitigate a bug that causes incorrect code generation.
Still need to figure out why R8 and higher registers don't work.
2019-02-19 19:19:40 +08:00
Brandon Fish
d2f3023191 Allow specifying optional max value in limits 2019-02-19 00:05:08 -06:00
Brandon Fish
380d766943 Convert from Box into/from raw to pointer ref-deref to fix free issue 2019-02-18 23:30:08 -06:00
Lachlan Sneff
e381bbd07b Use ModuleInfo instead of ModuleInner when possible 2019-02-18 11:56:20 -08:00
Brandon Fish
2ed6e82354 Merge branch 'master' into feature/c-api 2019-02-17 17:20:47 -06:00
Brandon Fish
123d55cb4a Remove commented out code, cleanup build warnings 2019-02-17 17:10:15 -06:00
Brandon Fish
ee81560e06 Cleanup tests 2019-02-17 16:51:59 -06:00
Brandon Fish
a77d1be983 Remove unused API functions 2019-02-17 14:48:30 -06:00
Brandon Fish
36767e0bd6 Move ctx pointer to first parameter to fix test 2019-02-17 14:39:26 -06:00
Brandon Fish
7bb947aba7 Add func signature lookup functions 2019-02-17 14:12:05 -06:00
David McNeil
a9b1c6c85e Fix emscripten environment (#172)
Dynamically determine abortOnCannotGrowMemory and add
_emscripten_get_heap_size and _emscripten_resize_heap
2019-02-16 15:01:01 -07:00
Brandon Fish
56079ad589 Add compile Module function 2019-02-15 19:47:00 -06:00
Brandon Fish
9ee86138b9 Impl Error for CallError 2019-02-15 19:16:19 -06:00
Brandon Fish
768a2fae18 Merge branch 'master' into feature/c-api 2019-02-15 19:12:30 -06:00
Lachlan Sneff
108973dabe Start producing object files with llvm 2019-02-15 16:02:20 -08:00
Christopher Serr
cb29261ec7 Use repr(transparent) for single element structs (#187)
The ABI of aggregates such as single element structs is not required to
be the same as the single elements themselves. This is especially true
for f64 vs. #[repr(c)] struct F(f64); on Windows. Therefore the macro
has been tweaked so S1 uses repr(transparent) which is made for exactly
for this use case.

Closes #183
2019-02-15 15:11:06 -08:00
Mackenzie Clark
2d2d708500
Validate descriptor max on creating new table or memory (#186) 2019-02-15 13:14:42 -08:00
Mackenzie Clark
b68b109b7d
Implement error for remaining errors and the amalgamation error (#184) 2019-02-15 08:15:57 -08:00
Brandon Fish
3ebb80e50e Update imports and add func_new 2019-02-15 09:40:28 -06:00
Mackenzie Clark
39ef47ebb1
Implement Error for CompilerError (#181) 2019-02-14 21:08:35 -08:00
Mackenzie Clark
09ba27390c
Implement Error for Creation Error (#180) 2019-02-14 19:22:19 -08:00
Mackenzie Clark
6e87676160
Impl error for link error (#182) 2019-02-14 18:40:52 -08:00
Mackenzie Clark
24d028e2a2
impl error trait for ResolveError (#179) 2019-02-14 18:19:18 -08:00
Lachlan Sneff
73b4f7d337 Implement memory and global operations 2019-02-14 18:08:20 -08:00
Lachlan Sneff
2d87f64f82 Merge master into feature/llvm-backend 2019-02-14 15:47:28 -08:00
Lachlan Sneff
8827830aba implement load* and store* instructions 2019-02-14 15:13:58 -08:00
Mackenzie Clark
0c7532b1ba
remove unnecessary print statements (#177) 2019-02-14 11:11:35 -08:00
losfair
bb52a4e6eb Now we can run add! 2019-02-15 02:21:52 +08:00
losfair
1526d35872 Emit a Return opcode if the last one is not return. 2019-02-15 02:21:04 +08:00
Mackenzie Clark
6a1fdb7f91
add windows exception handling in C (#175) 2019-02-14 09:58:33 -08:00
Brandon Fish
bfd5e21605 Add export_name and export_func 2019-02-14 00:00:39 -06:00
Brandon Fish
93979aeae2 Add get exports from instance 2019-02-13 20:02:11 -06:00
losfair
8d8db4aa09 Starting integration. 2019-02-14 00:53:36 +08:00
losfair
7df7204e4b codegen: More opcodes 2019-02-14 00:53:06 +08:00
losfair
43df3dd546 Use System V calling convention and implement a few opcodes. 2019-02-13 20:04:10 +08:00
losfair
a69c5b4a14 stack: Helper functions and unified return types 2019-02-13 20:03:54 +08:00
Lachlan Sneff
2572a0259b Get control flow working (fingers crossed) 2019-02-12 18:02:00 -08:00
Syrus
b6416068a8 Use vec.push instead of .insert for vmctx arg 2019-02-12 11:17:09 -08:00
Syrus
b7c3cc09d1 Fixed typed func implementation 2019-02-12 11:14:20 -08:00
Syrus
44d1a0d1f9 Fixed debug function context position 2019-02-12 10:49:43 -08:00
Syrus
f52c4ce5cc Merge branch 'master' into feature/ctx-first-arg 2019-02-12 10:28:25 -08:00
Syrus
c40195cf77 Fixed spectests 2019-02-12 10:04:11 -08:00
losfair
4ebb22f8bc Calling conventions, value stack, and runtime stack layout. 2019-02-12 23:15:57 +08:00
Brandon Fish
7f5ca34138 Merge branch 'master' into feature/c-api 2019-02-11 23:17:26 -06:00
Brandon Fish
27cbfc0b0b Add documentation to API functions 2019-02-11 23:14:32 -06:00
Lachlan Sneff
5ee19e55a5 Add some branching instructions 2019-02-11 19:34:04 -08:00
Brandon Fish
34c45aee3d Update last error for every error result 2019-02-11 20:08:54 -06:00
Brandon Fish
019ef9ea01 Consolidate result type to one enum 2019-02-11 19:07:28 -06:00
losfair
2fbb5e3332 Codegen backend for x64. 2019-02-12 00:52:17 +08:00
losfair
ffc1bde3d8 Cleanup & add imports. 2019-02-12 00:52:01 +08:00
losfair
bbb27bedbe Code generation framework. 2019-02-12 00:51:49 +08:00
losfair
af19f5c097 Update dependencies. 2019-02-12 00:51:26 +08:00
losfair
f735471bac Merge remote-tracking branch 'private/master' into feature/dynasm-backend 2019-02-11 18:38:00 +08:00
Brandon Fish
b70e319f5c Add initial error messaging 2019-02-10 17:57:23 -06:00
Brandon Fish
66bf13c9dd Add memory data function 2019-02-10 15:20:35 -06:00
Brandon Fish
a502da58e3 Fix import object destroy 2019-02-10 14:27:08 -06:00
Brandon Fish
7ef472dae2 Add instance context memory 2019-02-10 14:24:36 -06:00
Brandon Fish
0cfe864fe6 Add Memory data length 2019-02-10 14:14:42 -06:00
Syrus
4311a37def Fixed simple spectests example compilation 2019-02-09 20:13:58 -08:00
Brandon Fish
2fa9cec0ed Add include guard 2019-02-09 18:07:05 -06:00
Lachlan Sneff
327e3a4a1a Implement many wasm instructions 2019-02-09 15:53:40 -08:00
Brandon Fish
a0288c87ac Add Memory Grow C API 2019-02-09 17:53:03 -06:00
Brandon Fish
94c5acedbf Add basic Global API 2019-02-09 17:39:15 -06:00
Syrus
227d5e24cf Moved ctx to first argument in Cranelift backend 2019-02-09 14:18:53 -08:00
Syrus
6c7fd55b87 Moved ctx to be the first argument in emscripten 2019-02-09 13:58:18 -08:00
Syrus
393b7dbdf3 Moved ctx in func macro to be first arg 2019-02-09 13:33:22 -08:00
Mackenzie Clark
4ef7dc339c
optimize imports (#170) 2019-02-09 13:31:28 -08:00
Brandon Fish
8364c39b4c Add Table grow function 2019-02-09 13:58:50 -06:00
Brandon Fish
4e5e525626 Add basic Table functions 2019-02-09 13:37:07 -06:00
Brandon Fish
c3707efa08 Update for merge from master 2019-02-09 13:09:54 -06:00
Brandon Fish
bda6451fb6 Merge branch 'master' into feature/c-api 2019-02-09 13:08:30 -06:00
Mackenzie Clark
e7c3b99ba9
add lua integration test (#109) 2019-02-08 17:47:51 -08:00
Lachlan Sneff
aa90a33501 Make module info store FuncSig, not Arc<FuncSig> 2019-02-08 14:19:58 -08:00
Mackenzie Clark
9a56680281
fix windows linking and appveyor build (#166) 2019-02-08 13:51:29 -08:00
Lachlan Sneff
1886b3d3c1
Naive short circuiting implementation for user panics and results. (#167)
* Add panic and result catching

* exit process on panic and user runtime error

* Complete initial implementation
2019-02-08 13:08:03 -08:00
Lachlan Sneff
4e1bc483a8
Fix emscripten setup, nginx works (#165)
* Fix emscripten setup, nginx works

* Remove commented-out code

* Re-enable nginx integration test
2019-02-08 10:55:32 -08:00
Mackenzie Clark
351b4feeeb implement with_size_protect (#163)
* implement with_size_protect

* no more conditional compilation
2019-02-08 10:32:20 -08:00
losfair
9649219578 Initial work on WebAssembly parser for Dynasm backend. 2019-02-08 23:56:14 +08:00
Mackenzie Clark
46ac4e9e1a
reorganize signal module and leave stubs in windows (#162) 2019-02-07 17:08:42 -08:00
Mackenzie Clark
9719781eee create platform mods for syscalls and stub for windows (#161)
* create platform mods for syscalls and stub for windows

* missing constants and duplicate use statements
2019-02-07 16:56:44 -08:00
Mackenzie Clark
f8e2b25137
consolidate shared functions and optimize use statements (#159) 2019-02-07 15:24:22 -08:00
Mackenzie Clark
25d438f346
create an alias for pid_t which does not exist on libc windows (#160) 2019-02-07 15:12:27 -08:00
Lachlan Sneff
8d2c1956d7
Fix runtime error catching (#157) 2019-02-07 14:44:28 -08:00
Mackenzie Clark
ea2bd80089
refactor getenv for windows (#156) 2019-02-07 14:23:13 -08:00
Brandon Fish
7574652bb1 Re-enable all passing emtests for CI 2019-02-07 14:55:06 -06:00
Syrus Akbary
1c1318623e
Merge pull request #155 from wasmerio/fix/signature-index-wrong-map
Fix signature index issue
2019-02-07 11:58:11 -08:00
Syrus
14806cb604 Fixed formatting and removed print debug statement 2019-02-07 11:37:15 -08:00
Mackenzie Clark
ce03e4464c fill unsetenv for windows (#150)
* fill unsetenv

* update usage of read_string_from_wasm

* convert helper to return String

* correct usage of helper fn, cargo fmt, and check in lock file change
2019-02-07 10:51:19 -08:00
Lachlan Sneff
dbea7b3abe
Merge branch 'master' into fix/signature-index-wrong-map 2019-02-07 10:46:35 -08:00
Lachlan Sneff
e147983ece fix 2019-02-07 10:45:48 -08:00
Mackenzie Clark
663de770bf
stub emscripten env calls for windows (#151) 2019-02-07 10:16:55 -08:00
Mackenzie Clark
4ab8bd69be
install errno on all platforms (#152) 2019-02-07 10:02:41 -08:00
Mackenzie Clark
bca702794c
assign to the protect enum (#153) 2019-02-07 09:04:57 -08:00
Mackenzie Clark
83df3ad35f
fix putenv and setenv for windows (#140) 2019-02-06 18:57:11 -08:00
Mackenzie Clark
ac286b708b
create the windows io mod and link printf (#144) 2019-02-06 17:56:01 -08:00
Mackenzie Clark
0a7b9b26b8
let the compiler deduce types in syscalls (#145) 2019-02-06 17:06:05 -08:00
Mackenzie Clark
f13a45a5bc
link time function and create alias for clockid_t (#146) 2019-02-06 16:40:02 -08:00
Lachlan Sneff
8fe9b7eac2
Add caching. (#134)
* Allow a module to have a different signature registry than the process-specific

* Add core ability to build compiled code caches

* Remove timing printouts

* Serialize/Deserialize memories to reduce copies

* Work more on api

* Relocate local functions relatively before external functions

* Fix incorrect definition in test

* merge errors caused by merge

* Fix emscripten compile

* Fix review comments
2019-02-06 16:26:45 -08:00
Lachlan Sneff
2f2f86a4de
Add feature flag to output debug information while running wasm (#147)
* Generate debug info during execution

* feature cfg debug output
2019-02-06 15:43:27 -08:00
Brandon Fish
2b55606d3c Add at_init emscripten_environ_constructor 2019-02-06 00:11:31 -06:00
Brandon Fish
b86acab3e4 Fix debug statement 2019-02-05 23:48:05 -06:00
Brandon Fish
3cd81d4119 Fix lua emscripten imports 2019-02-05 23:39:12 -06:00
Brandon Fish
9d16faab9d Make memalign optional if the wasm doesn't export it 2019-02-05 23:24:07 -06:00
Syrus Akbary
0f0e1d0aa5
Merge branch 'master' into feature/em-missing-imports 2019-02-05 17:30:38 -07:00
Mackenzie Clark
7bd609fd58
memory fixes for windows (#138) 2019-02-05 16:07:55 -08:00
Brandon Fish
c11f18b09c Update signatures and add missing imports 2019-02-05 17:25:51 -06:00
Lachlan Sneff
c10383c382 Fix example 2019-02-05 12:01:31 -08:00
Lachlan Sneff
271e68d88b Run fmt 2019-02-05 11:56:36 -08:00
Lachlan Sneff
308d9dde3f Fix compilation 2019-02-05 11:54:30 -08:00
Lachlan Sneff
cee248ae89 Update emscripten memory macro 2019-02-05 10:35:15 -08:00
Lachlan Sneff
8a8290b155 Add touch-ups to new memory api 2019-02-05 10:20:04 -08:00
Lachlan Sneff
f75006c062 Merge branch 'fix/emscripten-translate' of github.com:wasmerio/wasmer into fix/emscripten-translate 2019-02-04 23:08:46 -08:00
Lachlan Sneff
00db5410c5 Change memory access api again 2019-02-04 23:07:58 -08:00
Brandon Fish
309246e0d6 Add validate function and test 2019-02-05 00:01:01 -06:00
Brandon Fish
8d8dea7ec8 Implement basic C API memory functions 2019-02-04 21:46:47 -06:00
Brandon Fish
2defd27fac Also generate C++ bindings 2019-02-04 19:54:12 -06:00
Brandon Fish
6ed72a50ce Add instance_destroy back to test 2019-02-04 19:49:28 -06:00
Brandon Fish
1322446f04 Fix compilation 2019-02-04 18:46:10 -06:00
Mackenzie Clark
cc3c9b6df3
make spectests compile in emscripten update PR (#137) 2019-02-04 16:26:32 -08:00
Mackenzie Clark
ad9dff5fd0 use the fully qualified name for Ctx 2019-02-04 15:33:57 -08:00
Mackenzie Clark
765357e35d pass import object by reference in some spectests 2019-02-04 15:33:45 -08:00
Lachlan Sneff
563cda7ba2 Merge branch 'fix/emscripten-translate' of github.com:wasmerio/wasmer into fix/emscripten-translate 2019-02-04 15:08:10 -08:00
Lachlan Sneff
7fce447276 Change memory api 2019-02-04 15:07:32 -08:00
Mackenzie Clark
5f753f727c
Merge branch 'master' into fix/emscripten-translate 2019-02-04 15:05:43 -08:00
Mackenzie Clark
6a7c78d65a this name should match the function name 2019-02-04 15:01:43 -08:00
Mackenzie Clark
d231d404cb extern is no longer needed cause macro magic 2019-02-04 15:01:28 -08:00