1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
//! Generated skeleton item.
//! Node: `cxx:Record:Luau.Compiler:Compiler/src/Compiler.cpp:4883:reg_scope`
//! Source: `Compiler/src/Compiler.cpp`
//! Graph edges:
//! - declared_by: source_file Compiler/src/Compiler.cpp
//! - source_includes:
//! - includes -> source_file Compiler/include/Luau/Compiler.h
//! - includes -> source_file Ast/include/Luau/Ast.h
//! - includes -> source_file Bytecode/include/Luau/BytecodeBuilder.h
//! - includes -> source_file Common/include/Luau/Common.h
//! - includes -> source_file Ast/include/Luau/Parser.h
//! - includes -> source_file Common/include/Luau/InsertionOrderedMap.h
//! - includes -> source_file Common/include/Luau/StringUtils.h
//! - includes -> source_file Common/include/Luau/TimeTrace.h
//! - includes -> source_file CodeGen/src/IrTranslateBuiltins.h
//! - includes -> source_file Compiler/src/ConstantFolding.h
//! - includes -> source_file Compiler/src/CostModel.h
//! - includes -> source_file Compiler/src/TableShape.h
//! - includes -> source_file Analysis/include/Luau/AutocompleteTypes.h
//! - includes -> source_file Analysis/include/Luau/AstUtils.h
//! - includes -> source_file Compiler/src/ValueTracking.h
//! - incoming:
//! - declares <- source_file Compiler/src/Compiler.cpp
//! - type_ref <- record Compiler (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::compileFunction (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::compileExprTempMultRet (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::compileExprTempTop (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::compileInlinedCall (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::compileExprCall (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::compileExprFunction (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::compileClassDeclaration (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::compileCompareJump (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::compileConditionValue (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::compileExprAndOr (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::compileExprUnary (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::compileExprBinary (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::compileExprIfElseAndOr (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::compileExprInterpString (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::compileExprTable (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::compileExprIndexName (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::compileExprIndexExpr (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::compileExprAuto (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::compileExprSide (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::compileLValueIndex (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::compileLValue (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::compileStatRepeat (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::compileStatReturn (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::compileStatFor (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::compileStatForIn (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::compileStatAssign (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::compileStatCompoundAssign (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::compileStatFunction (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::compileStat (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::RegScope::RegScope (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::RegScope::RegScope (Compiler/src/Compiler.cpp)
//! - type_ref <- method Compiler::RegScope::~RegScope (Compiler/src/Compiler.cpp)
//! - outgoing:
//! - type_ref -> record Compiler (Compiler/src/Compiler.cpp)
//! - translates_to -> rust_item RegScope
use crateCompiler;
// RAII register-stack guard. Must NOT be `Copy`/`Clone`: the C++ `~RegScope`
// restores `regTop = oldTop` on scope exit, reproduced by the `Drop` below. The
// prior `Copy` derive silently elided that restore, leaving `regTop` un-rewound
// between sibling sub-expressions and tripping `assert!(top <= regTop)` in
// `reg_scope_compiler_i32`.