mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-25 13:54:38 +02:00
8015774: Add support for multiple code heaps
Support for segmentation of the code cache. Separate code heaps are created and used to store code of different types. Reviewed-by: kvn, iveresov, roland, anoll, egahlin, sla
This commit is contained in:
parent
b2620f89c3
commit
cd01de591a
51 changed files with 1756 additions and 680 deletions
|
@ -1747,9 +1747,11 @@ void CompileBroker::compiler_thread_loop() {
|
|||
// We need this HandleMark to avoid leaking VM handles.
|
||||
HandleMark hm(thread);
|
||||
|
||||
if (CodeCache::unallocated_capacity() < CodeCacheMinimumFreeSpace) {
|
||||
// the code cache is really full
|
||||
handle_full_code_cache();
|
||||
// Check if the CodeCache is full
|
||||
int code_blob_type = 0;
|
||||
if (CodeCache::is_full(&code_blob_type)) {
|
||||
// The CodeHeap for code_blob_type is really full
|
||||
handle_full_code_cache(code_blob_type);
|
||||
}
|
||||
|
||||
CompileTask* task = queue->get();
|
||||
|
@ -2079,7 +2081,7 @@ void CompileBroker::invoke_compiler_on_method(CompileTask* task) {
|
|||
* The CodeCache is full. Print out warning and disable compilation
|
||||
* or try code cache cleaning so compilation can continue later.
|
||||
*/
|
||||
void CompileBroker::handle_full_code_cache() {
|
||||
void CompileBroker::handle_full_code_cache(int code_blob_type) {
|
||||
UseInterpreter = true;
|
||||
if (UseCompiler || AlwaysCompileLoopMethods ) {
|
||||
if (xtty != NULL) {
|
||||
|
@ -2096,8 +2098,6 @@ void CompileBroker::handle_full_code_cache() {
|
|||
xtty->end_elem();
|
||||
}
|
||||
|
||||
CodeCache::report_codemem_full();
|
||||
|
||||
#ifndef PRODUCT
|
||||
if (CompileTheWorld || ExitOnFullCodeCache) {
|
||||
codecache_print(/* detailed= */ true);
|
||||
|
@ -2119,12 +2119,7 @@ void CompileBroker::handle_full_code_cache() {
|
|||
disable_compilation_forever();
|
||||
}
|
||||
|
||||
// Print warning only once
|
||||
if (should_print_compiler_warning()) {
|
||||
warning("CodeCache is full. Compiler has been disabled.");
|
||||
warning("Try increasing the code cache size using -XX:ReservedCodeCacheSize=");
|
||||
codecache_print(/* detailed= */ true);
|
||||
}
|
||||
CodeCache::report_codemem_full(code_blob_type, should_print_compiler_warning());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue