You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ge...@apache.org on 2006/11/03 19:33:53 UTC

svn commit: r470936 - in /incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/jvmti: jvmti_event.cpp jvmti_step.cpp

Author: geirm
Date: Fri Nov  3 10:33:52 2006
New Revision: 470936

URL: http://svn.apache.org/viewvc?view=rev&rev=470936
Log:
HARMONY-1891

[drlvm][jvmti] VM hangs after multiple Single Step event enabling

Ubuntu 6 - smoke, c-unit, ~smoke


Modified:
    incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/jvmti/jvmti_event.cpp
    incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/jvmti/jvmti_step.cpp

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/jvmti/jvmti_event.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/jvmti/jvmti_event.cpp?view=diff&rev=470936&r1=470935&r2=470936
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/jvmti/jvmti_event.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/jvmti/jvmti_event.cpp Fri Nov  3 10:33:52 2006
@@ -1828,6 +1828,13 @@
             assert(JVMTI_ERROR_NONE == errorCode);
 
             vm_thread->ss_state->predicted_breakpoints = NULL;
+
+            // There is no need to set a breakpoint in a thread which
+            // is started inside of jvmti_send_thread_start_end_event() function.
+            // This function is called when no java code in the new thread is
+            // executed yet, so this function just sets single step state for this
+            // thread. When this thread will be ran, calling the first java method
+            // will set a breakpoint on the first bytecode if this mehod.
         }
     }
     else

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/jvmti/jvmti_step.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/jvmti/jvmti_step.cpp?view=diff&rev=470936&r1=470935&r2=470936
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/jvmti/jvmti_step.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/jvmti/jvmti_step.cpp Fri Nov  3 10:33:52 2006
@@ -906,6 +906,9 @@
 
     if( single_step_enabled ) {
         // single step is already enabled
+        tm_ret = hythread_resume_all(NULL);
+        if (TM_ERROR_NONE != tm_ret)
+            return JVMTI_ERROR_INTERNAL;
         return JVMTI_ERROR_NONE;
     }
 
@@ -968,6 +971,7 @@
         // single step is already disabled
         return JVMTI_ERROR_NONE;
     }
+
     // Suspend all threads except current
     IDATA tm_ret = hythread_suspend_all(&threads_iterator, NULL);
     if (TM_ERROR_NONE != tm_ret)
@@ -979,6 +983,9 @@
 
     if( !single_step_enabled ) {
         // single step is already disabled
+        tm_ret = hythread_resume_all(NULL);
+        if (TM_ERROR_NONE != tm_ret)
+            return JVMTI_ERROR_INTERNAL;
         return JVMTI_ERROR_NONE;
     }