aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjörn-Egil Dahlberg <[email protected]>2014-02-21 17:14:43 +0100
committerBjörn-Egil Dahlberg <[email protected]>2014-02-21 17:14:43 +0100
commit0dd1ae604a093a475c3af716958092427820a64e (patch)
tree982ae37e744596de31861412961d1fa6656b5d26
parent79251a67edf33dc5e331c6ad627711fb83e376d2 (diff)
downloadotp-0dd1ae604a093a475c3af716958092427820a64e.tar.gz
otp-0dd1ae604a093a475c3af716958092427820a64e.tar.bz2
otp-0dd1ae604a093a475c3af716958092427820a64e.zip
erts: Maps src instructions can't be literals
Move src to a register if it is a literal.
-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