[PATCH] D47360: Implement <memory_resource> as a copy of <experimental/memory_resource>.

Arthur O'Dwyer via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Jul 3 02:33:34 PDT 2018


Quuxplusone updated this revision to Diff 153883.
Quuxplusone added a comment.
Herald added subscribers: ldionne, mgrang, mgorny.

Clean some minor cruft from src/experimental/memory_resource.cpp. (This part is a separate git commit which I could pull-request if you want it separately.)

I wonder if `memory_resource` needs a key function for its vtable; consider the precedent of https://reviews.llvm.org/D27387. But out-of-lining a trivial destructor just to avoid `-Wweak-vtables` feels kind of awful.

Experimental and std differ in their implementation of `options()` because the latter needs to be compileable as `-std=c++11` whereas the former gets to use `-std=c++14`.


Repository:
  rCXX libc++

https://reviews.llvm.org/D47360

Files:
  include/CMakeLists.txt
  include/__memory_resource_base
  include/deque
  include/forward_list
  include/list
  include/map
  include/memory_resource
  include/module.modulemap
  include/regex
  include/set
  include/string
  include/unordered_map
  include/unordered_set
  include/vector
  src/experimental/memory_resource.cpp
  src/memory_resource.cpp
  test/libcxx/double_include.sh.cpp
  test/libcxx/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_piecewise_pair.pass.cpp
  test/libcxx/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/db_deallocate.pass.cpp
  test/libcxx/experimental/memory/memory.resource.adaptor/memory.resource.adaptor.mem/db_deallocate.pass.cpp
  test/libcxx/min_max_macros.sh.cpp
  test/libcxx/utilities/utility/mem.res/mem.poly.allocator.class/mem.poly.allocator.mem/construct_piecewise_pair.pass.cpp
  test/libcxx/utilities/utility/mem.res/mem.poly.allocator.class/mem.poly.allocator.mem/db_deallocate.pass.cpp
  test/libcxx/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.mem/allocate_in_geometric_progression.pass.cpp
  test/libcxx/utilities/utility/mem.res/mem.res.pool/unsynchronized_buffer.pass.cpp
  test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.ctor/default.pass.cpp
  test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.ctor/memory_resource_convert.pass.cpp
  test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.eq/equal.pass.cpp
  test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.eq/not_equal.pass.cpp
  test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/allocate.pass.cpp
  test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_const_lvalue_pair.pass.cpp
  test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_rvalue.pass.cpp
  test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_values.pass.cpp
  test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_piecewise_pair.pass.cpp
  test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_types.pass.cpp
  test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/deallocate.pass.cpp
  test/std/experimental/memory/memory.resource.adaptor/memory.resource.adaptor.ctor/alloc_copy.pass.cpp
  test/std/experimental/memory/memory.resource.adaptor/memory.resource.adaptor.ctor/alloc_move.pass.cpp
  test/std/experimental/memory/memory.resource.adaptor/memory.resource.adaptor.ctor/default.pass.cpp
  test/std/experimental/memory/memory.resource.adaptor/memory.resource.adaptor.mem/do_allocate_and_deallocate.pass.cpp
  test/std/experimental/memory/memory.resource.adaptor/memory.resource.adaptor.mem/do_is_equal.pass.cpp
  test/std/experimental/memory/memory.resource.global/default_resource.pass.cpp
  test/std/experimental/memory/memory.resource/memory.resource.eq/equal.pass.cpp
  test/std/experimental/memory/memory.resource/memory.resource.eq/not_equal.pass.cpp
  test/std/experimental/memory/memory.resource/memory.resource.public/allocate.pass.cpp
  test/std/experimental/memory/memory.resource/memory.resource.public/deallocate.pass.cpp
  test/std/experimental/memory/memory.resource/memory.resource.public/dtor.pass.cpp
  test/std/experimental/memory/memory.resource/memory.resource.public/is_equal.pass.cpp
  test/std/utilities/utility/mem.res/mem.poly.allocator.class/mem.poly.allocator.ctor/assign.pass.cpp
  test/std/utilities/utility/mem.res/mem.poly.allocator.class/mem.poly.allocator.ctor/copy.pass.cpp
  test/std/utilities/utility/mem.res/mem.poly.allocator.class/mem.poly.allocator.ctor/default.pass.cpp
  test/std/utilities/utility/mem.res/mem.poly.allocator.class/mem.poly.allocator.ctor/memory_resource_convert.pass.cpp
  test/std/utilities/utility/mem.res/mem.poly.allocator.class/mem.poly.allocator.ctor/other_alloc.pass.cpp
  test/std/utilities/utility/mem.res/mem.poly.allocator.class/mem.poly.allocator.eq/equal.pass.cpp
  test/std/utilities/utility/mem.res/mem.poly.allocator.class/mem.poly.allocator.eq/not_equal.pass.cpp
  test/std/utilities/utility/mem.res/mem.poly.allocator.class/mem.poly.allocator.mem/allocate.pass.cpp
  test/std/utilities/utility/mem.res/mem.poly.allocator.class/mem.poly.allocator.mem/construct_pair.pass.cpp
  test/std/utilities/utility/mem.res/mem.poly.allocator.class/mem.poly.allocator.mem/construct_pair_const_lvalue_pair.pass.cpp
  test/std/utilities/utility/mem.res/mem.poly.allocator.class/mem.poly.allocator.mem/construct_pair_rvalue.pass.cpp
  test/std/utilities/utility/mem.res/mem.poly.allocator.class/mem.poly.allocator.mem/construct_pair_values.pass.cpp
  test/std/utilities/utility/mem.res/mem.poly.allocator.class/mem.poly.allocator.mem/construct_piecewise_pair.pass.cpp
  test/std/utilities/utility/mem.res/mem.poly.allocator.class/mem.poly.allocator.mem/construct_piecewise_pair_evil.pass.cpp
  test/std/utilities/utility/mem.res/mem.poly.allocator.class/mem.poly.allocator.mem/construct_types.pass.cpp
  test/std/utilities/utility/mem.res/mem.poly.allocator.class/mem.poly.allocator.mem/deallocate.pass.cpp
  test/std/utilities/utility/mem.res/mem.poly.allocator.class/mem.poly.allocator.mem/destroy.pass.cpp
  test/std/utilities/utility/mem.res/mem.poly.allocator.class/mem.poly.allocator.mem/resource.pass.cpp
  test/std/utilities/utility/mem.res/mem.poly.allocator.class/mem.poly.allocator.mem/select_on_container_copy_construction.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.aliases/header_deque_synop.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.aliases/header_forward_list_synop.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.aliases/header_list_synop.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.aliases/header_list_synop2.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.aliases/header_map_synop.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.aliases/header_regex_synop.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.aliases/header_set_synop.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.aliases/header_string_synop.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.aliases/header_string_synop2.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.aliases/header_unordered_map_synop.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.aliases/header_unordered_set_synop.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.aliases/header_vector_synop.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.global/default_resource.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.global/new_delete_resource.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.global/null_memory_resource.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.ctor/copy_move.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.ctor/with_default_resource.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.ctor/without_buffer.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.mem/allocate_deallocate.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.mem/allocate_exception_safety.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.mem/allocate_from_initial_buffer.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.mem/allocate_from_underaligned_buffer.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.mem/allocate_from_zero_sized_buffer.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.mem/allocate_in_geometric_progression.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.mem/allocate_overaligned_request.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.mem/allocate_with_initial_size.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.mem/equality.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.monotonic.buffer/nothing_to_do.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.ctor/ctor_does_not_allocate.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.ctor/sync_with_default_resource.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.ctor/unsync_with_default_resource.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.mem/equality.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.mem/sync_allocate.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.mem/sync_allocate_overaligned_request.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.mem/sync_allocate_reuse_blocks.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.mem/sync_deallocate_matches_allocate.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.mem/unsync_allocate.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.mem/unsync_allocate_overaligned_request.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.mem/unsync_allocate_reuse_blocks.pass.cpp
  test/std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.mem/unsync_deallocate_matches_allocate.pass.cpp
  test/std/utilities/utility/mem.res/mem.res/construct.fail.cpp
  test/std/utilities/utility/mem.res/mem.res/mem.res.eq/equal.pass.cpp
  test/std/utilities/utility/mem.res/mem.res/mem.res.eq/not_equal.pass.cpp
  test/std/utilities/utility/mem.res/mem.res/mem.res.private/private_members.fail.cpp
  test/std/utilities/utility/mem.res/mem.res/mem.res.private/protected_members.fail.cpp
  test/std/utilities/utility/mem.res/mem.res/mem.res.public/allocate.pass.cpp
  test/std/utilities/utility/mem.res/mem.res/mem.res.public/deallocate.pass.cpp
  test/std/utilities/utility/mem.res/mem.res/mem.res.public/dtor.pass.cpp
  test/std/utilities/utility/mem.res/mem.res/mem.res.public/is_equal.pass.cpp
  test/std/utilities/utility/mem.res/nothing_to_do.pass.cpp
  test/support/test_experimental_memory_resource.hpp
  test/support/test_memory_resource.hpp
  test/support/uses_alloc_types.hpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D47360.153883.patch
Type: text/x-patch
Size: 256114 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20180703/46a252cc/attachment-0001.bin>


More information about the cfe-commits mailing list