diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lcode.js | 4 | ||||
-rw-r--r-- | src/lundump.js | 2 | ||||
-rw-r--r-- | src/lvm.js | 7 |
3 files changed, 6 insertions, 7 deletions
diff --git a/src/lcode.js b/src/lcode.js index 1235fe4..2887e6d 100644 --- a/src/lcode.js +++ b/src/lcode.js @@ -799,8 +799,8 @@ const luaK_exp2RK = function(fs, e) { let vk = false; luaK_exp2val(fs, e); switch (e.k) { /* move constants to 'k' */ - case ek.VTRUE: e.u.info = boolK(fs, 1); vk = true; break; - case ek.VFALSE: e.u.info = boolK(fs, 0); vk = true; break; + case ek.VTRUE: e.u.info = boolK(fs, true); vk = true; break; + case ek.VFALSE: e.u.info = boolK(fs, false); vk = true; break; case ek.VNIL: e.u.info = nilK(fs); vk = true; break; case ek.VKINT: e.u.info = luaK_intK(fs, e.u.ival); vk = true; break; case ek.VKFLT: e.u.info = luaK_numberK(fs, e.u.nval); vk = true; break; diff --git a/src/lundump.js b/src/lundump.js index 5ea459e..3c35710 100644 --- a/src/lundump.js +++ b/src/lundump.js @@ -158,7 +158,7 @@ class BytecodeParser { f.k.push(new lobject.TValue(defs.CT.LUA_TNIL, null)); break; case defs.CT.LUA_TBOOLEAN: - f.k.push(new lobject.TValue(defs.CT.LUA_TBOOLEAN, this.readByte())); + f.k.push(new lobject.TValue(defs.CT.LUA_TBOOLEAN, this.readByte() !== 0)); break; case defs.CT.LUA_TNUMFLT: f.k.push(new lobject.TValue(defs.CT.LUA_TNUMFLT, this.readNumber())); @@ -971,14 +971,13 @@ const luaV_concat = function(L, total) { delete L.stack[top - 1]; } else { /* at least two non-empty string values; get as many as possible */ - let toconcat = new Array(total); - toconcat[total-1] = L.stack[top-1].svalue(); + let concatenated = L.stack[top-1].svalue(); delete L.stack[top - 1]; for (n = 1; n < total && tostring(L, top - n - 1); n++) { - toconcat[total-n-1] = L.stack[top - n - 1].svalue(); + concatenated = L.stack[top - n - 1].svalue().concat(concatenated); delete L.stack[top - n - 1]; } - let ts = lstring.luaS_bless(L, Array.prototype.concat.apply([], toconcat)); + let ts = lstring.luaS_bless(L, concatenated); L.stack[top - n] = new lobject.TValue(CT.LUA_TLNGSTR, ts); } total -= n - 1; /* got 'n' strings to create 1 new */ |