lvm.js

changeset 79
94c0441b7321
parent 78
a856f1c3364f
child 80
beb0bb936aca
equal deleted inserted replaced
78:a856f1c3364f 79:94c0441b7321
432 args[i] = new LValue(this, "nil", null); 432 args[i] = new LValue(this, "nil", null);
433 if(typeof(f) == "function") 433 if(typeof(f) == "function")
434 { 434 {
435 // JS native function 435 // JS native function
436 var ret = this.call(f, args); 436 var ret = this.call(f, args);
437 for(var i = 0; i < (C-1); i++) //FIXME: Handle C == 0 437 // Insert ret to reg starting at R(A), with C-1 limit
438 var nresults = ret.length;
439 var nexpected;
440 if(C == 0)
438 { 441 {
439 if(i < ret && i < args.length) 442 nexpected = nresults;
440 frame.reg[A+i] = args[i]; 443 frame.reg = frame.reg.slice(0, A+nexpected);
444 }
445 else
446 nexpected = C-1;
447 for(var i = 0;;i++)
448 {
449 if(i < nresults)
450 frame.reg[A+i] = ret[i];
451 else if(i < nexpected)
452 frame.reg[A+i] = new LValue(this, "nil", null);
441 else 453 else
442 frame.reg[A+i] = new LValue(this, "nil", null); 454 break;
443 } 455 }
444 } 456 }
445 else 457 else
446 { 458 {
447 // Lua function 459 // Lua function

mercurial