A little bit more of the threads implementation.
The most important change here is understanding that Thread's id_ field
was unrelated to java.lang.Thread's id field.
Change-Id: I832b92145332e1ded63a7824033dae684eeacf28
diff --git a/src/class_linker.cc b/src/class_linker.cc
index b8cd891..f312556 100644
--- a/src/class_linker.cc
+++ b/src/class_linker.cc
@@ -642,7 +642,7 @@
return NULL;
}
ObjectLock lock(klass);
- klass->SetClinitThreadId(self->GetId());
+ klass->SetClinitThreadId(self->GetTid());
// Add the newly loaded class to the loaded classes table.
bool success = InsertClass(descriptor, klass); // TODO: just return collision
if (!success) {
@@ -678,7 +678,7 @@
if (!klass->IsLinked() && !klass->IsErroneous()) {
ObjectLock lock(klass);
// Check for circular dependencies between classes.
- if (!klass->IsLinked() && klass->GetClinitThreadId() == self->GetId()) {
+ if (!klass->IsLinked() && klass->GetClinitThreadId() == self->GetTid()) {
self->ThrowNewException("Ljava/lang/ClassCircularityError;", NULL); // TODO: detail
return NULL;
}
@@ -1210,7 +1210,7 @@
while (klass->GetStatus() == Class::kStatusInitializing) {
// we caught somebody else in the act; was it us?
- if (klass->GetClinitThreadId() == self->GetId()) {
+ if (klass->GetClinitThreadId() == self->GetTid()) {
LG << "recursive <clinit>";
return true;
}
@@ -1258,7 +1258,7 @@
DCHECK(klass->GetStatus() < Class::kStatusInitializing);
- klass->SetClinitThreadId(self->GetId());
+ klass->SetClinitThreadId(self->GetTid());
klass->SetStatus(Class::kStatusInitializing);
}