You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by wj...@apache.org on 2007/02/09 18:25:03 UTC

svn commit: r505384 [2/2] - /harmony/enhanced/drlvm/trunk/vm/thread/src/

Modified: harmony/enhanced/drlvm/trunk/vm/thread/src/thread_private.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/thread/src/thread_private.h?view=diff&rev=505384&r1=505383&r2=505384
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/thread/src/thread_private.h (original)
+++ harmony/enhanced/drlvm/trunk/vm/thread/src/thread_private.h Fri Feb  9 09:25:01 2007
@@ -14,12 +14,6 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-/**
- * @author Andrey Chernyshev
- * @version $Revision: 1.1.2.14 $
- */
-
-
 #ifndef THREAD_PRIVATE_H
 #define THREAD_PRIVATE_H
 
@@ -44,7 +38,7 @@
 //#include "clog.h"
 
 // FIXME move to the global header, add error converter 
-#define RET_ON_ERROR(stat) if(stat) { return -1; }
+#define RET_ON_ERROR(stat) if (stat) { return -1; }
 #define CONVERT_ERROR(stat)	(stat)
 
 #define MAX_OWNED_MONITOR_NUMBER 200 //FIXME: switch to dynamic resize
@@ -108,27 +102,27 @@
 #endif
 
 /**
-  * get_local_pool() function return apr pool associated with the current thread.
-  * the memory could be allocated without lock using this pool
-  * deallocation should be done in the same thread, otherwise 
-  * local_pool_cleanup_register() should be called
-  */
- apr_pool_t* get_local_pool();
+ * get_local_pool() function return apr pool associated with the current thread.
+ * the memory could be allocated without lock using this pool
+ * deallocation should be done in the same thread, otherwise 
+ * local_pool_cleanup_register() should be called
+ */
+apr_pool_t* get_local_pool();
  
 /**
-  * local_pool_cleanup_register() synchronously register the cleanup function.
-  * It should be called to request cleanup in thread local pool, from other thread
-  * Usage scenario:
-  * IDATA hymutex_destroy (tm_mutex_t *mutex) {
-  *        apr_pool_t *pool = apr_thread_mutex_pool_get ((apr_thread_mutex_t*)mutex);
-  *        if(pool != get_local_pool()) {
-  *              return local_pool_cleanup_register(hymutex_destroy, mutex);
-  *      }
-  *      apr_thread_mutex_destroy(mutex);
-  *  return TM_ERROR_NONE;
-  * }
-  *  
-  */
+ * local_pool_cleanup_register() synchronously register the cleanup function.
+ * It should be called to request cleanup in thread local pool, from other thread
+ * Usage scenario:
+ * IDATA hymutex_destroy (tm_mutex_t *mutex) {
+ *        apr_pool_t *pool = apr_thread_mutex_pool_get ((apr_thread_mutex_t*)mutex);
+ *        if (pool != get_local_pool()) {
+ *              return local_pool_cleanup_register(hymutex_destroy, mutex);
+ *      }
+ *      apr_thread_mutex_destroy(mutex);
+ *  return TM_ERROR_NONE;
+ * }
+ *  
+ */
 IDATA local_pool_cleanup_register(void* func, void* data); 
 
 
@@ -208,23 +202,22 @@
 
 // Basic manipulation fields
 
-   /**
-    * Group for this thread. Different groups are needed in order 
-    * to be able to quickly iterate over the specific group.
-    * Examples are: Java threads, GC private threads.
-    * Equal to the address of the head of the list of threads for this group.
-    */
+    /**
+     * Group for this thread. Different groups are needed in order 
+     * to be able to quickly iterate over the specific group.
+     * Examples are: Java threads, GC private threads.
+     * Equal to the address of the head of the list of threads for this group.
+     */
     hythread_group_t  group; 
     
-   /**
-    * Points to the next thread within the group.
-    */    
+    /**
+     * Points to the next thread within the group.
+     */    
     hythread_t next;
 
-   /**
+    /**
      * Points to the last thread within the group.
      */
-
     hythread_t prev;
     
     /**
@@ -457,39 +450,41 @@
  */
 typedef struct HyThreadMonitor {
     
-        /**
-         * Mutex
-         */
-        hymutex_t mutex;
-
-        /**
-         * Condition variable
-         */
-        hycond_t condition;
-        
-        /**
-         * Recursion count 
-         */
-        IDATA recursion_count;
-        hythread_t owner; 
-        hythread_t inflate_owner;
-        hythread_t last_wait;
-        int inflate_count;
-        int wait_count;
-        int notify_flag;
-        /**
-         * monitor sub pool
-         * will be destroyed by monitor_destroy()
-         */
-        apr_pool_t *pool;
-        /**
-         * Owner thread ID. 
-         */
-        IDATA thread_id;
+    /**
+     * Mutex
+     */
+    hymutex_t mutex;
+
+    /**
+     * Condition variable
+     */
+    hycond_t condition;
+    
+    /**
+     * Recursion count 
+     */
+    IDATA recursion_count;
+    hythread_t owner; 
+    hythread_t inflate_owner;
+    hythread_t last_wait;
+    int inflate_count;
+    int wait_count;
+    int notify_flag;
+
+    /**
+     * monitor sub pool
+     * will be destroyed by monitor_destroy()
+     */
+    apr_pool_t *pool;
+
+    /**
+     * Owner thread ID. 
+     */
+    IDATA thread_id;
 
-        UDATA flags;
+    UDATA flags;
 
-        char *name;
+    char *name;
 
 } HyThreadMonitor;
 
