Bring debuglib.getlocal Implementation closer to native

This commit is contained in:
Enrico Horn
2021-07-17 23:41:01 +02:00
parent 39e9be0a2d
commit ddba10c180

View File

@@ -249,10 +249,17 @@ public class DebugLib extends TwoArgFunction {
public Varargs invoke(Varargs args) {
int a = 1;
LuaThread thread = args.isthread(a)? args.checkthread(a++): globals.running;
int level = args.checkint(a++);
int local = args.checkint(a++);
CallFrame f = callstack(thread).getCallFrame(level);
return f != null? f.getLocal(local): NONE;
LuaValue func = args.arg(a++);
int local = args.checkint(a);
if (func.isfunction())
return func.checkclosure().p.getlocalname(local, 0);
// find the stack info
DebugLib.CallFrame frame = callstack(thread).getCallFrame(func.checkint());
if (frame == null)
return argerror(a, "level out of range");
return frame.getLocal(local);
}
}