File tree 1 file changed +12
-2
lines changed
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 =
45
45
in
46
46
m, List. rev l
47
47
48
- let rewrite_cont relevant_vars vars ( pc' , args ) =
48
+ let additional_args relevant_vars vars pc' =
49
49
let refs, _ = Int.Hashtbl. find relevant_vars pc' in
50
50
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
52
55
53
56
let rewrite_function p variables pc =
54
57
let relevant_vars = Int.Hashtbl. create 16 in
@@ -89,6 +92,13 @@ let rewrite_function p variables pc =
89
92
| Switch (x , a ) ->
90
93
Switch (x, Array. map ~f: (fun cont -> rewrite_cont relevant_vars vars cont) a)
91
94
| 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
+ *)
92
102
Pushtrap
93
103
( rewrite_cont relevant_vars vars cont
94
104
, x
You can’t perform that action at this time.
0 commit comments