3 module Env
= Typing_env
4 module Log
= Typing_log
5 module TySet
= Typing_set
7 let local_env_size env
=
8 match Env.next_cont_opt env
with
10 | Some
Typing_per_cont_env.{ local_types
; _
} ->
11 Local_id.Map.fold
(fun _
(ty
, _
) size
-> size
+ (Typing_utils.ty_size env ty
)) local_types
0
13 let ty_set_size env tyset
=
14 TySet.fold
(fun ty size
-> size
+ Typing_utils.ty_size env ty
) tyset
0
18 (fun _
{ lower_bounds
; upper_bounds
; _
} size
->
19 size
+ ty_set_size env lower_bounds
+ ty_set_size env upper_bounds
) env
.tvenv
0
25 let log_env_if_too_big pos env
=
26 if (Env.get_tcopt env
).GlobalOptions.tco_timeout
> 0
27 && List.length
!(env
.big_envs
) < 1
28 && env_size env
>= 1000
30 env
.big_envs
:= (pos
, env
) :: !(env
.big_envs
)