lstring.h
是一个很简单的文件。
就是 sizelstring
sizeludata
sizeudata
luaS_newliteral
isreserved
eqshrstr
这几个宏。
这个方法判断 long string 是否相等。在 Lua 里面,有区分 short string,long string,short string 是会 hash 到 global_State 的 strt 里面的,在后面的方法是会看到这一点。
这个两个是用来做 hash 的方法。
这个方法 resize gobal_State 的 strt。
就是清理 global_State 的 strcache,似乎是 gc 里面调用了这个方法,方法体很清晰做什么。
初始化 global_State 的 strt 和 strcache
创建一个 TString。传进来的 tag 代表 short string 或 long string。
这个方法用来创建一个 long string。
这个方法从 global_State 中删除一个 TString,也是在 gc 中调用。
这个方法创建一个 short string 或返回在 global_State 的 strt 记录下的 short string。
这个方法判断传进来的字符串长度来决定创建 short string 还是 long string。
这个方法多了去 global_State 的 strcache 里面搜索,如果没有,就会创建 string 然后记录到 cache 里面。
这个方法用来创建一个 Udata。Udata 这个我没用过,不过方法还是清晰的。