[libcxx-commits] [PATCH] D125496: [libc++] Simplify the string structures a bit more
Nikolas Klauser via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Sat May 14 13:08:36 PDT 2022
This revision was automatically updated to reflect the committed changes.
Closed by commit rG5d55ffe94dc9: [libc++] Simplify the string structures a bit more (authored by philnik).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D125496/new/
https://reviews.llvm.org/D125496
Files:
libcxx/include/string
Index: libcxx/include/string
===================================================================
--- libcxx/include/string
+++ libcxx/include/string
@@ -672,6 +672,7 @@
typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
private:
+ static_assert(CHAR_BIT == 8, "This implementation assumes that one byte contains 8 bits");
#ifdef _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT
@@ -689,14 +690,13 @@
struct __short
{
value_type __data_[__min_cap];
- unsigned char __padding[sizeof(value_type) - 1];
- unsigned char __size_ : 7;
- unsigned char __is_long_ : 1;
+ unsigned char __padding_[sizeof(value_type) - 1];
+ size_type __size_ : 7;
+ size_type __is_long_ : 1;
};
// The __endian_factor is required because the field we use to store the size
-// (either size_type or unsigned char depending on long/short) has one fewer
-// bit than it would if it were not a bitfield.
+// has one fewer bit than it would if it were not a bitfield.
//
// If the LSB is used to store the short-flag in the short string representation,
// we have to multiply the size by two when it is stored and divide it by two when
@@ -735,14 +735,9 @@
struct __short
{
- union
- {
- struct {
- unsigned char __is_long_ : 1;
- unsigned char __size_ : 7;
- };
- value_type __lx;
- };
+ size_type __is_long_ : 1;
+ size_type __size_ : 7;
+ char __padding_[sizeof(value_type) - 1];
value_type __data_[__min_cap];
};
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D125496.429486.patch
Type: text/x-patch
Size: 1619 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20220514/a564bd21/attachment.bin>
More information about the libcxx-commits
mailing list