739
740 oop resolve_bootstrap_specifier_at(int index, TRAPS) {
741 constantPoolHandle h_this(THREAD, this);
742 return resolve_bootstrap_specifier_at_impl(h_this, index, THREAD);
743 }
744
745 // Klass name matches name at offset
746 bool klass_name_at_matches(const InstanceKlass* k, int which);
747
748 // Sizing
749 int length() const { return _length; }
750 void set_length(int length) { _length = length; }
751
752 // Tells whether index is within bounds.
753 bool is_within_bounds(int index) const {
754 return 0 <= index && index < length();
755 }
756
757 // Sizing (in words)
758 static int header_size() {
759 return align_size_up((int)sizeof(ConstantPool), wordSize) / wordSize;
760 }
761 static int size(int length) { return align_metadata_size(header_size() + length); }
762 int size() const { return size(length()); }
763 #if INCLUDE_SERVICES
764 void collect_statistics(KlassSizeStats *sz) const;
765 #endif
766
767 friend class ClassFileParser;
768 friend class SystemDictionary;
769
770 // Used by CDS. These classes need to access the private ConstantPool() constructor.
771 template <class T> friend class CppVtableTesterA;
772 template <class T> friend class CppVtableTesterB;
773 template <class T> friend class CppVtableCloner;
774
775 // Used by compiler to prevent classloading.
776 static Method* method_at_if_loaded (const constantPoolHandle& this_cp, int which);
777 static bool has_appendix_at_if_loaded (const constantPoolHandle& this_cp, int which);
778 static oop appendix_at_if_loaded (const constantPoolHandle& this_cp, int which);
779 static bool has_method_type_at_if_loaded (const constantPoolHandle& this_cp, int which);
|
739
740 oop resolve_bootstrap_specifier_at(int index, TRAPS) {
741 constantPoolHandle h_this(THREAD, this);
742 return resolve_bootstrap_specifier_at_impl(h_this, index, THREAD);
743 }
744
745 // Klass name matches name at offset
746 bool klass_name_at_matches(const InstanceKlass* k, int which);
747
748 // Sizing
749 int length() const { return _length; }
750 void set_length(int length) { _length = length; }
751
752 // Tells whether index is within bounds.
753 bool is_within_bounds(int index) const {
754 return 0 <= index && index < length();
755 }
756
757 // Sizing (in words)
758 static int header_size() {
759 return align_up((int)sizeof(ConstantPool), wordSize) / wordSize;
760 }
761 static int size(int length) { return align_metadata_size(header_size() + length); }
762 int size() const { return size(length()); }
763 #if INCLUDE_SERVICES
764 void collect_statistics(KlassSizeStats *sz) const;
765 #endif
766
767 friend class ClassFileParser;
768 friend class SystemDictionary;
769
770 // Used by CDS. These classes need to access the private ConstantPool() constructor.
771 template <class T> friend class CppVtableTesterA;
772 template <class T> friend class CppVtableTesterB;
773 template <class T> friend class CppVtableCloner;
774
775 // Used by compiler to prevent classloading.
776 static Method* method_at_if_loaded (const constantPoolHandle& this_cp, int which);
777 static bool has_appendix_at_if_loaded (const constantPoolHandle& this_cp, int which);
778 static oop appendix_at_if_loaded (const constantPoolHandle& this_cp, int which);
779 static bool has_method_type_at_if_loaded (const constantPoolHandle& this_cp, int which);
|