Skip to content

Commit 769af78

Browse files
authored
Removed Eliminate_mutable_vars and mutable constructs of Ilambda (#461)
1 parent 0f25e45 commit 769af78

File tree

9 files changed

+6
-471
lines changed

9 files changed

+6
-471
lines changed

.depend

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3803,7 +3803,6 @@ middle_end/flambda/flambda_middle_end.cmo : \
38033803
middle_end/flambda/terms/flambda.cmi \
38043804
middle_end/flambda/parser/fexpr.cmo \
38053805
middle_end/flambda/cmx/exported_code.cmi \
3806-
middle_end/flambda/from_lambda/eliminate_mutable_vars.cmi \
38073806
middle_end/flambda/from_lambda/cps_conversion.cmi \
38083807
middle_end/flambda/basic/continuation.cmi \
38093808
middle_end/flambda/basic/code_id.cmi \
@@ -3824,7 +3823,6 @@ middle_end/flambda/flambda_middle_end.cmx : \
38243823
middle_end/flambda/terms/flambda.cmx \
38253824
middle_end/flambda/parser/fexpr.cmx \
38263825
middle_end/flambda/cmx/exported_code.cmx \
3827-
middle_end/flambda/from_lambda/eliminate_mutable_vars.cmx \
38283826
middle_end/flambda/from_lambda/cps_conversion.cmx \
38293827
middle_end/flambda/basic/continuation.cmx \
38303828
middle_end/flambda/basic/code_id.cmx \
@@ -4114,7 +4112,6 @@ middle_end/flambda/flambda_middle_end.cmo : \
41144112
middle_end/flambda/terms/flambda.cmi \
41154113
middle_end/flambda/parser/fexpr.cmo \
41164114
middle_end/flambda/cmx/exported_code.cmi \
4117-
middle_end/flambda/from_lambda/eliminate_mutable_vars.cmi \
41184115
middle_end/flambda/from_lambda/cps_conversion.cmi \
41194116
middle_end/flambda/basic/continuation.cmi \
41204117
middle_end/flambda/basic/code_id.cmi \
@@ -4135,7 +4132,6 @@ middle_end/flambda/flambda_middle_end.cmx : \
41354132
middle_end/flambda/terms/flambda.cmx \
41364133
middle_end/flambda/parser/fexpr.cmx \
41374134
middle_end/flambda/cmx/exported_code.cmx \
4138-
middle_end/flambda/from_lambda/eliminate_mutable_vars.cmx \
41394135
middle_end/flambda/from_lambda/cps_conversion.cmx \
41404136
middle_end/flambda/basic/continuation.cmx \
41414137
middle_end/flambda/basic/code_id.cmx \
@@ -5056,24 +5052,6 @@ middle_end/flambda/from_lambda/cps_conversion.cmx : \
50565052
middle_end/flambda/from_lambda/cps_conversion.cmi : \
50575053
lambda/lambda.cmi \
50585054
middle_end/flambda/from_lambda/ilambda.cmi
5059-
middle_end/flambda/from_lambda/eliminate_mutable_vars.cmo : \
5060-
utils/misc.cmi \
5061-
lambda/lambda.cmi \
5062-
middle_end/flambda/from_lambda/ilambda.cmi \
5063-
typing/ident.cmi \
5064-
middle_end/flambda/basic/continuation.cmi \
5065-
parsing/asttypes.cmi \
5066-
middle_end/flambda/from_lambda/eliminate_mutable_vars.cmi
5067-
middle_end/flambda/from_lambda/eliminate_mutable_vars.cmx : \
5068-
utils/misc.cmx \
5069-
lambda/lambda.cmx \
5070-
middle_end/flambda/from_lambda/ilambda.cmx \
5071-
typing/ident.cmx \
5072-
middle_end/flambda/basic/continuation.cmx \
5073-
parsing/asttypes.cmi \
5074-
middle_end/flambda/from_lambda/eliminate_mutable_vars.cmi
5075-
middle_end/flambda/from_lambda/eliminate_mutable_vars.cmi : \
5076-
middle_end/flambda/from_lambda/ilambda.cmi
50775055
middle_end/flambda/from_lambda/ilambda.cmo : \
50785056
utils/strongly_connected_components.cmi \
50795057
lambda/printlambda.cmi \

compilerlibs/Makefile.compilerlibs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -369,8 +369,7 @@ MIDDLE_END_FLAMBDA_FROM_LAMBDA=\
369369
middle_end/flambda/from_lambda/lambda_to_flambda_primitives_helpers.cmo \
370370
middle_end/flambda/from_lambda/lambda_to_flambda_primitives.cmo \
371371
middle_end/flambda/from_lambda/closure_conversion.cmo \
372-
middle_end/flambda/from_lambda/cps_conversion.cmo \
373-
middle_end/flambda/from_lambda/eliminate_mutable_vars.cmo
372+
middle_end/flambda/from_lambda/cps_conversion.cmo
374373

375374

376375
MIDDLE_END_FLAMBDA_PARSER=\

middle_end/flambda/flambda_middle_end.ml

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -43,19 +43,6 @@ let print_ilambda ppf (ilam : Ilambda.program) =
4343
Ilambda.print ilam.expr
4444
end
4545

46-
let print_ilambda_after_mutable_variable_elimination ppf
47-
(ilam : Ilambda.program) =
48-
if !Clflags.dump_ilambda then begin
49-
Format.fprintf ppf
50-
"\n%sAfter mutable variable elimination (return continuation %a) \
51-
(exception continuation %a):%s@ %a@."
52-
(Flambda_colours.each_file ())
53-
Continuation.print ilam.return_continuation
54-
Continuation.print ilam.exn_continuation.exn_handler
55-
(Flambda_colours.normal ())
56-
Ilambda.print ilam.expr
57-
end
58-
5946
let print_rawflambda ppf unit =
6047
if !Clflags.dump_rawflambda then begin
6148
Format.fprintf ppf "\n%sAfter closure conversion:%s@ %a@."
@@ -110,18 +97,6 @@ let middle_end0 ppf ~prefixname ~backend ~filename ~module_ident
11097
Cps_conversion.lambda_to_ilambda module_initializer)
11198
in
11299
print_ilambda ppf ilambda;
113-
let ilambda =
114-
if ilambda.uses_mutable_variables then begin
115-
let ilambda =
116-
Profile.record_call "eliminate_mutable_variables" (fun () ->
117-
Eliminate_mutable_vars.run ilambda)
118-
in
119-
print_ilambda_after_mutable_variable_elimination ppf ilambda;
120-
ilambda
121-
end else begin
122-
ilambda
123-
end
124-
in
125100
let flambda =
126101
Profile.record_call "closure_conversion" (fun () ->
127102
Closure_conversion.ilambda_to_flambda ~backend ~module_ident

middle_end/flambda/from_lambda/closure_conversion.ml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -482,9 +482,6 @@ let rec close acc env (ilam : Ilambda.t) : Acc.t * Expr_with_acc.t =
482482
|> Expr_with_acc.create_let
483483
in
484484
close_named acc env ~let_bound_var:var defining_expr cont
485-
| Let_mutable _ ->
486-
Misc.fatal_error "[Let_mutable] should have been removed by \
487-
[Eliminate_mutable_vars]"
488485
| Let_rec (defs, body) -> close_let_rec acc env ~defs ~body
489486
| Let_cont { name; is_exn_handler; params; recursive; body;
490487
handler; } ->
@@ -673,9 +670,6 @@ and close_named acc env ~let_bound_var (named : Ilambda.named)
673670
| Prim { prim; args; loc; exn_continuation; } ->
674671
close_primitive acc env ~let_bound_var named prim ~args loc
675672
exn_continuation k
676-
| Assign _ | Mutable_read _ ->
677-
Misc.fatal_error "[Assign] and [Mutable_read] should have been removed \
678-
by [Eliminate_mutable_vars]"
679673

680674
and close_let_rec acc env ~defs ~body =
681675
let env =

middle_end/flambda/from_lambda/cps_conversion.ml

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ module Env : sig
3636
val current_unit_id : t -> Ident.t
3737

3838
val is_mutable : t -> Ident.t -> bool
39-
val has_mutables : t -> bool
4039

4140
val register_mutable_variable
4241
: t
@@ -86,7 +85,6 @@ module Env : sig
8685
end = struct
8786
type t = {
8887
current_unit_id : Ident.t;
89-
has_mutables : bool ref; (* for now *)
9088
current_values_of_mutables_in_scope
9189
: (Ident.t * Lambda.value_kind) Ident.Map.t;
9290
mutables_needed_by_continuations : Ident.Set.t Continuation.Map.t;
@@ -105,7 +103,6 @@ end = struct
105103
]
106104
in
107105
{ current_unit_id;
108-
has_mutables = ref false;
109106
current_values_of_mutables_in_scope = Ident.Map.empty;
110107
mutables_needed_by_continuations;
111108
try_stack = [];
@@ -119,9 +116,6 @@ end = struct
119116
let is_mutable t id =
120117
Ident.Map.mem id t.current_values_of_mutables_in_scope
121118

122-
let has_mutables t =
123-
!(t.has_mutables)
124-
125119
let register_mutable_variable t id kind =
126120
if Ident.Map.mem id t.current_values_of_mutables_in_scope then begin
127121
Misc.fatal_errorf "Redefinition of mutable variable %a"
@@ -1292,7 +1286,7 @@ and cps_switch env (switch : L.lambda_switch) ~scrutinee (k : Continuation.t)
12921286
| Apply_cont (cont, trap, args) ->
12931287
let consts_rev = (arm, cont, trap, args) :: consts_rev in
12941288
consts_rev, wrappers
1295-
| Let _ | Let_mutable _ | Let_rec _ | Let_cont _ | Apply _
1289+
| Let _ | Let_rec _ | Let_cont _ | Apply _
12961290
| Switch _ ->
12971291
let consts_rev = (arm, cont, None, []) :: consts_rev in
12981292
let wrappers = (cont, action) :: wrappers in
@@ -1400,5 +1394,4 @@ let lambda_to_ilambda lam : Ilambda.program =
14001394
exn_continuation = {
14011395
exn_handler = exn_continuation;
14021396
extra_args = [] };
1403-
uses_mutable_variables = Env.has_mutables env;
14041397
}

0 commit comments

Comments
 (0)