Add packing to class Thread.

Otherwise, code compiled on the host can use different offsets than
we need for the same structure on the target.

Also add commented-out code to start up the various GC daemon threads.
More Class native methods need to be implemented before that will work.

Change-Id: I618b647b92378eec1b25cee469c8cfccf42f21fd
diff --git a/src/heap.cc b/src/heap.cc
index 4778611..094790a 100644
--- a/src/heap.cc
+++ b/src/heap.cc
@@ -124,6 +124,8 @@
     RecordImageAllocations(image_spaces[i]);
   }
 
+  Heap::EnableObjectValidation();
+
   // It's still to early to take a lock because there are no threads yet,
   // but we can create the heap lock now. We don't create it earlier to
   // make it clear that you can't use locks during heap initialization.
@@ -167,10 +169,13 @@
   return true;
 }
 
-bool Heap::verify_object_disabled_;
+bool Heap::verify_objects_ = false;
 
 #if VERIFY_OBJECT_ENABLED
 void Heap::VerifyObject(const Object* obj) {
+  if (!verify_objects_) {
+    return;
+  }
   ScopedHeapLock lock;
   Heap::VerifyObjectLocked(obj);
 }
@@ -178,7 +183,7 @@
 
 void Heap::VerifyObjectLocked(const Object* obj) {
   lock_->AssertHeld();
-  if (obj != NULL && !verify_object_disabled_) {
+  if (obj != NULL) {
     if (!IsAligned(obj, kObjectAlignment)) {
       LOG(FATAL) << "Object isn't aligned: " << obj;
     } else if (!live_bitmap_->Test(obj)) {