--- a/hotspot/src/share/vm/runtime/thread.cpp Fri Oct 11 10:14:02 2013 -0700
+++ b/hotspot/src/share/vm/runtime/thread.cpp Thu Oct 10 15:44:12 2013 +0200
@@ -1454,7 +1454,6 @@
_interp_only_mode = 0;
_special_runtime_exit_condition = _no_async_condition;
_pending_async_exception = NULL;
- _is_compiling = false;
_thread_stat = NULL;
_thread_stat = new ThreadStatistics();
_blocked_on_compilation = false;
@@ -1815,7 +1814,8 @@
// Call Thread.exit(). We try 3 times in case we got another Thread.stop during
// the execution of the method. If that is not enough, then we don't really care. Thread.stop
// is deprecated anyhow.
- { int count = 3;
+ if (!is_Compiler_thread()) {
+ int count = 3;
while (java_lang_Thread::threadGroup(threadObj()) != NULL && (count-- > 0)) {
EXCEPTION_MARK;
JavaValue result(T_VOID);
@@ -1828,7 +1828,6 @@
CLEAR_PENDING_EXCEPTION;
}
}
-
// notify JVMTI
if (JvmtiExport::should_post_thread_life()) {
JvmtiExport::post_thread_end(this);
@@ -3239,6 +3238,7 @@
_counters = counters;
_buffer_blob = NULL;
_scanned_nmethod = NULL;
+ _compiler = NULL;
#ifndef PRODUCT
_ideal_graph_printer = NULL;
@@ -3255,6 +3255,7 @@
}
}
+
// ======= Threads ========
// The Threads class links together all active threads, and provides
@@ -3275,8 +3276,6 @@
// All JavaThreads
#define ALL_JAVA_THREADS(X) for (JavaThread* X = _thread_list; X; X = X->next())
-void os_stream();
-
// All JavaThreads + all non-JavaThreads (i.e., every thread in the system)
void Threads::threads_do(ThreadClosure* tc) {
assert_locked_or_safepoint(Threads_lock);