Commit Graph

2050 Commits

Author SHA1 Message Date
Nick Lewycky
765e1d3b9e Add XMM8--XMM15. These were added in x64. 2019-10-14 13:46:55 -07:00
Nick Lewycky
4b89e01806 Remove commented-out code that I added so as to not lose its history in git. Apply trivial cleanups and reformat.
Remove expected test failure entries that are fixed so far.
2019-10-14 13:46:55 -07:00
Nick Lewycky
963148fdce Fix F32Min for all cases including NaNs. 2019-10-14 13:46:55 -07:00
Nick Lewycky
8b937afc1f Add comments to indicate the implemention we'd like to have, but can't right now. 2019-10-14 13:46:55 -07:00
Nick Lewycky
0f712c90ab Don't allocate another register when it's safe to reuse dst. 2019-10-14 13:46:55 -07:00
Nick Lewycky
b75e5c0c7c When we know RDX is unavailable, use RAX instead. Should be fine here. 2019-10-14 13:46:55 -07:00
Nick Lewycky
d6eba03a2f Remove loc1/loc2. That intended refactoring didn't work out. 2019-10-14 13:46:55 -07:00
Nick Lewycky
555d933057 Initial commit, reimplementation of F32Min. Fixes F32Min(negative_zero, zero) issue.
Also removes some previously-fixed i32 and i64 exclusions from the tests.
2019-10-14 13:46:55 -07:00
Syrus Akbary
5611bec3eb
Update README.md 2019-10-13 21:52:10 -07:00
Arnaud
e9f476c93b
doc: add link to SO in C api example 2019-10-13 10:30:02 +02:00
bors[bot]
2695093a03
Merge #863
863: Rewrite Min/Max to handle all cases correctly. Fixes 545 spectest failures. r=nlewycky a=nlewycky

# Description
The llvm backend was not quite following the Wasm spec for {F32,F64,F32x4xF64x2}{Min,Max}. We used the `@llvm.minnum` and `@llvm.maxnum` intrinsics which don't handle the corner cases the same. When we tried to use `@llvm.minimum` and `@llvm.maximum` which do, we get an internal error from the x86 backend. I was hoping that crash would go away with the upgrade to LLVM 9, but it does not.

Reimplement these operations using plain LLVM instructions.

# Review

- [x] Add a short description of the the change to the CHANGELOG.md file


Co-authored-by: Nick Lewycky <nick@wasmer.io>
2019-10-09 22:24:07 +00:00
bors[bot]
88f126a00b
Merge #870
870: Fix unused value warning due to inkwell API change. NFC. r=nlewycky a=nlewycky

# Description
Fix unused value warning due to inkwell API change. No functionality change.

Co-authored-by: Nick Lewycky <nick@wasmer.io>
2019-10-08 23:56:10 +00:00
Nick Lewycky
c61cbf6c0b Add a comment. 2019-10-08 11:25:10 -07:00
Nick Lewycky
afddbb2b2a Remove unused value warning due to inkwell API change. NFC. 2019-10-07 17:16:52 -07:00
bors[bot]
8f734c5b04
Merge #869
869: Remove exclusions for tests that appear to be passing right now. r=nlewycky a=nlewycky

# Description
Remove exclusions for tests that appear to be passing right now.

