From ad5cb0ddb6d4bd187cd4370711b1c9e34245fe07 Mon Sep 17 00:00:00 2001 From: Benoit Giannangeli Date: Wed, 8 Feb 2017 15:31:44 +0100 Subject: Upvalues --- src/lfunc.js | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'src/lfunc.js') diff --git a/src/lfunc.js b/src/lfunc.js index 929dae8..2c33a7d 100644 --- a/src/lfunc.js +++ b/src/lfunc.js @@ -24,16 +24,25 @@ class Proto { class UpVal { constructor() { - this.v = null; + this.v = null; /* if null, upval is closed, value is in u.value */ this.u = { - open: { - next: null, - touched: false + open: { /* (when open) */ + next: null, /* linked list */ + touched: false /* mark to avoid cycles with dead threads */ }, - value: null + value: null /* the value (when closed) */ }; } + val(L) { + return this.v !== null ? L.stack[this.v] : this.u.value; + } + + setval(L, ra) { + if (this.v !== null) this.v = ra; + else this.u.value = L.stack[ra]; + } + } module.exports = { -- cgit v1.2.3-54-g00ecf