282 var value = this.frame.f.constants[INS_Bx(instruction)]; |
282 var value = this.frame.f.constants[INS_Bx(instruction)]; |
283 this.frame.reg[INS_A(instruction)] = value; |
283 this.frame.reg[INS_A(instruction)] = value; |
284 break; |
284 break; |
285 case OP_CALL: |
285 case OP_CALL: |
286 var f = this.frame.reg[INS_A(instruction)].call(); // return JS or LValue |
286 var f = this.frame.reg[INS_A(instruction)].call(); // return JS or LValue |
287 var args = this.frame.reg.slice(INS_A(instruction)+1, INS_A(instruction)+(INS_B(instruction))); |
287 var A = INS_A(instruction), B = INS_B(instruction), undefined; |
|
288 var args = this.frame.reg.slice(A+1, B==0?undefined:(A+B)); |
288 if(typeof(f) == "function") |
289 if(typeof(f) == "function") |
289 { |
290 { |
290 // JS native function |
291 // JS native function |
291 var ret = f.apply(null, args.map(function (a) { return a.value; })); |
292 var ret = f.apply(null, args.map(function (a) { return a.value; })); |
292 } |
293 } |