3769 int java_security_AccessControlContext::_isAuthorized_offset = -1;
3770
3771 #define ACCESSCONTROLCONTEXT_FIELDS_DO(macro) \
3772 macro(_context_offset, k, "context", protectiondomain_signature, false); \
3773 macro(_privilegedContext_offset, k, "privilegedContext", accesscontrolcontext_signature, false); \
3774 macro(_isPrivileged_offset, k, "isPrivileged", bool_signature, false); \
3775 macro(_isAuthorized_offset, k, "isAuthorized", bool_signature, false)
3776
3777 void java_security_AccessControlContext::compute_offsets() {
3778 assert(_isPrivileged_offset == 0, "offsets should be initialized only once");
3779 InstanceKlass* k = SystemDictionary::AccessControlContext_klass();
3780 ACCESSCONTROLCONTEXT_FIELDS_DO(FIELD_COMPUTE_OFFSET);
3781 }
3782
3783 #if INCLUDE_CDS
3784 void java_security_AccessControlContext::serialize_offsets(SerializeClosure* f) {
3785 ACCESSCONTROLCONTEXT_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
3786 }
3787 #endif
3788
3789 bool java_security_AccessControlContext::is_authorized(Handle context) {
3790 assert(context.not_null() && context->klass() == SystemDictionary::AccessControlContext_klass(), "Invalid type");
3791 assert(_isAuthorized_offset != -1, "should be set");
3792 return context->bool_field(_isAuthorized_offset) != 0;
3793 }
3794
3795 oop java_security_AccessControlContext::create(objArrayHandle context, bool isPrivileged, Handle privileged_context, TRAPS) {
3796 assert(_isPrivileged_offset != 0, "offsets should have been initialized");
3797 // Ensure klass is initialized
3798 SystemDictionary::AccessControlContext_klass()->initialize(CHECK_0);
3799 // Allocate result
3800 oop result = SystemDictionary::AccessControlContext_klass()->allocate_instance(CHECK_0);
3801 // Fill in values
3802 result->obj_field_put(_context_offset, context());
3803 result->obj_field_put(_privilegedContext_offset, privileged_context());
3804 result->bool_field_put(_isPrivileged_offset, isPrivileged);
3805 // whitelist AccessControlContexts created by the JVM if present
3806 if (_isAuthorized_offset != -1) {
3807 result->bool_field_put(_isAuthorized_offset, true);
3808 }
3809 return result;
3810 }
3811
3812
3813 // Support for java_lang_ClassLoader
3814
3957 #define SYSTEM_FIELDS_DO(macro) \
3958 macro(static_in_offset, k, "in", input_stream_signature, true); \
3959 macro(static_out_offset, k, "out", print_stream_signature, true); \
3960 macro(static_err_offset, k, "err", print_stream_signature, true); \
3961 macro(static_security_offset, k, "security", security_manager_signature, true)
3962
3963 void java_lang_System::compute_offsets() {
3964 InstanceKlass* k = SystemDictionary::System_klass();
3965 SYSTEM_FIELDS_DO(FIELD_COMPUTE_OFFSET);
3966 }
3967
3968 #if INCLUDE_CDS
3969 void java_lang_System::serialize_offsets(SerializeClosure* f) {
3970 SYSTEM_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
3971 }
3972 #endif
3973
3974 int java_lang_System::in_offset_in_bytes() { return static_in_offset; }
3975 int java_lang_System::out_offset_in_bytes() { return static_out_offset; }
3976 int java_lang_System::err_offset_in_bytes() { return static_err_offset; }
3977
3978
3979 bool java_lang_System::has_security_manager() {
3980 InstanceKlass* ik = SystemDictionary::System_klass();
3981 oop base = ik->static_field_base_raw();
3982 return base->obj_field(static_security_offset) != NULL;
3983 }
3984
3985 int java_lang_Class::_klass_offset;
3986 int java_lang_Class::_array_klass_offset;
3987 int java_lang_Class::_oop_size_offset;
3988 int java_lang_Class::_static_oop_field_count_offset;
3989 int java_lang_Class::_class_loader_offset;
3990 int java_lang_Class::_module_offset;
3991 int java_lang_Class::_protection_domain_offset;
3992 int java_lang_Class::_component_mirror_offset;
3993 int java_lang_Class::_init_lock_offset;
3994 int java_lang_Class::_signers_offset;
3995 GrowableArray<Klass*>* java_lang_Class::_fixup_mirror_list = NULL;
3996 GrowableArray<Klass*>* java_lang_Class::_fixup_module_field_list = NULL;
3997 int java_lang_Throwable::backtrace_offset;
3998 int java_lang_Throwable::detailMessage_offset;
3999 int java_lang_Throwable::stackTrace_offset;
4000 int java_lang_Throwable::depth_offset;
4001 int java_lang_Throwable::static_unassigned_stacktrace_offset;
4002 int java_lang_reflect_AccessibleObject::override_offset;
4003 int java_lang_reflect_Method::clazz_offset;
|
3769 int java_security_AccessControlContext::_isAuthorized_offset = -1;
3770
3771 #define ACCESSCONTROLCONTEXT_FIELDS_DO(macro) \
3772 macro(_context_offset, k, "context", protectiondomain_signature, false); \
3773 macro(_privilegedContext_offset, k, "privilegedContext", accesscontrolcontext_signature, false); \
3774 macro(_isPrivileged_offset, k, "isPrivileged", bool_signature, false); \
3775 macro(_isAuthorized_offset, k, "isAuthorized", bool_signature, false)
3776
3777 void java_security_AccessControlContext::compute_offsets() {
3778 assert(_isPrivileged_offset == 0, "offsets should be initialized only once");
3779 InstanceKlass* k = SystemDictionary::AccessControlContext_klass();
3780 ACCESSCONTROLCONTEXT_FIELDS_DO(FIELD_COMPUTE_OFFSET);
3781 }
3782
3783 #if INCLUDE_CDS
3784 void java_security_AccessControlContext::serialize_offsets(SerializeClosure* f) {
3785 ACCESSCONTROLCONTEXT_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
3786 }
3787 #endif
3788
3789 oop java_security_AccessControlContext::create(objArrayHandle context, bool isPrivileged, Handle privileged_context, TRAPS) {
3790 assert(_isPrivileged_offset != 0, "offsets should have been initialized");
3791 // Ensure klass is initialized
3792 SystemDictionary::AccessControlContext_klass()->initialize(CHECK_0);
3793 // Allocate result
3794 oop result = SystemDictionary::AccessControlContext_klass()->allocate_instance(CHECK_0);
3795 // Fill in values
3796 result->obj_field_put(_context_offset, context());
3797 result->obj_field_put(_privilegedContext_offset, privileged_context());
3798 result->bool_field_put(_isPrivileged_offset, isPrivileged);
3799 // whitelist AccessControlContexts created by the JVM if present
3800 if (_isAuthorized_offset != -1) {
3801 result->bool_field_put(_isAuthorized_offset, true);
3802 }
3803 return result;
3804 }
3805
3806
3807 // Support for java_lang_ClassLoader
3808
3951 #define SYSTEM_FIELDS_DO(macro) \
3952 macro(static_in_offset, k, "in", input_stream_signature, true); \
3953 macro(static_out_offset, k, "out", print_stream_signature, true); \
3954 macro(static_err_offset, k, "err", print_stream_signature, true); \
3955 macro(static_security_offset, k, "security", security_manager_signature, true)
3956
3957 void java_lang_System::compute_offsets() {
3958 InstanceKlass* k = SystemDictionary::System_klass();
3959 SYSTEM_FIELDS_DO(FIELD_COMPUTE_OFFSET);
3960 }
3961
3962 #if INCLUDE_CDS
3963 void java_lang_System::serialize_offsets(SerializeClosure* f) {
3964 SYSTEM_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
3965 }
3966 #endif
3967
3968 int java_lang_System::in_offset_in_bytes() { return static_in_offset; }
3969 int java_lang_System::out_offset_in_bytes() { return static_out_offset; }
3970 int java_lang_System::err_offset_in_bytes() { return static_err_offset; }
3971
3972 int java_lang_Class::_klass_offset;
3973 int java_lang_Class::_array_klass_offset;
3974 int java_lang_Class::_oop_size_offset;
3975 int java_lang_Class::_static_oop_field_count_offset;
3976 int java_lang_Class::_class_loader_offset;
3977 int java_lang_Class::_module_offset;
3978 int java_lang_Class::_protection_domain_offset;
3979 int java_lang_Class::_component_mirror_offset;
3980 int java_lang_Class::_init_lock_offset;
3981 int java_lang_Class::_signers_offset;
3982 GrowableArray<Klass*>* java_lang_Class::_fixup_mirror_list = NULL;
3983 GrowableArray<Klass*>* java_lang_Class::_fixup_module_field_list = NULL;
3984 int java_lang_Throwable::backtrace_offset;
3985 int java_lang_Throwable::detailMessage_offset;
3986 int java_lang_Throwable::stackTrace_offset;
3987 int java_lang_Throwable::depth_offset;
3988 int java_lang_Throwable::static_unassigned_stacktrace_offset;
3989 int java_lang_reflect_AccessibleObject::override_offset;
3990 int java_lang_reflect_Method::clazz_offset;
|