* src/mm/cacao-gc/gc.h: Enable __X86_64__.
[cacao.git] / src / mm / cacao-gc / final.c
index cce19759f16a9af82df6411a966b4c4be6d94c73..06c123a82899070dc4cb4dd52cf4416b578fba33 100644 (file)
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   Contact: cacao@cacaojvm.org
-
-   Authors: Michael Starzinger
-
    $Id$
 
 */
@@ -61,7 +57,7 @@ void final_register(java_objectheader *o, methodinfo *finalizer)
        fe->o         = o;
        fe->finalizer = finalizer;
 
-       list_add_last(final_list, fe);
+       list_add_first(final_list, fe);
 
        GC_LOG( printf("Finalizer registered for: %p\n", (void *) o); );
 }
@@ -97,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.