aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2012-09-24 17:52:32 +0200
committerMike Pall <mike>2012-09-24 17:52:32 +0200
commit125cc879884b19ffa9181b7a52d1b7b73759301e (patch)
treed087214ba37678ccfb6a941df89fe53b796b58f0
parentca0bb4881f17838c9d84f0df310aa1d44da9298d (diff)
downloadluajit-125cc879884b19ffa9181b7a52d1b7b73759301e.tar.gz
luajit-125cc879884b19ffa9181b7a52d1b7b73759301e.tar.bz2
luajit-125cc879884b19ffa9181b7a52d1b7b73759301e.zip
From Lua 5.2: Add debug.getuservalue() and debug.setuservalue().
Needs -DLUAJIT_ENABLE_LUA52COMPAT.
-rw-r--r--src/lib_debug.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/lib_debug.c b/src/lib_debug.c
index ebe0691f..07b025af 100644
--- a/src/lib_debug.c
+++ b/src/lib_debug.c
@@ -256,6 +256,31 @@ LJLIB_CF(debug_upvaluejoin)
256 return 0; 256 return 0;
257} 257}
258 258
259#if LJ_52
260LJLIB_CF(debug_getuservalue)
261{
262 TValue *o = L->base;
263 if (o < L->top && tvisudata(o))
264 settabV(L, o, tabref(udataV(o)->env));
265 else
266 setnilV(o);
267 L->top = o+1;
268 return 1;
269}
270
271LJLIB_CF(debug_setuservalue)
272{
273 TValue *o = L->base;
274 if (!(o < L->top && tvisudata(o)))
275 lj_err_argt(L, 1, LUA_TUSERDATA);
276 if (!(o+1 < L->top && tvistab(o+1)))
277 lj_err_argt(L, 2, LUA_TTABLE);
278 L->top = o+2;
279 lua_setfenv(L, 1);
280 return 1;
281}
282#endif
283
259/* ------------------------------------------------------------------------ */ 284/* ------------------------------------------------------------------------ */
260 285
261static const char KEY_HOOK = 'h'; 286static const char KEY_HOOK = 'h';