diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lstate.js | 11 | ||||
-rw-r--r-- | src/ltable.js | 2 |
2 files changed, 8 insertions, 5 deletions
diff --git a/src/lstate.js b/src/lstate.js index 519abde..99992c5 100644 --- a/src/lstate.js +++ b/src/lstate.js @@ -78,12 +78,15 @@ class global_State { } intern(stringArray) { - let key = stringArray.map(e => `${e}|`).join(''); + // TODO: when weak value maps are available + // let key = stringArray.map(e => `${e}|`).join(''); - if (!this.strt.has(key)) - this.strt.set(key, new lobject.TValue(CT.LUA_TLNGSTR, stringArray)); + // if (!this.strt.has(key)) + // this.strt.set(key, new lobject.TValue(CT.LUA_TLNGSTR, stringArray)); - return this.strt.get(key); + // return this.strt.get(key); + + return new lobject.TValue(CT.LUA_TLNGSTR, stringArray); } } diff --git a/src/ltable.js b/src/ltable.js index 36928d5..025efe0 100644 --- a/src/ltable.js +++ b/src/ltable.js @@ -64,7 +64,7 @@ Table.prototype.luaH_next = function(L, keyI) { if (tnidx === 'number' && nidx % 1 === 0) L.stack[keyI] = new TValue(CT.LUA_TNUMINT, indexes[i + 1]); else if (tnidx === 'string') - L.stack[keyI] = L.l_G.strt.get(indexes[i + 1]); + L.stack[keyI] = new TValue(CT.LUA_TLNGSTR, indexes[i + 1].split('|').map(e => Number.parseInt(e)).slice(0, -1)); else L.stack[keyI] = indexes[i + 1]; |