Line data Source code
1 : /*
2 : * Copyright 1988, 1989 Hans-J. Boehm, Alan J. Demers
3 : * Copyright (c) 1991-1994 by Xerox Corporation. All rights reserved.
4 : *
5 : * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
6 : * OR IMPLIED. ANY USE IS AT YOUR OWN RISK.
7 : *
8 : * Permission is hereby granted to use or copy this program
9 : * for any purpose, provided the above notices are retained on all copies.
10 : * Permission to modify the code and to distribute modified code is granted,
11 : * provided the above notices are retained, and a notice that the code was
12 : * modified is included with the above copyright notice.
13 : */
14 :
15 : #include "private/gc_priv.h"
16 :
17 : #if defined(MANUAL_VDB)
18 :
19 : /* Stubborn object (hard to change, nearly immutable) allocation. */
20 : /* This interface is deprecated. We mostly emulate it using */
21 : /* MANUAL_VDB. But that imposes the additional constraint that */
22 : /* written, but not yet GC_dirty()ed objects must be referenced */
23 : /* by a stack. */
24 :
25 : void GC_dirty(ptr_t p);
26 :
27 : GC_API GC_ATTR_MALLOC void * GC_CALL GC_malloc_stubborn(size_t lb)
28 : {
29 : return(GC_malloc(lb));
30 : }
31 :
32 : GC_API void GC_CALL GC_end_stubborn_change(const void *p)
33 : {
34 : GC_dirty((ptr_t)p);
35 : }
36 :
37 : GC_API void GC_CALL GC_change_stubborn(const void *p GC_ATTR_UNUSED)
38 : {
39 : }
40 :
41 : #else /* !MANUAL_VDB */
42 :
43 0 : GC_API GC_ATTR_MALLOC void * GC_CALL GC_malloc_stubborn(size_t lb)
44 : {
45 0 : return(GC_malloc(lb));
46 : }
47 :
48 0 : GC_API void GC_CALL GC_end_stubborn_change(const void *p GC_ATTR_UNUSED)
49 : {
50 0 : }
51 :
52 0 : GC_API void GC_CALL GC_change_stubborn(const void *p GC_ATTR_UNUSED)
53 : {
54 0 : }
55 :
56 : #endif /* !MANUAL_VDB */
|