• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

lua_State数据结构

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

线程相关脚本上下文
主要包括当前脚本环境的运行状态信息,还会有gc相关的信息。

global_State 全局信息

// global_State 的主要字段
typedef struct global_State {
    stringtable strt; // hash table for strings 全局字符串的哈希表
    TValue l_registry;  // 对应LUA_REGISTRYINDEX的全局table
    Tstring *tmname[TM_N]; // 元方法的名称字符串
    Table *mt[NUM_TAGS];  // 基本类型的元表
} global_State;

lua_State

#typedef TValue *StkId;

struct lua_State {
    CommonHeader;
    lu_byte status;              // 线程脚本的状态
    StkId top;                   // 指向当前线程栈的栈顶指针
    StkId base;                  // 指向当前函数运行的相对基位置
    global_State *l_G;           // 指向global_State
    CallInfo *ci;                // 当前线程运行的函数调用信息
    const Instruction * savedpc; // 函数调用前,记录上一个函数的pc位置
    StkId stack_last;            // 栈的实际最后一个位置
    StkId stack;                 // 栈底
    CallInfo *end_ci;            // 指向函数调用栈的栈顶
    CallInfo *base_ci;           // 指向函数调用栈的栈底
    int stacksize;               // 栈的大小
    int size_ci;                 // 函数调用栈的大小
    unsigned short nCcalls;      // 当前C函数的调用的深度
    unsigned short baseCcalls;   // 用于记录每个线程状态的C函数调用深度的辅助成员
    lu_byte hookmask;            // 支持那些hook能力
    lu_byte allowhook;           // 是否运行hook
    int basehookcount;           // 用户设置的执行指令数(在hookmask=LUA_MASK_COUNT生效)
    int hookcount;               // 运行时,跑了多少条指令
    lua_Hook hook;               // 用户注册的hook回调函数
    TValue l_gt;                 // 当前线程的全局环境表
    TValue env;                  // 当前运行的环境表
    GCObject *openupval;         // 用于gc
    GCObject *gclist;            // 用于gc
    struct lua_longjmp *errorJmp; // 发生错误的长跳转位置
    ptrdiff_t errfunc;            // 发生错误的回调函数
}


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap