391 this.frame.reg[oldFrame.retAt+i] = rets[i]; |
392 this.frame.reg[oldFrame.retAt+i] = rets[i]; |
392 if(oldFrame.retAt+i<this.frame.reg.length) |
393 if(oldFrame.retAt+i<this.frame.reg.length) |
393 this.frame.reg.splice(0,oldFrame.retAt+i); |
394 this.frame.reg.splice(0,oldFrame.retAt+i); |
394 } |
395 } |
395 break; |
396 break; |
|
397 case OP_SELF: |
|
398 var table = this.frame.reg[INS_B(instruction)]; |
|
399 this.frame.reg[INS_A(instruction)+1] = table; |
|
400 var C = INS_C(instruction); |
|
401 var keysource = (C&256)?this.frame.f.constants:this.frame.reg; |
|
402 var key = keysource[C&0xff]; |
|
403 this.frame.reg[INS_A(instruction)] = table.index(key); |
|
404 break; |
396 case OP_FORPREP: |
405 case OP_FORPREP: |
397 this.frame.pc+=(INS_sBx(instruction)); |
406 this.frame.pc+=(INS_sBx(instruction)); |
398 var A = INS_A(instruction); |
407 var A = INS_A(instruction); |
399 this.frame.reg[A].value -= this.frame.reg[A+2].value; |
408 this.frame.reg[A].value -= this.frame.reg[A+2].value; |
400 this.frame.reg[A+3] = new LValue("number", null); |
409 this.frame.reg[A+3] = new LValue("number", null); |