voidluaL_openlib(lua_State*L,charconst*libname,luaL_Regconst*l,intnup){lj_lib_checkfpu(L);if(libname){intsize=libsize(l);/* check whether lib already exists */luaL_findtable(L,LUA_REGISTRYINDEX,"_LOADED",16);lua_getfield(L,-1,libname);/* get _LOADED[libname] */if(!lua_istable(L,-1)){/* not found? */lua_pop(L,1);/* remove previous result *//* try global variable (and create one if it does not exist) */if(luaL_findtable(L,LUA_GLOBALSINDEX,libname,size)!=NULL)lj_err_callerv(L,LJ_ERR_BADMODN,libname);lua_pushvalue(L,-1);lua_setfield(L,-3,libname);/* _LOADED[libname] = new table */}lua_remove(L,-2);/* remove _LOADED table */lua_insert(L,-(nup+1));/* move library table to below upvalues */}for(;l->name;l++){inti;for(i=0;i<nup;i++)/* copy upvalues to the top */lua_pushvalue(L,-nup);lua_pushcclosure(L,l->func,nup);lua_setfield(L,-(nup+2),l->name);}lua_pop(L,nup);/* remove upvalues */}