summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBenoit Giannangeli <benoit.giannangeli@boursorama.fr>2017-03-13 10:18:31 +0100
committerBenoit Giannangeli <giann@users.noreply.github.com>2017-03-13 11:03:24 +0100
commitff74b65b59b5c463fa55bc37acf12cd95fcc1ee6 (patch)
tree1d4ff5fd963122bf4fe3892969122e3c6320e4dc /src
parent2a6993bf0e23e2a3759abb9d7127525577dc346c (diff)
downloadfengari-ff74b65b59b5c463fa55bc37acf12cd95fcc1ee6.tar.gz
fengari-ff74b65b59b5c463fa55bc37acf12cd95fcc1ee6.tar.bz2
fengari-ff74b65b59b5c463fa55bc37acf12cd95fcc1ee6.zip
No interning for now
G.strt would have grown with each string
Diffstat (limited to 'src')
-rw-r--r--src/lstate.js11
-rw-r--r--src/ltable.js2
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];