public class org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup implements org.springframework.core.metrics.ApplicationStartup
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup
super_class: java.lang.Object
{
private java.time.Instant recordingStartTime;
descriptor: Ljava/time/Instant;
flags: (0x0002) ACC_PRIVATE
private long recordingStartNanos;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private long currentSequenceId;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private final java.util.Deque<java.lang.Long> currentSteps;
descriptor: Ljava/util/Deque;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Deque<Ljava/lang/Long;>;
private final java.util.concurrent.BlockingQueue<org.springframework.boot.context.metrics.buffering.BufferedStartupStep> recordedSteps;
descriptor: Ljava/util/concurrent/BlockingQueue;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/concurrent/BlockingQueue<Lorg/springframework/boot/context/metrics/buffering/BufferedStartupStep;>;
private java.util.function.Predicate<org.springframework.core.metrics.StartupStep> stepFilters;
descriptor: Ljava/util/function/Predicate;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/function/Predicate<Lorg/springframework/core/metrics/StartupStep;>;
public void <init>(int);
descriptor: (I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
lconst_0
putfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.currentSequenceId:J
2: aload 0
invokedynamic test()Ljava/util/function/Predicate;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;)Z
org/springframework/boot/context/metrics/buffering/BufferingApplicationStartup.lambda$0(Lorg/springframework/core/metrics/StartupStep;)Z (6)
(Lorg/springframework/core/metrics/StartupStep;)Z
putfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.stepFilters:Ljava/util/function/Predicate;
3: aload 0
new java.util.ArrayDeque
dup
invokespecial java.util.ArrayDeque.<init>:()V
putfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.currentSteps:Ljava/util/Deque;
4: aload 0
getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.currentSteps:Ljava/util/Deque;
aload 0
getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.currentSequenceId:J
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
invokeinterface java.util.Deque.offerFirst:(Ljava/lang/Object;)Z
pop
5: aload 0
new java.util.concurrent.LinkedBlockingQueue
dup
iload 1
invokespecial java.util.concurrent.LinkedBlockingQueue.<init>:(I)V
putfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.recordedSteps:Ljava/util/concurrent/BlockingQueue;
6: aload 0
invokevirtual org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.startRecording:()V
7: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/springframework/boot/context/metrics/buffering/BufferingApplicationStartup;
0 8 1 capacity I
MethodParameters:
Name Flags
capacity
public void startRecording();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.recordedSteps:Ljava/util/concurrent/BlockingQueue;
invokeinterface java.util.concurrent.BlockingQueue.isEmpty:()Z
ldc "Cannot restart recording once steps have been buffered."
invokestatic org.springframework.util.Assert.state:(ZLjava/lang/String;)V
1: aload 0
invokestatic java.time.Instant.now:()Ljava/time/Instant;
putfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.recordingStartTime:Ljava/time/Instant;
2: aload 0
aload 0
invokevirtual org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.getCurrentTime:()J
putfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.recordingStartNanos:J
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/springframework/boot/context/metrics/buffering/BufferingApplicationStartup;
public void addFilter(java.util.function.Predicate<org.springframework.core.metrics.StartupStep>);
descriptor: (Ljava/util/function/Predicate;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 0
getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.stepFilters:Ljava/util/function/Predicate;
aload 1
invokeinterface java.util.function.Predicate.and:(Ljava/util/function/Predicate;)Ljava/util/function/Predicate;
putfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.stepFilters:Ljava/util/function/Predicate;
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/springframework/boot/context/metrics/buffering/BufferingApplicationStartup;
0 2 1 filter Ljava/util/function/Predicate<Lorg/springframework/core/metrics/StartupStep;>;
Signature: (Ljava/util/function/Predicate<Lorg/springframework/core/metrics/StartupStep;>;)V
MethodParameters:
Name Flags
filter
public org.springframework.boot.context.metrics.buffering.StartupTimeline getBufferedTimeline();
descriptor: ()Lorg/springframework/boot/context/metrics/buffering/StartupTimeline;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=1, args_size=1
start local 0 0: new org.springframework.boot.context.metrics.buffering.StartupTimeline
dup
aload 0
getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.recordingStartTime:Ljava/time/Instant;
aload 0
getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.recordingStartNanos:J
aload 0
getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.recordedSteps:Ljava/util/concurrent/BlockingQueue;
invokespecial org.springframework.boot.context.metrics.buffering.StartupTimeline.<init>:(Ljava/time/Instant;JLjava/util/Collection;)V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/springframework/boot/context/metrics/buffering/BufferingApplicationStartup;
public org.springframework.boot.context.metrics.buffering.StartupTimeline drainBufferedTimeline();
descriptor: ()Lorg/springframework/boot/context/metrics/buffering/StartupTimeline;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=2, args_size=1
start local 0 0: new java.util.ArrayList
dup
aload 0
getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.recordedSteps:Ljava/util/concurrent/BlockingQueue;
invokeinterface java.util.concurrent.BlockingQueue.size:()I
invokespecial java.util.ArrayList.<init>:(I)V
astore 1
start local 1 1: aload 0
getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.recordedSteps:Ljava/util/concurrent/BlockingQueue;
aload 1
invokeinterface java.util.concurrent.BlockingQueue.drainTo:(Ljava/util/Collection;)I
pop
2: new org.springframework.boot.context.metrics.buffering.StartupTimeline
dup
aload 0
getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.recordingStartTime:Ljava/time/Instant;
aload 0
getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.recordingStartNanos:J
aload 1
invokespecial org.springframework.boot.context.metrics.buffering.StartupTimeline.<init>:(Ljava/time/Instant;JLjava/util/Collection;)V
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/springframework/boot/context/metrics/buffering/BufferingApplicationStartup;
1 3 1 steps Ljava/util/List<Lorg/springframework/boot/context/metrics/buffering/BufferedStartupStep;>;
public org.springframework.core.metrics.StartupStep start(java.lang.String);
descriptor: (Ljava/lang/String;)Lorg/springframework/core/metrics/StartupStep;
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=3, args_size=2
start local 0 start local 1 0: new org.springframework.boot.context.metrics.buffering.BufferedStartupStep
dup
aload 0
dup
getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.currentSequenceId:J
lconst_1
ladd
dup2_x1
putfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.currentSequenceId:J
aload 1
1: aload 0
getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.currentSteps:Ljava/util/Deque;
invokeinterface java.util.Deque.peekFirst:()Ljava/lang/Object;
checkcast java.lang.Long
aload 0
invokedynamic accept(Lorg/springframework/boot/context/metrics/buffering/BufferingApplicationStartup;)Ljava/util/function/Consumer;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;)V
org/springframework/boot/context/metrics/buffering/BufferingApplicationStartup.record(Lorg/springframework/boot/context/metrics/buffering/BufferedStartupStep;)V (7)
(Lorg/springframework/boot/context/metrics/buffering/BufferedStartupStep;)V
2: invokespecial org.springframework.boot.context.metrics.buffering.BufferedStartupStep.<init>:(JLjava/lang/String;Ljava/lang/Long;Ljava/util/function/Consumer;)V
astore 2
start local 2 3: aload 2
aload 0
invokevirtual org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.getCurrentTime:()J
invokevirtual org.springframework.boot.context.metrics.buffering.BufferedStartupStep.recordStartTime:(J)V
4: aload 0
getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.currentSteps:Ljava/util/Deque;
aload 0
getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.currentSequenceId:J
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
invokeinterface java.util.Deque.offerFirst:(Ljava/lang/Object;)Z
pop
5: aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/springframework/boot/context/metrics/buffering/BufferingApplicationStartup;
0 6 1 name Ljava/lang/String;
3 6 2 step Lorg/springframework/boot/context/metrics/buffering/BufferedStartupStep;
MethodParameters:
Name Flags
name
private void record(org.springframework.boot.context.metrics.buffering.BufferedStartupStep);
descriptor: (Lorg/springframework/boot/context/metrics/buffering/BufferedStartupStep;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 1
aload 0
invokevirtual org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.getCurrentTime:()J
invokevirtual org.springframework.boot.context.metrics.buffering.BufferedStartupStep.recordEndTime:(J)V
1: aload 0
getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.stepFilters:Ljava/util/function/Predicate;
aload 1
invokeinterface java.util.function.Predicate.test:(Ljava/lang/Object;)Z
ifeq 3
2: aload 0
getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.recordedSteps:Ljava/util/concurrent/BlockingQueue;
aload 1
invokeinterface java.util.concurrent.BlockingQueue.offer:(Ljava/lang/Object;)Z
pop
3: StackMap locals:
StackMap stack:
aload 0
getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.currentSteps:Ljava/util/Deque;
invokeinterface java.util.Deque.removeFirst:()Ljava/lang/Object;
pop
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/springframework/boot/context/metrics/buffering/BufferingApplicationStartup;
0 5 1 step Lorg/springframework/boot/context/metrics/buffering/BufferedStartupStep;
MethodParameters:
Name Flags
step
private long getCurrentTime();
descriptor: ()J
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: invokestatic java.lang.System.nanoTime:()J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/springframework/boot/context/metrics/buffering/BufferingApplicationStartup;
private static boolean lambda$0(org.springframework.core.metrics.StartupStep);
descriptor: (Lorg/springframework/core/metrics/StartupStep;)Z
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 step Lorg/springframework/core/metrics/StartupStep;
}
SourceFile: "BufferingApplicationStartup.java"
InnerClasses:
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles