# HG changeset patch # User thartmann # Date 1530263318 -7200 # Node ID 0d6ab24b6ad97015a64d7dee1dd2823327f5d11e # Parent c1e56891d76840c7e7dd376ac965f1fd0627912f 8205499: C1 temporary code buffers are not removed with -XX:+UseDynamicNumberOfCompilerThreads Summary: Deallocate C1 code buffers in the compiler thread destructor. Reviewed-by: neliasso, kvn, mdoerr diff -r c1e56891d768 -r 0d6ab24b6ad9 src/hotspot/share/compiler/compileBroker.cpp --- a/src/hotspot/share/compiler/compileBroker.cpp Thu Jun 28 21:58:23 2018 -0700 +++ b/src/hotspot/share/compiler/compileBroker.cpp Fri Jun 29 11:08:38 2018 +0200 @@ -1638,12 +1638,6 @@ * out to be a problem. */ void CompileBroker::shutdown_compiler_runtime(AbstractCompiler* comp, CompilerThread* thread) { - // Free buffer blob, if allocated - if (thread->get_buffer_blob() != NULL) { - MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag); - CodeCache::free(thread->get_buffer_blob()); - } - if (comp->should_perform_shutdown()) { // There are two reasons for shutting down the compiler // 1) compiler runtime initialization failed diff -r c1e56891d768 -r 0d6ab24b6ad9 src/hotspot/share/runtime/thread.cpp --- a/src/hotspot/share/runtime/thread.cpp Thu Jun 28 21:58:23 2018 -0700 +++ b/src/hotspot/share/runtime/thread.cpp Fri Jun 29 11:08:38 2018 +0200 @@ -3298,6 +3298,11 @@ } CompilerThread::~CompilerThread() { + // Free buffer blob, if allocated + if (get_buffer_blob() != NULL) { + MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag); + CodeCache::free(get_buffer_blob()); + } // Delete objects which were allocated on heap. delete _counters; }