aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_map.c
AgeCommit message (Collapse)Author
2015-03-25erts: Refactor Map - use multiple values ESTACK_PUSHNBjörn-Egil Dahlberg
2015-03-25erts: GC needs the size even if the frag is not referencedBjörn-Egil Dahlberg
2015-03-25erts: Combine flat and hash maps under one unifying tagBjörn-Egil Dahlberg
2015-03-25Merge branch 'sverk/hamt-term2bin-bug/OTP-12585'Sverker Eriksson
* sverk/hamt-term2bin-bug/OTP-12585: erts: Optimize hashmap_get erts: Remove HAMT_SUBTAG_NODE_ARRAY erts: Fix bug in binary_to_term for hamt when yielding erts: Rename to flatmap_from_validated_list
2015-03-25Merge branch 'maint'Björn-Egil Dahlberg
Conflicts: erts/emulator/beam/erl_map.c erts/emulator/test/map_SUITE.erl
2015-03-24erts: Optimize hashmap_getSverker Eriksson
2015-03-24erts: Remove HAMT_SUBTAG_NODE_ARRAYSverker Eriksson
This will also fix a bug in term_to_binary treating full nodes as tuples and emiting LIST_EXT for leafs.
2015-03-24erts: Fix comparison of exact termsBjörn-Egil Dahlberg
Comparison of exact terms could cause faulty term tests. This was caused by a faulty (too small) internal type. Symptom: -1 = erts_internal:cmp_term(2147483648,0). %% wrong Correct: 1 = erts_internal:cmp_term(2147483648,0). Reported-by: Jesper Louis Andersen
2015-03-23erts: Rename to flatmap_from_validated_listSverker Eriksson
from map_to_validated_list
2015-03-20erts: Fix hashmap overestimationSverker Eriksson
Old overestimation assumed an average of k/3 nodes. This can be bad for large maps (with tight standard deviations) as the average vary between 0.3*k and up to almost 0.4*k.
2015-03-19erts: Ensure maps uses _rel functions in halfwordBjörn-Egil Dahlberg
2015-03-19erts: Ensure halfword has correct temp-heap for mapsBjörn-Egil Dahlberg
2015-03-13erts: Restrict GCC intrinsics by compiler versionBjörn-Egil Dahlberg
Intrinsics __builtin_clz and __builtin_popcount are only valid on GCC version 3.4 and above.
2015-03-12erts: Fix windows bug in hashmap_infoSverker Eriksson
undefined symbol 'MAX'
2015-03-12erts: Make hashmap iterator more flexibleSverker Eriksson
to allow mixing of 'next' and 'prev' operations.
2015-03-12erts, kernel: Fix erts_debug:size/1 for hashmapsBjörn-Egil Dahlberg
This commit introduces two BIFs: * erts_internal:map_type/1 * erts_internal:map_hashmap_children/1 erts_internal:map_hashmap_children/1 is only intended for use within erts_debug:size/1 since the internal hashmap node is not allowed to leak anywhere.
2015-03-12erts: Reintroduce is_map macroSverker Eriksson
as shorthand for is_flatmap || is_hashmap
2015-03-12erts: Refactor maps naming conventionSverker Eriksson
flatmap: Small map hashmap: Large map map: flatmap or hashmap
2015-03-12erts: Add hashmap_iterator_prev to mapsBjörn-Egil Dahlberg
2015-03-12erts: Tweak over estimation of hashmap size for binary_to_termSverker Eriksson
Strategy: Calculate an over estimation of heap size that will give such a low probability for overflow, that "it will not happen". Scary assumption 1: Uniformly distributed hash values. Scary assumption 2: Tree size is normally distributed (right?)
2015-03-12erts: Reject duplicate keys for hamt in binary_to_termSverker Eriksson
2015-03-12First stab at binary_to_term for hamtSverker Eriksson
with over estimation of heap size.
2015-03-12erts: Fix various map vs hamt size bugsSverker Eriksson
2015-03-12erts: Fix instruction new_mapBjörn-Egil Dahlberg
2015-03-12erts: Refactor hashmap_from_ks_and_vsBjörn-Egil Dahlberg
Use extra key and value if needed.
2015-03-12erts: Fix update_map_assoc instructionBjörn-Egil Dahlberg
Did not build a hashmap once the small limit was exceeded.
2015-03-12erts: Ensure maps becomes hashmaps in maps:merge/2Björn-Egil Dahlberg
Maps should become hashmaps when merged size exceeds small limit size.
2015-03-12erts: Split hashmap_insert to down and upBjörn-Egil Dahlberg
2015-03-12erts: Handle hashmap in get_map_element(s) instructionsBjörn-Egil Dahlberg
2015-03-12erts: Remove erl_hashmap.[ch] filesBjörn-Egil Dahlberg
2015-03-12erts: Move hashmap:merge/2 to mapsBjörn-Egil Dahlberg
2015-03-12erts: Move hashmap:info/1 to erts_debug:map_info/1Björn-Egil Dahlberg
2015-03-12erts: Move hashmap:from_list/1 to mapsBjörn-Egil Dahlberg
2015-03-12erts: Refactor maps:from_list/1Björn-Egil Dahlberg
2015-03-12erts: Refactor maps:remove/2Björn-Egil Dahlberg
2015-03-12erts: Move hashmap:remove/2 to mapsBjörn-Egil Dahlberg
2015-03-12erts: Refactor maps:update/3 and maps:put/3Björn-Egil Dahlberg
2015-03-12erts: Reindent erts_maps_updateBjörn-Egil Dahlberg
2015-03-12erts: Move hashmap:put/3, update/3 to mapsBjörn-Egil Dahlberg
2015-03-12erts: Refactor maps:get/2, find/2 and is_key/2Björn-Egil Dahlberg
2015-03-12erts: Move hashmap:get/2, find/2 and is_key/2 to mapsBjörn-Egil Dahlberg
2015-03-12erts: Move hashmap:to_list/1, keys/1 and values/1 to mapsBjörn-Egil Dahlberg
2015-03-12erts: Move hashmap:size/1 to mapsBjörn-Egil Dahlberg
2014-08-20Return pointer to value in erts_maps_get()Anthony Ramine
While at it, implement erts_maps_get_rel() for halfword support.
2014-04-30erts: Add erts_internal:map_to_tuple_keys/1Björn-Egil Dahlberg
* Used for introspection. * Will return the internal key tuple if applicable * Not documented - not for public use
2014-03-21erts: Fix heap overflow in maps:remove/2 when key is not foundSverker Eriksson
One key-value pair too many was copied.
2014-01-29erts: Add map construction to driver APISverker Eriksson
erl_drv_output_term() and erl_drv_send_term() can send messages containing maps with the use of the new ERL_DRV_MAP. The driver API minor version is updated as new functionality is added.
2014-01-29erts: Optimize erts_map_update/removeSverker Eriksson
to not continue comparing keys once it has been found.
2014-01-29erts: Fix bug in erts_maps_removeSverker Eriksson
HRelease was called with wrong arguments and left garbage on heap when key was not found.
2014-01-29erts: Update maps BIFs to use term orderBjörn-Egil Dahlberg
Maps internally uses term order to store keys in an ordered fashion.