]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
Add internal API to add sub-modules to package.preload.
authorMike Pall <mike>
Sun, 1 Sep 2013 23:55:07 +0000 (01:55 +0200)
committerMike Pall <mike>
Sun, 1 Sep 2013 23:55:07 +0000 (01:55 +0200)
src/lj_lib.c
src/lj_lib.h

index bdbaba1d8b2d8f027a6adc4baece06881f89365b..df66ed51bbc7ecf9959b9be2b8944568657ffb37 100644 (file)
@@ -148,6 +148,16 @@ void lj_lib_register(lua_State *L, const char *libname,
   }
 }
 
+void lj_lib_prereg(lua_State *L, const char *name, lua_CFunction f, GCtab *env)
+{
+  luaL_findtable(L, LUA_REGISTRYINDEX, "_PRELOAD", 4);
+  lua_pushcfunction(L, f);
+  /* NOBARRIER: The function is new (marked white). */
+  setgcref(funcV(L->top-1)->c.env, obj2gco(env));
+  lua_setfield(L, -2, name);
+  L->top--;
+}
+
 /* -- Type checks --------------------------------------------------------- */
 
 TValue *lj_lib_checkany(lua_State *L, int narg)
index 463bfb60fcf0d66adef9438b43be20d9c2aae620..f9377bada4f6b3e39a8a3db103599f767a97aa14 100644 (file)
@@ -89,6 +89,8 @@ static LJ_AINLINE GCfunc *lj_lib_pushcc(lua_State *L, lua_CFunction f,
 
 LJ_FUNC void lj_lib_register(lua_State *L, const char *libname,
                             const uint8_t *init, const lua_CFunction *cf);
+LJ_FUNC void lj_lib_prereg(lua_State *L, const char *name, lua_CFunction f,
+                          GCtab *env);
 
 /* Library init data tags. */
 #define LIBINIT_LENMASK        0x3f