on master help sign in
javascript: more FFI work
43f0c91raichoo
jsrts/Runtime-common.js+17−12
@@ -53,18 +53,23 @@ var i$ffiWrap = function(fid,oldbase,myoldbase) {
53 return function() {
53 return function() {
54 i$callstack = [];
54 i$callstack = [];
55
55
56− i$valstack_top += arguments.length;
56+ var res = fid;
57− i$valstack[i$valstack_top] = fid
57+
58− for (var i = 1; i <= arguments.length; ++i)
58+ for(var i = 0; i < arguments.length; ++i) {
59+ while (res instanceof i$CON) {
60+ i$valstack_top += 1;
59− i$valstack[i$valstack_top + i] = arguments[i - 1];
61+ i$valstack[i$valstack_top] = res;
62+ i$valstack[i$valstack_top + 1] = arguments[i];
60− i$SLIDE(arguments.length + 1);
63+ i$SLIDE(2);
61−
64+ i$valstack_top = i$valstack_base + 2;
62− fid.app(oldbase,myoldbase);
65+ i$CALL(_idris__123_APPLY0_125_,[oldbase])
63−
64− while (i$callstack.length) {
66+ while (i$callstack.length) {
65− var func = i$callstack.pop();
67+ var func = i$callstack.pop();
66− var args = i$callstack.pop();
68+ var args = i$callstack.pop();
67− func.apply(this,args);
69+ func.apply(this,args);
70+ }
71+ res = i$ret;
72+ }
68 }
73 }
69
74
70 i$callstack = i$vm.callstack;
75 i$callstack = i$vm.callstack;