Minor clean-up of thread status changes.

Eliminate the obsolete self != NULL test when acquiring the heap lock.
This should be redundant now that threads are added to the thread list
before they are able to allocate.

Switch to using a variable of the ThreadStatus type to store thread
status values rather than an ordinary int.

Change-Id: I8d30e69f20d5321a04f6b49322f13b3577d5a3c4
diff --git a/vm/Native.c b/vm/Native.c
index 0b10e23..bca45cc 100644
--- a/vm/Native.c
+++ b/vm/Native.c
@@ -407,7 +407,7 @@
     while (pEntry->onLoadResult == kOnLoadPending) {
         LOGD("threadid=%d: waiting for %s OnLoad status\n",
             self->threadId, pEntry->pathName);
-        int oldStatus = dvmChangeStatus(self, THREAD_VMWAIT);
+        ThreadStatus oldStatus = dvmChangeStatus(self, THREAD_VMWAIT);
         pthread_cond_wait(&pEntry->onLoadCond, &pEntry->onLoadLock);
         dvmChangeStatus(self, oldStatus);
     }
@@ -499,7 +499,7 @@
      * the GC to ignore us.
      */
     Thread* self = dvmThreadSelf();
-    int oldStatus = dvmChangeStatus(self, THREAD_VMWAIT);
+    ThreadStatus oldStatus = dvmChangeStatus(self, THREAD_VMWAIT);
     handle = dlopen(pathName, RTLD_LAZY);
     dvmChangeStatus(self, oldStatus);
 
diff --git a/vm/Thread.c b/vm/Thread.c
index 56cafb4..7dde87c 100644
--- a/vm/Thread.c
+++ b/vm/Thread.c
@@ -1465,9 +1465,8 @@
      */
     dvmUnlockThreadList();
 
-    int cc, oldStatus;
-    oldStatus = dvmChangeStatus(self, THREAD_VMWAIT);
-    cc = pthread_create(&threadHandle, &threadAttr, interpThreadStart,
+    ThreadStatus oldStatus = dvmChangeStatus(self, THREAD_VMWAIT);
+    int cc = pthread_create(&threadHandle, &threadAttr, interpThreadStart,
             newThread);
     oldStatus = dvmChangeStatus(self, oldStatus);
 
@@ -1843,7 +1842,7 @@
      * need to initiate a GC.  We switch to VMWAIT while we pause.
      */
     Thread* self = dvmThreadSelf();
-    int oldStatus = dvmChangeStatus(self, THREAD_VMWAIT);
+    ThreadStatus oldStatus = dvmChangeStatus(self, THREAD_VMWAIT);
     dvmLockThreadList(self);
     while (createStatus == 0)
         pthread_cond_wait(&gDvm.threadStartCond, &gDvm.threadListLock);
diff --git a/vm/alloc/Heap.c b/vm/alloc/Heap.c
index cc3fd72..1f36601 100644
--- a/vm/alloc/Heap.c
+++ b/vm/alloc/Heap.c
@@ -166,16 +166,9 @@
         ThreadStatus oldStatus;
 
         self = dvmThreadSelf();
-        if (self != NULL) {
-            oldStatus = dvmChangeStatus(self, THREAD_VMWAIT);
-        } else {
-            LOGI("ODD: waiting on heap lock, no self\n");
-            oldStatus = -1; // shut up gcc
-        }
+        oldStatus = dvmChangeStatus(self, THREAD_VMWAIT);
         dvmLockMutex(&gDvm.gcHeapLock);
-        if (self != NULL) {
-            dvmChangeStatus(self, oldStatus);
-        }
+        dvmChangeStatus(self, oldStatus);
     }
 
     return true;
diff --git a/vm/interp/Interp.c b/vm/interp/Interp.c
index da8fa79..e75c91c 100644
--- a/vm/interp/Interp.c
+++ b/vm/interp/Interp.c
@@ -127,7 +127,7 @@
 {
     if (dvmTryLockMutex(&pSet->lock) != 0) {
         Thread* self = dvmThreadSelf();
-        int oldStatus = dvmChangeStatus(self, THREAD_VMWAIT);
+        ThreadStatus oldStatus = dvmChangeStatus(self, THREAD_VMWAIT);
         dvmLockMutex(&pSet->lock);
         dvmChangeStatus(self, oldStatus);
     }