]> gitweb.factorcode.org Git - factor.git/commitdiff
VM: set_border_locked is the same on windows and unix
authorBjörn Lindqvist <bjourne@gmail.com>
Mon, 27 Jun 2016 14:27:56 +0000 (16:27 +0200)
committerBjörn Lindqvist <bjourne@gmail.com>
Mon, 27 Jun 2016 14:27:56 +0000 (16:27 +0200)
vm/master.hpp
vm/os-unix.cpp
vm/os-windows.cpp
vm/segments.hpp

index 5331a31e3d2ebf4ac318cc49c398f1d14932246c..59c47a74fa6a2080e0c2d1169a03393b48b7de4b 100644 (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"
index 8e5edec24d7fdfe1b6a9b9913919daec634df8b8..cb81c170e828ad3216b156457305c79f4f860d90 100644 (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);
index 188ba704304ba4a86e540c546d833b7ae4fb8d41..637efdb85f426cf569d8d127b1cff280dc846ade 100644 (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);
index b136d9cd5e346830fc43bf628424161d9d143ef7..466f1e491fa1b20c7b155d58224cf831e1104089 100644 (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);
+    }
+  }
 };
 
 }