You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by gs...@apache.org on 2006/12/13 01:55:09 UTC

svn commit: r486439 - /harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/jit_lock_rt_support_ia32.cpp

Author: gshimansky
Date: Tue Dec 12 16:55:09 2006
New Revision: 486439

URL: http://svn.apache.org/viewvc?view=rev&rev=486439
Log:
Applied HARMONY-2440 [drlvm][jvmti] Disable monitor_exit fast path only on can_generate_monitor_events capability

Tests passed on Ubuntu6 x86, windows XP and SuSE9 x86_64


Modified:
    harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/jit_lock_rt_support_ia32.cpp

Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/jit_lock_rt_support_ia32.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/jit_lock_rt_support_ia32.cpp?view=diff&rev=486439&r1=486438&r2=486439
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/jit_lock_rt_support_ia32.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/jit_lock_rt_support_ia32.cpp Tue Dec 12 16:55:09 2006
@@ -191,20 +191,21 @@
     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;
-// skip fast path if ti is enabled
-// so all TI events will be generated
-if(!VM_Global_State::loader_env->TI->isEnabled()) {
-    ss = alu(ss, add_opc, ecx_opnd, Imm_Opnd(header_offset));
-    ss = gen_monitor_exit_helper(ss, ecx_opnd);
-} else {
-    ss = gen_setup_j2n_frame(ss);
-    ss = push(ss,  M_Base_Opnd(esp_reg, m2n_sizeof_m2n_frame));
+    // skip fast path if can_generate_monitor_events capability
+    // was requested, so all TI events will be generated
+    if (!VM_Global_State::loader_env->TI->get_global_capability(
+                DebugUtilsTI::TI_GC_ENABLE_MONITOR_EVENTS)) {
+        ss = alu(ss, add_opc, ecx_opnd, Imm_Opnd(header_offset));
+        ss = gen_monitor_exit_helper(ss, ecx_opnd);
+    } else {
+        ss = gen_setup_j2n_frame(ss);
+        ss = push(ss,  M_Base_Opnd(esp_reg, m2n_sizeof_m2n_frame));
 
-    ss = call(ss, (char *)oh_convert_to_local_handle);
-    ss = alu(ss, add_opc, esp_opnd, Imm_Opnd(4)); // pop parameters
-    ss = gen_monitorexit_slow_path_helper(ss, eax_opnd);
-    ss = gen_pop_j2n_frame(ss);
-}
+        ss = call(ss, (char *)oh_convert_to_local_handle);
+        ss = alu(ss, add_opc, esp_opnd, Imm_Opnd(4)); // pop parameters
+        ss = gen_monitorexit_slow_path_helper(ss, eax_opnd);
+        ss = gen_pop_j2n_frame(ss);
+    }
     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;