209 assert(!safepoint_types.in_list(registration), "invariant");
210 DEBUG_ONLY(assert_not_registered_twice(id, safepoint_types);)
211 safepoint_types.prepend(registration);
212 } else {
213 assert(!types.in_list(registration), "invariant");
214 DEBUG_ONLY(assert_not_registered_twice(id, types);)
215 types.prepend(registration);
216 }
217 return true;
218 }
219
220 bool JfrTypeManager::initialize() {
221 SerializerRegistrationGuard guard;
222
223 // register non-safepointing type serialization
224 register_type(TYPE_FLAGVALUEORIGIN, false, true, new FlagValueOriginConstant());
225 register_type(TYPE_INFLATECAUSE, false, true, new MonitorInflateCauseConstant());
226 register_type(TYPE_GCCAUSE, false, true, new GCCauseConstant());
227 register_type(TYPE_GCNAME, false, true, new GCNameConstant());
228 register_type(TYPE_GCWHEN, false, true, new GCWhenConstant());
229 register_type(TYPE_G1HEAPREGIONTYPE, false, true, new G1HeapRegionTypeConstant());
230 register_type(TYPE_GCTHRESHOLDUPDATER, false, true, new GCThresholdUpdaterConstant());
231 register_type(TYPE_METADATATYPE, false, true, new MetadataTypeConstant());
232 register_type(TYPE_METASPACEOBJECTTYPE, false, true, new MetaspaceObjectTypeConstant());
233 register_type(TYPE_G1YCTYPE, false, true, new G1YCTypeConstant());
234 register_type(TYPE_REFERENCETYPE, false, true, new ReferenceTypeConstant());
235 register_type(TYPE_NARROWOOPMODE, false, true, new NarrowOopModeConstant());
236 register_type(TYPE_COMPILERPHASETYPE, false, true, new CompilerPhaseTypeConstant());
237 register_type(TYPE_CODEBLOBTYPE, false, true, new CodeBlobTypeConstant());
238 register_type(TYPE_VMOPERATIONTYPE, false, true, new VMOperationTypeConstant());
239 register_type(TYPE_THREADSTATE, false, true, new ThreadStateConstant());
240
241 // register safepointing type serialization
242 register_type(TYPE_THREADGROUP, true, false, new JfrThreadGroupConstant());
243 register_type(TYPE_THREAD, true, false, new JfrThreadConstantSet());
244 return true;
245 }
246
247 // implementation for the static registration function exposed in the JfrSerializer api
248 bool JfrSerializer::register_serializer(JfrTypeId id, bool require_safepoint, bool permit_cache, JfrSerializer* serializer) {
249 SerializerRegistrationGuard guard;
250 return register_type(id, require_safepoint, permit_cache, serializer);
251 }
|
209 assert(!safepoint_types.in_list(registration), "invariant");
210 DEBUG_ONLY(assert_not_registered_twice(id, safepoint_types);)
211 safepoint_types.prepend(registration);
212 } else {
213 assert(!types.in_list(registration), "invariant");
214 DEBUG_ONLY(assert_not_registered_twice(id, types);)
215 types.prepend(registration);
216 }
217 return true;
218 }
219
220 bool JfrTypeManager::initialize() {
221 SerializerRegistrationGuard guard;
222
223 // register non-safepointing type serialization
224 register_type(TYPE_FLAGVALUEORIGIN, false, true, new FlagValueOriginConstant());
225 register_type(TYPE_INFLATECAUSE, false, true, new MonitorInflateCauseConstant());
226 register_type(TYPE_GCCAUSE, false, true, new GCCauseConstant());
227 register_type(TYPE_GCNAME, false, true, new GCNameConstant());
228 register_type(TYPE_GCWHEN, false, true, new GCWhenConstant());
229 register_type(TYPE_GCTHRESHOLDUPDATER, false, true, new GCThresholdUpdaterConstant());
230 register_type(TYPE_METADATATYPE, false, true, new MetadataTypeConstant());
231 register_type(TYPE_METASPACEOBJECTTYPE, false, true, new MetaspaceObjectTypeConstant());
232 register_type(TYPE_REFERENCETYPE, false, true, new ReferenceTypeConstant());
233 register_type(TYPE_NARROWOOPMODE, false, true, new NarrowOopModeConstant());
234 register_type(TYPE_COMPILERPHASETYPE, false, true, new CompilerPhaseTypeConstant());
235 register_type(TYPE_CODEBLOBTYPE, false, true, new CodeBlobTypeConstant());
236 register_type(TYPE_VMOPERATIONTYPE, false, true, new VMOperationTypeConstant());
237 register_type(TYPE_THREADSTATE, false, true, new ThreadStateConstant());
238
239 // register safepointing type serialization
240 register_type(TYPE_THREADGROUP, true, false, new JfrThreadGroupConstant());
241 register_type(TYPE_THREAD, true, false, new JfrThreadConstantSet());
242 return true;
243 }
244
245 // implementation for the static registration function exposed in the JfrSerializer api
246 bool JfrSerializer::register_serializer(JfrTypeId id, bool require_safepoint, bool permit_cache, JfrSerializer* serializer) {
247 SerializerRegistrationGuard guard;
248 return register_type(id, require_safepoint, permit_cache, serializer);
249 }
|