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)) {