8283298: Make CodeCacheSegmentSize a product flag

Reviewed-by: dlong, kvn
This commit is contained in:
Jie Fu 2022-03-23 08:48:17 +00:00
parent 58487ddc17
commit 026b85303c
4 changed files with 13 additions and 6 deletions
src/hotspot/share
test/hotspot/jtreg/compiler/arguments

@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2020, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2022, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -47,7 +47,11 @@ void TemplateInterpreter::initialize_stub() {
// allocate interpreter
int code_size = InterpreterCodeSize;
NOT_PRODUCT(code_size *= 4;) // debug uses extra interpreter code space
_code = new StubQueue(new InterpreterCodeletInterface, code_size, NULL,
// 270+ interpreter codelets are generated and each of them is required to be aligned to
// CodeEntryAlignment twice. So we need additional size due to alignment.
int max_aligned_codelets = 280;
int max_aligned_bytes = max_aligned_codelets * CodeEntryAlignment * 2;
_code = new StubQueue(new InterpreterCodeletInterface, code_size + max_aligned_bytes, NULL,
"Interpreter");
}

@ -1,5 +1,5 @@
/*
* Copyright (c) 2008, 2021, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2008, 2022, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -89,7 +89,11 @@ void MethodHandles::generate_adapters() {
ResourceMark rm;
TraceTime timer("MethodHandles adapters generation", TRACETIME_LOG(Info, startuptime));
_adapter_code = MethodHandlesAdapterBlob::create(adapter_code_size);
// The adapter entry is required to be aligned to CodeEntryAlignment.
// So we need additional bytes due to alignment.
int adapter_num = (int)Interpreter::method_handle_invoke_LAST - (int)Interpreter::method_handle_invoke_FIRST + 1;
int max_aligned_bytes = adapter_num * CodeEntryAlignment;
_adapter_code = MethodHandlesAdapterBlob::create(adapter_code_size + max_aligned_bytes);
CodeBuffer code(_adapter_code);
MethodHandlesAdapterGenerator g(&code);
g.generate();

@ -1522,7 +1522,7 @@ const intx ObjectAlignmentInBytes = 8;
"Stack space (bytes) required for JVM_InvokeMethod to complete") \
\
/* code cache parameters */ \
develop_pd(uintx, CodeCacheSegmentSize, \
product_pd(uintx, CodeCacheSegmentSize, EXPERIMENTAL, \
"Code cache segment size (in bytes) - smallest unit of " \
"allocation") \
range(1, 1024) \

@ -27,7 +27,6 @@
* @library /test/lib /
* @bug 8281467
* @requires vm.flagless
* @requires vm.debug
* @requires os.arch=="amd64" | os.arch=="x86_64"
*
* @summary Test large CodeEntryAlignments are accepted