Make dvmCardTableStartup be more independant of HeapSource startup.
Also added a call to dvmCardTableShutdown. Also removed the dependency
on GcHeap from CardTable.h.
Change-Id: Icf0293572371cc8a30b55672816fdd75a151e82c
diff --git a/vm/alloc/CardTable.c b/vm/alloc/CardTable.c
index c8d7f08..1537f7c 100644
--- a/vm/alloc/CardTable.c
+++ b/vm/alloc/CardTable.c
@@ -64,11 +64,15 @@
* Initializes the card table; must be called before any other
* dvmCardTable*() functions.
*/
-bool dvmCardTableStartup(GcHeap *gcHeap, void *heapBase)
+bool dvmCardTableStartup(void)
{
size_t length;
void *allocBase;
u1 *biasedBase;
+ GcHeap *gcHeap = gDvm.gcHeap;
+ void *heapBase = dvmHeapSourceGetBase();
+ assert(gcHeap != NULL);
+ assert(heapBase != NULL);
/* Set up the card table */
length = gDvm.heapSizeMax / GC_CARD_SIZE;
@@ -101,6 +105,7 @@
*/
void dvmCardTableShutdown()
{
+ gDvm.biasedCardTableBase = NULL;
munmap(gDvm.gcHeap->cardTableBase, gDvm.gcHeap->cardTableLength);
}