summaryrefslogtreecommitdiff
path: root/src/lobject.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/lobject.js')
-rw-r--r--src/lobject.js50
1 files changed, 1 insertions, 49 deletions
diff --git a/src/lobject.js b/src/lobject.js
index f3078d1..f748416 100644
--- a/src/lobject.js
+++ b/src/lobject.js
@@ -4,10 +4,8 @@
const assert = require('assert');
const ljstype = require('./ljstype.js');
-const ltm = require('./ltm.js');
const lua = require('./lua.js');
-const lvm = require('./lvm.js');
-const CT = require('./lua.js').constant_types;
+const CT = lua.constant_types;
const UpVal = require('./lfunc.js').UpVal;
class TValue {
@@ -400,57 +398,11 @@ const numarith = function(L, op, v1, v2) {
}
};
-const luaO_arith = function(L, op, p1, p2, res) {
- switch (op) {
- case lvm.LUA_OPBAND: case lvm.LUA_OPBOR: case lvm.LUA_OPBXOR:
- case lvm.LUA_OPSHL: case lvm.LUA_OPSHR:
- case lvm.LUA_OPBNOT: { /* operate only on integers */
- let i1 = lvm.tointeger(p1);
- let i2 = lvm.tointeger(p2);
- if (i1 !== false && i2 !== false) {
- res.type = CT.LUA_TNUMINT;
- res.value = intarith(L, op, i1, i2);
- return;
- }
- else break; /* go to the end */
- }
- case lvm.LUA_OPDIV: case lvm.LUA_OPPOW: { /* operate only on floats */
- let n1 = lvm.tonumber(p1);
- let n2 = lvm.tonumber(p2);
- if (n1 !== false && n2 !== false) {
- res.type = CT.LUA_TNUMFLT;
- res.value = numarith(L, op, n1, n2);
- return;
- }
- else break; /* go to the end */
- }
- default: { /* other operations */
- let n1 = lvm.tonumber(p1);
- let n2 = lvm.tonumber(p2);
- if (p1.ttisinteger() && p2.ttisinteger()) {
- res.type = CT.LUA_TNUMINT;
- res.value = intarith(L, op, p1.value, p2.value);
- return;
- }
- else if (n1 !== false && n2 !== false) {
- res.type = CT.LUA_TNUMFLT;
- res.value = numarith(L, op, n1, n2);
- return;
- }
- else break; /* go to the end */
- }
- }
- /* could not perform raw operation; try metamethod */
- assert(L !== null); /* should not fail when folding (compile time) */
- ltm.luaT_trybinTM(L, p1, p2, res, (op - lua.LUA_OPADD) + ltm.TMS.TM_ADD);
-};
-
module.exports.CClosure = CClosure;
module.exports.LClosure = LClosure;
module.exports.TValue = TValue;
module.exports.Table = Table;
module.exports.UTF8BUFFSZ = UTF8BUFFSZ;
-module.exports.luaO_arith = luaO_arith;
module.exports.luaO_chunkid = luaO_chunkid;
module.exports.luaO_hexavalue = luaO_hexavalue;
module.exports.luaO_int2fb = luaO_int2fb;