summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorreveman <reveman@chromium.org>2015-03-11 15:45:40 -0700
committerCommit bot <commit-bot@chromium.org>2015-03-11 22:46:34 +0000
commit073fe47b5cb9bff983ba0e62c068f438fab819df (patch)
tree846e1c2ae9291b6f907c47c25fdad528c2de48b4
parent988070a509bbec03a4389a0d6a013ace1d765826 (diff)
downloadchromium_src-073fe47b5cb9bff983ba0e62c068f438fab819df.zip
chromium_src-073fe47b5cb9bff983ba0e62c068f438fab819df.tar.gz
chromium_src-073fe47b5cb9bff983ba0e62c068f438fab819df.tar.bz2
base: Remove DiscardableMemoryMach.
Remove unused DiscardableMemory implementation. BUG=442945,422953 Review URL: https://codereview.chromium.org/963233003 Cr-Commit-Position: refs/heads/master@{#320171}
-rw-r--r--base/BUILD.gn4
-rw-r--r--base/base.gypi4
-rw-r--r--base/memory/discardable_memory.cc1
-rw-r--r--base/memory/discardable_memory.h1
-rw-r--r--base/memory/discardable_memory_android.cc1
-rw-r--r--base/memory/discardable_memory_linux.cc1
-rw-r--r--base/memory/discardable_memory_mac.cc13
-rw-r--r--base/memory/discardable_memory_mach.cc152
-rw-r--r--base/memory/discardable_memory_mach.h46
-rw-r--r--base/memory/discardable_memory_unittest.cc6
-rw-r--r--base/memory/discardable_memory_win.cc1
-rw-r--r--build/common.gypi1
12 files changed, 4 insertions, 227 deletions
diff --git a/base/BUILD.gn b/base/BUILD.gn
index fe0092d..0226aee 100644
--- a/base/BUILD.gn
+++ b/base/BUILD.gn
@@ -733,10 +733,6 @@ component("base") {
# Mac.
if (is_mac) {
- sources += [
- "memory/discardable_memory_mach.cc",
- "memory/discardable_memory_mach.h",
- ]
sources -= [
"native_library_posix.cc",
"strings/sys_string_conversions_posix.cc",
diff --git a/base/base.gypi b/base/base.gypi
index f739628..33c20c0 100644
--- a/base/base.gypi
+++ b/base/base.gypi
@@ -969,10 +969,6 @@
],
}],
['(OS == "mac" or OS == "ios") and >(nacl_untrusted_build)==0', {
- 'sources': [
- 'memory/discardable_memory_mach.cc',
- 'memory/discardable_memory_mach.h',
- ],
'sources/': [
['exclude', '^files/file_path_watcher_stub\\.cc$'],
['exclude', '^base_paths_posix\\.cc$'],
diff --git a/base/memory/discardable_memory.cc b/base/memory/discardable_memory.cc
index c4dcccd..7d19f9a 100644
--- a/base/memory/discardable_memory.cc
+++ b/base/memory/discardable_memory.cc
@@ -14,7 +14,6 @@ const struct TypeNamePair {
DiscardableMemoryType type;
const char* name;
} kTypeNamePairs[] = {
- { DISCARDABLE_MEMORY_TYPE_MACH, "mach" },
{ DISCARDABLE_MEMORY_TYPE_SHMEM, "shmem" }
};
diff --git a/base/memory/discardable_memory.h b/base/memory/discardable_memory.h
index 3e58bde..8b4d9e4 100644
--- a/base/memory/discardable_memory.h
+++ b/base/memory/discardable_memory.h
@@ -17,7 +17,6 @@ namespace base {
enum DiscardableMemoryType {
DISCARDABLE_MEMORY_TYPE_NONE,
- DISCARDABLE_MEMORY_TYPE_MACH,
DISCARDABLE_MEMORY_TYPE_SHMEM
};
diff --git a/base/memory/discardable_memory_android.cc b/base/memory/discardable_memory_android.cc
index f502c53..f50c7f8 100644
--- a/base/memory/discardable_memory_android.cc
+++ b/base/memory/discardable_memory_android.cc
@@ -31,7 +31,6 @@ scoped_ptr<DiscardableMemory> DiscardableMemory::CreateLockedMemoryWithType(
return memory.Pass();
}
case DISCARDABLE_MEMORY_TYPE_NONE:
- case DISCARDABLE_MEMORY_TYPE_MACH:
NOTREACHED();
return nullptr;
}
diff --git a/base/memory/discardable_memory_linux.cc b/base/memory/discardable_memory_linux.cc
index 005f956..5f053ae 100644
--- a/base/memory/discardable_memory_linux.cc
+++ b/base/memory/discardable_memory_linux.cc
@@ -31,7 +31,6 @@ scoped_ptr<DiscardableMemory> DiscardableMemory::CreateLockedMemoryWithType(
return memory.Pass();
}
case DISCARDABLE_MEMORY_TYPE_NONE:
- case DISCARDABLE_MEMORY_TYPE_MACH:
NOTREACHED();
return nullptr;
}
diff --git a/base/memory/discardable_memory_mac.cc b/base/memory/discardable_memory_mac.cc
index 71d4802..2478495 100644
--- a/base/memory/discardable_memory_mac.cc
+++ b/base/memory/discardable_memory_mac.cc
@@ -5,8 +5,6 @@
#include "base/memory/discardable_memory.h"
#include "base/logging.h"
-#include "base/memory/discardable_memory_mach.h"
-#include "base/memory/discardable_memory_manager.h"
#include "base/memory/discardable_memory_shmem.h"
#include "base/memory/scoped_ptr.h"
@@ -16,8 +14,7 @@ namespace base {
void DiscardableMemory::GetSupportedTypes(
std::vector<DiscardableMemoryType>* types) {
const DiscardableMemoryType supported_types[] = {
- DISCARDABLE_MEMORY_TYPE_SHMEM,
- DISCARDABLE_MEMORY_TYPE_MACH
+ DISCARDABLE_MEMORY_TYPE_SHMEM
};
types->assign(supported_types, supported_types + arraysize(supported_types));
}
@@ -26,14 +23,6 @@ void DiscardableMemory::GetSupportedTypes(
scoped_ptr<DiscardableMemory> DiscardableMemory::CreateLockedMemoryWithType(
DiscardableMemoryType type, size_t size) {
switch (type) {
- case DISCARDABLE_MEMORY_TYPE_MACH: {
- scoped_ptr<internal::DiscardableMemoryMach> memory(
- new internal::DiscardableMemoryMach(size));
- if (!memory->Initialize())
- return nullptr;
-
- return memory.Pass();
- }
case DISCARDABLE_MEMORY_TYPE_SHMEM: {
scoped_ptr<internal::DiscardableMemoryShmem> memory(
new internal::DiscardableMemoryShmem(size));
diff --git a/base/memory/discardable_memory_mach.cc b/base/memory/discardable_memory_mach.cc
deleted file mode 100644
index d96de79..0000000
--- a/base/memory/discardable_memory_mach.cc
+++ /dev/null
@@ -1,152 +0,0 @@
-// Copyright 2014 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 "base/memory/discardable_memory_mach.h"
-
-#include <mach/mach.h>
-
-#include "base/basictypes.h"
-#include "base/compiler_specific.h"
-#include "base/lazy_instance.h"
-#include "base/logging.h"
-#include "base/mac/mach_logging.h"
-
-namespace base {
-namespace {
-
-// For Mach, have the DiscardableMemoryManager trigger userspace eviction when
-// address space usage gets too high (e.g. 512 MBytes).
-const size_t kMachMemoryLimit = 512 * 1024 * 1024;
-
-// internal::DiscardableMemoryManager has an explicit constructor that takes
-// a number of memory limit parameters. The LeakyLazyInstanceTraits doesn't
-// handle the case. Thus, we need our own class here.
-struct DiscardableMemoryManagerLazyInstanceTraits {
- // Leaky as discardable memory clients can use this after the exit handler
- // has been called.
- static const bool kRegisterOnExit = false;
-#ifndef NDEBUG
- static const bool kAllowedToAccessOnNonjoinableThread = true;
-#endif
-
- static internal::DiscardableMemoryManager* New(void* instance) {
- return new (instance) internal::DiscardableMemoryManager(
- kMachMemoryLimit, kMachMemoryLimit, TimeDelta::Max());
- }
- static void Delete(internal::DiscardableMemoryManager* instance) {
- instance->~DiscardableMemoryManager();
- }
-};
-
-LazyInstance<internal::DiscardableMemoryManager,
- DiscardableMemoryManagerLazyInstanceTraits>
- g_manager = LAZY_INSTANCE_INITIALIZER;
-
-// The VM subsystem allows tagging of memory and 240-255 is reserved for
-// application use (see mach/vm_statistics.h). Pick 252 (after chromium's atomic
-// weight of ~52).
-const int kDiscardableMemoryTag = VM_MAKE_TAG(252);
-
-} // namespace
-
-namespace internal {
-
-DiscardableMemoryMach::DiscardableMemoryMach(size_t bytes)
- : memory_(0, 0), bytes_(mach_vm_round_page(bytes)), is_locked_(false) {
- g_manager.Pointer()->Register(this, bytes);
-}
-
-DiscardableMemoryMach::~DiscardableMemoryMach() {
- if (is_locked_)
- Unlock();
- g_manager.Pointer()->Unregister(this);
-}
-
-bool DiscardableMemoryMach::Initialize() {
- return Lock() != DISCARDABLE_MEMORY_LOCK_STATUS_FAILED;
-}
-
-DiscardableMemoryLockStatus DiscardableMemoryMach::Lock() {
- DCHECK(!is_locked_);
-
- bool purged = false;
- if (!g_manager.Pointer()->AcquireLock(this, &purged))
- return DISCARDABLE_MEMORY_LOCK_STATUS_FAILED;
-
- is_locked_ = true;
- return purged ? DISCARDABLE_MEMORY_LOCK_STATUS_PURGED
- : DISCARDABLE_MEMORY_LOCK_STATUS_SUCCESS;
-}
-
-void DiscardableMemoryMach::Unlock() {
- DCHECK(is_locked_);
- g_manager.Pointer()->ReleaseLock(this);
- is_locked_ = false;
-}
-
-void* DiscardableMemoryMach::Memory() const {
- DCHECK(is_locked_);
- return reinterpret_cast<void*>(memory_.address());
-}
-
-bool DiscardableMemoryMach::AllocateAndAcquireLock() {
- kern_return_t ret;
- bool persistent;
- if (!memory_.size()) {
- vm_address_t address = 0;
- ret = vm_allocate(
- mach_task_self(),
- &address,
- bytes_,
- VM_FLAGS_ANYWHERE | VM_FLAGS_PURGABLE | kDiscardableMemoryTag);
- MACH_CHECK(ret == KERN_SUCCESS, ret) << "vm_allocate";
- memory_.reset(address, bytes_);
-
- // When making a fresh allocation, it's impossible for |persistent| to
- // be true.
- persistent = false;
- } else {
- // |persistent| will be reset to false below if appropriate, but when
- // reusing an existing allocation, it's possible for it to be true.
- persistent = true;
-
-#if !defined(NDEBUG)
- ret = vm_protect(mach_task_self(),
- memory_.address(),
- memory_.size(),
- FALSE,
- VM_PROT_DEFAULT);
- MACH_DCHECK(ret == KERN_SUCCESS, ret) << "vm_protect";
-#endif
- }
-
- int state = VM_PURGABLE_NONVOLATILE;
- ret = vm_purgable_control(
- mach_task_self(), memory_.address(), VM_PURGABLE_SET_STATE, &state);
- MACH_CHECK(ret == KERN_SUCCESS, ret) << "vm_purgable_control";
- if (state & VM_PURGABLE_EMPTY)
- persistent = false;
-
- return persistent;
-}
-
-void DiscardableMemoryMach::ReleaseLock() {
- int state = VM_PURGABLE_VOLATILE | VM_VOLATILE_GROUP_DEFAULT;
- kern_return_t ret = vm_purgable_control(
- mach_task_self(), memory_.address(), VM_PURGABLE_SET_STATE, &state);
- MACH_CHECK(ret == KERN_SUCCESS, ret) << "vm_purgable_control";
-
-#if !defined(NDEBUG)
- ret = vm_protect(
- mach_task_self(), memory_.address(), memory_.size(), FALSE, VM_PROT_NONE);
- MACH_DCHECK(ret == KERN_SUCCESS, ret) << "vm_protect";
-#endif
-}
-
-void DiscardableMemoryMach::Purge() {
- memory_.reset();
-}
-
-} // namespace internal
-} // namespace base
diff --git a/base/memory/discardable_memory_mach.h b/base/memory/discardable_memory_mach.h
deleted file mode 100644
index b3b4b48..0000000
--- a/base/memory/discardable_memory_mach.h
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2014 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.
-
-#ifndef BASE_MEMORY_DISCARDABLE_MEMORY_MACH_H_
-#define BASE_MEMORY_DISCARDABLE_MEMORY_MACH_H_
-
-#include "base/memory/discardable_memory.h"
-
-#include "base/mac/scoped_mach_vm.h"
-#include "base/memory/discardable_memory_manager.h"
-
-namespace base {
-namespace internal {
-
-class DiscardableMemoryMach
- : public DiscardableMemory,
- public internal::DiscardableMemoryManagerAllocation {
- public:
- explicit DiscardableMemoryMach(size_t bytes);
- ~DiscardableMemoryMach() override;
-
- bool Initialize();
-
- // Overridden from DiscardableMemory:
- DiscardableMemoryLockStatus Lock() override;
- void Unlock() override;
- void* Memory() const override;
-
- // Overridden from internal::DiscardableMemoryManagerAllocation:
- bool AllocateAndAcquireLock() override;
- void ReleaseLock() override;
- void Purge() override;
-
- private:
- mac::ScopedMachVM memory_;
- const size_t bytes_;
- bool is_locked_;
-
- DISALLOW_COPY_AND_ASSIGN(DiscardableMemoryMach);
-};
-
-} // namespace internal
-} // namespace base
-
-#endif // BASE_MEMORY_DISCARDABLE_MEMORY_MACH_H_
diff --git a/base/memory/discardable_memory_unittest.cc b/base/memory/discardable_memory_unittest.cc
index 2bee010..0455535 100644
--- a/base/memory/discardable_memory_unittest.cc
+++ b/base/memory/discardable_memory_unittest.cc
@@ -38,12 +38,12 @@ TEST_P(DiscardableMemoryTest, IsNamed) {
}
bool IsNativeType(DiscardableMemoryType type) {
- return
#if defined(OS_ANDROID)
// SHMEM is backed by native discardable memory on Android.
- type == DISCARDABLE_MEMORY_TYPE_SHMEM ||
+ return type == DISCARDABLE_MEMORY_TYPE_SHMEM;
+#else
+ return false;
#endif
- type == DISCARDABLE_MEMORY_TYPE_MACH;
}
TEST_P(DiscardableMemoryTest, SupportedNatively) {
diff --git a/base/memory/discardable_memory_win.cc b/base/memory/discardable_memory_win.cc
index 005f956..5f053ae 100644
--- a/base/memory/discardable_memory_win.cc
+++ b/base/memory/discardable_memory_win.cc
@@ -31,7 +31,6 @@ scoped_ptr<DiscardableMemory> DiscardableMemory::CreateLockedMemoryWithType(
return memory.Pass();
}
case DISCARDABLE_MEMORY_TYPE_NONE:
- case DISCARDABLE_MEMORY_TYPE_MACH:
NOTREACHED();
return nullptr;
}
diff --git a/build/common.gypi b/build/common.gypi
index 2cc762b..b75b2ab 100644
--- a/build/common.gypi
+++ b/build/common.gypi
@@ -778,7 +778,6 @@
}],
['OS=="mac" or OS=="ios"', {
- 'native_discardable_memory%': 1,
'native_memory_pressure_signals%': 1,
}],