| Index: src/ports/SkPurgeableMemoryBlock_mac.cpp
|
| diff --git a/src/ports/SkPurgeableMemoryBlock_mac.cpp b/src/ports/SkPurgeableMemoryBlock_mac.cpp
|
| deleted file mode 100644
|
| index da4cdff12fff5ceeb3d44b2e8e9d1ee646eeb1b0..0000000000000000000000000000000000000000
|
| --- a/src/ports/SkPurgeableMemoryBlock_mac.cpp
|
| +++ /dev/null
|
| @@ -1,104 +0,0 @@
|
| -/*
|
| - * Copyright 2013 Google Inc.
|
| - *
|
| - * Use of this source code is governed by a BSD-style license that can be
|
| - * found in the LICENSE file.
|
| - */
|
| -
|
| -#include "SkPurgeableMemoryBlock.h"
|
| -
|
| -#include <mach/mach.h>
|
| -
|
| -bool SkPurgeableMemoryBlock::IsSupported() {
|
| - return true;
|
| -}
|
| -
|
| -#ifdef SK_DEBUG
|
| -bool SkPurgeableMemoryBlock::PlatformSupportsPurgingAllUnpinnedBlocks() {
|
| - return true;
|
| -}
|
| -
|
| -bool SkPurgeableMemoryBlock::PurgeAllUnpinnedBlocks() {
|
| - // Unused.
|
| - int state = 0;
|
| - kern_return_t ret = vm_purgable_control(mach_task_self(), 0, VM_PURGABLE_PURGE_ALL, &state);
|
| - return ret == KERN_SUCCESS;
|
| -}
|
| -
|
| -bool SkPurgeableMemoryBlock::purge() {
|
| - return false;
|
| -}
|
| -#endif
|
| -
|
| -static size_t round_to_page_size(size_t size) {
|
| - const size_t mask = 4096 - 1;
|
| - return (size + mask) & ~mask;
|
| -}
|
| -
|
| -SkPurgeableMemoryBlock::SkPurgeableMemoryBlock(size_t size)
|
| - : fAddr(NULL)
|
| - , fSize(round_to_page_size(size))
|
| - , fPinned(false) {
|
| -}
|
| -
|
| -SkPurgeableMemoryBlock::~SkPurgeableMemoryBlock() {
|
| - SkDEBUGCODE(kern_return_t ret =) vm_deallocate(mach_task_self(),
|
| - reinterpret_cast<vm_address_t>(fAddr),
|
| - static_cast<vm_size_t>(fSize));
|
| -#ifdef SK_DEBUG
|
| - if (ret != KERN_SUCCESS) {
|
| - SkDebugf("SkPurgeableMemoryBlock destructor failed to deallocate.\n");
|
| - }
|
| -#endif
|
| -}
|
| -
|
| -void* SkPurgeableMemoryBlock::pin(SkPurgeableMemoryBlock::PinResult* pinResult) {
|
| - SkASSERT(!fPinned);
|
| - SkASSERT(pinResult != NULL);
|
| - if (NULL == fAddr) {
|
| - vm_address_t addr = 0;
|
| - kern_return_t ret = vm_allocate(mach_task_self(), &addr, static_cast<vm_size_t>(fSize),
|
| - VM_FLAGS_PURGABLE | VM_FLAGS_ANYWHERE);
|
| - if (KERN_SUCCESS == ret) {
|
| - fAddr = reinterpret_cast<void*>(addr);
|
| - *pinResult = kUninitialized_PinResult;
|
| - fPinned = true;
|
| - } else {
|
| - fAddr = NULL;
|
| - }
|
| - } else {
|
| - int state = VM_PURGABLE_NONVOLATILE;
|
| - kern_return_t ret = vm_purgable_control(mach_task_self(),
|
| - reinterpret_cast<vm_address_t>(fAddr),
|
| - VM_PURGABLE_SET_STATE, &state);
|
| - if (ret != KERN_SUCCESS) {
|
| - fAddr = NULL;
|
| - fPinned = false;
|
| - return NULL;
|
| - }
|
| -
|
| - fPinned = true;
|
| -
|
| - if (state & VM_PURGABLE_EMPTY) {
|
| - *pinResult = kUninitialized_PinResult;
|
| - } else {
|
| - *pinResult = kRetained_PinResult;
|
| - }
|
| - }
|
| - return fAddr;
|
| -}
|
| -
|
| -void SkPurgeableMemoryBlock::unpin() {
|
| - SkASSERT(fPinned);
|
| - int state = VM_PURGABLE_VOLATILE | VM_VOLATILE_GROUP_DEFAULT;
|
| - SkDEBUGCODE(kern_return_t ret =) vm_purgable_control(mach_task_self(),
|
| - reinterpret_cast<vm_address_t>(fAddr),
|
| - VM_PURGABLE_SET_STATE, &state);
|
| - fPinned = false;
|
| -
|
| -#ifdef SK_DEBUG
|
| - if (ret != KERN_SUCCESS) {
|
| - SkDebugf("SkPurgeableMemoryBlock::unpin() failed.\n");
|
| - }
|
| -#endif
|
| -}
|
|
|