commit | abbc98a53a6eccc9571b5e4d0b6efd9342addd83 | [log] [tgz] |
---|---|---|
author | bnc <bnc@google.com> | Thu Apr 01 12:40:17 2021 -0700 |
committer | Copybara-Service <copybara-worker@google.com> | Thu Apr 01 12:41:28 2021 -0700 |
tree | c3c4e2377d8ab8e886a7f755e42fae79a2c73b7b | |
parent | 13067cfc3f6e562e31900ca92065c1ad4e2fc6bb [diff] |
Use QuicCircularDeque instead of QuicQueue. QuicQueue is std::queue which is backed by std::deque in internal code. It is base::queue which a typedef for std::queue backed by base::circular_deque in Chromium. This changes the internal implementation from a container that has iterator stability from one that does not (elements may move when a new one is added). It is safe to do so because (1) by code inspection I established that nothing is done with these two containers that would rely on iterator stability (like taking address of front() then pushing a new element), and (2) this has already been the case in Chromium for a while and there are no reported crashes or MSAN failures. My motivation is to remove as many things from QUICHE platform as possible. Also note that QuicCircularDeque typically uses less memory than std::deque, especially for small containers. PiperOrigin-RevId: 366309029 Change-Id: I0f8f8185feee071b1043b7a60e6456444a281fab
QUICHE (QUIC, Http/2, Etc) is Google‘s implementation of QUIC and related protocols. It powers Chromium as well as Google’s QUIC servers and some other projects. QUICHE is only supported on little-endian platforms.
Code can be viewed in CodeSearch in Quiche and is imported into Chromium.