harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ge...@apache.org
Subject svn commit: r434076 [18/18] - in /incubator/harmony/enhanced/drlvm/trunk: build/make/components/ build/make/components/vm/ build/make/targets/ build/patches/lnx/ build/patches/lnx/APR/ build/patches/lnx/APR/threadproc/ build/patches/lnx/APR/threadproc/...
Date Wed, 23 Aug 2006 16:49:21 GMT
Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/em64t/base/jit_generic_rt_support_ia32.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/em64t/base/jit_generic_rt_support_ia32.cpp?rev=434076&r1=434075&r2=434076&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/em64t/base/jit_generic_rt_support_ia32.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/em64t/base/jit_generic_rt_support_ia32.cpp Wed Aug 23 09:48:41 2006
@@ -31,7 +31,7 @@
 #include "cxxlog.h"
 
 #include "jit_runtime_support.h"
-#include "open/thread.h"
+
 #include "nogc.h" // for malloc_fixed_code_for_jit()
 #include "encoder.h"
 #include "vm_stats.h"
@@ -49,7 +49,7 @@
 
 //static uint64 vm_lshl(unsigned count, uint64 n)
 //{
-//    assert(!tmn_is_suspend_enabled());
+//    assert(!hythread_is_suspend_enabled());
 //    return n << (count & 0x3f);
 //} //vm_lshl
 
@@ -69,7 +69,7 @@
 
 //static int64 vm_lshr(unsigned count, int64 n)
 //{
-//    assert(!tmn_is_suspend_enabled());
+//    assert(!hythread_is_suspend_enabled());
 //    return n >> (count & 0x3f);
 //} //vm_lshr
 
@@ -89,7 +89,7 @@
 
 //static uint64 vm_lushr(unsigned count, uint64 n)
 //{
-//    assert(!tmn_is_suspend_enabled());
+//    assert(!hythread_is_suspend_enabled());
 //    return n >> (count & 0x3f);
 //} //vm_lushr
 
@@ -111,7 +111,7 @@
 
 static int64 __stdcall vm_lmul(int64 m, int64 n)
 {
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
 
     return m * n;
 } //vm_lmul
