X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fcheneygc-internal.h;h=64b8a7c99f120ab0067c66c4685ec027132c22aa;hb=37d3828773e2f847bb1ed7522b0af4fb8e736fc8;hp=a5aa1d71fce9d0c8df508338df849556e73425a5;hpb=9f10bc102adce15a820027777a03e49a7b7623da;p=sbcl.git diff --git a/src/runtime/cheneygc-internal.h b/src/runtime/cheneygc-internal.h index a5aa1d7..64b8a7c 100644 --- a/src/runtime/cheneygc-internal.h +++ b/src/runtime/cheneygc-internal.h @@ -1,3 +1,16 @@ +/* + * This software is part of the SBCL system. See the README file for + * more information. + * + * This software is derived from the CMU CL system, which was + * written at Carnegie Mellon University and released into the + * public domain. The software is in the public domain and is + * provided with absolutely no warranty. See the COPYING and CREDITS + * files for more information. + */ + +#include "os.h" /* for os_context_t */ + extern lispobj *from_space; extern lispobj *from_space_free_pointer; @@ -13,15 +26,15 @@ from_space_p(lispobj object) { lispobj *ptr; - /* this can be called for untagged pointers as well as for + /* this can be called for untagged pointers as well as for descriptors, so this assertion's not applicable gc_assert(is_lisp_pointer(object)); */ ptr = (lispobj *) native_pointer(object); return ((from_space <= ptr) && - (ptr < from_space_free_pointer)); -} + (ptr < from_space_free_pointer)); +} boolean new_space_p(lispobj object) @@ -31,20 +44,21 @@ new_space_p(lispobj object) /* gc_assert(is_lisp_pointer(object)); */ ptr = (lispobj *) native_pointer(object); - + return ((new_space <= ptr) && - (ptr < new_space_free_pointer)); -} + (ptr < new_space_free_pointer)); +} #else #define from_space_p(ptr) \ - ((from_space <= ((lispobj *) ((pointer_sized_uint_t) ptr))) && \ - (((lispobj *) ((pointer_sized_uint_t) ptr))< from_space_free_pointer)) + ((from_space <= ((lispobj *) ((pointer_sized_uint_t) ptr))) && \ + (((lispobj *) ((pointer_sized_uint_t) ptr))< from_space_free_pointer)) #define new_space_p(ptr) \ - ((new_space <= ((lispobj *) ((pointer_sized_uint_t) ptr))) && \ - (((lispobj *) ((pointer_sized_uint_t) ptr)) < new_space_free_pointer)) + ((new_space <= ((lispobj *) ((pointer_sized_uint_t) ptr))) && \ + (((lispobj *) ((pointer_sized_uint_t) ptr)) < new_space_free_pointer)) #endif +extern boolean cheneygc_handle_wp_violation(os_context_t*, void*);