Co-authored-by: Nick Lewycky <nick@wasmer.io>
2019-10-08 00:13:56 +00:00
Nick Lewycky
9cdfb48d0c The i1 argument is actually named "is_zero_undef" which we want to be false.
Fixes the test failures that showed up on mac.
2019-10-07 17:11:59 -07:00
Nick Lewycky
158db4cee1 Remove exclusions for tests that appear to be passing right now. 2019-10-07 15:11:45 -07:00
Nick Lewycky
4d99963640 Replace "be the i32 type" with "be an i32" in error messages. 2019-10-07 12:11:10 -07:00
Patrick Ventuzelo
ed615c4878 fix build error docs 2019-10-07 12:56:55 +02:00
Nick Lewycky
749691ca2a Add a comment explaining why we don't use the intrinsics for these. 2019-10-04 11:50:11 -07:00
Nick Lewycky
1a7f00f0af Rewrite Min/Max to handle all cases correctly.
Fixes 545 spectest failures.
2019-10-03 18:19:12 -07:00
Patrick Ventuzelo
4b3880c88b add details when calling unimplemented! 2019-10-03 11:26:54 +02:00
nlewycky
f63c706abc
Merge branch 'master' into feature/singlepass-atomicops 2019-10-02 16:46:59 -07:00
Nick Lewycky
ab76c2357f Delete dead (commented out) code. NFC. 2019-10-02 16:31:11 -07:00
Nick Lewycky
8e63d54fdb cargo fmt 2019-10-02 16:31:11 -07:00
Nick Lewycky
83b678bc36 Give this function a better name. 2019-10-02 16:31:11 -07:00
Nick Lewycky
11c5e0d71d Make the panics a bit more descriptive. 2019-10-02 16:31:11 -07:00
Nick Lewycky
ba68cfc2c6 Finish atomic operations for singlepass, excluding wait and notify. 2019-10-02 16:31:11 -07:00
Nick Lewycky
bc7e017188 Add atomic.rmw operations, excluding xchg and cmpxchg.
Sizes are now ordered, to facilitate an assertion that one size is less (smaller) than another.

panic! error messages are provided for remaining emitter functions.
2019-10-02 16:31:11 -07:00
Nick Lewycky
f021d59a0b Refactor out a compare-and-swap loop function. 2019-10-02 16:31:11 -07:00
Nick Lewycky
cd1d06f5a5 Initial working implementation of I32AtomicRmwAnd!
Adds the ability to reserve a specific temp-gpr register. Needed for CMPXCHG which always uses RAX.
2019-10-02 16:31:11 -07:00
Nick Lewycky
6937019b65 Use a compare-and-swap loop for AND.
BUG: This might allocate RAX twice.
2019-10-02 16:31:10 -07:00
Nick Lewycky
81895830f0 Add emitter for LOCK CMPXCHG so that we can emit compare-and-swap loops. 2019-10-02 16:31:10 -07:00
Nick Lewycky
efc89e829d Add i32 rmw add and sub. 2019-10-02 16:31:10 -07:00
Nick Lewycky
98f35ef84a Initial implementation of atomic load/store and i32 atomic rmw add. 2019-10-02 16:31:10 -07:00
Mark McCaskey
c77cbc1f40 Prepare for 0.8.0 release 2019-10-02 15:40:35 -07:00
bors[bot]
38078173d3
Merge #850
850: Add builder API for WasiState r=MarkMcCaskey a=MarkMcCaskey

Nicer to use and it checks for errors!

# Review

- [x] Add a short description of the the change to the CHANGELOG.md file


Co-authored-by: Mark McCaskey <mark@wasmer.io>
Co-authored-by: Mark McCaskey <markmccaskey@users.noreply.github.com>
2019-10-02 20:17:29 +00:00
Mark McCaskey
afbde49d1f Update stub wasi generate import object fn
Fix typo

