Mercurial > hg > graal-jvmci-8
diff src/share/vm/compiler/disassembler.cpp @ 6796:b31471cdc53e
7200163: add CodeComments functionality to assember stubs
Summary: Pass the codeBuffer to the Stub constructor, and adapts the disassembler to print the comments.
Reviewed-by: jrose, kvn, twisti
Contributed-by: goetz.lindenmaier@sap.com
author | kvn |
---|---|
date | Mon, 24 Sep 2012 10:30:14 -0700 |
parents | 3e23978ea0c3 |
children | f2e12eb74117 |
line wrap: on
line diff
--- a/src/share/vm/compiler/disassembler.cpp Thu Sep 20 16:49:17 2012 +0200 +++ b/src/share/vm/compiler/disassembler.cpp Mon Sep 24 10:30:14 2012 -0700 @@ -148,6 +148,7 @@ private: nmethod* _nm; CodeBlob* _code; + CodeComments _comments; outputStream* _output; address _start, _end; @@ -187,7 +188,7 @@ void print_address(address value); public: - decode_env(CodeBlob* code, outputStream* output); + decode_env(CodeBlob* code, outputStream* output, CodeComments c = CodeComments()); address decode_instructions(address start, address end); @@ -229,12 +230,13 @@ const char* options() { return _option_buf; } }; -decode_env::decode_env(CodeBlob* code, outputStream* output) { +decode_env::decode_env(CodeBlob* code, outputStream* output, CodeComments c) { memset(this, 0, sizeof(*this)); _output = output ? output : tty; _code = code; if (code != NULL && code->is_nmethod()) _nm = (nmethod*) code; + _comments.assign(c); // by default, output pc but not bytes: _print_pc = true; @@ -356,6 +358,7 @@ if (cb != NULL) { cb->print_block_comment(st, p); } + _comments.print_block_comment(st, (intptr_t)(p - _start)); if (_print_pc) { st->print(" " PTR_FORMAT ": ", p); } @@ -467,10 +470,9 @@ env.decode_instructions(cb->code_begin(), cb->code_end()); } - -void Disassembler::decode(address start, address end, outputStream* st) { +void Disassembler::decode(address start, address end, outputStream* st, CodeComments c) { if (!load_library()) return; - decode_env env(CodeCache::find_blob_unsafe(start), st); + decode_env env(CodeCache::find_blob_unsafe(start), st, c); env.decode_instructions(start, end); }