Skip to content

Commit df5ec74

Browse files
committed
more shapes
1 parent e3864b7 commit df5ec74

File tree

2 files changed

+23
-27
lines changed

2 files changed

+23
-27
lines changed

compiler/lib/flow.ml

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -401,24 +401,21 @@ let rec the_shape_of info x =
401401
get_approx
402402
info
403403
(fun x ->
404-
if Var.ISet.mem info.info_possibly_mutable x
405-
then Shape.Top "possibly_mutable"
406-
else
407-
match Shape.get x with
408-
| Some shape -> shape
409-
| None -> (
410-
match info.info_defs.(Var.idx x) with
411-
| Expr (Block (_, a, _, Immutable)) ->
412-
Shape.Block (List.map ~f:(the_shape_of info) (Array.to_list a))
413-
| Expr (Closure (l, _)) ->
414-
Shape.Function { arity = List.length l; pure = false; res = Top "unk" }
415-
| Expr (Special (Alias_prim name)) -> (
416-
try
417-
let arity = Primitive.arity name in
418-
let pure = Primitive.is_pure name in
419-
Shape.Function { arity; pure; res = Top "unk" }
420-
with _ -> Top "other")
421-
| _ -> Shape.Top "other"))
404+
match Shape.get x with
405+
| Some shape -> shape
406+
| None -> (
407+
match info.info_defs.(Var.idx x) with
408+
| Expr (Block (_, a, _, Immutable)) ->
409+
Shape.Block (List.map ~f:(the_shape_of info) (Array.to_list a))
410+
| Expr (Closure (l, _)) ->
411+
Shape.Function { arity = List.length l; pure = false; res = Top "unk" }
412+
| Expr (Special (Alias_prim name)) -> (
413+
try
414+
let arity = Primitive.arity name in
415+
let pure = Primitive.is_pure name in
416+
Shape.Function { arity; pure; res = Top "unk" }
417+
with _ -> Top "other")
418+
| _ -> Shape.Top "other"))
422419
(Top "init")
423420
(fun _u _v -> Shape.Top "merge")
424421
x

compiler/tests-full/stdlib.cma.expected.js

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,7 @@
305305

