separate typing_env_types and typing_env
[hiphop-php.git] / hphp / hack / src / typing / typing_debug.ml
blob788d121b791fbbc903572683d88e88e2e71cd56f
1 open Typing_env_types
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
9 | None -> 0
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
16 let tvenv_size env =
17 IMap.fold
18 (fun _ { lower_bounds; upper_bounds; _ } size ->
19 size + ty_set_size env lower_bounds + ty_set_size env upper_bounds) env.tvenv 0
21 let env_size env =
22 local_env_size env +
23 tvenv_size env
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
29 then
30 env.big_envs := (pos, env) :: !(env.big_envs)