diff options
author | Björn Gustavsson <[email protected]> | 2019-01-30 07:52:18 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2019-02-01 12:44:32 +0100 |
commit | e713179951d64d85450494d100caf0495ba9e104 (patch) | |
tree | e4f9e5ad90974418e83a2bbd0497a1bef421b4b9 /lib/compiler/src/beam_ssa_recv.erl | |
parent | 855af19300720a8d0dbb588a4c145ad5ffe1453e (diff) | |
download | otp-e713179951d64d85450494d100caf0495ba9e104.tar.gz otp-e713179951d64d85450494d100caf0495ba9e104.tar.bz2 otp-e713179951d64d85450494d100caf0495ba9e104.zip |
Prefer map syntax and guard BIFs over the maps modules
Avoiding calls usually reduces the size of the stack frame and reduces
register shuffling.
Diffstat (limited to 'lib/compiler/src/beam_ssa_recv.erl')
-rw-r--r-- | lib/compiler/src/beam_ssa_recv.erl | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/lib/compiler/src/beam_ssa_recv.erl b/lib/compiler/src/beam_ssa_recv.erl index 6e49b128da..1e0e1ecac2 100644 --- a/lib/compiler/src/beam_ssa_recv.erl +++ b/lib/compiler/src/beam_ssa_recv.erl @@ -101,7 +101,7 @@ opt([{L,#b_blk{is=[#b_set{op=peek_message}|_]}=Blk0}|Bs], Blocks0, Preds) -> case recv_opt(Preds, L, Blocks0) of {yes,Blocks1} -> Blk = beam_ssa:add_anno(recv_set, L, Blk0), - Blocks = maps:put(L, Blk, Blocks1), + Blocks = Blocks1#{L:=Blk}, opt(Bs, Blocks, []); no -> opt(Bs, Blocks0, []) @@ -111,11 +111,11 @@ opt([{L,_}|Bs], Blocks, Preds) -> opt([], Blocks, _) -> Blocks. recv_opt([L|Ls], RecvLbl, Blocks) -> - #b_blk{is=Is0} = Blk0 = maps:get(L, Blocks), + #b_blk{is=Is0} = Blk0 = map_get(L, Blocks), case recv_opt_is(Is0, RecvLbl, Blocks, []) of {yes,Is} -> Blk = Blk0#b_blk{is=Is}, - {yes,maps:put(L, Blk, Blocks)}; + {yes,Blocks#{L:=Blk}}; no -> recv_opt(Ls, RecvLbl, Blocks) end; @@ -174,7 +174,7 @@ opt_ref_used(RecvLbl, Ref, Blocks) -> end. opt_ref_used_1(L, Vs0, Blocks) -> - #b_blk{is=Is} = Blk = maps:get(L, Blocks), + #b_blk{is=Is} = Blk = map_get(L, Blocks), case opt_ref_used_is(Is, Vs0) of #{}=Vs -> opt_ref_used_last(Blk, Vs, Blocks); |