public Prototype GenPrototype(BlockNode block) { var mainFunc = new FuncdefExpNode(); mainFunc.Block = block; mainFunc.IsVararg = false; mainFunc.ParList = new List <ConstExpNode>(); FuncInfo funcInfo = new FuncInfo(); funcInfo.UpVarDic.Add("_ENV", new UpValInfo(-1, 0, 0)); paser.CGBlock(funcInfo, block); VM.LuaVM vm = new VM.LuaVM(); //vm.e System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch(); var p = ToPrototype(funcInfo); watch.Start(); //开始监视代码运行时间 // try // { vm.LuaMain(p); // } // catch(Exception e) // { // // } watch.Stop(); //停止监视 TimeSpan timespan = watch.Elapsed; //获取当前实例测量得出的总时间 Console.WriteLine("打开窗口代码执行时间:{0}(毫秒)", timespan.TotalMilliseconds); //总毫秒数 Console.WriteLine("生成完毕!"); return(null); }
public void CGFuncDefExp(FuncInfo funcInfo, FuncdefExpNode node, int a) { FuncInfo newFuncInfo = new FuncInfo(); newFuncInfo.NParam = node.ParList.Count; funcInfo.ChildFunc.Add(newFuncInfo); foreach (var param in node.ParList) { newFuncInfo.AddLocalVar(param.name); } CGBlock(newFuncInfo, node.Block); newFuncInfo.ExitScope(); newFuncInfo.EmitReturn(0, 0); int bx = funcInfo.ChildFunc.Count - 1; funcInfo.EmitClosure(a, bx); }