mirror of
https://github.com/encounter/bdwgc.git
synced 2026-03-30 10:57:55 -07:00
put all the cpp stuff in header
otherwise vc9 will mix up new and delete operators (due to arbitrary ordering during linking) Conflicts: gc_cpp.cc include/gc_cpp.h
This commit is contained in:
committed by
Ivan Maidanski
parent
59f7dff85b
commit
3d784edf71
@@ -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 */
|
||||
|
||||
+40
-9
@@ -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 );}
|
||||
|
||||
void* operator new( size_t size );
|
||||
void operator delete( void* obj );
|
||||
inline void operator delete[]( void* obj ) {
|
||||
GC_FREE( obj );}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
// 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
|
||||
|
||||
Reference in New Issue
Block a user