Commit Graph

470 Commits

Author SHA1 Message Date
Amanieu d'Antras
4c946257cf Update Cranelift to 0.82 2022-04-06 16:23:32 +01:00
Amanieu d'Antras
3ad9552e2e Update wasmparser to 0.83 2022-04-06 16:23:32 +01:00
ptitSeb
b5f4d47370 Merge branch 'master' into feat/TrapInformation_improvments 2022-04-04 16:19:55 +02:00
ptitSeb
61263bc914 Use Undefined instruction with payload to carry over TrapInformation without using an vector or hashmap on Singlepass 2022-04-04 16:16:35 +02:00
ptitSeb
dec097e500 Merge branch 'master' into feat/singlepass_ehframe 2022-03-17 15:52:42 +01:00
ptitSeb
32603a2f4c Simplifed generation of unwind info in singlepass codegen 2022-03-17 12:20:57 +01:00
ptitSeb
aebcb3e693 Renamed 'gen_unwind_info' to 'gen_dwarf_unwind_info' for better clarity 2022-03-17 12:03:25 +01:00
ptitSeb
324a2517a1 Merge branch 'master' into feat/singlepass_ehframe 2022-03-17 10:57:39 +01:00
ptitSeb
dab1d2b46a Merge branch 'master' into feat/singlepass_dylib 2022-03-16 16:04:22 +01:00
bors[bot]
fc794ab4e3 Merge #2807
2807: Run Wasm code on a separate stack r=Amanieu a=Amanieu

This uses the [corosensei](https://crates.io/crates/corosensei) crate to
run Wasm code on a separate stack from the main thread stack.

In trap handlers for stack overflows and memory out of bounds accesses,
we can now check whether we are executing on the Wasm stack and reset
execution back to the main thread stack when returning from the trap
handler.

When Wasm code needs to perform an operation which may modify internal
data structures (e.g. growing a memory) then execution must switch back
to the main thread stack using on_host_stack. This is necessary to avoid
leaving internal data structure in an inconsistent state when a stack
overflow happens.

In the future, this can also be used to suspend execution of a Wasm
module (#1127) by modeling it as an async function call.

Fixes #2757
Fixes #2562


Co-authored-by: Amanieu d'Antras <amanieu@gmail.com>
2022-03-16 13:24:50 +00:00
ptitSeb
44faa7e86a Merge branch 'master' into feat/singlepass_dylib 2022-03-16 10:15:45 +01:00
ptitSeb
fd62d3e9dc Merge branch 'master' into feat/singlepass_dylib 2022-03-15 14:22:15 +01:00
ptitSeb
80cee07df9 Removed unused emit_ldr_label and emit_nop arm64 emiter 2022-03-15 14:14:52 +01:00
Amanieu d'Antras
fe9d2d8d22 Release version 2.2.1 2022-03-15 11:02:31 +00:00
Amanieu d'Antras
2b86fe802f Fix stack probing typo 2022-03-14 22:14:22 +00:00
Amanieu d'Antras
054e524001 Fix stack probing in the singlepass compiler
Stack probes must be done before the stack pointer is adjusted. This
ensures that the stack pointer is still within the bounds of the stack
when inspected by the signal handler.
2022-03-14 22:14:22 +00:00
ptitSeb
f1b23b3af1 Small cleanup 2022-03-11 16:06:09 +01:00
ptitSeb
408847ee75 Added support for Windows x64 in Singlepass for Unwind infos 2022-03-11 16:01:07 +01:00
ptitSeb
3bc9505cd7 Added some support for Eh_frame generation on Aarch64 singlpass 2022-03-08 14:24:43 +01:00
ptitSeb
d8c9f0ebdd Added a emit_unwind_op helper 2022-03-04 16:41:05 +01:00
ptitSeb
e7fff40a27 More fix for no-unwind build 2022-03-03 16:43:02 +01:00
ptitSeb
9e56f563a9 Fix for no-unwind build 2022-03-03 15:46:30 +01:00
ptitSeb
16d2b78776 Filling some FDE information on x86_64 now 2022-03-03 14:41:28 +01:00
ptitSeb
064657849d Try to fix no-unwind build 2022-03-02 14:02:19 +01:00
ptitSeb
187b7508c9 Added some infrastructure to generate EH_Frame in singlepass compiler 2022-03-02 12:21:55 +01:00
Amanieu d'Antras
4dd1634218 Release version 2.2.0 2022-02-28 17:19:14 +00:00
ptitSeb
ffc559a2bb Change the relocation type for x86_64 on Singlepass and removed the command on linker that enable write to text section 2022-02-23 15:21:26 +01:00
ptitSeb
4f710acb7a Fixed dylib-singlepass on macos/Arm64 2022-02-23 10:33:46 +01:00
ptitSeb
b7d705ab89 Changed how relocations are handled in singlepass/aarch64 2022-02-22 17:01:58 +01:00
ptitSeb
b6b07ba4e4 Fix singlepass Arm64 since #2775 2022-02-18 16:43:40 +01:00
R2D2
3f2fa63995 [chore]: Linting / formatting 2022-02-17 15:09:07 +01:00
R2D2
b6a596fe13 [chore]: Merged in upstream/master 2022-02-17 10:51:31 +01:00
Amanieu d'Antras
15f9d2646f Release version 2.2.0-rc1 2022-02-15 19:10:24 +00:00
ptitSeb
c2a998224b Some more aarch64 emitter, after some fuzz testing 2022-02-14 17:50:20 +01:00
ptitSeb
5ebae6f34e Remove HashSet on SinglePass register collection and use a simple Bitmap now, to avoid risk of non deterministic runs 2022-02-11 16:20:32 +01:00
R2D2
c0239987c8 [fix]: Added assert guard in SSE support against the case that src2 == dst 2022-02-11 13:32:45 +01:00
ptitSeb
b3b1c8b5f5 Removed the sort on gprs/simds list before push/pop, by using a single vec for the push/pop 2022-02-11 13:27:59 +01:00
R2D2
6090608f8a Merge remote-tracking branch 'upstream/master' into bat/feature/add-sse-singlepass 2022-02-11 10:32:39 +01:00
ptitSeb
a9fab001e8 Fix a singlepass codegen regression, but forcing a sort on gprs/simds list before push/pop 2022-02-11 10:23:47 +01:00
R2D2
8283a635bd [fix]: Fixed a few stray mistakes in the sse_fn macro 2022-02-10 10:48:11 +01:00
ptitSeb
17b3a94d36 Singlepass: added some more emiter 2022-02-08 09:41:02 +01:00
R2D2
98b70d9ad1 [fix]: Fixed some errors in the register being used in sse instructions. Changed the roundss/sd function 2022-02-06 21:17:25 +01:00
ptitSeb
f27d0a9bd7 Fix Sdinglepass f32_load and f64_load function, and introduce emit_bcond_label_far as direct bcond may not work all the time (for #2777) 2022-02-01 15:08:55 +01:00
R2D2
4ee83b3498 [chore]: Cleaning up doc strings from an over-zealous clion refactoring 2022-01-31 11:59:51 +01:00
R2D2
17d410531c [chore]: Formatting 2022-01-31 11:55:05 +01:00
R2D2
d42ec572fd [fix]: Cleanups after resolving conflicts with master 2022-01-31 11:52:06 +01:00
Jacob Turner
82bc23e082 Merge branch 'master' into bat/feature/add-sse-singlepass 2022-01-31 11:46:47 +01:00
R2D2
abcbc13af9 [feat]: Refactored how macros emit additional movss/movsd instructions. Added >= SSE 4.1 implementation for emit_vblendvpd. Added some TODOs 2022-01-31 11:25:18 +01:00
R2D2
b32b5cfa53 [feat]: Adding the plumbing necessary for the singlepass to choose between different simd instruction sets. Partial work on supporting SSE4.2 2022-01-30 10:55:26 +01:00
Amanieu d'Antras
4e27e1164c Release version 2.2.0-rc1 2022-01-27 23:59:27 +00:00