920 return layout_helper_to_size_helper(layout_helper());
921 }
922
923 // This bit is initialized in classFileParser.cpp.
924 // It is false under any of the following conditions:
925 // - the class is abstract (including any interface)
926 // - the class has a finalizer (if !RegisterFinalizersAtInit)
927 // - the class size is larger than FastAllocateSizeLimit
928 // - the class is java/lang/Class, which cannot be allocated directly
929 bool can_be_fastpath_allocated() const {
930 return !layout_helper_needs_slow_path(layout_helper());
931 }
932
933 // Java vtable/itable
934 klassVtable* vtable() const; // return new klassVtable wrapper
935 inline Method* method_at_vtable(int index);
936 klassItable* itable() const; // return new klassItable wrapper
937 Method* method_at_itable(Klass* holder, int index, TRAPS);
938
939 #if INCLUDE_JVMTI
940 void adjust_default_methods(Method** old_methods, Method** new_methods,
941 int methods_length, bool* trace_name_printed);
942 #endif // INCLUDE_JVMTI
943
944 // Garbage collection
945 void oop_follow_contents(oop obj);
946 int oop_adjust_pointers(oop obj);
947
948 void clean_implementors_list(BoolObjectClosure* is_alive);
949 void clean_method_data(BoolObjectClosure* is_alive);
950 void clean_dependent_nmethods();
951
952 // Explicit metaspace deallocation of fields
953 // For RedefineClasses and class file parsing errors, we need to deallocate
954 // instanceKlasses and the metadata they point to.
955 void deallocate_contents(ClassLoaderData* loader_data);
956 static void deallocate_methods(ClassLoaderData* loader_data,
957 Array<Method*>* methods);
958 void static deallocate_interfaces(ClassLoaderData* loader_data,
959 Klass* super_klass,
960 Array<Klass*>* local_interfaces,
961 Array<Klass*>* transitive_interfaces);
|
920 return layout_helper_to_size_helper(layout_helper());
921 }
922
923 // This bit is initialized in classFileParser.cpp.
924 // It is false under any of the following conditions:
925 // - the class is abstract (including any interface)
926 // - the class has a finalizer (if !RegisterFinalizersAtInit)
927 // - the class size is larger than FastAllocateSizeLimit
928 // - the class is java/lang/Class, which cannot be allocated directly
929 bool can_be_fastpath_allocated() const {
930 return !layout_helper_needs_slow_path(layout_helper());
931 }
932
933 // Java vtable/itable
934 klassVtable* vtable() const; // return new klassVtable wrapper
935 inline Method* method_at_vtable(int index);
936 klassItable* itable() const; // return new klassItable wrapper
937 Method* method_at_itable(Klass* holder, int index, TRAPS);
938
939 #if INCLUDE_JVMTI
940 void adjust_default_methods(InstanceKlass* holder, bool* trace_name_printed);
941 #endif // INCLUDE_JVMTI
942
943 // Garbage collection
944 void oop_follow_contents(oop obj);
945 int oop_adjust_pointers(oop obj);
946
947 void clean_implementors_list(BoolObjectClosure* is_alive);
948 void clean_method_data(BoolObjectClosure* is_alive);
949 void clean_dependent_nmethods();
950
951 // Explicit metaspace deallocation of fields
952 // For RedefineClasses and class file parsing errors, we need to deallocate
953 // instanceKlasses and the metadata they point to.
954 void deallocate_contents(ClassLoaderData* loader_data);
955 static void deallocate_methods(ClassLoaderData* loader_data,
956 Array<Method*>* methods);
957 void static deallocate_interfaces(ClassLoaderData* loader_data,
958 Klass* super_klass,
959 Array<Klass*>* local_interfaces,
960 Array<Klass*>* transitive_interfaces);
|