History log of /external/libcxx/test/std/containers/associative/multiset/insert_allocator_requirements.pass.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
ee226c05af9e0187098f43fb71465a581487af9b 09-Jun-2016 Dan Austin <danielaustin@google.com> Revert "Revert "Update aosp/master libcxx rebase to r263688""

This reverts commit 1d4a1edbc7e4461b59239e1b8297e9dd395a6322.

Change-Id: I2909937fe582f2c5552bc86e7f4d2d5cff0de0aa
/external/libcxx/test/std/containers/associative/multiset/insert_allocator_requirements.pass.cpp
1d4a1edbc7e4461b59239e1b8297e9dd395a6322 26-May-2016 Dan Albert <danalbert@google.com> Revert "Update aosp/master libcxx rebase to r263688"

The world is burning.

This reverts commit c004fd909c006eec55077c52ee119e1fa338c9e9, reversing
changes made to 1418e4163da4bb0b9e3fe496e51c23a0dce399d9.
/external/libcxx/test/std/containers/associative/multiset/insert_allocator_requirements.pass.cpp
83c9dc1714706857432f729ef355b326a6c89f6f 16-Apr-2016 Eric Fiselier <eric@efcs.ca> Extract key to avoid preemptive mallocs in insert/emplace in associative containers

Summary: This patch applies Duncan's work on __hash_table to __tree.

Reviewers: mclow.lists, dexonsmith

Subscribers: dexonsmith, cfe-commits

Differential Revision: http://reviews.llvm.org/D18637

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@266491 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxx/test/std/containers/associative/multiset/insert_allocator_requirements.pass.cpp
db21506d1305082361d03b73a0fdfec35751d40c 31-Mar-2016 Eric Fiselier <eric@efcs.ca> Teach __tree how to handle map's __value_type

This patch is fairly large and contains a number of changes. The changes all work towards
allowing __tree to properly handle __value_type esspecially when inserting into the __tree.
I chose not to break this change into smaller patches because it wouldn't be possible to
write meaningful standard-compliant tests for each patch.

It is very similar to r260513 "[libcxx] Teach __hash_table how to handle unordered_map's __hash_value_type".

Changes in <map>
* Remove __value_type's constructors because it should never be constructed directly.

* Make map::emplace and multimap::emplace forward to __tree and remove the old definitions

* Remove "__construct_node" map and multimap member functions. Almost all of the construction is done within __tree.

* Fix map's move constructor to access "__value_type.__nc" directly and pass this object to __tree::insert.

Changes in <__tree>
* Add traits to detect, handle, and unwrap, map's "__value_type".

* Convert methods taking "value_type" to take "__container_value_type" instead. Previously these methods caused
unwanted implicit conversions from "std::pair<Key, Value>" to "__value_type<Key, Value>".

* Delete __tree_node and __tree_node_base's constructors and assignment operators. The node types should never be constructed
because the "__value_" member of __tree_node must be constructed directly by the allocator.

* Make the __tree_node_destructor class and "__construct_node" methods unwrap "__node_value_type" into "__container_value_type" before invoking the allocator. The user's allocator can only be used to construct and destroy the container's value_type. Passing it map's "__value_type" was incorrect.

* Cleanup the "__insert" and "__emplace" methods. Have __insert forward to an __emplace function wherever possible to reduce
code duplication. __insert_unique(value_type const&) and __insert_unique(value_type&&) forward to __emplace_unique_key_args.
These functions will not allocate a new node if the value is already in the tree.

* Change the __find* functions to take the "key_type" directly instead of passing in "value_type" and unwrapping the key later.
This change allows the find functions to be used without having to construct a "value_type" first. This allows for a number
of optimizations.

* Teach __move_assign and __assign_multi methods to unwrap map's __value_type.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@264986 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxx/test/std/containers/associative/multiset/insert_allocator_requirements.pass.cpp