Commit Graph

63591 Commits

Author SHA1 Message Date
florian
b5c7997c88 + Aarch64: AndCmpB.E/NE2Tbnz/Tbz optimization 2021-10-02 15:46:37 +02:00
florian
177b38dfe9 * modified (cosmetics) patch by Rika: replace DJB2 with MurmurHash3, resolves #39377 2021-10-01 23:06:31 +02:00
Nikolay Nikolov
02745b0b83 + implemented GetDate, GetTime and WeekDay in the WASI dos unit. They return
UTC time (I don't know how to obtain the local time zone from within WASI).
2021-10-01 06:34:52 +03:00
Nikolay Nikolov
d2726c2406 * fixed WebAssembly code generation for not(cbool64) 2021-10-01 05:17:12 +03:00
Nikolay Nikolov
9aefda1e6a * bug fix in test taddbool.pp - it was testing longbool conversion to boolean
twice, and not testing wordbool conversion to boolean at all
2021-10-01 04:56:36 +03:00
Nikolay Nikolov
4fc763ac50 * fixed WebAssembly cbool support for OP_NOT 2021-10-01 04:54:17 +03:00
Nikolay Nikolov
baf5ff4e05 * another WebAssembly cbool fix in twasmtypeconvnode.second_int_to_bool 2021-10-01 04:40:50 +03:00
Nikolay Nikolov
968e23546c * fixed second_int_to_bool for cbool types for WebAssembly 2021-10-01 04:20:02 +03:00
Nikolay Nikolov
188a21bbfd * fixed 'not(boolean64)' for WebAssembly 2021-10-01 03:01:55 +03:00
Nikolay Nikolov
c6a549eb48 * int64/boolean64 fix in twasmtypeconvnode.second_int_to_bool 2021-10-01 02:57:04 +03:00
Nikolay Nikolov
2e5b895d70 * fixed WebAssembly code generation for 'if boolean64 then ... else ...' 2021-10-01 02:47:08 +03:00
Nikolay Nikolov
4d571a1928 * fixed code generation for 'boolean64 and/or boolean64' for WebAssembly 2021-10-01 02:43:55 +03:00
florian
abd494624b * properly search in GetMMRegisterBetween and GetIntRegisterBetween for usable
volatile registers (low(<set>) .. high(<set) just searched all possible elements
    and not only the included ones)
2021-09-29 22:30:51 +02:00
J. Gareth "Kit" Moreton
1f19b11398 x86_64: Fix to tw8573 overflow bug under -Cg option 2021-09-29 18:32:31 +00:00
Pierre Muller
5446d53156 Update to use gitlab 2021-09-29 17:23:28 +02:00
flyingsheep
6c6cb13a5e * Fix for issue #39379 by bart broersma 2021-09-29 17:21:57 +02:00
Nikolay Nikolov
91d8009b53 + implemented round(real) for WebAssembly via the fXX.nearest and i64.trunc_fXX_s instructions 2021-09-29 05:27:27 +03:00
Nikolay Nikolov
835bc62e2a + implemented trunc(real) for WebAssembly via the i64.trunc_f32_s and i64.trunc_f64_s instructions 2021-09-29 05:07:43 +03:00
Nikolay Nikolov
f6b4a54f7d * fixed output of 32-bit floating point constants in the llvm-mc asm output 2021-09-29 04:57:19 +03:00
Nikolay Nikolov
d84a7d1bde + implemented int(real) for WebAssembly via the f32.trunc and f64.trunc instructions 2021-09-29 04:19:10 +03:00
Nikolay Nikolov
8822be8a1f + implemented abs(real) for WebAssembly via the f32.abs and f64.abs instructions 2021-09-29 04:04:03 +03:00
Nikolay Nikolov
f42817d1a2 * fixed opcode generation for the f32.const in the WebAssembly internal asm 2021-09-29 03:56:13 +03:00
Nikolay Nikolov
95243ed6ed + implemented sqrt via the f32.sqrt and f64.sqrt instructions 2021-09-29 03:48:31 +03:00
Nikolay Nikolov
6e6c946e0f * the fpc_Catches result test code was inverted 2021-09-29 00:17:17 +03:00
florian
7ce1a7c6a0 * x86_64-linux doesn't need .data.rel.ro either 2021-09-28 23:13:35 +02:00
Nikolay Nikolov
99dbbcadcd + generate functype directives for all functions in all used units, regardless
of whether they have paraloc info created. This fixes linking of WebAssembly
  programs that declare their own classes, because that causes the compiler to
  generate a VMT, containing references to virtual methods, and these don't
  necessarily have paraloc info (if they're not called from within the program)
2021-09-29 00:04:23 +03:00
Nikolay Nikolov
6e7f0744ca + implemented the 'on' node for WebAssembly in native exceptions mode 2021-09-28 23:55:10 +03:00
Nikolay Nikolov
0e647a073e + override the 'on' node for WebAssembly 2021-09-28 21:23:49 +03:00
Nikolay Nikolov
ef738f01cf * fixed warning 2021-09-28 20:39:47 +03:00
Nikolay Nikolov
f2abce7ea5 + initial implementation of try..except..end in wasm native exceptions mode.
The 'on' statements are not implemented yet.
2021-09-28 20:23:27 +03:00
Michaël Van Canneyt
93b3315691 * Parse cookies also when setting variable based on name 2021-09-28 10:15:58 +02:00
Michaël Van Canneyt
bfe3afbc62 * Add error check 2021-09-28 10:14:18 +02:00
Nikolay Nikolov
99e449eaa1 * decblock moved after end_try, instead of after catch 2021-09-28 04:11:16 +03:00
Nikolay Nikolov
3836b0be04 * longjmp in fpc_reraise changed to a throw instruction intrinsic in wasm native exceptions mode 2021-09-28 04:02:52 +03:00
Nikolay Nikolov
0c3e179652 - get rid of fpc_PushExceptAddr and fpc_PopAddrStack entirely, when compiling in
wasm native exceptions mode - these helper routines aren't necessary in this
  mode
2021-09-28 03:59:38 +03:00
Nikolay Nikolov
91f0f1a86c * don't include except.inc if wasm32 native exception is turned on, instead
replace it with except_native.inc
2021-09-28 03:46:30 +03:00
Nikolay Nikolov
73bc8edef3 + RTL support for raising exceptions in native wasm exceptions mode 2021-09-28 03:31:04 +03:00
Nikolay Nikolov
c9fd115ec5 * fixes to the try..finally code generation in wasm native exceptions mode 2021-09-28 03:29:45 +03:00
Nikolay Nikolov
21fd8cd5d3 * updated ppudump with the new asm symbol types and binding types 2021-09-28 03:01:09 +03:00
Nikolay Nikolov
cdf1ceca76 * emit a weak symbol for the exception tag, since that's what the LLVM linker
wants to treat them as shared between .o files
2021-09-28 02:52:40 +03:00
Nikolay Nikolov
f701d2f294 + support in_wasm32_throw_fpcexception in twasminlinenode.pass_typecheck_cpu 2021-09-28 01:11:01 +03:00
Nikolay Nikolov
ec0bdfbdd9 * fill exceptstate variables and update flowcontrol in
twasmexceptionstatehandler_nativeexceptions.new_exception
- removed the TODO comment, generated in the asm output by
  twasmexceptionstatehandler_nativeexceptions.free_exception
2021-09-28 00:19:13 +03:00
J. Gareth "Curious Kit" Moreton
15b2f9a7b1 Changed get_volatile_registers_mm to not return XMM16 to XMM31 when not under AVX512 2021-09-27 18:47:03 +00:00
Nikolay Nikolov
b463f2a141 + added support for exception tags and for the 'throw' and 'catch' instructions
in the wasm internal assembler and object writer
2021-09-27 21:44:09 +03:00
Nikolay Nikolov
82b6450f19 + introduced the AT_WASM_EXCEPTION_TAG asm symbol type, use that for specifying
the parameter to the 'throw' and 'catch' instructions
2021-09-27 17:49:30 +03:00
Nikolay Nikolov
e0ad427b6c + introduced the FPC_EXCEPTION_TAG_SYM string constant 2021-09-27 17:38:28 +03:00
Nikolay Nikolov
b46c010f82 + also support immutable wasm globals in the wasm assembler writer (both internal and external) 2021-09-27 05:40:26 +03:00
Nikolay Nikolov
7b31549119 * the data section is now only written by the internal wasm object writer, when
there are data segments in the module
2021-09-27 05:17:20 +03:00
Nikolay Nikolov
e85aff2b96 * combined TWasmObjSymbol.ImportIndex and .FuncIndex into just .FuncIndex,
because there's no point in having them separate, and the name ImportIndex
  is misleading, as there are multiple import indices (they are separate for
  functions, globals, tables, memories, etc.)
2021-09-27 04:53:35 +03:00
Nikolay Nikolov
2bce4d36db + proper support for WASM globals in the internal object writer - emit
relocations, generate a Global section, if they are declared in the object
  file, etc.
2021-09-27 04:24:49 +03:00