luau/CodeGen/include/Luau
Andy Friesen 721f6e10fb
Sync to upstream/release/577 (#934)
Lots of things going on this week:

* Fix a crash that could occur in the presence of a cyclic union. We
shouldn't be creating cyclic unions, but we shouldn't be crashing when
they arise either.
* Minor cleanup of `luau_precall`
* Internal change to make L->top handling slightly more uniform
* Optimize SETGLOBAL & GETGLOBAL fallback C functions.
* https://github.com/Roblox/luau/pull/929
* The syntax to the `luau-reduce` commandline tool has changed. It now
accepts a script, a command to execute, and an error to search for. It
no longer automatically passes the script to the command which makes it
a lot more flexible. Also be warned that it edits the script it is
passed **in place**. Do not point it at something that is not in source
control!

New solver

* Switch to a greedier but more fallible algorithm for simplifying union
and intersection types that are created as part of refinement
calculation. This has much better and more predictable performance.
* Fix a constraint cycle in recursive function calls.
* Much improved inference of binary addition. Functions like `function
add(x, y) return x + y end` can now be inferred without annotations. We
also accurately typecheck calls to functions like this.
* Many small bugfixes surrounding things like table indexers
* Add support for indexers on class types. This was previously added to
the old solver; we now add it to the new one for feature parity.

JIT

* https://github.com/Roblox/luau/pull/931
* Fuse key.value and key.tt loads for CEHCK_SLOT_MATCH in A64
* Implement remaining aliases of BFM for A64
* Implement new callinfo flag for A64
* Add instruction simplification for int->num->int conversion chains
* Don't even load execdata for X64 calls
* Treat opcode fallbacks the same as manually written fallbacks

---------

Co-authored-by: Arseny Kapoulkine <arseny.kapoulkine@gmail.com>
Co-authored-by: Vyacheslav Egorov <vegorov@roblox.com>
2023-05-19 12:37:30 -07:00
..
AddressA64.h Sync to upstream/release/572 (#899) 2023-04-14 11:06:22 -07:00
AssemblyBuilderA64.h Sync to upstream/release/577 (#934) 2023-05-19 12:37:30 -07:00
AssemblyBuilderX64.h Sync to upstream/release/576 (#928) 2023-05-12 10:50:47 -07:00
CodeAllocator.h Sync to upstream/release/568 (#865) 2023-03-17 12:20:37 -07:00
CodeBlockUnwind.h Sync to upstream/release/576 (#928) 2023-05-12 10:50:47 -07:00
CodeGen.h Sync to upstream/release/576 (#928) 2023-05-12 10:50:47 -07:00
ConditionA64.h Sync to upstream/release/573 (#903) 2023-04-21 15:14:26 -07:00
ConditionX64.h Sync to upstream/release/552 (#735) 2022-11-04 10:33:22 -07:00
IrAnalysis.h Sync to upstream/release/575 (#919) 2023-05-05 14:52:49 -07:00
IrBuilder.h Sync to upstream/release/574 (#910) 2023-04-28 12:55:13 -07:00
IrCallWrapperX64.h Sync to upstream/release/572 (#899) 2023-04-14 11:06:22 -07:00
IrData.h Sync to upstream/release/575 (#919) 2023-05-05 14:52:49 -07:00
IrDump.h Sync to upstream/release/575 (#919) 2023-05-05 14:52:49 -07:00
IrRegAllocX64.h Sync to upstream/release/572 (#899) 2023-04-14 11:06:22 -07:00
IrUtils.h Sync to upstream/release/575 (#919) 2023-05-05 14:52:49 -07:00
Label.h Sync to upstream/release/529 (#505) 2022-05-26 15:08:16 -07:00
OperandX64.h Sync to upstream/release/566 (#853) 2023-03-03 12:21:14 -08:00
OptimizeConstProp.h Sync to upstream/release/574 (#910) 2023-04-28 12:55:13 -07:00
OptimizeFinalX64.h Sync to upstream/release/563 (#833) 2023-02-10 11:40:38 -08:00
RegisterA64.h Sync to upstream/release/574 (#910) 2023-04-28 12:55:13 -07:00
RegisterX64.h Sync to upstream/release/572 (#899) 2023-04-14 11:06:22 -07:00
UnwindBuilder.h Sync to upstream/release/575 (#919) 2023-05-05 14:52:49 -07:00
UnwindBuilderDwarf2.h Sync to upstream/release/575 (#919) 2023-05-05 14:52:49 -07:00
UnwindBuilderWin.h Sync to upstream/release/575 (#919) 2023-05-05 14:52:49 -07:00