X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fgc.h;h=ce1b92549938b003400b34377ad92d65fd6db42c;hb=9e83e3dc367e4fd47d3b27a170cb3a87bb5b1b39;hp=2929013fba2bf96f953ad6c9df4946f4f1b8714b;hpb=3a0f3612dc2bbf3e4e8e7395bcbbf8cd1791b963;p=sbcl.git diff --git a/src/runtime/gc.h b/src/runtime/gc.h index 2929013..ce1b925 100644 --- a/src/runtime/gc.h +++ b/src/runtime/gc.h @@ -15,6 +15,15 @@ #ifndef _GC_H_ #define _GC_H_ + +#include "sbcl.h" + +#ifdef LISP_FEATURE_GENCGC +#define PAGE_BYTES GENCGC_PAGE_BYTES +#else +#define PAGE_BYTES BACKEND_PAGE_BYTES +#endif + typedef signed long page_index_t; typedef signed char generation_index_t; @@ -29,58 +38,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) +extern boolean maybe_gc(os_context_t *context); -#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)) - -#endif +extern unsigned long bytes_consed_between_gcs; #endif /* _GC_H_ */