< prev index next > src/hotspot/share/ci/ciMethod.hpp
Print this page
class xmlStream;
// Whether profiling found an oop to be always, never or sometimes
// null
enum ProfilePtrKind {
+ ProfileUnknownNull,
ProfileAlwaysNull,
ProfileNeverNull,
ProfileMaybeNull
};
bool caller_sensitive() const { return get_Method()->caller_sensitive(); }
bool force_inline() const { return get_Method()->force_inline(); }
bool dont_inline() const { return get_Method()->dont_inline(); }
bool intrinsic_candidate() const { return get_Method()->intrinsic_candidate(); }
! bool is_static_initializer() const { return get_Method()->is_static_initializer(); }
bool changes_current_thread() const { return get_Method()->changes_current_thread(); }
bool deprecated() const { return is_loaded() && get_Method()->deprecated(); }
bool check_intrinsic_candidate() const {
if (intrinsic_id() == vmIntrinsics::_blackhole) {
bool caller_sensitive() const { return get_Method()->caller_sensitive(); }
bool force_inline() const { return get_Method()->force_inline(); }
bool dont_inline() const { return get_Method()->dont_inline(); }
bool intrinsic_candidate() const { return get_Method()->intrinsic_candidate(); }
! bool is_class_initializer() const { return get_Method()->is_class_initializer(); }
bool changes_current_thread() const { return get_Method()->changes_current_thread(); }
bool deprecated() const { return is_loaded() && get_Method()->deprecated(); }
bool check_intrinsic_candidate() const {
if (intrinsic_id() == vmIntrinsics::_blackhole) {
// Does type profiling provide any useful information at this point?
bool argument_profiled_type(int bci, int i, ciKlass*& type, ProfilePtrKind& ptr_kind);
bool parameter_profiled_type(int i, ciKlass*& type, ProfilePtrKind& ptr_kind);
bool return_profiled_type(int bci, ciKlass*& type, ProfilePtrKind& ptr_kind);
!
ciField* get_field_at_bci( int bci, bool &will_link);
ciMethod* get_method_at_bci(int bci, bool &will_link, ciSignature* *declared_signature);
ciMethod* get_method_at_bci(int bci) {
bool ignored_will_link;
ciSignature* ignored_declared_signature;
// Does type profiling provide any useful information at this point?
bool argument_profiled_type(int bci, int i, ciKlass*& type, ProfilePtrKind& ptr_kind);
bool parameter_profiled_type(int i, ciKlass*& type, ProfilePtrKind& ptr_kind);
bool return_profiled_type(int bci, ciKlass*& type, ProfilePtrKind& ptr_kind);
! bool array_access_profiled_type(int bci, ciKlass*& array_type, ciKlass*& element_type, ProfilePtrKind& element_ptr, bool &flat_array, bool &null_free);
+ bool acmp_profiled_type(int bci, ciKlass*& left_type, ciKlass*& right_type,
+ ProfilePtrKind& left_ptr, ProfilePtrKind& right_ptr,
+ bool &left_inline_type, bool &right_inline_type);
ciField* get_field_at_bci( int bci, bool &will_link);
ciMethod* get_method_at_bci(int bci, bool &will_link, ciSignature* *declared_signature);
ciMethod* get_method_at_bci(int bci) {
bool ignored_will_link;
ciSignature* ignored_declared_signature;
bool is_final () const { return flags().is_final(); }
bool is_synchronized() const { return flags().is_synchronized(); }
bool is_native () const { return flags().is_native(); }
bool is_interface () const { return flags().is_interface(); }
bool is_abstract () const { return flags().is_abstract(); }
+ bool has_vararg () const { return flags().has_vararg(); }
// Other flags
bool is_final_method() const { return is_final() || holder()->is_final(); }
bool is_default_method() const { return !is_abstract() && !is_private() &&
holder()->is_interface(); }
bool has_loops () const;
bool has_jsrs () const;
bool is_getter () const;
bool is_setter () const;
bool is_accessor () const;
- bool is_initializer () const;
bool is_empty () const;
bool can_be_statically_bound() const { return _can_be_statically_bound; }
bool has_reserved_stack_access() const { return _has_reserved_stack_access; }
bool is_boxing_method() const;
bool is_unboxing_method() const;
bool is_vector_method() const;
- bool is_object_initializer() const;
bool can_be_statically_bound(ciInstanceKlass* context) const;
bool can_omit_stack_trace() const;
bool has_loops () const;
bool has_jsrs () const;
bool is_getter () const;
bool is_setter () const;
bool is_accessor () const;
bool is_empty () const;
bool can_be_statically_bound() const { return _can_be_statically_bound; }
bool has_reserved_stack_access() const { return _has_reserved_stack_access; }
bool is_boxing_method() const;
bool is_unboxing_method() const;
+ bool is_object_constructor() const;
bool is_vector_method() const;
bool can_be_statically_bound(ciInstanceKlass* context) const;
bool can_omit_stack_trace() const;
// Print the name of this method in various incarnations.
void print_name(outputStream* st = tty);
void print_short_name(outputStream* st = tty);
static bool is_consistent_info(ciMethod* declared_method, ciMethod* resolved_method);
+
+ // Support for the inline type calling convention
+ bool is_scalarized_arg(int idx) const;
+ bool has_scalarized_args() const;
+ const GrowableArray<SigEntry>* get_sig_cc() const;
};
#endif // SHARE_CI_CIMETHOD_HPP
< prev index next >