766
767 void init_previous_versions() {
768 _previous_versions = NULL;
769 }
770
771 private:
772 static bool _has_previous_versions;
773 public:
774 static void purge_previous_versions(InstanceKlass* ik) {
775 if (ik->has_been_redefined()) {
776 ik->purge_previous_version_list();
777 }
778 }
779
780 static bool has_previous_versions_and_reset();
781
782 // JVMTI: Support for caching a class file before it is modified by an agent that can do retransformation
783 void set_cached_class_file(JvmtiCachedClassFileData *data) {
784 _cached_class_file = data;
785 }
786 JvmtiCachedClassFileData * get_cached_class_file() { return _cached_class_file; }
787 jint get_cached_class_file_len();
788 unsigned char * get_cached_class_file_bytes();
789
790 // JVMTI: Support for caching of field indices, types, and offsets
791 void set_jvmti_cached_class_field_map(JvmtiCachedClassFieldMap* descriptor) {
792 _jvmti_cached_class_field_map = descriptor;
793 }
794 JvmtiCachedClassFieldMap* jvmti_cached_class_field_map() const {
795 return _jvmti_cached_class_field_map;
796 }
797
798 #else // INCLUDE_JVMTI
799
800 static void purge_previous_versions(InstanceKlass* ik) { return; };
801 static bool has_previous_versions_and_reset() { return false; }
802
803 void set_cached_class_file(JvmtiCachedClassFileData *data) {
804 assert(data == NULL, "unexpected call with JVMTI disabled");
805 }
806 JvmtiCachedClassFileData * get_cached_class_file() { return (JvmtiCachedClassFileData *)NULL; }
807
808 #endif // INCLUDE_JVMTI
809
810 bool has_default_methods() const {
811 return (_misc_flags & _misc_has_default_methods) != 0;
812 }
813 void set_has_default_methods(bool b) {
814 if (b) {
815 _misc_flags |= _misc_has_default_methods;
816 } else {
817 _misc_flags &= ~_misc_has_default_methods;
|
766
767 void init_previous_versions() {
768 _previous_versions = NULL;
769 }
770
771 private:
772 static bool _has_previous_versions;
773 public:
774 static void purge_previous_versions(InstanceKlass* ik) {
775 if (ik->has_been_redefined()) {
776 ik->purge_previous_version_list();
777 }
778 }
779
780 static bool has_previous_versions_and_reset();
781
782 // JVMTI: Support for caching a class file before it is modified by an agent that can do retransformation
783 void set_cached_class_file(JvmtiCachedClassFileData *data) {
784 _cached_class_file = data;
785 }
786 JvmtiCachedClassFileData * get_cached_class_file();
787 jint get_cached_class_file_len();
788 unsigned char * get_cached_class_file_bytes();
789
790 // JVMTI: Support for caching of field indices, types, and offsets
791 void set_jvmti_cached_class_field_map(JvmtiCachedClassFieldMap* descriptor) {
792 _jvmti_cached_class_field_map = descriptor;
793 }
794 JvmtiCachedClassFieldMap* jvmti_cached_class_field_map() const {
795 return _jvmti_cached_class_field_map;
796 }
797
798 #if INCLUDE_CDS
799 void set_archived_class_data(JvmtiCachedClassFileData* data) {
800 _cached_class_file = data;
801 }
802
803 JvmtiCachedClassFileData * get_archived_class_data();
804 #endif // INCLUDE_CDS
805 #else // INCLUDE_JVMTI
806
807 static void purge_previous_versions(InstanceKlass* ik) { return; };
808 static bool has_previous_versions_and_reset() { return false; }
809
810 void set_cached_class_file(JvmtiCachedClassFileData *data) {
811 assert(data == NULL, "unexpected call with JVMTI disabled");
812 }
813 JvmtiCachedClassFileData * get_cached_class_file() { return (JvmtiCachedClassFileData *)NULL; }
814
815 #endif // INCLUDE_JVMTI
816
817 bool has_default_methods() const {
818 return (_misc_flags & _misc_has_default_methods) != 0;
819 }
820 void set_has_default_methods(bool b) {
821 if (b) {
822 _misc_flags |= _misc_has_default_methods;
823 } else {
824 _misc_flags &= ~_misc_has_default_methods;
|