diff options
author | Benoit Giannangeli <benoit.giannangeli@boursorama.fr> | 2017-03-13 10:18:31 +0100 |
---|---|---|
committer | Benoit Giannangeli <giann@users.noreply.github.com> | 2017-03-13 11:03:24 +0100 |
commit | ff74b65b59b5c463fa55bc37acf12cd95fcc1ee6 (patch) | |
tree | 1d4ff5fd963122bf4fe3892969122e3c6320e4dc | |
parent | 2a6993bf0e23e2a3759abb9d7127525577dc346c (diff) | |
download | fengari-ff74b65b59b5c463fa55bc37acf12cd95fcc1ee6.tar.gz fengari-ff74b65b59b5c463fa55bc37acf12cd95fcc1ee6.tar.bz2 fengari-ff74b65b59b5c463fa55bc37acf12cd95fcc1ee6.zip |
No interning for now
G.strt would have grown with each string
-rw-r--r-- | README.md | 3 | ||||
-rw-r--r-- | src/lstate.js | 11 | ||||
-rw-r--r-- | src/ltable.js | 2 |
3 files changed, 9 insertions, 7 deletions
@@ -14,12 +14,11 @@ - [x] table - [ ] weak table - [x] function - - [ ] string (8-bit clean) + - [x] string (8-bit clean) - [ ] number (32-bit ?) - [ ] integer - [ ] float - [ ] userdata - - [ ] thread - [x] Tag Methods - [ ] C API - [x] lua_absindex 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]; |