lvm.js

changeset 18
ae0b4ec242a3
parent 17
ac02246fc1d1
child 19
8c9c1752272b
equal deleted inserted replaced
17:ac02246fc1d1 18:ae0b4ec242a3
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 }

mercurial