Skip to content

Commit a40d8d9

Browse files
Ekaterina VergizovaYuri Nesterenko
authored andcommitted
8314220: Configurable InlineCacheBuffer size
Reviewed-by: dlong, kvn
1 parent 1272368 commit a40d8d9

File tree

4 files changed

+9
-3
lines changed

4 files changed

+9
-3
lines changed

src/hotspot/share/code/icBuffer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ void ICStub::print() {
141141

142142
void InlineCacheBuffer::initialize() {
143143
if (_buffer != nullptr) return; // already initialized
144-
_buffer = new StubQueue(new ICStubInterface, 10*K, InlineCacheBuffer_lock, "InlineCacheBuffer");
144+
_buffer = new StubQueue(new ICStubInterface, checked_cast<int>(InlineCacheBufferSize), InlineCacheBuffer_lock, "InlineCacheBuffer");
145145
assert (_buffer != nullptr, "cannot allocate InlineCacheBuffer");
146146
}
147147

src/hotspot/share/code/stubs.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -218,8 +218,6 @@ void StubQueue::verify() {
218218
guarantee(0 <= _queue_begin && _queue_begin < _buffer_limit, "_queue_begin out of bounds");
219219
guarantee(0 <= _queue_end && _queue_end <= _buffer_limit, "_queue_end out of bounds");
220220
// verify alignment
221-
guarantee(_buffer_size % stub_alignment() == 0, "_buffer_size not aligned");
222-
guarantee(_buffer_limit % stub_alignment() == 0, "_buffer_limit not aligned");
223221
guarantee(_queue_begin % stub_alignment() == 0, "_queue_begin not aligned");
224222
guarantee(_queue_end % stub_alignment() == 0, "_queue_end not aligned");
225223
// verify buffer limit/size relationship

src/hotspot/share/compiler/compilerDefinitions.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -498,6 +498,11 @@ bool CompilerConfig::check_args_consistency(bool status) {
498498
"Invalid NonNMethodCodeHeapSize=%dK. Must be at least %uK.\n", NonNMethodCodeHeapSize/K,
499499
min_code_cache_size/K);
500500
status = false;
501+
} else if (InlineCacheBufferSize > NonNMethodCodeHeapSize / 2) {
502+
jio_fprintf(defaultStream::error_stream(),
503+
"Invalid InlineCacheBufferSize=" SIZE_FORMAT "K. Must be less than or equal to " SIZE_FORMAT "K.\n",
504+
InlineCacheBufferSize/K, NonNMethodCodeHeapSize/2/K);
505+
status = false;
501506
}
502507

503508
#ifdef _LP64

src/hotspot/share/runtime/globals.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,9 @@ const int ObjectAlignmentInBytes = 8;
295295
product(bool, UseInlineCaches, true, \
296296
"Use Inline Caches for virtual calls ") \
297297
\
298+
product(size_t, InlineCacheBufferSize, 10*K, EXPERIMENTAL, \
299+
"InlineCacheBuffer size") \
300+
\
298301
product(bool, InlineArrayCopy, true, DIAGNOSTIC, \
299302
"Inline arraycopy native that is known to be part of " \
300303
"base library DLL") \

0 commit comments

Comments
 (0)