luau/CodeGen/src
Andy Friesen 74c532053f
Sync to upstream/release/604 (#1106)
New Solver

* New algorithm for inferring the types of locals that have no
annotations. This
algorithm is very conservative by default, but is augmented with some
control
  flow awareness to handle most common scenarios.
* Fix bugs in type inference of tables
* Improve performance of by switching out standard C++ containers for
`DenseHashMap`
* Infrastructure to support clearer error messages in strict mode

Native Code Generation

* Fix a lowering issue with buffer.writeu8 and 0x80-0xff values: A
constant
  argument wasn't truncated to the target type range and that causes an
  assertion failure in `build.mov`.
* Store full lightuserdata value in loop iteration protocol lowering
* Add analysis to compute function bytecode distribution
* This includes a class to analyze the bytecode operator distribution
per
function and a CLI tool that produces a JSON report. See the new cmake
      target `Luau.Bytecode.CLI`

---------

Co-authored-by: Aaron Weiss <aaronweiss@roblox.com>
Co-authored-by: Alexander McCord <amccord@roblox.com>
Co-authored-by: Andy Friesen <afriesen@roblox.com>
Co-authored-by: Aviral Goel <agoel@roblox.com>
Co-authored-by: Lily Brown <lbrown@roblox.com>
Co-authored-by: Vyacheslav Egorov <vegorov@roblox.com>
2023-11-17 10:46:18 -08:00
..
AssemblyBuilderA64.cpp Sync to upstream/release/600 (#1076) 2023-10-20 18:10:30 -07:00
AssemblyBuilderX64.cpp Sync to upstream/release/604 (#1106) 2023-11-17 10:46:18 -08:00
BitUtils.h Sync to upstream/release/574 (#910) 2023-04-28 12:55:13 -07:00
BytecodeSummary.cpp Sync to upstream/release/604 (#1106) 2023-11-17 10:46:18 -08:00
ByteUtils.h Sync to upstream/release/603 (#1097) 2023-11-10 13:10:07 -08:00
CodeAllocator.cpp Rename Windows.h to windows.h (#1055) 2023-10-03 06:59:44 -07:00
CodeBlockUnwind.cpp Rename Windows.h to windows.h (#1055) 2023-10-03 06:59:44 -07:00
CodeGen.cpp Sync to upstream/release/600 (#1076) 2023-10-20 18:10:30 -07:00
CodeGenA64.cpp Sync to upstream/release/598 (#1063) 2023-10-06 12:02:32 -07:00
CodeGenA64.h Sync to upstream/release/572 (#899) 2023-04-14 11:06:22 -07:00
CodeGenAssembly.cpp Sync to upstream/release/600 (#1076) 2023-10-20 18:10:30 -07:00
CodeGenLower.h Sync to upstream/release/602 (#1089) 2023-11-03 16:45:04 -07:00
CodeGenUtils.cpp Sync to upstream/release/602 (#1089) 2023-11-03 16:45:04 -07:00
CodeGenUtils.h Sync to upstream/release/602 (#1089) 2023-11-03 16:45:04 -07:00
CodeGenX64.cpp Sync to upstream/release/598 (#1063) 2023-10-06 12:02:32 -07:00
CodeGenX64.h Sync to upstream/release/572 (#899) 2023-04-14 11:06:22 -07:00
EmitBuiltinsX64.cpp Sync to upstream/release/590 (#1008) 2023-08-11 07:42:37 -07:00
EmitBuiltinsX64.h Sync to upstream/release/574 (#910) 2023-04-28 12:55:13 -07:00
EmitCommon.h Sync to upstream/release/600 (#1076) 2023-10-20 18:10:30 -07:00
EmitCommonA64.h Sync to upstream/release/591 (#1012) 2023-08-18 11:15:41 -07:00
EmitCommonX64.cpp Sync to upstream/release/598 (#1063) 2023-10-06 12:02:32 -07:00
EmitCommonX64.h Sync to upstream/release/598 (#1063) 2023-10-06 12:02:32 -07:00
EmitInstructionX64.cpp Sync to upstream/release/598 (#1063) 2023-10-06 12:02:32 -07:00
EmitInstructionX64.h Sync to upstream/release/592 (#1018) 2023-08-25 10:23:55 -07:00
IrAnalysis.cpp Add #include <algorithm> to fix building with gcc 14 (#1104) 2023-11-16 11:51:16 -08:00
IrBuilder.cpp Sync to upstream/release/601 (#1084) 2023-10-27 14:18:41 -07:00
IrCallWrapperX64.cpp Sync to upstream/release/592 (#1018) 2023-08-25 10:23:55 -07:00
IrDump.cpp Sync to upstream/release/603 (#1097) 2023-11-10 13:10:07 -08:00
IrLoweringA64.cpp Sync to upstream/release/604 (#1106) 2023-11-17 10:46:18 -08:00
IrLoweringA64.h Sync to upstream/release/603 (#1097) 2023-11-10 13:10:07 -08:00
IrLoweringX64.cpp Sync to upstream/release/604 (#1106) 2023-11-17 10:46:18 -08:00
IrLoweringX64.h Sync to upstream/release/603 (#1097) 2023-11-10 13:10:07 -08:00
IrRegAllocA64.cpp Sync to upstream/release/598 (#1063) 2023-10-06 12:02:32 -07:00
IrRegAllocA64.h Sync to upstream/release/595 (#1044) 2023-09-15 10:26:59 -07:00
IrRegAllocX64.cpp Sync to upstream/release/596 (#1050) 2023-09-22 12:12:15 -07:00
IrTranslateBuiltins.cpp Sync to upstream/release/603 (#1097) 2023-11-10 13:10:07 -08:00
IrTranslateBuiltins.h Sync to upstream/release/584 (#977) 2023-07-14 11:08:53 -07:00
IrTranslation.cpp Sync to upstream/release/604 (#1106) 2023-11-17 10:46:18 -08:00
IrTranslation.h Sync to upstream/release/598 (#1063) 2023-10-06 12:02:32 -07:00
IrUtils.cpp Sync to upstream/release/603 (#1097) 2023-11-10 13:10:07 -08:00
IrValueLocationTracking.cpp Sync to upstream/release/603 (#1097) 2023-11-10 13:10:07 -08:00
IrValueLocationTracking.h Sync to upstream/release/596 (#1050) 2023-09-22 12:12:15 -07:00
lcodegen.cpp Add CodeGen C API (#931) 2023-05-18 04:03:29 -07:00
NativeState.cpp Sync to upstream/release/602 (#1089) 2023-11-03 16:45:04 -07:00
NativeState.h Sync to upstream/release/602 (#1089) 2023-11-03 16:45:04 -07:00
OptimizeConstProp.cpp Sync to upstream/release/604 (#1106) 2023-11-17 10:46:18 -08:00
OptimizeFinalX64.cpp Sync to upstream/release/593 (#1024) 2023-09-01 10:58:27 -07:00
UnwindBuilderDwarf2.cpp Sync to upstream/release/592 (#1018) 2023-08-25 10:23:55 -07:00
UnwindBuilderWin.cpp Sync to upstream/release/592 (#1018) 2023-08-25 10:23:55 -07:00