| Index: net/quic/quic_one_block_arena.h
|
| diff --git a/net/quic/quic_one_block_arena.h b/net/quic/quic_one_block_arena.h
|
| deleted file mode 100644
|
| index 37fc7307902f7f091a55dd4cc1133a1fd458c997..0000000000000000000000000000000000000000
|
| --- a/net/quic/quic_one_block_arena.h
|
| +++ /dev/null
|
| @@ -1,77 +0,0 @@
|
| -// 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. DCHECK's
|
| -// if an allocation out of the arena ever fails in debug builds; falls back to
|
| -// heap allocation in release builds.
|
| -
|
| -#ifndef NET_QUIC_QUIC_ONE_BLOCK_ARENA_H_
|
| -#define NET_QUIC_QUIC_ONE_BLOCK_ARENA_H_
|
| -
|
| -#include "net/quic/quic_arena_scoped_ptr.h"
|
| -#include "net/quic/quic_flags.h"
|
| -#include "net/quic/quic_utils.h"
|
| -
|
| -#define PREDICT_FALSE(x) x
|
| -
|
| -namespace net {
|
| -
|
| -template <uint32_t ArenaSize>
|
| -class QuicOneBlockArena {
|
| - static const uint32_t kMaxAlign = 8;
|
| -
|
| - public:
|
| - QuicOneBlockArena();
|
| -
|
| - // Instantiates an object of type |T| with |args|. |args| are perfectly
|
| - // forwarded to |T|'s constructor. The returned pointer's lifetime is
|
| - // controlled by QuicArenaScopedPtr.
|
| - template <typename T, typename... Args>
|
| - QuicArenaScopedPtr<T> New(Args&&... args);
|
| -
|
| - private:
|
| - // Returns the size of |T| aligned up to |kMaxAlign|.
|
| - template <typename T>
|
| - static inline uint32_t AlignedSize() {
|
| - return ((sizeof(T) + (kMaxAlign - 1)) / kMaxAlign) * kMaxAlign;
|
| - }
|
| -
|
| - // Actual storage.
|
| - // Subtle/annoying: the value '8' must be coded explicitly into the alignment
|
| - // declaration for MSVC.
|
| - QUIC_ALIGNED(8) char storage_[ArenaSize];
|
| - // Current offset into the storage.
|
| - uint32_t offset_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(QuicOneBlockArena);
|
| -};
|
| -
|
| -template <uint32_t ArenaSize>
|
| -QuicOneBlockArena<ArenaSize>::QuicOneBlockArena() : offset_(0) {}
|
| -
|
| -template <uint32_t ArenaSize>
|
| -template <typename T, typename... Args>
|
| -QuicArenaScopedPtr<T> QuicOneBlockArena<ArenaSize>::New(Args&&... args) {
|
| - DCHECK_LT(AlignedSize<T>(), ArenaSize)
|
| - << "Object is too large for the arena.";
|
| - static_assert(QUIC_ALIGN_OF(T) > 1,
|
| - "Objects added to the arena must be at least 2B aligned.");
|
| - if (PREDICT_FALSE(offset_ > ArenaSize - AlignedSize<T>())) {
|
| - LOG(DFATAL) << "Ran out of space in QuicOneBlockArena at " << this
|
| - << ", max size was " << ArenaSize << ", failing request was "
|
| - << AlignedSize<T>() << ", end of arena was " << offset_;
|
| - return QuicArenaScopedPtr<T>(new T(std::forward<Args>(args)...));
|
| - }
|
| -
|
| - void* buf = &storage_[offset_];
|
| - new (buf) T(std::forward<Args>(args)...);
|
| - offset_ += AlignedSize<T>();
|
| - return QuicArenaScopedPtr<T>(buf,
|
| - QuicArenaScopedPtr<T>::ConstructFrom::kArena);
|
| -}
|
| -
|
| -} // namespace net
|
| -
|
| -#endif // NET_QUIC_QUIC_ONE_BLOCK_ARENA_H_
|
|
|