From 4c8dec1e98dc90ac1fcdb567bd520512b5fcf79b Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Mon, 17 Oct 2011 13:24:06 -0700 Subject: [PATCH] vm: take a page from code_heap for safepoints --- vm/code_heap.cpp | 5 +++-- vm/code_heap.hpp | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/vm/code_heap.cpp b/vm/code_heap.cpp index b67da28922..1d978f2439 100755 --- a/vm/code_heap.cpp +++ b/vm/code_heap.cpp @@ -9,12 +9,13 @@ code_heap::code_heap(cell size) seg = new segment(align_page(size),true); if(!seg) fatal_error("Out of memory in code_heap constructor",size); - cell start = seg->start + seh_area_size; + cell start = seg->start + getpagesize() + seh_area_size; allocator = new free_list_allocator(seg->end - start,start); /* See os-windows-x86.64.cpp for seh_area usage */ - seh_area = (char *)seg->start; + safepoint_page = (void *)seg->start; + seh_area = (char *)seg->start + getpagesize(); } code_heap::~code_heap() diff --git a/vm/code_heap.hpp b/vm/code_heap.hpp index 20ce03c835..aed5a2bd13 100755 --- a/vm/code_heap.hpp +++ b/vm/code_heap.hpp @@ -11,6 +11,9 @@ struct code_heap { /* The actual memory area */ segment *seg; + /* Memory area reserved for safepoint guard page */ + void *safepoint_page; + /* Memory area reserved for SEH. Only used on Windows */ char *seh_area;