Commit Graph

65193 Commits

Author SHA1 Message Date
Nikolay Nikolov
19cce3e42e + added AtomicWait() to the WebAssembly unit 2022-05-25 20:11:54 +03:00
Nikolay Nikolov
7cac9d2f02 + added AtomicStore() to the WebAssembly unit 2022-05-25 19:39:17 +03:00
Pierre Muller
f12752372f Regenerate Makefile after: Add implicit units to wasi rtl 2022-05-25 18:34:10 +02:00
Pierre Muller
f4964691b0 Add implicit units to wasi rtl 2022-05-25 18:34:10 +02:00
Nikolay Nikolov
16f5863847 + added WebAssembly atomic store intrinsics 2022-05-25 19:22:45 +03:00
Nikolay Nikolov
219294c02b + added AtomicLoad() to the WebAssembly unit 2022-05-25 19:05:28 +03:00
Nikolay Nikolov
0103964250 + implemented WebAssembly atomic load intrinsics 2022-05-25 18:55:41 +03:00
Nikolay Nikolov
9274f17c52 + reserved inline numbers for the WebAssembly atomic loads and stores 2022-05-24 16:06:05 +03:00
Nikolay Nikolov
7fa8f514af + added AtomicCompareExchange() to the WebAssembly unit 2022-05-24 15:40:13 +03:00
Nikolay Nikolov
9ba01e7aee + added AtomicExchange() to the WebAssembly unit 2022-05-24 15:24:25 +03:00
Nikolay Nikolov
362cabe684 + added AtomicAnd(), AtomicOr() and AtomicXor() to the WebAssembly unit 2022-05-24 15:21:59 +03:00
Nikolay Nikolov
99d66b4c93 + added AtomicAdd() and AtomicSub() intrinsics to the WebAssembly unit 2022-05-24 15:16:40 +03:00
Nikolay Nikolov
585d0cf574 + added unit WebAssembly for WebAssembly-specific stuff. Currently contains
the AtomicFence intrinsic, which emits the atomic.fence instruction.
2022-05-24 14:50:42 +03:00
Nikolay Nikolov
d9781bcebe + added except_branchful.inc as a system unit dependency include file to wasm32/makefile.cpu 2022-05-24 14:10:04 +03:00
Nikolay Nikolov
8c562995d7 * regenerate makefiles with latest fpcmake 2022-05-24 14:01:59 +03:00
Nikolay Nikolov
e74797d411 * replaced several internal errors, related to the WebAssembly labels
resolution with more meaningful error messages, in order to ease the
  debugging of the compiler. Based on patch by Pierre.
2022-05-24 11:44:15 +03:00
Nikolay Nikolov
748f71e5bb + enabled compilation of units variants and rtti, bug #39579 is now fixed 2022-05-24 11:18:52 +03:00
Nikolay Nikolov
6e4e3b8580 * fixed WebAssembly code generation in thlcgwasm.g_overflowCheck_loc (patch by Pierre) 2022-05-24 11:06:59 +03:00
Nikolay Nikolov
8bea5dd41e * WebAssembly code generation fix in thlcgwasm.a_op_reg_reg_reg_checkoverflow, based on patch by Pierre (but simplified, to use a single block) 2022-05-24 11:00:10 +03:00
Nikolay Nikolov
283c213a0c * patch by Pierre, which fixes WebAssembly code generation for signed div/mod with overflow checking 2022-05-24 10:47:38 +03:00
Nikolay Nikolov
0f4340e659 * fix regressions after previous patch by correctly parsing output, which does not contain '##WASI-EXITCODE:' 2022-05-24 10:30:20 +03:00
Nikolay Nikolov
a8b789d183 * patch from Pierre for working around the exitcode <= 125 limitation in wasmtime 2022-05-24 10:15:44 +03:00
florian
32fa0ecaf9 * cleanup 2022-05-23 22:28:59 +02:00
florian
e8e53d13cd * fix #39730 as suggested by Jonas 2022-05-23 22:28:59 +02:00
mattias
172803b2f7 fcl-passrc: fixed compile pas2js 2022-05-23 00:55:46 +02:00
mattias
1b7aefc11d fcl-json: fixed compile pas2js 2022-05-23 00:55:37 +02:00
mattias
f2ba814b9e fcl-json: StringToJSON: fixed pas2js compile and less mem allocations 2022-05-23 00:50:18 +02:00
mattias
20e3a7311c pastojs: fixed absolute result 2022-05-22 23:46:29 +02:00
florian
4c8e802dd3 * continue const. propagation after a for loop when possible 2022-05-22 22:52:18 +02:00
mattias
bcea5581de pastojs: fixed call inherited of nested class 2022-05-22 19:56:39 +02:00
marcoonthegit
db9375d23f * add GetDateFormatEx, from bug #35118 by 440bx 2022-05-22 12:37:58 +02:00
Nikolay Nikolov
47c271dcd0 + implemented InterlockedIncrement, InterlockedDecrement, InterlockedExchange,
InterlockedCompareExchange and InterlockedExchangeAdd for WebAssembly in a
  thread safe way, using the thread and atomics extension, when the RTL is
  compiled with -dFPC_WASM_THREADS
