// nogc.cc - Implement null garbage collector. /* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2006, 2007 Free Software Foundation This file is part of libgcj. This software is copyrighted work licensed under the terms of the Libgcj License. Please consult the file "LIBGCJ_LICENSE" for details. */ #include #include #include #include #include // Total amount of memory allocated. static long total = 0; void * _Jv_BuildGCDescr(jclass) { return 0; } void * _Jv_AllocObj (jsize size, jclass klass) { total += size; void *obj = calloc (size, 1); if (!obj) _Jv_ThrowNoMemory(); *((_Jv_VTable **) obj) = klass->vtable; return obj; } void * _Jv_AllocPtrFreeObj (jsize size, jclass klass) { total += size; void *obj = calloc (size, 1); if (!obj) _Jv_ThrowNoMemory(); *((_Jv_VTable **) obj) = klass->vtable; return obj; } void * _Jv_AllocArray (jsize size, jclass klass) { total += size; void *obj = calloc (size, 1); if (!obj) _Jv_ThrowNoMemory(); *((_Jv_VTable **) obj) = klass->vtable; return obj; } void * _Jv_AllocBytes (jsize size) { total += size; void *obj = calloc (size, 1); if (!obj) _Jv_ThrowNoMemory(); return obj; } void * _Jv_AllocRawObj (jsize size) { total += size; return calloc (size, 1); } _Jv_ClosureList ** _Jv_ClosureListFinalizer () { _Jv_ClosureList **clpp; clpp = (_Jv_ClosureList **)_Jv_AllocBytes (sizeof (*clpp)); return clpp; } void _Jv_RegisterFinalizer (void *, _Jv_FinalizerFunc *) { // FIXME: should actually register so that finalizers can be run on // exit. } void _Jv_RunFinalizers (void) { } void _Jv_RunAllFinalizers (void) { // FIXME: should still run all finalizers. } void _Jv_GCInitializeFinalizers (void (*) (void)) { } void _Jv_RunGC (void) { } long _Jv_GCTotalMemory (void) { return total; } long _Jv_GCFreeMemory (void) { return 0; } void _Jv_GCSetInitialHeapSize (size_t) { } void _Jv_GCSetMaximumHeapSize (size_t) { } void _Jv_DisableGC (void) { } void _Jv_EnableGC (void) { } void _Jv_InitGC (void) { } void _Jv_GCRegisterDisappearingLink (jobject *) { } jboolean _Jv_GCCanReclaimSoftReference (jobject) { // For now, always reclaim soft references. FIXME. return true; } #ifdef JV_HASH_SYNCHRONIZATION void * _Jv_AllocTraceOne (jsize size /* includes vtable slot */) { void *obj = calloc(size, 1); if (!obj) _Jv_ThrowNoMemory(); return result; } void * _Jv_AllocTraceTwo (jsize size /* includes vtable slot */) { void *obj = calloc(size, 1); if (!obj) _Jv_ThrowNoMemory(); return result; } #endif /* JV_HASH_SYNCHRONIZATION */ void _Jv_SuspendThread (_Jv_Thread_t *thread) { } void _Jv_ResumeThread (_Jv_Thread_t *thread) { } int _Jv_IsThreadSuspended (_Jv_Thread_t *thread) { return 0; }