Home | History | Annotate | Download | only in mac
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "base/mac/scoped_mach_vm.h"
      6 
      7 namespace base {
      8 namespace mac {
      9 
     10 void ScopedMachVM::reset(vm_address_t address, vm_size_t size) {
     11   DCHECK(address % PAGE_SIZE == 0);
     12   DCHECK(size % PAGE_SIZE == 0);
     13 
     14   if (size_) {
     15     if (address_ < address) {
     16       vm_deallocate(mach_task_self(),
     17                     address_,
     18                     std::min(size_, address - address_));
     19     }
     20     if (address_ + size_ > address + size) {
     21       vm_address_t deallocate_start = std::max(address_, address + size);
     22       vm_deallocate(mach_task_self(),
     23                     deallocate_start,
     24                     address_ + size_ - deallocate_start);
     25     }
     26   }
     27 
     28   address_ = address;
     29   size_ = size;
     30 }
     31 
     32 }  // namespace mac
     33 }  // namespace base
     34