]> gitweb.factorcode.org Git - factor.git/commitdiff
vm: take a page from code_heap for safepoints
authorJoe Groff <arcata@gmail.com>
Mon, 17 Oct 2011 20:24:06 +0000 (13:24 -0700)
committerJoe Groff <arcata@gmail.com>
Fri, 28 Oct 2011 04:14:44 +0000 (21:14 -0700)
vm/code_heap.cpp
vm/code_heap.hpp

index b67da289223259eee39c327262c56b9e07ab2663..1d978f243967d2ce35ae4441890421f3ac3a348f 100755 (executable)
@@ -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<code_block>(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()
index 20ce03c8357a83648c483dc993ef8000eb6f3917..aed5a2bd13693afb548d52f44fa83fcec2c6b2ba 100755 (executable)
@@ -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;