comparison src/share/vm/oops/methodOop.hpp @ 2348:5d8f5a6dced7

7020403: Add AdvancedCompilationPolicy for tiered Summary: This implements adaptive tiered compilation policy. Reviewed-by: kvn, never
author iveresov
date Fri, 04 Mar 2011 15:14:16 -0800
parents f77b3ec064b0
children 799d8ccf63cf
comparison
equal deleted inserted replaced
2325:8c9c9ee30d71 2348:5d8f5a6dced7
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);