我们先来看一下 lstate.h
。
这里面大部分内容在之前 我自认为的 Lua 5.3.4 主函数执行过程 都提到过。基本是 CallInfo
, global_State
, lua_State
, GCUnion
的定义。
对于 lstate.c
来说,我觉得它可以割裂地分开几部分来看,我现在就会一部分一部分来记录一下我的思路。
LX
, LG
都只是在 lstate.c
里面定义和使用,我觉得是为了方便在代码中定义跟使用吧。fromstate
这个的话是为了从 lua_State l
计算出 LX
的 指针。
makeseed
方法会在 lua_newstate
执行的时候被调用,用来生成 seed。
这里的代码很容易看懂,但是问题在于设置 GCdebt 的用处我还是不太了解,要看过 GC 才能知道,不过函数看起来就是设置 global_State
的 totalbytes
和 GCdebt
。
这三个函数应该是与 CallInfo 相关。
这两个方法是与 stack 相关。
这个方法初始化 registry table。
这个几个方法都是对于 local_state 的操作。