--- old/src/hotspot/share/classfile/classFileParser.hpp 2019-12-03 19:36:34.000000000 -0800 +++ new/src/hotspot/share/classfile/classFileParser.hpp 2019-12-03 19:36:33.000000000 -0800 @@ -36,6 +36,7 @@ class Array; class ClassFileStream; class ClassLoaderData; +class ClassInstanceInfo; class CompressedLineNumberWriteStream; class ConstMethod; class FieldInfo; @@ -78,11 +79,12 @@ typedef void unsafe_u2; const ClassFileStream* _stream; // Actual input stream - const Symbol* _requested_name; Symbol* _class_name; mutable ClassLoaderData* _loader_data; const InstanceKlass* _unsafe_anonymous_host; GrowableArray* _cp_patches; // overrides for CP entries + const bool _is_hidden; + const bool _can_access_vm_annotations; int _num_patched_klasses; int _max_num_patched_klasses; int _orig_cp_size; @@ -175,7 +177,9 @@ void prepend_host_package_name(const InstanceKlass* unsafe_anonymous_host, TRAPS); void fix_unsafe_anonymous_class_name(TRAPS); - void fill_instance_klass(InstanceKlass* ik, bool cf_changed_in_CFLH, TRAPS); + void fill_instance_klass(InstanceKlass* ik, bool cf_changed_in_CFLH, + const ClassInstanceInfo& cl_inst_info, TRAPS); + void set_klass(InstanceKlass* instance); void set_class_bad_constant_seen(short bad_constant); @@ -487,8 +491,6 @@ FieldLayoutInfo* info, TRAPS); - void update_class_name(Symbol* new_name); - public: ClassFileParser(ClassFileStream* stream, Symbol* name, @@ -496,12 +498,14 @@ Handle protection_domain, const InstanceKlass* unsafe_anonymous_host, GrowableArray* cp_patches, + const bool is_hidden, + const bool can_access_vm_annotations, Publicity pub_level, TRAPS); ~ClassFileParser(); - InstanceKlass* create_instance_klass(bool cf_changed_in_CFLH, TRAPS); + InstanceKlass* create_instance_klass(bool cf_changed_in_CFLH, const ClassInstanceInfo& cl_inst_info, TRAPS); const ClassFileStream* clone_stream() const; @@ -517,6 +521,7 @@ u2 this_class_index() const { return _this_class_index; } bool is_unsafe_anonymous() const { return _unsafe_anonymous_host != NULL; } + bool is_hidden() const { return _is_hidden; } bool is_interface() const { return _access_flags.is_interface(); } const InstanceKlass* unsafe_anonymous_host() const { return _unsafe_anonymous_host; }