diff options
| author | daurnimator <quae@daurnimator.com> | 2017-05-02 15:00:04 +1000 | 
|---|---|---|
| committer | daurnimator <quae@daurnimator.com> | 2017-05-02 15:23:17 +1000 | 
| commit | d9865ac5163f467268dcd894320bb283e053badb (patch) | |
| tree | 125b276b1cd7b2cb275ade22c36b5d0f15c93ade /src | |
| parent | ade2bbc6099b40fcde7b5a99ce24bd21913f117c (diff) | |
| download | fengari-d9865ac5163f467268dcd894320bb283e053badb.tar.gz fengari-d9865ac5163f467268dcd894320bb283e053badb.tar.bz2 fengari-d9865ac5163f467268dcd894320bb283e053badb.zip | |
Use lfunc from lundump.js
Diffstat (limited to 'src')
| -rw-r--r-- | src/lfunc.js | 1 | ||||
| -rw-r--r-- | src/lobject.js | 14 | ||||
| -rw-r--r-- | src/lundump.js | 18 | 
3 files changed, 10 insertions, 23 deletions
| diff --git a/src/lfunc.js b/src/lfunc.js index e12816d..69c7581 100644 --- a/src/lfunc.js +++ b/src/lfunc.js @@ -57,7 +57,6 @@ class UpVal {  const luaF_newLclosure = function(L, n) {      let c = new lobject.LClosure(L, n); -    while (n--) c.upvals[n] = null;      return c;  }; diff --git a/src/lobject.js b/src/lobject.js index 5918a84..784720b 100644 --- a/src/lobject.js +++ b/src/lobject.js @@ -7,9 +7,7 @@ const defs    = require('./defs.js');  const ljstype = require('./ljstype.js');  const luaconf = require('./luaconf.js');  const llimit  = require('./llimit.js'); -const ltable  = require('./ltable.js');  const CT      = defs.constant_types; -const UpVal   = require('./lfunc.js').UpVal;  const char    = defs.char;  let tvalueCount = 0; @@ -206,17 +204,7 @@ class LClosure {      constructor(L, n) {          this.p = null;          this.nupvalues = n; - -        let _ENV = new UpVal(L); -        _ENV.refcount = 0; -        _ENV.v = null; -        _ENV.u.open.next = null; -        _ENV.u.open.touched = true; -        _ENV.u.value = new TValue(CT.LUA_TTABLE, ltable.luaH_new(L)); - -        this.upvals = [ -            _ENV -        ]; +        this.upvals = Array(n);      }  } diff --git a/src/lundump.js b/src/lundump.js index 9162501..1d2d079 100644 --- a/src/lundump.js +++ b/src/lundump.js @@ -1,12 +1,12 @@  /*jshint esversion: 6 */  "use strict"; -const assert         = require('assert'); +const assert  = require('assert'); -const defs           = require('./defs.js'); -const lobject        = require('./lobject.js'); -const Proto          = require('./lfunc.js').Proto; -const OpCodes        = require('./lopcodes.js'); +const defs     = require('./defs.js'); +const lfunc    = require('./lfunc.js'); +const lobject  = require('./lobject.js'); +const lopcodes = require('./lopcodes.js');  const LUAI_MAXSHORTLEN = 40; @@ -128,7 +128,7 @@ class BytecodeParser {      readCode(f) {          let n = this.readInt(); -        let o = OpCodes; +        let o = lopcodes;          let p = BytecodeParser;          for (let i = 0; i < n; i++) { @@ -191,7 +191,7 @@ class BytecodeParser {          let n = this.readInt();          for (let i = 0; i < n; i++) { -            f.p[i] = new Proto(this.L); +            f.p[i] = new lfunc.Proto(this.L);              this.readFunction(f.p[i], f.source);          }      } @@ -280,12 +280,12 @@ class BytecodeParser {      luaU_undump() {          this.checkHeader(); -        let cl = new lobject.LClosure(this.L, this.readByte()); +        let cl = lfunc.luaF_newLclosure(this.L, this.readByte());          this.L.stack[this.L.top] = new lobject.TValue(defs.CT.LUA_TLCL, cl);          this.L.top++; -        cl.p = new Proto(); +        cl.p = new lfunc.Proto();          this.readFunction(cl.p); | 
