diff options
author | Björn Gustavsson <[email protected]> | 2018-03-21 10:06:10 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2018-03-21 10:06:10 +0100 |
commit | 2c5711efcdd48ab8a9b7cd9ae27c97b9c1f8c37e (patch) | |
tree | c57a003fb9902c58008d21f6630efeb80209b04c /erts/emulator | |
parent | f975e76672a8faabe6e9652df7ad743f148ceeb3 (diff) | |
parent | 2371741165a0f6c39893fe9f586d7586fd7d02a1 (diff) | |
download | otp-2c5711efcdd48ab8a9b7cd9ae27c97b9c1f8c37e.tar.gz otp-2c5711efcdd48ab8a9b7cd9ae27c97b9c1f8c37e.tar.bz2 otp-2c5711efcdd48ab8a9b7cd9ae27c97b9c1f8c37e.zip |
Merge branch 'bjorn/misc-beam-fixes'
* bjorn/misc-beam-fixes:
Correctly handle get_map_elements with a literal map
core_parse: Fix handling of negative sizes in binaries
Diffstat (limited to 'erts/emulator')
-rw-r--r-- | erts/emulator/beam/ops.tab | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/erts/emulator/beam/ops.tab b/erts/emulator/beam/ops.tab index 77e375f2c0..bc765a8c94 100644 --- a/erts/emulator/beam/ops.tab +++ b/erts/emulator/beam/ops.tab @@ -1413,7 +1413,7 @@ has_map_fields Fail Src Size Rest=* => \ ## Transform get_map_elements(s) #{ K1 := V1, K2 := V2 } -get_map_elements Fail Src=xy Size=u==2 Rest=* => \ +get_map_elements Fail Src Size=u==2 Rest=* => \ gen_get_map_element(Fail, Src, Size, Rest) get_map_elements Fail Src Size Rest=* | map_key_sort(Size, Rest) => \ gen_get_map_elements(Fail, Src, Size, Rest) @@ -1423,8 +1423,12 @@ i_get_map_elements f? s I i_get_map_element Fail Src=xy Key=y Dst => \ move Key x | i_get_map_element Fail Src x Dst +i_get_map_element_hash Fail Src=c Key Hash Dst => \ + move Src x | i_get_map_element_hash Fail x Key Hash Dst i_get_map_element_hash f? xy c I xy +i_get_map_element Fail Src=c Key Dst => \ + move Src x | i_get_map_element Fail x Key Dst i_get_map_element f? xy x xy # |