Skip to content

Commit e3a93a3

Browse files
committed
WIP
1 parent a9584cd commit e3a93a3

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

compiler/lib/ref_unboxing.ml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff 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

5356
let 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

0 commit comments

Comments
 (0)