src/jdk.jfr/share/classes/jdk/jfr/consumer/ChunkParser.java
branchJEP-349-branch
changeset 57452 6fabe73e5d9a
parent 57433 83e4343a6984
child 57454 703fb247dc4e
--- a/src/jdk.jfr/share/classes/jdk/jfr/consumer/ChunkParser.java	Wed Jul 03 22:51:44 2019 +0200
+++ b/src/jdk.jfr/share/classes/jdk/jfr/consumer/ChunkParser.java	Fri Jul 05 03:36:40 2019 +0200
@@ -64,6 +64,7 @@
     private boolean reuse;
     private boolean ordered;
     private boolean resetEventCache;
+    private long firstNanos;
 
     public ChunkParser(RecordingInput input, boolean reuse) throws IOException {
        this(new ChunkHeader(input), null, 500);
@@ -359,6 +360,17 @@
 
     // Need to call updateEventParsers() for
     // change to take effect
+    public void setFirstNanos(long firstNanos) {
+        long chunkStart = chunkHeader.getStartNanos();
+        // Optimization.
+        if (firstNanos < chunkStart - 1_000_000_000L) {
+            firstNanos = 0;
+        }
+        this.firstNanos = firstNanos;
+    }
+
+    // Need to call updateEventParsers() for
+    // change to take effect
     public void resetEventCache() {
         this.resetEventCache = true;
     }
@@ -370,16 +382,17 @@
                 String name = ep.getEventType().getName();
                 ep.setOrdered(ordered);
                 ep.setReuse(reuse);
+                ep.setFirstNanos(firstNanos);
                 if (resetEventCache) {
                     ep.resetCache();
                 }
                 long threshold = eventFilter.getThreshold(name);
                 if (threshold >= 0) {
                     ep.setEnabled(true);
-                    ep.setThreshold(timeConverter.convertDurationNanos(threshold));
+                    ep.setThresholdNanos(threshold);
                 } else {
                     ep.setEnabled(false);
-                    ep.setThreshold(Long.MAX_VALUE);
+                    ep.setThresholdNanos(Long.MAX_VALUE);
                 }
             }
         });