mirror of
https://github.com/luau-lang/luau.git
synced 2024-12-13 05:20:38 +00:00
fe7621ee8c
* Work toward affording parallel type checking * The interface to `LazyType` has changed: * `LazyType` now takes a second callback that is passed the `LazyType&` itself. This new callback is responsible for populating the field `TypeId LazyType::unwrapped`. Multithreaded implementations should acquire a lock in this callback. * Modules now retain their `humanReadableNames`. This reduces the number of cases where type checking has to call back to a `ModuleResolver`. * https://github.com/Roblox/luau/pull/902 * Add timing info to the Luau REPL compilation output We've also fixed some bugs and crashes in the new solver as we march toward readiness. * Thread ICEs (Internal Compiler Errors) back to the Frontend properly * Refinements are no longer applied to lvalues * More miscellaneous stability improvements Lots of activity in the new JIT engine: * Implement register spilling/restore for A64 * Correct Luau IR value restore location tracking * Fixed use-after-free in x86 register allocator spill restore * Use btz for bit tests * Finish branch assembly support for A64 * Codesize and performance improvements for A64 * The bit32 library has been implemented for arm and x64 --------- Co-authored-by: Arseny Kapoulkine <arseny.kapoulkine@gmail.com> Co-authored-by: Vyacheslav Egorov <vegorov@roblox.com>
66 lines
5 KiB
XML
66 lines
5 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
|
|
|
|
<Type Name="Luau::CodeGen::X64::RegisterX64">
|
|
<DisplayString Condition="size == Luau::CodeGen::X64::SizeX64::none && index == 16">noreg</DisplayString>
|
|
<DisplayString Condition="size == Luau::CodeGen::X64::SizeX64::none && index == 0">rip</DisplayString>
|
|
|
|
<DisplayString Condition="size == Luau::CodeGen::X64::SizeX64::byte && index == 0">al</DisplayString>
|
|
<DisplayString Condition="size == Luau::CodeGen::X64::SizeX64::byte && index == 1">cl</DisplayString>
|
|
<DisplayString Condition="size == Luau::CodeGen::X64::SizeX64::byte && index == 2">dl</DisplayString>
|
|
<DisplayString Condition="size == Luau::CodeGen::X64::SizeX64::byte && index == 3">bl</DisplayString>
|
|
|
|
<DisplayString Condition="size == Luau::CodeGen::X64::SizeX64::dword && index == 0">eax</DisplayString>
|
|
<DisplayString Condition="size == Luau::CodeGen::X64::SizeX64::dword && index == 1">ecx</DisplayString>
|
|
<DisplayString Condition="size == Luau::CodeGen::X64::SizeX64::dword && index == 2">edx</DisplayString>
|
|
<DisplayString Condition="size == Luau::CodeGen::X64::SizeX64::dword && index == 3">ebx</DisplayString>
|
|
<DisplayString Condition="size == Luau::CodeGen::X64::SizeX64::dword && index == 4">esp</DisplayString>
|
|
<DisplayString Condition="size == Luau::CodeGen::X64::SizeX64::dword && index == 5">ebp</DisplayString>
|
|
<DisplayString Condition="size == Luau::CodeGen::X64::SizeX64::dword && index == 6">esi</DisplayString>
|
|
<DisplayString Condition="size == Luau::CodeGen::X64::SizeX64::dword && index == 7">edi</DisplayString>
|
|
<DisplayString Condition="size == Luau::CodeGen::X64::SizeX64::dword && index >= 8">e{(int)index,d}d</DisplayString>
|
|
|
|
<DisplayString Condition="size == Luau::CodeGen::X64::SizeX64::qword && index == 0">rax</DisplayString>
|
|
<DisplayString Condition="size == Luau::CodeGen::X64::SizeX64::qword && index == 1">rcx</DisplayString>
|
|
<DisplayString Condition="size == Luau::CodeGen::X64::SizeX64::qword && index == 2">rdx</DisplayString>
|
|
<DisplayString Condition="size == Luau::CodeGen::X64::SizeX64::qword && index == 3">rbx</DisplayString>
|
|
<DisplayString Condition="size == Luau::CodeGen::X64::SizeX64::qword && index == 4">rsp</DisplayString>
|
|
<DisplayString Condition="size == Luau::CodeGen::X64::SizeX64::qword && index == 5">rbp</DisplayString>
|
|
<DisplayString Condition="size == Luau::CodeGen::X64::SizeX64::qword && index == 6">rsi</DisplayString>
|
|
<DisplayString Condition="size == Luau::CodeGen::X64::SizeX64::qword && index == 7">rdi</DisplayString>
|
|
<DisplayString Condition="size == Luau::CodeGen::X64::SizeX64::qword && index >= 8">r{(int)index,d}</DisplayString>
|
|
|
|
<DisplayString Condition="size == Luau::CodeGen::X64::SizeX64::xmmword">xmm{(int)index,d}</DisplayString>
|
|
|
|
<DisplayString Condition="size == Luau::CodeGen::X64::SizeX64::ymmword">ymm{(int)index,d}</DisplayString>
|
|
</Type>
|
|
|
|
<Type Name="Luau::CodeGen::X64::OperandX64">
|
|
<DisplayString Condition="cat == 0">{base}</DisplayString>
|
|
<DisplayString Condition="cat == 1 && base.size != 0 && index.size != 0">{memSize,en} ptr[{base} + {index}*{(int)scale,d} + {imm}]</DisplayString>
|
|
<DisplayString Condition="cat == 1 && index.size != 0">{memSize,en} ptr[{index}*{(int)scale,d} + {imm}]</DisplayString>
|
|
<DisplayString Condition="cat == 1 && base.size != 0">{memSize,en} ptr[{base} + {imm}]</DisplayString>
|
|
<DisplayString Condition="cat == 1 && base.index == 0">{memSize,en} ptr[{base} + {imm}]</DisplayString>
|
|
<DisplayString Condition="cat == 1">{memSize,en} ptr[{imm}]</DisplayString>
|
|
<DisplayString Condition="cat == 2">{imm}</DisplayString>
|
|
<Expand>
|
|
<ExpandedItem Condition="cat == 0">base</ExpandedItem>
|
|
<ExpandedItem Condition="cat == 2">imm</ExpandedItem>
|
|
<Item Condition="cat == 1" Name="memSize">memSize</Item>
|
|
<Item Condition="cat == 1" Name="base">base</Item>
|
|
<Item Condition="cat == 1" Name="index">index</Item>
|
|
<Item Condition="cat == 1" Name="scale">scale</Item>
|
|
<Item Condition="cat == 1" Name="imm">imm</Item>
|
|
</Expand>
|
|
</Type>
|
|
|
|
<Type Name="Luau::CodeGen::IrOp">
|
|
<DisplayString Condition="kind == IrOpKind::None">none</DisplayString>
|
|
<DisplayString Condition="kind == IrOpKind::VmReg && (index >> 8) != 0">R{index&0xff}-v{index >> 8}</DisplayString>
|
|
<DisplayString Condition="kind == IrOpKind::VmReg">R{index&0xff}</DisplayString>
|
|
<DisplayString Condition="kind == IrOpKind::VmConst">K{index}</DisplayString>
|
|
<DisplayString Condition="kind == IrOpKind::VmUpvalue">UP{index}</DisplayString>
|
|
<DisplayString Condition="kind == IrOpKind::Inst">%{index}</DisplayString>
|
|
</Type>
|
|
|
|
</AutoVisualizer>
|