# HG changeset patch # User Matthew Wild # Date 1290356838 0 # Node ID 7bf985fd9e037d28323a15bea61010fe47995416 # Parent f1247747f0258ff49910a075080c66f0b3bdcdda Implement OP_TFORLOOP diff -r f1247747f025 -r 7bf985fd9e03 lvm.js --- a/lvm.js Sun Nov 21 16:25:08 2010 +0000 +++ b/lvm.js Sun Nov 21 16:27:18 2010 +0000 @@ -25,6 +25,7 @@ var OP_RETURN = 30; var OP_FORLOOP = 31; var OP_FORPREP = 32; +var OP_TFORLOOP = 33; var OP_CLOSURE = 36; var debugMode = false; @@ -555,6 +556,19 @@ frame.reg[A+3].value = RA.value; } break; + case OP_TFORLOOP: + var A = INS_A(instruction); + var C = INS_C(instruction); + var f = frame.reg[A].precall(); // Iterator function + var rets = this.call(f, [frame.reg[A+1], frame.reg[A+2]]); + frame.reg.length = A+3; + for(var i = 0; i