@@ -498,25 +493,25 @@
  */
 typedef struct HyLatch {
     
-        /**
-         * Latch count
-         */
-        int count;
-    
-        /**
-         * Condition event used to signal threads which are waiting on the latch.
-         */
-        hycond_t condition; 
-        
-        /**
-         * Mutex associated with the latch data.
-         */
-        hymutex_t mutex;  
-        /**
-          * latch sub pool
-          * will be destroyed by latch_destroy()
-         */
-        apr_pool_t *pool;       
+    /**
+     * Latch count
+     */
+    int count;
+
+    /**
+     * Condition event used to signal threads which are waiting on the latch.
+     */
+    hycond_t condition; 
+    
+    /**
+     * Mutex associated with the latch data.
+     */
+    hymutex_t mutex;  
+    /**
+      * latch sub pool
+      * will be destroyed by latch_destroy()
+     */
+    apr_pool_t *pool;       
     
 } HyLatch;
 
@@ -526,30 +521,31 @@
  */
 typedef struct HySemaphore {
     
-        /**
-         * Semaphore count
-         */
-        int count;
-    
-        /**
-         * Semaphore max count
-         */
-        int max_count;
-    
-        /**
-         * Condition event used to signal threads which are waiting on the semaphore.
-         */
-        hycond_t condition; 
-        
-        /**
-         * Mutex associated with the semaphore data.
-         */
-        hymutex_t mutex;         
-        /**
-          * semaphore sub pool
-          * will be destroyed by sem_destroy()
-         */
-        apr_pool_t *pool;     
+    /**
+     * Semaphore count
+     */
+    int count;
+
+    /**
+     * Semaphore max count
+     */
+    int max_count;
+
+    /**
+     * Condition event used to signal threads which are waiting on the semaphore.
+     */
+    hycond_t condition; 
+    
+    /**
+     * Mutex associated with the semaphore data.
+     */
+    hymutex_t mutex;         
+
+    /**
+     * semaphore sub pool
+     * will be destroyed by sem_destroy()
+     */
+    apr_pool_t *pool;     
 } HySemaphore;
 
 // Global variables 

Modified: harmony/enhanced/drlvm/trunk/vm/thread/src/thread_ti_instr.c
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/thread/src/thread_ti_instr.c?view=diff&rev=505384&r1=505383&r2=505384
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/thread/src/thread_ti_instr.c (original)
+++ harmony/enhanced/drlvm/trunk/vm/thread/src/thread_ti_instr.c Fri Feb  9 09:25:01 2007
@@ -15,11 +15,6 @@
  *  limitations under the License.
  */
 
-/** 
- * @author Sergey Petrovsky
- * @version $Revision: 1.1.2.10 $
- */  
-
 /**
  * @file thread_ti_instr.c
  * @brief JVMTI basic related functions
@@ -39,81 +34,80 @@
 IDATA VMCALL jthread_get_all_threads(jthread** threads, jint *count_ptr) {
 
     hythread_group_t  java_thread_group = get_java_thread_group();
-        hythread_iterator_t  iterator;
-        hythread_t tm_native_thread;
-        jvmti_thread_t tm_java_thread;
-        jthread* java_threads;
-        int i;
-        int count = 0;
-        int java_thread_count = 0;
-        IDATA status;
+    hythread_iterator_t  iterator;
+    hythread_t tm_native_thread;
+    jvmti_thread_t tm_java_thread;
+    jthread* java_threads;
+    int i;
+    int count = 0;
+    int java_thread_count = 0;
+    IDATA status;
     //apr_status_t apr_status; 
     //apr_pool_t *pool;
 
     assert(java_thread_group);
-        iterator = hythread_iterator_create(java_thread_group);
-        count = hythread_iterator_size (iterator);
-        for (i = 0; i < count; i++){
+    iterator = hythread_iterator_create(java_thread_group);
+    count = hythread_iterator_size (iterator);
+    for (i = 0; i < count; i++) {
         tm_native_thread = hythread_iterator_next(&iterator);
-            tm_java_thread = hythread_get_private_data(tm_native_thread);
-                if (tm_java_thread){
-                        java_thread_count++;
-                }
+        tm_java_thread = hythread_get_private_data(tm_native_thread);
+        if (tm_java_thread) {
+            java_thread_count++;
         }
+    }
     /*apr_status = apr_pool_create(&pool, 0);
-        if (apr_status != APR_SUCCESS){
+        if (apr_status != APR_SUCCESS) {
                 hythread_iterator_release(&iterator);
                 return CONVERT_ERROR(apr_status);
         }
     java_threads = apr_palloc(pool, sizeof(jthread)* java_thread_count);*/
     java_threads = (jthread*)malloc(sizeof(jthread)* java_thread_count);
