X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fruntime%2Fgc-internal.h;h=7de67a13824eef36e2017b6175770444b8d37a53;hb=1479483c5f40fc470053da0fc5cd8e42fc77676e;hp=f04bf6e38b1e494877878da5a42208f3a202552f;hpb=4a8044ce718c8db3192c9013ea32a5eeee2df8a0;p=sbcl.git diff --git a/src/runtime/gc-internal.h b/src/runtime/gc-internal.h index f04bf6e..7de67a1 100644 --- a/src/runtime/gc-internal.h +++ b/src/runtime/gc-internal.h @@ -69,7 +69,11 @@ NWORDS(unsigned long x, unsigned long n_bits) * for SPARC users in that bit */ +#if defined(LISP_FEATURE_SPARC) +#define FUN_RAW_ADDR_OFFSET 0 +#else #define FUN_RAW_ADDR_OFFSET (6*sizeof(lispobj) - FUN_POINTER_LOWTAG) +#endif /* values for the *_alloc_* parameters */ #define FREE_PAGE_FLAG 0 @@ -88,8 +92,12 @@ extern lispobj (*transother[256])(lispobj object); extern long (*sizetab[256])(lispobj *where); extern struct weak_pointer *weak_pointers; /* in gc-common.c */ +extern struct hash_table *weak_hash_tables; /* in gc-common.c */ extern void scavenge(lispobj *start, long n_words); +extern void scavenge_interrupt_contexts(void); +extern void scav_weak_hash_tables(void); +extern void scan_weak_hash_tables(void); extern void scan_weak_pointers(void); lispobj copy_large_unboxed_object(lispobj object, long nwords); @@ -111,4 +119,10 @@ lispobj *gc_search_space(lispobj *start, size_t words, lispobj *pointer); #include "cheneygc-internal.h" #endif +#if N_WORD_BITS == 32 +# define SIMPLE_ARRAY_WORD_WIDETAG SIMPLE_ARRAY_UNSIGNED_BYTE_32_WIDETAG +#elif N_WORD_BITS == 64 +# define SIMPLE_ARRAY_WORD_WIDETAG SIMPLE_ARRAY_UNSIGNED_BYTE_64_WIDETAG +#endif + #endif /* _GC_INTERNAL_H_ */