public final class android.view.Choreographer
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: android.view.Choreographer
super_class: java.lang.Object
{
private static final java.lang.String TAG;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "Choreographer"
private static final boolean DEBUG_JANK;
descriptor: Z
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 0
private static final boolean DEBUG_FRAMES;
descriptor: Z
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 0
private static final long DEFAULT_FRAME_DELAY;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 10
private static volatile long sFrameDelay;
descriptor: J
flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE
private static final java.lang.ThreadLocal<android.view.Choreographer> sThreadInstance;
descriptor: Ljava/lang/ThreadLocal;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/lang/ThreadLocal<Landroid/view/Choreographer;>;
private static volatile android.view.Choreographer mMainInstance;
descriptor: Landroid/view/Choreographer;
flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE
private static final java.lang.ThreadLocal<android.view.Choreographer> sSfThreadInstance;
descriptor: Ljava/lang/ThreadLocal;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/lang/ThreadLocal<Landroid/view/Choreographer;>;
private static final boolean USE_VSYNC;
descriptor: Z
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final boolean USE_FRAME_TIME;
descriptor: Z
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int SKIPPED_FRAME_WARNING_LIMIT;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int MSG_DO_FRAME;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 0
private static final int MSG_DO_SCHEDULE_VSYNC;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1
private static final int MSG_DO_SCHEDULE_CALLBACK;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 2
private static final java.lang.Object FRAME_CALLBACK_TOKEN;
descriptor: Ljava/lang/Object;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final java.lang.Object mLock;
descriptor: Ljava/lang/Object;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final android.os.Looper mLooper;
descriptor: Landroid/os/Looper;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final android.view.Choreographer$FrameHandler mHandler;
descriptor: Landroid/view/Choreographer$FrameHandler;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final android.view.Choreographer$FrameDisplayEventReceiver mDisplayEventReceiver;
descriptor: Landroid/view/Choreographer$FrameDisplayEventReceiver;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private android.view.Choreographer$CallbackRecord mCallbackPool;
descriptor: Landroid/view/Choreographer$CallbackRecord;
flags: (0x0002) ACC_PRIVATE
private final android.view.Choreographer$CallbackQueue[] mCallbackQueues;
descriptor: [Landroid/view/Choreographer$CallbackQueue;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private boolean mFrameScheduled;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private boolean mCallbacksRunning;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private long mLastFrameTimeNanos;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private long mFrameIntervalNanos;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private boolean mDebugPrintNextFrameTimeDelta;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private int mFPSDivisor;
descriptor: I
flags: (0x0002) ACC_PRIVATE
android.view.FrameInfo mFrameInfo;
descriptor: Landroid/view/FrameInfo;
flags: (0x0000)
private static final java.lang.String[] CALLBACK_TRACE_TITLES;
descriptor: [Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
public static final int CALLBACK_INPUT;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 0
public static final int CALLBACK_ANIMATION;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 1
public static final int CALLBACK_TRAVERSAL;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 2
public static final int CALLBACK_COMMIT;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 3
private static final int CALLBACK_LAST;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 3
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=0, args_size=0
0: ldc 10
putstatic android.view.Choreographer.sFrameDelay:J
1: new android.view.Choreographer$1
dup
invokespecial android.view.Choreographer$1.<init>:()V
2: putstatic android.view.Choreographer.sThreadInstance:Ljava/lang/ThreadLocal;
3: new android.view.Choreographer$2
dup
invokespecial android.view.Choreographer$2.<init>:()V
4: putstatic android.view.Choreographer.sSfThreadInstance:Ljava/lang/ThreadLocal;
5: ldc "debug.choreographer.vsync"
iconst_1
6: invokestatic android.os.SystemProperties.getBoolean:(Ljava/lang/String;Z)Z
putstatic android.view.Choreographer.USE_VSYNC:Z
7: ldc "debug.choreographer.frametime"
iconst_1
8: invokestatic android.os.SystemProperties.getBoolean:(Ljava/lang/String;Z)Z
putstatic android.view.Choreographer.USE_FRAME_TIME:Z
9: ldc "debug.choreographer.skipwarning"
bipush 30
10: invokestatic android.os.SystemProperties.getInt:(Ljava/lang/String;I)I
putstatic android.view.Choreographer.SKIPPED_FRAME_WARNING_LIMIT:I
11: new android.view.Choreographer$3
dup
invokespecial android.view.Choreographer$3.<init>:()V
putstatic android.view.Choreographer.FRAME_CALLBACK_TOKEN:Ljava/lang/Object;
12: iconst_4
anewarray java.lang.String
dup
iconst_0
13: ldc "input"
aastore
dup
iconst_1
ldc "animation"
aastore
dup
iconst_2
ldc "traversal"
aastore
dup
iconst_3
ldc "commit"
aastore
14: putstatic android.view.Choreographer.CALLBACK_TRACE_TITLES:[Ljava/lang/String;
15: return
LocalVariableTable:
Start End Slot Name Signature
private void <init>(android.os.Looper, int);
descriptor: (Landroid/os/Looper;I)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.lang.Object
dup
invokespecial java.lang.Object.<init>:()V
putfield android.view.Choreographer.mLock:Ljava/lang/Object;
2: aload 0
iconst_1
putfield android.view.Choreographer.mFPSDivisor:I
3: aload 0
new android.view.FrameInfo
dup
invokespecial android.view.FrameInfo.<init>:()V
putfield android.view.Choreographer.mFrameInfo:Landroid/view/FrameInfo;
4: aload 0
aload 1
putfield android.view.Choreographer.mLooper:Landroid/os/Looper;
5: aload 0
new android.view.Choreographer$FrameHandler
dup
aload 0
aload 1
invokespecial android.view.Choreographer$FrameHandler.<init>:(Landroid/view/Choreographer;Landroid/os/Looper;)V
putfield android.view.Choreographer.mHandler:Landroid/view/Choreographer$FrameHandler;
6: aload 0
getstatic android.view.Choreographer.USE_VSYNC:Z
ifeq 8
7: new android.view.Choreographer$FrameDisplayEventReceiver
dup
aload 0
aload 1
iload 2
invokespecial android.view.Choreographer$FrameDisplayEventReceiver.<init>:(Landroid/view/Choreographer;Landroid/os/Looper;I)V
goto 9
8: StackMap locals: android.view.Choreographer android.os.Looper int
StackMap stack: android.view.Choreographer
aconst_null
9: StackMap locals: android.view.Choreographer android.os.Looper int
StackMap stack: android.view.Choreographer android.view.Choreographer$FrameDisplayEventReceiver
putfield android.view.Choreographer.mDisplayEventReceiver:Landroid/view/Choreographer$FrameDisplayEventReceiver;
10: aload 0
ldc -9223372036854775808
putfield android.view.Choreographer.mLastFrameTimeNanos:J
11: aload 0
ldc 1.0E9
invokestatic android.view.Choreographer.getRefreshRate:()F
fdiv
f2l
putfield android.view.Choreographer.mFrameIntervalNanos:J
12: aload 0
iconst_4
anewarray android.view.Choreographer$CallbackQueue
putfield android.view.Choreographer.mCallbackQueues:[Landroid/view/Choreographer$CallbackQueue;
13: iconst_0
istore 3
start local 3 14: goto 17
15: StackMap locals: int
StackMap stack:
aload 0
getfield android.view.Choreographer.mCallbackQueues:[Landroid/view/Choreographer$CallbackQueue;
iload 3
new android.view.Choreographer$CallbackQueue
dup
aload 0
invokespecial android.view.Choreographer$CallbackQueue.<init>:(Landroid/view/Choreographer;)V
aastore
16: iinc 3 1
StackMap locals:
StackMap stack:
17: iload 3
iconst_3
if_icmple 15
end local 3 18: aload 0
ldc "debug.hwui.fps_divisor"
iconst_1
invokestatic android.os.SystemProperties.getInt:(Ljava/lang/String;I)I
invokevirtual android.view.Choreographer.setFPSDivisor:(I)V
19: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 this Landroid/view/Choreographer;
0 20 1 looper Landroid/os/Looper;
0 20 2 vsyncSource I
14 18 3 i I
MethodParameters:
Name Flags
looper
vsyncSource
private static float getRefreshRate();
descriptor: ()F
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=0
0: invokestatic android.hardware.display.DisplayManagerGlobal.getInstance:()Landroid/hardware/display/DisplayManagerGlobal;
1: iconst_0
2: invokevirtual android.hardware.display.DisplayManagerGlobal.getDisplayInfo:(I)Landroid/view/DisplayInfo;
astore 0
start local 0 3: aload 0
invokevirtual android.view.DisplayInfo.getMode:()Landroid/view/Display$Mode;
invokevirtual android.view.Display$Mode.getRefreshRate:()F
freturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
3 4 0 di Landroid/view/DisplayInfo;
public static android.view.Choreographer getInstance();
descriptor: ()Landroid/view/Choreographer;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: getstatic android.view.Choreographer.sThreadInstance:Ljava/lang/ThreadLocal;
invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
checkcast android.view.Choreographer
areturn
LocalVariableTable:
Start End Slot Name Signature
public static android.view.Choreographer getSfInstance();
descriptor: ()Landroid/view/Choreographer;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: getstatic android.view.Choreographer.sSfThreadInstance:Ljava/lang/ThreadLocal;
invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
checkcast android.view.Choreographer
areturn
LocalVariableTable:
Start End Slot Name Signature
public static android.view.Choreographer getMainThreadInstance();
descriptor: ()Landroid/view/Choreographer;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: getstatic android.view.Choreographer.mMainInstance:Landroid/view/Choreographer;
areturn
LocalVariableTable:
Start End Slot Name Signature
public static void releaseInstance();
descriptor: ()V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=1, locals=1, args_size=0
0: getstatic android.view.Choreographer.sThreadInstance:Ljava/lang/ThreadLocal;
invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
checkcast android.view.Choreographer
astore 0
start local 0 1: getstatic android.view.Choreographer.sThreadInstance:Ljava/lang/ThreadLocal;
invokevirtual java.lang.ThreadLocal.remove:()V
2: aload 0
invokevirtual android.view.Choreographer.dispose:()V
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
1 4 0 old Landroid/view/Choreographer;
private void dispose();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield android.view.Choreographer.mDisplayEventReceiver:Landroid/view/Choreographer$FrameDisplayEventReceiver;
invokevirtual android.view.Choreographer$FrameDisplayEventReceiver.dispose:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Landroid/view/Choreographer;
public static long getFrameDelay();
descriptor: ()J
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: getstatic android.view.Choreographer.sFrameDelay:J
lreturn
LocalVariableTable:
Start End Slot Name Signature
public static void setFrameDelay(long);
descriptor: (J)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: lload 0
putstatic android.view.Choreographer.sFrameDelay:J
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 frameDelay J
MethodParameters:
Name Flags
frameDelay
public static long subtractFrameDelay(long);
descriptor: (J)J
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=4, args_size=1
start local 0 0: getstatic android.view.Choreographer.sFrameDelay:J
lstore 2
start local 2 1: lload 0
lload 2
lcmp
ifgt 2
lconst_0
goto 3
StackMap locals: long
StackMap stack:
2: lload 0
lload 2
lsub
StackMap locals:
StackMap stack: long
3: lreturn
end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 delayMillis J
1 4 2 frameDelay J
MethodParameters:
Name Flags
delayMillis
public long getFrameIntervalNanos();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield android.view.Choreographer.mFrameIntervalNanos:J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Landroid/view/Choreographer;
void dump(java.lang.String, java.io.PrintWriter);
descriptor: (Ljava/lang/String;Ljava/io/PrintWriter;)V
flags: (0x0000)
Code:
stack=5, locals=4, args_size=3
start local 0 start local 1 start local 2 0: new java.lang.StringBuilder
dup
aload 1
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 3
start local 3 1: aload 2
aload 1
invokevirtual java.io.PrintWriter.print:(Ljava/lang/String;)V
aload 2
ldc "Choreographer:"
invokevirtual java.io.PrintWriter.println:(Ljava/lang/String;)V
2: aload 2
aload 3
invokevirtual java.io.PrintWriter.print:(Ljava/lang/String;)V
aload 2
ldc "mFrameScheduled="
invokevirtual java.io.PrintWriter.print:(Ljava/lang/String;)V
3: aload 2
aload 0
getfield android.view.Choreographer.mFrameScheduled:Z
invokevirtual java.io.PrintWriter.println:(Z)V
4: aload 2
aload 3
invokevirtual java.io.PrintWriter.print:(Ljava/lang/String;)V
aload 2
ldc "mLastFrameTime="
invokevirtual java.io.PrintWriter.print:(Ljava/lang/String;)V
5: aload 2
aload 0
getfield android.view.Choreographer.mLastFrameTimeNanos:J
ldc 1000000
ldiv
invokestatic android.util.TimeUtils.formatUptime:(J)Ljava/lang/String;
invokevirtual java.io.PrintWriter.println:(Ljava/lang/String;)V
6: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Landroid/view/Choreographer;
0 7 1 prefix Ljava/lang/String;
0 7 2 writer Ljava/io/PrintWriter;
1 7 3 innerPrefix Ljava/lang/String;
MethodParameters:
Name Flags
prefix
writer
public void postCallback(int, java.lang.Runnable, java.lang.Object);
descriptor: (ILjava/lang/Runnable;Ljava/lang/Object;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
iload 1
aload 2
aload 3
lconst_0
invokevirtual android.view.Choreographer.postCallbackDelayed:(ILjava/lang/Runnable;Ljava/lang/Object;J)V
1: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Landroid/view/Choreographer;
0 2 1 callbackType I
0 2 2 action Ljava/lang/Runnable;
0 2 3 token Ljava/lang/Object;
MethodParameters:
Name Flags
callbackType
action
token
public void postCallbackDelayed(int, java.lang.Runnable, java.lang.Object, long);
descriptor: (ILjava/lang/Runnable;Ljava/lang/Object;J)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=6, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 2
ifnonnull 2
1: new java.lang.IllegalArgumentException
dup
ldc "action must not be null"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
iload 1
iflt 3
iload 1
iconst_3
if_icmple 4
3: StackMap locals:
StackMap stack:
new java.lang.IllegalArgumentException
dup
ldc "callbackType is invalid"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aload 0
iload 1
aload 2
aload 3
lload 4
invokevirtual android.view.Choreographer.postCallbackDelayedInternal:(ILjava/lang/Object;Ljava/lang/Object;J)V
5: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Landroid/view/Choreographer;
0 6 1 callbackType I
0 6 2 action Ljava/lang/Runnable;
0 6 3 token Ljava/lang/Object;
0 6 4 delayMillis J
MethodParameters:
Name Flags
callbackType
action
token
delayMillis
private void postCallbackDelayedInternal(int, java.lang.Object, java.lang.Object, long);
descriptor: (ILjava/lang/Object;Ljava/lang/Object;J)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=12, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
getfield android.view.Choreographer.mLock:Ljava/lang/Object;
dup
astore 6
monitorenter
1: invokestatic android.os.SystemClock.uptimeMillis:()J
lstore 7
start local 7 2: lload 7
lload 4
ladd
lstore 9
start local 9 3: aload 0
getfield android.view.Choreographer.mCallbackQueues:[Landroid/view/Choreographer$CallbackQueue;
iload 1
aaload
lload 9
aload 2
aload 3
invokevirtual android.view.Choreographer$CallbackQueue.addCallbackLocked:(JLjava/lang/Object;Ljava/lang/Object;)V
4: lload 9
lload 7
lcmp
ifgt 7
5: aload 0
lload 7
invokevirtual android.view.Choreographer.scheduleFrameLocked:(J)V
6: goto 11
7: StackMap locals: java.lang.Object long long
StackMap stack:
aload 0
getfield android.view.Choreographer.mHandler:Landroid/view/Choreographer$FrameHandler;
iconst_2
aload 2
invokevirtual android.view.Choreographer$FrameHandler.obtainMessage:(ILjava/lang/Object;)Landroid/os/Message;
astore 11
start local 11 8: aload 11
iload 1
putfield android.os.Message.arg1:I
9: aload 11
iconst_1
invokevirtual android.os.Message.setAsynchronous:(Z)V
10: aload 0
getfield android.view.Choreographer.mHandler:Landroid/view/Choreographer$FrameHandler;
aload 11
lload 9
invokevirtual android.view.Choreographer$FrameHandler.sendMessageAtTime:(Landroid/os/Message;J)Z
pop
end local 11 end local 9 end local 7 11: StackMap locals:
StackMap stack:
aload 6
monitorexit
12: goto 15
StackMap locals:
StackMap stack: java.lang.Throwable
13: aload 6
monitorexit
14: athrow
15: StackMap locals:
StackMap stack:
return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Landroid/view/Choreographer;
0 16 1 callbackType I
0 16 2 action Ljava/lang/Object;
0 16 3 token Ljava/lang/Object;
0 16 4 delayMillis J
2 11 7 now J
3 11 9 dueTime J
8 11 11 msg Landroid/os/Message;
Exception table:
from to target type
1 12 13 any
13 14 13 any
MethodParameters:
Name Flags
callbackType
action
token
delayMillis
public void removeCallbacks(int, java.lang.Runnable, java.lang.Object);
descriptor: (ILjava/lang/Runnable;Ljava/lang/Object;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 1
iflt 1
iload 1
iconst_3
if_icmple 2
1: StackMap locals:
StackMap stack:
new java.lang.IllegalArgumentException
dup
ldc "callbackType is invalid"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
iload 1
aload 2
aload 3
invokevirtual android.view.Choreographer.removeCallbacksInternal:(ILjava/lang/Object;Ljava/lang/Object;)V
3: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Landroid/view/Choreographer;
0 4 1 callbackType I
0 4 2 action Ljava/lang/Runnable;
0 4 3 token Ljava/lang/Object;
MethodParameters:
Name Flags
callbackType
action
token
private void removeCallbacksInternal(int, java.lang.Object, java.lang.Object);
descriptor: (ILjava/lang/Object;Ljava/lang/Object;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield android.view.Choreographer.mLock:Ljava/lang/Object;
dup
astore 4
monitorenter
1: aload 0
getfield android.view.Choreographer.mCallbackQueues:[Landroid/view/Choreographer$CallbackQueue;
iload 1
aaload
aload 2
aload 3
invokevirtual android.view.Choreographer$CallbackQueue.removeCallbacksLocked:(Ljava/lang/Object;Ljava/lang/Object;)V
2: aload 2
ifnull 4
aload 3
ifnonnull 4
3: aload 0
getfield android.view.Choreographer.mHandler:Landroid/view/Choreographer$FrameHandler;
iconst_2
aload 2
invokevirtual android.view.Choreographer$FrameHandler.removeMessages:(ILjava/lang/Object;)V
4: StackMap locals: java.lang.Object
StackMap stack:
aload 4
monitorexit
5: goto 8
StackMap locals:
StackMap stack: java.lang.Throwable
6: aload 4
monitorexit
7: athrow
8: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Landroid/view/Choreographer;
0 9 1 callbackType I
0 9 2 action Ljava/lang/Object;
0 9 3 token Ljava/lang/Object;
Exception table:
from to target type
1 5 6 any
6 7 6 any
MethodParameters:
Name Flags
callbackType
action
token
public void postFrameCallback(android.view.Choreographer$FrameCallback);
descriptor: (Landroid/view/Choreographer$FrameCallback;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
lconst_0
invokevirtual android.view.Choreographer.postFrameCallbackDelayed:(Landroid/view/Choreographer$FrameCallback;J)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Landroid/view/Choreographer;
0 2 1 callback Landroid/view/Choreographer$FrameCallback;
MethodParameters:
Name Flags
callback
public void postFrameCallbackDelayed(android.view.Choreographer$FrameCallback, long);
descriptor: (Landroid/view/Choreographer$FrameCallback;J)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 1
ifnonnull 2
1: new java.lang.IllegalArgumentException
dup
ldc "callback must not be null"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
iconst_1
3: aload 1
getstatic android.view.Choreographer.FRAME_CALLBACK_TOKEN:Ljava/lang/Object;
lload 2
4: invokevirtual android.view.Choreographer.postCallbackDelayedInternal:(ILjava/lang/Object;Ljava/lang/Object;J)V
5: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Landroid/view/Choreographer;
0 6 1 callback Landroid/view/Choreographer$FrameCallback;
0 6 2 delayMillis J
MethodParameters:
Name Flags
callback
delayMillis
public void removeFrameCallback(android.view.Choreographer$FrameCallback);
descriptor: (Landroid/view/Choreographer$FrameCallback;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 1
ifnonnull 2
1: new java.lang.IllegalArgumentException
dup
ldc "callback must not be null"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
iconst_1
aload 1
getstatic android.view.Choreographer.FRAME_CALLBACK_TOKEN:Ljava/lang/Object;
invokevirtual android.view.Choreographer.removeCallbacksInternal:(ILjava/lang/Object;Ljava/lang/Object;)V
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Landroid/view/Choreographer;
0 4 1 callback Landroid/view/Choreographer$FrameCallback;
MethodParameters:
Name Flags
callback
public long getFrameTime();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual android.view.Choreographer.getFrameTimeNanos:()J
ldc 1000000
ldiv
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Landroid/view/Choreographer;
public long getFrameTimeNanos();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield android.view.Choreographer.mLock:Ljava/lang/Object;
dup
astore 1
monitorenter
1: aload 0
getfield android.view.Choreographer.mCallbacksRunning:Z
ifne 3
2: new java.lang.IllegalStateException
dup
ldc "This method must only be called as part of a callback while a frame is in progress."
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals: java.lang.Object
StackMap stack:
getstatic android.view.Choreographer.USE_FRAME_TIME:Z
ifeq 4
aload 0
getfield android.view.Choreographer.mLastFrameTimeNanos:J
goto 5
StackMap locals:
StackMap stack:
4: invokestatic java.lang.System.nanoTime:()J
StackMap locals:
StackMap stack: long
5: aload 1
monitorexit
6: lreturn
7: StackMap locals:
StackMap stack: java.lang.Throwable
aload 1
monitorexit
8: athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Landroid/view/Choreographer;
Exception table:
from to target type
1 6 7 any
7 8 7 any
public long getLastFrameTimeNanos();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield android.view.Choreographer.mLock:Ljava/lang/Object;
dup
astore 1
monitorenter
1: getstatic android.view.Choreographer.USE_FRAME_TIME:Z
ifeq 2
aload 0
getfield android.view.Choreographer.mLastFrameTimeNanos:J
goto 3
StackMap locals: java.lang.Object
StackMap stack:
2: invokestatic java.lang.System.nanoTime:()J
StackMap locals:
StackMap stack: long
3: aload 1
monitorexit
4: lreturn
5: StackMap locals:
StackMap stack: java.lang.Throwable
aload 1
monitorexit
6: athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Landroid/view/Choreographer;
Exception table:
from to target type
1 4 5 any
5 6 5 any
private void scheduleFrameLocked(long);
descriptor: (J)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=6, args_size=2
start local 0 start local 1 0: aload 0
getfield android.view.Choreographer.mFrameScheduled:Z
ifne 15
1: aload 0
iconst_1
putfield android.view.Choreographer.mFrameScheduled:Z
2: getstatic android.view.Choreographer.USE_VSYNC:Z
ifeq 10
3: aload 0
invokevirtual android.view.Choreographer.isRunningOnLooperThreadLocked:()Z
ifeq 6
4: aload 0
invokevirtual android.view.Choreographer.scheduleVsyncLocked:()V
5: goto 15
6: StackMap locals:
StackMap stack:
aload 0
getfield android.view.Choreographer.mHandler:Landroid/view/Choreographer$FrameHandler;
iconst_1
invokevirtual android.view.Choreographer$FrameHandler.obtainMessage:(I)Landroid/os/Message;
astore 3
start local 3 7: aload 3
iconst_1
invokevirtual android.os.Message.setAsynchronous:(Z)V
8: aload 0
getfield android.view.Choreographer.mHandler:Landroid/view/Choreographer$FrameHandler;
aload 3
invokevirtual android.view.Choreographer$FrameHandler.sendMessageAtFrontOfQueue:(Landroid/os/Message;)Z
pop
end local 3 9: goto 15
10: StackMap locals:
StackMap stack:
aload 0
getfield android.view.Choreographer.mLastFrameTimeNanos:J
ldc 1000000
ldiv
getstatic android.view.Choreographer.sFrameDelay:J
ladd
lload 1
11: invokestatic java.lang.Math.max:(JJ)J
lstore 3
start local 3 12: aload 0
getfield android.view.Choreographer.mHandler:Landroid/view/Choreographer$FrameHandler;
iconst_0
invokevirtual android.view.Choreographer$FrameHandler.obtainMessage:(I)Landroid/os/Message;
astore 5
start local 5 13: aload 5
iconst_1
invokevirtual android.os.Message.setAsynchronous:(Z)V
14: aload 0
getfield android.view.Choreographer.mHandler:Landroid/view/Choreographer$FrameHandler;
aload 5
lload 3
invokevirtual android.view.Choreographer$FrameHandler.sendMessageAtTime:(Landroid/os/Message;J)Z
pop
end local 5 end local 3 15: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Landroid/view/Choreographer;
0 16 1 now J
7 9 3 msg Landroid/os/Message;
12 15 3 nextFrameTime J
13 15 5 msg Landroid/os/Message;
MethodParameters:
Name Flags
now
void setFPSDivisor(int);
descriptor: (I)V
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: iload 1
ifgt 1
iconst_1
istore 1
1: StackMap locals:
StackMap stack:
aload 0
iload 1
putfield android.view.Choreographer.mFPSDivisor:I
2: iload 1
invokestatic android.view.ThreadedRenderer.setFPSDivisor:(I)V
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Landroid/view/Choreographer;
0 4 1 divisor I
MethodParameters:
Name Flags
divisor
void doFrame(long, int);
descriptor: (JI)V
flags: (0x0000)
Code:
stack=6, locals=15, args_size=3
start local 0 start local 1 start local 3 0: aload 0
getfield android.view.Choreographer.mLock:Ljava/lang/Object;
dup
astore 6
monitorenter
1: aload 0
getfield android.view.Choreographer.mFrameScheduled:Z
ifne 4
2: aload 6
monitorexit
3: return
4: StackMap locals: android.view.Choreographer long int top top java.lang.Object
StackMap stack:
lload 1
lstore 7
start local 7 5: invokestatic java.lang.System.nanoTime:()J
lstore 4
start local 4 6: lload 4
lload 1
lsub
lstore 9
start local 9 7: lload 9
aload 0
getfield android.view.Choreographer.mFrameIntervalNanos:J
lcmp
iflt 15
8: lload 9
aload 0
getfield android.view.Choreographer.mFrameIntervalNanos:J
ldiv
lstore 11
start local 11 9: lload 11
getstatic android.view.Choreographer.SKIPPED_FRAME_WARNING_LIMIT:I
i2l
lcmp
iflt 13
10: ldc "Choreographer"
new java.lang.StringBuilder
dup
ldc "Skipped "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
lload 11
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc " frames! "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
11: ldc "The application may be doing too much work on its main thread."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
12: invokestatic android.util.Log.i:(Ljava/lang/String;Ljava/lang/String;)I
pop
13: StackMap locals: android.view.Choreographer long int long java.lang.Object long long long
StackMap stack:
lload 9
aload 0
getfield android.view.Choreographer.mFrameIntervalNanos:J
lrem
lstore 13
start local 13 14: lload 4
lload 13
lsub
lstore 1
end local 13 end local 11 15: StackMap locals:
StackMap stack:
lload 1
aload 0
getfield android.view.Choreographer.mLastFrameTimeNanos:J
lcmp
ifge 19
16: aload 0
invokevirtual android.view.Choreographer.scheduleVsyncLocked:()V
17: aload 6
monitorexit
18: return
19: StackMap locals:
StackMap stack:
aload 0
getfield android.view.Choreographer.mFPSDivisor:I
iconst_1
if_icmple 25
20: lload 1
aload 0
getfield android.view.Choreographer.mLastFrameTimeNanos:J
lsub
lstore 11
start local 11 21: lload 11
aload 0
getfield android.view.Choreographer.mFrameIntervalNanos:J
aload 0
getfield android.view.Choreographer.mFPSDivisor:I
i2l
lmul
lcmp
ifge 25
lload 11
lconst_0
lcmp
ifle 25
22: aload 0
invokevirtual android.view.Choreographer.scheduleVsyncLocked:()V
23: aload 6
monitorexit
24: return
end local 11 25: StackMap locals:
StackMap stack:
aload 0
getfield android.view.Choreographer.mFrameInfo:Landroid/view/FrameInfo;
lload 7
lload 1
invokevirtual android.view.FrameInfo.setVsync:(JJ)V
26: aload 0
iconst_0
putfield android.view.Choreographer.mFrameScheduled:Z
27: aload 0
lload 1
putfield android.view.Choreographer.mLastFrameTimeNanos:J
end local 9 end local 7 28: aload 6
monitorexit
29: goto 32
end local 4 StackMap locals: android.view.Choreographer long int top top java.lang.Object
StackMap stack: java.lang.Throwable
30: aload 6
monitorexit
31: athrow
start local 4 32: StackMap locals: android.view.Choreographer long int long
StackMap stack:
ldc 8
ldc "Choreographer#doFrame"
invokestatic android.os.Trace.traceBegin:(JLjava/lang/String;)V
33: lload 1
ldc 1000000
ldiv
invokestatic android.view.animation.AnimationUtils.lockAnimationClock:(J)V
34: aload 0
getfield android.view.Choreographer.mFrameInfo:Landroid/view/FrameInfo;
invokevirtual android.view.FrameInfo.markInputHandlingStart:()V
35: aload 0
iconst_0
lload 1
invokevirtual android.view.Choreographer.doCallbacks:(IJ)V
36: aload 0
getfield android.view.Choreographer.mFrameInfo:Landroid/view/FrameInfo;
invokevirtual android.view.FrameInfo.markAnimationsStart:()V
37: aload 0
iconst_1
lload 1
invokevirtual android.view.Choreographer.doCallbacks:(IJ)V
38: aload 0
getfield android.view.Choreographer.mFrameInfo:Landroid/view/FrameInfo;
invokevirtual android.view.FrameInfo.markPerformTraversalsStart:()V
39: aload 0
iconst_2
lload 1
invokevirtual android.view.Choreographer.doCallbacks:(IJ)V
40: aload 0
iconst_3
lload 1
invokevirtual android.view.Choreographer.doCallbacks:(IJ)V
41: goto 46
StackMap locals:
StackMap stack: java.lang.Throwable
42: astore 6
43: invokestatic android.view.animation.AnimationUtils.unlockAnimationClock:()V
44: ldc 8
invokestatic android.os.Trace.traceEnd:(J)V
45: aload 6
athrow
46: StackMap locals:
StackMap stack:
invokestatic android.view.animation.AnimationUtils.unlockAnimationClock:()V
47: ldc 8
invokestatic android.os.Trace.traceEnd:(J)V
48: return
end local 4 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 49 0 this Landroid/view/Choreographer;
0 49 1 frameTimeNanos J
0 49 3 frame I
6 30 4 startNanos J
32 49 4 startNanos J
5 28 7 intendedFrameTimeNanos J
7 28 9 jitterNanos J
9 15 11 skippedFrames J
14 15 13 lastFrameOffset J
21 25 11 timeSinceVsync J
Exception table:
from to target type
1 3 30 any
4 18 30 any
19 24 30 any
25 29 30 any
30 31 30 any
32 42 42 any
MethodParameters:
Name Flags
frameTimeNanos
frame
void doCallbacks(int, long);
descriptor: (IJ)V
flags: (0x0000)
Code:
stack=6, locals=12, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield android.view.Choreographer.mLock:Ljava/lang/Object;
dup
astore 5
monitorenter
1: invokestatic java.lang.System.nanoTime:()J
lstore 6
start local 6 2: aload 0
getfield android.view.Choreographer.mCallbackQueues:[Landroid/view/Choreographer$CallbackQueue;
iload 1
aaload
3: lload 6
ldc 1000000
ldiv
4: invokevirtual android.view.Choreographer$CallbackQueue.extractDueCallbacksLocked:(J)Landroid/view/Choreographer$CallbackRecord;
astore 4
start local 4 5: aload 4
ifnonnull 8
6: aload 5
monitorexit
7: return
8: StackMap locals: android.view.Choreographer$CallbackRecord java.lang.Object long
StackMap stack:
aload 0
iconst_1
putfield android.view.Choreographer.mCallbacksRunning:Z
9: iload 1
iconst_3
if_icmpne 18
10: lload 6
lload 2
lsub
lstore 8
start local 8 11: ldc 8
ldc "jitterNanos"
lload 8
l2i
invokestatic android.os.Trace.traceCounter:(JLjava/lang/String;I)V
12: lload 8
ldc 2
aload 0
getfield android.view.Choreographer.mFrameIntervalNanos:J
lmul
lcmp
iflt 18
13: lload 8
aload 0
getfield android.view.Choreographer.mFrameIntervalNanos:J
lrem
14: aload 0
getfield android.view.Choreographer.mFrameIntervalNanos:J
15: ladd
lstore 10
start local 10 16: lload 6
lload 10
lsub
lstore 2
17: aload 0
lload 2
putfield android.view.Choreographer.mLastFrameTimeNanos:J
end local 10 end local 8 end local 6 18: StackMap locals:
StackMap stack:
aload 5
monitorexit
19: goto 22
end local 4 StackMap locals: android.view.Choreographer int long top java.lang.Object
StackMap stack: java.lang.Throwable
20: aload 5
monitorexit
21: athrow
start local 4 22: StackMap locals: android.view.Choreographer int long android.view.Choreographer$CallbackRecord
StackMap stack:
ldc 8
getstatic android.view.Choreographer.CALLBACK_TRACE_TITLES:[Ljava/lang/String;
iload 1
aaload
invokestatic android.os.Trace.traceBegin:(JLjava/lang/String;)V
23: aload 4
astore 5
start local 5 24: goto 27
25: StackMap locals: android.view.Choreographer$CallbackRecord
StackMap stack:
aload 5
lload 2
invokevirtual android.view.Choreographer$CallbackRecord.run:(J)V
26: aload 5
getfield android.view.Choreographer$CallbackRecord.next:Landroid/view/Choreographer$CallbackRecord;
astore 5
StackMap locals:
StackMap stack:
27: aload 5
ifnonnull 25
end local 5 28: goto 42
StackMap locals: android.view.Choreographer int long android.view.Choreographer$CallbackRecord
StackMap stack: java.lang.Throwable
29: astore 6
30: aload 0
getfield android.view.Choreographer.mLock:Ljava/lang/Object;
dup
astore 7
monitorenter
31: aload 0
iconst_0
putfield android.view.Choreographer.mCallbacksRunning:Z
32: StackMap locals: android.view.Choreographer int long android.view.Choreographer$CallbackRecord top java.lang.Throwable java.lang.Object
StackMap stack:
aload 4
getfield android.view.Choreographer$CallbackRecord.next:Landroid/view/Choreographer$CallbackRecord;
astore 8
start local 8 33: aload 0
aload 4
invokevirtual android.view.Choreographer.recycleCallbackLocked:(Landroid/view/Choreographer$CallbackRecord;)V
34: aload 8
astore 4
end local 8 35: aload 4
ifnonnull 32
36: aload 7
monitorexit
37: goto 40
StackMap locals:
StackMap stack: java.lang.Throwable
38: aload 7
monitorexit
39: athrow
40: StackMap locals:
StackMap stack:
ldc 8
invokestatic android.os.Trace.traceEnd:(J)V
41: aload 6
athrow
42: StackMap locals: android.view.Choreographer int long android.view.Choreographer$CallbackRecord
StackMap stack:
aload 0
getfield android.view.Choreographer.mLock:Ljava/lang/Object;
dup
astore 7
monitorenter
43: aload 0
iconst_0
putfield android.view.Choreographer.mCallbacksRunning:Z
44: StackMap locals: android.view.Choreographer int long android.view.Choreographer$CallbackRecord top top java.lang.Object
StackMap stack:
aload 4
getfield android.view.Choreographer$CallbackRecord.next:Landroid/view/Choreographer$CallbackRecord;
astore 8
start local 8 45: aload 0
aload 4
invokevirtual android.view.Choreographer.recycleCallbackLocked:(Landroid/view/Choreographer$CallbackRecord;)V
46: aload 8
astore 4
end local 8 47: aload 4
ifnonnull 44
48: aload 7
monitorexit
49: goto 52
StackMap locals:
StackMap stack: java.lang.Throwable
50: aload 7
monitorexit
51: athrow
52: StackMap locals: android.view.Choreographer int long android.view.Choreographer$CallbackRecord
StackMap stack:
ldc 8
invokestatic android.os.Trace.traceEnd:(J)V
53: return
end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 54 0 this Landroid/view/Choreographer;
0 54 1 callbackType I
0 54 2 frameTimeNanos J
5 20 4 callbacks Landroid/view/Choreographer$CallbackRecord;
22 54 4 callbacks Landroid/view/Choreographer$CallbackRecord;
2 18 6 now J
11 18 8 jitterNanos J
16 18 10 lastFrameOffset J
24 28 5 c Landroid/view/Choreographer$CallbackRecord;
33 35 8 next Landroid/view/Choreographer$CallbackRecord;
45 47 8 next Landroid/view/Choreographer$CallbackRecord;
Exception table:
from to target type
1 7 20 any
8 19 20 any
20 21 20 any
22 29 29 any
31 37 38 any
38 39 38 any
43 49 50 any
50 51 50 any
MethodParameters:
Name Flags
callbackType
frameTimeNanos
void doScheduleVsync();
descriptor: ()V
flags: (0x0000)
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield android.view.Choreographer.mLock:Ljava/lang/Object;
dup
astore 1
monitorenter
1: aload 0
getfield android.view.Choreographer.mFrameScheduled:Z
ifeq 3
2: aload 0
invokevirtual android.view.Choreographer.scheduleVsyncLocked:()V
3: StackMap locals: java.lang.Object
StackMap stack:
aload 1
monitorexit
4: goto 7
StackMap locals:
StackMap stack: java.lang.Throwable
5: aload 1
monitorexit
6: athrow
7: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Landroid/view/Choreographer;
Exception table:
from to target type
1 4 5 any
5 6 5 any
void doScheduleCallback(int);
descriptor: (I)V
flags: (0x0000)
Code:
stack=3, locals=5, args_size=2
start local 0 start local 1 0: aload 0
getfield android.view.Choreographer.mLock:Ljava/lang/Object;
dup
astore 2
monitorenter
1: aload 0
getfield android.view.Choreographer.mFrameScheduled:Z
ifne 5
2: invokestatic android.os.SystemClock.uptimeMillis:()J
lstore 3
start local 3 3: aload 0
getfield android.view.Choreographer.mCallbackQueues:[Landroid/view/Choreographer$CallbackQueue;
iload 1
aaload
lload 3
invokevirtual android.view.Choreographer$CallbackQueue.hasDueCallbacksLocked:(J)Z
ifeq 5
4: aload 0
lload 3
invokevirtual android.view.Choreographer.scheduleFrameLocked:(J)V
end local 3 5: StackMap locals: java.lang.Object
StackMap stack:
aload 2
monitorexit
6: goto 9
StackMap locals:
StackMap stack: java.lang.Throwable
7: aload 2
monitorexit
8: athrow
9: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Landroid/view/Choreographer;
0 10 1 callbackType I
3 5 3 now J
Exception table:
from to target type
1 6 7 any
7 8 7 any
MethodParameters:
Name Flags
callbackType
private void scheduleVsyncLocked();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield android.view.Choreographer.mDisplayEventReceiver:Landroid/view/Choreographer$FrameDisplayEventReceiver;
invokevirtual android.view.Choreographer$FrameDisplayEventReceiver.scheduleVsync:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Landroid/view/Choreographer;
private boolean isRunningOnLooperThreadLocked();
descriptor: ()Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: invokestatic android.os.Looper.myLooper:()Landroid/os/Looper;
aload 0
getfield android.view.Choreographer.mLooper:Landroid/os/Looper;
if_acmpne 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Landroid/view/Choreographer;
private android.view.Choreographer$CallbackRecord obtainCallbackLocked(long, java.lang.Object, java.lang.Object);
descriptor: (JLjava/lang/Object;Ljava/lang/Object;)Landroid/view/Choreographer$CallbackRecord;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=6, args_size=4
start local 0 start local 1 start local 3 start local 4 0: aload 0
getfield android.view.Choreographer.mCallbackPool:Landroid/view/Choreographer$CallbackRecord;
astore 5
start local 5 1: aload 5
ifnonnull 4
2: new android.view.Choreographer$CallbackRecord
dup
invokespecial android.view.Choreographer$CallbackRecord.<init>:()V
astore 5
3: goto 6
4: StackMap locals: android.view.Choreographer$CallbackRecord
StackMap stack:
aload 0
aload 5
getfield android.view.Choreographer$CallbackRecord.next:Landroid/view/Choreographer$CallbackRecord;
putfield android.view.Choreographer.mCallbackPool:Landroid/view/Choreographer$CallbackRecord;
5: aload 5
aconst_null
putfield android.view.Choreographer$CallbackRecord.next:Landroid/view/Choreographer$CallbackRecord;
6: StackMap locals:
StackMap stack:
aload 5
lload 1
putfield android.view.Choreographer$CallbackRecord.dueTime:J
7: aload 5
aload 3
putfield android.view.Choreographer$CallbackRecord.action:Ljava/lang/Object;
8: aload 5
aload 4
putfield android.view.Choreographer$CallbackRecord.token:Ljava/lang/Object;
9: aload 5
areturn
end local 5 end local 4 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Landroid/view/Choreographer;
0 10 1 dueTime J
0 10 3 action Ljava/lang/Object;
0 10 4 token Ljava/lang/Object;
1 10 5 callback Landroid/view/Choreographer$CallbackRecord;
MethodParameters:
Name Flags
dueTime
action
token
private void recycleCallbackLocked(android.view.Choreographer$CallbackRecord);
descriptor: (Landroid/view/Choreographer$CallbackRecord;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 1
aconst_null
putfield android.view.Choreographer$CallbackRecord.action:Ljava/lang/Object;
1: aload 1
aconst_null
putfield android.view.Choreographer$CallbackRecord.token:Ljava/lang/Object;
2: aload 1
aload 0
getfield android.view.Choreographer.mCallbackPool:Landroid/view/Choreographer$CallbackRecord;
putfield android.view.Choreographer$CallbackRecord.next:Landroid/view/Choreographer$CallbackRecord;
3: aload 0
aload 1
putfield android.view.Choreographer.mCallbackPool:Landroid/view/Choreographer$CallbackRecord;
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Landroid/view/Choreographer;
0 5 1 callback Landroid/view/Choreographer$CallbackRecord;
MethodParameters:
Name Flags
callback
}
SourceFile: "Choreographer.java"
NestMembers:
android.view.Choreographer$1 android.view.Choreographer$2 android.view.Choreographer$3 android.view.Choreographer$CallbackQueue android.view.Choreographer$CallbackRecord android.view.Choreographer$FrameCallback android.view.Choreographer$FrameDisplayEventReceiver android.view.Choreographer$FrameHandler
InnerClasses:
android.view.Choreographer$1
android.view.Choreographer$2
android.view.Choreographer$3
private final CallbackQueue = android.view.Choreographer$CallbackQueue of android.view.Choreographer
private final CallbackRecord = android.view.Choreographer$CallbackRecord of android.view.Choreographer
public abstract FrameCallback = android.view.Choreographer$FrameCallback of android.view.Choreographer
private final FrameDisplayEventReceiver = android.view.Choreographer$FrameDisplayEventReceiver of android.view.Choreographer
private final FrameHandler = android.view.Choreographer$FrameHandler of android.view.Choreographer
public final Mode = android.view.Display$Mode of android.view.Display