< 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 >