diff options
Diffstat (limited to 'src/lvm.js')
| -rw-r--r-- | src/lvm.js | 17 | 
1 files changed, 8 insertions, 9 deletions
| @@ -11,7 +11,6 @@ const CT             = lua.constant_types;  const LUA_MULTRET    = lua.LUA_MULTRET;  const lobject        = require('./lobject.js');  const TValue         = lobject.TValue; -const Table          = lobject.Table;  const LClosure       = lobject.LClosure;  const lfunc          = require('./lfunc.js');  const UpVal          = lfunc.UpVal; @@ -212,7 +211,7 @@ const luaV_execute = function(L) {                  break;              }              case OCi.OP_NEWTABLE: { -                L.stack[ra] = new Table(); +                L.stack[ra] = new TValue(CT.LUA_TTABLE, new Map());                  break;              }              case OCi.OP_SELF: { @@ -660,7 +659,7 @@ const luaV_execute = function(L) {                  let last = ((c - 1) * OC.LFIELDS_PER_FLUSH) + n;                  for (; n > 0; n--) { -                    table.__newindex(table, last--, L.stack[ra + n]); +                    lobject.table_newindex(table, last--, L.stack[ra + n]);                  }                  L.top = ci.top; /* correct top (in case of previous open call) */ @@ -799,7 +798,7 @@ const luaV_equalobj = function(L, t1, t2) {          case CT.LUA_TLIGHTUSERDATA:          case CT.LUA_TUSERDATA:          case CT.LUA_TTABLE: -            if (t1 === t2) return 1; +            if (t1.value === t2.value) return 1;              else if (L === null) return 0;              // TODO: fasttm ? @@ -978,7 +977,7 @@ const luaV_objlen = function(L, ra, rb) {          case CT.LUA_TTABLE: {              tm = ltm.luaT_gettmbyobj(L, rb, ltm.TMS.TM_LEN);              if (!tm.ttisnil()) break; -            L.stack[ra] = new TValue(CT.LUA_TNUMINT, rb.luaH_getn()); +            L.stack[ra] = new TValue(CT.LUA_TNUMINT, ltable.luaH_getn(rb));              return;          }          case CT.LUA_TSHRSTR: @@ -1056,7 +1055,7 @@ const gettable = function(L, table, key, ra, recur) {          ldebug.luaG_runerror(L, lua.to_luastring("'__index' chain too long; possible loop", true));      if (table.ttistable()) { -        let element = table.__index(table, key); +        let element = lobject.table_index(table, key);          if (!element.ttisnil()) {              L.stack[ra] = element; @@ -1099,10 +1098,10 @@ const settable = function(L, table, key, v, recur) {          ldebug.luaG_runerror(L, lua.to_luastring("'__newindex' chain too long; possible loop", true));      if (table.ttistable()) { -        let element = table.__index(table, key); +        let element = lobject.table_index(table, key);          if (!element.ttisnil()) { -            table.__newindex(table, key, v); +            lobject.table_newindex(table, key, v);          } else {              luaV_finishset(L, table, key, v, element, recur);          } @@ -1117,7 +1116,7 @@ const luaV_finishset = function(L, t, key, val, slot, recur) {          assert(slot.ttisnil());          tm = ltm.luaT_gettmbyobj(L, t, ltm.TMS.TM_NEWINDEX); // TODO: fasttm          if (tm.ttisnil()) { -            t.__newindex(t, key, val); +            lobject.table_newindex(t, key, val);              return;          }      } else { /* not a table; check metamethod */ | 
