[libcxx-commits] [libcxx] [libc++] Optimize vector growing of trivially relocatable types (PR #76657)
Louis Dionne via libcxx-commits
libcxx-commits at lists.llvm.org
Thu Jan 18 09:25:41 PST 2024
================
@@ -724,6 +724,20 @@ public:
typedef typename __alloc_traits::pointer pointer;
typedef typename __alloc_traits::const_pointer const_pointer;
+ // A basic_string contains the following members which may be trivially relocatable:
+ // - pointer: is currently assumed to be trivially relocatable, but is still checked in case that changes
+ // - size_type: is always trivially relocatable, since it has to be an integral type
+ // - value_type: is always trivially relocatable, since it has to be trivial
+ // - unsigned char: is a fundamental type, so it's trivially relocatable
+ // - allocator_type: may or may not be trivially relocatable, so it's checked
+ //
+ // This string implementation doesn't contain any references into itself. It only contains a bit that says whether
+ // it is in small or large string mode, so the entire structure is trivially relocatable if it's members are.
----------------
ldionne wrote:
```suggestion
// it is in small or large string mode, so the entire structure is trivially relocatable if its members are.
```
https://github.com/llvm/llvm-project/pull/76657
More information about the libcxx-commits
mailing list