File tree Expand file tree Collapse file tree 1 file changed +12
-2
lines changed Expand file tree Collapse file tree 1 file changed +12
-2
lines changed Original file line number Diff line number Diff line change @@ -45,10 +45,13 @@ let rewrite refs block m =
4545 in
4646 m, List. rev l
4747
48- let rewrite_cont relevant_vars vars ( pc' , args ) =
48+ let additional_args relevant_vars vars pc' =
4949 let refs, _ = Int.Hashtbl. find relevant_vars pc' in
5050 let vars = Var.Map. filter (fun x _ -> Var.Set. mem x refs) vars in
51- pc', List. map ~f: snd (Var.Map. bindings vars) @ args
51+ List. map ~f: snd (Var.Map. bindings vars)
52+
53+ let rewrite_cont relevant_vars vars (pc' , args ) =
54+ pc', additional_args relevant_vars vars pc' @ args
5255
5356let rewrite_function p variables pc =
5457 let relevant_vars = Int.Hashtbl. create 16 in
@@ -89,6 +92,13 @@ let rewrite_function p variables pc =
8992 | Switch (x , a ) ->
9093 Switch (x, Array. map ~f: (fun cont -> rewrite_cont relevant_vars vars cont) a)
9194 | Pushtrap (cont , x , cont' ) ->
95+ (*
96+ Insert block
97+ - use vars to get the block parameters
98+ - we pass args as arguments to the block
99+ - block parameters as additional arguments to cont'
100+ - add assignments within the scope of the exception handler
101+ *)
92102 Pushtrap
93103 ( rewrite_cont relevant_vars vars cont
94104 , x
You can’t perform that action at this time.
0 commit comments