830 } 831 832 static bool has_previous_versions_and_reset(); 833 static bool has_previous_versions() { return _has_previous_versions; } 834 835 // JVMTI: Support for caching a class file before it is modified by an agent that can do retransformation 836 void set_cached_class_file(JvmtiCachedClassFileData *data) { 837 _cached_class_file = data; 838 } 839 JvmtiCachedClassFileData * get_cached_class_file(); 840 jint get_cached_class_file_len(); 841 unsigned char * get_cached_class_file_bytes(); 842 843 // JVMTI: Support for caching of field indices, types, and offsets 844 void set_jvmti_cached_class_field_map(JvmtiCachedClassFieldMap* descriptor) { 845 _jvmti_cached_class_field_map = descriptor; 846 } 847 JvmtiCachedClassFieldMap* jvmti_cached_class_field_map() const { 848 return _jvmti_cached_class_field_map; 849 } 850 851 #if INCLUDE_CDS 852 void set_archived_class_data(JvmtiCachedClassFileData* data) { 853 _cached_class_file = data; 854 } 855 856 JvmtiCachedClassFileData * get_archived_class_data(); 857 #endif // INCLUDE_CDS 858 #else // INCLUDE_JVMTI 859 860 static void purge_previous_versions(InstanceKlass* ik) { return; }; 861 static bool has_previous_versions_and_reset() { return false; } 862 863 void set_cached_class_file(JvmtiCachedClassFileData *data) { 864 assert(data == NULL, "unexpected call with JVMTI disabled"); 865 } 866 JvmtiCachedClassFileData * get_cached_class_file() { return (JvmtiCachedClassFileData *)NULL; } 867 868 #endif // INCLUDE_JVMTI 869 870 bool has_nonstatic_concrete_methods() const { 871 return (_misc_flags & _misc_has_nonstatic_concrete_methods) != 0; 872 } 873 void set_has_nonstatic_concrete_methods(bool b) { 874 if (b) { 875 _misc_flags |= _misc_has_nonstatic_concrete_methods; 876 } else { 877 _misc_flags &= ~_misc_has_nonstatic_concrete_methods; | 830 } 831 832 static bool has_previous_versions_and_reset(); 833 static bool has_previous_versions() { return _has_previous_versions; } 834 835 // JVMTI: Support for caching a class file before it is modified by an agent that can do retransformation 836 void set_cached_class_file(JvmtiCachedClassFileData *data) { 837 _cached_class_file = data; 838 } 839 JvmtiCachedClassFileData * get_cached_class_file(); 840 jint get_cached_class_file_len(); 841 unsigned char * get_cached_class_file_bytes(); 842 843 // JVMTI: Support for caching of field indices, types, and offsets 844 void set_jvmti_cached_class_field_map(JvmtiCachedClassFieldMap* descriptor) { 845 _jvmti_cached_class_field_map = descriptor; 846 } 847 JvmtiCachedClassFieldMap* jvmti_cached_class_field_map() const { 848 return _jvmti_cached_class_field_map; 849 } 850 #else // INCLUDE_JVMTI 851 852 static void purge_previous_versions(InstanceKlass* ik) { return; }; 853 static bool has_previous_versions_and_reset() { return false; } 854 855 void set_cached_class_file(JvmtiCachedClassFileData *data) { 856 assert(data == NULL, "unexpected call with JVMTI disabled"); 857 } 858 JvmtiCachedClassFileData * get_cached_class_file() { return (JvmtiCachedClassFileData *)NULL; } 859 860 #endif // INCLUDE_JVMTI 861 862 bool has_nonstatic_concrete_methods() const { 863 return (_misc_flags & _misc_has_nonstatic_concrete_methods) != 0; 864 } 865 void set_has_nonstatic_concrete_methods(bool b) { 866 if (b) { 867 _misc_flags |= _misc_has_nonstatic_concrete_methods; 868 } else { 869 _misc_flags &= ~_misc_has_nonstatic_concrete_methods; |