Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(371)

Unified Diff: blimp/client/app/blimp_discardable_memory_allocator.cc

Issue 2624903006: Remove all blimp client code. (Closed)
Patch Set: Update buildbot configuration Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: blimp/client/app/blimp_discardable_memory_allocator.cc
diff --git a/blimp/client/app/blimp_discardable_memory_allocator.cc b/blimp/client/app/blimp_discardable_memory_allocator.cc
deleted file mode 100644
index 08f315147905aeb4b33ad15807c6988d859f0e46..0000000000000000000000000000000000000000
--- a/blimp/client/app/blimp_discardable_memory_allocator.cc
+++ /dev/null
@@ -1,186 +0,0 @@
-// Copyright 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.
-
-#include "blimp/client/app/blimp_discardable_memory_allocator.h"
-
-#include "base/macros.h"
-#include "base/memory/discardable_memory.h"
-#include "base/trace_event/memory_allocator_dump.h"
-#include "base/trace_event/memory_dump_manager.h"
-#include "base/trace_event/process_memory_dump.h"
-
-namespace blimp {
-namespace client {
-
-namespace {
-
-size_t kDesiredMaxMemory = 20 * 1024 * 1024; /* 20 MB */
-
-} // namespace
-
-// Interface to the rest of the program. These objects are owned outside of the
-// allocator.
-class BlimpDiscardableMemoryAllocator::DiscardableMemoryChunkImpl
- : public base::DiscardableMemory {
- public:
- DiscardableMemoryChunkImpl(size_t size,
- BlimpDiscardableMemoryAllocator* allocator)
- : is_locked_(true),
- size_(size),
- data_(new uint8_t[size]),
- allocator_(allocator) {}
-
- ~DiscardableMemoryChunkImpl() override {
- DCHECK(allocator_); // Required for EXPECT_DCHECK_DEATH().
- base::AutoLock lock(allocator_->lock_);
- // Either the memory is discarded or the memory chunk is unlocked.
- DCHECK(data_ || !is_locked_);
- if (!is_locked_ && data_)
- allocator_->NotifyDestructed(unlocked_position_);
- }
-
- // Overridden from DiscardableMemoryChunk:
- bool Lock() override {
- base::AutoLock lock(allocator_->lock_);
- DCHECK(!is_locked_);
- if (!data_)
- return false;
-
- is_locked_ = true;
- allocator_->NotifyLocked(unlocked_position_);
- return true;
- }
-
- void Unlock() override {
- base::AutoLock lock(allocator_->lock_);
- DCHECK(is_locked_);
- DCHECK(data_);
- is_locked_ = false;
- unlocked_position_ = allocator_->NotifyUnlocked(this);
-
- // Allow the allocator to discard our memory if required.
- allocator_->FreeUnlockedChunksIfNeeded();
- }
-
- void* data() const override {
- if (data_) {
- DCHECK(is_locked_);
- return data_.get();
- }
- return nullptr;
- }
-
- base::trace_event::MemoryAllocatorDump* CreateMemoryAllocatorDump(
- const char* name,
- base::trace_event::ProcessMemoryDump* pmd) const override {
- base::trace_event::MemoryAllocatorDump* dump =
- pmd->CreateAllocatorDump(name);
- dump->AddScalar(base::trace_event::MemoryAllocatorDump::kNameSize,
- base::trace_event::MemoryAllocatorDump::kUnitsBytes, size_);
-
- // Memory is allocated from system allocator (malloc).
- pmd->AddSuballocation(dump->guid(),
- base::trace_event::MemoryDumpManager::GetInstance()
- ->system_allocator_pool_name());
- return dump;
- }
-
- size_t size() const { return size_; }
-
- void Discard() {
- allocator_->lock_.AssertAcquired();
- DCHECK(!is_locked_);
- data_.reset();
- }
-
-#if DCHECK_IS_ON()
- void DetachForDebug() {
- allocator_->lock_.AssertAcquired();
- allocator_ = nullptr;
- }
-#endif // DCHECK_IS_ON()
-
- private:
- bool is_locked_;
- size_t size_;
- std::unique_ptr<uint8_t[]> data_;
- BlimpDiscardableMemoryAllocator* allocator_;
-
- MemoryChunkList::iterator unlocked_position_;
-
- DISALLOW_IMPLICIT_CONSTRUCTORS(DiscardableMemoryChunkImpl);
-};
-
-BlimpDiscardableMemoryAllocator::BlimpDiscardableMemoryAllocator()
- : BlimpDiscardableMemoryAllocator(kDesiredMaxMemory) {}
-
-BlimpDiscardableMemoryAllocator::BlimpDiscardableMemoryAllocator(
- size_t desired_max_memory)
- : desired_max_memory_(desired_max_memory),
- total_live_memory_(0u),
- locked_chunks_(0) {
-}
-
-BlimpDiscardableMemoryAllocator::~BlimpDiscardableMemoryAllocator() {
- DCHECK_EQ(0, locked_chunks_);
-// DCHECK_EQ(0u, live_unlocked_chunks_.size());
-#if DCHECK_IS_ON()
- base::AutoLock lock(lock_);
- for (auto unlocked_chunk : live_unlocked_chunks_) {
- unlocked_chunk->DetachForDebug();
- }
-#endif // DCHECK_IS_ON()
-}
-
-std::unique_ptr<base::DiscardableMemory>
-BlimpDiscardableMemoryAllocator::AllocateLockedDiscardableMemory(size_t size) {
- base::AutoLock lock(lock_);
- std::unique_ptr<DiscardableMemoryChunkImpl> chunk(
- new DiscardableMemoryChunkImpl(size, this));
- total_live_memory_ += size;
- locked_chunks_++;
-
- FreeUnlockedChunksIfNeeded();
-
- return std::move(chunk);
-}
-
-BlimpDiscardableMemoryAllocator::MemoryChunkList::iterator
-BlimpDiscardableMemoryAllocator::NotifyUnlocked(
- DiscardableMemoryChunkImpl* chunk) {
- lock_.AssertAcquired();
- locked_chunks_--;
- return live_unlocked_chunks_.insert(live_unlocked_chunks_.end(), chunk);
-}
-
-void BlimpDiscardableMemoryAllocator::NotifyLocked(
-MemoryChunkList::iterator it) {
- lock_.AssertAcquired();
- locked_chunks_++;
- live_unlocked_chunks_.erase(it);
-}
-
-void BlimpDiscardableMemoryAllocator::NotifyDestructed(
- MemoryChunkList::iterator it) {
- lock_.AssertAcquired();
- live_unlocked_chunks_.erase(it);
-}
-
-void BlimpDiscardableMemoryAllocator::FreeUnlockedChunksIfNeeded() {
- lock_.AssertAcquired();
-
- // Go through the list of unlocked live chunks starting from the least
- // recently used, freeing as many as we can until we get our size under the
- // desired maximum.
- auto it = live_unlocked_chunks_.begin();
- while (total_live_memory_ > desired_max_memory_ &&
- it != live_unlocked_chunks_.end()) {
- total_live_memory_ -= (*it)->size();
- (*it)->Discard();
- it = live_unlocked_chunks_.erase(it);
- }
-}
-
-} // namespace client
-} // namespace blimp
« no previous file with comments | « blimp/client/app/blimp_discardable_memory_allocator.h ('k') | blimp/client/app/blimp_discardable_memory_allocator_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698