// Copyright (c) 2016 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // An arena that consists of a single inlined block of |ArenaSize|. Useful to // avoid repeated calls to malloc/new and to improve memory locality. // QUICHE_DCHECK's if an allocation out of the arena ever fails in debug builds; // falls back to heap allocation in release builds. #ifndef QUICHE_QUIC_CORE_QUIC_ONE_BLOCK_ARENA_H_ #define QUICHE_QUIC_CORE_QUIC_ONE_BLOCK_ARENA_H_ #include <cstdint> #include "absl/base/optimization.h" #include "quiche/quic/core/quic_arena_scoped_ptr.h" #include "quiche/quic/core/quic_types.h" #include "quiche/quic/platform/api/quic_bug_tracker.h" #include "quiche/quic/platform/api/quic_logging.h" namespace quic { template <uint32_t ArenaSize> class QUICHE_EXPORT QuicOneBlockArena { … }; // QuicConnections currently use around 1KB of polymorphic types which would // ordinarily be on the heap. Instead, store them inline in an arena. QuicConnectionArena; } // namespace quic #endif // QUICHE_QUIC_CORE_QUIC_ONE_BLOCK_ARENA_H_