@@ -121,7 +121,7 @@
 
 static int64 __stdcall vm_lmul_const_multiplier(int64 m, int64 n)
 {
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
     __asm{
         mov  eax,dword ptr [ebp+0ch]
         mov  ecx,dword ptr [ebp+10h]
@@ -139,7 +139,7 @@
 
 //static int64 __stdcall do_lrem(int64 m, int64 n)
 //{
-//    assert(!tmn_is_suspend_enabled());
+//    assert(!hythread_is_suspend_enabled());
 //
 //    return m % n;
 //} //do_lrem
@@ -203,7 +203,7 @@
 
 static int64 __stdcall vm_d2l(double d)
 {
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
 
 #ifdef VM_STATS
     vm_stats_total.num_d2l++;
@@ -288,7 +288,7 @@
 
 static int64 __stdcall vm_f2l(float f)
 {
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
 
 #ifdef VM_STATS
     vm_stats_total.num_f2l++;

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/em64t/base/jit_lock_rt_support_ia32.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/em64t/base/jit_lock_rt_support_ia32.cpp?rev=434076&r1=434075&r2=434076&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/em64t/base/jit_lock_rt_support_ia32.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/em64t/base/jit_lock_rt_support_ia32.cpp Wed Aug 23 09:48:41 2006
@@ -42,7 +42,7 @@
 #include "lil_code_generator.h"
 #include "../m2n_em64t_internal.h"
 #include "object_handles.h"
-#include "open/thread.h"
+
 
 extern bool dump_stubs;
 

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/em64t/base/jit_runtime_support_ia32.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/em64t/base/jit_runtime_support_ia32.cpp?rev=434076&r1=434075&r2=434076&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/em64t/base/jit_runtime_support_ia32.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/em64t/base/jit_runtime_support_ia32.cpp Wed Aug 23 09:48:41 2006
@@ -48,7 +48,7 @@
 #include "nogc.h"
 #include "encoder.h"
 #include "open/vm_util.h"
-#include "open/thread.h"
+
 #include "vm_threads.h"
 #include "mon_enter_exit.h"
 #include "vm_arrays.h"
@@ -88,11 +88,10 @@
 /////////////////////////////////////////////////////////////////
 // begin VM_Runtime_Support
 /////////////////////////////////////////////////////////////////
-CriticalSection cs;
 /*
 static void vm_throw_java_lang_ClassCastException()
 {
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
     throw_java_exception("java/lang/ClassCastException");
 } //vm_throw_java_lang_ClassCastException
 
@@ -153,7 +152,7 @@
     vm_stats_total.num_is_class_initialized++;
     clss->num_class_init_checks++;
 #endif // VM_STATS
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
     return clss->state == ST_Initialized;
 } //is_class_initialized
 */
@@ -394,7 +393,7 @@
 /*
 static void vm_throw_java_lang_ArithmeticException()
 {
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
     throw_java_exception("java/lang/ArithmeticException");
 } //vm_throw_java_lang_ArithmeticException
 
@@ -460,7 +459,7 @@
 
 static int64 __stdcall vm_lrem(int64 m, int64 n)
 {
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
     return m % n;
 } //vm_lrem
 */
@@ -476,7 +475,7 @@
 
 static int64 __stdcall vm_ldiv(int64 m, int64 n)
 {
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
     assert(n);
     return m / n;
 } //vm_ldiv

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/compile_IA32.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/compile_IA32.cpp?rev=434076&r1=434075&r2=434076&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/compile_IA32.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/compile_IA32.cpp Wed Aug 23 09:48:41 2006
@@ -36,7 +36,7 @@
 
 #include "lock_manager.h"
 #include "open/types.h"
-#include "open/thread.h"
+
 #include "Class.h"
 #include "environment.h"
 #include "method_lookup.h"
@@ -97,7 +97,7 @@
 
 void compile_protect_arguments(Method_Handle method, GcFrame* gc)
 {
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
     Method_Signature_Handle msh = method_get_signature(method);
     unsigned num_args = method_args_get_number(msh);
     unsigned num_arg_words = ((Method*)method)->get_num_arg_bytes()>>2;
@@ -262,13 +262,13 @@
         // pop args, leaving stack pointer pointing at return address
         ss = alu(ss, add_opc,  esp_opnd,  ecx_opnd);
         ss = ret(ss);
-        break;
     }
+        break;
     case CNP_JmpToRetAddrFinalAction: {
         // Continue execution in, e.g., the newly compiled method.
         ss = jump(ss,  eax_opnd);
-        break;
     }
+        break;
     default:
         ABORT("Wrong final action");
     }
@@ -484,7 +484,6 @@
 //
 //    return addr;
 //} // compile_gen_compile_me_exc_throw
- 
 
 void gen_native_hashcode(Emitter_Handle h, Method *m);
 unsigned native_hashcode_fastpath_size(Method *m);

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/ini_iA32.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/ini_iA32.cpp?rev=434076&r1=434075&r2=434076&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/ini_iA32.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/ini_iA32.cpp Wed Aug 23 09:48:41 2006
@@ -32,7 +32,7 @@
 #include "Class.h"
 #include "exceptions.h"
 #include "vm_threads.h"
-#include "open/thread.h"
+
 #include "compile.h"
 #include "nogc.h"
 #include "encoder.h"
@@ -128,7 +128,7 @@
     int argId = sz;
     int pos = 0;
 
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
     if (!method->is_static()) {
         ObjectHandle handle = (ObjectHandle) args[pos++].l;
         assert(handle);

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/jit_generic_rt_support_ia32.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/jit_generic_rt_support_ia32.cpp?rev=434076&r1=434075&r2=434076&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/jit_generic_rt_support_ia32.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/jit_generic_rt_support_ia32.cpp Wed Aug 23 09:48:41 2006
@@ -31,7 +31,7 @@
 #include "cxxlog.h"
 
 #include "jit_runtime_support.h"
-#include "open/thread.h"
+
 #include "nogc.h" // for malloc_fixed_code_for_jit()
 #include "encoder.h"
 #include "vm_stats.h"
@@ -52,7 +52,7 @@
 
 static uint64 vm_lshl(unsigned count, uint64 n)
 {
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
     return n << (count & 0x3f);
 } //vm_lshl
 
@@ -108,7 +108,7 @@
 
 static int64 vm_lshr(unsigned count, int64 n)
 {
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
     return n >> (count & 0x3f);
 } //vm_lshr
 
@@ -162,7 +162,7 @@
 
 static uint64 vm_lushr(unsigned count, uint64 n)
 {
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
     return n >> (count & 0x3f);
 } //vm_lushr
 
@@ -218,7 +218,7 @@
 
 static int64 __stdcall vm_lmul(int64 m, int64 n)
 {
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
 
     return m * n;
 } //vm_lmul
@@ -228,7 +228,7 @@
 
 static int64 __stdcall vm_lmul_const_multiplier(int64 m, int64 n)
 {
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
     __asm{
         mov  eax,dword ptr [ebp+0ch]
         mov  ecx,dword ptr [ebp+10h]
@@ -246,7 +246,7 @@
 
 static int64 __stdcall do_lrem(int64 m, int64 n)
 {
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
 
     return m % n;
 } //do_lrem
@@ -701,7 +701,7 @@
 
 static int64 __stdcall vm_d2l(double d)
 {
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
 
 #ifdef VM_STATS
     vm_stats_total.num_d2l++;
@@ -883,7 +883,7 @@
 
 static int64 __stdcall vm_f2l(float f)
 {
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
 
 #ifdef VM_STATS
     vm_stats_total.num_f2l++;

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/jit_lock_rt_support_ia32.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/jit_lock_rt_support_ia32.cpp?rev=434076&r1=434075&r2=434076&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/jit_lock_rt_support_ia32.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/jit_lock_rt_support_ia32.cpp Wed Aug 23 09:48:41 2006
@@ -18,6 +18,8 @@
  * @version $Revision: 1.1.2.2.4.3 $
  */  
 
+#include <open/hythread_ext.h>
+#include <open/thread_helpers.h>
 
 #include "platform_lowlevel.h"
 
@@ -40,7 +42,6 @@
 #include "lil_code_generator.h"
 #include "../m2n_ia32_internal.h"
 #include "object_handles.h"
-#include "open/thread.h"
 #include "Class.h"
 
 #ifdef VM_STATS
@@ -51,7 +52,7 @@
 #include "dump.h"
 extern bool dump_stubs;
 #endif
-
+#define INPUT_ARG_OFFSET 4
 char *gen_setup_j2n_frame(char *s);
 char *gen_pop_j2n_frame(char *s);
 
@@ -77,72 +78,53 @@
 } //gen_convert_struct_class_to_object
 
 
+/*
+ * Helper for monenter intstruction
+ */
 static char * gen_restore_monitor_enter(char *ss, char *patch_addr_null_arg)
 {
+    
+    // Obtain lockword offset for the given object
     const unsigned header_offset = ManagedObject::header_offset();
+    signed offset;
+    assert(header_offset);
 #ifdef VM_STATS
     ss = inc(ss,  M_Opnd((unsigned)&(vm_stats_total.num_monitor_enter)));
 #endif
-
-#ifdef USE_TLS_API
-    ss = call(ss, (char *)get_self_stack_key);
-    ss = mov(ss,  edx_opnd,  eax_opnd);
-#else //USE_TLS_API
-    *ss++ = (char)0x64;
-    *ss++ = (char)0xa1;
-    *ss++ = (char)0x14;
-    *ss++ = (char)0x00;
-    *ss++ = (char)0x00;
-    *ss++ = (char)0x00;
-    ss = mov(ss,  edx_opnd,  M_Base_Opnd(eax_reg, (uint32)&((VM_thread *)0)->stack_key) );
-#endif //!USE_TLS_API
-    
-    ss = alu(ss, xor_opc,  eax_opnd,  eax_opnd);
     ss = mov(ss,  ecx_opnd,  M_Base_Opnd(esp_reg, INPUT_ARG_OFFSET));
     
     ss = test(ss,  ecx_opnd,   ecx_opnd);
     ss = branch8(ss, Condition_Z,  Imm_Opnd(size_8, 0));
     char *backpatch_address__null_pointer = ((char *)ss) - 1;
 
-    ss = prefix(ss, lock_prefix);   
-    ss = cmpxchg(ss,  M_Base_Opnd(ecx_reg, header_offset + STACK_KEY_OFFSET),  edx_opnd, size_16);
+    ss = alu(ss, add_opc, ecx_opnd, Imm_Opnd(header_offset)); // pop parameters
+    ss = gen_monitorenter_fast_path_helper(ss, ecx_opnd);
+    ss = test(ss,  eax_opnd,   eax_opnd);
     ss = branch8(ss, Condition_NZ,  Imm_Opnd(size_8, 0));
     char *backpatch_address__fast_monitor_failed = ((char *)ss) - 1;
-
     ss = ret(ss,  Imm_Opnd(4));
 
-    signed offset = (signed)ss - (signed)backpatch_address__fast_monitor_failed - 1;
+    // Slow path: happens when the monitor is busy (contention case)
+    offset = (signed)ss - (signed)backpatch_address__fast_monitor_failed - 1;
     *backpatch_address__fast_monitor_failed = (char)offset;
 
     ss = gen_setup_j2n_frame(ss);
     ss = push(ss,  M_Base_Opnd(esp_reg, m2n_sizeof_m2n_frame));
  
-/*
-     // packing heap pointer to handle -salikh
     ss = call(ss, (char *)oh_convert_to_local_handle);
     ss = alu(ss, add_opc, esp_opnd, Imm_Opnd(4)); // pop parameters
-    ss = push(ss, eax_opnd); // push the address of the handle
-    ss = call(ss, (char *)tmn_suspend_enable); // enable gc
-    // -salikh
-
-    ss = call(ss, (char *)vm_monitor_enter_slow_handle);
-    ss = alu(ss, add_opc, esp_opnd, Imm_Opnd(4)); // pop parameters
 
-    // disable gc afterwards -salikh
-    ss = call(ss, (char *)tmn_suspend_disable); // disable gc
-    // -salikh
-*/
-    ss = call(ss, (char *)vm_monitor_enter_slow);
-    ss = alu(ss, add_opc,  esp_opnd,  Imm_Opnd(4));
+    ss = gen_monitorenter_slow_path_helper(ss, eax_opnd);
   
     ss = gen_pop_j2n_frame(ss);
     ss = ret(ss,  Imm_Opnd(4));
 
-    offset = (signed)ss - (signed)backpatch_address__null_pointer - 1;
-    *backpatch_address__null_pointer = (char)offset;
+    // Handle NPE here
+    signed npe_offset = (signed)ss - (signed)backpatch_address__null_pointer - 1;
+    *backpatch_address__null_pointer = (char)npe_offset;
     if (patch_addr_null_arg != NULL) {
-        offset = (signed)ss - (signed)patch_addr_null_arg - 1;
-        *patch_addr_null_arg = (char)offset;
+        npe_offset = (signed)ss - (signed)patch_addr_null_arg - 1;
+        *patch_addr_null_arg = (char)npe_offset;
     }
     // Object is null so throw a null pointer exception
     ss = jump(ss, (char*)exn_get_rth_throw_null_pointer());
@@ -197,127 +179,40 @@
 
 static char * gen_restore_monitor_exit(char *ss, char *patch_addr_null_arg)
 {
+
     const unsigned header_offset = ManagedObject::header_offset();
 #ifdef VM_STATS
-    ss = inc(ss,  M_Opnd((unsigned)&(vm_stats_total.num_monitor_exit)));
+    ss = inc(ss,  M_Opnd((unsigned)&(vm_stats_total.num_monitor_enter)));
 #endif
 
-#define CHECK_FOR_ILLEGAL_MONITOR_STATE_EXCEPTION
-#ifdef CHECK_FOR_ILLEGAL_MONITOR_STATE_EXCEPTION
-#ifdef USE_TLS_API
-    ss = call(ss, (char *)get_self_stack_key);
-    ss = shift(ss, shl_opc,  eax_opnd,  Imm_Opnd(16));
-#else
-//#error This code has not been tested.
-    ss = mov(ss,  eax_opnd,  esp_opnd);
-    ss = alu(ss, and_opc,  eax_opnd,  Imm_Opnd(0xffff0000));
-#endif //#ifdef USE_TLS_API else
     ss = mov(ss,  ecx_opnd,  M_Base_Opnd(esp_reg, INPUT_ARG_OFFSET));
-    ss = alu(ss, xor_opc,  eax_opnd,  M_Base_Opnd(ecx_reg, header_offset));
-    ss = test(ss,  eax_opnd,  Imm_Opnd(0xffffff80));
-    ss = branch8(ss, Condition_NZ,  Imm_Opnd(size_8, 0));
-    char *backpatch_address__slow_path = ((char *)ss) - 1;
-    ss = alu(ss, and_opc,  M_Base_Opnd(ecx_reg, header_offset),  Imm_Opnd(0x0000ffff));
-    ss = ret(ss,  Imm_Opnd(4));
-    signed offset1 = (signed)ss-(signed)backpatch_address__slow_path - 1;
-    *backpatch_address__slow_path = (char)offset1;
-#else // !CHECK_FOR_ILLEGAL_MONITOR_STATE_EXCEPTION
-    ss = mov(ss,  ecx_opnd,  M_Base_Opnd(esp_reg, INPUT_ARG_OFFSET));
-    // The current ia32.cpp doesn't support a 16-bit test instruction, so
-    // we hack it here.
-    *ss = 0x66; ss++; // prefix 0x66 means use the 16-bit form instead of the 32-bit form
-    ss = test(ss,  M_Base_Opnd(ecx_reg, header_offset),  Imm_Opnd(0xff80));
-    ss -= 2; // Adjust for a 16-bit immediate instead of a 32-bit immediate.
-    ss = branch8(ss, cc_ne,  Imm_Opnd(size_8, 0), 0);
-    char *backpatch_address__slow_path = ((char *)ss) - 1;
-    ss = mov(ss,  M_Base_Opnd(ecx_reg, header_offset + STACK_KEY_OFFSET),  Imm_Opnd(0), opnd_16);
-    ss = ret(ss,  Imm_Opnd(4));
-    signed offset1 = (signed)ss-(signed)backpatch_address__slow_path - 1;
-    *backpatch_address__slow_path = offset1;
-#endif // !CHECK_FOR_ILLEGAL_MONITOR_STATE_EXCEPTION
-
-#ifdef USE_TLS_API
-    ss = call(ss, (char *)get_self_stack_key);
-    ss = mov(ss,  edx_opnd,  eax_opnd);
-#else //USE_TLS_API
-    *ss++ = (char)0x64;
-    *ss++ = (char)0xa1;
-    *ss++ = (char)0x14;
-    *ss++ = (char)0x00;
-    *ss++ = (char)0x00;
-    *ss++ = (char)0x00;
-    ss = mov(ss,  edx_opnd,  M_Base_Opnd(eax_reg, (uint32)&((VM_thread *)0)->stack_key) );
-#endif //!USE_TLS_API
-
-    ss = mov(ss,  ecx_opnd,  M_Base_Opnd(esp_reg, INPUT_ARG_OFFSET));
-    ss = mov(ss,  eax_opnd,  M_Base_Opnd(ecx_reg, header_offset + STACK_KEY_OFFSET ), size_16);
-    ss = alu(ss, cmp_opc,  eax_opnd,  edx_opnd, size_16);
-    ss = branch8(ss, Condition_NZ,  Imm_Opnd(size_8, 0));
-    char *backpatch_address__illegal_monitor_failed = ((char *)ss) - 1;
-
-    ss = mov(ss,  eax_opnd,  M_Base_Opnd(ecx_reg,header_offset + HASH_CONTENTION_AND_RECURSION_OFFSET), size_16);
-
-    // need to code AH: ESP & size_8 -> AH
-    ss = alu(ss, cmp_opc,  esp_opnd,  Imm_Opnd(size_8, 0), size_8);
-
-    ss = branch8(ss, Condition_NZ,  Imm_Opnd(size_8, 0));
-    char *backpatch_address__recursed_monitor_failed = ((char *)ss) - 1;
-
-    //release the lock
-
-    ss = mov(ss,  edx_opnd,  Imm_Opnd(0));
-    ss = mov(ss,  M_Base_Opnd(ecx_reg, header_offset + STACK_KEY_OFFSET),  edx_opnd, size_16);
-
-    ss = mov(ss,  edx_opnd,  eax_opnd);
-    ss = alu(ss, and_opc,  edx_opnd,  Imm_Opnd(0x80));
+    ss = test(ss,  ecx_opnd,   ecx_opnd);
+    ss = branch8(ss, Condition_Z,  Imm_Opnd(size_8, 0));
+    char *backpatch_address__null_pointer = ((char *)ss) - 1;
 
+    ss = alu(ss, add_opc, ecx_opnd, Imm_Opnd(header_offset));
+    ss = gen_monitor_exit_helper(ss, ecx_opnd);
+    ss = test(ss,  eax_opnd,   eax_opnd);
     ss = branch8(ss, Condition_NZ,  Imm_Opnd(size_8, 0));
-    char *backpatch_address__contended_monitor_failed = ((char *)ss) - 1;
-    ss = ret(ss,  Imm_Opnd(4));
-
-    signed 
-    offset = (signed)ss-(signed)backpatch_address__contended_monitor_failed - 1;
-    *backpatch_address__contended_monitor_failed = (char)offset;
-    ss = push(ss,  M_Base_Opnd(esp_reg, INPUT_ARG_OFFSET));
-    ss = call(ss, (char *)find_an_interested_thread);
-    ss = alu(ss, add_opc,  esp_opnd,  Imm_Opnd(4));
+    char *backpatch_address__fast_monitor_failed = ((char *)ss) - 1;
     ss = ret(ss,  Imm_Opnd(4));
 
-    offset = (signed)ss-(signed)backpatch_address__recursed_monitor_failed - 1;
-    *backpatch_address__recursed_monitor_failed = (char)offset;
-    // esp_opnd & size_8 translates to AH
-    ss = dec(ss, esp_opnd,  size_8);
-    ss = mov(ss,   M_Base_Opnd(ecx_reg, header_offset + RECURSION_OFFSET),  esp_opnd, size_8);
-    ss = ret(ss,  Imm_Opnd(4));
+    signed offset = (signed)ss - (signed)backpatch_address__fast_monitor_failed - 1;
+    *backpatch_address__fast_monitor_failed = (char)offset;
+    //  illegal state happend
+    ss = jump(ss, (char*)exn_get_rth_throw_illegal_state_exception());
 
-    offset = (signed)ss-(signed)backpatch_address__illegal_monitor_failed - 1;
-    *backpatch_address__illegal_monitor_failed = (char)offset;
+    offset = (signed)ss - (signed)backpatch_address__null_pointer - 1;
+    *backpatch_address__null_pointer = (char)offset;
     if (patch_addr_null_arg != NULL) {
         offset = (signed)ss - (signed)patch_addr_null_arg - 1;
         *patch_addr_null_arg = (char)offset;
     }
-    ss = gen_setup_j2n_frame(ss);
-    ss = push(ss,  M_Base_Opnd(esp_reg, m2n_sizeof_m2n_frame));
-
- /*
-     // packing heap pointer to handle -salikh
-    ss = call(ss, (char *)oh_convert_to_local_handle);
-    ss = alu(ss, add_opc, esp_opnd, Imm_Opnd(4)); // pop parameters
-    ss = push(ss, eax_opnd); // push the address of the handle
-    ss = call(ss, (char *)tmn_suspend_enable); // enable gc
-    // -salikh
-
-    ss = call(ss, (char *)vm_monitor_exit_handle);
-    ss = alu(ss, add_opc, esp_opnd, Imm_Opnd(4));
-
-    // disable gc afterwards -salikh
-    ss = call(ss, (char *)tmn_suspend_disable); // disable gc
-    // -salikh
-*/
-    ss = call(ss, (char *)vm_monitor_exit);
-    ss = alu(ss, add_opc,  esp_opnd,  Imm_Opnd(4));
+    // Object is null so throw a null pointer exception
+    ss = jump(ss, (char*)exn_get_rth_throw_null_pointer());
     
     return ss;
+  
 } //gen_restore_monitor_exit
 
 
@@ -372,7 +267,7 @@
         return addr;
     }
 
-    const int stub_size = 126;
+    const int stub_size = 226;
     char *stub = (char *)malloc_fixed_code_for_jit(stub_size, DEFAULT_CODE_ALIGNMENT, CODE_BLOCK_HEAT_MAX/2, CAA_Allocate);
 #ifdef _DEBUG
     memset(stub, 0xcc /*int 3*/, stub_size);
@@ -411,7 +306,7 @@
         return addr;
     }
 
-    const int stub_size = 150;
+    const int stub_size = 250;
     char *stub = (char *)malloc_fixed_code_for_jit(stub_size, DEFAULT_CODE_ALIGNMENT, CODE_BLOCK_HEAT_MAX/2, CAA_Allocate);
 #ifdef _DEBUG
     memset(stub, 0xcc /*int 3*/, stub_size);

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/jit_runtime_support_ia32.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/jit_runtime_support_ia32.cpp?rev=434076&r1=434075&r2=434076&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/jit_runtime_support_ia32.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/jit_runtime_support_ia32.cpp Wed Aug 23 09:48:41 2006
@@ -43,7 +43,9 @@
 #include "nogc.h"
 #include "encoder.h"
 #include "open/vm_util.h"
-#include "open/thread.h"
+
+#include "open/thread_helpers.h"
+
 #include "vm_threads.h"
 #include "mon_enter_exit.h"
 #include "vm_arrays.h"
@@ -77,22 +79,16 @@
 #define SIZE(Struct, Field) \
   (sizeof(((Struct *) NULL)->Field))
 
-
-void * getaddress__vm_monitor_enter_naked();
-void * getaddress__vm_monitor_enter_static_naked();
-void * getaddress__vm_monitor_exit_naked();
-void * getaddress__vm_monitor_exit_static_naked();
 void * get_generic_rt_support_addr_ia32(VM_RT_SUPPORT f);
 
 
 /////////////////////////////////////////////////////////////////
 // begin VM_Runtime_Support
 /////////////////////////////////////////////////////////////////
-CriticalSection cs;
 
 static void vm_throw_java_lang_ClassCastException()
 {
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
     throw_java_exception("java/lang/ClassCastException");
     ABORT("The last called function should not return");
 } //vm_throw_java_lang_ClassCastException
@@ -225,7 +221,7 @@
     vm_stats_total.num_is_class_initialized++;
     clss->num_class_init_checks++;
 #endif // VM_STATS
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
     return clss->state == ST_Initialized;
 } //is_class_initialized
 
@@ -393,10 +389,10 @@
     memset(stub, 0xcc /*int 3*/, stub_size);
 #endif
     char *ss = stub;
-
-#ifdef PLATFORM_POSIX
+// openTM integration 
+//#ifdef PLATFORM_POSIX
     ss = call(ss, (char *)vm_get_gc_thread_local);
-#else // !PLATFORM_POSIX
+/*#else // !PLATFORM_POSIX
     *ss++ = (char)0x64;
     *ss++ = (char)0xa1;
     *ss++ = (char)0x14;
@@ -405,6 +401,7 @@
     *ss++ = (char)0x00;
     ss = alu(ss, add_opc,  eax_opnd,  Imm_Opnd((uint32)&((VM_thread *)0)->_gc_private_information));
 #endif // !PLATFORM_POSIX
+*/
     ss = push(ss,  eax_opnd);
 
     ss = push(ss,  M_Base_Opnd(esp_reg, 12));
@@ -423,9 +420,10 @@
     *backpatch_address__fast_alloc_failed = (char)offset;
     
     ss = gen_setup_j2n_frame(ss);
-#ifdef PLATFORM_POSIX
+// openTM integration 
+//#ifdef PLATFORM_POSIX
     ss = call(ss, (char *)vm_get_gc_thread_local);
-#else // !PLATFORM_POSIX
+/*#else // !PLATFORM_POSIX
     *ss++ = (char)0x64;
     *ss++ = (char)0xa1;
     *ss++ = (char)0x14;
@@ -434,6 +432,7 @@
     *ss++ = (char)0x00;
     ss = alu(ss, add_opc,  eax_opnd,  Imm_Opnd((uint32)&((VM_thread *)0)->_gc_private_information));
 #endif // !PLATFORM_POSIX
+*/  
     ss = push(ss,  eax_opnd);
     ss = push(ss,  M_Base_Opnd(esp_reg, 8+m2n_sizeof_m2n_frame));
     ss = push(ss,  M_Base_Opnd(esp_reg, 8+m2n_sizeof_m2n_frame));
@@ -926,7 +925,7 @@
 
 static void vm_throw_java_lang_ArithmeticException()
 {
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
     throw_java_exception("java/lang/ArithmeticException");
     ABORT("The last called function should not return");
 } //vm_throw_java_lang_ArithmeticException
@@ -1125,7 +1124,7 @@
 
 static int64 __stdcall vm_lrem(int64 m, int64 n)
 {
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
     return m % n;
 } //vm_lrem
 
@@ -1176,7 +1175,7 @@
 
 static int64 __stdcall vm_ldiv(int64 m, int64 n)
 {
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
     assert(n);
     return m / n;
 } //vm_ldiv
@@ -1236,7 +1235,14 @@
 
 #endif //VM_STATS
 
+void * getaddress__vm_monitor_enter_naked();
+void * getaddress__vm_monitor_enter_static_naked();
+void * getaddress__vm_monitor_exit_naked();
 
+/**
+  * Returns fast monitor exit static function.
+  */
+void * getaddress__vm_monitor_exit_static_naked();
 void *vm_get_rt_support_addr(VM_RT_SUPPORT f)
 {
 #ifdef VM_STATS

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ipf/base/compile_ipf.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ipf/base/compile_ipf.cpp?rev=434076&r1=434075&r2=434076&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ipf/base/compile_ipf.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ipf/base/compile_ipf.cpp Wed Aug 23 09:48:41 2006
@@ -58,7 +58,7 @@
 #include "open/vm_util.h"
 #include "vm_synch.h"
 #include "vm_threads.h"
-#include "open/thread.h"
+
 #include "ini.h"
 
 #define METHOD_NAME_BUF_SIZE 512
@@ -363,7 +363,7 @@
 static void protect_value_type(Class_Handle c, uint64* start, GcFrame* gc)
 {
     ABORT("It is supposed that the function is never called");
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
     unsigned num_fields = class_num_instance_fields_recursive(c);
     for(unsigned i=0; i<num_fields; i++) {
         Field_Handle f = class_get_instance_field_recursive(c, i);
@@ -398,7 +398,7 @@
 
 void compile_protect_arguments(Method_Handle method, GcFrame* gc)
 {
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
     Method_Signature_Handle msh = method_get_signature(method);
     unsigned num_args = method_args_get_number(msh);
     M2nFrame* m2nf = m2n_get_last_frame();

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ipf/base/ini_ipf.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ipf/base/ini_ipf.cpp?rev=434076&r1=434075&r2=434076&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ipf/base/ini_ipf.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ipf/base/ini_ipf.cpp Wed Aug 23 09:48:41 2006
@@ -38,7 +38,7 @@
 #include "Class.h"
 #include "exceptions.h"
 #include "vm_threads.h"
-#include "open/thread.h"
+
 #include "vm_synch.h"
 #include "compile.h"
 #include "open/vm_util.h"
@@ -142,7 +142,7 @@
                            jvalue   *args)
 {
     Method *meth = (Method*) methodID;
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
     void *entry_point = meth->get_code_addr();
     int nargs = meth->get_num_args();
     uint64 arg_words[255];

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ipf/base/jit_runtime_support_ipf.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ipf/base/jit_runtime_support_ipf.cpp?rev=434076&r1=434075&r2=434076&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ipf/base/jit_runtime_support_ipf.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ipf/base/jit_runtime_support_ipf.cpp Wed Aug 23 09:48:41 2006
@@ -50,7 +50,7 @@
 #include "open/vm_util.h"
 #include "vm_strings.h"
 #include "vm_threads.h"
-#include "open/thread.h"
+
 #include "vm_stats.h"
 #include "merced.h"
 #include "Code_Emitter.h"
@@ -167,7 +167,7 @@
 
 extern "C" ManagedObject *vm_rt_new_resolved(Class *c)
 {
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
     assert(strcmp(c->name->bytes, "java/lang/Class")); 
 #ifdef VM_STATS
     vm_stats_total.num_class_alloc_new_object++;
@@ -1250,7 +1250,7 @@
         emitter.set_target(nonnull_target);
     }
 
-    // If the cmpxchg failed, we fall through and execute the slow monitor enter path by calling vm_monitor_enter_slow.
+    // If the cmpxchg failed, we fall through and execute the slow monitor enter path by calling vm_monitor_enter.
 } //gen_vm_rt_monitorenter_fast_path
 
 
@@ -1427,9 +1427,9 @@
     if (addr) {
         return addr;
     }
-    void (*p_vm_monitor_enter_slow)(ManagedObject *p_obj);
-    p_vm_monitor_enter_slow = vm_monitor_enter_slow;
-    addr = gen_vm_rt_monitor_wrapper((void **)p_vm_monitor_enter_slow, gen_vm_rt_monitorenter_fast_path,
+    void (*p_vm_monitor_enter)(ManagedObject *p_obj);
+    p_vm_monitor_enter = vm_monitor_enter;
+    addr = gen_vm_rt_monitor_wrapper((void **)p_vm_monitor_enter, gen_vm_rt_monitorenter_fast_path,
                                       check_null, /*static_operation*/ false,
                                       "rt_monitor_enter_slowpath", "rt_monitor_enter_fastpath");
     return addr;
@@ -1460,9 +1460,9 @@
         return addr;
     }
     // 20030220 The "static" monitor enter function is only called with a struct Class pointer, which can't be NULL.
-    void (*p_vm_monitor_enter_slow)(ManagedObject *p_obj);
-    p_vm_monitor_enter_slow = vm_monitor_enter_slow;
-    addr = gen_vm_rt_monitor_wrapper((void **)p_vm_monitor_enter_slow, gen_vm_rt_monitorenter_fast_path, 
+    void (*p_vm_monitor_enter)(ManagedObject *p_obj);
+    p_vm_monitor_enter = vm_monitor_enter;
+    addr = gen_vm_rt_monitor_wrapper((void **)p_vm_monitor_enter, gen_vm_rt_monitorenter_fast_path, 
                                       /*check_null*/ false, /*static_operation*/ true,
                                       "rt_monitor_enter_static_slowpath", "rt_monitor_enter_static_fastpath");
     return addr;

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/linux/include/platform.h
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/linux/include/platform.h?rev=434076&r1=434075&r2=434076&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/linux/include/platform.h (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/linux/include/platform.h Wed Aug 23 09:48:41 2006
@@ -49,12 +49,9 @@
 #define WORD unsigned short
 #define DWORD unsigned int
 #define BOOL unsigned int
-typedef pthread_t VmThreadHandle;
 #ifdef POINTER64
-#define VmEventHandle void*
 #define HANDLE void*
 #else
-#define VmEventHandle unsigned int
 #define HANDLE unsigned int
 #endif
 
@@ -109,34 +106,7 @@
 #define FMT64 "ll"
 #endif // FMT64
 
-void init_linux_thread_system();
 typedef struct VM_thread VM_thread;
-bool suspend_thread(VM_thread *);
-bool resume_thread(VM_thread *);
-
-#define CRITICAL_SECTION pthread_mutex_t
-#define LPCRITICAL_SECTION pthread_mutex_t *
-
-VOID InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection);
-
-VOID DeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection);
-VOID LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection);
-BOOL TryEnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection);
-BOOL EnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection);
-
-VmThreadHandle vm_beginthreadex( void * security, unsigned stack_size, unsigned(__stdcall *start_address)(void *), void *arglist, unsigned initflag, pthread_t *thrdaddr);
-VmThreadHandle vm_beginthread(void (__cdecl *start_address)(void *), unsigned stack_size, void *arglist);
-void vm_endthreadex(int);
-void vm_endthread(void);
-
-#define CreateEvent vm_create_event
-#define SetEvent vm_set_event
-#define ResetEvent vm_reset_event
-#define WaitForSingleObject vm_wait_for_single_object
-#define WaitForMultipleObjects vm_wait_for_multiple_objects
-
-void Sleep(DWORD);
-void SleepEx(DWORD, bool);
 
 /*
  * There are two ways to implement Thread-Specific_Data(TSD or Thread Local 
@@ -227,13 +197,7 @@
 #define G_S_R_E_H NULL
 #define J_V_M_T_I_E_H NULL
 #define E_H_RECOMP NULL
-#define OS_THREAD_INIT_1()
-#define OS_SYNC_SUPPORT()
-#define OS_THREAD_INIT_2() p_TLS_vmthread = p_vm_thread; 
-#define THREAD_CLEANUP() 
-#define BEGINTHREADEX_SUSPENDSTATE 1
-#define SET_THREAD_DATA_MACRO()
-#define CHECK_HIJACK_SUPPORT_MACRO()
+
 #include "stdlib.h"
 
 #include <assert.h>
@@ -247,10 +211,6 @@
 
 void _fpreset(void);
 
-
-VmEventHandle vm_create_event(int *, unsigned int, unsigned int, char *);
-BOOL vm_destroy_event( VmEventHandle );
-
 typedef struct event_wrapper {
   pthread_mutex_t          mutex;
   pthread_cond_t           cond;
@@ -259,18 +219,6 @@
   unsigned int             n_wait;
 } event_wrapper;
 
-BOOL vm_reset_event(VmEventHandle hEvent);
-BOOL vm_set_event(VmEventHandle hEvent);
-
-void vm_yield();
-DWORD vm_wait_for_single_object(VmEventHandle hHandle, DWORD dwMilliseconds);
-DWORD vm_wait_for_multiple_objects(DWORD num, const VmEventHandle * handle, BOOL flag, DWORD dwMilliseconds);
-
-
-#define WAIT_TIMEOUT 0x102
-#define WAIT_OBJECT_0 0
-#define WAIT_FAILED (DWORD)0xFFFFFFFF
-
 
 typedef struct _FLOATING_SAVE_AREA {
     DWORD   ControlWord;
@@ -567,23 +515,13 @@
 #define CONTEXT_FLOATING_POINT 2
 #define CONTEXT_INTEGER 3
 #define THREAD_PRIORITY_NORMAL 4
-
+/*
 
 BOOL GetThreadContext(VmThreadHandle hthread, const CONTEXT *lpcontext);
 BOOL SetThreadContext(VmThreadHandle hh, const CONTEXT *cc);
 BOOL SetThreadPriority(VmThreadHandle hh, int pp);
 
-BOOL port_CloseHandle(VmEventHandle hh);
-pthread_t GetCurrentThreadId(void);
-VmEventHandle GetCurrentProcess(void);
-VmEventHandle GetCurrentThread(void);
-
-#define DUPLICATE_SAME_ACCESS 3
-
-BOOL DuplicateHandle(VmEventHandle aa, VmEventHandle bb, 
-                     VmEventHandle cc, VmEventHandle *dd, 
-                     DWORD ee, BOOL ff, DWORD gg);
-
+*/
 #define _MAX_PATH PATH_MAX
 
 struct _finddata_t {
@@ -607,12 +545,11 @@
 
 __uint64 GetTickCount();
 
-void vm_endthreadex(int);
 typedef void * FARPROC;
 
-inline void vm_terminate_thread(VmThreadHandle thrdaddr) {
+/*inline void vm_terminate_thread(VmThreadHandle thrdaddr) {
     pthread_cancel(thrdaddr);    
-}
+}*/
 #ifdef __cplusplus
 }
 #endif

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/linux/os_wrapper.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/linux/os_wrapper.cpp?rev=434076&r1=434075&r2=434076&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/linux/os_wrapper.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/linux/os_wrapper.cpp Wed Aug 23 09:48:41 2006
@@ -49,343 +49,3 @@
 -- which uses SIGUSR1, SIGUSR2 (which conflicts with the java app debugger and vm)
 #endif
 #endif
-
-
-pthread_mutexattr_t mutex_attr;
-pthread_mutexattr_t mutex_attr_for_cond_wait;
-
-pthread_condattr_t cond_attr;
-
-pthread_attr_t pthread_attr;
-//extern pthread_key_t TLS_key_pvmthread;
-void init_linux_thread_system()
-{
-    static bool initialized = false;
-
-    if (initialized) return;
-    initialized = true;
-    pthread_mutexattr_settype(&mutex_attr, PTHREAD_MUTEX_RECURSIVE_NP);
-
-    int UNUSED stat = pthread_condattr_init(&cond_attr);
-    assert(stat == 0);
-
-    pthread_attr_init(&pthread_attr);
-    pthread_attr_setdetachstate(&pthread_attr, PTHREAD_CREATE_DETACHED);
-
-    //pthread_key_create(&TLS_key_pvmthread, 0);
-}
-
-VOID InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
-{
-    init_linux_thread_system();
-    assert(lpCriticalSection);
-    int UNUSED xx = pthread_mutex_init(lpCriticalSection, &mutex_attr);
-    assert(xx == 0);
-}
-
-
-VOID DeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
-{
-    assert(lpCriticalSection);
-}
-
-
-VOID LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
-{
-    assert(lpCriticalSection);
-    int UNUSED xx = pthread_mutex_unlock(lpCriticalSection);
-    assert(xx == 0);
-}
-
-
-BOOL TryEnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
-{
-    assert(lpCriticalSection);
-    int xx = pthread_mutex_trylock(lpCriticalSection);
-
-    if (xx == 0)
-        return 1;
-
-    assert(xx == EBUSY);
-    return 0;
-}
-
-
-BOOL EnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
-{
-    assert(lpCriticalSection);
-    int xx = pthread_mutex_lock(lpCriticalSection);
-
-    if (xx == 0)
-        return 1;
-
-    return 0;
-}
-
-
-VmThreadHandle vm_beginthreadex( void * UNREF security,  unsigned UNREF stacksize, unsigned(__stdcall *start_address)(void *), void *arglist, unsigned UNREF initflag, pthread_t *thrdaddr)
-{ 
-  pthread_t tid = 0;
-
-  void *(*sa)(void *) = ( void *(*)(void *) )start_address;
-  int stat = pthread_create(&tid, &pthread_attr, sa, arglist); 
-  *thrdaddr = tid;
-  if(stat !=0) {
-    return 0;
-  }
-  return (VmThreadHandle)tid;
-}
-
-VmThreadHandle vm_beginthread(void (__cdecl *start_address)(void *), unsigned UNREF stacksize, void *arglist)
-{ 
-  pthread_t tid = 0;
-
-  void *(*sa)(void *) = ( void *(*)(void *) )start_address;
-  int stat = pthread_create(&tid, &pthread_attr, sa, arglist); 
-  if(stat !=0) {
-    return 0;
-  }
-  
-  return (VmThreadHandle)tid;
-}
-
-static void init_timespec(struct timespec & ts, DWORD dwMillisec)
-{
-    ts.tv_sec  = dwMillisec/1000;
-    ts.tv_nsec = (dwMillisec%1000)*1000000;
-
-    struct timeval tv;
-    int UNUSED stat = gettimeofday(&tv, 0);
-    assert(stat == 0);
-
-    ts.tv_sec  += tv.tv_sec;
-    ts.tv_nsec += tv.tv_usec*1000;
-
-    ts.tv_sec += (ts.tv_nsec/1000000000);
-    ts.tv_nsec = (ts.tv_nsec%1000000000);
-}
-
-VmEventHandle vm_create_event(int * UNREF security, unsigned int man_reset_flag, 
-                         unsigned int initial_state_flag, char * UNREF p_name)
-{
-    event_wrapper *p_event = (event_wrapper *)STD_MALLOC( sizeof(struct event_wrapper) );
-
-    int stat = pthread_mutex_init(&p_event->mutex, &mutex_attr_for_cond_wait);
-    assert(stat == 0);
-  
-    stat = pthread_cond_init(&p_event->cond, &cond_attr);
-    assert(stat == 0);
-
-    p_event->man_reset_flag = man_reset_flag;
-    p_event->state = initial_state_flag;
-    p_event->n_wait = 0;
-
-    return (VmEventHandle)p_event;
-}
-
-BOOL vm_destroy_event(VmEventHandle hEvent)
-{
-    struct timespec ts;
-    event_wrapper *p_event = (event_wrapper *)hEvent;
-
-    int xx = pthread_mutex_lock(&p_event->mutex);
-    assert(xx == 0);
-    // no threads in the wait set
-    if (p_event->n_wait == 0) goto success;
-
-    // no chance to release waited threads
-    if (p_event->state == 0) goto fail;
-
-    if (p_event->man_reset_flag == 0) {
-        // event is in automatic state so not more than one thread can be released
-        if (p_event->n_wait > 1) goto fail;
-        p_event->man_reset_flag = 1;
-    }
-
-    init_timespec(ts, 1000);
-
-    do {
-        int stat = pthread_cond_timedwait(&p_event->cond, &p_event->mutex, &ts);
-        assert(stat != EINVAL);
-        // ensure that the stat is still signaling
-        if (stat == ETIMEDOUT && p_event->state == 0 && p_event->n_wait != 0)
-            goto fail;
-    } while (p_event->n_wait != 0);
-
-success:
-    xx = pthread_mutex_unlock(&p_event->mutex);
-    assert(xx == 0);
-    STD_FREE(p_event);
-    return 1;
-
-fail:
-    xx = pthread_mutex_unlock(&p_event->mutex);
-    assert(xx == 0);
-    return 0;
-}
-
-BOOL vm_reset_event(VmEventHandle hEvent)
-{
-  event_wrapper *p_event = (event_wrapper *)hEvent;
-
-  assert(p_event);
-  int xx = pthread_mutex_lock(&p_event->mutex);
-  assert(xx == 0);
-  p_event->state = 0;
-  xx = pthread_mutex_unlock(&p_event->mutex);
-  assert(xx == 0);
-  return 1;
-}
-
-
-BOOL vm_set_event(VmEventHandle hEvent)
-{
-  event_wrapper *p_event = (event_wrapper *)hEvent;
-
-  assert(p_event);
-  int stat = pthread_mutex_lock(&p_event->mutex);
-  assert(stat == 0);
-
-  p_event->state = 1;
-
-  stat = pthread_cond_broadcast(&p_event->cond);
-  assert(stat == 0);
-
-  stat = pthread_mutex_unlock(&p_event->mutex);
-  assert(stat == 0);
-  return 1;
-}
-
-void vm_yield() {
-    sched_yield();
-}
-
-DWORD vm_wait_for_single_object(VmEventHandle hHandle, DWORD dwMillisec)
-{
-  if (dwMillisec < 10)
-    return WAIT_TIMEOUT;
-
-  struct timespec ts;
-  init_timespec(ts, dwMillisec);
-
-  event_wrapper *p_event = (event_wrapper *)hHandle;
-  assert(p_event);
-
-  int stat = pthread_mutex_lock(&p_event->mutex);
-  assert(stat == 0);
-
-  int wait_status = WAIT_OBJECT_0;
-
-  while (1)
-    {
-      if (p_event->state != 0)
-          break;
-      
-      ++p_event->n_wait;
-      wait_status = pthread_cond_timedwait(&p_event->cond, 
-                                           &p_event->mutex,
-                                           &ts );
-      --p_event->n_wait;
-
-      assert(wait_status != EINVAL);
-      if (wait_status == ETIMEDOUT)
-        break;
-      if (wait_status == 0)
-        break;
-    }
-
-  if (p_event->man_reset_flag == 0)
-      p_event->state = 0;
-
-  stat = pthread_mutex_unlock(&p_event->mutex);
-  assert(stat == 0);
-
-  if (wait_status == ETIMEDOUT)
-    return WAIT_TIMEOUT;
-
-  if (wait_status == 0)
-      return WAIT_OBJECT_0;
-
-  return WAIT_TIMEOUT;  
-}
-
-DWORD vm_wait_for_multiple_objects(DWORD numobj, const VmEventHandle *hHandle, BOOL waitAll, DWORD dwMillisec)
-{
-    DWORD ret = 0;
-    assert(waitAll);
-    assert(dwMillisec == INFINITE);
-    
-    for(unsigned int i = 0; i < numobj; i++) {
-        ret = vm_wait_for_single_object((VmEventHandle)hHandle[i], dwMillisec);
-        if (ret != WAIT_OBJECT_0)
-            return ret;
-    }
-    return ret;
-}
-
-void Sleep(DWORD msec)
-{
-  if (msec < 1000){
-    sched_yield();
-    return;
-  }
-
-  unsigned int zz = msec/1000;
-
-  sleep(zz);
-
-}
-
-
-void SleepEx(DWORD time, bool UNREF bb)
-{
-  Sleep(time);
-}
-
-void vm_endthreadex(int UNREF zz)
-{
-    // on linux, this is a nop,
-    // call_the_run_method() simply returns into the linux kernel
-}
-
-void vm_endthread(void )
-{
-    // on linux, this is a nop,
-    // call_the_run_method() simply returns into the linux kernel
-}
-
-/****************************************
- *  Moved from stubs.h
- *  Some function need to be implemented
- ****************************************/
- 
-pthread_t GetCurrentThreadId (void)
-{
-    return pthread_self();
-}
-
-/*
- * Need to implement (?)
- */
-BOOL DuplicateHandle(VmEventHandle UNREF aa, VmEventHandle UNREF bb, 
-                     VmEventHandle UNREF cc, VmEventHandle * UNREF dd,
-                     DWORD UNREF ee, BOOL UNREF ff, DWORD UNREF gg)
-{
-  return TRUE;
-}
-
-/*
- * Need to implement (?)
- */
-VmEventHandle GetCurrentProcess(void)
-{
-  return 0;
-}
-
-/*
- * Need to implement (?)
- */
-VmEventHandle GetCurrentThread(void)
-{
-  return 0;
-}

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/linux/signals_em64t.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/linux/signals_em64t.cpp?rev=434076&r1=434075&r2=434076&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/linux/signals_em64t.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/linux/signals_em64t.cpp Wed Aug 23 09:48:41 2006
@@ -231,8 +231,9 @@
 }
 
 /*
+ * MOVED TO PORT, DO NOT USE USR2
  * USR2 signal used to yield the thread at suspend algorithm
- */ 
+ * 
  
 void yield_other_handler(int signum, siginfo_t* info, void* context) {
 
@@ -263,7 +264,7 @@
 
     DIE("Cannot find Java thread using signal context");
 }
-
+*/
 
 /*
 See function initialize_signals() below first please.
@@ -373,12 +374,14 @@
     //behaviour, which is different from BSD. But glibc2 in Linux
     //implements BSD semantics.
     struct sigaction sa;
+/*
+ * MOVED TO PORT, DO NOT USE USR2
 
     sigemptyset(&sa.sa_mask);
     sa.sa_flags = SA_SIGINFO | SA_RESTART;
     sa.sa_sigaction = yield_other_handler;
     sigaction(SIGUSR2, &sa, NULL);
-
+*/
     sigemptyset(&sa.sa_mask);
     sa.sa_flags = SA_SIGINFO;
     sa.sa_sigaction = &null_java_reference_handler;

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/linux/signals_ia32.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/linux/signals_ia32.cpp?rev=434076&r1=434075&r2=434076&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/linux/signals_ia32.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/linux/signals_ia32.cpp Wed Aug 23 09:48:41 2006
@@ -74,9 +74,6 @@
 static int sc_nest = -1;
 static uint32 exam_point;
 
-bool SuspendThread(unsigned UNREF xx){ return 0; }
-bool ResumeThread(unsigned UNREF xx){ return 1; }
-
 static void linux_sigcontext_to_regs(Registers* regs, ucontext_t *uc)
 {
     regs->eax = uc->uc_mcontext.gregs[REG_EAX];
@@ -351,8 +348,8 @@
         return;
     } else {
         if (is_unwindable()) {
-            if (tmn_is_suspend_enabled()) {
-                tmn_suspend_disable();
+            if (hythread_is_suspend_enabled()) {
+                hythread_suspend_disable();
             }
             throw_from_sigcontext(
                 uc, env->java_lang_StackOverflowError_Class);
@@ -503,10 +500,13 @@
 }
 
 /*
+ * MOVED TO PORT, DO NOT USE USR2
  * USR2 signal used to yield the thread at suspend algorithm
- */ 
+ * 
  
 void yield_other_handler(int signum, siginfo_t* info, void* context) {
+    // FIXME: integration, should be moved to port or OpenTM
+    
     Global_Env *env = VM_Global_State::loader_env;
     if (env->shutting_down != 0) {
         // Too late for this kind of signals
@@ -535,8 +535,9 @@
     }
 
     DIE("Cannot find Java thread using signal context");
-}
 
+}
+*/
 void initialize_signals()
 {
     // First figure out how to locate the context in the
@@ -548,12 +549,14 @@
     //behaviour, which is different from BSD. But glibc2 in Linux
     //implements BSD semantics.
     struct sigaction sa;
+/*
+ * MOVED TO PORT, DO NOT USE USR2
 
     sigemptyset(&sa.sa_mask);
     sa.sa_flags = SA_SIGINFO | SA_RESTART;
     sa.sa_sigaction = yield_other_handler;
     sigaction(SIGUSR2, &sa, NULL);
-
+*/
     sigemptyset(&sa.sa_mask);
     sa.sa_flags = SA_SIGINFO | SA_ONSTACK;
     sa.sa_sigaction = &null_java_reference_handler;

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/linux/stubs.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/linux/stubs.cpp?rev=434076&r1=434075&r2=434076&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/linux/stubs.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/linux/stubs.cpp Wed Aug 23 09:48:41 2006
@@ -28,14 +28,6 @@
 #include "method_lookup.h"
 #include "open/gc.h"
 
-// void vm_thread_enumerate_from_native(VM_thread *thread); // unused anywhere
-
-BOOL port_CloseHandle(VmEventHandle UNREF hh)
-{
-    ABORT("Not implemented");
-    return 0;
-}
-
 //wgs: I wonder if we could give it a errno
 #if defined (__INTEL_COMPILER) 
 #pragma warning( push )
@@ -65,23 +57,7 @@
     ABORT("Not implemented");
 }
 
-BOOL GetThreadContext(VmThreadHandle UNREF hthread, const CONTEXT * UNREF lpcontext)
-{
-  ABORT("Not implemented");
-  return 0;
-}
 
-BOOL SetThreadContext(VmThreadHandle UNREF hh, const CONTEXT * UNREF cc)
-{
-  ABORT("Not implemented");
-  return 0;
-}
-
-int VM_thread::setPriority(int UNREF priority)
-{
-    ABORT("Not implemented");
-    return 0;
-}
 
 #include <sys/time.h>
 __uint64 GetTickCount(void)
@@ -101,33 +77,8 @@
     }
 }
 
-CriticalSection::CriticalSection()
-{
-    m_cs = (void *) new CRITICAL_SECTION;
-    InitializeCriticalSection((CRITICAL_SECTION *)m_cs);
-}
-
-CriticalSection::~CriticalSection()
-{
-    DeleteCriticalSection((CRITICAL_SECTION *)m_cs);
-    delete (CRITICAL_SECTION *)m_cs;
-}
-
-void CriticalSection::lock()
-{
-    EnterCriticalSection((CRITICAL_SECTION *)m_cs);
-}
-
-void CriticalSection::unlock()
-{
-    LeaveCriticalSection((CRITICAL_SECTION *)m_cs);
-}
-
-bool CriticalSection::tryLock()
-{
-    return TryEnterCriticalSection((CRITICAL_SECTION *)m_cs) ? true : false;
-}
-
+/* TODO reimplement this code while implementing IPF support.
+ 
 VmRegisterContext::VmRegisterContext()
 {
     CONTEXT *ctx = new CONTEXT;
@@ -161,6 +112,7 @@
     ((CONTEXT *)_pcontext)->ContextFlags = old;
 }
 
+
 void VmRegisterContext::getContext(VM_thread *thread)
 {
     CONTEXT *ctx = (CONTEXT *) _pcontext;
@@ -250,3 +202,4 @@
     ABORT("Not supported"); // shouldn't be called under IA-32
 #endif // !_IPF_
 }
+*/

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/natives_support.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/natives_support.cpp?rev=434076&r1=434075&r2=434076&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/natives_support.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/natives_support.cpp Wed Aug 23 09:48:41 2006
@@ -33,7 +33,7 @@
 #include "lock_manager.h"
 #include "jni_direct.h" // FIXME ???? Can we use it here ????
 #include "open/vm_util.h"
-#include "open/thread.h"
+
 #include "jni_types.h"
 
 #define LOG_DOMAIN "natives"
@@ -113,7 +113,7 @@
 
         JavaVM* vm = jni_native_intf->vm; // FIXME ???? Can we use it here ????
 
-        assert(tmn_is_suspend_enabled());
+        assert(hythread_is_suspend_enabled());
         jint res = onload_func(vm, NULL);
 
         return res;
@@ -150,7 +150,7 @@
 
         JavaVM* vm = jni_native_intf->vm; // FIXME ???? Can we use it here ????
 
-        assert(tmn_is_suspend_enabled());
+        assert(hythread_is_suspend_enabled());
         onunload_func(vm, NULL);
         return;
     }

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/vm_strings.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/vm_strings.cpp?rev=434076&r1=434075&r2=434076&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/vm_strings.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/vm_strings.cpp Wed Aug 23 09:48:41 2006
@@ -232,7 +232,7 @@
 // Return: str gets the string object, buf points to buffer
 static void string_create(unsigned unicode_length, bool eight_bit, ManagedObject** str, StringBuffer* buf)
 {
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
 
     Global_Env *global_env = VM_Global_State::loader_env;
     Class *clss;
@@ -256,7 +256,7 @@
 
     VTable *jls_vtable = VM_Global_State::loader_env->JavaLangString_VTable;
 
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
     GcFrame gc(2);
     gc.add_object((ManagedObject**)&array);
 
@@ -330,7 +330,7 @@
 
 ObjectHandle string_create_from_utf8_h(const char* buf, unsigned length)
 {
-    assert(tmn_is_suspend_enabled());
+    assert(hythread_is_suspend_enabled());
     tmn_suspend_disable();
     ObjectHandle res = oh_allocate_local_handle();
     res->object = string_create_from_utf8(buf, length);
@@ -340,7 +340,7 @@
 
 ObjectHandle string_create_from_unicode_h(const uint16* buf, unsigned length)
 {
-    assert(tmn_is_suspend_enabled());
+    assert(hythread_is_suspend_enabled());
     tmn_suspend_disable();
     ObjectHandle res = oh_allocate_local_handle();
     res->object = string_create_from_unicode(buf, length);
@@ -355,7 +355,7 @@
 // returns length in characters
 unsigned string_get_length(ManagedObject* str)
 {
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
     assert(str);
 
     if (f_count_offset == 0) init_fields();
@@ -366,7 +366,7 @@
 // returns length in characters
 unsigned string_get_length_h(ObjectHandle str)
 {
-    assert(tmn_is_suspend_enabled());
+    assert(hythread_is_suspend_enabled());
     tmn_suspend_disable();
     assert(str && str->object);
     unsigned len = string_get_length(str->object);
@@ -390,7 +390,7 @@
 // returns the length of the UTF8 encoding of the string
 unsigned string_get_utf8_length_h(ObjectHandle str)
 {
-    assert(tmn_is_suspend_enabled());
+    assert(hythread_is_suspend_enabled());
     tmn_suspend_disable();
     assert(str && str->object);
     unsigned utf8_len = string_get_utf8_length(str->object);
@@ -473,7 +473,7 @@
 // Caller should free the result
 const char* string_get_utf8_chars_h(ObjectHandle string)
 {
-    assert(tmn_is_suspend_enabled());
+    assert(hythread_is_suspend_enabled());
     tmn_suspend_disable();
     assert(string && string->object);
     const char* res = string_get_utf8_chars(string->object);
@@ -497,7 +497,7 @@
 // Copy the characters offset..offset+count-1 into buf
 void string_get_unicode_region_h(ObjectHandle str, unsigned offset, unsigned count, uint16* buf)
 {
-    assert(tmn_is_suspend_enabled());
+    assert(hythread_is_suspend_enabled());
     tmn_suspend_disable();
     assert(str && str->object && offset+count<=string_get_length(str->object));
     string_get_unicode_region(str->object, offset, count, buf);
@@ -519,7 +519,7 @@
 // Encode characters offset..offset+count-1 into UTF8 and place in buf
 void string_get_utf8_region_h(ObjectHandle str, unsigned offset, unsigned count, char* buf)
 {
-    assert(tmn_is_suspend_enabled());
+    assert(hythread_is_suspend_enabled());
     tmn_suspend_disable();
     assert(str && str->object && offset+count<=string_get_length(str->object));
     string_get_utf8_region(str->object, offset, count, buf);
@@ -534,7 +534,7 @@
 VMEXPORT // temporary solution for interpreter unplug
 Java_java_lang_String *vm_instantiate_cp_string_resolved(String *str)
 {
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
     Global_Env *env = VM_Global_State::loader_env;
     if (env->compress_references) {
         if (str->intern.compressed_ref != 0) {
@@ -550,7 +550,7 @@
     if (!lang_string) { // if OutOfMemory
         return NULL;
     }
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
 
     // Atomically update the string structure since some other thread might be trying to make the same update.
     // The GC won't be able to enumerate here since GC is disabled, so there are no race conditions with GC.

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/em64t/nt_exception_filter.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/em64t/nt_exception_filter.cpp?rev=434076&r1=434075&r2=434076&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/em64t/nt_exception_filter.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/em64t/nt_exception_filter.cpp Wed Aug 23 09:48:41 2006
@@ -36,7 +36,7 @@
 #include "exception_filter.h"
 
 #include "thread_generic.h"
-#include "open/thread.h"
+
 
 
 // Afremov Pavel 20050117
@@ -63,7 +63,7 @@
     }
 
     // since we are now sure NPE occured in java code, gc should also have been disabled
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
 
     
     volatile ManagedObject *exc = 0;

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/ia32/nt_exception_filter.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/ia32/nt_exception_filter.cpp?rev=434076&r1=434075&r2=434076&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/ia32/nt_exception_filter.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/ia32/nt_exception_filter.cpp Wed Aug 23 09:48:41 2006
@@ -18,11 +18,8 @@
  * @version $Revision: 1.1.2.1.4.4 $
  */  
 
-
 #include "cxxlog.h"
 #include "method_lookup.h"
-#include "m2n.h"
-#include "open/thread.h"
 #include "Environment.h"
 #include "exceptions.h"
 
@@ -320,8 +317,8 @@
             run_default_handler = false;
         } else if (code == STATUS_STACK_OVERFLOW) {
             if (is_unwindable()) {
-                if (tmn_is_suspend_enabled()) {
-                    tmn_suspend_disable();
+                if (hythread_is_suspend_enabled()) {
+                    hythread_suspend_disable();
                 }
                 run_default_handler = false;
             } else {
@@ -388,7 +385,7 @@
     }
 
     // since we are now sure HWE occured in java code, gc should also have been disabled
-    assert(!tmn_is_suspend_enabled());
+    assert(!hythread_is_suspend_enabled());
     
     Global_Env *env = VM_Global_State::loader_env;
     Class *exc_clss = 0;

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/include/java_lang_thread_nt.h
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/include/java_lang_thread_nt.h?rev=434076&r1=434075&r2=434076&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/include/java_lang_thread_nt.h (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/include/java_lang_thread_nt.h Wed Aug 23 09:48:41 2006
@@ -28,23 +28,3 @@
 #define J_V_M_T_I_E_H NULL
 #define E_H_RECOMP NULL
 
-#define OS_THREAD_INIT_1()
-
-#define OS_SYNC_SUPPORT()
-
-
-#define OS_THREAD_INIT_2() \
-    p_TLS_vmthread = p_vm_thread; 
-
-
-#define THREAD_CLEANUP() 
-
-#define BEGINTHREADEX_SUSPENDSTATE 1
-
-#define SET_THREAD_DATA_MACRO()
-
-    
-#define THREAD_ACTIVE_IN_OS_MACRO()
-
-#define CHECK_HIJACK_SUPPORT_MACRO()
-

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/include/platform.h
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/include/platform.h?rev=434076&r1=434075&r2=434076&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/include/platform.h (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/include/platform.h Wed Aug 23 09:48:41 2006
@@ -26,8 +26,6 @@
 
 typedef unsigned long DWORD;
 typedef int BOOL;
-typedef void *VmEventHandle;
-typedef VmEventHandle VmThreadHandle;
 
 #ifndef FMT64
 #define FMT64 "I64"

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/include/platform_lowlevel.h
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/include/platform_lowlevel.h?rev=434076&r1=434075&r2=434076&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/include/platform_lowlevel.h (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/include/platform_lowlevel.h Wed Aug 23 09:48:41 2006
@@ -40,37 +40,6 @@
 
 #include "platform.h"
 
-// moved from util_log.h, there should be better place for this definition.
-
-typedef unsigned pthread_t; // see documentation on _beginthread
-typedef CRITICAL_SECTION pthread_mutex_t;
-typedef struct pthread_mutexattr_t pthread_mutexattr_t;
-typedef void *sem_t;
-
-inline pthread_t pthread_self() {
-    return GetCurrentThreadId();
-}
-
-inline int pthread_mutex_init (pthread_mutex_t *mutex, pthread_mutexattr_t *attr) { 
-    InitializeCriticalSection(mutex);
-    return 0; 
-}
-
-inline int pthread_mutex_destroy (pthread_mutex_t *mutex) {
-    DeleteCriticalSection(mutex);
-    return 0;
-}
-
-inline int pthread_mutex_lock (pthread_mutex_t *mutex) {
-    EnterCriticalSection(mutex);
-    return 0;
-}
-
-inline int pthread_mutex_unlock (pthread_mutex_t *mutex) {
-    LeaveCriticalSection(mutex);
-    return 0;
-}
-
 inline void disable_assert_dialogs() {
     _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE);
     _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDOUT);
@@ -94,28 +63,5 @@
     long tv_sec;
     long tv_nsec;
 };
-
-inline int sem_init(sem_t *semaphore, int pshared, unsigned int value) {
-    *semaphore = CreateSemaphore(NULL, value, INFINITE, NULL);
-    return 0;
-}
-
-inline int sem_destroy(sem_t *sem) {
-    return CloseHandle(*sem);
-}
-
-inline int sem_post(sem_t *semaphore) {
-    return ReleaseSemaphore(*semaphore, 1, NULL);
-}
-
-inline int sem_wait(sem_t *semaphore) {
-    return WaitForSingleObject(*semaphore, INFINITE);
-}
-
-inline int sem_timedwait(sem_t *semaphore,
-               const struct timespec *abs_timeout) {
-    return WaitForSingleObject(*semaphore, abs_timeout->tv_sec*1000);
-}
-
 
 #endif // _platform_lowlevel_H_

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/include/vm_process.h
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/include/vm_process.h?rev=434076&r1=434075&r2=434076&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/include/vm_process.h (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/include/vm_process.h Wed Aug 23 09:48:41 2006
@@ -35,68 +35,8 @@
 #include <windows.h>
 #include <assert.h>
 
-inline VmEventHandle vm_beginthreadex( void * security, unsigned stack_size, unsigned(__stdcall *start_address)(void *), void *arglist, unsigned initflag, pthread_t *thrdaddr)
-{
-    return (VmEventHandle) _beginthreadex(security, stack_size, start_address, arglist, initflag, thrdaddr);
-}
 
-inline void vm_endthreadex(int value)
-{
-    _endthreadex(value);
-}
-
-inline VmEventHandle vm_beginthread(void(__cdecl *start_address)(void *), unsigned stack_size, void *arglist)
-{
-    uintptr_t result = _beginthread(start_address, stack_size, arglist);
-    // on windows error code is -1 !!!
-    if (result == -1L)
-        return NULL;
-
-    return (VmEventHandle) result;
-}
-
-inline void vm_endthread(void)
-{
-    _endthread();
-}
-
-inline VmEventHandle vm_create_event(int *lpEventAttributes, unsigned int bManualReset, unsigned int bInitialState, char *lpName)
-{
-    assert(lpEventAttributes == NULL);
-    return CreateEvent(NULL, bManualReset, bInitialState, lpName);
-}
-
-inline BOOL vm_destroy_event( VmEventHandle handle )
-{
-    assert( handle != INVALID_HANDLE_VALUE );
-    return CloseHandle( handle ) == FALSE ? 0 : 1;
-}
-
-inline BOOL vm_reset_event(VmEventHandle hEvent)
-{
-    return ResetEvent(hEvent);
-}
-
-inline BOOL vm_set_event(VmEventHandle hEvent)
-{
-    return SetEvent(hEvent);
-}
-
-inline void vm_yield() {
-    Sleep(0);
-}
-
-inline DWORD vm_wait_for_single_object(VmEventHandle hHandle, DWORD dwMilliseconds)
-{
-    return WaitForSingleObject(hHandle, dwMilliseconds);
-}
-
-inline DWORD vm_wait_for_multiple_objects(DWORD num, const VmEventHandle * handle, BOOL flag, DWORD dwMilliseconds)
-{
-    return WaitForMultipleObjects(num, handle, flag, dwMilliseconds);
-}
-
-inline void vm_terminate_thread(VmThreadHandle thrdaddr) {
+/*inline void vm_terminate_thread(VmThreadHandle thrdaddr) {
     TerminateThread(thrdaddr,0);    
-}
+}*/
 #endif

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/ipf/nt_exception_filter.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/ipf/nt_exception_filter.cpp?rev=434076&r1=434075&r2=434076&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/ipf/nt_exception_filter.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/ipf/nt_exception_filter.cpp Wed Aug 23 09:48:41 2006
@@ -17,10 +17,6 @@
  * @author Intel, Evgueni Brevnov
  * @version $Revision: 1.1.2.1.4.3 $
  */  
-
-#define LOG_DOMAIN "vm.exn_filter"
-#include "cxxlog.h"
-
 #include "platform_lowlevel.h"
 
 #include "Class.h"
@@ -33,7 +29,7 @@
 #include "open/vm_util.h"
 #include "compile.h"
 #include "../../../arch/ipf/include/vm_ipf.h"
-#include "open/thread.h"
+
 
 #include "exception_filter.h"
 

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/nt_platform_utils.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/nt_platform_utils.cpp?rev=434076&r1=434075&r2=434076&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/nt_platform_utils.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/nt_platform_utils.cpp Wed Aug 23 09:48:41 2006
@@ -199,33 +199,6 @@
 }
 
 
-CriticalSection::CriticalSection()
-{
-    m_cs = (void *) new CRITICAL_SECTION;
-    InitializeCriticalSection((CRITICAL_SECTION *)m_cs);
-}
-
-CriticalSection::~CriticalSection()
-{
-    DeleteCriticalSection((CRITICAL_SECTION *)m_cs);
-    delete (CRITICAL_SECTION *)m_cs;
-}
-
-void CriticalSection::lock()
-{
-    EnterCriticalSection((CRITICAL_SECTION *)m_cs);
-}
-
-void CriticalSection::unlock()
-{
-    LeaveCriticalSection((CRITICAL_SECTION *)m_cs);
-}
-
-bool CriticalSection::tryLock()
-{
-    return TryEnterCriticalSection((CRITICAL_SECTION *)m_cs) ? true : false;
-}
-
 VmRegisterContext::VmRegisterContext()
 {
     CONTEXT *ctx = new CONTEXT;
@@ -259,6 +232,7 @@
     ((CONTEXT *)_pcontext)->ContextFlags = old;
 }
 
+/*  FIXME integration uncomment and fix
 void VmRegisterContext::getContext(VM_thread *thread)
 {
     CONTEXT *ctx = (CONTEXT *) _pcontext;
@@ -354,4 +328,4 @@
 {
     return SetThreadPriority(thread_handle, priority);
 }
-
+*/



Mime
View raw message