< prev index next >

src/share/vm/oops/methodCounters.hpp

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2013, 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. --- 1,7 ---- /* ! * Copyright (c) 2013, 2016 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.
*** 32,43 **** --- 32,45 ---- class MethodCounters: public MetaspaceObj { friend class VMStructs; friend class JVMCIVMStructs; private: + #if defined(COMPILER2) || INCLUDE_JVMCI int _interpreter_invocation_count; // Count of times invoked (reused as prev_event_count in tiered) u2 _interpreter_throwout_count; // Count of times method was exited via exception while interpreting + #endif u2 _number_of_breakpoints; // fullspeed debugging support InvocationCounter _invocation_counter; // Incremented before each activation of the method - used to trigger frequency-based optimizations InvocationCounter _backedge_counter; // Incremented before each backedge taken - used to trigger frequencey-based optimizations // NMethod age is a counter for warm methods detection in the code cache sweeper. // The counter is reset by the sweeper and is decremented by some of the compiled
*** 58,78 **** jlong _prev_time; // Previous time the rate was acquired u1 _highest_comp_level; // Highest compile level this method has ever seen. u1 _highest_osr_comp_level; // Same for OSR level #endif ! MethodCounters(methodHandle mh) : _interpreter_invocation_count(0), ! _interpreter_throwout_count(0), ! _number_of_breakpoints(0), _nmethod_age(INT_MAX) #ifdef TIERED , _rate(0), _prev_time(0), _highest_comp_level(0), _highest_osr_comp_level(0) #endif { invocation_counter()->init(); backedge_counter()->init(); if (StressCodeAging) { set_nmethod_age(HotMethodDetectionLimit); --- 60,80 ---- jlong _prev_time; // Previous time the rate was acquired u1 _highest_comp_level; // Highest compile level this method has ever seen. u1 _highest_osr_comp_level; // Same for OSR level #endif ! MethodCounters(methodHandle mh) : _number_of_breakpoints(0), _nmethod_age(INT_MAX) #ifdef TIERED , _rate(0), _prev_time(0), _highest_comp_level(0), _highest_osr_comp_level(0) #endif { + set_interpreter_invocation_count(0); + set_interpreter_throwout_count(0); invocation_counter()->init(); backedge_counter()->init(); if (StressCodeAging) { set_nmethod_age(HotMethodDetectionLimit);
*** 107,116 **** --- 109,120 ---- bool is_klass() const { return false; } void clear_counters(); + #if defined(COMPILER2) || INCLUDE_JVMCI + int interpreter_invocation_count() { return _interpreter_invocation_count; } void set_interpreter_invocation_count(int count) { _interpreter_invocation_count = count;
*** 129,138 **** --- 133,160 ---- } void set_interpreter_throwout_count(int count) { _interpreter_throwout_count = count; } + #else // defined(COMPILER2) || INCLUDE_JVMCI + + int interpreter_invocation_count() { + return 0; + } + void set_interpreter_invocation_count(int count) { + assert(count == 0, "count must be 0"); + } + + int interpreter_throwout_count() const { + return 0; + } + void set_interpreter_throwout_count(int count) { + assert(count == 0, "count must be 0"); + } + + #endif // defined(COMPILER2) || INCLUDE_JVMCI + u2 number_of_breakpoints() const { return _number_of_breakpoints; } void incr_number_of_breakpoints() { ++_number_of_breakpoints; } void decr_number_of_breakpoints() { --_number_of_breakpoints; } void clear_number_of_breakpoints() { _number_of_breakpoints = 0; }
*** 168,193 **** static ByteSize nmethod_age_offset() { return byte_offset_of(MethodCounters, _nmethod_age); } static ByteSize interpreter_invocation_counter_offset() { return byte_offset_of(MethodCounters, _interpreter_invocation_count); } static ByteSize invocation_counter_offset() { return byte_offset_of(MethodCounters, _invocation_counter); } static ByteSize backedge_counter_offset() { return byte_offset_of(MethodCounters, _backedge_counter); } - static int interpreter_invocation_counter_offset_in_bytes() { - return offset_of(MethodCounters, _interpreter_invocation_count); - } - static ByteSize interpreter_invocation_limit_offset() { return byte_offset_of(MethodCounters, _interpreter_invocation_limit); } static ByteSize interpreter_backward_branch_limit_offset() { --- 190,226 ---- static ByteSize nmethod_age_offset() { return byte_offset_of(MethodCounters, _nmethod_age); } + #if defined(COMPILER2) || INCLUDE_JVMCI + static ByteSize interpreter_invocation_counter_offset() { return byte_offset_of(MethodCounters, _interpreter_invocation_count); } + static int interpreter_invocation_counter_offset_in_bytes() { + return offset_of(MethodCounters, _interpreter_invocation_count); + } + + #else // defined(COMPILER2) || INCLUDE_JVMCI + + static ByteSize interpreter_invocation_counter_offset() { + ShouldNotReachHere(); + return in_ByteSize(0); + } + + #endif // defined(COMPILER2) || INCLUDE_JVMCI + static ByteSize invocation_counter_offset() { return byte_offset_of(MethodCounters, _invocation_counter); } static ByteSize backedge_counter_offset() { return byte_offset_of(MethodCounters, _backedge_counter); } static ByteSize interpreter_invocation_limit_offset() { return byte_offset_of(MethodCounters, _interpreter_invocation_limit); } static ByteSize interpreter_backward_branch_limit_offset() {
< prev index next >