Skip to content

Commit

Permalink
8349753: Incorrect use of CodeBlob::is_buffer_blob() in few places
Browse files Browse the repository at this point in the history
Reviewed-by: dlong, shade
  • Loading branch information
Vladimir Kozlov committed Feb 13, 2025
1 parent 18958c6 commit 0b50e47
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 2 deletions.
2 changes: 1 addition & 1 deletion src/hotspot/share/code/codeBlob.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -656,7 +656,7 @@ void CodeBlob::print_value_on(outputStream* st) const {
}

void CodeBlob::dump_for_addr(address addr, outputStream* st, bool verbose) const {
if (is_buffer_blob()) {
if (is_buffer_blob() || is_adapter_blob() || is_vtable_blob() || is_method_handles_adapter_blob()) {
// the interpreter is generated into a buffer blob
InterpreterCodelet* i = Interpreter::codelet_containing(addr);
if (i != nullptr) {
Expand Down
40 changes: 40 additions & 0 deletions src/hotspot/share/code/codeCache.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1516,9 +1516,14 @@ void CodeCache::print_trace(const char* event, CodeBlob* cb, uint size) {
void CodeCache::print_internals() {
int nmethodCount = 0;
int runtimeStubCount = 0;
int upcallStubCount = 0;
int adapterCount = 0;
int mhAdapterCount = 0;
int vtableBlobCount = 0;
int deoptimizationStubCount = 0;
int uncommonTrapStubCount = 0;
int exceptionStubCount = 0;
int safepointStubCount = 0;
int bufferBlobCount = 0;
int total = 0;
int nmethodNotEntrant = 0;
Expand Down Expand Up @@ -1555,12 +1560,22 @@ void CodeCache::print_internals() {
}
} else if (cb->is_runtime_stub()) {
runtimeStubCount++;
} else if (cb->is_upcall_stub()) {
upcallStubCount++;
} else if (cb->is_deoptimization_stub()) {
deoptimizationStubCount++;
} else if (cb->is_uncommon_trap_stub()) {
uncommonTrapStubCount++;
} else if (cb->is_exception_stub()) {
exceptionStubCount++;
} else if (cb->is_safepoint_stub()) {
safepointStubCount++;
} else if (cb->is_adapter_blob()) {
adapterCount++;
} else if (cb->is_method_handles_adapter_blob()) {
mhAdapterCount++;
} else if (cb->is_vtable_blob()) {
vtableBlobCount++;
} else if (cb->is_buffer_blob()) {
bufferBlobCount++;
}
Expand All @@ -1587,10 +1602,15 @@ void CodeCache::print_internals() {
tty->print_cr("\tjava: %d",nmethodJava);
tty->print_cr("\tnative: %d",nmethodNative);
tty->print_cr("runtime_stubs: %d",runtimeStubCount);
tty->print_cr("upcall_stubs: %d",upcallStubCount);
tty->print_cr("adapters: %d",adapterCount);
tty->print_cr("MH adapters: %d",mhAdapterCount);
tty->print_cr("VTables: %d",vtableBlobCount);
tty->print_cr("buffer blobs: %d",bufferBlobCount);
tty->print_cr("deoptimization_stubs: %d",deoptimizationStubCount);
tty->print_cr("uncommon_traps: %d",uncommonTrapStubCount);
tty->print_cr("exception_stubs: %d",exceptionStubCount);
tty->print_cr("safepoint_stubs: %d",safepointStubCount);
tty->print_cr("\nnmethod size distribution");
tty->print_cr("-------------------------------------------------");

Expand All @@ -1616,9 +1636,14 @@ void CodeCache::print() {

CodeBlob_sizes live[CompLevel_full_optimization + 1];
CodeBlob_sizes runtimeStub;
CodeBlob_sizes upcallStub;
CodeBlob_sizes uncommonTrapStub;
CodeBlob_sizes deoptimizationStub;
CodeBlob_sizes exceptionStub;
CodeBlob_sizes safepointStub;
CodeBlob_sizes adapter;
CodeBlob_sizes mhAdapter;
CodeBlob_sizes vtableBlob;
CodeBlob_sizes bufferBlob;
CodeBlob_sizes other;

Expand All @@ -1630,12 +1655,22 @@ void CodeCache::print() {
live[level].add(cb);
} else if (cb->is_runtime_stub()) {
runtimeStub.add(cb);
} else if (cb->is_upcall_stub()) {
upcallStub.add(cb);
} else if (cb->is_deoptimization_stub()) {
deoptimizationStub.add(cb);
} else if (cb->is_uncommon_trap_stub()) {
uncommonTrapStub.add(cb);
} else if (cb->is_exception_stub()) {
exceptionStub.add(cb);
} else if (cb->is_safepoint_stub()) {
safepointStub.add(cb);
} else if (cb->is_adapter_blob()) {
adapter.add(cb);
} else if (cb->is_method_handles_adapter_blob()) {
mhAdapter.add(cb);
} else if (cb->is_vtable_blob()) {
vtableBlob.add(cb);
} else if (cb->is_buffer_blob()) {
bufferBlob.add(cb);
} else {
Expand Down Expand Up @@ -1666,9 +1701,14 @@ void CodeCache::print() {
const CodeBlob_sizes* sizes;
} non_nmethod_blobs[] = {
{ "runtime", &runtimeStub },
{ "upcall", &upcallStub },
{ "uncommon trap", &uncommonTrapStub },
{ "deoptimization", &deoptimizationStub },
{ "exception", &exceptionStub },
{ "safepoint", &safepointStub },
{ "adapter", &adapter },
{ "mh_adapter", &mhAdapter },
{ "vtable", &vtableBlob },
{ "buffer blob", &bufferBlob },
{ "other", &other },
};
Expand Down
2 changes: 1 addition & 1 deletion src/hotspot/share/prims/jvmtiCodeBlobEvents.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ void CodeBlobCollector::do_blob(CodeBlob* cb) {
return;
}
// exclude VtableStubs, which are processed separately
if (cb->is_buffer_blob() && strcmp(cb->name(), "vtable chunks") == 0) {
if (cb->is_vtable_blob()) {
return;
}

Expand Down
5 changes: 5 additions & 0 deletions test/hotspot/jtreg/compiler/codecache/CheckCodeCacheInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,14 @@ public class CheckCodeCacheInfo {
+ pair
+ "Non-nmethod blobs:\\n"
+ " #\\d+ runtime = " + entry
+ " #\\d+ upcall = " + entry
+ " #\\d+ uncommon trap = " + entry
+ " #\\d+ deoptimization = " + entry
+ " #\\d+ exception = " + entry
+ " #\\d+ safepoint = " + entry
+ " #\\d+ adapter = " + entry
+ " #\\d+ mh_adapter = " + entry
+ " #\\d+ vtable = " + entry
+ " #\\d+ buffer blob = " + entry
+ " #\\d+ other = " + entry;
}
Expand Down

0 comments on commit 0b50e47

Please sign in to comment.