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

Unified Diff: content/child/child_discardable_shared_memory_manager.cc

Issue 1374213002: [tracing] Display the locked size of discardable memory segment. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Storing locked state in spans. Created 5 years, 3 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: content/child/child_discardable_shared_memory_manager.cc
diff --git a/content/child/child_discardable_shared_memory_manager.cc b/content/child/child_discardable_shared_memory_manager.cc
index cbe069a27cb011318629a84669ef22ec83331aa7..011f2d43cd35f17b13befd3d8c6889e41a1c1c44 100644
--- a/content/child/child_discardable_shared_memory_manager.cc
+++ b/content/child/child_discardable_shared_memory_manager.cc
@@ -31,10 +31,10 @@ class DiscardableMemoryImpl : public base::DiscardableMemory {
public:
DiscardableMemoryImpl(ChildDiscardableSharedMemoryManager* manager,
scoped_ptr<DiscardableSharedMemoryHeap::Span> span)
- : manager_(manager), span_(span.Pass()), is_locked_(true) {}
+ : manager_(manager), span_(span.Pass()) {}
~DiscardableMemoryImpl() override {
- if (is_locked_)
+ if (span_->is_locked())
manager_->UnlockSpan(span_.get());
manager_->ReleaseSpan(span_.Pass());
@@ -42,22 +42,20 @@ class DiscardableMemoryImpl : public base::DiscardableMemory {
// Overridden from base::DiscardableMemory:
bool Lock() override {
- DCHECK(!is_locked_);
+ DCHECK(!span_->is_locked());
if (!manager_->LockSpan(span_.get()))
return false;
- is_locked_ = true;
return true;
}
void Unlock() override {
- DCHECK(is_locked_);
+ DCHECK(span_->is_locked());
manager_->UnlockSpan(span_.get());
- is_locked_ = false;
}
void* data() const override {
- DCHECK(is_locked_);
+ DCHECK(span_->is_locked());
return reinterpret_cast<void*>(span_->start() * base::GetPageSize());
}
@@ -70,7 +68,6 @@ class DiscardableMemoryImpl : public base::DiscardableMemory {
private:
ChildDiscardableSharedMemoryManager* const manager_;
scoped_ptr<DiscardableSharedMemoryHeap::Span> span_;
- bool is_locked_;
DISALLOW_COPY_AND_ASSIGN(DiscardableMemoryImpl);
};
@@ -137,12 +134,9 @@ ChildDiscardableSharedMemoryManager::AllocateLockedDiscardableMemory(
// Attempt to lock |free_span|. Delete span and search free lists again
// if locking failed.
- if (free_span->shared_memory()->Lock(
- free_span->start() * base::GetPageSize() -
- reinterpret_cast<size_t>(free_span->shared_memory()->memory()),
- free_span->length() * base::GetPageSize()) ==
+ if (free_span->Lock(base::GetPageSize()) ==
base::DiscardableSharedMemory::FAILED) {
- DCHECK(!free_span->shared_memory()->IsMemoryResident());
+ DCHECK(!free_span->IsMemoryResident());
// We have to release purged memory before |free_span| can be destroyed.
heap_.ReleasePurgedMemory();
DCHECK(!free_span->shared_memory());
@@ -184,10 +178,7 @@ ChildDiscardableSharedMemoryManager::AllocateLockedDiscardableMemory(
if (pages < pages_to_allocate) {
scoped_ptr<DiscardableSharedMemoryHeap::Span> leftover =
heap_.Split(new_span.get(), pages);
- leftover->shared_memory()->Unlock(
- leftover->start() * base::GetPageSize() -
- reinterpret_cast<size_t>(leftover->shared_memory()->memory()),
- leftover->length() * base::GetPageSize());
+ leftover->Unlock(base::GetPageSize());
heap_.MergeIntoFreeLists(leftover.Pass());
}
@@ -223,15 +214,11 @@ bool ChildDiscardableSharedMemoryManager::LockSpan(
if (!span->shared_memory())
return false;
- size_t offset = span->start() * base::GetPageSize() -
- reinterpret_cast<size_t>(span->shared_memory()->memory());
- size_t length = span->length() * base::GetPageSize();
-
- switch (span->shared_memory()->Lock(offset, length)) {
+ switch (span->Lock(base::GetPageSize())) {
case base::DiscardableSharedMemory::SUCCESS:
return true;
case base::DiscardableSharedMemory::PURGED:
- span->shared_memory()->Unlock(offset, length);
+ span->Unlock(base::GetPageSize());
return false;
case base::DiscardableSharedMemory::FAILED:
return false;
@@ -246,11 +233,8 @@ void ChildDiscardableSharedMemoryManager::UnlockSpan(
base::AutoLock lock(lock_);
DCHECK(span->shared_memory());
- size_t offset = span->start() * base::GetPageSize() -
- reinterpret_cast<size_t>(span->shared_memory()->memory());
- size_t length = span->length() * base::GetPageSize();
- return span->shared_memory()->Unlock(offset, length);
+ return span->Unlock(base::GetPageSize());
}
void ChildDiscardableSharedMemoryManager::ReleaseSpan(

Powered by Google App Engine
This is Rietveld 408576698