< prev index next >

src/hotspot/share/oops/instanceKlass.hpp

Print this page

        

*** 30,39 **** --- 30,40 ---- #include "oops/annotations.hpp" #include "oops/constMethod.hpp" #include "oops/fieldInfo.hpp" #include "oops/instanceOop.hpp" #include "oops/klassVtable.hpp" + #include "oops/recordParamInfo.hpp" #include "runtime/handles.hpp" #include "runtime/os.hpp" #include "utilities/accessFlags.hpp" #include "utilities/align.hpp" #include "utilities/macros.hpp"
*** 180,197 **** --- 181,204 ---- // 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 PermittedSubtypes attribute. An array of shorts, where each is a + // class info index for the class that is a permitted subtype. + Array<jushort>* _permitted_subtypes; + // the source debug extension for this klass, NULL if not specified. // Specified as UTF-8 string without terminating zero byte in the classfile, // it is stored in the instanceklass as a NULL-terminated UTF-8 string const char* _source_debug_extension; // Array name derived from this class which needs unreferencing // if this class is unloaded. Symbol* _array_name; + Array<u2>* _record_params; + // Number of heapOopSize words used by non-static fields in this klass // (including inherited fields but after header_size()). int _nonstatic_field_size; int _static_field_size; // number words used by static fields (oop and non-oop) in this klass // Constant pool index to the utf8 entry of the Generic signature,
*** 200,209 **** --- 207,217 ---- // Constant pool index to the utf8 entry for the name of source file // containing this klass, 0 if not specified. u2 _source_file_name_index; u2 _static_oop_field_count;// number of static oop fields in this klass u2 _java_fields_count; // The number of declared Java fields + int _record_params_count; // The number of record parameters int _nonstatic_oop_map_size;// size in words of nonstatic oop map blocks int _itable_len; // length of Java itable (in words) // _is_marked_dependent can be set concurrently, thus cannot be part of the // _misc_flags.
*** 416,425 **** --- 424,435 ---- private: friend class fieldDescriptor; FieldInfo* field(int index) const { return FieldInfo::from_field_array(_fields, index); } + RecordParamInfo* record_param(int index) const { return RecordParamInfo::from_record_params_array(_record_params, index); } + public: int field_offset (int index) const { return field(index)->offset(); } int field_access_flags(int index) const { return field(index)->access_flags(); } Symbol* field_name (int index) const { return field(index)->name(constants()); } Symbol* field_signature (int index) const { return field(index)->signature(constants()); }
*** 444,457 **** --- 454,487 ---- // nest-host index jushort nest_host_index() const { return _nest_host_index; } void set_nest_host_index(u2 i) { _nest_host_index = i; } + // record parameters + int record_param_accessor_index(int index) const { return record_param(index)->accessor_index(); } + + int record_params_count() const { return _record_params_count; } + + Array<u2>* record_params() const { return _record_params; } + void set_record_params(Array<u2>* record_params, int record_params_count) { + guarantee(_record_params == NULL || record_params == NULL, "Just checking"); + _record_params = record_params; + _record_params_count = record_params_count; + } + + // permitted subtypes + Array<u2>* permitted_subtypes() const { return _permitted_subtypes; } + void set_permitted_subtypes(Array<u2>* s) { _permitted_subtypes = s; } + 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: + // Called to verify that k is a permitted subtype of this class + bool has_as_permitted_subtype(const InstanceKlass* k, TRAPS) const; + // 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);
*** 504,513 **** --- 534,546 ---- bool is_in_error_state() const { return _init_state == initialization_error; } bool is_reentrant_initialization(Thread *thread) { return thread == _init_thread; } ClassState init_state() { return (ClassState)_init_state; } bool is_rewritten() const { return (_misc_flags & _misc_rewritten) != 0; } + // is this a sealed class + bool is_sealed() const; + // defineClass specified verification bool should_verify_class() const { return (_misc_flags & _misc_should_verify_class) != 0; } void set_should_verify_class(bool value) {
< prev index next >