summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordaurnimator <quae@daurnimator.com>2017-05-02 15:00:04 +1000
committerdaurnimator <quae@daurnimator.com>2017-05-02 15:23:17 +1000
commitd9865ac5163f467268dcd894320bb283e053badb (patch)
tree125b276b1cd7b2cb275ade22c36b5d0f15c93ade
parentade2bbc6099b40fcde7b5a99ce24bd21913f117c (diff)
downloadfengari-d9865ac5163f467268dcd894320bb283e053badb.tar.gz
fengari-d9865ac5163f467268dcd894320bb283e053badb.tar.bz2
fengari-d9865ac5163f467268dcd894320bb283e053badb.zip
Use lfunc from lundump.js
-rw-r--r--src/lfunc.js1
-rw-r--r--src/lobject.js14
-rw-r--r--src/lundump.js18
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);