diff options
author | Benoit Giannangeli <giann008@gmail.com> | 2017-05-20 17:58:00 +0200 |
---|---|---|
committer | Benoit Giannangeli <giann008@gmail.com> | 2017-05-20 17:58:00 +0200 |
commit | 1b55793f38dcf088c2ab4b5cc9d7e75eb70ed7f7 (patch) | |
tree | f926a84a9a9e66ed103363a0c72a017b86061863 /src | |
parent | 4a8b0d23a798b03c5fa2edd61313b0747b1068a0 (diff) | |
download | fengari-1b55793f38dcf088c2ab4b5cc9d7e75eb70ed7f7.tar.gz fengari-1b55793f38dcf088c2ab4b5cc9d7e75eb70ed7f7.tar.bz2 fengari-1b55793f38dcf088c2ab4b5cc9d7e75eb70ed7f7.zip |
Use >>> instead of >>
Diffstat (limited to 'src')
-rw-r--r-- | src/lobject.js | 2 | ||||
-rw-r--r-- | src/lvm.js | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/src/lobject.js b/src/lobject.js index 3ec04f6..05b1fad 100644 --- a/src/lobject.js +++ b/src/lobject.js @@ -528,7 +528,7 @@ const intarith = function(L, op, v1, v2) { case defs.LUA_OPBOR: return (v1 | v2); case defs.LUA_OPBXOR: return (v1 ^ v2); case defs.LUA_OPSHL: return (v1 << v2); - case defs.LUA_OPSHR: return (v1 >> v2); + case defs.LUA_OPSHR: return (v1 >>> v2)|0; case defs.LUA_OPUNM: return (0 - v1)|0; case defs.LUA_OPBNOT: return (~0 ^ v1); default: assert(0); @@ -365,7 +365,8 @@ const luaV_execute = function(L) { let numberop2 = tointeger(op2); if (numberop1 !== false && numberop2 !== false) { - L.stack[ra] = new lobject.TValue(CT.LUA_TNUMINT, (numberop1 >> numberop2)); + // >>> to have same overflow semantic as lua + L.stack[ra] = new lobject.TValue(CT.LUA_TNUMINT, (numberop1 >>> numberop2)|0); } else { ltm.luaT_trybinTM(L, op1, op2, ra, ltm.TMS.TM_SHR); } @@ -386,7 +387,6 @@ const luaV_execute = function(L) { } case OCi.OP_BNOT: { let op = L.stack[RB(L, base, i)]; - let numberop = tonumber(op); if (op.ttisinteger()) { L.stack[ra] = new lobject.TValue(CT.LUA_TNUMINT, ~op.value); |