Skip to content

Commit 9efb5a1

Browse files
committed
add a sanitizer to check the invariant of each pass
1 parent 8c363db commit 9efb5a1

18 files changed

+1114
-881
lines changed

jscomp/Makefile

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ BYTE=ocamlc.opt$(EXE)
1010
OCAMLLEX=ocamllex.opt$(EXE)
1111
CAMLP4OF=camlp4of
1212
CAMLDEP=ocamldep.opt$(EXE)
13-
COMPFLAGS= -g -w +6-40-30 -warn-error +a-40-30
13+
COMPFLAGS= -g -w +6-40-30 -warn-error +a-40-30-23
1414

1515

16-
.SUFFIXES: .mli .ml .cmi .cmx .mll
16+
.SUFFIXES: .mli .ml .cmi .cmx .mll .c .o
1717

1818
print-% : ; @echo $* = $($*)
1919

@@ -188,7 +188,9 @@ SYNTAX_CMXS=$(addprefix syntax/, $(addsuffix .cmx, $(SYNTAX_SRCS)))
188188
DEPENDS_SRCS= depends_post_process bs_exception ast_extract binary_ast
189189
DEPENDS_CMXS=$(addprefix depends/, $(addsuffix .cmx, $(DEPENDS_SRCS)))
190190
CORE_SRCS= type_int_to_string type_util ocaml_stdlib_slots bs_conditional_initial ocaml_options ocaml_parse lam\
191-
lam_print lam_beta_reduce_util lam_inline_util lam_analysis js_cmj_format js_fun_env js_call_info js_closure js_op js_number js_cmj_datasets\
191+
lam_print lam_beta_reduce_util lam_inline_util lam_analysis\
192+
lam_closure\
193+
js_cmj_format js_fun_env js_call_info js_closure js_op js_number js_cmj_datasets\
192194
lam_exit_code j lam_module_ident lam_compile_util lam_stats config_util lam_compile_defs js_map js_fold js_fold_basic js_pass_scope\
193195
js_op_util js_analyzer js_shake js_exp_make js_long js_of_lam_exception js_of_lam_module js_of_lam_array js_of_lam_block js_of_lam_string\
194196
js_of_lam_tuple js_of_lam_record js_of_lam_float_record js_arr lam_compile_const \