Fix debug issue
2019-10-02 13:16:47 -07:00
Mark McCaskey
5185f120f4 Update some from feedback, fix tests
format with 1.37
2019-10-02 11:25:55 -07:00
Mark McCaskey
0d997c332f Fix example in runtime readme 2019-10-01 13:45:44 -07:00
Mark McCaskey
75286b580b
Merge branch 'master' into feature/builder-api-for-wasi-state 2019-10-01 09:32:25 -07:00
Jordan Danford
9be72e6808 Fix some other files too 2019-09-30 22:50:04 -07:00
Mark McCaskey
4660bc6652 Update API to be more cleann 2019-09-30 17:52:53 -07:00
Mark McCaskey
38602b257b Move validation to end of Builder 2019-09-30 16:32:18 -07:00
Mark McCaskey
2e860e589a Add builder API for WasiState 2019-09-30 15:26:04 -07:00
Heyang Zhou
dfb8989280
Merge branch 'master' into nlewycky/singlepass-add-zero 2019-09-29 12:52:26 +08:00
Mark McCaskey
871310a851 Improve docs from feedback 2019-09-27 10:15:40 -07:00
Mark McCaskey
dc1744560c Add lots of rustdocs and clean up one line of code 2019-09-26 17:17:50 -07:00
Brandon Fish
008a1d7369 Update to published cranelift fork version 0.44.0 2019-09-26 08:43:12 -05:00
Brandon Fish
c69cdeca9b Update cranelift backend to fork version 0.44.0 2019-09-25 23:37:39 -05:00
Mark McCaskey
4266926e90 Add ImportObject maybe_with_namespace example 2019-09-25 12:37:27 -07:00
Syrus Akbary
fdc486c53d
Merge branch 'master' into feature/runtime-abi-delete 2019-09-25 10:21:20 -07:00
Patrick Ventuzelo
b45a228e84
Merge branch 'master' into ventuzelo/fix-800-index-oob-backing 2019-09-25 09:30:33 +02:00
Syrus
fec90b570b Delete unused runtime-abi 2019-09-24 22:10:03 -07:00
nlewycky
392a61ff12
Merge branch 'master' into nlewycky/singlepass-add-zero 2019-09-24 13:58:27 -07:00
Syrus
7bf306eb27 Use flat-square style in downloads button 2019-09-24 13:42:17 -07:00
Syrus
621ef56ab6 lmproved READMEs to use Azure Pipelines badges and better lgo 2019-09-24 13:36:31 -07:00
Syrus Akbary
588a77d2af
Merge branch 'master' into feature/merge-cranelift-0-43-1 2019-09-24 11:41:14 -07:00
Brandon Fish
b6d55b0b85 Update to published fork version 2019-09-24 13:30:52 -05:00
nlewycky
d7562c17ef
Merge branch 'master' into nlewycky/singlepass-add-zero 2019-09-24 10:57:57 -07:00
Nick Lewycky
be181f9119 Correct this test and simplify. 2019-09-24 10:54:23 -07:00
Patrick Ventuzelo
ac321846e3
Merge branch 'master' into ventuzelo/fix-653-panic-memorydescriptor 2019-09-24 09:10:45 +02:00
Patrick Ventuzelo
79ff3709cc fix cargo check fail build 2019-09-24 09:08:55 +02:00
Nick Lewycky
07b5991080 No need to emit add of constant zero. 2019-09-23 15:01:19 -07:00
bors[bot]
8c5ccdb497
Merge #807
807: Implement Send for Instance r=MarkMcCaskey a=MarkMcCaskey

# Review

- [x] Create a short description of the the change in the CHANGELOG.md file

Resolves #748 

WIP

