Commit 52d87249 authored by iposva@chromium.org's avatar iposva@chromium.org

Based on a patch submitted by Jens Alfke:

Tag Mac OS X VM regions allocated by V8. This has no effect other than making
it possible to identify V8 allocations in the vmmap(1) memory profiling tool,
to get a better idea of an embedder's/Chrome's memory usage.
CRBUG=23455
TEST=Tested by running vmmap(1) and looking for "Memory tag=255" in the output.

Review URL: http://codereview.chromium.org/244051

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3001 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent f054b56e
......@@ -42,6 +42,7 @@
#include <mach/mach.h>
#include <mach/semaphore.h>
#include <mach/task.h>
#include <mach/vm_statistics.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <sys/types.h>
......@@ -123,12 +124,22 @@ size_t OS::AllocateAlignment() {
}
// Constants used for mmap.
// kMmapFd is used to pass vm_alloc flags to tag the region with the user
// defined tag 255 This helps identify V8-allocated regions in memory analysis
// tools like vmmap(1).
static const int kMmapFd = VM_MAKE_TAG(255);
static const off_t kMmapFdOffset = 0;
void* OS::Allocate(const size_t requested,
size_t* allocated,
bool is_executable) {
const size_t msize = RoundUp(requested, getpagesize());
int prot = PROT_READ | PROT_WRITE | (is_executable ? PROT_EXEC : 0);
void* mbase = mmap(NULL, msize, prot, MAP_PRIVATE | MAP_ANON, -1, 0);
void* mbase = mmap(NULL, msize, prot,
MAP_PRIVATE | MAP_ANON,
kMmapFd, kMmapFdOffset);
if (mbase == MAP_FAILED) {
LOG(StringEvent("OS::Allocate", "mmap failed"));
return NULL;
......@@ -280,9 +291,6 @@ int OS::StackWalk(Vector<StackFrame> frames) {
}
// Constants used for mmap.
static const int kMmapFd = -1;
static const int kMmapFdOffset = 0;
VirtualMemory::VirtualMemory(size_t size) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment