198 int comp_level();
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
327 bool is_native () const { return flags().is_native(); }
328 bool is_interface () const { return flags().is_interface(); }
329 bool is_abstract () const { return flags().is_abstract(); }
330 bool is_strict () const { return flags().is_strict(); }
331
332 // Other flags
333 bool is_empty_method() const;
334 bool is_vanilla_constructor() const;
335 bool is_final_method() const { return is_final() || holder()->is_final(); }
336 bool has_loops () const;
337 bool has_jsrs () const;
338 bool is_getter () const;
339 bool is_setter () const;
340 bool is_accessor () const;
341 bool is_initializer () const;
342 bool can_be_statically_bound() const { return _can_be_statically_bound; }
343 bool has_reserved_stack_access() const { return _has_reserved_stack_access; }
344 bool is_boxing_method() const;
345 bool is_unboxing_method() const;
346 bool is_object_initializer() const;
347
348 // Replay data methods
349 void dump_name_as_ascii(outputStream* st);
350 void dump_replay_data(outputStream* st);
351
352 // Print the bytecodes of this method.
353 void print_codes_on(outputStream* st);
354 void print_codes() {
355 print_codes_on(tty);
356 }
357 void print_codes_on(int from, int to, outputStream* st);
358
359 // Print the name of this method in various incarnations.
360 void print_name(outputStream* st = tty);
361 void print_short_name(outputStream* st = tty);
362
363 static bool is_consistent_info(ciMethod* declared_method, ciMethod* resolved_method);
364 };
365
366 #endif // SHARE_VM_CI_CIMETHOD_HPP
|
198 int comp_level();
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() const;
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
327 bool is_native () const { return flags().is_native(); }
328 bool is_interface () const { return flags().is_interface(); }
329 bool is_abstract () const { return flags().is_abstract(); }
330 bool is_strict () const { return flags().is_strict(); }
331
332 // Other flags
333 bool is_empty_method() const;
334 bool is_vanilla_constructor() const;
335 bool is_final_method() const { return is_final() || holder()->is_final(); }
336 bool has_loops () const;
337 bool has_jsrs () const;
338 bool is_getter () const;
339 bool is_setter () const;
340 bool is_accessor () const;
341 bool is_initializer () const;
342 bool can_be_statically_bound() const { return _can_be_statically_bound; }
343 bool has_reserved_stack_access() const { return _has_reserved_stack_access; }
344 bool is_boxing_method() const;
345 bool is_unboxing_method() const;
346 bool is_object_initializer() const;
347 bool is_object_equals() const;
348
349 // Replay data methods
350 void dump_name_as_ascii(outputStream* st);
351 void dump_replay_data(outputStream* st);
352
353 // Print the bytecodes of this method.
354 void print_codes_on(outputStream* st);
355 void print_codes() {
356 print_codes_on(tty);
357 }
358 void print_codes_on(int from, int to, outputStream* st);
359
360 // Print the name of this method in various incarnations.
361 void print_name(outputStream* st = tty);
362 void print_short_name(outputStream* st = tty);
363
364 static bool is_consistent_info(ciMethod* declared_method, ciMethod* resolved_method);
365 };
366
367 #endif // SHARE_VM_CI_CIMETHOD_HPP
|