Skip to content

Commit 4c1f2dd

Browse files
committed
Compiler: refactor driver by merging effects and exact_calls
1 parent 83196ed commit 4c1f2dd

File tree

1 file changed

+20
-31
lines changed

1 file changed

+20
-31
lines changed

compiler/lib/driver.ml

Lines changed: 20 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -92,47 +92,37 @@ let ( +> ) f g x = g (f x)
9292

9393
let map_fst f (x, y, z) = f x, y, z
9494

95-
let effects ~deadcode_sentinal p =
95+
let effects_and_exact_calls ~deadcode_sentinal (profile : Profile.t) p =
96+
let fast =
97+
match Config.effects (), profile with
98+
| (`Cps | `Double_translation), _ -> false
99+
| _, (O2 | O3) -> false
100+
| _, O1 -> true
101+
in
102+
let info = Global_flow.f ~fast p in
103+
let p, live_vars =
104+
if Config.Flag.globaldeadcode () && Config.Flag.deadcode ()
105+
then
106+
let p = Global_deadcode.f p ~deadcode_sentinal info in
107+
Deadcode.f p
108+
else Deadcode.f p
109+
in
96110
match Config.effects () with
97111
| `Cps | `Double_translation ->
98112
if debug () then Format.eprintf "Effects...@.";
99-
let p, live_vars = Deadcode.f p in
100-
let info = Global_flow.f ~fast:false p in
101-
let p, live_vars =
102-
if Config.Flag.globaldeadcode ()
103-
then
104-
let p = Global_deadcode.f p ~deadcode_sentinal info in
105-
Deadcode.f p
106-
else p, live_vars
107-
in
108-
p
109-
|> Effects.f ~flow_info:info ~live_vars
113+
Effects.f ~flow_info:info ~live_vars p
110114
|> map_fst
111115
(match Config.target () with
112116
| `Wasm -> Fun.id
113117
| `JavaScript -> Lambda_lifting.f)
114118
| `Disabled | `Jspi ->
119+
let p =
120+
Specialize.f ~function_arity:(fun f -> Global_flow.function_arity info f) p
121+
in
115122
( p
116123
, (Code.Var.Set.empty : Effects.trampolined_calls)
117124
, (Code.Var.Set.empty : Effects.in_cps) )
118125

119-
let exact_calls (profile : Profile.t) ~deadcode_sentinal p =
120-
match Config.effects () with
121-
| `Disabled | `Jspi ->
122-
let fast =
123-
match profile with
124-
| O2 | O3 -> false
125-
| O1 -> true
126-
in
127-
let info = Global_flow.f ~fast p in
128-
let p =
129-
if Config.Flag.globaldeadcode () && Config.Flag.deadcode ()
130-
then Global_deadcode.f p ~deadcode_sentinal info
131-
else p
132-
in
133-
Specialize.f ~function_arity:(fun f -> Global_flow.function_arity info f) p
134-
| `Cps | `Double_translation -> p
135-
136126
let print p =
137127
if debug () then Code.Print.program Format.err_formatter (fun _ _ -> "") p;
138128
p
@@ -632,8 +622,7 @@ let optimize ~profile p =
632622
| O2 -> o2
633623
| O3 -> o3)
634624
+> specialize_js_once_after
635-
+> exact_calls ~deadcode_sentinal profile
636-
+> effects ~deadcode_sentinal
625+
+> effects_and_exact_calls ~deadcode_sentinal profile
637626
+> map_fst
638627
(match Config.target (), Config.effects () with
639628
| `JavaScript, `Disabled -> Generate_closure.f

0 commit comments

Comments
 (0)