上篇文章對生成局部函數中間碼做了簡單的介紹。這裏知道,當lua發現壹個新定義的函數的時候,會生成OP_CLOSURE指令。那麽,lua虛擬機執行到OP_CLOSURE後怎麽執行呢?
在此之前,先說在lua解析代碼完了以後,會做那些善後之事呢?
前面說過,lua會把壹個代碼文件當作是壹個函數解析執行。在解析期間,它會率先生成壹個FuncState的結構,作為最外面的函數。但這是解析時做的事情,運行期間,是不會有FuncState這個東西出現的。在運行期間,是由壹個個叫CallInfo的數據結果的,它指的是當前運行的函數。
那麽,在解析代碼以後,是怎麽轉入運行的呢?