-        if (!java_threads){
-                hythread_iterator_release(&iterator);
-                return TM_ERROR_OUT_OF_MEMORY;
-        }
-        hythread_iterator_reset(&iterator);
-        java_thread_count = 0;
-        for (i = 0; i < count; i++){
+    if (!java_threads) {
+        hythread_iterator_release(&iterator);
+        return TM_ERROR_OUT_OF_MEMORY;
+    }
+    hythread_iterator_reset(&iterator);
+    java_thread_count = 0;
+    for (i = 0; i < count; i++) {
         tm_native_thread = hythread_iterator_next(&iterator);
-            tm_java_thread = hythread_get_private_data(tm_native_thread);
-                if (tm_java_thread){
-                    java_threads[java_thread_count] = tm_java_thread->thread_object;
-                        java_thread_count++;
-                }
+        tm_java_thread = hythread_get_private_data(tm_native_thread);
+        if (tm_java_thread) {
+            java_threads[java_thread_count] = tm_java_thread->thread_object;
+            java_thread_count++;
         }
+    }
     *threads = java_threads;
-        *count_ptr = java_thread_count;
+    *count_ptr = java_thread_count;
     status = hythread_iterator_release(&iterator);
 
     return status;
 }
 /*
  */
-IDATA deads_expand(jthread **deads, int deads_size){
+IDATA deads_expand(jthread **deads, int deads_size) {
 
     jthread *new_deads;
         int i;
     new_deads = (jthread *)malloc(sizeof(jthread) * deads_size * 2);
-        if (!new_deads) return TM_ERROR_OUT_OF_MEMORY;
+    if (!new_deads) return TM_ERROR_OUT_OF_MEMORY;
 
-        for (i = 0; i < deads_size; i++){
+    for (i = 0; i < deads_size; i++) {
         new_deads[i] = (*deads)[i];
-        }
+    }
     *deads = new_deads;
-        return TM_ERROR_NONE;
+    return TM_ERROR_NONE;
 }
 /*
  */
-int deads_find(jobject thread, jobject *deads, int base, int top, int deads_size){
-
-        int i;
+int deads_find(jobject thread, jobject *deads, int base, int top, int deads_size) {
+    int i;
 
-        for (i = 0; i < top; i++){
-                if (vm_objects_are_equal(thread, deads[i])){
-                        return 1;
-                }
+    for (i = 0; i < top; i++) {
+        if (vm_objects_are_equal(thread, deads[i])) {
+            return 1;
         }
-        return 0;
+    }
+    return 0;
 }
 // FIXME: synchronization and maybe thread suspension needed
 /**
@@ -125,74 +119,73 @@
  * @param[out] dead_count number of deadlocked threads
  */
 IDATA VMCALL jthread_get_deadlocked_threads(jthread *thread_list, jint thread_count, jthread **dead_list, jint *dead_count) {
-    
-        jthread *deads;
-        int deads_size = 1;
-        int deads_base = 0;
-        int deads_top = 0;
+    jthread *deads;
+    int deads_size = 1;
+    int deads_base = 0;
+    int deads_top = 0;
     jthread *output;
-        int output_top = 0;
-        jobject monitor;
-        jthread thread;
+    int output_top = 0;
+    jobject monitor;
+    jthread thread;
     //apr_pool_t *pool;
     /*apr_pool_t *pool_out;
     apr_status_t apr_status;*/
-        IDATA status;
-        int i;
+    IDATA status;
+    int i;
 
     /*apr_status = apr_pool_create(&pool, NULL);
-        if (apr_status != APR_SUCCESS) return CONVERT_ERROR(apr_status);
+    if (apr_status != APR_SUCCESS) return CONVERT_ERROR(apr_status);
 
-        deads = apr_palloc(pool, sizeof(jthread) * deads_size);
+    deads = apr_palloc(pool, sizeof(jthread) * deads_size);
     output = apr_palloc(pool, sizeof(jthread) * thread_count);
     if (!deads || !output) return TM_ERROR_OUT_OF_MEMORY;*/
 
     deads = (jthread *)malloc(sizeof(jthread) * deads_size);
     output = (jthread *)malloc(sizeof(jthread) * thread_count);
-    if ((deads==NULL)||(output==NULL))
-    {
+    if ((deads==NULL)||(output==NULL)) {
         return TM_ERROR_OUT_OF_MEMORY;
     }
-        for (i = 0; i < thread_count; i++){
-                thread = thread_list[i];
-                while (1){
-                        status=jthread_get_contended_monitor(thread, &monitor);
-                        if (status != TM_ERROR_NONE) return status;
-                        if (! monitor){
-                                deads_top = deads_base; // remove frame
-                                break;
-                        }
-                        if (deads_find(thread, deads, deads_base, deads_top, deads_size)){
-                                output[output_top] = thread;
+    for (i = 0; i < thread_count; i++) {
+        thread = thread_list[i];
+        while (1) {
+            status=jthread_get_contended_monitor(thread, &monitor);
+            if (status != TM_ERROR_NONE) return status;
+            if (! monitor) {
+                deads_top = deads_base; // remove frame
+                break;
+            }
+            if (deads_find(thread, deads, deads_base, deads_top, deads_size)) {
+                output[output_top] = thread;
                 output_top++;
-                                deads_base = deads_top; // add frame
-                                break;
-                        }
-                        if (deads_top == deads_size){
-            status = deads_expand(&deads, deads_size);
-                    if (status != TM_ERROR_NONE) return status;
-                        }
-                        deads[deads_top] = thread;
-            deads_top++;
-                        status = jthread_get_lock_owner(monitor, &thread);
+                deads_base = deads_top; // add frame
+                break;
+            }
+            if (deads_top == deads_size) {
+                status = deads_expand(&deads, deads_size);
                 if (status != TM_ERROR_NONE) return status;
-                }
+            }
+            deads[deads_top] = thread;
+            deads_top++;
+            status = jthread_get_lock_owner(monitor, &thread);
+            if (status != TM_ERROR_NONE) return status;
         }
-        if (output_top > 0){
+    }
+
+    if (output_top > 0) {
         /* apr_status = apr_pool_create(&pool_out, NULL);
         if (apr_status != APR_SUCCESS) return CONVERT_ERROR(apr_status);*/
         *dead_list = (jthread *)malloc(sizeof(jthread) * output_top);
-            if (! *dead_list) return TM_ERROR_OUT_OF_MEMORY;
+        if (! *dead_list) return TM_ERROR_OUT_OF_MEMORY;
 
-                for (i = 0; i < output_top; i++){
+        for (i = 0; i < output_top; i++) {
             (*dead_list)[i] = output[i];
-                }
-        } else {
-                *dead_list = NULL;
         }
+    } else {
+        *dead_list = NULL;
+    }
     *dead_count = output_top;
 
-        return TM_ERROR_NONE;
+    return TM_ERROR_NONE;
 }
 
 /**
@@ -203,25 +196,25 @@
 IDATA VMCALL jthread_get_thread_count(jint *count_ptr) {
 
     hythread_group_t  java_thread_group = get_java_thread_group();
-        hythread_iterator_t  iterator;
-        hythread_t tm_native_thread;
-        jvmti_thread_t tm_java_thread;
-        int i;
-        int count = 0;
-        int java_thread_count = 0;
-        IDATA status;
+    hythread_iterator_t  iterator;
+    hythread_t tm_native_thread;
+    jvmti_thread_t tm_java_thread;
+    int i;
+    int count = 0;
+    int java_thread_count = 0;
+    IDATA status;
 
     assert(java_thread_group);
-        iterator = hythread_iterator_create(java_thread_group);
-        count = hythread_iterator_size (iterator);
-        for (i = 0; i < count; i++){
+    iterator = hythread_iterator_create(java_thread_group);
+    count = hythread_iterator_size (iterator);
+    for (i = 0; i < count; i++) {
         tm_native_thread = hythread_iterator_next(&iterator);
-            tm_java_thread = hythread_get_private_data(tm_native_thread);
-                if (tm_java_thread){
-                        java_thread_count++;
-                }
+        tm_java_thread = hythread_get_private_data(tm_native_thread);
+        if (tm_java_thread) {
+            java_thread_count++;
         }
-        *count_ptr = java_thread_count;
+    }
+    *count_ptr = java_thread_count;
     status = hythread_iterator_release(&iterator);
 
     return status;
@@ -235,23 +228,23 @@
 IDATA VMCALL jthread_get_blocked_count(jint* count_ptr) {
 
     hythread_group_t  java_thread_group = get_java_thread_group();
-        hythread_iterator_t  iterator;
-        hythread_t tm_native_thread;
-        int nmb = 0;
-        int count;
-        IDATA status;
+    hythread_iterator_t  iterator;
+    hythread_t tm_native_thread;
+    int nmb = 0;
+    int count;
+    IDATA status;
 
     assert(java_thread_group);
-        iterator = hythread_iterator_create(java_thread_group);
-        count = hythread_iterator_size (iterator);
+    iterator = hythread_iterator_create(java_thread_group);
+    count = hythread_iterator_size (iterator);
 
-        while(hythread_iterator_has_next(iterator)){
-                tm_native_thread = hythread_iterator_next(&iterator);
-                if (tm_native_thread && hythread_is_blocked_on_monitor_enter(tm_native_thread)){
-                        nmb++;
-                }
+    while (hythread_iterator_has_next(iterator)) {
+        tm_native_thread = hythread_iterator_next(&iterator);
+        if (tm_native_thread && hythread_is_blocked_on_monitor_enter(tm_native_thread)) {
+            nmb++;
         }
-        *count_ptr = nmb;
+    }
+    *count_ptr = nmb;
     status = hythread_iterator_release(&iterator);
 
         return status;
@@ -265,22 +258,22 @@
 IDATA VMCALL jthread_get_waited_count(jint* count) {
 
     hythread_group_t  java_thread_group = get_java_thread_group();
-        hythread_iterator_t  iterator;
-        hythread_t tm_native_thread;
-        int nmb = 0;
-        IDATA status;
+    hythread_iterator_t  iterator;
+    hythread_t tm_native_thread;
+    int nmb = 0;
+    IDATA status;
 
     assert(java_thread_group);
-        iterator = hythread_iterator_create(java_thread_group);
+    iterator = hythread_iterator_create(java_thread_group);
 
-        while(hythread_iterator_has_next(iterator)){
-                tm_native_thread = hythread_iterator_next(&iterator);
-                //if (hythread_is_in_monitor_wait(tm_native_thread)){ ???????????????????????
-                if (hythread_is_waiting(tm_native_thread)){
-                        nmb++;
-                }
+    while (hythread_iterator_has_next(iterator)) {
+        tm_native_thread = hythread_iterator_next(&iterator);
+        //if (hythread_is_in_monitor_wait(tm_native_thread)) { ???????????????????????
+        if (hythread_is_waiting(tm_native_thread)) {
+            nmb++;
         }
-        *count = nmb;
+    }
+    *count = nmb;
     status = hythread_iterator_release(&iterator);
 
     return status;
@@ -296,29 +289,28 @@
  * 
  */
 IDATA VMCALL jthread_get_state(jthread java_thread, jint *state) {
-
-        hythread_t tm_native_thread;
+    hythread_t tm_native_thread;
 
     assert(java_thread);
     assert(state);
-        tm_native_thread = vm_jthread_get_tm_data(java_thread);
+    tm_native_thread = vm_jthread_get_tm_data(java_thread);
 
-        *state = 0;
-        if (! tm_native_thread) return TM_ERROR_NONE; // Not started yet
+    *state = 0;
+    if (! tm_native_thread) return TM_ERROR_NONE; // Not started yet
 
-        if (hythread_is_alive(tm_native_thread)) {*state |= JVMTI_THREAD_STATE_ALIVE;}
-        if (hythread_is_runnable(tm_native_thread)) {*state |= JVMTI_THREAD_STATE_RUNNABLE;}
-        if (hythread_is_blocked_on_monitor_enter(tm_native_thread)) {*state |= JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER;}
-        if (hythread_is_waiting(tm_native_thread)) {*state |= JVMTI_THREAD_STATE_WAITING;}
-        if (hythread_is_waiting_indefinitely(tm_native_thread)) {*state |= JVMTI_THREAD_STATE_WAITING_INDEFINITELY;}
-        if (hythread_is_waiting_with_timeout(tm_native_thread)) {*state |= JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT;}
-        if (hythread_is_sleeping(tm_native_thread)) {*state |= JVMTI_THREAD_STATE_SLEEPING;}
-        if (hythread_is_in_monitor_wait(tm_native_thread)) {*state |= JVMTI_THREAD_STATE_IN_OBJECT_WAIT;}
-        if (hythread_is_parked(tm_native_thread)) {*state |= JVMTI_THREAD_STATE_PARKED;}
-        if (hythread_is_suspended(tm_native_thread)) {*state |= JVMTI_THREAD_STATE_SUSPENDED;}
-        if (hythread_interrupted(tm_native_thread)) {*state |= JVMTI_THREAD_STATE_INTERRUPTED;}
-        if (hythread_is_in_native(tm_native_thread)) {*state |= JVMTI_THREAD_STATE_IN_NATIVE;}
-        if (hythread_is_terminated(tm_native_thread)) {*state |= JVMTI_THREAD_STATE_TERMINATED;}
+    if (hythread_is_alive(tm_native_thread)) {*state |= JVMTI_THREAD_STATE_ALIVE;}
+    if (hythread_is_runnable(tm_native_thread)) {*state |= JVMTI_THREAD_STATE_RUNNABLE;}
+    if (hythread_is_blocked_on_monitor_enter(tm_native_thread)) {*state |= JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER;}
+    if (hythread_is_waiting(tm_native_thread)) {*state |= JVMTI_THREAD_STATE_WAITING;}
+    if (hythread_is_waiting_indefinitely(tm_native_thread)) {*state |= JVMTI_THREAD_STATE_WAITING_INDEFINITELY;}
+    if (hythread_is_waiting_with_timeout(tm_native_thread)) {*state |= JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT;}
+    if (hythread_is_sleeping(tm_native_thread)) {*state |= JVMTI_THREAD_STATE_SLEEPING;}
+    if (hythread_is_in_monitor_wait(tm_native_thread)) {*state |= JVMTI_THREAD_STATE_IN_OBJECT_WAIT;}
+    if (hythread_is_parked(tm_native_thread)) {*state |= JVMTI_THREAD_STATE_PARKED;}
+    if (hythread_is_suspended(tm_native_thread)) {*state |= JVMTI_THREAD_STATE_SUSPENDED;}
+    if (hythread_interrupted(tm_native_thread)) {*state |= JVMTI_THREAD_STATE_INTERRUPTED;}
+    if (hythread_is_in_native(tm_native_thread)) {*state |= JVMTI_THREAD_STATE_IN_NATIVE;}
+    if (hythread_is_terminated(tm_native_thread)) {*state |= JVMTI_THREAD_STATE_TERMINATED;}
 
     return TM_ERROR_NONE;
 }
@@ -330,14 +322,13 @@
  * @param[in] data data to be put
  */
 IDATA VMCALL jthread_set_local_storage(jthread java_thread, const void* data) {
-
-        hythread_t tm_native_thread;
+    hythread_t tm_native_thread;
 
     assert(java_thread);
-        tm_native_thread = vm_jthread_get_tm_data(java_thread);
+    tm_native_thread = vm_jthread_get_tm_data(java_thread);
     assert(tm_native_thread);
 
-        return hythread_set_private_data(tm_native_thread, (void *)data);
+    return hythread_set_private_data(tm_native_thread, (void *)data);
 }
 
 /**
@@ -347,14 +338,13 @@
  * @param[out] data_ptr pointer to the data
  */
 IDATA VMCALL jthread_get_local_storage(jthread java_thread, void** data_ptr) {
-
-        hythread_t tm_native_thread;
+    hythread_t tm_native_thread;
 
     assert(java_thread);
     assert(data_ptr);
-        tm_native_thread = vm_jthread_get_tm_data(java_thread);
+    tm_native_thread = vm_jthread_get_tm_data(java_thread);
     assert(tm_native_thread);
-        *data_ptr = hythread_get_private_data (tm_native_thread);
+    *data_ptr = hythread_get_private_data (tm_native_thread);
 
     return TM_ERROR_NONE;
 }
@@ -391,14 +381,14 @@
  */
 IDATA VMCALL jthread_get_contended_monitor(jthread java_thread, jobject* monitor) {
 
-        hythread_t tm_native_thread;
-        jvmti_thread_t tm_java_thread;
+    hythread_t tm_native_thread;
+    jvmti_thread_t tm_java_thread;
 
     assert(java_thread);
-        tm_native_thread = vm_jthread_get_tm_data(java_thread);
+    tm_native_thread = vm_jthread_get_tm_data(java_thread);
     tm_java_thread = hythread_get_private_data(tm_native_thread);
-        assert(tm_java_thread);
-        *monitor = tm_java_thread->contended_monitor;
+    assert(tm_java_thread);
+    *monitor = tm_java_thread->contended_monitor;
     return TM_ERROR_NONE;
 }
 
@@ -411,14 +401,14 @@
  */
 IDATA VMCALL jthread_get_wait_monitor(jthread java_thread, jobject* monitor) {
 
-        hythread_t tm_native_thread;
-        jvmti_thread_t tm_java_thread;
+    hythread_t tm_native_thread;
+    jvmti_thread_t tm_java_thread;
 
     assert(java_thread);
-        tm_native_thread = vm_jthread_get_tm_data(java_thread);
+    tm_native_thread = vm_jthread_get_tm_data(java_thread);
     tm_java_thread = hythread_get_private_data(tm_native_thread);
-        assert(tm_java_thread);
-        *monitor = tm_java_thread->wait_monitor;
+    assert(tm_java_thread);
+    *monitor = tm_java_thread->wait_monitor;
     return TM_ERROR_NONE;
 }
 
@@ -440,7 +430,7 @@
     hythread_suspend_disable();
     lockword = vm_object_get_lockword_addr(monitor);
     tm_native_thread = hythread_thin_monitor_get_owner(lockword);
-    if (!tm_native_thread){
+    if (!tm_native_thread) {
         *lock_owner = NULL;
     } else {
         tm_java_thread = hythread_get_private_data(tm_native_thread);
@@ -466,19 +456,19 @@
     hythread_thin_monitor_t *lockword;
     IDATA recursion = 0;
 
-        assert(monitor);
+    assert(monitor);
     given_thread = owner?vm_jthread_get_tm_data(owner):NULL;
-        hythread_suspend_disable();
+    hythread_suspend_disable();
     
-        lockword = vm_object_get_lockword_addr(monitor);
+    lockword = vm_object_get_lockword_addr(monitor);
     lock_owner = hythread_thin_monitor_get_owner(lockword);
         
     if (lock_owner && (!given_thread || lock_owner->thread_id == given_thread->thread_id))
-                recursion = hythread_thin_monitor_get_recursion(lockword);
+        recursion = hythread_thin_monitor_get_recursion(lockword);
     
-        hythread_suspend_enable();
+    hythread_suspend_enable();
 
-        return recursion;
+    return recursion;
 }
 
 /**
@@ -489,22 +479,22 @@
  * @param[out] monitors_ptr array of owned monitors
  */
 IDATA VMCALL jthread_get_owned_monitors(jthread java_thread, 
-                                                       jint* monitor_count_ptr, jobject** monitors_ptr) {
+                       jint* monitor_count_ptr, jobject** monitors_ptr) {
 
-        hythread_t tm_native_thread;
-        jvmti_thread_t tm_java_thread;
+    hythread_t tm_native_thread;
+    jvmti_thread_t tm_java_thread;
     // apr_pool_t* pool;
     // apr_status_t apr_status;
     jobject* monitors;
-        int i;
-        IDATA status;
-    
-        status =hythread_global_lock();
-        if (status != TM_ERROR_NONE) return status;
+    int i;
+    IDATA status;
+
+    status =hythread_global_lock();
+    if (status != TM_ERROR_NONE) return status;
     assert(java_thread);
-        tm_native_thread = vm_jthread_get_tm_data(java_thread);
+    tm_native_thread = vm_jthread_get_tm_data(java_thread);
     tm_java_thread = hythread_get_private_data(tm_native_thread);
-        assert(tm_java_thread);
+    assert(tm_java_thread);
     /* apr_status = apr_pool_create(&pool, 0);
     if (apr_status != APR_SUCCESS) {
         hythread_global_unlock();
@@ -516,12 +506,12 @@
         hythread_global_unlock();
         return TM_ERROR_OUT_OF_MEMORY;
     }
-        for (i = 0; i < tm_java_thread->owned_monitors_nmb; i++){
-                monitors[i] = tm_java_thread->owned_monitors[i];
-        }
+    for (i = 0; i < tm_java_thread->owned_monitors_nmb; i++) {
+        monitors[i] = tm_java_thread->owned_monitors[i];
+    }
     *monitors_ptr = monitors;
-        *monitor_count_ptr = tm_java_thread->owned_monitors_nmb;
+    *monitor_count_ptr = tm_java_thread->owned_monitors_nmb;
 
     status = hythread_global_unlock();
-        return status;
+    return status;
 }

Modified: harmony/enhanced/drlvm/trunk/vm/thread/src/thread_ti_monitors.c
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/thread/src/thread_ti_monitors.c?view=diff&rev=505384&r1=505383&r2=505384
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/thread/src/thread_ti_monitors.c (original)
+++ harmony/enhanced/drlvm/trunk/vm/thread/src/thread_ti_monitors.c Fri Feb  9 09:25:01 2007
@@ -15,11 +15,6 @@
  *  limitations under the License.
  */
 
-/** 
- * @author Artem Aliev
- * @version $Revision: 1.1.2.7 $
- */  
-
 /**
  * @file thread_ti_monitors.c
  * @brief JVMTI raw monitors related functions
@@ -51,28 +46,29 @@
     //// 
     if (!jvmti_monitor_table) {
         status =hythread_global_lock();
-                if (status != TM_ERROR_NONE) return status;
+        if (status != TM_ERROR_NONE) return status;
         if (!jvmti_monitor_table) {
                         
             if (array_create(&jvmti_monitor_table)) {
-                                hythread_global_unlock();
-                                return TM_ERROR_OUT_OF_MEMORY;
+                hythread_global_unlock();
+                return TM_ERROR_OUT_OF_MEMORY;
+            }
+            status = hymutex_create(&jvmti_monitor_table_lock, TM_MUTEX_NESTED);
+            if (status != TM_ERROR_NONE) {
+                hythread_global_unlock();
+                return status;
             }
-            status =hymutex_create(&jvmti_monitor_table_lock, TM_MUTEX_NESTED);
-                        if (status != TM_ERROR_NONE){
-                                hythread_global_unlock();
-                                return status;
-                        }
         }
         status =hythread_global_unlock();
-                if (status != TM_ERROR_NONE) return status;
+        if (status != TM_ERROR_NONE) return status;
     }
     
     status =hymutex_lock(jvmti_monitor_table_lock);
-        if (status != TM_ERROR_NONE) return status;
+    if (status != TM_ERROR_NONE) return status;
     *mon_ptr = array_add(jvmti_monitor_table, monitor);
+
     status =hymutex_unlock(jvmti_monitor_table_lock);
-        if (status != TM_ERROR_NONE) return status;
+    if (status != TM_ERROR_NONE) return status;
     if (!(*mon_ptr)) return TM_ERROR_OUT_OF_MEMORY;
 
     return TM_ERROR_NONE;
@@ -92,14 +88,14 @@
         return TM_ERROR_INVALID_MONITOR;
     }
 
-    while(hythread_monitor_destroy((hythread_monitor_t)monitor) != TM_ERROR_NONE) {
+    while (hythread_monitor_destroy((hythread_monitor_t)monitor) != TM_ERROR_NONE) {
         if ((status = hythread_monitor_exit((hythread_monitor_t)monitor)) != TM_ERROR_NONE)
-                return status;
+            return status;
     }
     
     status =hymutex_lock(jvmti_monitor_table_lock);
-        if (status != TM_ERROR_NONE) return status;
-        array_delete(jvmti_monitor_table, (UDATA)mon_ptr);
+    if (status != TM_ERROR_NONE) return status;
+    array_delete(jvmti_monitor_table, (UDATA)mon_ptr);
     status =hymutex_unlock(jvmti_monitor_table_lock);
     return status;
 }
@@ -129,7 +125,7 @@
  * @return 0 in case of successful attempt.
  */
 IDATA VMCALL jthread_raw_monitor_try_enter(jrawMonitorID mon_ptr) {    
-        hythread_monitor_t monitor;
+    hythread_monitor_t monitor;
     if (!(monitor = (hythread_monitor_t)array_get(jvmti_monitor_table, (UDATA)mon_ptr))) {
         return TM_ERROR_INVALID_MONITOR;
     }
@@ -197,7 +193,7 @@
     if (!(monitor = (hythread_monitor_t)array_get(jvmti_monitor_table, (UDATA)mon_ptr))) {
         return TM_ERROR_INVALID_MONITOR;
     }
-        return hythread_monitor_notify(monitor);    
+    return hythread_monitor_notify(monitor);    
 }
 
 /**
@@ -213,5 +209,5 @@
     if (!(monitor = (hythread_monitor_t)array_get(jvmti_monitor_table, (UDATA)mon_ptr))) {
         return TM_ERROR_INVALID_MONITOR;
     }
-        return hythread_monitor_notify_all(monitor);    
+    return hythread_monitor_notify_all(monitor);    
 }

Modified: harmony/enhanced/drlvm/trunk/vm/thread/src/thread_ti_others.c
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/thread/src/thread_ti_others.c?view=diff&rev=505384&r1=505383&r2=505384
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/thread/src/thread_ti_others.c (original)
+++ harmony/enhanced/drlvm/trunk/vm/thread/src/thread_ti_others.c Fri Feb  9 09:25:01 2007
@@ -15,11 +15,6 @@
  *  limitations under the License.
  */
 
-/** 
- * @author Sergey Petrovsky
- * @version $Revision: 1.1.2.4 $
- */  
-
 /**
  * @file thread_ti_others.c
  * @brief JVMTI peak related functions
@@ -53,14 +48,14 @@
  *
  * @param[in] java_thread
  */
-JVMTILocalStorage* jthread_get_jvmti_local_storage(jthread java_thread){
+JVMTILocalStorage* jthread_get_jvmti_local_storage(jthread java_thread) {
 
     jvmti_thread_t tm_java_thread;
     hythread_t tm_native_thread;
 
-        tm_native_thread = vm_jthread_get_tm_data(java_thread);
-        tm_java_thread = hythread_get_private_data(tm_native_thread);
+    tm_native_thread = vm_jthread_get_tm_data(java_thread);
+    tm_java_thread = hythread_get_private_data(tm_native_thread);
 
-        return &tm_java_thread->jvmti_local_storage;
+    return &tm_java_thread->jvmti_local_storage;
 
 }

Modified: harmony/enhanced/drlvm/trunk/vm/thread/src/thread_ti_timing.c
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/thread/src/thread_ti_timing.c?view=diff&rev=505384&r1=505383&r2=505384
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/thread/src/thread_ti_timing.c (original)
+++ harmony/enhanced/drlvm/trunk/vm/thread/src/thread_ti_timing.c Fri Feb  9 09:25:01 2007
@@ -15,11 +15,6 @@
  *  limitations under the License.
  */
 
-/** 
- * @author Sergey Petrovsky
- * @version $Revision: 1.1.2.7 $
- */  
-
 /**
  * @file thread_ti_timing.c
  * @brief JVMTI timing related functions
@@ -39,13 +34,13 @@
  */
 IDATA VMCALL jthread_get_thread_blocked_time(jthread java_thread, jlong *nanos_ptr) {
 
-        jvmti_thread_t tm_java_thread;
+    jvmti_thread_t tm_java_thread;
     hythread_t tm_native_thread;
 
-        assert(java_thread);
-        assert(nanos_ptr);
-        tm_native_thread = vm_jthread_get_tm_data(java_thread);
-        tm_java_thread = hythread_get_private_data(tm_native_thread);
+    assert(java_thread);
+    assert(nanos_ptr);
+    tm_native_thread = vm_jthread_get_tm_data(java_thread);
+    tm_java_thread = hythread_get_private_data(tm_native_thread);
     *nanos_ptr = tm_java_thread->blocked_time;
 
     return TM_ERROR_NONE;
@@ -90,13 +85,13 @@
 IDATA VMCALL jthread_get_thread_user_cpu_time(jthread java_thread, jlong *nanos_ptr) {
 
     hythread_t tm_native_thread;
-        apr_time_t kernel_time;
-        apr_time_t user_time;
+    apr_time_t kernel_time;
+    apr_time_t user_time;
 
-        assert(java_thread);
-        assert(nanos_ptr);
-        tm_native_thread = vm_jthread_get_tm_data(java_thread);
-        apr_thread_times(tm_native_thread->os_handle, &user_time, &kernel_time);
+    assert(java_thread);
+    assert(nanos_ptr);
+    tm_native_thread = vm_jthread_get_tm_data(java_thread);
+    apr_thread_times(tm_native_thread->os_handle, &user_time, &kernel_time);
     *nanos_ptr = user_time;
 
     return TM_ERROR_NONE;
@@ -110,13 +105,13 @@
  */
 IDATA VMCALL jthread_get_thread_waited_time(jthread java_thread, jlong *nanos_ptr) {
 
-        jvmti_thread_t tm_java_thread;
+    jvmti_thread_t tm_java_thread;
     hythread_t tm_native_thread;
 
-        assert(java_thread);
-        assert(nanos_ptr);
-        tm_native_thread = vm_jthread_get_tm_data(java_thread);
-        tm_java_thread = hythread_get_private_data(tm_native_thread);
+    assert(java_thread);
+    assert(nanos_ptr);
+    tm_native_thread = vm_jthread_get_tm_data(java_thread);
+    tm_java_thread = hythread_get_private_data(tm_native_thread);
     *nanos_ptr = tm_java_thread->waited_time;
 
     return TM_ERROR_NONE;