diff options
author | Sverker Eriksson <sverker@erlang.org> | 2015-02-11 21:50:25 +0100 |
---|---|---|
committer | Björn-Egil Dahlberg <egil@erlang.org> | 2015-03-12 19:15:23 +0100 |
commit | 442c9b4d11a62c55b46ffb25f27b5ec5fb3adda7 (patch) | |
tree | 1167524b8fea2e3299cfdc33b97da180d784805e /erts/emulator/beam/utils.c | |
parent | aad7d6fe4e1e9fe086d275ab3ea34c5285cc8edb (diff) | |
download | otp-442c9b4d11a62c55b46ffb25f27b5ec5fb3adda7.tar.gz otp-442c9b4d11a62c55b46ffb25f27b5ec5fb3adda7.tar.bz2 otp-442c9b4d11a62c55b46ffb25f27b5ec5fb3adda7.zip |
erts: First recursive version of hashmap compare
Diffstat (limited to 'erts/emulator/beam/utils.c')
-rw-r--r-- | erts/emulator/beam/utils.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/erts/emulator/beam/utils.c b/erts/emulator/beam/utils.c index 908116c64c..9fd53e941d 100644 --- a/erts/emulator/beam/utils.c +++ b/erts/emulator/beam/utils.c @@ -2702,6 +2702,19 @@ tailrecur_ne: goto tailrecur; } + case (_TAG_HEADER_HASHMAP >> _TAG_PRIMARY_SIZE) : + { + if (!is_hashmap_rel(b,b_base)) { + a_tag = HASHMAP_DEF; + goto mixed_types; + } + i = (((hashmap_head_t*) hashmap_val_rel(a,a_base))->size - + ((hashmap_head_t*) hashmap_val_rel(b,b_base))->size); + if (i) { + RETURN_NEQ(i); + } + ON_CMP_GOTO(hashmap_cmp(a, b)); + } case (_TAG_HEADER_FLOAT >> _TAG_PRIMARY_SIZE): if (!is_float_rel(b,b_base)) { a_tag = FLOAT_DEF; |