src/share/vm/compiler/disassembler.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/compiler/disassembler.cpp	Fri Aug 18 12:12:48 2017
--- new/src/share/vm/compiler/disassembler.cpp	Fri Aug 18 12:12:48 2017

*** 1,7 **** --- 1,7 ---- /* ! * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved. ! * Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 28,38 **** --- 28,37 ---- #include "compiler/disassembler.hpp" #include "gc/shared/cardTableModRefBS.hpp" #include "gc/shared/collectedHeap.hpp" #include "memory/resourceArea.hpp" #include "oops/oop.inline.hpp" #include "runtime/fprofiler.hpp" #include "runtime/handles.inline.hpp" #include "runtime/os.hpp" #include "runtime/stubCodeGenerator.hpp" #include "runtime/stubRoutines.hpp" #include CPU_HEADER(depChecker)
*** 161,171 **** --- 160,169 ---- char _option_buf[512]; char _print_raw; bool _print_pc; bool _print_bytes; address _cur_insn; int _total_ticks; int _bytes_per_line; // arch-specific formatting option static bool match(const char* event, const char* tag) { size_t taglen = strlen(tag); if (strncmp(event, tag, taglen) != 0)
*** 211,242 **** --- 209,226 ---- print_insn_bytes(pc0, pc); if (_nm != NULL) { _nm->print_code_comment_on(st, COMMENT_COLUMN, pc0, pc); // this calls reloc_string_for which calls oop::print_value_on } // Output pc bucket ticks if we have any if (total_ticks() != 0) { address bucket_pc = FlatProfiler::bucket_start_for(pc); if (bucket_pc != NULL && bucket_pc > pc0 && bucket_pc <= pc) { int bucket_count = FlatProfiler::bucket_count_for(pc0); if (bucket_count != 0) { st->bol(); st->print_cr("%3.1f%% [%d]", bucket_count*100.0/total_ticks(), bucket_count); } } } // follow each complete insn by a nice newline st->cr(); } address handle_event(const char* event, address arg); outputStream* output() { return _output; } address cur_insn() { return _cur_insn; } int total_ticks() { return _total_ticks; } void set_total_ticks(int n) { _total_ticks = n; } const char* options() { return _option_buf; } }; decode_env::decode_env(CodeBlob* code, outputStream* output, CodeStrings c) { memset(this, 0, sizeof(*this)); // Beware, this zeroes bits of fields.
*** 559,582 **** --- 543,552 ---- } } #endif env.output()->print_cr(" [" PTR_FORMAT ", " PTR_FORMAT "] " JLONG_FORMAT " bytes", p2i(p), p2i(end), ((jlong)(end - p))); // If there has been profiling, print the buckets. if (FlatProfiler::bucket_start_for(p) != NULL) { unsigned char* p1 = p; int total_bucket_count = 0; while (p1 < end) { unsigned char* p0 = p1; p1 += pd_instruction_alignment(); address bucket_pc = FlatProfiler::bucket_start_for(p1); if (bucket_pc != NULL && bucket_pc > p0 && bucket_pc <= p1) total_bucket_count += FlatProfiler::bucket_count_for(p0); } env.set_total_ticks(total_bucket_count); } // Print constant table. if (nm->consts_size() > 0) { nm->print_nmethod_labels(env.output(), nm->consts_begin()); int offset = 0; for (address p = nm->consts_begin(); p < nm->consts_end(); p += 4, offset += 4) {

src/share/vm/compiler/disassembler.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File