diff options
author | Björn Gustavsson <bjorn@erlang.org> | 2023-03-07 07:00:38 +0100 |
---|---|---|
committer | Björn Gustavsson <bjorn@erlang.org> | 2023-03-07 07:22:50 +0100 |
commit | 7118057bf83317918dd0a63221c8412597185279 (patch) | |
tree | b3ed113c506d7e7ee8299bcc794e09d94c3c8efc | |
parent | 90ae02f46908a6545d96092e731e8bccb868636b (diff) | |
download | erlang-7118057bf83317918dd0a63221c8412597185279.tar.gz |
compiler: Use map generators instead of maps:fold/3
-rw-r--r-- | lib/compiler/src/beam_ssa_codegen.erl | 12 | ||||
-rw-r--r-- | lib/compiler/src/beam_ssa_pre_codegen.erl | 4 | ||||
-rw-r--r-- | lib/compiler/src/beam_ssa_type.erl | 6 | ||||
-rw-r--r-- | lib/compiler/src/beam_types.erl | 11 | ||||
-rw-r--r-- | lib/compiler/src/v3_kernel.erl | 4 |
5 files changed, 14 insertions, 23 deletions
diff --git a/lib/compiler/src/beam_ssa_codegen.erl b/lib/compiler/src/beam_ssa_codegen.erl index 9e7a525c3f..08b0e5d856 100644 --- a/lib/compiler/src/beam_ssa_codegen.erl +++ b/lib/compiler/src/beam_ssa_codegen.erl @@ -157,13 +157,11 @@ assert_exception_block(Blocks) -> add_parameter_annos([{label, _}=Entry | Body], Anno) -> ParamTypes = maps:get(parameter_info, Anno, #{}), - Annos = maps:fold( - fun(K, V, Acc) when is_map_key(K, ParamTypes) -> - Info = map_get(K, ParamTypes), - [{'%', {var_info, V, Info}} | Acc]; - (_K, _V, Acc) -> - Acc - end, [], maps:get(registers, Anno)), + Annos = [begin + Info = map_get(K, ParamTypes), + {'%', {var_info, V, Info}} + end || K := V <- map_get(registers, Anno), + is_map_key(K, ParamTypes)], [Entry | sort(Annos)] ++ Body. diff --git a/lib/compiler/src/beam_ssa_pre_codegen.erl b/lib/compiler/src/beam_ssa_pre_codegen.erl index e1b5f59738..e3406f12de 100644 --- a/lib/compiler/src/beam_ssa_pre_codegen.erl +++ b/lib/compiler/src/beam_ssa_pre_codegen.erl @@ -2993,8 +2993,8 @@ init_free(Res) -> #{x:=Xs0} = Free1 = maps:from_list(Free0), Xs = init_xregs(Xs0), Free = Free1#{x:=Xs}, - Next = maps:fold(fun(K, V, A) -> [{{next,K},length(V)}|A] end, [], Free), - maps:merge(Free, maps:from_list(Next)). + Next = #{{next,K} => length(V) || K := V <- Free}, + maps:merge(Free, Next). init_free_1([{_,{prefer,{x,_}=Reg}}|Res]) -> [{x,Reg}|init_free_1(Res)]; diff --git a/lib/compiler/src/beam_ssa_type.erl b/lib/compiler/src/beam_ssa_type.erl index 5419090ddc..725eb9ee29 100644 --- a/lib/compiler/src/beam_ssa_type.erl +++ b/lib/compiler/src/beam_ssa_type.erl @@ -378,11 +378,7 @@ init_sig_st(StMap, FuncDb) -> wl=wl_defer_list(Roots, wl_new()) }. init_sig_roots(FuncDb) -> - maps:fold(fun(Id, #func_info{exported=true}, Acc) -> - [Id | Acc]; - (_, _, Acc) -> - Acc - end, [], FuncDb). + [Id || Id := #func_info{exported=true} <- FuncDb]. init_sig_args([Root | Roots], StMap, Acc) -> #opt_st{args=Args0} = map_get(Root, StMap), diff --git a/lib/compiler/src/beam_types.erl b/lib/compiler/src/beam_types.erl index 5f7350516d..cf81c34670 100644 --- a/lib/compiler/src/beam_types.erl +++ b/lib/compiler/src/beam_types.erl @@ -1368,12 +1368,11 @@ verified_normal_type(#t_tuple{size=Size,elements=Es}=T) -> %% union). 'any' is prohibited since it's implicit and should never be %% present in the map, and a 'none' element ought to have reduced the %% entire tuple to 'none'. - maps:fold(fun(Index, Element, _) when is_integer(Index), - 1 =< Index, Index =< Size, - Index =< ?TUPLE_ELEMENT_LIMIT, - Element =/= any, Element =/= none -> - verified_type(Element) - end, [], Es), + _ = [verified_type(Element) || + Index := Element <- Es, + is_integer(Index), 1 =< Index, Index =< Size, + Index =< ?TUPLE_ELEMENT_LIMIT, + Element =/= any, Element =/= none], T. %%% diff --git a/lib/compiler/src/v3_kernel.erl b/lib/compiler/src/v3_kernel.erl index 3443f43959..809924c7f3 100644 --- a/lib/compiler/src/v3_kernel.erl +++ b/lib/compiler/src/v3_kernel.erl @@ -1565,9 +1565,7 @@ group_value(_, Us, Cs) -> Map = group_values(Cs, #{}), %% We must sort the grouped values to ensure consistent %% order from compilation to compilation. - sort(maps:fold(fun (_, Vcs, Css) -> - [{Us,reverse(Vcs)}|Css] - end, [], Map)). + sort([{Us,reverse(Vcs)} || _ := Vcs <- Map]). group_values([C|Cs], Acc) -> Val = clause_val(C), |