Skip to content

Commit 143757f

Browse files
committed
Handle the case where f.length = 0
1 parent e593dca commit 143757f

File tree

3 files changed

+18
-10
lines changed

3 files changed

+18
-10
lines changed

compiler/lib/generate.ml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -923,8 +923,8 @@ let apply_fun_raw ctx f params exact cps =
923923
J.ECond
924924
( J.EBin
925925
( J.EqEq
926-
, J.EBin
927-
( J.Or
926+
, J.ECond
927+
( J.EBin (J.Ge, J.EDot (f, "l"), int 0)
928928
, J.EDot (f, "l")
929929
, J.EBin (J.Eq, J.EDot (f, "l"), J.EDot (f, "length")) )
930930
, int n )

runtime/stdlib.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,15 @@ function caml_call_gen(f, args) {
3535
return caml_call_gen(f.apply(null,args.slice(0,n)),args.slice(n));
3636
}
3737
else {
38-
return function (){
38+
var g = function (){
3939
var extra_args = (arguments.length == 0)?1:arguments.length;
4040
var nargs = new Array(args.length+extra_args);
4141
for(var i = 0; i < args.length; i++ ) nargs[i] = args[i];
4242
for(var i = 0; i < arguments.length; i++ ) nargs[args.length+i] = arguments[i];
4343
return caml_call_gen(f, nargs)
44-
}
44+
};
45+
g.l = d;
46+
return g;
4547
}
4648
}
4749

@@ -70,14 +72,16 @@ function caml_call_gen(f, args) {
7072
} else {
7173
argsLen--;
7274
var k = args [argsLen];
73-
return k (function () {
75+
var g = function (){
7476
var extra_args = (arguments.length == 0)?1:arguments.length;
7577
var nargs = new Array(argsLen + extra_args);
7678
for(var i = 0; i < argsLen; i++ ) nargs[i] = args[i];
7779
for(var i = 0; i < arguments.length; i++ )
7880
nargs[argsLen + i] = arguments[i];
7981
return caml_call_gen(f, nargs)
80-
});
82+
};
83+
g.l = d;
84+
return k(g);
8185
}
8286
}
8387

runtime/stdlib_modern.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,15 @@ function caml_call_gen(f, args) {
3333
return caml_call_gen(f(...args.slice(0,n)),args.slice(n));
3434
}
3535
else {
36-
return function (){
36+
var g = function (){
3737
var extra_args = (arguments.length == 0)?1:arguments.length;
3838
var nargs = new Array(args.length+extra_args);
3939
for(var i = 0; i < args.length; i++ ) nargs[i] = args[i];
4040
for(var i = 0; i < arguments.length; i++ ) nargs[args.length+i] = arguments[i];
4141
return caml_call_gen(f, nargs)
42-
}
42+
};
43+
g.l = d;
44+
return g;
4345
}
4446
}
4547

@@ -68,13 +70,15 @@ function caml_call_gen(f, args) {
6870
} else {
6971
argsLen--;
7072
var k = args [argsLen];
71-
return k (function () {
73+
var g = function (){
7274
var extra_args = (arguments.length == 0)?1:arguments.length;
7375
var nargs = new Array(argsLen + extra_args);
7476
for(var i = 0; i < argsLen; i++ ) nargs[i] = args[i];
7577
for(var i = 0; i < arguments.length; i++ )
7678
nargs[argsLen + i] = arguments[i];
7779
return caml_call_gen(f, nargs)
78-
});
80+
};
81+
g.l = d;
82+
return k(g);
7983
}
8084
}

0 commit comments

Comments
 (0)