comparison src/share/vm/oops/method.hpp @ 8866:16885e702c88

7198429: need checked categorization of caller-sensitive methods in the JDK Reviewed-by: kvn, jrose
author twisti
date Mon, 25 Mar 2013 17:13:26 -0700
parents 56c364daccc3
children b9a918201d47 b84fd7d73702 aeaca88565e6
comparison
equal deleted inserted replaced
8865:818a1ac7da7a 8866:16885e702c88
116 #ifdef CC_INTERP 116 #ifdef CC_INTERP
117 int _result_index; // C++ interpreter needs for converting results to/from stack 117 int _result_index; // C++ interpreter needs for converting results to/from stack
118 #endif 118 #endif
119 u2 _method_size; // size of this object 119 u2 _method_size; // size of this object
120 u1 _intrinsic_id; // vmSymbols::intrinsic_id (0 == _none) 120 u1 _intrinsic_id; // vmSymbols::intrinsic_id (0 == _none)
121 u1 _jfr_towrite : 1, // Flags 121 u1 _jfr_towrite : 1, // Flags
122 _force_inline : 1, 122 _caller_sensitive : 1,
123 _hidden : 1, 123 _force_inline : 1,
124 _dont_inline : 1, 124 _hidden : 1,
125 : 4; 125 _dont_inline : 1,
126 : 3;
126 u2 _interpreter_throwout_count; // Count of times method was exited via exception while interpreting 127 u2 _interpreter_throwout_count; // Count of times method was exited via exception while interpreting
127 u2 _number_of_breakpoints; // fullspeed debugging support 128 u2 _number_of_breakpoints; // fullspeed debugging support
128 InvocationCounter _invocation_counter; // Incremented before each activation of the method - used to trigger frequency-based optimizations 129 InvocationCounter _invocation_counter; // Incremented before each activation of the method - used to trigger frequency-based optimizations
129 InvocationCounter _backedge_counter; // Incremented before each backedge taken - used to trigger frequencey-based optimizations 130 InvocationCounter _backedge_counter; // Incremented before each backedge taken - used to trigger frequencey-based optimizations
130 131
616 int line_number_from_bci(int bci) const; 617 int line_number_from_bci(int bci) const;
617 618
618 // Reflection support 619 // Reflection support
619 bool is_overridden_in(Klass* k) const; 620 bool is_overridden_in(Klass* k) const;
620 621
622 // Stack walking support
623 bool is_ignored_by_security_stack_walk() const;
624
621 // JSR 292 support 625 // JSR 292 support
622 bool is_method_handle_intrinsic() const; // MethodHandles::is_signature_polymorphic_intrinsic(intrinsic_id) 626 bool is_method_handle_intrinsic() const; // MethodHandles::is_signature_polymorphic_intrinsic(intrinsic_id)
623 bool is_compiled_lambda_form() const; // intrinsic_id() == vmIntrinsics::_compiledLambdaForm 627 bool is_compiled_lambda_form() const; // intrinsic_id() == vmIntrinsics::_compiledLambdaForm
624 bool has_member_arg() const; // intrinsic_id() == vmIntrinsics::_linkToSpecial, etc. 628 bool has_member_arg() const; // intrinsic_id() == vmIntrinsics::_linkToSpecial, etc.
625 static methodHandle make_method_handle_intrinsic(vmIntrinsics::ID iid, // _invokeBasic, _linkToVirtual 629 static methodHandle make_method_handle_intrinsic(vmIntrinsics::ID iid, // _invokeBasic, _linkToVirtual
703 707
704 // Helper routines for intrinsic_id() and vmIntrinsics::method(). 708 // Helper routines for intrinsic_id() and vmIntrinsics::method().
705 void init_intrinsic_id(); // updates from _none if a match 709 void init_intrinsic_id(); // updates from _none if a match
706 static vmSymbols::SID klass_id_for_intrinsics(Klass* holder); 710 static vmSymbols::SID klass_id_for_intrinsics(Klass* holder);
707 711
708 bool jfr_towrite() { return _jfr_towrite; } 712 bool jfr_towrite() { return _jfr_towrite; }
709 void set_jfr_towrite(bool towrite) { _jfr_towrite = towrite; } 713 void set_jfr_towrite(bool x) { _jfr_towrite = x; }
710 714 bool caller_sensitive() { return _caller_sensitive; }
711 bool force_inline() { return _force_inline; } 715 void set_caller_sensitive(bool x) { _caller_sensitive = x; }
712 void set_force_inline(bool x) { _force_inline = x; } 716 bool force_inline() { return _force_inline; }
713 bool dont_inline() { return _dont_inline; } 717 void set_force_inline(bool x) { _force_inline = x; }
714 void set_dont_inline(bool x) { _dont_inline = x; } 718 bool dont_inline() { return _dont_inline; }
715 bool is_hidden() { return _hidden; } 719 void set_dont_inline(bool x) { _dont_inline = x; }
716 void set_hidden(bool x) { _hidden = x; } 720 bool is_hidden() { return _hidden; }
721 void set_hidden(bool x) { _hidden = x; }
717 ConstMethod::MethodType method_type() const { 722 ConstMethod::MethodType method_type() const {
718 return _constMethod->method_type(); 723 return _constMethod->method_type();
719 } 724 }
720 bool is_overpass() const { return method_type() == ConstMethod::OVERPASS; } 725 bool is_overpass() const { return method_type() == ConstMethod::OVERPASS; }
721 726