@@ -53,18 +53,23 @@ var i$ffiWrap = function(fid,oldbase,myoldbase) {
5353 return function() {
5454 i$callstack = [];
5555
56− i$valstack_top += arguments.length;
57− i$valstack[i$valstack_top] = fid
58− for (var i = 1; i <= arguments.length; ++i)
59− i$valstack[i$valstack_top + i] = arguments[i - 1];
60− i$SLIDE(arguments.length + 1);
61−
62− fid.app(oldbase,myoldbase);
63−
64− while (i$callstack.length) {
65− var func = i$callstack.pop();
66− var args = i$callstack.pop();
67− func.apply(this,args);
56+ var res = fid;
57+
58+ for(var i = 0; i < arguments.length; ++i) {
59+ while (res instanceof i$CON) {
60+ i$valstack_top += 1;
61+ i$valstack[i$valstack_top] = res;
62+ i$valstack[i$valstack_top + 1] = arguments[i];
63+ i$SLIDE(2);
64+ i$valstack_top = i$valstack_base + 2;
65+ i$CALL(_idris__123_APPLY0_125_,[oldbase])
66+ while (i$callstack.length) {
67+ var func = i$callstack.pop();
68+ var args = i$callstack.pop();
69+ func.apply(this,args);
70+ }
71+ res = i$ret;
72+ }
6873 }
6974
7075 i$callstack = i$vm.callstack;