jscomp/all.depend

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,8 @@ core/lam.cmi : ext/ident_set.cmi
216216
core/lam_print.cmi : core/lam.cmi
217217
core/lam_beta_reduce_util.cmi : core/lam.cmi
218218
core/lam_inline_util.cmi : core/lam.cmi
219-
core/lam_analysis.cmi : core/lam.cmi ext/ident_set.cmi ext/ident_map.cmi
219+
core/lam_analysis.cmi : core/lam.cmi
220+
core/lam_closure.cmi : core/lam.cmi ext/ident_set.cmi ext/ident_map.cmi
220221
core/js_cmj_format.cmi : ext/string_map.cmi core/lam.cmi \
221222
common/js_config.cmi
222223
core/js_fun_env.cmi : ext/ident_set.cmi
@@ -276,7 +277,7 @@ core/js_output.cmi : core/lam_compile_defs.cmi core/lam.cmi core/j.cmx
276277
core/lam_compile_global.cmi : core/lam_compile_env.cmi core/lam.cmi \
277278
core/j.cmx
278279
core/lam_dispatch_primitive.cmi : core/j.cmx
279-
core/lam_beta_reduce.cmi : core/lam_stats.cmi core/lam_analysis.cmi \
280+
core/lam_beta_reduce.cmi : core/lam_stats.cmi core/lam_closure.cmi \
280281
core/lam.cmi ext/ident_map.cmi
281282
core/lam_compile_external_call.cmi : core/lam_compile_defs.cmi core/j.cmx
282283
core/lam_compile_primitive.cmi : core/lam_compile_defs.cmi core/lam.cmi \
@@ -300,14 +301,15 @@ core/ocaml_parse.cmx : syntax/ppx_entry.cmx common/js_config.cmx \
300301
core/ocaml_parse.cmi
301302
core/lam.cmx : ext/ordered_hash_map_local_ident.cmx \
302303
core/ocaml_stdlib_slots.cmx ext/literals.cmx common/js_config.cmx \
303-
ext/int_vec_vec.cmx ext/int_vec.cmx ext/ident_set.cmx ext/ext_string.cmx \
304-
ext/ext_scc.cmx core/lam.cmi
304+
ext/int_vec_vec.cmx ext/int_vec.cmx ext/ident_set.cmx \
305+
ext/ident_hash_set.cmx ext/ext_string.cmx ext/ext_scc.cmx core/lam.cmi
305306
core/lam_print.cmx : core/lam.cmx core/lam_print.cmi
306307
core/lam_beta_reduce_util.cmx : core/lam.cmx ext/ident_hashtbl.cmx \
307308
core/lam_beta_reduce_util.cmi
308309
core/lam_inline_util.cmx : core/lam.cmx core/lam_inline_util.cmi
309-
core/lam_analysis.cmx : core/lam.cmx ext/ident_set.cmx ext/ident_map.cmx \
310-
core/lam_analysis.cmi
310+
core/lam_analysis.cmx : core/lam.cmx core/lam_analysis.cmi
311+
core/lam_closure.cmx : core/lam_analysis.cmx core/lam.cmx ext/ident_set.cmx \
312+
ext/ident_map.cmx core/lam_closure.cmi
311313
core/js_cmj_format.cmx : ext/string_map.cmx core/lam.cmx \
312314
common/js_config.cmx ext/ext_pervasives.cmx core/js_cmj_format.cmi
313315
core/js_fun_env.cmx : ext/ident_set.cmx ext/ext_list.cmx core/js_fun_env.cmi
@@ -409,11 +411,12 @@ core/lam_stats_util.cmx : core/lam_stats.cmx core/lam_compile_env.cmx \
409411
core/lam_stats_util.cmi
410412
core/lam_stats_export.cmx : ext/string_map.cmx core/lam_stats_util.cmx \
411413
core/lam_stats.cmx core/lam_module_ident.cmx core/lam_inline_util.cmx \
412-
core/lam_compile_env.cmx core/lam_analysis.cmx core/lam.cmx \
413-
common/js_config.cmx core/js_cmj_format.cmx ext/ident_set.cmx \
414-
ext/ident_map.cmx ext/ext_string.cmx ext/ext_pervasives.cmx \
415-
ext/ext_option.cmx common/ext_log.cmx ext/ext_list.cmx ext/ext_ident.cmx \
416-
ext/ext_filename.cmx core/lam_stats_export.cmi
414+
core/lam_compile_env.cmx core/lam_closure.cmx core/lam_analysis.cmx \
415+
core/lam.cmx common/js_config.cmx core/js_cmj_format.cmx \
416+
ext/ident_set.cmx ext/ident_map.cmx ext/ext_string.cmx \
417+
ext/ext_pervasives.cmx ext/ext_option.cmx common/ext_log.cmx \
418+
ext/ext_list.cmx ext/ext_ident.cmx ext/ext_filename.cmx \
419+
core/lam_stats_export.cmi
417420
core/lam_pass_alpha_conversion.cmx : core/lam_util.cmx \
418421
core/lam_stats_util.cmx core/lam_stats.cmx core/lam.cmx ext/ext_list.cmx \
419422
core/lam_pass_alpha_conversion.cmi
@@ -448,9 +451,9 @@ core/lam_dispatch_primitive.cmx : core/js_stmt_make.cmx \
448451
core/js_exp_make.cmx common/js_config.cmx core/js_analyzer.cmx core/j.cmx \
449452
common/ext_log.cmx ext/ext_list.cmx core/lam_dispatch_primitive.cmi
450453
core/lam_beta_reduce.cmx : core/lam_util.cmx core/lam_stats.cmx \
451-
core/lam_compile_global.cmx core/lam_beta_reduce_util.cmx \
452-
core/lam_analysis.cmx core/lam.cmx ext/ident_map.cmx \
453-
ext/ident_hashtbl.cmx core/lam_beta_reduce.cmi
454+
core/lam_compile_global.cmx core/lam_closure.cmx \
455+
core/lam_beta_reduce_util.cmx core/lam_analysis.cmx core/lam.cmx \
456+
ext/ident_map.cmx ext/ident_hashtbl.cmx core/lam_beta_reduce.cmi
454457
core/lam_compile_external_call.cmx : core/lam_dispatch_primitive.cmx \
455458
core/lam_compile_env.cmx core/lam_compile_defs.cmx core/js_op.cmx \
456459
core/js_of_lam_variant.cmx core/js_of_lam_option.cmx core/js_exp_make.cmx \
@@ -469,13 +472,13 @@ core/lam_compile.cmx : ext/literals.cmx core/lam_util.cmx \
469472
common/lam_methname.cmx core/lam_exit_code.cmx \
470473
core/lam_compile_primitive.cmx core/lam_compile_global.cmx \
471474
core/lam_compile_env.cmx core/lam_compile_defs.cmx \
472-
core/lam_compile_const.cmx core/lam_beta_reduce.cmx core/lam_analysis.cmx \
473-
core/lam.cmx core/js_stmt_make.cmx core/js_output.cmx \
474-
core/js_of_lam_record.cmx core/js_of_lam_array.cmx core/js_exp_make.cmx \
475-
common/js_config.cmx core/js_call_info.cmx core/js_ast_util.cmx \
476-
core/js_arr.cmx core/js_analyzer.cmx core/j.cmx ext/ident_set.cmx \
477-
ext/ident_map.cmx ext/ext_string.cmx ext/ext_list.cmx ext/ext_ident.cmx \
478-
core/lam_compile.cmi
475+
core/lam_compile_const.cmx core/lam_closure.cmx core/lam_beta_reduce.cmx \
476+
core/lam_analysis.cmx core/lam.cmx core/js_stmt_make.cmx \
477+
core/js_output.cmx core/js_of_lam_record.cmx core/js_of_lam_array.cmx \
478+
core/js_exp_make.cmx common/js_config.cmx core/js_call_info.cmx \
479+
core/js_ast_util.cmx core/js_arr.cmx core/js_analyzer.cmx core/j.cmx \
480+
ext/ident_set.cmx ext/ident_map.cmx ext/ext_string.cmx ext/ext_list.cmx \
481+
ext/ext_ident.cmx core/lam_compile.cmi
479482
core/lam_pass_exits.cmx : core/lam_util.cmx core/lam_beta_reduce.cmx \
480483
core/lam_analysis.cmx core/lam.cmx ext/int_hashtbl.cmx ext/ident_map.cmx \
481484
core/lam_pass_exits.cmi
@@ -484,9 +487,9 @@ core/lam_pass_lets_dce.cmx : core/lam_util.cmx core/lam_beta_reduce.cmx \
484487
ext/ident_hashtbl.cmx ext/ext_list.cmx core/lam_pass_lets_dce.cmi
485488
core/lam_pass_remove_alias.cmx : core/lam_util.cmx core/lam_stats.cmx \
486489
core/lam_module_ident.cmx core/lam_inline_util.cmx \
487-
core/lam_compile_env.cmx core/lam_beta_reduce.cmx core/lam_analysis.cmx \
488-
core/lam.cmx ext/ident_set.cmx ext/ident_hashtbl.cmx ext/ext_list.cmx \
489-
core/lam_pass_remove_alias.cmi
490+
core/lam_compile_env.cmx core/lam_closure.cmx core/lam_beta_reduce.cmx \
491+
core/lam_analysis.cmx core/lam.cmx ext/ident_set.cmx \
492+
ext/ident_hashtbl.cmx ext/ext_list.cmx core/lam_pass_remove_alias.cmi
490493
core/lam_compile_group.cmx : ext/string_hash_set.cmx core/lam_util.cmx \
491494
core/lam_stats_export.cmx core/lam_stats.cmx \
492495
core/lam_pass_remove_alias.cmx core/lam_pass_lets_dce.cmx \

