1.1 --- a/src/share/vm/compiler/disassembler.cpp Fri Sep 28 14:14:25 2012 +0200 1.2 +++ b/src/share/vm/compiler/disassembler.cpp Fri Sep 28 10:16:29 2012 -0700 1.3 @@ -148,6 +148,7 @@ 1.4 private: 1.5 nmethod* _nm; 1.6 CodeBlob* _code; 1.7 + CodeComments _comments; 1.8 outputStream* _output; 1.9 address _start, _end; 1.10 1.11 @@ -187,7 +188,7 @@ 1.12 void print_address(address value); 1.13 1.14 public: 1.15 - decode_env(CodeBlob* code, outputStream* output); 1.16 + decode_env(CodeBlob* code, outputStream* output, CodeComments c = CodeComments()); 1.17 1.18 address decode_instructions(address start, address end); 1.19 1.20 @@ -231,12 +232,13 @@ 1.21 const char* options() { return _option_buf; } 1.22 }; 1.23 1.24 -decode_env::decode_env(CodeBlob* code, outputStream* output) { 1.25 +decode_env::decode_env(CodeBlob* code, outputStream* output, CodeComments c) { 1.26 memset(this, 0, sizeof(*this)); 1.27 _output = output ? output : tty; 1.28 _code = code; 1.29 if (code != NULL && code->is_nmethod()) 1.30 _nm = (nmethod*) code; 1.31 + _comments.assign(c); 1.32 1.33 // by default, output pc but not bytes: 1.34 _print_pc = true; 1.35 @@ -358,6 +360,7 @@ 1.36 if (cb != NULL) { 1.37 cb->print_block_comment(st, p); 1.38 } 1.39 + _comments.print_block_comment(st, (intptr_t)(p - _start)); 1.40 if (_print_pc) { 1.41 st->print(" " PTR_FORMAT ": ", p); 1.42 } 1.43 @@ -471,10 +474,9 @@ 1.44 env.decode_instructions(cb->code_begin(), cb->code_end()); 1.45 } 1.46 1.47 - 1.48 -void Disassembler::decode(address start, address end, outputStream* st) { 1.49 +void Disassembler::decode(address start, address end, outputStream* st, CodeComments c) { 1.50 if (!load_library()) return; 1.51 - decode_env env(CodeCache::find_blob_unsafe(start), st); 1.52 + decode_env env(CodeCache::find_blob_unsafe(start), st, c); 1.53 env.decode_instructions(start, end); 1.54 } 1.55