diff options
author | Andy Belle-Isle <drumsetmonkey@gmail.com> | 2019-08-25 15:23:18 -0400 |
---|---|---|
committer | Andy Belle-Isle <drumsetmonkey@gmail.com> | 2019-08-25 15:23:18 -0400 |
commit | 7f32dc3140cd4c283d837f98bd6cf8c36c15c62b (patch) | |
tree | d7ab0b9a4e5c706a342a65adba36e1a055c7078c /lib/LuaJIT/lj_udata.c | |
parent | dcdc83d274c122fcfa601b98791e80eae711da33 (diff) |
Added LuaJIT library files
Diffstat (limited to 'lib/LuaJIT/lj_udata.c')
-rw-r--r-- | lib/LuaJIT/lj_udata.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/lib/LuaJIT/lj_udata.c b/lib/LuaJIT/lj_udata.c new file mode 100644 index 0000000..bd0321b --- /dev/null +++ b/lib/LuaJIT/lj_udata.c @@ -0,0 +1,34 @@ +/* +** Userdata handling. +** Copyright (C) 2005-2017 Mike Pall. See Copyright Notice in luajit.h +*/ + +#define lj_udata_c +#define LUA_CORE + +#include "lj_obj.h" +#include "lj_gc.h" +#include "lj_udata.h" + +GCudata *lj_udata_new(lua_State *L, MSize sz, GCtab *env) +{ + GCudata *ud = lj_mem_newt(L, sizeof(GCudata) + sz, GCudata); + global_State *g = G(L); + newwhite(g, ud); /* Not finalized. */ + ud->gct = ~LJ_TUDATA; + ud->udtype = UDTYPE_USERDATA; + ud->len = sz; + /* NOBARRIER: The GCudata is new (marked white). */ + setgcrefnull(ud->metatable); + setgcref(ud->env, obj2gco(env)); + /* Chain to userdata list (after main thread). */ + setgcrefr(ud->nextgc, mainthread(g)->nextgc); + setgcref(mainthread(g)->nextgc, obj2gco(ud)); + return ud; +} + +void LJ_FASTCALL lj_udata_free(global_State *g, GCudata *ud) +{ + lj_mem_free(g, ud, sizeudata(ud)); +} + |