70 ciSignature* _signature;
71 ciMethodData* _method_data;
72 ciMethodBlocks* _method_blocks;
73
74 // Code attributes.
75 int _code_size;
76 int _max_stack;
77 int _max_locals;
78 vmIntrinsics::ID _intrinsic_id;
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"; }
274 }
275
276 // Given a certain calling environment, find the monomorphic target
277 // for the call. Return NULL if the call is not monomorphic in
278 // its calling environment.
279 ciMethod* find_monomorphic_target(ciInstanceKlass* caller,
280 ciInstanceKlass* callee_holder,
281 ciInstanceKlass* actual_receiver,
282 bool check_access = true);
283
284 // Given a known receiver klass, find the target for the call.
285 // Return NULL if the call has no target or is abstract.
286 ciMethod* resolve_invoke(ciKlass* caller, ciKlass* exact_receiver, bool check_access = true);
287
288 // Find the proper vtable index to invoke this method.
289 int resolve_vtable_index(ciKlass* caller, ciKlass* receiver);
290
291 bool has_option(const char *option);
292 bool has_option_value(const char* option, double& value);
293 bool can_be_compiled();
294 bool can_be_osr_compiled(int entry_bci);
295 void set_not_compilable(const char* reason = NULL);
296 bool has_compiled_code();
297 void log_nmethod_identity(xmlStream* log);
298 bool is_not_reached(int bci);
299 bool was_executed_more_than(int times);
300 bool has_unloaded_classes_in_signature();
301 bool is_klass_loaded(int refinfo_index, bool must_be_resolved) const;
302 bool check_call(int refinfo_index, bool is_static) const;
303 bool ensure_method_data(); // make sure it exists in the VM also
304 MethodCounters* ensure_method_counters();
305 int instructions_size();
306 int scale_count(int count, float prof_factor = 1.); // make MDO count commensurate with IIC
307
308 // Stack walking support
309 bool is_ignored_by_security_stack_walk() const;
310
311 // JSR 292 support
312 bool is_method_handle_intrinsic() const;
313 bool is_compiled_lambda_form() const;
|
70 ciSignature* _signature;
71 ciMethodData* _method_data;
72 ciMethodBlocks* _method_blocks;
73
74 // Code attributes.
75 int _code_size;
76 int _max_stack;
77 int _max_locals;
78 vmIntrinsics::ID _intrinsic_id;
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_parsed;
91 bool _can_be_statically_bound;
92 bool _has_reserved_stack_access;
93
94 // Lazy fields, filled in on demand
95 address _code;
96 ciExceptionHandler** _exception_handlers;
97
98 // Optional liveness analyzer.
99 MethodLiveness* _liveness;
100 #if defined(COMPILER2)
101 ciTypeFlow* _flow;
102 BCEscapeAnalyzer* _bcea;
103 #endif
104
105 ciMethod(const methodHandle& h_m, ciInstanceKlass* holder);
106 ciMethod(ciInstanceKlass* holder, ciSymbol* name, ciSymbol* signature, ciInstanceKlass* accessor);
107
108 oop loader() const { return _holder->loader(); }
109
110 const char* type_string() { return "ciMethod"; }
275 }
276
277 // Given a certain calling environment, find the monomorphic target
278 // for the call. Return NULL if the call is not monomorphic in
279 // its calling environment.
280 ciMethod* find_monomorphic_target(ciInstanceKlass* caller,
281 ciInstanceKlass* callee_holder,
282 ciInstanceKlass* actual_receiver,
283 bool check_access = true);
284
285 // Given a known receiver klass, find the target for the call.
286 // Return NULL if the call has no target or is abstract.
287 ciMethod* resolve_invoke(ciKlass* caller, ciKlass* exact_receiver, bool check_access = true);
288
289 // Find the proper vtable index to invoke this method.
290 int resolve_vtable_index(ciKlass* caller, ciKlass* receiver);
291
292 bool has_option(const char *option);
293 bool has_option_value(const char* option, double& value);
294 bool can_be_compiled();
295 bool can_be_parsed() const { return _can_be_parsed; }
296 bool can_be_osr_compiled(int entry_bci);
297 void set_not_compilable(const char* reason = NULL);
298 bool has_compiled_code();
299 void log_nmethod_identity(xmlStream* log);
300 bool is_not_reached(int bci);
301 bool was_executed_more_than(int times);
302 bool has_unloaded_classes_in_signature();
303 bool is_klass_loaded(int refinfo_index, bool must_be_resolved) const;
304 bool check_call(int refinfo_index, bool is_static) const;
305 bool ensure_method_data(); // make sure it exists in the VM also
306 MethodCounters* ensure_method_counters();
307 int instructions_size();
308 int scale_count(int count, float prof_factor = 1.); // make MDO count commensurate with IIC
309
310 // Stack walking support
311 bool is_ignored_by_security_stack_walk() const;
312
313 // JSR 292 support
314 bool is_method_handle_intrinsic() const;
315 bool is_compiled_lambda_form() const;
|