## List of changes
### Commit 1
- `Global`s use Arc instead of RC
- Export `Context` and `FuncPointer` manually implement Send
- `ImportObject` uses `Arc<Mutex<HashMap<...>>>` Instead of `Rc<RefCell<HashMap<...>>>`; removed `get_namespace` method in favor of continuation style to deal with locking the Mutex
- `Func` manually implements `Send` (TODO: this change needs to be checked in depth)
### Commit 2
- `unsafe impl Send for Export {}` (temporary to allow Memory to be not Send)
- RefCell -> Mutex in Global and Table
- Rc -> Arc in Table
- Namespace's `IsExport`s must be `Send` (Done to avoid touching much more of the code (i.e. `trait IsExport: Send` requires a lot -- maybe this is what we should do though)
- Make `Host` and `Wasm` `Func`s Send (manual implementation)
- Manual implementation for `LocalTable` and `AnyFunc`
### Commit 3
- rm placeholder `unsafe impl Send for Export {}`
- Manual implementation for `LocalBacking` and `ImportBacking` (both seemed to be not Send due to direct ownership of mutable pointers in their containers)
- ImportObject's state creator Fn trait object is now ` + Send + Sync + 'static` (required because it's in an Arc)
- Manually implement Send for `InstanceInner` because it holds a raw pointer, `LocalBacking` and `ImportBacking` are marked Send separately 
- Memory: All Rc -> Arc (including unshared memory); All RefCell -> Mutex (including unshared memory)
- Manual implementation of Send and Sync on `UnsharedMemoryInternal`
- Manual implementation of Send and Sync on `SharedMemoryInternal`
- Change `runtime-core::unix::memory::Memory.fd` from `Option<Rc<Rawfd>>` to `Option<Arc<Rawfd>>` (not strictly required for this change because Memory has manual implementations of Send and Sync, but Arc seems more correct here and there's no comment justifying the use of Rc)
- Manual implementation of Send for `ImportedFunc`

Co-authored-by: Mark McCaskey <mark@wasmer.io>
Co-authored-by: Mark McCaskey <markmccaskey@users.noreply.github.com>
2019-09-23 21:20:01 +00:00
Mark McCaskey
9cab6d721f Merge branch 'feature/make-instance-send' of github.com:wasmerio/wasmer into feature/make-instance-send 2019-09-23 13:43:48 -07:00
Mark McCaskey
c4818f12dc Update spectests to work with new Instance; use Arc<Mutex<>> 2019-09-23 13:43:01 -07:00
Syrus Akbary
eed033021b
Merge pull request #825 from Hywan/doc-runtime-core-memory-view
doc(runtime-core) Replace `map(|cell| cell.get())` by `map(Cell::get)`.
2019-09-23 11:34:00 -07:00
Mark McCaskey
705287c317
Merge branch 'master' into feature/make-instance-send 2019-09-23 11:06:00 -07:00
Mark McCaskey
1e637badc4 Merge remote-tracking branch 'origin/master' into feature/make-instance-send 2019-09-23 11:05:00 -07:00
Mark McCaskey
05ad1aaea4 Add test for Instance, fix tests for ImportObject 2019-09-23 11:04:31 -07:00
Ivan Enderlin
f289cb2ba9 doc(runtime-core) Replace map(|cell| cell.get()) by map(Cell::get).
Because it's simpler :-p.
2019-09-23 15:15:06 +02:00
Patrick Ventuzelo
5ace7a0af3 fix failing test 2019-09-23 11:17:02 +02:00
Syrus
9942d3ae98 Improved Emscripten / WASI autodetection 2019-09-22 18:23:22 -07:00
Azure Pipelines
8e2f526f73 Added cpp example 2019-09-22 17:42:19 -07:00
Azure Pipelines
009c123332 Fixed emscripten main functions 2019-09-22 17:29:12 -07:00
Brandon Fish
a1a88c6eb8 Use the default features for wasmparser 2019-09-21 13:59:08 -05:00
Brandon Fish
f48d6f6690 Cranelift backend update to fork of clif version 0.43.1 2019-09-21 13:06:54 -05:00
bors[bot]
7d9e6d8caa
Merge #821
821: Remove patch version in deps when not necessary r=MarkMcCaskey a=MarkMcCaskey

This allows wasmer library users to have more control over the exact versions of deps that Wasmer uses.

# Review

- [x] Add a short description of the the change to the CHANGELOG.md file


Co-authored-by: Mark McCaskey <mark@wasmer.io>
2019-09-20 23:44:37 +00:00
Syrus Akbary
862a4c5448
Merge pull request #814 from confio/fix-linux-image-link-error
Fix issues with testing/linking singlepass in runtime-c-api
2019-09-20 16:33:30 -07:00
Mark McCaskey
bf396ec76d Remove patch version in deps when not necessary 2019-09-20 16:11:09 -07:00
Mark McCaskey
7f2c532594 Allow dead code in emscripten WasmPtr 2019-09-20 13:19:31 -07:00
Mark McCaskey
882a77ccf9 Remove null pointer checks generally, re-add them in Emscripten 2019-09-20 12:02:12 -07:00
Patrick Ventuzelo
7deed3160b cargo fmt 2019-09-20 18:59:36 +02:00
Patrick Ventuzelo
ca409f78c5 fix spectest 2019-09-20 18:54:05 +02:00
bors[bot]
0790ebff0c
Merge #803
803: Add method to call function at index on Ctx r=MarkMcCaskey a=MarkMcCaskey

For #638 and #670

```Rust
fn call_guest_fn(ctx: &mut Ctx, guest_fn: u32) -> u32 {
    println!("{}", guest_fn);

    let guest_fn_typed = unsafe { std::mem::transmute(guest_fn) };

    let result = ctx.call_with_table_index(guest_fn_typed, &[]).unwrap();
    println!("  -> {:?}", result);

    0
}
```
is what this looks like from the Host side

See `examples/callback.rs` for an example that doesn't require `transmute`


# Review

- [x] Create a short description of the the change in the CHANGELOG.md file


Co-authored-by: Mark McCaskey <mark@wasmer.io>
Co-authored-by: Mark McCaskey <markmccaskey@users.noreply.github.com>
2019-09-19 20:55:09 +00:00
Ivan Enderlin
9a49fb59e0
Merge branch 'master' into fix-test-typo 2019-09-19 22:15:32 +02:00
bors[bot]
dd1a4a6c10
Merge #805
805: Replace panic! & unimplemented! in runtime-code and llvm-backend r=nlewycky a=pventuzelo

# Description

Replace `unimplemented!` by already used `CodegenError` in `lib/llvm-backend/src/code.rs`
Replace `unimplemented!` by `Err` in `lib/llvm-backend/src/trampolines.rs`
Replace `panic!` by already used `BinaryReaderError` in `lib/runtime-core/src/parse.rs`

# Review

- [ ] Create a short description of the the change in the CHANGELOG.md file


Co-authored-by: Patrick Ventuzelo <ventuzelo.patrick@gmail.com>
2019-09-19 19:20:04 +00:00
Johan Andersson
8d0edc61df Merge master 2019-09-19 11:16:14 +02:00
Mark McCaskey
a9d8b22fe7
Merge branch 'master' into feature/call-function-at-index-on-just-ctx 2019-09-18 16:46:08 -07:00
Mark McCaskey
ccd369ff0c Add example, rename Ctx fn, make things pub(crate), misc changes 2019-09-18 16:43:47 -07:00
Mark McCaskey
5741a2cf70 Implement function lookups using the table 2019-09-18 16:06:46 -07:00
Ethan Frey
8ae255b51a Fix issues with testing/linking singlepass in runtime-c-api 2019-09-19 00:19:17 +02:00
Ethan Frey
e8a918e2e5 %lld -> %ld fixes cargo test compile error 2019-09-18 23:25:35 +02:00
Patrick Ventuzelo
315b87c718 check index before accessing imports.globals 2019-09-18 10:28:49 +02:00
Mark McCaskey
9c205e05a2 Add comments explaining the unsafe impls and simplify the code, too 2019-09-17 18:35:12 -07:00
Mark McCaskey
83c3909b00 Implement it for memory and make Instance Send 2019-09-17 14:58:26 -07:00
Mark McCaskey
9e9343878d Implement Send for everything except Memory 2019-09-17 11:45:13 -07:00
Mark McCaskey
17a0e78cef Implement Send for Instance 2019-09-17 10:37:37 -07:00
Patrick Ventuzelo
374f81972a remove panic from UnsharedMemory 2019-09-17 17:46:36 +02:00