8340792: -XX:+PrintInterpreter: instructions should only be printed if printing all InterpreterCodelets
Reviewed-by: mdoerr, coleenp
This commit is contained in:
parent
3f420fac84
commit
a63ac5a699
@ -74,7 +74,9 @@ void AbstractInterpreter::print() {
|
|||||||
tty->print_cr("avg codelet size = %6d bytes", _code->used_space() / _code->number_of_stubs());
|
tty->print_cr("avg codelet size = %6d bytes", _code->used_space() / _code->number_of_stubs());
|
||||||
tty->cr();
|
tty->cr();
|
||||||
}
|
}
|
||||||
|
_should_print_instructions = PrintInterpreter;
|
||||||
_code->print();
|
_code->print();
|
||||||
|
_should_print_instructions = false;
|
||||||
tty->print_cr("----------------------------------------------------------------------");
|
tty->print_cr("----------------------------------------------------------------------");
|
||||||
tty->cr();
|
tty->cr();
|
||||||
}
|
}
|
||||||
@ -91,6 +93,8 @@ address AbstractInterpreter::_slow_signature_handler;
|
|||||||
address AbstractInterpreter::_entry_table [AbstractInterpreter::number_of_method_entries];
|
address AbstractInterpreter::_entry_table [AbstractInterpreter::number_of_method_entries];
|
||||||
address AbstractInterpreter::_native_abi_to_tosca [AbstractInterpreter::number_of_result_handlers];
|
address AbstractInterpreter::_native_abi_to_tosca [AbstractInterpreter::number_of_result_handlers];
|
||||||
|
|
||||||
|
bool AbstractInterpreter::_should_print_instructions = false;
|
||||||
|
|
||||||
//------------------------------------------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------------------------------------------
|
||||||
// Generation of complete interpreter
|
// Generation of complete interpreter
|
||||||
|
|
||||||
|
@ -126,6 +126,8 @@ class AbstractInterpreter: AllStatic {
|
|||||||
|
|
||||||
static address _rethrow_exception_entry; // rethrows an activation in previous frame
|
static address _rethrow_exception_entry; // rethrows an activation in previous frame
|
||||||
|
|
||||||
|
static bool _should_print_instructions; // only with PrintInterpreter and when printing all InterpreterCodelet
|
||||||
|
|
||||||
friend class AbstractInterpreterGenerator;
|
friend class AbstractInterpreterGenerator;
|
||||||
friend class InterpreterMacroAssembler;
|
friend class InterpreterMacroAssembler;
|
||||||
|
|
||||||
@ -133,6 +135,7 @@ class AbstractInterpreter: AllStatic {
|
|||||||
// Initialization/debugging
|
// Initialization/debugging
|
||||||
static void initialize();
|
static void initialize();
|
||||||
static StubQueue* code() { return _code; }
|
static StubQueue* code() { return _code; }
|
||||||
|
static bool should_print_instructions() { return _should_print_instructions; }
|
||||||
|
|
||||||
|
|
||||||
// Method activation
|
// Method activation
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2023, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -66,7 +66,7 @@ void InterpreterCodelet::verify() {}
|
|||||||
void InterpreterCodelet::print_on(outputStream* st) const {
|
void InterpreterCodelet::print_on(outputStream* st) const {
|
||||||
ttyLocker ttyl;
|
ttyLocker ttyl;
|
||||||
|
|
||||||
if (PrintInterpreter) {
|
if (AbstractInterpreter::should_print_instructions()) {
|
||||||
st->cr();
|
st->cr();
|
||||||
st->print_cr("----------------------------------------------------------------------");
|
st->print_cr("----------------------------------------------------------------------");
|
||||||
}
|
}
|
||||||
@ -76,7 +76,7 @@ void InterpreterCodelet::print_on(outputStream* st) const {
|
|||||||
st->print_cr("[" INTPTR_FORMAT ", " INTPTR_FORMAT "] %d bytes",
|
st->print_cr("[" INTPTR_FORMAT ", " INTPTR_FORMAT "] %d bytes",
|
||||||
p2i(code_begin()), p2i(code_end()), code_size());
|
p2i(code_begin()), p2i(code_end()), code_size());
|
||||||
|
|
||||||
if (PrintInterpreter) {
|
if (AbstractInterpreter::should_print_instructions()) {
|
||||||
st->cr();
|
st->cr();
|
||||||
Disassembler::decode(code_begin(), code_end(), st NOT_PRODUCT(COMMA &_asm_remarks));
|
Disassembler::decode(code_begin(), code_end(), st NOT_PRODUCT(COMMA &_asm_remarks));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user