mirror of
https://github.com/luau-lang/luau.git
synced 2024-11-15 22:35:43 +08:00
a6b5051edc
* https://github.com/Roblox/luau/pull/719 * Improved `Failed to unify type packs` error message to be reported as `Type pack 'X' could not be converted into 'Y'` * https://github.com/Roblox/luau/pull/722 * 1% reduction in executed instruction count by removing a check in fast call dispatch * Additional fixes to reported error location of OOM errors in VM * Improve `math.sqrt`, `math.floor` and `math.ceil` performance on additional compilers and platforms (1-2% geomean improvement including 8-9% on math-cordic) * All thrown exceptions by Luau analysis are derived from `Luau::InternalCompilerError` * When a call site has fewer arguments than required, error now reports the location of the function name instead of the argument to the function * https://github.com/Roblox/luau/pull/724 * Fixed https://github.com/Roblox/luau/issues/725 Co-authored-by: Arseny Kapoulkine <arseny.kapoulkine@gmail.com> Co-authored-by: Andy Friesen <afriesen@roblox.com>
37 lines
924 B
C++
37 lines
924 B
C++
// This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details
|
|
#pragma once
|
|
|
|
#include <string>
|
|
|
|
struct lua_State;
|
|
|
|
namespace Luau
|
|
{
|
|
namespace CodeGen
|
|
{
|
|
|
|
bool isSupported();
|
|
|
|
void create(lua_State* L);
|
|
|
|
// Builds target function and all inner functions
|
|
void compile(lua_State* L, int idx);
|
|
|
|
using annotatorFn = void (*)(void* context, std::string& result, int fid, int instpos);
|
|
|
|
struct AssemblyOptions
|
|
{
|
|
bool outputBinary = false;
|
|
bool skipOutlinedCode = false;
|
|
|
|
// Optional annotator function can be provided to describe each instruction, it takes function id and sequential instruction id
|
|
annotatorFn annotator = nullptr;
|
|
void* annotatorContext = nullptr;
|
|
};
|
|
|
|
// Generates assembly for target function and all inner functions
|
|
std::string getAssembly(lua_State* L, int idx, AssemblyOptions options = {});
|
|
|
|
} // namespace CodeGen
|
|
} // namespace Luau
|