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/monitor.cc b/src/monitor.cc
index 1a5e6c9..cc74838 100644
--- a/src/monitor.cc
+++ b/src/monitor.cc
@@ -511,7 +511,7 @@
self->SetState(Thread::kWaiting);
}
- self->wait_mutex_.Lock();
+ self->wait_mutex_->Lock();
/*
* Set wait_monitor_ to the monitor object we will be waiting on.
@@ -529,7 +529,7 @@
if (self->interrupted_) {
wasInterrupted = true;
self->wait_monitor_ = NULL;
- self->wait_mutex_.Unlock();
+ self->wait_mutex_->Unlock();
goto done;
}
@@ -540,9 +540,9 @@
lock_.Unlock();
if (!timed) {
- self->wait_cond_.Wait(self->wait_mutex_);
+ self->wait_cond_->Wait(*self->wait_mutex_);
} else {
- self->wait_cond_.TimedWait(self->wait_mutex_, ts);
+ self->wait_cond_->TimedWait(*self->wait_mutex_, ts);
}
if (self->interrupted_) {
wasInterrupted = true;
@@ -550,7 +550,7 @@
self->interrupted_ = false;
self->wait_monitor_ = NULL;
- self->wait_mutex_.Unlock();
+ self->wait_mutex_->Unlock();
// Reacquire the monitor lock.
Lock(self);
@@ -601,9 +601,9 @@
thread->wait_next_ = NULL;
// Check to see if the thread is still waiting.
- MutexLock mu(thread->wait_mutex_);
+ MutexLock mu(*thread->wait_mutex_);
if (thread->wait_monitor_ != NULL) {
- thread->wait_cond_.Signal();
+ thread->wait_cond_->Signal();
return;
}
}