- Oct 01, 2019
-
-
Igor Chorazewicz authored
to generically implement upgrade/downgrade operations. If scoped_lock_type implements upgrade_to_writer and downgrade_to_reader then traits class will just call those methods, otherwise it will provide default implementation.
-
Szymon Romik authored
Hashmap code cleanup
-
Szymon Romik authored
concurrent_hash_map: introduce version field and add reserved space
-
- Sep 30, 2019
-
-
Szymon Romik authored
Fix array move assignment operator
-
Igor Chorazewicz authored
to make sure that data was create using the same (or compatible) version of concurrent_hash_map.
-
Igor Chorazewicz authored
-
Igor Chorazewicz authored
Also change order of some members so that embedded_segment (which size is dependent on size of the mutexes used is at the end). This allows to have segment_enable_mutex aligned to cacheline.
-
Igor Chorazewicz authored
* Expect bucket bucket to be already locked inside get_node(). * Move logic for restarting search after mask race to internal_find/insert.
-
Igor Chorążewicz authored
explaining that it does not add moved-from array to the transaction. Also add test for move ctor.
-
Igor Chorążewicz authored
Until now, move assignment for array performed copy instead of move. Fix this issue and add test for move assignemt.
-
Igor Chorążewicz authored
Update doxygen files
-
- Sep 26, 2019
-
-
Łukasz Stolarczuk authored
-
Łukasz Stolarczuk authored
-
Igor Chorazewicz authored
This function should only be called after modification (only in internal_insert).
-
- Sep 25, 2019
-
-
Igor Chorążewicz authored
concurrent_hash_map: pass reference to bucket instead of pointer in get_node
-
Igor Chorazewicz authored
Copied from pmem/pmdk.
-
Igor Chorazewicz authored
Using uint64_t removes padding.
-
Igor Chorazewicz authored
get_node() expects pointer to bucket_accessor to always be set, so it's safer to use reference.
-
Igor Chorążewicz authored
concurrent_hash_map: remove wrong assert in get_node method
-
Szymon Romik authored
Template locks
-
- Sep 24, 2019
-
-
Pawel Karczewski authored
Change lock implementation in hashmap to use templates instead of compile time parameter. Changes are related to pretty complicated c++ syntax for template derived class using a member it inherits from its template base class. Coding convention is: * To get types defined in base class in derived class using name_of_type = typename base_class::name_of_type * To get access to methods defined in base class using base_class:method_name * To get access to fields defined in base class this->field_name As hash_map_node_base is now template, it's impossible to determine type of empty_bucket defined in way it was until now - so now it's removed. IMHO checking if node is nullptr is cleaner than comparing it to empty_bucket(which is nullptr anyway) -
Pawel Karczewski authored
-
Pawel Karczewski authored
Those functions are redundant, and contain no more needed compartions pointer to 63. Aplication logic without such calls seems to be little bit more readable
-
Igor Chorazewicz authored
Condition in the assert is not guaranteed to be true - it was added by mistake in: 7d7eebac
-
Pawel Karczewski authored
It's needed to be used by user as template parameter. pmem::obj::experimental::internal::shared_mutex_scoped_lock -> pmem::obj::experimental::shared_mutex_scoped_lock This change may be not displayed properly by git. Try: git show SHA --anchored="namespace"
-
- Sep 20, 2019
-
-
Igor Chorążewicz authored
Fix string sso usage
-
Igor Chorazewicz authored
-
Igor Chorazewicz authored
Use non_sso_data() and sso_data() methods instead of direct access to make sure data is accessed only when it is initialized.
-
Igor Chorazewicz authored
In insert, it was wrongly assumed that if size < sso_capacity it means that sso is used. It is possible that non_sso type is used and size is < sso_capacity so explicit check is needed.
-
- Sep 19, 2019
-
-
Szymon Romik authored
concurrent_hash_map: reimplement my_mask
-
- Sep 18, 2019
-
-
Igor Chorążewicz authored
Fix release build errors
-
- Sep 17, 2019
-
-
Igor Chorążewicz authored
my_mask is a variable which is reinitialized on each process restart. Until now, v<> was used for this purpose. Because v<> is not productized yet, reinitialize my_mask in runtime_initialize() method. Now, runtime_initialize() MUST be called after proccess restart. In future, when v<> is productized, we may switch back to using it.
-
Igor Chorazewicz authored
and call it in every test before using hashmap
-
Igor Chorazewicz authored
-
Igor Chorazewicz authored
-
Szymon Romik authored
concurrent_hash_map: implement insert using tx
-
- Sep 16, 2019
-
-
Szymon Romik authored
concurrent_hash_map: add test for concurrent inserts with the same key
-
Szymon Romik authored
Hash map minor refactoring
-
Igor Chorążewicz authored
travis: limit the coverage build
-
Igor Chorazewicz authored
Implement inserts which take rvalue ref uisng internal_insert. This is more consistent with implementation of other inserts.
-