diff options
Diffstat (limited to 'vm.c')
-rw-r--r-- | vm.c | 12 |
1 files changed, 12 insertions, 0 deletions
@@ -228,6 +228,18 @@ int runvm(State *S) { break; } + case OP_SETIDX: { + Val vix = POP(); + Val varr = POP(); + Val v = PEEK(); + CHECK(IS_NUM(vix), "can only index numerically"); + CHECK(IS_ARR(varr), "can only set index on array"); + size_t ix = (size_t)AS_NUM(vix); + ObjArr *arr = AS_ARR(varr); + objarr_put(S, arr, ix, v); + break; + } + case OP_ENDSCOPE: { uint8_t nlocals = RBYTE(); Val retval = POP(); |