Mercurial > hg > graal-jvmci-8
comparison src/share/vm/compiler/disassembler.cpp @ 6782:5a98bf7d847b
6879063: SA should use hsdis for disassembly
Summary: We should in SA to use hsdis for it like the JVM does to replace the current java based disassembler.
Reviewed-by: twisti, jrose, sla
Contributed-by: yumin.qi@oracle.com
author | minqi |
---|---|
date | Mon, 24 Sep 2012 12:44:00 -0700 |
parents | 3e23978ea0c3 |
children | f2e12eb74117 |
comparison
equal
deleted
inserted
replaced
6780:8440414b0fd8 | 6782:5a98bf7d847b |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. | 2 * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | 4 * |
5 * This code is free software; you can redistribute it and/or modify it | 5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as | 6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
56 | 56 |
57 // This routine is in the shared library: | 57 // This routine is in the shared library: |
58 Disassembler::decode_func Disassembler::_decode_instructions = NULL; | 58 Disassembler::decode_func Disassembler::_decode_instructions = NULL; |
59 | 59 |
60 static const char hsdis_library_name[] = "hsdis-"HOTSPOT_LIB_ARCH; | 60 static const char hsdis_library_name[] = "hsdis-"HOTSPOT_LIB_ARCH; |
61 static const char decode_instructions_name[] = "decode_instructions"; | 61 static const char decode_instructions_name[] = "decode_instructions_virtual"; |
62 | 62 |
63 #define COMMENT_COLUMN 40 LP64_ONLY(+8) /*could be an option*/ | 63 #define COMMENT_COLUMN 40 LP64_ONLY(+8) /*could be an option*/ |
64 #define BYTES_COMMENT ";..." /* funky byte display comment */ | 64 #define BYTES_COMMENT ";..." /* funky byte display comment */ |
65 | 65 |
66 bool Disassembler::load_library() { | 66 bool Disassembler::load_library() { |
216 st->bol(); | 216 st->bol(); |
217 st->print_cr("%3.1f%% [%d]", bucket_count*100.0/total_ticks(), bucket_count); | 217 st->print_cr("%3.1f%% [%d]", bucket_count*100.0/total_ticks(), bucket_count); |
218 } | 218 } |
219 } | 219 } |
220 } | 220 } |
221 // follow each complete insn by a nice newline | |
222 st->cr(); | |
221 } | 223 } |
222 | 224 |
223 address handle_event(const char* event, address arg); | 225 address handle_event(const char* event, address arg); |
224 | 226 |
225 outputStream* output() { return _output; } | 227 outputStream* output() { return _output; } |
444 // Print whatever the library wants to print, w/o fancy callbacks. | 446 // Print whatever the library wants to print, w/o fancy callbacks. |
445 // This is mainly for debugging the library itself. | 447 // This is mainly for debugging the library itself. |
446 FILE* out = stdout; | 448 FILE* out = stdout; |
447 FILE* xmlout = (_print_raw > 1 ? out : NULL); | 449 FILE* xmlout = (_print_raw > 1 ? out : NULL); |
448 return (address) | 450 return (address) |
449 (*Disassembler::_decode_instructions)(start, end, | 451 (*Disassembler::_decode_instructions)((uintptr_t)start, (uintptr_t)end, |
452 start, end - start, | |
450 NULL, (void*) xmlout, | 453 NULL, (void*) xmlout, |
451 NULL, (void*) out, | 454 NULL, (void*) out, |
452 options()); | 455 options()); |
453 } | 456 } |
454 | 457 |
455 return (address) | 458 return (address) |
456 (*Disassembler::_decode_instructions)(start, end, | 459 (*Disassembler::_decode_instructions)((uintptr_t)start, (uintptr_t)end, |
460 start, end - start, | |
457 &event_to_env, (void*) this, | 461 &event_to_env, (void*) this, |
458 &printf_to_env, (void*) this, | 462 &printf_to_env, (void*) this, |
459 options()); | 463 options()); |
460 } | 464 } |
461 | 465 |