1.1 --- a/src/share/vm/jfr/recorder/checkpoint/types/jfrTypeSet.cpp Wed Jun 03 01:21:00 2020 +0100 1.2 +++ b/src/share/vm/jfr/recorder/checkpoint/types/jfrTypeSet.cpp Tue Jun 02 14:29:43 2020 +0800 1.3 @@ -25,7 +25,6 @@ 1.4 #include "precompiled.hpp" 1.5 #include "classfile/classLoaderData.inline.hpp" 1.6 #include "classfile/javaClasses.hpp" 1.7 -// XXX #include "classfile/packageEntry.hpp" 1.8 #include "classfile/symbolTable.hpp" 1.9 #include "classfile/systemDictionary.hpp" 1.10 #include "jfr/jfr.hpp" 1.11 @@ -54,20 +53,12 @@ 1.12 #define CREATE_SYMBOL_ID(sym_id) (((u8)((checkpoint_id << 24) | sym_id))) 1.13 1.14 typedef const Klass* KlassPtr; 1.15 -// XXX typedef const PackageEntry* PkgPtr; 1.16 typedef const ClassLoaderData* CldPtr; 1.17 typedef const Method* MethodPtr; 1.18 typedef const Symbol* SymbolPtr; 1.19 typedef const JfrSymbolId::SymbolEntry* SymbolEntryPtr; 1.20 typedef const JfrSymbolId::CStringEntry* CStringEntryPtr; 1.21 1.22 -// XXX 1.23 -// static traceid package_id(KlassPtr klass) { 1.24 -// assert(klass != NULL, "invariant"); 1.25 -// PkgPtr pkg_entry = klass->package(); 1.26 -// return pkg_entry == NULL ? 0 : TRACE_ID(pkg_entry); 1.27 -// } 1.28 - 1.29 static traceid cld_id(CldPtr cld) { 1.30 assert(cld != NULL, "invariant"); 1.31 return cld->is_anonymous() ? 0 : TRACE_ID(cld); 1.32 @@ -75,11 +66,6 @@ 1.33 1.34 static void tag_leakp_klass_artifacts(KlassPtr k, bool class_unload) { 1.35 assert(k != NULL, "invariant"); 1.36 - // XXX 1.37 - // PkgPtr pkg = k->package(); 1.38 - // if (pkg != NULL) { 1.39 - // tag_leakp_artifact(pkg, class_unload); 1.40 - // } 1.41 CldPtr cld = k->class_loader_data(); 1.42 assert(cld != NULL, "invariant"); 1.43 if (!cld->is_anonymous()) { 1.44 @@ -125,7 +111,7 @@ 1.45 theklass = obj_arr_klass->bottom_klass(); 1.46 } 1.47 if (theklass->oop_is_instance()) { 1.48 - pkg_id = 0; // XXX package_id(theklass); 1.49 + pkg_id = 0; 1.50 } else { 1.51 assert(theklass->oop_is_typeArray(), "invariant"); 1.52 } 1.53 @@ -169,29 +155,6 @@ 1.54 typedef JfrArtifactWriterImplHost<MethodPtr, write__artifact__method> MethodWriterImplTarget; 1.55 typedef JfrArtifactWriterHost<MethodWriterImplTarget, TYPE_METHOD> MethodWriterImpl; 1.56 1.57 -// XXX 1.58 -// int write__artifact__package(JfrCheckpointWriter* writer, JfrArtifactSet* artifacts, const void* p) { 1.59 -// assert(writer != NULL, "invariant"); 1.60 -// assert(artifacts != NULL, "invariant"); 1.61 -// assert(p != NULL, "invariant"); 1.62 -// PkgPtr pkg = (PkgPtr)p; 1.63 -// Symbol* const pkg_name = pkg->name(); 1.64 -// const traceid package_name_symbol_id = pkg_name != NULL ? artifacts->mark(pkg_name) : 0; 1.65 -// assert(package_name_symbol_id > 0, "invariant"); 1.66 -// writer->write((traceid)TRACE_ID(pkg)); 1.67 -// writer->write((traceid)CREATE_SYMBOL_ID(package_name_symbol_id)); 1.68 -// writer->write((bool)pkg->is_exported()); 1.69 -// return 1; 1.70 -// } 1.71 - 1.72 -// typedef LeakPredicate<PkgPtr> LeakPackagePredicate; 1.73 -// int _compare_pkg_ptr_(PkgPtr const& lhs, PkgPtr const& rhs) { return lhs > rhs ? 1 : (lhs < rhs) ? -1 : 0; } 1.74 -// typedef UniquePredicate<PkgPtr, _compare_pkg_ptr_> PackagePredicate; 1.75 -// typedef JfrPredicatedArtifactWriterImplHost<PkgPtr, LeakPackagePredicate, write__artifact__package> LeakPackageWriterImpl; 1.76 -// typedef JfrPredicatedArtifactWriterImplHost<PkgPtr, PackagePredicate, write__artifact__package> PackageWriterImpl; 1.77 -// typedef JfrArtifactWriterHost<LeakPackageWriterImpl, TYPE_PACKAGE> LeakPackageWriter; 1.78 -// typedef JfrArtifactWriterHost<PackageWriterImpl, TYPE_PACKAGE> PackageWriter; 1.79 - 1.80 int write__artifact__classloader(JfrCheckpointWriter* writer, JfrArtifactSet* artifacts, const void* c) { 1.81 assert(c != NULL, "invariant"); 1.82 CldPtr cld = (CldPtr)c; 1.83 @@ -292,7 +255,6 @@ 1.84 UniquePredicate<traceid, _compare_traceid_> _unique_predicate; 1.85 1.86 int klass_symbols(KlassPtr klass); 1.87 -// XXX int package_symbols(PkgPtr pkg); 1.88 int class_loader_symbols(CldPtr cld); 1.89 int method_symbols(KlassPtr klass); 1.90 1.91 @@ -312,11 +274,6 @@ 1.92 int count = 0; 1.93 if (_predicate(klass)) { 1.94 count += klass_symbols(klass); 1.95 - // XXX 1.96 - // PkgPtr pkg = klass->package(); 1.97 - // if (pkg != NULL) { 1.98 - // count += package_symbols(pkg); 1.99 - // } 1.100 CldPtr cld = klass->class_loader_data(); 1.101 assert(cld != NULL, "invariant"); 1.102 if (!cld->is_anonymous()) { 1.103 @@ -346,52 +303,6 @@ 1.104 return _unique_predicate(entry->id()) ? write__artifact__symbol__entry__(this->_writer, entry) : 0; 1.105 } 1.106 1.107 -// XXX 1.108 -// template <template <typename> class Predicate> 1.109 -// int KlassSymbolWriterImpl<Predicate>::package_symbols(PkgPtr pkg) { 1.110 -// assert(pkg != NULL, "invariant"); 1.111 -// SymbolPtr pkg_name = pkg->name(); 1.112 -// assert(pkg_name != NULL, "invariant"); 1.113 -// SymbolEntryPtr package_symbol = this->_artifacts->map_symbol(pkg_name); 1.114 -// assert(package_symbol != NULL, "invariant"); 1.115 -// return _unique_predicate(package_symbol->id()) ? 1.116 -// write__artifact__symbol__entry__(this->_writer, package_symbol) : 0; 1.117 -// } 1.118 - 1.119 -// XXX 1.120 -// template <template <typename> class Predicate> 1.121 -// int KlassSymbolWriterImpl<Predicate>::module_symbols(ModPtr module) { 1.122 -// assert(module != NULL, "invariant"); 1.123 -// assert(module->is_named(), "invariant"); 1.124 -// int count = 0; 1.125 -// SymbolPtr sym = module->name(); 1.126 -// SymbolEntryPtr entry = NULL; 1.127 -// if (sym != NULL) { 1.128 -// entry = this->_artifacts->map_symbol(sym); 1.129 -// assert(entry != NULL, "invariant"); 1.130 -// if (_unique_predicate(entry->id())) { 1.131 -// count += write__artifact__symbol__entry__(this->_writer, entry); 1.132 -// } 1.133 -// } 1.134 -// sym = module->version(); 1.135 -// if (sym != NULL) { 1.136 -// entry = this->_artifacts->map_symbol(sym); 1.137 -// assert(entry != NULL, "invariant"); 1.138 -// if (_unique_predicate(entry->id())) { 1.139 -// count += write__artifact__symbol__entry__(this->_writer, entry); 1.140 -// } 1.141 -// } 1.142 -// sym = module->location(); 1.143 -// if (sym != NULL) { 1.144 -// entry = this->_artifacts->map_symbol(sym); 1.145 -// assert(entry != NULL, "invariant"); 1.146 -// if (_unique_predicate(entry->id())) { 1.147 -// count += write__artifact__symbol__entry__(this->_writer, entry); 1.148 -// } 1.149 -// } 1.150 -// return count; 1.151 -// } 1.152 - 1.153 template <template <typename> class Predicate> 1.154 int KlassSymbolWriterImpl<Predicate>::class_loader_symbols(CldPtr cld) { 1.155 assert(cld != NULL, "invariant"); 1.156 @@ -525,100 +436,6 @@ 1.157 do_klasses(); 1.158 } 1.159 1.160 -// XXX 1.161 -// typedef CompositeFunctor<PkgPtr, 1.162 -// PackageWriter, 1.163 -// ClearArtifact<PkgPtr> > PackageWriterWithClear; 1.164 - 1.165 -// typedef CompositeFunctor<PkgPtr, 1.166 -// LeakPackageWriter, 1.167 -// PackageWriter> CompositePackageWriter; 1.168 - 1.169 -// typedef CompositeFunctor<PkgPtr, 1.170 -// CompositePackageWriter, 1.171 -// ClearArtifact<PkgPtr> > CompositePackageWriterWithClear; 1.172 - 1.173 -// class PackageFieldSelector { 1.174 -// public: 1.175 -// typedef PkgPtr TypePtr; 1.176 -// static TypePtr select(KlassPtr klass) { 1.177 -// assert(klass != NULL, "invariant"); 1.178 -// return ((InstanceKlass*)klass)->package(); 1.179 -// } 1.180 -// }; 1.181 - 1.182 -// typedef KlassToFieldEnvelope<PackageFieldSelector, 1.183 -// PackageWriterWithClear> KlassPackageWriterWithClear; 1.184 - 1.185 -// typedef KlassToFieldEnvelope<PackageFieldSelector, 1.186 -// CompositePackageWriterWithClear> KlassCompositePackageWriterWithClear; 1.187 - 1.188 -// typedef JfrArtifactCallbackHost<PkgPtr, PackageWriterWithClear> PackageCallback; 1.189 -// typedef JfrArtifactCallbackHost<PkgPtr, CompositePackageWriterWithClear> CompositePackageCallback; 1.190 - 1.191 -// /* 1.192 -// * Composite operation 1.193 -// * 1.194 -// * LeakpPackageWriter -> 1.195 -// * PackageWriter -> 1.196 -// * ClearArtifact<PackageEntry> 1.197 -// * 1.198 -// */ 1.199 -// void JfrTypeSet::write_package_constants(JfrCheckpointWriter* writer, JfrCheckpointWriter* leakp_writer) { 1.200 -// assert(_artifacts->has_klass_entries(), "invariant"); 1.201 -// ClearArtifact<PkgPtr> clear(_class_unload); 1.202 -// PackageWriter pw(writer, _artifacts, _class_unload); 1.203 -// if (leakp_writer == NULL) { 1.204 -// PackageWriterWithClear pwwc(&pw, &clear); 1.205 -// KlassPackageWriterWithClear kpwwc(&pwwc); 1.206 -// _artifacts->iterate_klasses(kpwwc); 1.207 -// PackageCallback callback(&pwwc); 1.208 -// _subsystem_callback = &callback; 1.209 -// do_packages(); 1.210 -// return; 1.211 -// } 1.212 -// LeakPackageWriter lpw(leakp_writer, _artifacts, _class_unload); 1.213 -// CompositePackageWriter cpw(&lpw, &pw); 1.214 -// CompositePackageWriterWithClear cpwwc(&cpw, &clear); 1.215 -// KlassCompositePackageWriterWithClear ckpw(&cpwwc); 1.216 -// _artifacts->iterate_klasses(ckpw); 1.217 -// CompositePackageCallback callback(&cpwwc); 1.218 -// _subsystem_callback = &callback; 1.219 -// do_packages(); 1.220 -// } 1.221 - 1.222 -// typedef CompositeFunctor<ModPtr, 1.223 -// ModuleWriter, 1.224 -// ClearArtifact<ModPtr> > ModuleWriterWithClear; 1.225 - 1.226 -// typedef CompositeFunctor<ModPtr, 1.227 -// LeakModuleWriter, 1.228 -// ModuleWriter> CompositeModuleWriter; 1.229 - 1.230 -// typedef CompositeFunctor<ModPtr, 1.231 -// CompositeModuleWriter, 1.232 -// ClearArtifact<ModPtr> > CompositeModuleWriterWithClear; 1.233 - 1.234 -// typedef JfrArtifactCallbackHost<ModPtr, ModuleWriterWithClear> ModuleCallback; 1.235 -// typedef JfrArtifactCallbackHost<ModPtr, CompositeModuleWriterWithClear> CompositeModuleCallback; 1.236 - 1.237 -// XXX 1.238 -// class ModuleFieldSelector { 1.239 -// public: 1.240 -// typedef ModPtr TypePtr; 1.241 -// static TypePtr select(KlassPtr klass) { 1.242 -// assert(klass != NULL, "invariant"); 1.243 -// PkgPtr pkg = klass->package(); 1.244 -// return pkg != NULL ? pkg->module() : NULL; 1.245 -// } 1.246 -// }; 1.247 - 1.248 -// typedef KlassToFieldEnvelope<ModuleFieldSelector, 1.249 -// ModuleWriterWithClear> KlassModuleWriterWithClear; 1.250 - 1.251 -// typedef KlassToFieldEnvelope<ModuleFieldSelector, 1.252 -// CompositeModuleWriterWithClear> KlassCompositeModuleWriterWithClear; 1.253 - 1.254 typedef CompositeFunctor<CldPtr, CldWriter, ClearArtifact<CldPtr> > CldWriterWithClear; 1.255 typedef CompositeFunctor<CldPtr, LeakCldWriter, CldWriter> CompositeCldWriter; 1.256 typedef CompositeFunctor<CldPtr, CompositeCldWriter, ClearArtifact<CldPtr> > CompositeCldWriterWithClear; 1.257 @@ -791,30 +608,6 @@ 1.258 ClassLoaderDataGraph::classes_do(&do_klass); 1.259 } 1.260 1.261 -// XXX 1.262 -// void JfrTypeSet::do_unloaded_package(PackageEntry* entry) { 1.263 -// assert(entry != NULL, "invariant"); 1.264 -// assert(_subsystem_callback != NULL, "invariant"); 1.265 -// if (ANY_USED_THIS_EPOCH(entry)) { // includes leakp subset 1.266 -// _subsystem_callback->do_artifact(entry); 1.267 -// } 1.268 -// } 1.269 - 1.270 -// void JfrTypeSet::do_package(PackageEntry* entry) { 1.271 -// assert(_subsystem_callback != NULL, "invariant"); 1.272 -// if (ANY_USED_PREV_EPOCH(entry)) { // includes leakp subset 1.273 -// _subsystem_callback->do_artifact(entry); 1.274 -// } 1.275 -// } 1.276 - 1.277 -// void JfrTypeSet::do_packages() { 1.278 -// if (_class_unload) { 1.279 -// ClassLoaderDataGraph::packages_unloading_do(&do_unloaded_package); 1.280 -// return; 1.281 -// } 1.282 -// ClassLoaderDataGraph::packages_do(&do_package); 1.283 -// } 1.284 - 1.285 void JfrTypeSet::do_unloaded_class_loader_data(ClassLoaderData* cld) { 1.286 assert(_subsystem_callback != NULL, "invariant"); 1.287 if (ANY_USED_THIS_EPOCH(cld)) { // includes leakp subset 1.288 @@ -892,7 +685,6 @@ 1.289 // might tag an artifact to be written in a subsequent step 1.290 write_klass_constants(writer, leakp_writer); 1.291 if (_artifacts->has_klass_entries()) { 1.292 -// XXX write_package_constants(writer, leakp_writer); 1.293 write_class_loader_constants(writer, leakp_writer); 1.294 write_method_constants(writer, leakp_writer); 1.295 write_symbol_constants(writer, leakp_writer);