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);
 }