< prev index next >

src/hotspot/share/code/nmethod.hpp

Print this page
rev 54763 : 8213084: Rework and enhance Print[Opto]Assembly output
Reviewed-by:

*** 375,384 **** --- 375,385 ---- } void make_unloaded(); bool has_dependencies() { return dependencies_size() != 0; } + void print_dependencies() PRODUCT_RETURN; void flush_dependencies(bool delete_immediately); bool has_flushed_dependencies() { return _has_flushed_dependencies; } void set_has_flushed_dependencies() { assert(!has_flushed_dependencies(), "should only happen once"); _has_flushed_dependencies = 1;
*** 503,524 **** // verify operations void verify(); void verify_scopes(); void verify_interrupt_point(address interrupt_point); // printing support void print() const; void print_relocations() PRODUCT_RETURN; ! void print_pcs() PRODUCT_RETURN; ! void print_scopes() PRODUCT_RETURN; ! void print_dependencies() PRODUCT_RETURN; ! void print_value_on(outputStream* st) const PRODUCT_RETURN; void print_calls(outputStream* st) PRODUCT_RETURN; ! void print_handler_table() PRODUCT_RETURN; ! 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 --- 504,547 ---- // verify operations void verify(); void verify_scopes(); void verify_interrupt_point(address interrupt_point); + // Disassemble this nmethod with additional debug information, e.g. information about blocks. + void decode2(outputStream* st) const; + void print_constant_pool(outputStream* st); + + // Avoid hiding of parent's 'decode(outputStream*)' method. + void decode(outputStream* st) const { decode2(st); } // just delegate here. + // printing support void print() const; + void print(outputStream* st) const; + void print_code(); + + #if defined(SUPPORT_DATA_STRUCTS) + // print output in opt build for disassembler library void print_relocations() PRODUCT_RETURN; ! void print_pcs() { print_pcs_on(tty); } ! void print_pcs_on(outputStream* st); ! void print_scopes() { print_scopes_on(tty); } ! void print_scopes_on(outputStream* st) PRODUCT_RETURN; ! void print_value_on(outputStream* st) const; ! void print_handler_table(); ! void print_nul_chk_table(); ! void print_recorded_oops(); ! void print_recorded_metadata(); ! ! void print_oops(outputStream* st); // oops from the underlying CodeBlob. ! void print_metadata(outputStream* st); // metadata in metadata pool. ! #else ! // void print_pcs() PRODUCT_RETURN; ! void print_pcs() { return; } ! #endif ! void print_calls(outputStream* st) PRODUCT_RETURN; ! static void print_statistics() 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
*** 530,547 **** void log_new_nmethod() const; void log_state_change() const; // Prints block-level comments, including nmethod specific block labels: virtual void print_block_comment(outputStream* stream, address block_begin) const { print_nmethod_labels(stream, block_begin); CodeBlob::print_block_comment(stream, block_begin); } ! void print_nmethod_labels(outputStream* stream, address block_begin) const; // Prints a comment for one native instruction (reloc info, pc desc) void print_code_comment_on(outputStream* st, int column, address begin, address end); - static void print_statistics() PRODUCT_RETURN; // Compiler task identification. Note that all OSR methods // are numbered in an independent sequence if CICountOSR is true, // and native method wrappers are also numbered independently if // CICountNative is true. --- 553,577 ---- void log_new_nmethod() const; void log_state_change() const; // Prints block-level comments, including nmethod specific block labels: virtual void print_block_comment(outputStream* stream, address block_begin) const { + #if defined(SUPPORT_ASSEMBLY) || defined(SUPPORT_ABSTRACT_ASSEMBLY) print_nmethod_labels(stream, block_begin); CodeBlob::print_block_comment(stream, block_begin); + #endif } ! bool has_block_comment(address block_begin) { ! return CodeBlob::has_block_comment(block_begin); ! } ! void print_nmethod_labels(outputStream* stream, address block_begin, bool print_section_labels=true) const; ! const char* nmethod_section_label(address pos) const; + // returns whether this nmethod has code comments. + bool has_code_comment(address begin, address end); // Prints a comment for one native instruction (reloc info, pc desc) void print_code_comment_on(outputStream* st, int column, address begin, address end); // Compiler task identification. Note that all OSR methods // are numbered in an independent sequence if CICountOSR is true, // and native method wrappers are also numbered independently if // CICountNative is true.
< prev index next >