diff options
author | daurnimator <quae@daurnimator.com> | 2017-05-24 16:38:03 +1000 |
---|---|---|
committer | daurnimator <quae@daurnimator.com> | 2017-05-27 22:14:51 +1000 |
commit | bb6dc6106cd1d9aedc0e9554928da6d232309a1a (patch) | |
tree | 34ca5efe17417adaa8cb84d6d14c7fc622f95c93 /src | |
parent | ebbfaf9602a624e1c8eb39e88661fadc56996c4b (diff) | |
download | fengari-bb6dc6106cd1d9aedc0e9554928da6d232309a1a.tar.gz fengari-bb6dc6106cd1d9aedc0e9554928da6d232309a1a.tar.bz2 fengari-bb6dc6106cd1d9aedc0e9554928da6d232309a1a.zip |
Introduce chgfltvalue and chgivalue
Diffstat (limited to 'src')
-rw-r--r-- | src/lobject.js | 10 | ||||
-rw-r--r-- | src/lvm.js | 4 |
2 files changed, 12 insertions, 2 deletions
diff --git a/src/lobject.js b/src/lobject.js index ee7a51d..54d4de9 100644 --- a/src/lobject.js +++ b/src/lobject.js @@ -126,11 +126,21 @@ class TValue { this.value = x; } + chgfltvalue(x) { + assert(this.type == CT.LUA_TNUMFLT); + this.value = x; + } + setivalue(x) { this.type = CT.LUA_TNUMINT; this.value = x; } + chgivalue(x) { + assert(this.type == CT.LUA_TNUMINT); + this.value = x; + } + setnilvalue() { this.type = CT.LUA_TNIL; this.value = void 0; @@ -520,7 +520,7 @@ const luaV_execute = function(L) { if (0 < step ? idx <= limit : limit <= idx) { ci.l_savedpc += i.sBx; - L.stack[ra].value = idx; + L.stack[ra].chgivalue(idx); /* update internal index... */ L.stack[ra + 3] = new lobject.TValue(CT.LUA_TNUMINT, idx); } } else { /* floating loop */ @@ -530,7 +530,7 @@ const luaV_execute = function(L) { if (0 < step ? idx <= limit : limit <= idx) { ci.l_savedpc += i.sBx; - L.stack[ra].value = idx; + L.stack[ra].chgfltvalue(idx); /* update internal index... */ L.stack[ra + 3] = new lobject.TValue(CT.LUA_TNUMFLT, idx); } } |