Chunk.cs 1020 B

123456789101112131415161718192021222324252627282930
  1. using Lua.CodeAnalysis;
  2. namespace Lua.Runtime;
  3. public sealed class Chunk
  4. {
  5. public Chunk? Parent { get; internal set; }
  6. public required string Name { get; init; }
  7. public required Instruction[] Instructions { get; init; }
  8. public required SourcePosition[] SourcePositions { get; init; }
  9. public required LuaValue[] Constants { get; init; }
  10. public required UpValueInfo[] UpValues { get; init; }
  11. public required LocalValueInfo[] Locals { get; init; }
  12. public required Chunk[] Functions { get; init; }
  13. public required int ParameterCount { get; init; }
  14. public required bool HasVariableArguments { get; init; }
  15. public required byte MaxStackPosition { get; init; }
  16. public required int LineDefined { get; init; }
  17. public required int LastLineDefined { get; init; }
  18. Chunk? rootCache;
  19. internal Chunk GetRoot()
  20. {
  21. if (rootCache != null) return rootCache;
  22. if (Parent == null) return rootCache = this;
  23. return rootCache = Parent.GetRoot();
  24. }
  25. }