Trace.smali
.class public final Landroidx/tracing/Trace;
.super Ljava/lang/Object;
.source "Trace.java"
# static fields
.field static final TAG:Ljava/lang/String; = "Trace"
.field private static sAsyncTraceBeginMethod:Ljava/lang/reflect/Method;
.field private static sAsyncTraceEndMethod:Ljava/lang/reflect/Method;
.field private static sIsTagEnabledMethod:Ljava/lang/reflect/Method;
.field private static sTraceCounterMethod:Ljava/lang/reflect/Method;
.field private static sTraceTagApp:J
# direct methods
.method private constructor <init>()V
.registers 1
.line 240
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static beginAsyncSection(Ljava/lang/String;I)V
.registers 3
.line 111
:try_start_0
sget-object v0, Landroidx/tracing/Trace;->sAsyncTraceBeginMethod:Ljava/lang/reflect/Method;
if-nez v0, :cond_8
.line 112
invoke-static {p0, p1}, Landroidx/tracing/TraceApi29Impl;->beginAsyncSection(Ljava/lang/String;I)V
:try_end_7
.catch Ljava/lang/NoSuchMethodError; {:try_start_0 .. :try_end_7} :catch_8
.catch Ljava/lang/NoClassDefFoundError; {:try_start_0 .. :try_end_7} :catch_8
return-void
.line 117
:catch_8
:cond_8
invoke-static {p0, p1}, Landroidx/tracing/Trace;->beginAsyncSectionFallback(Ljava/lang/String;I)V
return-void
.end method
.method private static beginAsyncSectionFallback(Ljava/lang/String;I)V
.registers 11
const-string v0, "asyncTraceBegin"
.line 177
sget v1, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 v2, 0x12
if-lt v1, v2, :cond_43
.line 179
:try_start_8
sget-object v1, Landroidx/tracing/Trace;->sAsyncTraceBeginMethod:Ljava/lang/reflect/Method;
const/4 v2, 0x2
const/4 v3, 0x1
const/4 v4, 0x0
const/4 v5, 0x3
if-nez v1, :cond_26
.line 180
const-class v1, Landroid/os/Trace;
new-array v6, v5, [Ljava/lang/Class;
sget-object v7, Ljava/lang/Long;->TYPE:Ljava/lang/Class;
aput-object v7, v6, v4
const-class v7, Ljava/lang/String;
aput-object v7, v6, v3
sget-object v7, Ljava/lang/Integer;->TYPE:Ljava/lang/Class;
aput-object v7, v6, v2
invoke-virtual {v1, v0, v6}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
move-result-object v1
sput-object v1, Landroidx/tracing/Trace;->sAsyncTraceBeginMethod:Ljava/lang/reflect/Method;
.line 186
:cond_26
sget-object v1, Landroidx/tracing/Trace;->sAsyncTraceBeginMethod:Ljava/lang/reflect/Method;
const/4 v6, 0x0
new-array v5, v5, [Ljava/lang/Object;
sget-wide v7, Landroidx/tracing/Trace;->sTraceTagApp:J
invoke-static {v7, v8}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object v7
aput-object v7, v5, v4
aput-object p0, v5, v3
invoke-static {p1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object p0
aput-object p0, v5, v2
invoke-virtual {v1, v6, v5}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
:try_end_3e
.catch Ljava/lang/Exception; {:try_start_8 .. :try_end_3e} :catch_3f
goto :goto_43
:catch_3f
move-exception p0
.line 188
invoke-static {v0, p0}, Landroidx/tracing/Trace;->handleException(Ljava/lang/String;Ljava/lang/Exception;)V
:cond_43
:goto_43
return-void
.end method
.method public static beginSection(Ljava/lang/String;)V
.registers 3
.line 80
sget v0, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 v1, 0x12
if-lt v0, v1, :cond_9
.line 81
invoke-static {p0}, Landroidx/tracing/TraceApi18Impl;->beginSection(Ljava/lang/String;)V
:cond_9
return-void
.end method
.method public static endAsyncSection(Ljava/lang/String;I)V
.registers 3
.line 131
:try_start_0
sget-object v0, Landroidx/tracing/Trace;->sAsyncTraceEndMethod:Ljava/lang/reflect/Method;
if-nez v0, :cond_8
.line 132
invoke-static {p0, p1}, Landroidx/tracing/TraceApi29Impl;->endAsyncSection(Ljava/lang/String;I)V
:try_end_7
.catch Ljava/lang/NoSuchMethodError; {:try_start_0 .. :try_end_7} :catch_8
.catch Ljava/lang/NoClassDefFoundError; {:try_start_0 .. :try_end_7} :catch_8
return-void
.line 137
:catch_8
:cond_8
invoke-static {p0, p1}, Landroidx/tracing/Trace;->endAsyncSectionFallback(Ljava/lang/String;I)V
return-void
.end method
.method private static endAsyncSectionFallback(Ljava/lang/String;I)V
.registers 11
const-string v0, "asyncTraceEnd"
.line 194
sget v1, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 v2, 0x12
if-lt v1, v2, :cond_43
.line 196
:try_start_8
sget-object v1, Landroidx/tracing/Trace;->sAsyncTraceEndMethod:Ljava/lang/reflect/Method;
const/4 v2, 0x2
const/4 v3, 0x1
const/4 v4, 0x0
const/4 v5, 0x3
if-nez v1, :cond_26
.line 197
const-class v1, Landroid/os/Trace;
new-array v6, v5, [Ljava/lang/Class;
sget-object v7, Ljava/lang/Long;->TYPE:Ljava/lang/Class;
aput-object v7, v6, v4
const-class v7, Ljava/lang/String;
aput-object v7, v6, v3
sget-object v7, Ljava/lang/Integer;->TYPE:Ljava/lang/Class;
aput-object v7, v6, v2
invoke-virtual {v1, v0, v6}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
move-result-object v1
sput-object v1, Landroidx/tracing/Trace;->sAsyncTraceEndMethod:Ljava/lang/reflect/Method;
.line 203
:cond_26
sget-object v1, Landroidx/tracing/Trace;->sAsyncTraceEndMethod:Ljava/lang/reflect/Method;
const/4 v6, 0x0
new-array v5, v5, [Ljava/lang/Object;
sget-wide v7, Landroidx/tracing/Trace;->sTraceTagApp:J
invoke-static {v7, v8}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object v7
aput-object v7, v5, v4
aput-object p0, v5, v3
invoke-static {p1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object p0
aput-object p0, v5, v2
invoke-virtual {v1, v6, v5}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
:try_end_3e
.catch Ljava/lang/Exception; {:try_start_8 .. :try_end_3e} :catch_3f
goto :goto_43
:catch_3f
move-exception p0
.line 205
invoke-static {v0, p0}, Landroidx/tracing/Trace;->handleException(Ljava/lang/String;Ljava/lang/Exception;)V
:cond_43
:goto_43
return-void
.end method
.method public static endSection()V
.registers 2
.line 93
sget v0, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 v1, 0x12
if-lt v0, v1, :cond_9
.line 94
invoke-static {}, Landroidx/tracing/TraceApi18Impl;->endSection()V
:cond_9
return-void
.end method
.method private static handleException(Ljava/lang/String;Ljava/lang/Exception;)V
.registers 4
.line 229
instance-of v0, p1, Ljava/lang/reflect/InvocationTargetException;
if-eqz v0, :cond_15
.line 230
invoke-virtual {p1}, Ljava/lang/Exception;->getCause()Ljava/lang/Throwable;
move-result-object p0
.line 231
instance-of p1, p0, Ljava/lang/RuntimeException;
if-eqz p1, :cond_f
.line 232
check-cast p0, Ljava/lang/RuntimeException;
throw p0
.line 234
:cond_f
new-instance p1, Ljava/lang/RuntimeException;
invoke-direct {p1, p0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V
throw p1
.line 237
:cond_15
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "Unable to call "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p0
const-string v0, " via reflection"
invoke-virtual {p0, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p0
invoke-virtual {p0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p0
const-string v0, "Trace"
invoke-static {v0, p0, p1}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
return-void
.end method
.method public static isEnabled()Z
.registers 1
.line 61
:try_start_0
sget-object v0, Landroidx/tracing/Trace;->sIsTagEnabledMethod:Ljava/lang/reflect/Method;
if-nez v0, :cond_9
.line 62
invoke-static {}, Landroid/os/Trace;->isEnabled()Z
move-result v0
:try_end_8
.catch Ljava/lang/NoSuchMethodError; {:try_start_0 .. :try_end_8} :catch_9
.catch Ljava/lang/NoClassDefFoundError; {:try_start_0 .. :try_end_8} :catch_9
return v0
.line 66
:catch_9
:cond_9
invoke-static {}, Landroidx/tracing/Trace;->isEnabledFallback()Z
move-result v0
return v0
.end method
.method private static isEnabledFallback()Z
.registers 7
const-string v0, "isTagEnabled"
.line 159
sget v1, Landroid/os/Build$VERSION;->SDK_INT:I
const/4 v2, 0x0
const/16 v3, 0x12
if-lt v1, v3, :cond_46
.line 161
:try_start_9
sget-object v1, Landroidx/tracing/Trace;->sIsTagEnabledMethod:Ljava/lang/reflect/Method;
const/4 v3, 0x1
const/4 v4, 0x0
if-nez v1, :cond_2b
.line 162
const-class v1, Landroid/os/Trace;
const-string v5, "TRACE_TAG_APP"
invoke-virtual {v1, v5}, Ljava/lang/Class;->getField(Ljava/lang/String;)Ljava/lang/reflect/Field;
move-result-object v1
.line 163
invoke-virtual {v1, v4}, Ljava/lang/reflect/Field;->getLong(Ljava/lang/Object;)J
move-result-wide v5
sput-wide v5, Landroidx/tracing/Trace;->sTraceTagApp:J
.line 164
const-class v1, Landroid/os/Trace;
new-array v5, v3, [Ljava/lang/Class;
sget-object v6, Ljava/lang/Long;->TYPE:Ljava/lang/Class;
aput-object v6, v5, v2
.line 165
invoke-virtual {v1, v0, v5}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
move-result-object v1
sput-object v1, Landroidx/tracing/Trace;->sIsTagEnabledMethod:Ljava/lang/reflect/Method;
.line 167
:cond_2b
sget-object v1, Landroidx/tracing/Trace;->sIsTagEnabledMethod:Ljava/lang/reflect/Method;
new-array v3, v3, [Ljava/lang/Object;
sget-wide v5, Landroidx/tracing/Trace;->sTraceTagApp:J
invoke-static {v5, v6}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object v5
aput-object v5, v3, v2
invoke-virtual {v1, v4, v3}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/lang/Boolean;
invoke-virtual {v1}, Ljava/lang/Boolean;->booleanValue()Z
move-result v0
:try_end_41
.catch Ljava/lang/Exception; {:try_start_9 .. :try_end_41} :catch_42
return v0
:catch_42
move-exception v1
.line 169
invoke-static {v0, v1}, Landroidx/tracing/Trace;->handleException(Ljava/lang/String;Ljava/lang/Exception;)V
:cond_46
return v2
.end method
.method public static setCounter(Ljava/lang/String;I)V
.registers 3
.line 149
:try_start_0
sget-object v0, Landroidx/tracing/Trace;->sTraceCounterMethod:Ljava/lang/reflect/Method;
if-nez v0, :cond_8
.line 150
invoke-static {p0, p1}, Landroidx/tracing/TraceApi29Impl;->setCounter(Ljava/lang/String;I)V
:try_end_7
.catch Ljava/lang/NoSuchMethodError; {:try_start_0 .. :try_end_7} :catch_8
.catch Ljava/lang/NoClassDefFoundError; {:try_start_0 .. :try_end_7} :catch_8
return-void
.line 155
:catch_8
:cond_8
invoke-static {p0, p1}, Landroidx/tracing/Trace;->setCounterFallback(Ljava/lang/String;I)V
return-void
.end method
.method private static setCounterFallback(Ljava/lang/String;I)V
.registers 11
const-string v0, "traceCounter"
.line 211
sget v1, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 v2, 0x12
if-lt v1, v2, :cond_43
.line 213
:try_start_8
sget-object v1, Landroidx/tracing/Trace;->sTraceCounterMethod:Ljava/lang/reflect/Method;
const/4 v2, 0x2
const/4 v3, 0x1
const/4 v4, 0x0
const/4 v5, 0x3
if-nez v1, :cond_26
.line 214
const-class v1, Landroid/os/Trace;
new-array v6, v5, [Ljava/lang/Class;
sget-object v7, Ljava/lang/Long;->TYPE:Ljava/lang/Class;
aput-object v7, v6, v4
const-class v7, Ljava/lang/String;
aput-object v7, v6, v3
sget-object v7, Ljava/lang/Integer;->TYPE:Ljava/lang/Class;
aput-object v7, v6, v2
invoke-virtual {v1, v0, v6}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
move-result-object v1
sput-object v1, Landroidx/tracing/Trace;->sTraceCounterMethod:Ljava/lang/reflect/Method;
.line 221
:cond_26
sget-object v1, Landroidx/tracing/Trace;->sTraceCounterMethod:Ljava/lang/reflect/Method;
const/4 v6, 0x0
new-array v5, v5, [Ljava/lang/Object;
sget-wide v7, Landroidx/tracing/Trace;->sTraceTagApp:J
invoke-static {v7, v8}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object v7
aput-object v7, v5, v4
aput-object p0, v5, v3
invoke-static {p1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object p0
aput-object p0, v5, v2
invoke-virtual {v1, v6, v5}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
:try_end_3e
.catch Ljava/lang/Exception; {:try_start_8 .. :try_end_3e} :catch_3f
goto :goto_43
:catch_3f
move-exception p0
.line 223
invoke-static {v0, p0}, Landroidx/tracing/Trace;->handleException(Ljava/lang/String;Ljava/lang/Exception;)V
:cond_43
:goto_43
return-void
.end method