aboutsummaryrefslogtreecommitdiffstats
path: root/lib/compiler/src/beam_peep.erl
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2018-05-07 10:30:22 +0200
committerGitHub <[email protected]>2018-05-07 10:30:22 +0200
commit7a19de1bf0eb863e0d0febf7e7e5e555c8628575 (patch)
tree84331df750b98d76b59472ecf2de657121798931 /lib/compiler/src/beam_peep.erl
parent49dc5d3975357971ffc3020d095a8187d80e3b69 (diff)
parent5d0874a8f9fd617308d9024783db1e4e24268184 (diff)
downloadotp-7a19de1bf0eb863e0d0febf7e7e5e555c8628575.tar.gz
otp-7a19de1bf0eb863e0d0febf7e7e5e555c8628575.tar.bz2
otp-7a19de1bf0eb863e0d0febf7e7e5e555c8628575.zip
Merge pull request #1802 from michalmuskala/map-is-key-bif
Introduce is_map_key/2 guard BIF OTP-15037
Diffstat (limited to 'lib/compiler/src/beam_peep.erl')
-rw-r--r--lib/compiler/src/beam_peep.erl6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/compiler/src/beam_peep.erl b/lib/compiler/src/beam_peep.erl
index eb3192fe8f..920fb00397 100644
--- a/lib/compiler/src/beam_peep.erl
+++ b/lib/compiler/src/beam_peep.erl
@@ -77,6 +77,12 @@ peep([{bif,tuple_size,_,[_]=Ops,Dst}=I|Is], SeenTests0, Acc) ->
%% Kill all remembered tests that depend on the destination register.
SeenTests = kill_seen(Dst, SeenTests1),
peep(Is, SeenTests, [I|Acc]);
+peep([{bif,map_get,_,[Key,Map],Dst}=I|Is], SeenTests0, Acc) ->
+ %% Pretend that we have seen {test,has_map_fields,_,[Map,Key]}
+ SeenTests1 = gb_sets:add({has_map_fields,[Map,Key]}, SeenTests0),
+ %% Kill all remembered tests that depend on the destination register.
+ SeenTests = kill_seen(Dst, SeenTests1),
+ peep(Is, SeenTests, [I|Acc]);
peep([{bif,_,_,_,Dst}=I|Is], SeenTests0, Acc) ->
%% Kill all remembered tests that depend on the destination register.
SeenTests = kill_seen(Dst, SeenTests0),