Skip to content

Commit 4d31cf1

Browse files
committed
Distill semantics of use-def maps to fewer and more-obvious words.
- Remove redundant uses of 'resolve' and 'referent' in semant. - Use defn, defn_id, lval, lval_base more consistently. - Make associated query functions more consistent. - Closes #127.
1 parent b7d7f70 commit 4d31cf1

File tree

10 files changed

+216
-180
lines changed

10 files changed

+216
-180
lines changed

src/boot/me/alias.ml

+5-6
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,9 @@ let alias_analysis_visitor
2020
in
2121

2222
let alias lval =
23-
let lv_id = lval_base_id lval in
24-
let referent = Hashtbl.find cx.ctxt_lval_to_referent lv_id in
25-
if (referent_is_slot cx referent)
26-
then alias_slot referent
23+
let defn_id = lval_base_defn_id cx lval in
24+
if (defn_id_is_slot cx defn_id)
25+
then alias_slot defn_id
2726
in
2827

2928
let alias_atom at =
@@ -85,8 +84,8 @@ let alias_analysis_visitor
8584
in
8685

8786
let visit_lval_pre lv =
88-
let slot_id = lval_to_referent cx (lval_base_id lv) in
89-
if (not (Stack.is_empty curr_stmt)) && (referent_is_slot cx slot_id)
87+
let slot_id = lval_base_defn_id cx lv in
88+
if (not (Stack.is_empty curr_stmt)) && (defn_id_is_slot cx slot_id)
9089
then
9190
begin
9291
let slot_depth = get_slot_depth cx slot_id in

src/boot/me/effect.ml

+2-2
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ let function_effect_propagation_visitor
172172
lower_to s taux.Ast.fn_effect;
173173
| _ -> bug () "non-fn callee"
174174
in
175-
if lval_is_slot cx fn
175+
if lval_base_is_slot cx fn
176176
then
177177
lower_to_callee_ty (lval_ty cx fn)
178178
else
@@ -335,7 +335,7 @@ let process_crate
335335
match lookup_by_name cx [] root_scope name with
336336
None -> ()
337337
| Some (_, id) ->
338-
if referent_is_item cx id
338+
if defn_id_is_item cx id
339339
then htab_put item_auth id eff
340340
else err (Some id) "auth clause in crate refers to non-item"
341341
in

src/boot/me/layout.ml

+3-3
Original file line numberDiff line numberDiff line change
@@ -412,9 +412,9 @@ let layout_visitor
412412
let static = lval_is_static cx callee in
413413
let closure = if static then None else Some Il.OpaqueTy in
414414
let n_ty_params =
415-
match resolve_lval cx callee with
416-
DEFN_item i -> Array.length i.Ast.decl_params
417-
| _ -> 0
415+
if lval_base_is_item cx callee
416+
then Array.length (lval_item cx callee).node.Ast.decl_params
417+
else 0
418418
in
419419
let rty =
420420
call_args_referent_type cx n_ty_params lv_ty closure

src/boot/me/resolve.ml

+12-12
Original file line numberDiff line numberDiff line change
@@ -562,7 +562,7 @@ let type_resolving_visitor
562562
| Ast.MOD_ITEM_tag (header_slots, _, nid)
563563
when Hashtbl.mem recursive_tag_groups nid ->
564564
begin
565-
match ty_of_mod_item true item with
565+
match ty_of_mod_item item with
566566
Ast.TY_fn (tsig, taux) ->
567567
let input_slots =
568568
Array.map
@@ -586,7 +586,7 @@ let type_resolving_visitor
586586
end
587587

588588
| _ ->
589-
let t = ty_of_mod_item true item in
589+
let t = ty_of_mod_item item in
590590
let ty =
591591
resolve_type cx (!scopes) recursive_tag_groups
592592
all_tags empty_recur_info t
@@ -686,7 +686,7 @@ let lval_base_resolving_visitor
686686
(scopes:(scope list) ref)
687687
(inner:Walk.visitor)
688688
: Walk.visitor =
689-
let lookup_referent_by_ident id ident =
689+
let lookup_defn_by_ident id ident =
690690
log cx "looking up slot or item with ident '%s'" ident;
691691
match lookup cx (!scopes) (Ast.KEY_ident ident) with
692692
None -> err (Some id) "unresolved identifier '%s'" ident
@@ -702,10 +702,10 @@ let lval_base_resolving_visitor
702702
| Some (_, id) ->
703703
(log cx "resolved to node id #%d" (int_of_node id); id)
704704
in
705-
let lookup_referent_by_name_base id nb =
705+
let lookup_defn_by_name_base id nb =
706706
match nb with
707707
Ast.BASE_ident ident
708-
| Ast.BASE_app (ident, _) -> lookup_referent_by_ident id ident
708+
| Ast.BASE_app (ident, _) -> lookup_defn_by_ident id ident
709709
| Ast.BASE_temp temp -> lookup_slot_by_temp id temp
710710
in
711711

@@ -723,10 +723,10 @@ let lval_base_resolving_visitor
723723
| _ -> ()
724724
end
725725
| Ast.LVAL_base nb ->
726-
let referent_id = lookup_referent_by_name_base nb.id nb.node in
727-
iflog cx (fun _ -> log cx "resolved lval #%d to referent #%d"
728-
(int_of_node nb.id) (int_of_node referent_id));
729-
htab_put cx.ctxt_lval_to_referent nb.id referent_id
726+
let defn_id = lookup_defn_by_name_base nb.id nb.node in
727+
iflog cx (fun _ -> log cx "resolved lval #%d to defn #%d"
728+
(int_of_node nb.id) (int_of_node defn_id));
729+
htab_put cx.ctxt_lval_base_id_to_defn_base_id nb.id defn_id
730730
in
731731

732732
(*
@@ -745,7 +745,7 @@ let lval_base_resolving_visitor
745745
-> lval_is_name lv'
746746
| _ -> false
747747
in
748-
if lval_is_name lv && lval_is_item cx lv
748+
if lval_is_name lv && lval_base_is_item cx lv
749749
then ignore (lookup_by_name cx [] (!scopes) (lval_to_name lv))
750750
in
751751

@@ -932,7 +932,7 @@ let pattern_resolving_visitor
932932
let lval_nm = lval_to_name lval in
933933
let lval_id = lval_base_id lval in
934934
let tag_ctor_id = (lval_item cx lval).id in
935-
if referent_is_item cx tag_ctor_id
935+
if defn_id_is_item cx tag_ctor_id
936936

937937
(* FIXME (issue #76): we should actually check here that the
938938
* function is a tag value-ctor. For now this actually allows
@@ -1050,7 +1050,7 @@ let process_crate
10501050
Hashtbl.iter
10511051
begin
10521052
fun n _ ->
1053-
if referent_is_item cx n
1053+
if defn_id_is_item cx n
10541054
then
10551055
log cx "referenced: %a"
10561056
Ast.sprintf_name

0 commit comments

Comments
 (0)