annotate lphobos/std/gc.di @ 650:aa6a0b7968f7

Added test case for bug #100 Removed dubious check for not emitting static private global in other modules without access. This should be handled properly somewhere else, it's causing unresolved global errors for stuff that should work (in MiniD)
author Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
date Sun, 05 Oct 2008 17:28:15 +0200
parents 5825d48b27d1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
1
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
2 /*
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
3 * Copyright (C) 1999-2006 by Digital Mars, www.digitalmars.com
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
4 * Written by Walter Bright
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
5 *
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
6 * This software is provided 'as-is', without any express or implied
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
7 * warranty. In no event will the authors be held liable for any damages
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
8 * arising from the use of this software.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
9 *
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
10 * Permission is granted to anyone to use this software for any purpose,
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
11 * including commercial applications, and to alter it and redistribute it
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
12 * freely, subject to the following restrictions:
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
13 *
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
14 * o The origin of this software must not be misrepresented; you must not
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
15 * claim that you wrote the original software. If you use this software
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
16 * in a product, an acknowledgment in the product documentation would be
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
17 * appreciated but is not required.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
18 * o Altered source versions must be plainly marked as such, and must not
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
19 * be misrepresented as being the original software.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
20 * o This notice may not be removed or altered from any source
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
21 * distribution.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
22 */
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
23
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
24
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
25 /**
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
26 * The garbage collector normally works behind the scenes without needing any
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
27 * specific interaction. These functions are for advanced applications that
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
28 * benefit from tuning the operation of the collector.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
29 * Macros:
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
30 * WIKI=Phobos/StdGc
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
31 */
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
32
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
33 module std.gc;
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
34
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
35 import gcstats;
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
36
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
37 /**
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
38 * Add p to list of roots. Roots are references to memory allocated by the
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
39 collector that are maintained in memory outside the collector pool. The garbage
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
40 collector will by default look for roots in the stacks of each thread, the
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
41 registers, and the default static data segment. If roots are held elsewhere,
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
42 use addRoot() or addRange() to tell the collector not to free the memory it
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
43 points to.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
44 */
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
45 void addRoot(void *p); // add p to list of roots
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
46
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
47 /**
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
48 * Remove p from list of roots.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
49 */
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
50 void removeRoot(void *p); // remove p from list of roots
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
51
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
52 /**
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
53 * Add range to scan for roots.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
54 */
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
55 void addRange(void *pbot, void *ptop); // add range to scan for roots
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
56
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
57 /**
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
58 * Remove range.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
59 */
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
60 void removeRange(void *pbot); // remove range
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
61
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
62 /**
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
63 * Mark a gc allocated block of memory as possibly containing pointers.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
64 */
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
65 void hasPointers(void* p);
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
66
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
67 /**
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
68 * Mark a gc allocated block of memory as definitely NOT containing pointers.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
69 */
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
70 void hasNoPointers(void* p);
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
71
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
72 /**
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
73 * Mark a gc allocated block of memory pointed to by p as being populated with
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
74 * an array of TypeInfo ti (as many as will fit).
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
75 */
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
76 void setTypeInfo(TypeInfo ti, void* p);
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
77
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
78 /**
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
79 * Allocate nbytes of uninitialized data.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
80 * The allocated memory will be scanned for pointers during
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
81 * a gc collection cycle, unless
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
82 * it is followed by a call to hasNoPointers().
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
83 */
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
84 void[] malloc(size_t nbytes);
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
85
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
86 /**
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
87 * Resize allocated memory block pointed to by p to be at least nbytes long.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
88 * It will try to resize the memory block in place.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
89 * If nbytes is 0, the memory block is free'd.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
90 * If p is null, the memory block is allocated using malloc.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
91 * The returned array may not be at the same location as the original
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
92 * memory block.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
93 * The allocated memory will be scanned for pointers during
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
94 * a gc collection cycle, unless
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
95 * it is followed by a call to hasNoPointers().
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
96 */
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
97 void[] realloc(void* p, size_t nbytes);
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
98
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
99 /**
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
100 * Attempt to enlarge the memory block pointed to by p
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
101 * by at least minbytes beyond its current capacity,
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
102 * up to a maximum of maxbytes.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
103 * Returns:
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
104 * 0 if could not extend p,
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
105 * total size of entire memory block if successful.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
106 */
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
107 size_t extend(void* p, size_t minbytes, size_t maxbytes);
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
108
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
109 /**
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
110 * Returns capacity (size of the memory block) that p
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
111 * points to the beginning of.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
112 * If p does not point into the gc memory pool, or does
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
113 * not point to the beginning of an allocated memory block,
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
114 * 0 is returned.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
115 */
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
116 size_t capacity(void* p);
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
117
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
118 /**
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
119 * Set gc behavior to match that of 1.0.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
120 */
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
121 void setV1_0();
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
122
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
123 /***********************************
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
124 * Run a full garbage collection cycle.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
125 *
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
126 * The collector normally runs synchronously with a storage allocation request
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
127 (i.e. it never happens when in code that does not allocate memory). In some
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
128 circumstances, for example when a particular task is finished, it is convenient
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
129 to explicitly run the collector and free up all memory used by that task. It
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
130 can also be helpful to run a collection before starting a new task that would
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
131 be annoying if it ran a collection in the middle of that task. Explicitly
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
132 running a collection can also be done in a separate very low priority thread,
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
133 so that if the program is idly waiting for input, memory can be cleaned up.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
134 */
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
135
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
136 void fullCollect();
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
137
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
138 /***********************************
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
139 * Run a generational garbage collection cycle.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
140 * Takes less time than a fullcollect(), but isn't
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
141 * as effective.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
142 */
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
143
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
144 void genCollect();
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
145
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
146 void genCollectNoStack();
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
147
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
148 /**
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
149 * Minimizes physical memory usage
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
150 */
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
151 void minimize();
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
152
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
153 /***************************************
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
154 * disable() temporarily disables garbage collection cycle, enable()
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
155 * then reenables them.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
156 *
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
157 * This is used for brief time critical sections of code, so the amount of time
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
158 * it will take is predictable.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
159 * If the collector runs out of memory while it is disabled, it will throw an
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
160 * std.outofmemory.OutOfMemoryException.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
161 * The disable() function calls can be nested, but must be
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
162 * matched with corresponding enable() calls.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
163 * By default collections are enabled.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
164 */
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
165
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
166 void disable();
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
167
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
168 /**
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
169 * ditto
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
170 */
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
171 void enable();
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
172
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
173 void getStats(out GCStats stats);
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
174
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
175 /***************************************
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
176 * Get handle to the collector.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
177 */
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
178
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
179 void* getGCHandle();
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
180
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
181 /***************************************
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
182 * Set handle to the collector.
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
183 */
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
184
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
185 void setGCHandle(void* p);
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
186
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
187 void endGCHandle();
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
188
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
189 extern (C)
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
190 {
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
191 void gc_init();
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
192 void gc_term();
5825d48b27d1 [svn r135] * Merged DMD 1.025 *
lindquist
parents:
diff changeset
193 }