< prev index next >

src/hotspot/share/oops/instanceKlass.hpp

Print this page
rev 59275 : [mq]: v1

*** 193,206 **** // The NestHost attribute. The class info index for the class // that is the nest-host of this class. This data has not been validated. jushort _nest_host_index; ! // Resolved nest-host klass: either true nest-host or self if we are not nested. // By always being set it makes nest-member access checks simpler. InstanceKlass* _nest_host; // The contents of the Record attribute. Array<RecordComponent*>* _record_components; // the source debug extension for this klass, NULL if not specified. // Specified as UTF-8 string without terminating zero byte in the classfile, --- 193,212 ---- // The NestHost attribute. The class info index for the class // that is the nest-host of this class. This data has not been validated. jushort _nest_host_index; ! // Resolved nest-host klass: either true nest-host or self if we are not ! // nested, or an error occurred resolving or validating the nominated ! // nest-host. Can also be set directly by JDK API's that establish nest ! // relationships. // By always being set it makes nest-member access checks simpler. InstanceKlass* _nest_host; + // Used to record a reason for nest-host resolution/validation failures. + const char* _nest_host_res_error; + // The contents of the Record attribute. Array<RecordComponent*>* _record_components; // the source debug extension for this klass, NULL if not specified. // Specified as UTF-8 string without terminating zero byte in the classfile,
*** 482,499 **** private: // Called to verify that k is a member of this nest - does not look at k's nest-host bool has_nest_member(InstanceKlass* k, TRAPS) const; public: ! // Returns nest-host class, resolving and validating it if needed ! // Returns NULL if an exception occurs during loading, or validation fails ! InstanceKlass* nest_host(Symbol* validationException, TRAPS); // Check if this klass is a nestmate of k - resolves this nest-host and k's bool has_nestmate_access_to(InstanceKlass* k, TRAPS); - // Returns the runtime nest host. If static nest host is valid, set the nest host; - // otherwise this klass is the host of a nest; all errors are ignored - InstanceKlass* runtime_nest_host(TRAPS); enum InnerClassAttributeOffset { // From http://mirror.eng/products/jdk/1.1/docs/guide/innerclasses/spec/innerclasses.doc10.html#18814 inner_class_inner_class_info_offset = 0, inner_class_outer_class_info_offset = 1, --- 488,505 ---- private: // Called to verify that k is a member of this nest - does not look at k's nest-host bool has_nest_member(InstanceKlass* k, TRAPS) const; public: ! // Used to construct informative IllegalAccessError messages at a higher level. ! // Returns NULL if there was no error. ! const char* nest_host_resolution_error() { return _nest_host_res_error; } ! // Returns nest-host class, resolving and validating it if needed. ! // Returns NULL if resolution is not possible from the calling context. ! InstanceKlass* nest_host(TRAPS); // Check if this klass is a nestmate of k - resolves this nest-host and k's bool has_nestmate_access_to(InstanceKlass* k, TRAPS); enum InnerClassAttributeOffset { // From http://mirror.eng/products/jdk/1.1/docs/guide/innerclasses/spec/innerclasses.doc10.html#18814 inner_class_inner_class_info_offset = 0, inner_class_outer_class_info_offset = 1,
< prev index next >