diff options
-rw-r--r-- | gc_cpp.cc | 84 | ||||
-rw-r--r-- | include/gc_cpp.h | 49 |
2 files changed, 81 insertions, 52 deletions
@@ -43,46 +43,44 @@ built-in "new" and "delete". # define GC_DECL_DELETE_THROW /* empty */ #endif /* !GC_NEW_DELETE_NEED_THROW */ -void* operator new( size_t size ) GC_DECL_NEW_THROW { - return GC_MALLOC_UNCOLLECTABLE(size); -} - -#if !defined(__CYGWIN__) - void operator delete( void* obj ) GC_DECL_DELETE_THROW { - GC_FREE(obj); - } -#endif /* !__CYGWIN__ */ - -#ifdef GC_OPERATOR_NEW_ARRAY - void* operator new[]( size_t size ) GC_DECL_NEW_THROW { - return GC_MALLOC_UNCOLLECTABLE(size); - } - - void operator delete[]( void* obj ) GC_DECL_DELETE_THROW { - GC_FREE(obj); - } -#endif /* GC_OPERATOR_NEW_ARRAY */ - -#ifdef _MSC_VER - - // This new operator is used by VC++ in case of Debug builds! - void* operator new( size_t size, int /* nBlockUse */, - const char * szFileName, int nLine ) GC_DECL_NEW_THROW - { -# ifndef GC_DEBUG - return GC_malloc_uncollectable(size); -# else - return GC_debug_malloc_uncollectable(size, szFileName, nLine); -# endif - } - -# if _MSC_VER > 1020 - // This new operator is used by VC++ 7.0 and later in Debug builds. - void* operator new[]( size_t size, int nBlockUse, - const char* szFileName, int nLine ) GC_DECL_NEW_THROW - { - return operator new(size, nBlockUse, szFileName, nLine); - } -# endif - -#endif /* _MSC_VER */ +// MOVED TO HEADER! +//void* operator new( size_t size ) { +// return GC_MALLOC_UNCOLLECTABLE( size );} +// +//void operator delete( void* obj ) { +// GC_FREE( obj );} +// +//#ifdef GC_OPERATOR_NEW_ARRAY +// +//void* operator new[]( size_t size ) { +// return GC_MALLOC_UNCOLLECTABLE( size );} +// +//void operator delete[]( void* obj ) { +// GC_FREE( obj );} +// +//#endif /* GC_OPERATOR_NEW_ARRAY */ +// +//#ifdef _MSC_VER +// +//// This new operator is used by VC++ in case of Debug builds ! +//void* operator new( size_t size, +// int ,//nBlockUse, +// const char * szFileName, +// int nLine ) +//{ +//#ifndef GC_DEBUG +// return GC_malloc_uncollectable( size ); +//#else +// return GC_debug_malloc_uncollectable(size, szFileName, nLine); +//#endif +//} +// +//#if _MSC_VER > 1020 +//// This new operator is used by VC++ 7.0 and later in Debug builds. +//void* operator new[](size_t size, int nBlockUse, const char* szFileName, int nLine) +//{ +// return operator new(size, nBlockUse, szFileName, nLine); +//} +//#endif +// +//#endif /* _MSC_VER */ diff --git a/include/gc_cpp.h b/include/gc_cpp.h index b4fe6daa..35b5b631 100644 --- a/include/gc_cpp.h +++ b/include/gc_cpp.h @@ -278,17 +278,48 @@ inline void* operator new( size_t size, GC_NS_QUALIFY(GCPlacement) gcp, * There seems to be no way to redirect new in this environment without * including this everywhere. */ -# if _MSC_VER > 1020 - void *operator new[]( size_t size ); - void operator delete[]( void* obj ); -# endif +#if _MSC_VER > 1020 +inline void *operator new[]( size_t size ){ + return GC_MALLOC_UNCOLLECTABLE( size );} + +inline void operator delete[]( void* obj ) { + GC_FREE( obj );} + +#endif + - void* operator new( size_t size ); - void operator delete( void* obj ); +// void* operator new( size_t size); +// void operator delete(void* obj); + + // MOVED HERE FROM gc_hpp.cc! + inline void* operator new(size_t size) + { + return GC_MALLOC_UNCOLLECTABLE(size); + } + + inline void operator delete(void* obj) + { + GC_FREE(obj); + } + + + // This new operator is used by VC++ in case of Debug builds ! + inline void* operator new( size_t size, + int ,//nBlockUse, + const char * szFileName, + int nLine ) + { +#ifndef GC_DEBUG + return GC_malloc_uncollectable( size ); +#else + return GC_debug_malloc_uncollectable(size, szFileName, nLine); +#endif + } +inline void* operator new[](size_t size, int nBlockUse, const char* szFileName, int nLine) +{ + return operator new(size, nBlockUse, szFileName, nLine); +} - // This new operator is used by VC++ in case of Debug builds ! - void* operator new( size_t size, int /* nBlockUse */, - const char * szFileName, int nLine ); #endif /* _MSC_VER */ #ifdef GC_OPERATOR_NEW_ARRAY |