Fixed another bug in finalization from heap_close
[cacao.git] / mm / heap.old.c
index debd9e585eb564bf0700b16653703c1a770e25eb..c2d7630441091e3ef85bea27acd05af968ba72bf 100644 (file)
@@ -767,19 +767,22 @@ void heap_init (u4 heapbytesize, u4 heapbytestartsize, void **stackbottom)
 
 void heap_close ()
 {
+       while (livefinalizees) {
+               finalizernode *n = livefinalizees->next;
+               asm_calljavamethod (livefinalizees->finalizer, 
+                                                       heap+livefinalizees->objstart, 
+                                                       NULL,NULL,NULL);
+               FREE (livefinalizees, finalizernode);
+               livefinalizees = n;
+       }
+
 #ifndef TRACECALLARGS
-       MFREE (heap, heapblock, heapsize); */
+       MFREE (heap, heapblock, heapsize);
 #endif
        MFREE (startbits, bitfieldtype, heapsize/BITFIELDBITS);
        MFREE (markbits, bitfieldtype, heapsize/BITFIELDBITS);
        MFREE (referencebits, bitfieldtype, heapsize/BITFIELDBITS);
        chain_free (allglobalreferences);
-
-       while (livefinalizees) {
-               finalizernode *n = livefinalizees->next;
-               FREE (livefinalizees, finalizernode);
-               livefinalizees = n;
-               }
 }