From 16cdb860e9e8e5550c1178a41eabb52e461ffa46 Mon Sep 17 00:00:00 2001 From: Benoit Giannangeli Date: Fri, 24 Mar 2017 11:58:00 +0100 Subject: TValue.id to print something when tostring({}) --- src/lapi.js | 2 +- src/lauxlib.js | 2 +- src/lobject.js | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/lapi.js b/src/lapi.js index 5064c30..3520b15 100644 --- a/src/lapi.js +++ b/src/lapi.js @@ -158,7 +158,7 @@ const lua_rotate = function(L, idx, n) { let p = index2addr(L, idx); let pIdx = index2addr_(L, idx); - assert(!p.ttisnil() && idx > lua.LUA_REGISTRYINDEX, "index not in the stack"); + assert(/*!p.ttisnil() && */idx > lua.LUA_REGISTRYINDEX, "index not in the stack"); assert((n >= 0 ? n : -n) <= (L.top - idx), "invalid 'n'"); let m = n >= 0 ? L.top - 1 - n : pIdx - n - 1; /* end of prefix */ diff --git a/src/lauxlib.js b/src/lauxlib.js index 1b306a3..e3974cb 100644 --- a/src/lauxlib.js +++ b/src/lauxlib.js @@ -312,7 +312,7 @@ const luaL_tolstring = function(L, idx) { default: let tt = luaL_getmetafield(L, idx, "__name"); let kind = tt === CT.LUA_TSTRING ? lapi.lua_tostring(L, -1) : luaL_typename(L, idx); - lapi.lua_pushstring(L, `${kind}`); // We can't print memory address in JS + lapi.lua_pushstring(L, `${kind}: 0x${lapi.index2addr(L, -1).id.toString(16)}`); if (tt !== CT.LUA_TNIL) lapi.lua_remove(L, -2); break; diff --git a/src/lobject.js b/src/lobject.js index 8d6b6a3..3cbde26 100644 --- a/src/lobject.js +++ b/src/lobject.js @@ -8,9 +8,12 @@ const lua = require('./lua.js'); const CT = lua.constant_types; const UpVal = require('./lfunc.js').UpVal; +let tvalueCount = 0; + class TValue { constructor(type, value) { + this.id = tvalueCount++; this.type = type; this.value = value; this.metatable = null; -- cgit v1.2.3-70-g09d2