aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator
diff options
context:
space:
mode:
authorBjörn-Egil Dahlberg <[email protected]>2014-02-24 14:28:22 +0100
committerBjörn-Egil Dahlberg <[email protected]>2014-02-24 14:28:22 +0100
commit4acee7b02b53d785c444e886c39ed82ab76b52fe (patch)
tree2d5110c59ad0022d43f97e76681b13e5dec58ea7 /erts/emulator
parentce614726e9fb19b462ed41a2f020b68ef98cd532 (diff)
parent771fa6d1f96684b61ed5f6033db51f5b0a55ec19 (diff)
downloadotp-4acee7b02b53d785c444e886c39ed82ab76b52fe.tar.gz
otp-4acee7b02b53d785c444e886c39ed82ab76b52fe.tar.bz2
otp-4acee7b02b53d785c444e886c39ed82ab76b52fe.zip
Merge branch 'egil/maps/fix-cerl-inlining'
* egil/maps/fix-cerl-inlining: compiler: Update map_SUITE to handle inlining erts: Maps src instructions can't be literals compiler: Fix map inlining compiler: Add variable coverage of map in cerl
Diffstat (limited to 'erts/emulator')
-rw-r--r--erts/emulator/beam/ops.tab10
1 files changed, 7 insertions, 3 deletions
diff --git a/erts/emulator/beam/ops.tab b/erts/emulator/beam/ops.tab
index 8406f5344a..73630fda8e 100644
--- a/erts/emulator/beam/ops.tab
+++ b/erts/emulator/beam/ops.tab
@@ -1470,11 +1470,15 @@ apply_last I P
#
put_map_assoc F n Dst Live Size Rest=* => new_map F Dst Live Size Rest
-put_map_exact F n Dst Live Size Rest=* => new_map F Dst Live Size Rest
-put_map_assoc F Src Dst Live Size Rest=* => \
+put_map_assoc F Src=s Dst Live Size Rest=* => \
update_map_assoc F Src Dst Live Size Rest
-put_map_exact F Src Dst Live Size Rest=* => \
+put_map_assoc F Src Dst Live Size Rest=* => \
+ move Src x | update_map_assoc F x Dst Live Size Rest
+put_map_exact F n Dst Live Size Rest=* => new_map F Dst Live Size Rest
+put_map_exact F Src=s Dst Live Size Rest=* => \
update_map_exact F Src Dst Live Size Rest
+put_map_exact F Src Dst Live Size Rest=* => \
+ move Src x | update_map_exact F x Dst Live Size Rest
new_map j d I I
update_map_assoc j s d I I