1 // nogc.cc - Implement null garbage collector.
2 
3 /* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2006, 2007
4    Free Software Foundation
5 
6    This file is part of libgcj.
7 
8 This software is copyrighted work licensed under the terms of the
9 Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
10 details.  */
11 
12 #include <config.h>
13 
14 #include <stdio.h>
15 #include <stdlib.h>
16 
17 #include <gcj/cni.h>
18 #include <jvm.h>
19 
20 // Total amount of memory allocated.
21 static long total = 0;
22 
23 void *
_Jv_BuildGCDescr(jclass)24 _Jv_BuildGCDescr(jclass)
25 {
26   return 0;
27 }
28 
29 void *
_Jv_AllocObj(jsize size,jclass klass)30 _Jv_AllocObj (jsize size, jclass klass)
31 {
32   total += size;
33   void *obj = calloc (size, 1);
34   if (!obj) _Jv_ThrowNoMemory();
35   *((_Jv_VTable **) obj) = klass->vtable;
36   return obj;
37 }
38 
39 void *
_Jv_AllocPtrFreeObj(jsize size,jclass klass)40 _Jv_AllocPtrFreeObj (jsize size, jclass klass)
41 {
42   total += size;
43   void *obj = calloc (size, 1);
44   if (!obj) _Jv_ThrowNoMemory();
45   *((_Jv_VTable **) obj) = klass->vtable;
46   return obj;
47 }
48 
49 void *
_Jv_AllocArray(jsize size,jclass klass)50 _Jv_AllocArray (jsize size, jclass klass)
51 {
52   total += size;
53   void *obj = calloc (size, 1);
54   if (!obj) _Jv_ThrowNoMemory();
55   *((_Jv_VTable **) obj) = klass->vtable;
56   return obj;
57 }
58 
59 void *
_Jv_AllocBytes(jsize size)60 _Jv_AllocBytes (jsize size)
61 {
62   total += size;
63   void *obj = calloc (size, 1);
64   if (!obj) _Jv_ThrowNoMemory();
65   return obj;
66 }
67 
68 void *
_Jv_AllocRawObj(jsize size)69 _Jv_AllocRawObj (jsize size)
70 {
71   total += size;
72   return calloc (size, 1);
73 }
74 
75 _Jv_ClosureList **
_Jv_ClosureListFinalizer()76 _Jv_ClosureListFinalizer ()
77 {
78   _Jv_ClosureList **clpp;
79   clpp = (_Jv_ClosureList **)_Jv_AllocBytes (sizeof (*clpp));
80   return clpp;
81 }
82 
83 void
_Jv_RegisterFinalizer(void *,_Jv_FinalizerFunc *)84 _Jv_RegisterFinalizer (void *, _Jv_FinalizerFunc *)
85 {
86   // FIXME: should actually register so that finalizers can be run on
87   // exit.
88 }
89 
90 void
_Jv_RunFinalizers(void)91 _Jv_RunFinalizers (void)
92 {
93 }
94 
95 void
_Jv_RunAllFinalizers(void)96 _Jv_RunAllFinalizers (void)
97 {
98   // FIXME: should still run all finalizers.
99 }
100 
101 void
_Jv_GCInitializeFinalizers(void (*)(void))102 _Jv_GCInitializeFinalizers (void (*) (void))
103 {
104 }
105 
106 void
_Jv_RunGC(void)107 _Jv_RunGC (void)
108 {
109 }
110 
111 long
_Jv_GCTotalMemory(void)112 _Jv_GCTotalMemory (void)
113 {
114   return total;
115 }
116 
117 long
_Jv_GCFreeMemory(void)118 _Jv_GCFreeMemory (void)
119 {
120   return 0;
121 }
122 
123 void
_Jv_GCSetInitialHeapSize(size_t)124 _Jv_GCSetInitialHeapSize (size_t)
125 {
126 }
127 
128 void
_Jv_GCSetMaximumHeapSize(size_t)129 _Jv_GCSetMaximumHeapSize (size_t)
130 {
131 }
132 
133 void
_Jv_DisableGC(void)134 _Jv_DisableGC (void)
135 {
136 }
137 
138 void
_Jv_EnableGC(void)139 _Jv_EnableGC (void)
140 {
141 }
142 
143 void
_Jv_InitGC(void)144 _Jv_InitGC (void)
145 {
146 }
147 
148 void
_Jv_GCRegisterDisappearingLink(jobject *)149 _Jv_GCRegisterDisappearingLink (jobject *)
150 {
151 }
152 
153 jboolean
_Jv_GCCanReclaimSoftReference(jobject)154 _Jv_GCCanReclaimSoftReference (jobject)
155 {
156   // For now, always reclaim soft references.  FIXME.
157   return true;
158 }
159 
160 #ifdef JV_HASH_SYNCHRONIZATION
161 void *
_Jv_AllocTraceOne(jsize size)162 _Jv_AllocTraceOne (jsize size /* includes vtable slot */)
163 {
164   void *obj = calloc(size, 1);
165   if (!obj) _Jv_ThrowNoMemory();
166   return result;
167 }
168 
169 void *
_Jv_AllocTraceTwo(jsize size)170 _Jv_AllocTraceTwo (jsize size /* includes vtable slot */)
171 {
172   void *obj = calloc(size, 1);
173   if (!obj) _Jv_ThrowNoMemory();
174   return result;
175 }
176 #endif /* JV_HASH_SYNCHRONIZATION */
177 
178 void
_Jv_SuspendThread(_Jv_Thread_t * thread)179 _Jv_SuspendThread (_Jv_Thread_t *thread)
180 {
181 }
182 
183 void
_Jv_ResumeThread(_Jv_Thread_t * thread)184 _Jv_ResumeThread (_Jv_Thread_t *thread)
185 {
186 }
187 
188 int
_Jv_IsThreadSuspended(_Jv_Thread_t * thread)189 _Jv_IsThreadSuspended (_Jv_Thread_t *thread)
190 {
191   return 0;
192 }
193