1.0.13.27: commentary on BUG #420
[sbcl.git] / src / runtime / cheneygc-internal.h
blob5b58bf6bea9e3ab9ffb57e76af8331c00e0fe2d6
1 extern lispobj *from_space;
2 extern lispobj *from_space_free_pointer;
4 extern lispobj *new_space;
5 extern lispobj *new_space_free_pointer;
8 /* predicates */
9 /* #if defined(DEBUG_SPACE_PREDICATES) */
10 #if 0
11 boolean
12 from_space_p(lispobj object)
14 lispobj *ptr;
16 /* this can be called for untagged pointers as well as for
17 descriptors, so this assertion's not applicable
18 gc_assert(is_lisp_pointer(object));
20 ptr = (lispobj *) native_pointer(object);
22 return ((from_space <= ptr) &&
23 (ptr < from_space_free_pointer));
26 boolean
27 new_space_p(lispobj object)
29 lispobj *ptr;
31 /* gc_assert(is_lisp_pointer(object)); */
33 ptr = (lispobj *) native_pointer(object);
35 return ((new_space <= ptr) &&
36 (ptr < new_space_free_pointer));
39 #else
41 #define from_space_p(ptr) \
42 ((from_space <= ((lispobj *) ((pointer_sized_uint_t) ptr))) && \
43 (((lispobj *) ((pointer_sized_uint_t) ptr))< from_space_free_pointer))
45 #define new_space_p(ptr) \
46 ((new_space <= ((lispobj *) ((pointer_sized_uint_t) ptr))) && \
47 (((lispobj *) ((pointer_sized_uint_t) ptr)) < new_space_free_pointer))
49 #endif
51 extern boolean cheneygc_handle_wp_violation(os_context_t*, void*);