2022-05-22 06:34:10 +03:00
Jonas Maebe
ccc843f983 llvmdbg: emit uppercase symbol names unless C++-style debug info is selected
Otherwise gdb won't find the symbols unless you use the exact case
2022-05-21 22:32:35 +02:00
Jonas Maebe
9a7a97175e llvmdbg: emit debug information for global variables 2022-05-21 22:32:35 +02:00
Jonas Maebe
1b393c80aa llvmdbg: fix missing initialisation when there are no procedures 2022-05-21 22:32:35 +02:00
Jonas Maebe
d0bf7acc18 llvmdbg: build hashtable to lookup llvmdecl belonging to a global variable
We need to attach the debug info to it
2022-05-21 22:32:35 +02:00
Jonas Maebe
e865ab4c3a llvmdbg: handle nil in more places
"void" is represented as "null" in LLVM debug information, which we represent
by nil
2022-05-21 22:32:35 +02:00
Jonas Maebe
a33e6230a0 llvm metadata: add DIGlobalVariableExpression enum
Only documented as of LLVM 9.0, but existed already in 7.0.
Also fixed DIGlobalVariable not being marked as unique
2022-05-21 22:32:35 +02:00
Jonas Maebe
f896766837 agllvm: fix writing metadata operands for variable declarations 2022-05-21 22:32:35 +02:00
florian
91481a5fae * more robust code for constant propagation in for loops 2022-05-21 22:32:23 +02:00
Nikolay Nikolov
f1cb5d8f71 + support intrinsic for the memory.atomic.notify WebAssembly instruction 2022-05-21 18:03:14 +03:00
Nikolay Nikolov
86643710c4 + support intrinsics for the WebAssembly memory.atomic.wait32 and memory.atomic.wait64 instructions 2022-05-21 17:53:38 +03:00
Nikolay Nikolov
3cfdf000a2 + support the new WebAssembly threads and atomics instructions in the internal assembler 2022-05-21 17:24:21 +03:00
Nikolay Nikolov
e376851fd8 * fixes to the WebAssembly atomic function intrinsics 2022-05-21 16:29:28 +03:00
mattias
08a9b16c82 fcl-json: fixed tests 2022-05-21 03:31:42 +02:00
mattias
5700cb56ac fcl-json: fixed StringToJSONString 2022-05-21 03:27:27 +02:00
Nikolay Nikolov
e03b920520 + added intrinsic support for the WebAssembly cmpxchg atomic operations as well 2022-05-21 02:52:31 +03:00
florian
a1ee4e04ed * if a for loop does not change a variable, we can propate it if it is a constant, resolves #39726 2022-05-20 22:52:27 +02:00
Jonas Maebe
8817e896db Add missing reference increases for ait_jvar labels 2022-05-20 21:18:44 +02:00
Nikolay Nikolov
d8f06aa4f1 + added instrinsic support for the all the 2-parameter read-modify-write
WebAssembly atomic operations (add, sub, and, or, xor, xchg). Note that they
  are not implemented in the internal assembler, yet.
2022-05-20 17:36:37 +03:00