< prev index next >
src/hotspot/share/classfile/classFileParser.hpp
Print this page
rev 58565 : 8238358: Implementation of JEP 371: Hidden Classes
Reviewed-by: duke
Contributed-by: mandy.chung@oracle.com, lois.foltan@oracle.com, david.holmes@oracle.com, harold.seigel@oracle.com, serguei.spitsyn@oracle.com, alex.buckley@oracle.com, jamsheed.c.m@oracle.com
*** 35,44 ****
--- 35,46 ----
class Annotations;
template <typename T>
class Array;
class ClassFileStream;
class ClassLoaderData;
+ class ClassLoadInfo;
+ class ClassInstanceInfo;
class CompressedLineNumberWriteStream;
class ConstMethod;
class FieldInfo;
template <typename T>
class GrowableArray;
*** 107,121 ****
private:
// Potentially unaligned pointer to various 16-bit entries in the class file
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<Handle>* _cp_patches; // overrides for CP entries
int _num_patched_klasses;
int _max_num_patched_klasses;
int _orig_cp_size;
int _first_patched_klass_resolved_index;
--- 109,124 ----
private:
// Potentially unaligned pointer to various 16-bit entries in the class file
typedef void unsafe_u2;
const ClassFileStream* _stream; // Actual input stream
Symbol* _class_name;
mutable ClassLoaderData* _loader_data;
const InstanceKlass* _unsafe_anonymous_host;
GrowableArray<Handle>* _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;
int _first_patched_klass_resolved_index;
*** 199,216 ****
bool _has_vanilla_constructor;
int _max_bootstrap_specifier_index; // detects BSS values
void parse_stream(const ClassFileStream* const stream, TRAPS);
void post_process_parsed_stream(const ClassFileStream* const stream,
ConstantPool* cp,
TRAPS);
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 set_klass(InstanceKlass* instance);
void set_class_bad_constant_seen(short bad_constant);
short class_bad_constant_seen() { return _bad_constant_seen; }
void set_class_synthetic_flag(bool x) { _synthetic_flag = x; }
--- 202,223 ----
bool _has_vanilla_constructor;
int _max_bootstrap_specifier_index; // detects BSS values
void parse_stream(const ClassFileStream* const stream, TRAPS);
+ void mangle_hidden_class_name(InstanceKlass* const ik);
+
void post_process_parsed_stream(const ClassFileStream* const stream,
ConstantPool* cp,
TRAPS);
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,
! const ClassInstanceInfo& cl_inst_info, TRAPS);
!
void set_klass(InstanceKlass* instance);
void set_class_bad_constant_seen(short bad_constant);
short class_bad_constant_seen() { return _bad_constant_seen; }
void set_class_synthetic_flag(bool x) { _synthetic_flag = x; }
*** 531,549 ****
public:
ClassFileParser(ClassFileStream* stream,
Symbol* name,
ClassLoaderData* loader_data,
! Handle protection_domain,
! const InstanceKlass* unsafe_anonymous_host,
! GrowableArray<Handle>* cp_patches,
Publicity pub_level,
TRAPS);
~ClassFileParser();
! InstanceKlass* create_instance_klass(bool cf_changed_in_CFLH, TRAPS);
const ClassFileStream* clone_stream() const;
void set_klass_to_deallocate(InstanceKlass* klass);
--- 538,554 ----
public:
ClassFileParser(ClassFileStream* stream,
Symbol* name,
ClassLoaderData* loader_data,
! const ClassLoadInfo* cl_info,
Publicity pub_level,
TRAPS);
~ClassFileParser();
! InstanceKlass* create_instance_klass(bool cf_changed_in_CFLH, const ClassInstanceInfo& cl_inst_info, TRAPS);
const ClassFileStream* clone_stream() const;
void set_klass_to_deallocate(InstanceKlass* klass);
*** 555,564 ****
--- 560,570 ----
int itable_size() const { return _itable_size; }
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; }
const GrowableArray<Handle>* cp_patches() const { return _cp_patches; }
ClassLoaderData* loader_data() const { return _loader_data; }
< prev index next >