on master help sign in
Revert "Fix function wrapping bug in JavaScript RTS"
57a4ed3Niklas Larsson
jsrts/Runtime-common.js+13−11
@@ -68,18 +68,20 @@ var i$ffiWrap = function(fid,oldbase,myoldbase) {
68 var res = fid;
68 var res = fid;
69
69
70 for(var i = 0; i < (arguments.length ? arguments.length : 1); ++i) {
70 for(var i = 0; i < (arguments.length ? arguments.length : 1); ++i) {
71+ while (res instanceof i$CON) {
71− i$valstack_top += 1;
72+ i$valstack_top += 1;
72− i$valstack[i$valstack_top] = res;
73+ i$valstack[i$valstack_top] = res;
73− i$valstack[i$valstack_top + 1] = arguments[i];
74+ i$valstack[i$valstack_top + 1] = arguments[i];
74− i$SLIDE(2);
75+ i$SLIDE(2);
75− i$valstack_top = i$valstack_base + 2;
76+ i$valstack_top = i$valstack_base + 2;
76− i$CALL(_idris__123_APPLY0_125_,[oldbase])
77+ i$CALL(_idris__123_APPLY0_125_,[oldbase])
77− while (i$callstack.length) {
78+ while (i$callstack.length) {
78− var func = i$callstack.pop();
79+ var func = i$callstack.pop();
79− var args = i$callstack.pop();
80+ var args = i$callstack.pop();
80− func.apply(this,args);
81+ func.apply(this,args);
82+ }
83+ res = i$ret;
81 }
84 }
82− res = i$ret;
83 }
85 }
84
86
85 i$callstack = i$vm.callstack;
87 i$callstack = i$vm.callstack;