jscomp/bin/whole_compiler.d

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,8 @@ bin/whole_compiler.ml : ext/int_vec_vec.ml
167167
bin/whole_compiler.ml : ext/int_vec_vec.mli
168168
bin/whole_compiler.ml : ext/ext_scc.ml
169169
bin/whole_compiler.ml : ext/ext_scc.mli
170+
bin/whole_compiler.ml : ext/ident_hash_set.ml
171+
bin/whole_compiler.ml : ext/ident_hash_set.mli
170172
bin/whole_compiler.ml : core/ocaml_stdlib_slots.ml
171173
bin/whole_compiler.ml : ext/ordered_hash_map_gen.ml
172174
bin/whole_compiler.ml : ext/ordered_hash_map_local_ident.ml
@@ -254,6 +256,8 @@ bin/whole_compiler.ml : core/js_of_lam_record.ml
254256
bin/whole_compiler.ml : core/js_of_lam_record.mli
255257
bin/whole_compiler.ml : core/lam_beta_reduce_util.ml
256258
bin/whole_compiler.ml : core/lam_beta_reduce_util.mli
259+
bin/whole_compiler.ml : core/lam_closure.ml
260+
bin/whole_compiler.ml : core/lam_closure.mli
257261
bin/whole_compiler.ml : core/js_of_lam_module.ml
258262
bin/whole_compiler.ml : core/js_of_lam_module.mli
259263
bin/whole_compiler.ml : core/lam_compile_global.ml
@@ -304,8 +308,6 @@ bin/whole_compiler.ml : core/lam_exit_code.ml
304308
bin/whole_compiler.ml : core/lam_exit_code.mli
305309
bin/whole_compiler.ml : core/lam_compile.ml
306310
bin/whole_compiler.ml : core/lam_compile.mli
307-
bin/whole_compiler.ml : ext/ident_hash_set.ml
308-
bin/whole_compiler.ml : ext/ident_hash_set.mli
309311
bin/whole_compiler.ml : core/lam_group.ml
310312
bin/whole_compiler.ml : core/lam_group.mli
311313
bin/whole_compiler.ml : core/lam_dce.ml

0 commit comments

Comments
 (0)