441
442 // inner classes
443 Array<u2>* inner_classes() const { return _inner_classes; }
444 void set_inner_classes(Array<u2>* f) { _inner_classes = f; }
445
446 // nest members
447 Array<u2>* nest_members() const { return _nest_members; }
448 void set_nest_members(Array<u2>* m) { _nest_members = m; }
449
450 // nest-host index
451 jushort nest_host_index() const { return _nest_host_index; }
452 void set_nest_host_index(u2 i) { _nest_host_index = i; }
453
454 // Returns nest-host class, resolving and validating it if needed
455 // Returns NULL if an exception occurs during loading, or validation fails
456 InstanceKlass* nest_host(Symbol* validationException, TRAPS);
457 InstanceKlass* raw_nest_host() { return _nest_host; } // debugging
458
459 // Called to verify that k is a member of this nest - does not look at k's nest-host
460 bool has_nest_member(InstanceKlass* k, TRAPS) const;
461 // Check if this klass is a nestmate of k
462 bool has_nestmate_access_to(InstanceKlass* k, TRAPS);
463
464 enum InnerClassAttributeOffset {
465 // From http://mirror.eng/products/jdk/1.1/docs/guide/innerclasses/spec/innerclasses.doc10.html#18814
466 inner_class_inner_class_info_offset = 0,
467 inner_class_outer_class_info_offset = 1,
468 inner_class_inner_name_offset = 2,
469 inner_class_access_flags_offset = 3,
470 inner_class_next_offset = 4
471 };
472
473 enum EnclosingMethodAttributeOffset {
474 enclosing_method_class_index_offset = 0,
475 enclosing_method_method_index_offset = 1,
476 enclosing_method_attribute_size = 2
477 };
478
479 // method override check
480 bool is_override(const methodHandle& super_method, Handle targetclassloader, Symbol* targetclassname, TRAPS);
481
|
441
442 // inner classes
443 Array<u2>* inner_classes() const { return _inner_classes; }
444 void set_inner_classes(Array<u2>* f) { _inner_classes = f; }
445
446 // nest members
447 Array<u2>* nest_members() const { return _nest_members; }
448 void set_nest_members(Array<u2>* m) { _nest_members = m; }
449
450 // nest-host index
451 jushort nest_host_index() const { return _nest_host_index; }
452 void set_nest_host_index(u2 i) { _nest_host_index = i; }
453
454 // Returns nest-host class, resolving and validating it if needed
455 // Returns NULL if an exception occurs during loading, or validation fails
456 InstanceKlass* nest_host(Symbol* validationException, TRAPS);
457 InstanceKlass* raw_nest_host() { return _nest_host; } // debugging
458
459 // Called to verify that k is a member of this nest - does not look at k's nest-host
460 bool has_nest_member(InstanceKlass* k, TRAPS) const;
461 // Check if this klass is a nestmate of k - resolves this nest-host and k's
462 bool has_nestmate_access_to(InstanceKlass* k, TRAPS);
463
464 enum InnerClassAttributeOffset {
465 // From http://mirror.eng/products/jdk/1.1/docs/guide/innerclasses/spec/innerclasses.doc10.html#18814
466 inner_class_inner_class_info_offset = 0,
467 inner_class_outer_class_info_offset = 1,
468 inner_class_inner_name_offset = 2,
469 inner_class_access_flags_offset = 3,
470 inner_class_next_offset = 4
471 };
472
473 enum EnclosingMethodAttributeOffset {
474 enclosing_method_class_index_offset = 0,
475 enclosing_method_method_index_offset = 1,
476 enclosing_method_attribute_size = 2
477 };
478
479 // method override check
480 bool is_override(const methodHandle& super_method, Handle targetclassloader, Symbol* targetclassname, TRAPS);
481
|