* src/mm/cacao-gc/gc.c (gc_finalizer_all): Implemented
authormichi <none@none>
Thu, 29 Mar 2007 22:42:48 +0000 (22:42 +0000)
committermichi <none@none>
Thu, 29 Mar 2007 22:42:48 +0000 (22:42 +0000)
* src/mm/cacao-gc/final.c (final_set_all_reclaimable): Added.
* src/mm/cacao-gc/final.h (final_set_all_reclaimable): Added prototype.

--HG--
branch : exact-gc

src/mm/cacao-gc/final.c
src/mm/cacao-gc/final.h
src/mm/cacao-gc/gc.c
src/mm/nogc.c

index c09d65d992f97700e371fc34490dc3b9ce72e293..06c123a82899070dc4cb4dd52cf4416b578fba33 100644 (file)
@@ -93,6 +93,20 @@ void final_invoke()
        }
 }
 
+void final_set_all_reclaimable()
+{
+       final_entry *fe;
+
+       fe = list_first(final_list);
+       while (fe) {
+
+               if (fe->type == FINAL_REACHABLE)
+                       fe->type = FINAL_RECLAIMABLE;
+
+               fe = list_next(final_list, fe);
+       }
+}
+
 
 /*
  * These are local overrides for various environment variables in Emacs.
index 99752b93d5190ac5a5850d542b68e9e984aa9ddf..93130401869499d0c3300e3ff9ac6cc1c6efaf38 100644 (file)
@@ -63,6 +63,7 @@ struct final_entry {
 void final_init();
 void final_register(java_objectheader *o, methodinfo *finalizer);
 void final_invoke();
+void final_set_all_reclaimable();
 
 
 #endif /* _FINAL_H */
index 7f09b53e7ca698fc9af3a8cad05b26998d824d63..962d35c112065be744bcf6f9de9080db0f159729 100644 (file)
@@ -373,11 +373,23 @@ void gc_invoke_finalizers(void)
    Forces the finalization of all objects on the Java Heap.
    This is the function which is called by java.lang.Runtime.exit()
 
+   We do this by setting all objects with finalizers to reclaimable,
+   which is inherently dangerouse because objects may still be alive.
+
 *******************************************************************************/
 
 void gc_finalize_all(void)
 {
-       vm_abort("gc_finalize_all: IMPLEMENT ME!");
+#if !defined(NDEBUG)
+       /* doing this is deprecated, inform the user */
+       dolog("gc_finalize_all: Deprecated!");
+#endif
+
+       /* set all objects with finalizers to reclaimable */
+       final_set_all_reclaimable();
+
+       /* notify the finalizer thread */
+       finalizer_notify();
 }
 
 
index 13ad45953135410080684bc0b538cc89d0138839..8ca28f0f1e516b6bf4ebb26e4d5e9aa76d75fb1b 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: nogc.c 7596 2007-03-28 21:05:53Z twisti $
+   $Id: nogc.c 7601 2007-03-28 23:02:50Z michi $
 
 */