Since gc6.8:
- Fix typo in PREFETCH implementation for X86_64. (Thanks to Peter Wang.)
- Fix M68K LINUX port. (Thanks to Debian packagers.)
+ - __GNUC__ was misspelled as __GNUC in new_gc_alloc.h. (Thanks to Peter Wang.)
Since gc6.9:
- Remove GC_PROTO, VOLATILE, GC_PTR, and GC_CONST. Assume ANSI C compiler
[ Some gc6.9 changes ]
- Change FindTopOfStack decl in darwin_stop_world.c.
- Move some static tests from misc.c to gcconfig.h. Use #error.
+ - Add GC_print_free_list() function. (Thanks to Bruce Hoult.)
+ - Add GC_GNU_THREADS support on HURD. (Thanks to Aleksey Demakov,
+ Barry DeFreese, and possibly other Debian maintainers.)
+ - __GNUC__ was misspelled as __GNUC in thread_local_alloc.h.
+ (Thanks to Peter Wang.)
To do:
- REDIRECT_MALLOC and threads combination should work on more platforms,
/* the object containing link. Explicitly deallocating */
/* obj may or may not cause link to eventually be */
/* cleared. */
+ /* This can be used to implement certain types of */
+ /* weak pointers. Note however that this generally */
+ /* requires that thje allocation lock is held (see */
+ /* GC_call_with_allock_lock() below) when the disguised */
+ /* pointer is accessed. Otherwise a strong pointer */
+ /* could be recreated between the time the collector */
+ /* decides to reclaim the object and the link is */
+ /* cleared. */
+
GC_API int GC_unregister_disappearing_link (void * * link);
/* Returns 0 if link was not actually registered. */
/* Undoes a registration by either of the above two */
/* A hack to deal with gcc 3.1. If you are using gcc3.1 and later, */
/* you should probably really use gc_allocator.h instead. */
#if defined (__GNUC__) && \
- (__GNUC > 3 || (__GNUC__ == 3 && (__GNUC_MINOR__ >= 1)))
+ (__GNUC__ > 3 || (__GNUC__ == 3 && (__GNUC_MINOR__ >= 1)))
# define simple_alloc __simple_alloc
#endif
# define USE_WIN32_COMPILER_TLS
# endif /* !GNU */
# elif defined(LINUX) && \
- (__GNUC__ > 3 || (__GNUC == 3 && __GNUC_MINOR__ >=3))
+ (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >=3))
# define USE_COMPILER_TLS
# elif (defined(GC_DGUX386_THREADS) || defined(GC_OSF1_THREADS) || \
defined(GC_DARWIN_THREADS) || defined(GC_AIX_THREADS)) || \