922 CLDCallback(bool class_unload) : _class_unload(class_unload) {}
923 void do_cld(ClassLoaderData* cld) {
924 assert(cld != NULL, "invariant");
925 if (cld->is_unsafe_anonymous()) {
926 return;
927 }
928 if (_class_unload) {
929 JfrTypeSet::do_unloaded_class_loader_data(cld);
930 return;
931 }
932 JfrTypeSet::do_class_loader_data(cld);
933 }
934 };
935
936 void JfrTypeSet::do_class_loaders() {
937 CLDCallback cld_cb(_class_unload);
938 if (_class_unload) {
939 ClassLoaderDataGraph::cld_unloading_do(&cld_cb);
940 return;
941 }
942 ClassLoaderDataGraph::cld_do(&cld_cb);
943 }
944
945 static void clear_artifacts(JfrArtifactSet* artifacts,
946 bool class_unload) {
947 assert(artifacts != NULL, "invariant");
948 assert(artifacts->has_klass_entries(), "invariant");
949
950 // untag
951 ClearKlassAndMethods clear(class_unload);
952 artifacts->iterate_klasses(clear);
953 artifacts->clear();
954 }
955
956 /**
957 * Write all "tagged" (in-use) constant artifacts and their dependencies.
958 */
959 void JfrTypeSet::serialize(JfrCheckpointWriter* writer, JfrCheckpointWriter* leakp_writer, bool class_unload) {
960 assert(writer != NULL, "invariant");
961 ResourceMark rm;
962 // initialization begin
|
922 CLDCallback(bool class_unload) : _class_unload(class_unload) {}
923 void do_cld(ClassLoaderData* cld) {
924 assert(cld != NULL, "invariant");
925 if (cld->is_unsafe_anonymous()) {
926 return;
927 }
928 if (_class_unload) {
929 JfrTypeSet::do_unloaded_class_loader_data(cld);
930 return;
931 }
932 JfrTypeSet::do_class_loader_data(cld);
933 }
934 };
935
936 void JfrTypeSet::do_class_loaders() {
937 CLDCallback cld_cb(_class_unload);
938 if (_class_unload) {
939 ClassLoaderDataGraph::cld_unloading_do(&cld_cb);
940 return;
941 }
942 ClassLoaderDataGraph::loaded_cld_do(&cld_cb);
943 }
944
945 static void clear_artifacts(JfrArtifactSet* artifacts,
946 bool class_unload) {
947 assert(artifacts != NULL, "invariant");
948 assert(artifacts->has_klass_entries(), "invariant");
949
950 // untag
951 ClearKlassAndMethods clear(class_unload);
952 artifacts->iterate_klasses(clear);
953 artifacts->clear();
954 }
955
956 /**
957 * Write all "tagged" (in-use) constant artifacts and their dependencies.
958 */
959 void JfrTypeSet::serialize(JfrCheckpointWriter* writer, JfrCheckpointWriter* leakp_writer, bool class_unload) {
960 assert(writer != NULL, "invariant");
961 ResourceMark rm;
962 // initialization begin
|