internal void SetClLValue(LuaLClosureValue v) { #if DEBUG_DUMMY_TVALUE_MODIFY CheckLock(); #endif Tt = (int)LuaType.LUA_TFUNCTION; NValue = 0.0; UInt64Value = CLOSURE_LUA; OValue = v; }
private void V_PushClosure(LuaProto p, LuaUpvalue[] encup, int stackBase, StkId ra) { var ncl = new LuaLClosureValue(p); ra.V.SetClLValue(ncl); for (int i = 0; i < p.Upvalues.Count; ++i) { // ULDebug.Log( "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ V_PushClosure i:" + i ); // ULDebug.Log( "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ V_PushClosure InStack:" + p.Upvalues[i].InStack ); // ULDebug.Log( "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ V_PushClosure Index:" + p.Upvalues[i].Index ); if (p.Upvalues[i].InStack) // upvalue refers to local variable { ncl.Upvals[i] = F_FindUpval( Stack[stackBase + p.Upvalues[i].Index]); } else // get upvalue from enclosing function { ncl.Upvals[i] = encup[p.Upvalues[i].Index]; } } }