pub struct FuncState {Show 18 fields
pub f: Box<LuaProto>,
pub prev: Option<Box<FuncState>>,
pub bl: Option<Box<BlockCnt>>,
pub pc: i32,
pub lasttarget: i32,
pub previousline: i32,
pub nk: i32,
pub np: i32,
pub nabslineinfo: i32,
pub firstlocal: i32,
pub firstlabel: i32,
pub ndebugvars: i16,
pub nactvar: u8,
pub nups: u8,
pub freereg: u8,
pub iwthabs: u8,
pub needclose: bool,
pub last_token_line: i32,
}Expand description
C: FuncState — per-function compile-time state.
In C: stack-allocated in body(), chained via raw *prev pointer.
In Rust: heap-allocated via Option<Box<FuncState>> in LexState.
Fields§
§f: Box<LuaProto>C: f — the Proto being built.
PORT NOTE: types.tsv maps this to GcRef
prev: Option<Box<FuncState>>C: prev — enclosing FuncState (raw pointer in C; owned Box here).
bl: Option<Box<BlockCnt>>C: bl — innermost active block
pc: i32C: pc — next bytecode position to emit
lasttarget: i32C: lasttarget — pc of last ‘jump label’
previousline: i32C: previousline — last line saved in lineinfo
nk: i32C: nk — number of constants emitted
np: i32C: np — number of nested prototypes emitted
nabslineinfo: i32C: nabslineinfo — number of absolute line-info records
firstlocal: i32C: firstlocal — index of first local var in dyd.actvar
firstlabel: i32C: firstlabel — index of first label in dyd.label
ndebugvars: i16C: ndebugvars — entries in f.locvars
nactvar: u8C: nactvar — number of active locals
nups: u8C: nups — number of upvalues
freereg: u8C: freereg — next free register
iwthabs: u8C: iwthabs — instructions since last absolute line info
needclose: boolC: needclose — function must close upvalues on return
last_token_line: i32Current ls.lastline value, mirrored on every sync_from_lex.
Used by emit_inst to attribute the line to the just-consumed token
(matching lua-c’s savelineinfo(fs, f, fs->ls->lastline)), instead
of whatever line the caller threaded down. The threaded line
param is preserved only for explicit overrides (luaK_fixline-style).