equal
deleted
inserted
replaced
82 // | num_breakpoints | (unused) | |
82 // | num_breakpoints | (unused) | |
83 // |------------------------------------------------------| |
83 // |------------------------------------------------------| |
84 // | invocation_counter | |
84 // | invocation_counter | |
85 // | backedge_counter | |
85 // | backedge_counter | |
86 // |------------------------------------------------------| |
86 // |------------------------------------------------------| |
|
87 // | prev_time (tiered only, 64 bit wide) | |
|
88 // | | |
|
89 // |------------------------------------------------------| |
|
90 // | rate (tiered) | |
|
91 // |------------------------------------------------------| |
87 // | code (pointer) | |
92 // | code (pointer) | |
88 // | i2i (pointer) | |
93 // | i2i (pointer) | |
89 // | adapter (pointer) | |
94 // | adapter (pointer) | |
90 // | from_compiled_entry (pointer) | |
95 // | from_compiled_entry (pointer) | |
91 // | from_interpreted_entry (pointer) | |
96 // | from_interpreted_entry (pointer) | |
122 u2 _interpreter_throwout_count; // Count of times method was exited via exception while interpreting |
127 u2 _interpreter_throwout_count; // Count of times method was exited via exception while interpreting |
123 u2 _number_of_breakpoints; // fullspeed debugging support |
128 u2 _number_of_breakpoints; // fullspeed debugging support |
124 InvocationCounter _invocation_counter; // Incremented before each activation of the method - used to trigger frequency-based optimizations |
129 InvocationCounter _invocation_counter; // Incremented before each activation of the method - used to trigger frequency-based optimizations |
125 InvocationCounter _backedge_counter; // Incremented before each backedge taken - used to trigger frequencey-based optimizations |
130 InvocationCounter _backedge_counter; // Incremented before each backedge taken - used to trigger frequencey-based optimizations |
126 |
131 |
|
132 #ifdef TIERED |
|
133 jlong _prev_time; // Previous time the rate was acquired |
|
134 float _rate; // Events (invocation and backedge counter increments) per millisecond |
|
135 #endif |
|
136 |
127 #ifndef PRODUCT |
137 #ifndef PRODUCT |
128 int _compiled_invocation_count; // Number of nmethod invocations so far (for perf. debugging) |
138 int _compiled_invocation_count; // Number of nmethod invocations so far (for perf. debugging) |
129 #endif |
139 #endif |
130 // Entry point for calling both from and to the interpreter. |
140 // Entry point for calling both from and to the interpreter. |
131 address _i2i_entry; // All-args-on-stack calling convention |
141 address _i2i_entry; // All-args-on-stack calling convention |
301 } |
311 } |
302 |
312 |
303 // invocation counter |
313 // invocation counter |
304 InvocationCounter* invocation_counter() { return &_invocation_counter; } |
314 InvocationCounter* invocation_counter() { return &_invocation_counter; } |
305 InvocationCounter* backedge_counter() { return &_backedge_counter; } |
315 InvocationCounter* backedge_counter() { return &_backedge_counter; } |
|
316 |
|
317 #ifdef TIERED |
|
318 // We are reusing interpreter_invocation_count as a holder for the previous event count! |
|
319 // We can do that since interpreter_invocation_count is not used in tiered. |
|
320 int prev_event_count() const { return _interpreter_invocation_count; } |
|
321 void set_prev_event_count(int count) { _interpreter_invocation_count = count; } |
|
322 jlong prev_time() const { return _prev_time; } |
|
323 void set_prev_time(jlong time) { _prev_time = time; } |
|
324 float rate() const { return _rate; } |
|
325 void set_rate(float rate) { _rate = rate; } |
|
326 #endif |
306 |
327 |
307 int invocation_count(); |
328 int invocation_count(); |
308 int backedge_count(); |
329 int backedge_count(); |
309 |
330 |
310 bool was_executed_more_than(int n); |
331 bool was_executed_more_than(int n); |