306306
//# unitInfo: Provides: Stdlib
307307
//# unitInfo: Requires: CamlinternalFormatBasics
308-
//# shape: Stdlib:[F(1),F(1),N,N,N,N,N,N,N,N,N,N,N,N,N,F(2),F(2),F(1),N,N,F(1),N,N,N,N,N,N,F(2),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(2),N,N,N,F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(3),F(1),N,F(2),F(2),F(2),F(4),F(4),F(2),F(2),F(2),F(2),F(1),F(1),F(1),F(1),F(2),F(1),F(1),F(3),F(1),F(1),F(4),F(4),F(2),F(1),F(1),F(1),F(2),F(1),F(1),F(1),F(1),F(2),N,F(1),F(2),F(1),F(1),F(1),F(4),N,N]
308+
//# shape: Stdlib:[F(1),F(1),N,N,N,N,N,N,N,N,N,N,N,N,N,F(2),F(2),F(1),N,N,F(1),N,N,N,N,N,N,F(2),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(2),N,N,N,F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(3),F(1),F(1),F(2),F(2),F(2),F(4),F(4),F(2),F(2),F(2),F(2),F(1),F(1),F(1),F(1),F(2),F(1),F(1),F(3),F(1),F(1),F(4),F(4),F(2),F(1),F(1),F(1),F(2),F(1),F(1),F(1),F(1),F(2),N,F(1),F(2),F(1),F(1),F(1),F(4),F(1),N]
309309
(function
310310
(globalThis){
311311
"use strict";
@@ -1634,7 +1634,7 @@
16341634

16351635
//# unitInfo: Provides: Stdlib__Seq
16361636
//# unitInfo: Requires: CamlinternalLazy, Stdlib, Stdlib__Atomic, Stdlib__Lazy
1637-
//# shape: Stdlib__Seq:[F(1),F(1),F(1),F(2),F(3),F(2),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(3),F(4),F(3),F(3),F(3),F(3),N,F(2),F(3),F(2),F(3),F(2),F(2),F(2),F(2),F(3),F(2),F(3),F(3),F(3),F(2),F(2),F(3),F(3),F(3),F(1),N,F(1),F(2),F(3),F(2),F(3),F(3),F(3),F(4),F(3),F(4),F(2),F(3),F(1),F(1),F(2),F(2),F(1),F(1),F(2)]
1637+
//# shape: Stdlib__Seq:[F(1),F(1),F(1),F(2),F(3),F(2),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(3),F(4),F(3),F(3),F(3),F(3),F(1),F(2),F(3),F(2),F(3),F(2),F(2),F(2),F(2),F(3),F(2),F(3),F(3),F(3),F(2),F(2),F(3),F(3),F(3),F(1),N,F(1),F(2),F(3),F(2),F(3),F(3),F(3),F(4),F(3),F(4),F(2),F(3),F(1),F(1),F(2),F(2),F(1),F(1),F(2)]
16381638
(function
16391639
(globalThis){
16401640
"use strict";
@@ -21372,8 +21372,7 @@
2137221372
? empty_backtrace
2137321373
: /*<<printexc.ml:331:4>>*/ caml_get_exception_raw_backtra(0);
2137421374
/*<<printexc.ml:345:4>>*/ try{
21375-
/*<<printexc.ml:345:9>>*/ /*<<printexc.ml:345:9>>*/ caml_call1
21376-
(Stdlib[103], 0);
21375+
/*<<printexc.ml:345:9>>*/ Stdlib[103].call(null, 0);
2137721376
}
2137821377
catch(_C_){}
2137921378
/*<<printexc.ml:346:4>>*/ try{
@@ -23038,7 +23037,7 @@
2303823037

2303923038
//# unitInfo: Provides: Stdlib__Hashtbl
2304023039
//# unitInfo: Requires: Stdlib, Stdlib__Array, Stdlib__Atomic, Stdlib__Domain, Stdlib__Int, Stdlib__Random, Stdlib__Seq, Stdlib__String, Stdlib__Sys
23041-
//# shape: Stdlib__Hashtbl:[N,N,N,N,F(3),F(2),F(2),F(2),F(2),F(2),F(3),N,N,N,N,F(1),F(1),F(2),N,N,N,N,F(2),F(2),F(1),F(1),F(1),F(1),F(2),F(3),F(4)]
23040+
//# shape: Stdlib__Hashtbl:[F(2),F(1),F(1),F(1),F(3),F(2),F(2),F(2),F(2),F(2),F(3),F(2),F(2),F(3),F(1),F(1),F(1),F(2),F(1),F(1),F(1),F(1),F(2),F(2),F(1),F(1),F(1),F(1),F(2),F(3),F(4)]
2304223041
(function
2304323042
(globalThis){
2304423043
"use strict";
@@ -24079,7 +24078,7 @@
2407924078

2408024079
//# unitInfo: Provides: Stdlib__Weak
2408124080
//# unitInfo: Requires: Stdlib, Stdlib__Array, Stdlib__Int, Stdlib__Obj, Stdlib__Sys
24082-
//# shape: Stdlib__Weak:[F(1),N,N,F(2),F(2),F(2),F(4),F(5),F(1)]
24081+
//# shape: Stdlib__Weak:[F(1),F(1),F(3),F(2),F(2),F(2),F(4),F(5),F(1)]
2408324082
(function
2408424083
(globalThis){
2408524084
"use strict";
@@ -24632,7 +24631,7 @@
2463224631

2463324632
//# unitInfo: Provides: Stdlib__Format
2463424633
//# unitInfo: Requires: CamlinternalFormat, Stdlib, Stdlib__Array, Stdlib__Buffer, Stdlib__Bytes, Stdlib__Domain, Stdlib__Int, Stdlib__List, Stdlib__Queue, Stdlib__Seq, Stdlib__Stack, Stdlib__String
24635-
//# shape: Stdlib__Format:[F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(3),F(2),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),N,F(1),F(3),F(2),F(3),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(1),F(3),F(2),F(3),F(2),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(3),F(2),F(2),F(1),F(2),F(1),N,F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(3),F(2),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(1),F(1),N,F(1),N,F(1),F(1),N,F(1),N,F(1),F(1),F(2),F(2),F(1),F(1),F(1),F(1),F(1),F(2),F(1),F(5),F(4),F(4),F(4),F(2),F(4),F(4),F(4),F(1),F(1),F(1),F(1),F(1),F(1),F(2),F(3),F(2),F(3),F(2),F(2)]
24634+
//# shape: Stdlib__Format:[F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(3),F(2),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(3),F(2),F(3),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(1),F(3),F(2),F(3),F(2),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(3),F(2),F(2),F(1),F(2),F(1),N,F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(3),F(2),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(1),F(1),N,F(1),N,F(1),F(1),N,F(1),N,F(1),F(1),F(2),F(2),F(1),F(1),F(1),F(1),F(1),F(2),F(1),F(5),F(4),F(4),F(4),F(2),F(4),F(4),F(4),F(1),F(1),F(1),F(1),F(1),F(1),F(2),F(3),F(2),F(3),F(2),F(2)]
2463624635
(function
2463724636
(globalThis){
2463824637
"use strict";
@@ -28906,7 +28905,7 @@
2890628905

2890728906
//# unitInfo: Provides: CamlinternalOO
2890828907
//# unitInfo: Requires: Stdlib, Stdlib__Array, Stdlib__List, Stdlib__Map, Stdlib__Obj, Stdlib__Sys
28909-
//# shape: CamlinternalOO:[N,F(1),F(2),F(3),F(2),F(2),F(2),F(2),F(2),F(3),F(2),F(4),F(1),F(2),N,F(1),F(1),F(6),F(2),F(3),F(1),F(1),F(1),F(2),F(2),F(3),F(2),F(2),N,F(1)]
28908+
//# shape: CamlinternalOO:[F(1),F(1),F(2),F(3),F(2),F(2),F(2),F(2),F(2),F(3),F(2),F(4),F(1),F(2),N,F(1),F(1),F(6),F(2),F(3),F(1),F(1),F(1),F(2),F(2),F(3),F(2),F(2),N,F(1)]
2891028909
(function
2891128910
(globalThis){
2891228911
"use strict";
@@ -33108,7 +33107,7 @@
3310833107

3310933108
//# unitInfo: Provides: Stdlib__MoreLabels
3311033109
//# unitInfo: Requires: Stdlib__Hashtbl, Stdlib__Map, Stdlib__Set
33111-
//# shape: Stdlib__MoreLabels:[[N,N,N,N,F(3),F(2),F(2),F(2),F(2),F(2),F(3),N,N,N,N,F(1),F(1),F(2),N,N,N,N,F(2),F(2),F(1),F(1),F(1),F(1),F(2),F(3),F(4)],[F(1)],[F(1)]]
33110+
//# shape: Stdlib__MoreLabels:[[F(2),F(1),F(1),F(1),F(3),F(2),F(2),F(2),F(2),F(2),F(3),F(2),F(2),F(3),F(1),F(1),F(1),F(2),F(1),F(1),F(1),F(1),F(2),F(2),F(1),F(1),F(1),F(1),F(2),F(3),F(4)],[F(1)],[F(1)]]
3311233111
(function
3311333112
(globalThis){
3311433113
"use strict";

0 commit comments

Comments
 (0)