From 0e7ae6679bc7950b93799500a7749fbe61690ffa Mon Sep 17 00:00:00 2001 From: Benoit Giannangeli Date: Fri, 17 Feb 2017 07:28:36 +0100 Subject: LUA_REGISTRYINDEX --- src/lapi.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/lapi.js') diff --git a/src/lapi.js b/src/lapi.js index 41c0fbb..dd74552 100644 --- a/src/lapi.js +++ b/src/lapi.js @@ -35,12 +35,13 @@ const index2addr = function(L, idx) { assert(idx <= ci.top - (ci.funcOff + 1), "unacceptable index"); if (o >= L.top) return ldo.nil; else return L.stack[o]; - } else if (idx < 0) { // TODO: pseudo-indices relative to LUA_REGISTRYINDEX + } else if (idx > lua.LUA_REGISTRYINDEX) { assert(idx !== 0 && -idx <= L.top, "invalid index"); return L.stack[L.top + idx]; - // TODO: if (idx == LUA_REGISTRYINDEX) return &G(L)->l_registry; + } else if (idx === lua.LUA_REGISTRYINDEX) { + return L.l_G.l_registry; } else { /* upvalues */ - idx = -idx; + idx = lua.LUA_REGISTRYINDEX - idx; assert(idx <= MAXUPVAL + 1, "upvalue index too large"); if (ci.func.ttislcf()) /* light C function? */ return ldo.nil; /* it has no upvalues */ -- cgit v1.2.3-54-g00ecf