Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
bjorng committed Aug 17, 2024
1 parent 29968a2 commit f6b9f88
Showing 1 changed file with 20 additions and 32 deletions.
52 changes: 20 additions & 32 deletions lib/compiler/test/beam_debug_info_SUITE.erl
Original file line number Diff line number Diff line change
Expand Up @@ -118,8 +118,8 @@ source_variables(Abstr) ->
extract_src_vars(F) ->
case any_executable_line_instrs(F) of
true ->
L1 = extract_src_vars(F, 2, #{}),
L2 = [V || V := Count <- L1, Count > 1],
L1 = extract_src_vars(F, #{}),
L2 = [V || V := true <- L1],
lists:sort(L2);
false ->
%% There are no executable_line instructions in this
Expand All @@ -129,9 +129,9 @@ extract_src_vars(F) ->
[]
end.

extract_src_vars({var,_,'_'}, _Inc, Acc) ->
extract_src_vars({var,_,'_'}, Acc) ->
Acc;
extract_src_vars({var,_,Name}, Inc, Acc0) ->
extract_src_vars({var,_,Name}, Acc0) ->
case atom_to_binary(Name) of
<<"cov",_/binary>> ->
%% Ignore variable added by the sys_coverage pass.
Expand All @@ -140,12 +140,11 @@ extract_src_vars({var,_,Name}, Inc, Acc0) ->
%% Ignore variable added by the erl_expand_pass.
Acc0;
_ ->
N = maps:get(Name, Acc0, 0),
Acc0#{Name => N+Inc}
Acc0#{Name => true}
end;
extract_src_vars({string,_,_}, _Inc, Acc) ->
extract_src_vars({string,_,_}, Acc) ->
Acc;
extract_src_vars({named_fun,_,Name,Cs}, Inc, Acc0) ->
extract_src_vars({named_fun,_,Name,Cs}, Acc0) ->
case abstr_extract_executable_lines(Cs, []) of
[] ->
%% Since there are no executable lines within this fun,
Expand All @@ -155,43 +154,39 @@ extract_src_vars({named_fun,_,Name,Cs}, Inc, Acc0) ->
[_|_] when Name =/= '_' ->
Acc = case Name of
'_' -> Acc0;
_ -> extract_src_vars({var,anno,Name}, Inc, Acc0)
_ -> extract_src_vars({var,anno,Name}, Acc0)
end,
extract_src_vars(Cs, Inc, Acc)
extract_src_vars(Cs, Acc)
end;
extract_src_vars({'fun',_Anno,Cs}, Inc, Acc0) ->
extract_src_vars({'fun',_Anno,Cs}, Acc0) ->
case abstr_extract_executable_lines(Cs, []) of
[] ->
%% Since there are no executable lines within this fun,
%% none of the variables defined in the fun should ever
%% show up the debug info.
Acc0;
[_|_] ->
extract_src_vars(Cs, Inc, Acc0)
extract_src_vars(Cs, Acc0)
end;
extract_src_vars({C,_,Build,Qs0}, Inc, Acc0)
extract_src_vars({C,_,Build,Qs0}, Acc0)
when C =:= lc; C =:= bc; C =:= mc ->
Acc1 = case abstr_extract_executable_lines(Build, []) of
[] -> Acc0;
[_|_] -> extract_src_vars(Build, Inc, Acc0)
[_|_] -> extract_src_vars(Build, Acc0)
end,
Qs = extract_sv_qs(Qs0),
case abstr_extract_executable_lines(Qs, []) of
[] ->
Acc1;
[_|_] ->
extract_src_vars(Qs, Inc, Acc1)
extract_src_vars(Qs, Acc1)
end;
%% extract_src_vars({clause,_Anno,Ps,G,B}, Inc, Acc0) ->
%% Acc1 = extract_src_pats(Ps, Inc, Acc0),
%% Acc2 = extract_src_vars(G, Inc, Acc1),
%% extract_src_vars(B, Inc, Acc2);
extract_src_vars([H|T], Inc, Acc0) ->
Acc1 = extract_src_vars(H, Inc, Acc0),
extract_src_vars(T, Inc, Acc1);
extract_src_vars(Tuple, Inc, Acc0) when is_tuple(Tuple) ->
extract_src_vars(tuple_to_list(Tuple), Inc, Acc0);
extract_src_vars(_, _Inc, Acc) -> Acc.
extract_src_vars([H|T], Acc0) ->
Acc1 = extract_src_vars(H, Acc0),
extract_src_vars(T, Acc1);
extract_src_vars(Tuple, Acc0) when is_tuple(Tuple) ->
extract_src_vars(tuple_to_list(Tuple), Acc0);
extract_src_vars(_, Acc) -> Acc.

extract_sv_qs([{block,BlkL,[{executable_line,_,_}|Bs]}|Qs1]) ->
[{block,BlkL,Bs}|extract_sv_qs_1(Qs1)];
Expand All @@ -206,13 +201,6 @@ extract_sv_qs_1([Q|Qs]) ->
end;
extract_sv_qs_1([]) -> [].

%% extract_src_pats([{tuple,_,_}|Ps], _Inc, Acc0) ->
%% extract_src_pats(Ps, 1, Acc0);
%% extract_src_pats([P|Ps], Inc, Acc0) ->
%% Acc1 = extract_src_vars(P, Inc, Acc0),
%% extract_src_pats(Ps, Inc, Acc1);
%% extract_src_pats([], _Inc, Acc) -> Acc.

any_executable_line_instrs(Abstr) ->
abstr_extract_executable_lines(Abstr, []) =/= [].

Expand Down

0 comments on commit f6b9f88

Please sign in to comment.