equal
deleted
inserted
replaced
44 import jdk.jfr.Period; |
44 import jdk.jfr.Period; |
45 import jdk.jfr.StackTrace; |
45 import jdk.jfr.StackTrace; |
46 import jdk.jfr.Threshold; |
46 import jdk.jfr.Threshold; |
47 import jdk.jfr.ValueDescriptor; |
47 import jdk.jfr.ValueDescriptor; |
48 import jdk.jfr.internal.RequestEngine.RequestHook; |
48 import jdk.jfr.internal.RequestEngine.RequestHook; |
|
49 import jdk.jfr.internal.consumer.RepositoryFiles; |
49 import jdk.jfr.internal.handlers.EventHandler; |
50 import jdk.jfr.internal.handlers.EventHandler; |
50 |
51 |
51 public final class MetadataRepository { |
52 public final class MetadataRepository { |
52 |
53 |
53 private static final JVM jvm = JVM.getJVM(); |
54 private static final JVM jvm = JVM.getJVM(); |
205 c.disable(); |
206 c.disable(); |
206 } |
207 } |
207 } |
208 } |
208 |
209 |
209 public synchronized List<EventControl> getEventControls() { |
210 public synchronized List<EventControl> getEventControls() { |
210 List<EventControl> controls = new ArrayList<>(); |
211 List<Class<? extends jdk.internal.event.Event>> eventClasses = jvm.getAllEventClasses(); |
|
212 ArrayList<EventControl> controls = new ArrayList<>(eventClasses.size() + nativeControls.size()); |
211 controls.addAll(nativeControls); |
213 controls.addAll(nativeControls); |
212 for (EventHandler eh : getEventHandlers()) { |
214 for (Class<? extends jdk.internal.event.Event> clazz : eventClasses) { |
213 controls.add(eh.getEventControl()); |
215 EventHandler eh = Utils.getHandler(clazz); |
|
216 if (eh != null) { |
|
217 controls.add(eh.getEventControl()); |
|
218 } |
214 } |
219 } |
215 return controls; |
220 return controls; |
216 } |
221 } |
217 |
222 |
218 private void storeDescriptorInJVM() throws InternalError { |
223 private void storeDescriptorInJVM() throws InternalError { |
261 synchronized void setOutput(String filename) { |
266 synchronized void setOutput(String filename) { |
262 if (staleMetadata) { |
267 if (staleMetadata) { |
263 storeDescriptorInJVM(); |
268 storeDescriptorInJVM(); |
264 } |
269 } |
265 jvm.setOutput(filename); |
270 jvm.setOutput(filename); |
266 |
271 if (filename != null) { |
|
272 RepositoryFiles.notifyNewFile(); |
|
273 } |
267 unregisterUnloaded(); |
274 unregisterUnloaded(); |
268 if (unregistered) { |
275 if (unregistered) { |
269 if (typeLibrary.clearUnregistered()) { |
276 if (typeLibrary.clearUnregistered()) { |
270 storeDescriptorInJVM(); |
277 storeDescriptorInJVM(); |
271 } |
278 } |
307 return; |
314 return; |
308 } |
315 } |
309 throw new InternalError("Mirror class must have annotation " + MirrorEvent.class.getName()); |
316 throw new InternalError("Mirror class must have annotation " + MirrorEvent.class.getName()); |
310 } |
317 } |
311 |
318 |
|
319 public synchronized void flush() { |
|
320 if (staleMetadata) { |
|
321 storeDescriptorInJVM(); |
|
322 } |
|
323 jvm.flush(); |
|
324 } |
|
325 |
312 } |
326 } |