class com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer
super_class: java.lang.Object
{
private static final org.graalvm.nativeimage.Threading$RecurringCallbackAccess CALLBACK_ACCESS;
descriptor: Lorg/graalvm/nativeimage/Threading$RecurringCallbackAccess;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final double EWMA_LAMBDA;
descriptor: D
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 0.3
private static final double TARGET_INTERVAL_FLEXIBILITY;
descriptor: D
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 0.95
private static final int INITIAL_CHECKS;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 100
private static final long MINIMUM_INTERVAL_NANOS;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1000
private final long targetIntervalNanos;
descriptor: J
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final long flexibleTargetIntervalNanos;
descriptor: J
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final org.graalvm.nativeimage.Threading$RecurringCallback callback;
descriptor: Lorg/graalvm/nativeimage/Threading$RecurringCallback;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private int requestedChecks;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private double ewmaChecksPerNano;
descriptor: D
flags: (0x0002) ACC_PRIVATE
private long lastCapture;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private long lastCallbackExecution;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private volatile boolean isExecuting;
descriptor: Z
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: ldc Lcom/oracle/svm/core/thread/ThreadingSupportImpl;
invokevirtual java.lang.Class.desiredAssertionStatus:()Z
ifne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: putstatic com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.$assertionsDisabled:Z
3: new com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer$1
dup
invokespecial com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer$1.<init>:()V
putstatic com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.CALLBACK_ACCESS:Lorg/graalvm/nativeimage/Threading$RecurringCallbackAccess;
4: return
LocalVariableTable:
Start End Slot Name Signature
void <init>(long, org.graalvm.nativeimage.Threading$RecurringCallback);
descriptor: (JLorg/graalvm/nativeimage/Threading$RecurringCallback;)V
flags: (0x0000)
Code:
stack=5, locals=6, args_size=3
start local 0 start local 1 start local 3 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
iconst_0
putfield com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.isExecuting:Z
2: aload 0
ldc 1000
lload 1
invokestatic java.lang.Math.max:(JJ)J
putfield com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.targetIntervalNanos:J
3: aload 0
lload 1
l2d
ldc 0.95
dmul
d2l
putfield com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.flexibleTargetIntervalNanos:J
4: aload 0
aload 3
putfield com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.callback:Lorg/graalvm/nativeimage/Threading$RecurringCallback;
5: invokestatic java.lang.System.nanoTime:()J
lstore 4
start local 4 6: aload 0
lload 4
putfield com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.lastCapture:J
7: aload 0
lload 4
putfield com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.lastCallbackExecution:J
8: aload 0
bipush 100
putfield com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.requestedChecks:I
9: return
end local 4 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lcom/oracle/svm/core/thread/ThreadingSupportImpl$RecurringCallbackTimer;
0 10 1 targetIntervalNanos J
0 10 3 callback Lorg/graalvm/nativeimage/Threading$RecurringCallback;
6 10 4 now J
MethodParameters:
Name Flags
targetIntervalNanos
callback
public void evaluate();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=2, args_size=1
start local 0 0: aload 0
invokevirtual com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.updateStatistics:()V
1: aload 0
invokevirtual com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.executeCallback:()V
2: goto 6
StackMap locals:
StackMap stack: java.lang.Throwable
3: astore 1
4: aload 0
invokevirtual com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.updateSafepointRequested:()V
5: aload 1
athrow
6: StackMap locals:
StackMap stack:
aload 0
invokevirtual com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.updateSafepointRequested:()V
7: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/oracle/svm/core/thread/ThreadingSupportImpl$RecurringCallbackTimer;
Exception table:
from to target type
1 3 3 any
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Must not contain safepoint checks.")
public void updateStatistics();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=9, args_size=1
start local 0 0: invokestatic java.lang.System.nanoTime:()J
lstore 1
start local 1 1: lload 1
aload 0
getfield com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.lastCapture:J
lsub
lstore 3
start local 3 2: invokestatic org.graalvm.nativeimage.CurrentIsolate.getCurrentThread:()Lorg/graalvm/nativeimage/IsolateThread;
invokestatic com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.getSkippedChecks:(Lorg/graalvm/nativeimage/IsolateThread;)I
istore 5
start local 5 3: aload 0
getfield com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.requestedChecks:I
iload 5
isub
istore 6
start local 6 4: getstatic com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.$assertionsDisabled:Z
ifne 5
iload 6
ifge 5
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
5: StackMap locals: com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer long long int int
StackMap stack:
lload 3
lconst_0
lcmp
ifle 12
iload 6
ifle 12
6: iload 6
i2d
lload 3
l2d
ddiv
dstore 7
start local 7 7: aload 0
getfield com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.ewmaChecksPerNano:D
dconst_0
dcmpl
ifne 10
8: aload 0
dload 7
putfield com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.ewmaChecksPerNano:D
9: goto 11
10: StackMap locals: double
StackMap stack:
aload 0
ldc 0.3
dload 7
dmul
ldc 0.7
aload 0
getfield com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.ewmaChecksPerNano:D
dmul
dadd
putfield com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.ewmaChecksPerNano:D
11: StackMap locals:
StackMap stack:
aload 0
lload 1
putfield com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.lastCapture:J
end local 7 12: StackMap locals:
StackMap stack:
return
end local 6 end local 5 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lcom/oracle/svm/core/thread/ThreadingSupportImpl$RecurringCallbackTimer;
1 13 1 now J
2 13 3 elapsedNanos J
3 13 5 skippedChecks I
4 13 6 executedChecks I
7 12 7 checksPerNano D
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Must be uninterruptible to avoid races with the safepoint code.")
private static int getSkippedChecks(org.graalvm.nativeimage.IsolateThread);
descriptor: (Lorg/graalvm/nativeimage/IsolateThread;)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=1, locals=2, args_size=1
start local 0 0: aload 0
invokestatic com.oracle.svm.core.thread.Safepoint.getSafepointRequested:(Lorg/graalvm/nativeimage/IsolateThread;)I
istore 1
start local 1 1: iload 1
iflt 2
iload 1
goto 3
StackMap locals: int
StackMap stack:
2: iload 1
ineg
StackMap locals:
StackMap stack: int
3: ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 thread Lorg/graalvm/nativeimage/IsolateThread;
1 4 1 rawValue I
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Must be uninterruptible to avoid races with the safepoint code.")
MethodParameters:
Name Flags
thread
private void executeCallback();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=3, args_size=1
start local 0 0: aload 0
invokevirtual com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.isCallbackDisabled:()Z
ifeq 2
1: return
2: StackMap locals:
StackMap stack:
aload 0
iconst_1
putfield com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.isExecuting:Z
3: invokestatic java.lang.System.nanoTime:()J
aload 0
getfield com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.lastCallbackExecution:J
aload 0
getfield com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.flexibleTargetIntervalNanos:J
ladd
lcmp
iflt 17
4: aload 0
ldc 2147483647
invokevirtual com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.setSafepointRequested:(I)V
5: aload 0
invokevirtual com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.invokeCallback:()V
6: goto 11
StackMap locals:
StackMap stack: java.lang.Throwable
7: astore 1
8: aload 0
invokestatic java.lang.System.nanoTime:()J
putfield com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.lastCallbackExecution:J
9: aload 0
invokevirtual com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.updateStatistics:()V
10: aload 1
athrow
11: StackMap locals:
StackMap stack:
aload 0
invokestatic java.lang.System.nanoTime:()J
putfield com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.lastCallbackExecution:J
12: aload 0
invokevirtual com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.updateStatistics:()V
13: goto 17
StackMap locals:
StackMap stack: java.lang.Throwable
14: astore 2
15: aload 0
iconst_0
putfield com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.isExecuting:Z
16: aload 2
athrow
17: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.isExecuting:Z
18: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Lcom/oracle/svm/core/thread/ThreadingSupportImpl$RecurringCallbackTimer;
Exception table:
from to target type
5 7 7 any
3 14 14 any
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Called by uninterruptible code.")
private void updateSafepointRequested();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=7, args_size=1
start local 0 0: aload 0
getfield com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.lastCallbackExecution:J
aload 0
getfield com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.targetIntervalNanos:J
ladd
lstore 1
start local 1 1: lload 1
invokestatic java.lang.System.nanoTime:()J
lsub
lstore 3
start local 3 2: lload 3
lconst_0
lcmp
ifge 5
aload 0
invokevirtual com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.isCallbackDisabled:()Z
ifeq 5
3: aload 0
ldc 2147483647
invokevirtual com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.setSafepointRequested:(I)V
4: goto 13
5: StackMap locals: long long
StackMap stack:
lload 3
ldc 1000
lcmp
ifge 6
ldc 1000
goto 7
StackMap locals:
StackMap stack:
6: lload 3
StackMap locals:
StackMap stack: long
7: lstore 3
8: aload 0
getfield com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.ewmaChecksPerNano:D
lload 3
l2d
dmul
dstore 5
start local 5 9: aload 0
dload 5
ldc 2.147483647E9
dcmpl
ifle 10
ldc 2147483647
goto 12
StackMap locals: com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer long long double
StackMap stack: com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer
10: dload 5
dconst_1
dcmpg
ifge 11
iconst_1
goto 12
StackMap locals:
StackMap stack: com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer
11: dload 5
d2i
StackMap locals: com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer long long double
StackMap stack: com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer int
12: invokevirtual com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.setSafepointRequested:(I)V
end local 5 13: StackMap locals:
StackMap stack:
return
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lcom/oracle/svm/core/thread/ThreadingSupportImpl$RecurringCallbackTimer;
1 14 1 nextDeadline J
2 14 3 remainingNanos J
9 13 5 checks D
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Called by uninterruptible code.")
public void setSafepointRequested(int);
descriptor: (I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iload 1
putfield com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.requestedChecks:I
1: iload 1
invokestatic com.oracle.svm.core.thread.Safepoint.setSafepointRequested:(I)V
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/oracle/svm/core/thread/ThreadingSupportImpl$RecurringCallbackTimer;
0 3 1 value I
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Called by uninterruptible code.")
MethodParameters:
Name Flags
value
private boolean isCallbackDisabled();
descriptor: ()Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.isExecuting:Z
ifne 1
invokestatic com.oracle.svm.core.thread.ThreadingSupportImpl.isRecurringCallbackPaused:()Z
ifne 1
iconst_0
ireturn
StackMap locals:
StackMap stack:
1: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/svm/core/thread/ThreadingSupportImpl$RecurringCallbackTimer;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Called by uninterruptible code.")
private void invokeCallback();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.callback:Lorg/graalvm/nativeimage/Threading$RecurringCallback;
getstatic com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer.CALLBACK_ACCESS:Lorg/graalvm/nativeimage/Threading$RecurringCallbackAccess;
invokeinterface org.graalvm.nativeimage.Threading$RecurringCallback.run:(Lorg/graalvm/nativeimage/Threading$RecurringCallbackAccess;)V
1: goto 5
StackMap locals:
StackMap stack: com.oracle.svm.core.thread.Safepoint$SafepointException
2: astore 1
start local 1 3: aload 1
athrow
end local 1 4: StackMap locals:
StackMap stack: java.lang.Throwable
pop
5: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/oracle/svm/core/thread/ThreadingSupportImpl$RecurringCallbackTimer;
3 4 1 se Lcom/oracle/svm/core/thread/Safepoint$SafepointException;
Exception table:
from to target type
0 1 2 Class com.oracle.svm.core.thread.Safepoint$SafepointException
0 1 4 Class java.lang.Throwable
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Required by caller, but does not apply to callee.", calleeMustBe = false)
com.oracle.svm.core.annotate.RestrictHeapAccess(reason = "Callee may allocate", access = com.oracle.svm.core.annotate.RestrictHeapAccess$Access.UNRESTRICTED:Lcom/oracle/svm/core/annotate/RestrictHeapAccess$Access;, overridesCallers = true)
}
SourceFile: "ThreadingSupportImpl.java"
NestHost: com.oracle.svm.core.thread.ThreadingSupportImpl
InnerClasses:
public final Access = com.oracle.svm.core.annotate.RestrictHeapAccess$Access of com.oracle.svm.core.annotate.RestrictHeapAccess
SafepointException = com.oracle.svm.core.thread.Safepoint$SafepointException of com.oracle.svm.core.thread.Safepoint
private RecurringCallbackTimer = com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer of com.oracle.svm.core.thread.ThreadingSupportImpl
com.oracle.svm.core.thread.ThreadingSupportImpl$RecurringCallbackTimer$1
public abstract RecurringCallback = org.graalvm.nativeimage.Threading$RecurringCallback of org.graalvm.nativeimage.Threading
public abstract RecurringCallbackAccess = org.graalvm.nativeimage.Threading$RecurringCallbackAccess of org.graalvm.nativeimage.Threading