106 #ifdef CC_INTERP |
106 #ifdef CC_INTERP |
107 int _result_index; // C++ interpreter needs for converting results to/from stack |
107 int _result_index; // C++ interpreter needs for converting results to/from stack |
108 #endif |
108 #endif |
109 u2 _method_size; // size of this object |
109 u2 _method_size; // size of this object |
110 u1 _intrinsic_id; // vmSymbols::intrinsic_id (0 == _none) |
110 u1 _intrinsic_id; // vmSymbols::intrinsic_id (0 == _none) |
111 u1 _jfr_towrite : 1, // Flags |
111 |
112 _caller_sensitive : 1, |
112 // Flags |
113 _force_inline : 1, |
113 enum Flags { |
114 _hidden : 1, |
114 _jfr_towrite = 1 << 0, |
115 _dont_inline : 1, |
115 _caller_sensitive = 1 << 1, |
116 : 3; |
116 _force_inline = 1 << 2, |
|
117 _dont_inline = 1 << 3, |
|
118 _hidden = 1 << 4 |
|
119 }; |
|
120 u1 _flags; |
117 |
121 |
118 #ifndef PRODUCT |
122 #ifndef PRODUCT |
119 int _compiled_invocation_count; // Number of nmethod invocations so far (for perf. debugging) |
123 int _compiled_invocation_count; // Number of nmethod invocations so far (for perf. debugging) |
120 #endif |
124 #endif |
121 // Entry point for calling both from and to the interpreter. |
125 // Entry point for calling both from and to the interpreter. |
757 |
761 |
758 // Helper routines for intrinsic_id() and vmIntrinsics::method(). |
762 // Helper routines for intrinsic_id() and vmIntrinsics::method(). |
759 void init_intrinsic_id(); // updates from _none if a match |
763 void init_intrinsic_id(); // updates from _none if a match |
760 static vmSymbols::SID klass_id_for_intrinsics(Klass* holder); |
764 static vmSymbols::SID klass_id_for_intrinsics(Klass* holder); |
761 |
765 |
762 bool jfr_towrite() { return _jfr_towrite; } |
766 bool jfr_towrite() { |
763 void set_jfr_towrite(bool x) { _jfr_towrite = x; } |
767 return (_flags & _jfr_towrite) != 0; |
764 bool caller_sensitive() { return _caller_sensitive; } |
768 } |
765 void set_caller_sensitive(bool x) { _caller_sensitive = x; } |
769 void set_jfr_towrite(bool x) { |
766 bool force_inline() { return _force_inline; } |
770 _flags = x ? (_flags | _jfr_towrite) : (_flags & ~_jfr_towrite); |
767 void set_force_inline(bool x) { _force_inline = x; } |
771 } |
768 bool dont_inline() { return _dont_inline; } |
772 |
769 void set_dont_inline(bool x) { _dont_inline = x; } |
773 bool caller_sensitive() { |
770 bool is_hidden() { return _hidden; } |
774 return (_flags & _caller_sensitive) != 0; |
771 void set_hidden(bool x) { _hidden = x; } |
775 } |
|
776 void set_caller_sensitive(bool x) { |
|
777 _flags = x ? (_flags | _caller_sensitive) : (_flags & ~_caller_sensitive); |
|
778 } |
|
779 |
|
780 bool force_inline() { |
|
781 return (_flags & _force_inline) != 0; |
|
782 } |
|
783 void set_force_inline(bool x) { |
|
784 _flags = x ? (_flags | _force_inline) : (_flags & ~_force_inline); |
|
785 } |
|
786 |
|
787 bool dont_inline() { |
|
788 return (_flags & _dont_inline) != 0; |
|
789 } |
|
790 void set_dont_inline(bool x) { |
|
791 _flags = x ? (_flags | _dont_inline) : (_flags & ~_dont_inline); |
|
792 } |
|
793 |
|
794 bool is_hidden() { |
|
795 return (_flags & _hidden) != 0; |
|
796 } |
|
797 void set_hidden(bool x) { |
|
798 _flags = x ? (_flags | _hidden) : (_flags & ~_hidden); |
|
799 } |
|
800 |
772 ConstMethod::MethodType method_type() const { |
801 ConstMethod::MethodType method_type() const { |
773 return _constMethod->method_type(); |
802 return _constMethod->method_type(); |
774 } |
803 } |
775 bool is_overpass() const { return method_type() == ConstMethod::OVERPASS; } |
804 bool is_overpass() const { return method_type() == ConstMethod::OVERPASS; } |
776 |
805 |