79 int _handler_count;
80 int _nmethod_age;
81 int _interpreter_invocation_count;
82 int _interpreter_throwout_count;
83 int _instructions_size;
84 int _size_of_parameters;
85
86 bool _uses_monitors;
87 bool _balanced_monitors;
88 bool _is_c1_compilable;
89 bool _is_c2_compilable;
90 bool _can_be_statically_bound;
91 bool _has_reserved_stack_access;
92
93 // Lazy fields, filled in on demand
94 address _code;
95 ciExceptionHandler** _exception_handlers;
96
97 // Optional liveness analyzer.
98 MethodLiveness* _liveness;
99 #if defined(COMPILER2) || defined(SHARK)
100 ciTypeFlow* _flow;
101 BCEscapeAnalyzer* _bcea;
102 #endif
103
104 ciMethod(const methodHandle& h_m, ciInstanceKlass* holder);
105 ciMethod(ciInstanceKlass* holder, ciSymbol* name, ciSymbol* signature, ciInstanceKlass* accessor);
106
107 oop loader() const { return _holder->loader(); }
108
109 const char* type_string() { return "ciMethod"; }
110
111 void print_impl(outputStream* st);
112
113 void load_code();
114
115 bool ensure_method_data(const methodHandle& h_m);
116
117 void code_at_put(int bci, Bytecodes::Code code) {
118 Bytecodes::check(code);
119 assert(0 <= bci && bci < code_size(), "valid bci");
199 int highest_osr_comp_level();
200
201 Bytecodes::Code java_code_at_bci(int bci) {
202 address bcp = code() + bci;
203 return Bytecodes::java_code_at(NULL, bcp);
204 }
205 Bytecodes::Code raw_code_at_bci(int bci) {
206 address bcp = code() + bci;
207 return Bytecodes::code_at(NULL, bcp);
208 }
209 BCEscapeAnalyzer *get_bcea();
210 ciMethodBlocks *get_method_blocks();
211
212 bool has_linenumber_table() const; // length unknown until decompression
213 u_char* compressed_linenumber_table() const; // not preserved by gc
214
215 int line_number_from_bci(int bci) const;
216
217 // Runtime information.
218 int vtable_index();
219 #ifdef SHARK
220 int itable_index();
221 #endif // SHARK
222 address native_entry();
223 address interpreter_entry();
224
225 // Analysis and profiling.
226 //
227 // Usage note: liveness_at_bci and init_vars should be wrapped in ResourceMarks.
228 bool has_monitor_bytecodes() const { return _uses_monitors; }
229 bool has_balanced_monitors();
230
231 // Returns a bitmap indicating which locals are required to be
232 // maintained as live for deopt. raw_liveness_at_bci is always the
233 // direct output of the liveness computation while liveness_at_bci
234 // may mark all locals as live to improve support for debugging Java
235 // code by maintaining the state of as many locals as possible.
236 MethodLivenessResult raw_liveness_at_bci(int bci);
237 MethodLivenessResult liveness_at_bci(int bci);
238
239 // Get the interpreters viewpoint on oop liveness. MethodLiveness is
240 // conservative in the sense that it may consider locals to be live which
241 // cannot be live, like in the case where a local could contain an oop or
|
79 int _handler_count;
80 int _nmethod_age;
81 int _interpreter_invocation_count;
82 int _interpreter_throwout_count;
83 int _instructions_size;
84 int _size_of_parameters;
85
86 bool _uses_monitors;
87 bool _balanced_monitors;
88 bool _is_c1_compilable;
89 bool _is_c2_compilable;
90 bool _can_be_statically_bound;
91 bool _has_reserved_stack_access;
92
93 // Lazy fields, filled in on demand
94 address _code;
95 ciExceptionHandler** _exception_handlers;
96
97 // Optional liveness analyzer.
98 MethodLiveness* _liveness;
99 #if defined(COMPILER2)
100 ciTypeFlow* _flow;
101 BCEscapeAnalyzer* _bcea;
102 #endif
103
104 ciMethod(const methodHandle& h_m, ciInstanceKlass* holder);
105 ciMethod(ciInstanceKlass* holder, ciSymbol* name, ciSymbol* signature, ciInstanceKlass* accessor);
106
107 oop loader() const { return _holder->loader(); }
108
109 const char* type_string() { return "ciMethod"; }
110
111 void print_impl(outputStream* st);
112
113 void load_code();
114
115 bool ensure_method_data(const methodHandle& h_m);
116
117 void code_at_put(int bci, Bytecodes::Code code) {
118 Bytecodes::check(code);
119 assert(0 <= bci && bci < code_size(), "valid bci");
199 int highest_osr_comp_level();
200
201 Bytecodes::Code java_code_at_bci(int bci) {
202 address bcp = code() + bci;
203 return Bytecodes::java_code_at(NULL, bcp);
204 }
205 Bytecodes::Code raw_code_at_bci(int bci) {
206 address bcp = code() + bci;
207 return Bytecodes::code_at(NULL, bcp);
208 }
209 BCEscapeAnalyzer *get_bcea();
210 ciMethodBlocks *get_method_blocks();
211
212 bool has_linenumber_table() const; // length unknown until decompression
213 u_char* compressed_linenumber_table() const; // not preserved by gc
214
215 int line_number_from_bci(int bci) const;
216
217 // Runtime information.
218 int vtable_index();
219 address native_entry();
220 address interpreter_entry();
221
222 // Analysis and profiling.
223 //
224 // Usage note: liveness_at_bci and init_vars should be wrapped in ResourceMarks.
225 bool has_monitor_bytecodes() const { return _uses_monitors; }
226 bool has_balanced_monitors();
227
228 // Returns a bitmap indicating which locals are required to be
229 // maintained as live for deopt. raw_liveness_at_bci is always the
230 // direct output of the liveness computation while liveness_at_bci
231 // may mark all locals as live to improve support for debugging Java
232 // code by maintaining the state of as many locals as possible.
233 MethodLivenessResult raw_liveness_at_bci(int bci);
234 MethodLivenessResult liveness_at_bci(int bci);
235
236 // Get the interpreters viewpoint on oop liveness. MethodLiveness is
237 // conservative in the sense that it may consider locals to be live which
238 // cannot be live, like in the case where a local could contain an oop or
|