diff options
author | Björn Gustavsson <[email protected]> | 2018-05-07 10:30:22 +0200 |
---|---|---|
committer | GitHub <[email protected]> | 2018-05-07 10:30:22 +0200 |
commit | 7a19de1bf0eb863e0d0febf7e7e5e555c8628575 (patch) | |
tree | 84331df750b98d76b59472ecf2de657121798931 /lib/compiler/src/beam_peep.erl | |
parent | 49dc5d3975357971ffc3020d095a8187d80e3b69 (diff) | |
parent | 5d0874a8f9fd617308d9024783db1e4e24268184 (diff) | |
download | otp-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.erl | 6 |
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), |