on master help sign in
Fix function wrapping bug in JavaScript RTS
15590d7fiendfan1
jsrts/Runtime-common.js+11−13
@@ -68,20 +68,18 @@ 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) {
72− i$valstack_top += 1;
71+ i$valstack_top += 1;
73− i$valstack[i$valstack_top] = res;
72+ i$valstack[i$valstack_top] = res;
74− i$valstack[i$valstack_top + 1] = arguments[i];
73+ i$valstack[i$valstack_top + 1] = arguments[i];
75− i$SLIDE(2);
74+ i$SLIDE(2);
76− i$valstack_top = i$valstack_base + 2;
75+ i$valstack_top = i$valstack_base + 2;
77− i$CALL(_idris__123_APPLY0_125_,[oldbase])
76+ i$CALL(_idris__123_APPLY0_125_,[oldbase])
78− while (i$callstack.length) {
77+ while (i$callstack.length) {
79− var func = i$callstack.pop();
78+ var func = i$callstack.pop();
80− var args = i$callstack.pop();
79+ var args = i$callstack.pop();
81− func.apply(this,args);
80+ func.apply(this,args);
82− }
83− res = i$ret;
84 }
81 }
82+ res = i$ret;
85 }
83 }
86
84
87 i$callstack = i$vm.callstack;
85 i$callstack = i$vm.callstack;