/usr/include/racket/schgc2obj.h is in racket-common 5.1.3+dfsg1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #ifndef GC2_OBJHEAD_H
#define GC2_OBJHEAD_H
#if defined(MZ_PRECISE_GC) && !defined(USE_COMPACT_3M_GC)
#ifdef _WIN32
# define LOG_APAGE_SIZE 16
#else
# define LOG_APAGE_SIZE 14
#endif
typedef struct objhead {
uintptr_t hash : ((8 * sizeof(intptr_t)) - (4+3+LOG_APAGE_SIZE) );
/* the type and size of the object */
uintptr_t type : 3;
/* these are the various mark bits we use */
uintptr_t mark : 1;
uintptr_t btc_mark : 1;
/* these are used for compaction et al*/
uintptr_t moved : 1;
uintptr_t dead : 1;
uintptr_t size : LOG_APAGE_SIZE;
} objhead;
#define OBJHEAD_SIZE (sizeof(objhead))
#define OBJPTR_TO_OBJHEAD(p) ((objhead *) (((char *)(p)) - OBJHEAD_SIZE))
#define OBJHEAD_TO_OBJPTR(p) ((void *) (((char *)(p)) + OBJHEAD_SIZE))
XFORM_NONGCING extern int GC_is_allocated(void *p);
#define OBJHEAD_HAS_HASH_BITS
#define OBJHEAD_HASH_BITS(p) (OBJPTR_TO_OBJHEAD(p)->hash)
#endif
#endif
|