diff -r 7b751fe181a5 -r bc54ed8d908a src/jdk.jfr/share/classes/jdk/jfr/consumer/RecordedObject.java --- a/src/jdk.jfr/share/classes/jdk/jfr/consumer/RecordedObject.java Fri Sep 13 18:46:07 2019 +0200 +++ b/src/jdk.jfr/share/classes/jdk/jfr/consumer/RecordedObject.java Mon Sep 16 09:45:22 2019 +0200 @@ -31,17 +31,18 @@ import java.time.Duration; import java.time.Instant; import java.time.OffsetDateTime; -import java.util.Collections; +import java.util.Comparator; import java.util.List; import java.util.Objects; import jdk.jfr.Timespan; import jdk.jfr.Timestamp; import jdk.jfr.ValueDescriptor; +import jdk.jfr.internal.consumer.JdkJfrConsumer; +import jdk.jfr.internal.consumer.ObjectFactory; import jdk.jfr.internal.PrivateAccess; import jdk.jfr.internal.Type; -import jdk.jfr.internal.consumer.Parser; -import jdk.jfr.internal.consumer.RecordingInternals; +import jdk.jfr.internal.consumer.ObjectContext; import jdk.jfr.internal.tool.PrettyWriter; /** @@ -57,7 +58,7 @@ public class RecordedObject { static{ - RecordingInternals.INSTANCE = new RecordingInternals() { + JdkJfrConsumer access = new JdkJfrConsumer() { public List readTypes(RecordingFile file) throws IOException { return file.readTypes(); } @@ -72,15 +73,71 @@ } @Override - public void sort(List events) { - Collections.sort(events, (e1, e2) -> Long.compare(e1.endTimeTicks, e2.endTimeTicks)); + public RecordedClass newRecordedClass(ObjectContext objectContext, long id, Object[] values) { + return new RecordedClass(objectContext, id, values); + } + + @Override + public RecordedClassLoader newRecordedClassLoader(ObjectContext objectContext, long id, Object[] values) { + return new RecordedClassLoader(objectContext, id, values); + } + + @Override + public Comparator eventComparator() { + return new Comparator() { + @Override + public int compare(RecordedEvent e1, RecordedEvent e2) { + return Long.compare(e1.endTimeTicks, e2.endTimeTicks); + } + }; + } + + @Override + public RecordedStackTrace newRecordedStackTrace(ObjectContext objectContext, Object[] values) { + return new RecordedStackTrace(objectContext, values); + } + + @Override + public RecordedThreadGroup newRecordedThreadGroup(ObjectContext objectContext, Object[] values) { + return new RecordedThreadGroup(objectContext, values); } @Override - public Parser newStringParser() { - return new StringParser(null, false); + public RecordedFrame newRecordedFrame(ObjectContext objectContext, Object[] values) { + return new RecordedFrame(objectContext, values); + } + + @Override + public RecordedThread newRecordedThread(ObjectContext objectContext, long id, Object[] values) { + return new RecordedThread(objectContext, id, values); + } + + @Override + public RecordedMethod newRecordedMethod(ObjectContext objectContext, Object[] values) { + return new RecordedMethod(objectContext, values); + } + + @Override + public RecordedEvent newRecordedEvent(ObjectContext objectContext, Object[] values, long startTimeTicks, long endTimeTicks) { + return new RecordedEvent(objectContext, values, startTimeTicks, endTimeTicks); + } + + @Override + public void setStartTicks(RecordedEvent event, long startTicks) { + event.startTimeTicks = startTicks; + } + + @Override + public void setEndTicks(RecordedEvent event, long endTicks) { + event.endTimeTicks = endTicks; + } + + @Override + public Object[] eventValues(RecordedEvent event) { + return event.objects; } }; + JdkJfrConsumer.setAccess(access); } private final static class UnsignedValue {