]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | /************************************************************************* |
2 | Copyright (c) 1994 by Xerox Corporation. All rights reserved. | |
3 | ||
4 | THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED | |
5 | OR IMPLIED. ANY USE IS AT YOUR OWN RISK. | |
6 | ||
7 | Last modified on Sat Nov 19 19:31:14 PST 1994 by ellis | |
8 | on Sat Jun 8 15:10:00 PST 1994 by boehm | |
9 | ||
10 | Permission is hereby granted to copy this code for any purpose, | |
11 | provided the above notices are retained on all copies. | |
12 | ||
13 | This implementation module for gc_c++.h provides an implementation of | |
14 | the global operators "new" and "delete" that calls the Boehm | |
15 | allocator. All objects allocated by this implementation will be | |
16 | non-collectable but part of the root set of the collector. | |
17 | ||
18 | You should ensure (using implementation-dependent techniques) that the | |
19 | linker finds this module before the library that defines the default | |
20 | built-in "new" and "delete". | |
21 | ||
22 | Authors: John R. Ellis and Jesse Hull | |
23 | ||
24 | **************************************************************************/ | |
25 | /* Boehm, December 20, 1994 7:26 pm PST */ | |
26 | ||
27 | #include "gc_cpp.h" | |
28 | ||
29 | void* operator new( size_t size ) { | |
30 | return GC_MALLOC_UNCOLLECTABLE( size );} | |
31 | ||
32 | void operator delete( void* obj ) { | |
33 | GC_FREE( obj );} | |
34 | ||
35 | #ifdef GC_OPERATOR_NEW_ARRAY | |
36 | ||
37 | void* operator new[]( size_t size ) { | |
38 | return GC_MALLOC_UNCOLLECTABLE( size );} | |
39 | ||
40 | void operator delete[]( void* obj ) { | |
41 | GC_FREE( obj );} | |
42 | ||
43 | #endif /* GC_OPERATOR_NEW_ARRAY */ | |
44 | ||
45 | #ifdef _MSC_VER | |
46 | ||
47 | // This new operator is used by VC++ in case of Debug builds ! | |
48 | void* operator new( size_t size, | |
49 | int ,//nBlockUse, | |
50 | const char * szFileName, | |
51 | int nLine ) | |
52 | { | |
53 | #ifndef GC_DEBUG | |
54 | return GC_malloc_uncollectable( size ); | |
55 | #else | |
56 | return GC_debug_malloc_uncollectable(size, szFileName, nLine); | |
57 | #endif | |
58 | } | |
59 | ||
60 | // This new operator is used by VC++ 7.0 and later in Debug builds. | |
61 | void* operator new[](size_t size, int nBlockUse, const char* szFileName, int nLine) | |
62 | { | |
63 | return operator new(size, nBlockUse, szFileName, nLine); | |
64 | } | |
65 | ||
66 | #endif /* _MSC_VER */ | |
67 |