mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-20 19:14:38 +02:00
8149969: [JVMCI] PrintNMethods is ignored for CompilerToVM.installCode when not called from the broker
Reviewed-by: kvn
This commit is contained in:
parent
03174f3030
commit
05730d99ba
4 changed files with 21 additions and 6 deletions
|
@ -33,6 +33,7 @@
|
|||
#include "compiler/compileBroker.hpp"
|
||||
#include "compiler/compileLog.hpp"
|
||||
#include "compiler/compilerDirectives.hpp"
|
||||
#include "compiler/directivesParser.hpp"
|
||||
#include "compiler/disassembler.hpp"
|
||||
#include "interpreter/bytecode.hpp"
|
||||
#include "oops/methodData.hpp"
|
||||
|
@ -965,6 +966,12 @@ void nmethod::print_on(outputStream* st, const char* msg) const {
|
|||
}
|
||||
}
|
||||
|
||||
void nmethod::maybe_print_nmethod(DirectiveSet* directive) {
|
||||
bool printnmethods = directive->PrintAssemblyOption || directive->PrintNMethodsOption;
|
||||
if (printnmethods || PrintDebugInfo || PrintRelocations || PrintDependencies || PrintExceptionHandlers) {
|
||||
print_nmethod(printnmethods);
|
||||
}
|
||||
}
|
||||
|
||||
void nmethod::print_nmethod(bool printmethod) {
|
||||
ttyLocker ttyl; // keep the following output all in one block
|
||||
|
|
|
@ -29,6 +29,8 @@
|
|||
#include "code/pcDesc.hpp"
|
||||
#include "oops/metadata.hpp"
|
||||
|
||||
class DirectiveSet;
|
||||
|
||||
// This class is used internally by nmethods, to cache
|
||||
// exception/pc/handler information.
|
||||
|
||||
|
@ -714,6 +716,8 @@ public:
|
|||
void print_nul_chk_table() PRODUCT_RETURN;
|
||||
void print_recorded_oops() PRODUCT_RETURN;
|
||||
void print_recorded_metadata() PRODUCT_RETURN;
|
||||
|
||||
void maybe_print_nmethod(DirectiveSet* directive);
|
||||
void print_nmethod(bool print_code);
|
||||
|
||||
// need to re-define this from CodeBlob else the overload hides it
|
||||
|
|
|
@ -1919,12 +1919,9 @@ void CompileBroker::invoke_compiler_on_method(CompileTask* task) {
|
|||
|
||||
collect_statistics(thread, time, task);
|
||||
|
||||
bool printnmethods = directive->PrintAssemblyOption || directive->PrintNMethodsOption;
|
||||
if (printnmethods || PrintDebugInfo || PrintRelocations || PrintDependencies || PrintExceptionHandlers) {
|
||||
nmethod* nm = task->code();
|
||||
if (nm != NULL) {
|
||||
nm->print_nmethod(printnmethods);
|
||||
}
|
||||
nm->maybe_print_nmethod(directive);
|
||||
}
|
||||
DirectivesStack::release(directive);
|
||||
|
||||
|
|
|
@ -591,6 +591,13 @@ JVMCIEnv::CodeInstallResult JVMCIEnv::register_method(
|
|||
// JVMTI -- compiled method notification (must be done outside lock)
|
||||
if (nm != NULL) {
|
||||
nm->post_compiled_method_load_event();
|
||||
|
||||
if (env == NULL) {
|
||||
// This compile didn't come through the CompileBroker so perform the printing here
|
||||
DirectiveSet* directive = DirectivesStack::getMatchingDirective(method, compiler);
|
||||
nm->maybe_print_nmethod(directive);
|
||||
DirectivesStack::release(directive);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue