[all-commits] [llvm/llvm-project] e8f618: [libcxx] adds size-based `__split_buffer` represen...

Christopher Di Bella via All-commits all-commits at lists.llvm.org
Fri Sep 12 06:33:31 PDT 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: e8f61801c6237e56b3d69190af7a7acfdcede1e8
      https://github.com/llvm/llvm-project/commit/e8f61801c6237e56b3d69190af7a7acfdcede1e8
  Author: Christopher Di Bella <cjdb at google.com>
  Date:   2025-09-12 (Fri, 12 Sep 2025)

  Changed paths:
    M libcxx/include/__split_buffer
    M libcxx/include/__vector/vector.h
    M libcxx/include/deque
    M libcxx/test/libcxx/type_traits/is_replaceable.compile.pass.cpp
    M libcxx/test/libcxx/type_traits/is_trivially_relocatable.compile.pass.cpp
    M lldb/examples/synthetic/libcxx.py

  Log Message:
  -----------
  [libcxx] adds size-based `__split_buffer` representation to unstable ABI (#139632)

**tl;dr** We can significantly improve the runtime performance of
`std::vector` by changing its representation from three pointers to one
pointer and two integers. This document explains the details of this
change, along with the justifications for making it. See the [RFC] for
more information.

`vector` depends on `__split_buffer` for inserting elements. Changing
`__split_buffer` to match `vector`'s representation simplifies the
model, as it eliminates the need to convert between two different
representations of a contiguous buffer in the same configuration of
libc++.

[RFC]: https://discourse.llvm.org/t/adding-a-size-based-vector-to-libc-s-unstable-abi/86306

---------

Co-authored-by: Jorge Gorbe Moya <jgorbe at google.com>



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list