src/share/vm/compiler/disassembler.cpp

changeset 4117
f2e12eb74117
parent 4093
5a98bf7d847b
parent 4107
b31471cdc53e
child 4244
3d701c802d01
     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  

mercurial