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 2007/02/23 02:01:27 UTC

svn commit: r510740 - /harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/em64t/base/jit_lock_rt_support_em64t.cpp

Author: gshimansky
Date: Thu Feb 22 17:01:26 2007
New Revision: 510740

URL: http://svn.apache.org/viewvc?view=rev&rev=510740
Log:
Applied HARMONY-3227 [jvmti] significant performance degradation when turning-on jvmti on linux em64t

Tests passed on SuSE9 and Gentoo x86_64


Modified:
    harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/em64t/base/jit_lock_rt_support_em64t.cpp

Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/em64t/base/jit_lock_rt_support_em64t.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/em64t/base/jit_lock_rt_support_em64t.cpp?view=diff&rev=510740&r1=510739&r2=510740
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/em64t/base/jit_lock_rt_support_em64t.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/em64t/base/jit_lock_rt_support_em64t.cpp Thu Feb 22 17:01:26 2007
@@ -41,33 +41,35 @@
 #include "dump.h"
 
 static LilCodeStub * rth_get_lil_monitor_enter_generic(LilCodeStub * cs) {
-if(!VM_Global_State::loader_env->TI->isEnabled()) {
-    return lil_parse_onto_end(cs,
-        "out platform:ref:g4;"
-        "o0 = l0;"
-        "call %0i;"
-        "jc r!=%1i,slow_path;"
-        "ret;"
-        ":slow_path;"
-        "push_m2n 0, 0;"
-        "out platform:ref:void;"
-        "o0 = l0;"
-        "call %2i;"
-        "pop_m2n;"
-        "ret;",
-        vm_monitor_try_enter,
-        TM_ERROR_NONE,
-        vm_monitor_enter);
-} else {
-    return lil_parse_onto_end(cs,
-        "push_m2n 0, 0;"
-        "out platform:ref:void;"
-        "o0 = l0;"
-        "call %0i;"
-        "pop_m2n;"
-        "ret;",
-        vm_monitor_enter);
-}
+    if(VM_Global_State::loader_env->TI->isEnabled() &&
+            VM_Global_State::loader_env->TI->get_global_capability(
+                            DebugUtilsTI::TI_GC_ENABLE_MONITOR_EVENTS) ) {
+        return lil_parse_onto_end(cs,
+            "push_m2n 0, 0;"
+            "out platform:ref:void;"
+            "o0 = l0;"
+            "call %0i;"
+            "pop_m2n;"
+            "ret;",
+            vm_monitor_enter);
+    } else {
+        return lil_parse_onto_end(cs,
+            "out platform:ref:g4;"
+            "o0 = l0;"
+            "call %0i;"
+            "jc r!=%1i,slow_path;"
+            "ret;"
+            ":slow_path;"
+            "push_m2n 0, 0;"
+            "out platform:ref:void;"
+            "o0 = l0;"
+            "call %2i;"
+            "pop_m2n;"
+            "ret;",
+            vm_monitor_try_enter,
+            TM_ERROR_NONE,
+            vm_monitor_enter);
+    }
 }
 
 NativeCodePtr rth_get_lil_monitor_enter_static() {    
@@ -185,30 +187,32 @@
 /*    MONITOR EXIT RUNTIME SUPPORT    */
 
 static LilCodeStub * rth_get_lil_monitor_exit_generic(LilCodeStub * cs) {
-if(!VM_Global_State::loader_env->TI->isEnabled()) {
-    return lil_parse_onto_end(cs,
-        "call %0i;"
-        "jc r!=%1i, illegal_monitor;"
-        "ret;"
-        ":illegal_monitor;"
-        "out managed::void;"
-        "call.noret %2i;",
-        vm_monitor_try_exit,
-        TM_ERROR_NONE,
-        lil_npc_to_fp(exn_get_rth_throw_illegal_monitor_state()));
-}else{
-    return lil_parse_onto_end(cs,
-        "locals 1;"
-        "l0 = o0;"
-        "push_m2n 0, %0i;"
-        "out platform:ref:void;"
-        "o0 = l0;"
-        "call %1i;"
-        "pop_m2n;"
-        "ret;",
-        FRAME_NON_UNWINDABLE,
-        vm_monitor_exit);
-}
+    if(VM_Global_State::loader_env->TI->isEnabled() &&
+            VM_Global_State::loader_env->TI->get_global_capability(
+                            DebugUtilsTI::TI_GC_ENABLE_MONITOR_EVENTS) ) {
+        return lil_parse_onto_end(cs,
+            "locals 1;"
+            "l0 = o0;"
+            "push_m2n 0, %0i;"
+            "out platform:ref:void;"
+            "o0 = l0;"
+            "call %1i;"
+            "pop_m2n;"
+            "ret;",
+            FRAME_NON_UNWINDABLE,
+            vm_monitor_exit);
+    } else {
+        return lil_parse_onto_end(cs,
+            "call %0i;"
+            "jc r!=%1i, illegal_monitor;"
+            "ret;"
+            ":illegal_monitor;"
+            "out managed::void;"
+            "call.noret %2i;",
+            vm_monitor_try_exit,
+            TM_ERROR_NONE,
+            lil_npc_to_fp(exn_get_rth_throw_illegal_monitor_state()));
+    }
 }
 
 NativeCodePtr rth_get_lil_monitor_exit_static() {