X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=libjava%2Fnogc.cc;h=079422d0911d1e0a47c21e9c564e76910f5ddadb;hb=2b5f213d21e8b5e14efd1eef180e744e6ac070ea;hp=b5bd6f3d1f569549ea8502d5fedac73545e1cb99;hpb=2629d8057817e7327f63d151692a5562895df341;p=pf3gnuchains%2Fgcc-fork.git diff --git a/libjava/nogc.cc b/libjava/nogc.cc index b5bd6f3d1f5..079422d0911 100644 --- a/libjava/nogc.cc +++ b/libjava/nogc.cc @@ -1,6 +1,7 @@ -// nogc.cc - Code to implement no GC. +// nogc.cc - Implement null garbage collector. -/* Copyright (C) 1998, 1999, 2000 Free Software Foundation +/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2006, 2007 + Free Software Foundation This file is part of libgcj. @@ -19,19 +20,28 @@ details. */ // Total amount of memory allocated. static long total = 0; -#ifdef INTERPRETER void * -_Jv_BuildGCDescr(jclass klass) +_Jv_BuildGCDescr(jclass) { return 0; } -#endif void * _Jv_AllocObj (jsize size, jclass klass) { total += size; - ptr_t obj = calloc (size, 1); + 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; } @@ -40,7 +50,8 @@ void * _Jv_AllocArray (jsize size, jclass klass) { total += size; - ptr_t obj = calloc (size, 1); + void *obj = calloc (size, 1); + if (!obj) _Jv_ThrowNoMemory(); *((_Jv_VTable **) obj) = klass->vtable; return obj; } @@ -49,9 +60,26 @@ 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 *) { @@ -71,6 +99,11 @@ _Jv_RunAllFinalizers (void) } void +_Jv_GCInitializeFinalizers (void (*) (void)) +{ +} + +void _Jv_RunGC (void) { } @@ -88,12 +121,12 @@ _Jv_GCFreeMemory (void) } void -_Jv_GCSetInitialHeapSize (size_t size) +_Jv_GCSetInitialHeapSize (size_t) { } void -_Jv_GCSetMaximumHeapSize (size_t size) +_Jv_GCSetMaximumHeapSize (size_t) { } @@ -111,3 +144,49 @@ 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; +}