summaryrefslogtreecommitdiff
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
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
-rw-r--r--README.md3
-rw-r--r--src/lstate.js11
-rw-r--r--src/ltable.js2
3 files changed, 9 insertions, 7 deletions
diff --git a/README.md b/README.md
index dffa1ec..042f2b2 100644
--- a/README.md
+++ b/README.md
@@ -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];