Quellcode durchsuchen

From Lua 5.2: Add debug.getuservalue() and debug.setuservalue().

Needs -DLUAJIT_ENABLE_LUA52COMPAT.
Mike Pall vor 13 Jahren
Ursprung
Commit
125cc87988
1 geänderte Dateien mit 25 neuen und 0 gelöschten Zeilen
  1. 25 0
      src/lib_debug.c

+ 25 - 0
src/lib_debug.c

@@ -256,6 +256,31 @@ LJLIB_CF(debug_upvaluejoin)
   return 0;
 }
 
+#if LJ_52
+LJLIB_CF(debug_getuservalue)
+{
+  TValue *o = L->base;
+  if (o < L->top && tvisudata(o))
+    settabV(L, o, tabref(udataV(o)->env));
+  else
+    setnilV(o);
+  L->top = o+1;
+  return 1;
+}
+
+LJLIB_CF(debug_setuservalue)
+{
+  TValue *o = L->base;
+  if (!(o < L->top && tvisudata(o)))
+    lj_err_argt(L, 1, LUA_TUSERDATA);
+  if (!(o+1 < L->top && tvistab(o+1)))
+    lj_err_argt(L, 2, LUA_TTABLE);
+  L->top = o+2;
+  lua_setfenv(L, 1);
+  return 1;
+}
+#endif
+
 /* ------------------------------------------------------------------------ */
 
 static const char KEY_HOOK = 'h';