VM: set_border_locked is the same on windows and unix

char-rename
Björn Lindqvist 2016-06-27 16:27:56 +02:00
parent a331ad3788
commit f99c684cc5
4 changed files with 15 additions and 28 deletions

View File

@ -92,9 +92,9 @@ namespace factor { struct factor_vm; }
#include "platform.hpp"
#include "utilities.hpp"
#include "primitives.hpp"
#include "errors.hpp"
#include "segments.hpp"
#include "gc_info.hpp"
#include "errors.hpp"
#include "contexts.hpp"
#include "run.hpp"
#include "objects.hpp"

View File

@ -98,19 +98,6 @@ segment::segment(cell size_, bool executable_p) {
set_border_locked(true);
}
void segment::set_border_locked(bool locked) {
int pagesize = getpagesize();
cell lo = start - pagesize;
if (!set_memory_locked(lo, pagesize, locked)) {
fatal_error("Cannot (un)protect low guard page", lo);
}
cell hi = end;
if (!set_memory_locked(hi, pagesize, locked)) {
fatal_error("Cannot (un)protect high guard page", hi);
}
}
segment::~segment() {
int pagesize = getpagesize();
int retval = munmap((void*)(start - pagesize), pagesize + size + pagesize);

View File

@ -107,19 +107,6 @@ segment::segment(cell size_, bool executable_p) {
set_border_locked(true);
}
void segment::set_border_locked(bool locked) {
int pagesize = getpagesize();
cell lo = start - pagesize;
if (!set_memory_locked(lo, pagesize, locked)) {
fatal_error("Cannot (un)protect low guard page", lo);
}
cell hi = end;
if (!set_memory_locked(hi, pagesize, locked)) {
fatal_error("Cannot (un)protect high guard page", hi);
}
}
segment::~segment() {
SYSTEM_INFO si;
GetSystemInfo(&si);

View File

@ -2,6 +2,8 @@ namespace factor {
inline cell align_page(cell a) { return align(a, getpagesize()); }
bool set_memory_locked(cell base, cell size, bool locked);
/* segments set up guard pages to check for under/overflow.
size must be a multiple of the page size */
struct segment {
@ -24,7 +26,18 @@ struct segment {
return addr >= start && addr < end;
}
void set_border_locked(bool locked);
void set_border_locked(bool locked) {
int pagesize = getpagesize();
cell lo = start - pagesize;
if (!set_memory_locked(lo, pagesize, locked)) {
fatal_error("Cannot (un)protect low guard page", lo);
}
cell hi = end;
if (!set_memory_locked(hi, pagesize, locked)) {
fatal_error("Cannot (un)protect high guard page", hi);
}
}
};
}