/usr/include/racket/schgc2obj.h is in racket-common 6.7-3.
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 37 | #ifndef GC2_OBJHEAD_H
#define GC2_OBJHEAD_H
#if defined(MZ_PRECISE_GC) && !defined(USE_COMPACT_3M_GC)
#if defined(_WIN32) || defined(__CYGWIN32__) || defined(MZ_USE_LARGE_PAGE_SIZE)
# define LOG_APAGE_SIZE 16
#else
# define LOG_APAGE_SIZE 14
#endif
typedef struct objhead {
/* the type and size of the object */
uintptr_t type : 3; /* if `moved`, then non-0 means moved to gen 1/2 */
/* 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;
/* leftover bits are used for hashing: */
uintptr_t hash : ((8 * sizeof(intptr_t)) - (4+3+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
|