class sun.misc.TimerThread extends java.lang.Thread
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: sun.misc.TimerThread
super_class: java.lang.Thread
{
public static boolean debug;
descriptor: Z
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
static sun.misc.TimerThread timerThread;
descriptor: Lsun/misc/TimerThread;
flags: (0x0008) ACC_STATIC
static boolean notified;
descriptor: Z
flags: (0x0008) ACC_STATIC
static sun.misc.Timer timerQueue;
descriptor: Lsun/misc/Timer;
flags: (0x0008) ACC_STATIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: iconst_0
putstatic sun.misc.TimerThread.debug:Z
1: iconst_0
putstatic sun.misc.TimerThread.notified:Z
2: aconst_null
putstatic sun.misc.TimerThread.timerQueue:Lsun/misc/Timer;
return
LocalVariableTable:
Start End Slot Name Signature
protected void <init>();
descriptor: ()V
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
ldc "TimerThread"
invokespecial java.lang.Thread.<init>:(Ljava/lang/String;)V
1: aload 0
putstatic sun.misc.TimerThread.timerThread:Lsun/misc/TimerThread;
2: aload 0
invokevirtual sun.misc.TimerThread.start:()V
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/misc/TimerThread;
public synchronized void run();
descriptor: ()V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=4, locals=7, args_size=1
start local 0 0: goto 4
1: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.lang.Object.wait:()V
2: goto 4
StackMap locals:
StackMap stack: java.lang.InterruptedException
3: pop
4: StackMap locals:
StackMap stack:
getstatic sun.misc.TimerThread.timerQueue:Lsun/misc/Timer;
ifnull 1
5: iconst_0
putstatic sun.misc.TimerThread.notified:Z
6: getstatic sun.misc.TimerThread.timerQueue:Lsun/misc/Timer;
getfield sun.misc.Timer.sleepUntil:J
invokestatic java.lang.System.currentTimeMillis:()J
lsub
lstore 1
start local 1 7: lload 1
lconst_0
lcmp
ifle 11
8: aload 0
lload 1
invokevirtual java.lang.Object.wait:(J)V
9: goto 11
StackMap locals: sun.misc.TimerThread long
StackMap stack: java.lang.InterruptedException
10: pop
11: StackMap locals:
StackMap stack:
getstatic sun.misc.TimerThread.notified:Z
ifne 23
12: getstatic sun.misc.TimerThread.timerQueue:Lsun/misc/Timer;
astore 3
start local 3 13: getstatic sun.misc.TimerThread.timerQueue:Lsun/misc/Timer;
getfield sun.misc.Timer.next:Lsun/misc/Timer;
putstatic sun.misc.TimerThread.timerQueue:Lsun/misc/Timer;
14: aload 3
aload 3
getfield sun.misc.Timer.sleepUntil:J
15: invokestatic sun.misc.TimerTickThread.call:(Lsun/misc/Timer;J)Lsun/misc/TimerTickThread;
astore 4
start local 4 16: getstatic sun.misc.TimerThread.debug:Z
ifeq 23
17: invokestatic java.lang.System.currentTimeMillis:()J
aload 3
getfield sun.misc.Timer.sleepUntil:J
lsub
lstore 5
start local 5 18: getstatic java.lang.System.out:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "tick("
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 4
invokevirtual sun.misc.TimerTickThread.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ","
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
19: aload 3
getfield sun.misc.Timer.interval:J
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc ","
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
lload 5
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc ")"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
20: invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
21: lload 5
ldc 250
lcmp
ifle 23
22: getstatic java.lang.System.out:Ljava/io/PrintStream;
ldc "*** BIG DELAY ***"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
end local 5 end local 4 end local 3 end local 1 23: StackMap locals:
StackMap stack:
goto 4
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 24 0 this Lsun/misc/TimerThread;
7 23 1 delay J
13 23 3 timer Lsun/misc/Timer;
16 23 4 thr Lsun/misc/TimerTickThread;
18 23 5 delta J
Exception table:
from to target type
1 2 3 Class java.lang.InterruptedException
8 9 10 Class java.lang.InterruptedException
protected static void enqueue(sun.misc.Timer);
descriptor: (Lsun/misc/Timer;)V
flags: (0x000c) ACC_PROTECTED, ACC_STATIC
Code:
stack=5, locals=7, args_size=1
start local 0 0: aconst_null
astore 1
start local 1 1: getstatic sun.misc.TimerThread.timerQueue:Lsun/misc/Timer;
astore 2
start local 2 2: aload 2
ifnull 3
aload 0
getfield sun.misc.Timer.sleepUntil:J
aload 2
getfield sun.misc.Timer.sleepUntil:J
lcmp
ifgt 8
3: StackMap locals: sun.misc.Timer sun.misc.Timer
StackMap stack:
aload 0
getstatic sun.misc.TimerThread.timerQueue:Lsun/misc/Timer;
putfield sun.misc.Timer.next:Lsun/misc/Timer;
4: aload 0
putstatic sun.misc.TimerThread.timerQueue:Lsun/misc/Timer;
5: iconst_1
putstatic sun.misc.TimerThread.notified:Z
6: getstatic sun.misc.TimerThread.timerThread:Lsun/misc/TimerThread;
invokevirtual java.lang.Object.notify:()V
7: goto 14
8: StackMap locals:
StackMap stack:
aload 2
astore 1
9: aload 2
getfield sun.misc.Timer.next:Lsun/misc/Timer;
astore 2
10: aload 2
ifnull 12
aload 0
getfield sun.misc.Timer.sleepUntil:J
aload 2
getfield sun.misc.Timer.sleepUntil:J
11: lcmp
ifgt 8
12: StackMap locals:
StackMap stack:
aload 0
aload 2
putfield sun.misc.Timer.next:Lsun/misc/Timer;
13: aload 1
aload 0
putfield sun.misc.Timer.next:Lsun/misc/Timer;
14: StackMap locals:
StackMap stack:
getstatic sun.misc.TimerThread.debug:Z
ifeq 26
15: invokestatic java.lang.System.currentTimeMillis:()J
lstore 3
start local 3 16: getstatic java.lang.System.out:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.getName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
17: ldc ": enqueue "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield sun.misc.Timer.interval:J
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc ": "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
18: invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
19: getstatic sun.misc.TimerThread.timerQueue:Lsun/misc/Timer;
astore 2
20: goto 24
21: StackMap locals: long
StackMap stack:
aload 2
getfield sun.misc.Timer.sleepUntil:J
lload 3
lsub
lstore 5
start local 5 22: getstatic java.lang.System.out:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
aload 2
getfield sun.misc.Timer.interval:J
invokestatic java.lang.String.valueOf:(J)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "("
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
lload 5
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc ") "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
23: aload 2
getfield sun.misc.Timer.next:Lsun/misc/Timer;
astore 2
end local 5 24: StackMap locals:
StackMap stack:
aload 2
ifnonnull 21
25: getstatic java.lang.System.out:Ljava/io/PrintStream;
invokevirtual java.io.PrintStream.println:()V
end local 3 26: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 27 0 timer Lsun/misc/Timer;
1 27 1 prev Lsun/misc/Timer;
2 27 2 cur Lsun/misc/Timer;
16 26 3 now J
22 24 5 delta J
MethodParameters:
Name Flags
timer
protected static boolean dequeue(sun.misc.Timer);
descriptor: (Lsun/misc/Timer;)Z
flags: (0x000c) ACC_PROTECTED, ACC_STATIC
Code:
stack=5, locals=7, args_size=1
start local 0 0: aconst_null
astore 1
start local 1 1: getstatic sun.misc.TimerThread.timerQueue:Lsun/misc/Timer;
astore 2
start local 2 2: goto 5
3: StackMap locals: sun.misc.Timer sun.misc.Timer
StackMap stack:
aload 2
astore 1
4: aload 2
getfield sun.misc.Timer.next:Lsun/misc/Timer;
astore 2
5: StackMap locals:
StackMap stack:
aload 2
ifnull 6
aload 2
aload 0
if_acmpne 3
6: StackMap locals:
StackMap stack:
aload 2
ifnonnull 12
7: getstatic sun.misc.TimerThread.debug:Z
ifeq 11
8: getstatic java.lang.System.out:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.getName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
9: ldc ": dequeue "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield sun.misc.Timer.interval:J
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc ": no-op"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
10: invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
11: StackMap locals:
StackMap stack:
iconst_0
ireturn
12: StackMap locals:
StackMap stack:
aload 1
ifnonnull 17
13: aload 0
getfield sun.misc.Timer.next:Lsun/misc/Timer;
putstatic sun.misc.TimerThread.timerQueue:Lsun/misc/Timer;
14: iconst_1
putstatic sun.misc.TimerThread.notified:Z
15: getstatic sun.misc.TimerThread.timerThread:Lsun/misc/TimerThread;
invokevirtual java.lang.Object.notify:()V
16: goto 18
17: StackMap locals:
StackMap stack:
aload 1
aload 0
getfield sun.misc.Timer.next:Lsun/misc/Timer;
putfield sun.misc.Timer.next:Lsun/misc/Timer;
18: StackMap locals:
StackMap stack:
aload 0
aconst_null
putfield sun.misc.Timer.next:Lsun/misc/Timer;
19: getstatic sun.misc.TimerThread.debug:Z
ifeq 31
20: invokestatic java.lang.System.currentTimeMillis:()J
lstore 3
start local 3 21: getstatic java.lang.System.out:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.getName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
22: ldc ": dequeue "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield sun.misc.Timer.interval:J
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc ": "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
23: invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
24: getstatic sun.misc.TimerThread.timerQueue:Lsun/misc/Timer;
astore 2
25: goto 29
26: StackMap locals: long
StackMap stack:
aload 2
getfield sun.misc.Timer.sleepUntil:J
lload 3
lsub
lstore 5
start local 5 27: getstatic java.lang.System.out:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
aload 2
getfield sun.misc.Timer.interval:J
invokestatic java.lang.String.valueOf:(J)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "("
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
lload 5
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc ") "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
28: aload 2
getfield sun.misc.Timer.next:Lsun/misc/Timer;
astore 2
end local 5 29: StackMap locals:
StackMap stack:
aload 2
ifnonnull 26
30: getstatic java.lang.System.out:Ljava/io/PrintStream;
invokevirtual java.io.PrintStream.println:()V
end local 3 31: StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 32 0 timer Lsun/misc/Timer;
1 32 1 prev Lsun/misc/Timer;
2 32 2 cur Lsun/misc/Timer;
21 31 3 now J
27 29 5 delta J
MethodParameters:
Name Flags
timer
protected static void requeue(sun.misc.Timer);
descriptor: (Lsun/misc/Timer;)V
flags: (0x000c) ACC_PROTECTED, ACC_STATIC
Code:
stack=5, locals=3, args_size=1
start local 0 0: aload 0
getfield sun.misc.Timer.stopped:Z
ifne 8
1: invokestatic java.lang.System.currentTimeMillis:()J
lstore 1
start local 1 2: aload 0
getfield sun.misc.Timer.regular:Z
ifeq 5
3: aload 0
dup
getfield sun.misc.Timer.sleepUntil:J
aload 0
getfield sun.misc.Timer.interval:J
ladd
putfield sun.misc.Timer.sleepUntil:J
4: goto 6
5: StackMap locals: long
StackMap stack:
aload 0
lload 1
aload 0
getfield sun.misc.Timer.interval:J
ladd
putfield sun.misc.Timer.sleepUntil:J
6: StackMap locals:
StackMap stack:
aload 0
invokestatic sun.misc.TimerThread.enqueue:(Lsun/misc/Timer;)V
end local 1 7: goto 12
StackMap locals:
StackMap stack:
8: getstatic sun.misc.TimerThread.debug:Z
ifeq 12
9: getstatic java.lang.System.out:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.getName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
10: ldc ": requeue "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield sun.misc.Timer.interval:J
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc ": no-op"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
11: invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
12: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 timer Lsun/misc/Timer;
2 7 1 now J
MethodParameters:
Name Flags
timer
}
SourceFile: "Timer.java"