| // Copyright 2011 Google Inc. All Rights Reserved. |
| MarkStack* MarkStack::Create() { |
| UniquePtr<MarkStack> mark_stack(new MarkStack); |
| return mark_stack.release(); |
| mem_map_.reset(MemMap::MapAnonymous("dalvik-mark-stack", NULL, length, PROT_READ | PROT_WRITE)); |
| CHECK(mem_map_.get() != NULL) << "MemMap::Map() failed; aborting"; |
| byte* addr = mem_map_->GetAddress(); |
| base_ = reinterpret_cast<const Object**>(addr); |
| limit_ = reinterpret_cast<const Object**>(addr + length); |
| ptr_ = reinterpret_cast<Object const**>(addr); |
| int result = madvise(addr, length, MADV_DONTNEED); |
| PLOG(WARNING) << "madvise failed"; |
| MarkStack::~MarkStack() {} |