From 6c63633545c254dc085402e0f927a6826d1dd229 Mon Sep 17 00:00:00 2001 From: Akinori Ito Date: Fri, 9 Nov 2001 04:59:17 +0000 Subject: Updates from 0.2.1 into 0.2.1-inu-1.5 --- gc/include/new_gc_alloc.h | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'gc/include/new_gc_alloc.h') diff --git a/gc/include/new_gc_alloc.h b/gc/include/new_gc_alloc.h index 5771388..1187f0b 100644 --- a/gc/include/new_gc_alloc.h +++ b/gc/include/new_gc_alloc.h @@ -20,9 +20,9 @@ // It also doesn't yet understand the new header file names or // namespaces. // -// This assumes the collector has been compiled with -DATOMIC_UNCOLLECTABLE -// and -DALL_INTERIOR_POINTERS. We also recommend -// -DREDIRECT_MALLOC=GC_uncollectable_malloc. +// This assumes the collector has been compiled with -DATOMIC_UNCOLLECTABLE. +// The user should also consider -DREDIRECT_MALLOC=GC_uncollectable_malloc, +// to ensure that object allocated through malloc are traced. // // Some of this could be faster in the explicit deallocation case. // In particular, we spend too much time clearing objects on the @@ -43,11 +43,14 @@ // problems. The argument for changing it is that the usual default // allocator is usually a very bad choice for a garbage collected environment.) // +// This code assumes that the collector itself has been compiled with a +// compiler that defines __STDC__ . +// #ifndef GC_ALLOC_H #include "gc.h" -#include +#include // A more portable way to get stl_alloc.h . #define GC_ALLOC_H @@ -318,12 +321,10 @@ class traceable_alloc_template { typedef traceable_alloc_template < 0 > traceable_alloc; -#ifdef _SGI_SOURCE - // We want to specialize simple_alloc so that it does the right thing // for all pointerfree types. At the moment there is no portable way to // even approximate that. The following approximation should work for -// SGI compilers, and perhaps some others. +// SGI compilers, and recent versions of g++. # define __GC_SPECIALIZE(T,alloc) \ class simple_alloc { \ @@ -339,6 +340,8 @@ public: \ { alloc::ptr_free_deallocate(p, sizeof (T)); } \ }; +__STL_BEGIN_NAMESPACE + __GC_SPECIALIZE(char, gc_alloc) __GC_SPECIALIZE(int, gc_alloc) __GC_SPECIALIZE(unsigned, gc_alloc) @@ -363,6 +366,8 @@ __GC_SPECIALIZE(unsigned, single_client_traceable_alloc) __GC_SPECIALIZE(float, single_client_traceable_alloc) __GC_SPECIALIZE(double, single_client_traceable_alloc) +__STL_END_NAMESPACE + #ifdef __STL_USE_STD_ALLOCATORS __STL_BEGIN_NAMESPACE @@ -451,6 +456,4 @@ __STL_END_NAMESPACE #endif /* __STL_USE_STD_ALLOCATORS */ -#endif /* _SGI_SOURCE */ - #endif /* GC_ALLOC_H */ -- cgit v1.2.3