X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fgc.h;h=a02846667e941b4d5abcaf3c5815edca2030dc28;hb=c8617f57d0413beb2890e94dabe227cef9c5ddad;hp=2929013fba2bf96f953ad6c9df4946f4f1b8714b;hpb=3a0f3612dc2bbf3e4e8e7395bcbbf8cd1791b963;p=sbcl.git diff --git a/src/runtime/gc.h b/src/runtime/gc.h index 2929013..a028466 100644 --- a/src/runtime/gc.h +++ b/src/runtime/gc.h @@ -15,7 +15,19 @@ #ifndef _GC_H_ #define _GC_H_ -typedef signed long page_index_t; + +#include "sbcl.h" +#include + +#define PAGE_BYTES BACKEND_PAGE_BYTES + +typedef intptr_t page_index_t; +#ifdef LISP_FEATURE_WIN32 +#define PAGE_INDEX_FMT "Id" +#else +#define PAGE_INDEX_FMT "ld" +#endif + typedef signed char generation_index_t; extern void gc_init(void); @@ -29,58 +41,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 os_vm_size_t bytes_consed_between_gcs; #endif /* _GC_H_ */