X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fgc.h;h=ff6797d8d1872d3890611d47fae3120b4f502ccc;hb=372d68ae1432a96a527c662de3af3bb334808856;hp=2929013fba2bf96f953ad6c9df4946f4f1b8714b;hpb=3a0f3612dc2bbf3e4e8e7395bcbbf8cd1791b963;p=sbcl.git diff --git a/src/runtime/gc.h b/src/runtime/gc.h index 2929013..ff6797d 100644 --- a/src/runtime/gc.h +++ b/src/runtime/gc.h @@ -15,7 +15,14 @@ #ifndef _GC_H_ #define _GC_H_ + +#include "sbcl.h" + +#define PAGE_BYTES BACKEND_PAGE_BYTES + typedef signed long page_index_t; +#define PAGE_INDEX_FMT "ld" + typedef signed char generation_index_t; extern void gc_init(void); @@ -29,58 +36,10 @@ extern void gc_init_tables(void); extern void set_auto_gc_trigger(os_vm_size_t usage); extern void clear_auto_gc_trigger(void); -extern int maybe_gc_pending; - #include "fixnump.h" -#if defined(LISP_FEATURE_X86) || defined(LISP_FEATURE_X86_64) - -#define set_alloc_pointer(value) \ - SetSymbolValue(ALLOCATION_POINTER, value, 0) -#define get_alloc_pointer() \ - SymbolValue(ALLOCATION_POINTER, 0) -#define get_binding_stack_pointer(thread) \ - SymbolValue(BINDING_STACK_POINTER, thread) -#define get_pseudo_atomic_atomic(thread) \ - SymbolValue(PSEUDO_ATOMIC_ATOMIC, thread) -#define set_pseudo_atomic_atomic(thread) \ - SetSymbolValue(PSEUDO_ATOMIC_ATOMIC, make_fixnum(1), thread); -#define clear_pseudo_atomic_atomic(thread) \ - SetSymbolValue(PSEUDO_ATOMIC_ATOMIC, make_fixnum(0), thread); -#define get_pseudo_atomic_interrupted(thread) \ - fixnum_value(SymbolValue(PSEUDO_ATOMIC_INTERRUPTED, thread)) -#define clear_pseudo_atomic_interrupted(thread) \ - SetSymbolValue(PSEUDO_ATOMIC_INTERRUPTED, make_fixnum(0), thread) -#define set_pseudo_atomic_interrupted(thread) \ - SetSymbolValue(PSEUDO_ATOMIC_INTERRUPTED, make_fixnum(1), thread) - -#elif defined(LISP_FEATURE_PPC) && defined(LISP_FEATURE_GENCGC) - -#define set_alloc_pointer(value) \ - (dynamic_space_free_pointer = \ - (value) | (((unsigned long)dynamic_space_free_pointer) & LOWTAG_MASK)) - -#define get_alloc_pointer() \ - ((unsigned long) dynamic_space_free_pointer & ~LOWTAG_MASK) -#define get_binding_stack_pointer(thread) \ - (current_binding_stack_pointer) -#define get_pseudo_atomic_atomic(thread) \ - ((unsigned long)dynamic_space_free_pointer & flag_PseudoAtomic) -#define set_pseudo_atomic_atomic(thread) \ - (dynamic_space_free_pointer \ - = (lispobj*) ((unsigned long)dynamic_space_free_pointer | flag_PseudoAtomic)) -#define clear_pseudo_atomic_atomic(thread) \ - (dynamic_space_free_pointer \ - = (lispobj*) ((unsigned long) dynamic_space_free_pointer & ~flag_PseudoAtomic)) -#define get_pseudo_atomic_interrupted(thread) \ - ((unsigned long) dynamic_space_free_pointer & flag_PseudoAtomicInterrupted) -#define clear_pseudo_atomic_interrupted(thread) \ - (dynamic_space_free_pointer \ - = (lispobj*) ((unsigned long) dynamic_space_free_pointer & ~flag_PseudoAtomicInterrupted)) -#define set_pseudo_atomic_interrupted(thread) \ - (dynamic_space_free_pointer \ - = (lispobj*) ((unsigned long) dynamic_space_free_pointer | flag_PseudoAtomicInterrupted)) +extern boolean maybe_gc(os_context_t *context); -#endif +extern os_vm_size_t bytes_consed_between_gcs; #endif /* _GC_H_ */