InvokeInfoUtil.smali
.class public Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil;
.super Ljava/lang/Object;
.source "InvokeInfoUtil.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil$a;
}
.end annotation
# static fields
.field private static final START:Ljava/lang/String; = "&____invoke_start"
.field private static final TAG:Ljava/lang/String; = "InvokeInfoUtil"
# instance fields
.field private mInvokeMap:Ljava/util/HashMap;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/HashMap",
"<",
"Ljava/lang/String;",
"Ljava/lang/Long;",
">;"
}
.end annotation
.end field
.field private mLock:Ljava/util/concurrent/locks/ReentrantLock;
.field private mProcedureMap:Ljava/util/HashMap;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/HashMap",
"<",
"Ljava/lang/String;",
"Ljava/lang/Long;",
">;"
}
.end annotation
.end field
# direct methods
.method public constructor <init>()V
.registers 2
.prologue
.line 21
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 33
new-instance v0, Ljava/util/HashMap;
invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
iput-object v0, p0, Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil;->mInvokeMap:Ljava/util/HashMap;
.line 34
new-instance v0, Ljava/util/HashMap;
invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
iput-object v0, p0, Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil;->mProcedureMap:Ljava/util/HashMap;
.line 35
new-instance v0, Ljava/util/concurrent/locks/ReentrantLock;
invoke-direct {v0}, Ljava/util/concurrent/locks/ReentrantLock;-><init>()V
iput-object v0, p0, Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil;->mLock:Ljava/util/concurrent/locks/ReentrantLock;
return-void
.end method
.method private begin(Ljava/lang/String;Ljava/util/HashMap;)V
.registers 7
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/String;",
"Ljava/util/HashMap",
"<",
"Ljava/lang/String;",
"Ljava/lang/Long;",
">;)V"
}
.end annotation
.prologue
.line 88
iget-object v0, p0, Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil;->mLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 90
:try_start_5
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, "&____invoke_start"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
.line 91
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v2
invoke-static {v2, v3}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object v1
invoke-virtual {p2, v0, v1}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
:try_end_23
.catchall {:try_start_5 .. :try_end_23} :catchall_29
.line 93
iget-object v0, p0, Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil;->mLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 95
return-void
.line 93
:catchall_29
move-exception v0
iget-object v1, p0, Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil;->mLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method private end(Ljava/lang/String;Ljava/util/HashMap;)V
.registers 9
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/String;",
"Ljava/util/HashMap",
"<",
"Ljava/lang/String;",
"Ljava/lang/Long;",
">;)V"
}
.end annotation
.prologue
.line 98
iget-object v0, p0, Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil;->mLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 100
:try_start_5
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, "&____invoke_start"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
.line 101
invoke-virtual {p2, v1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/Long;
.line 102
if-eqz v0, :cond_2a
const-wide/16 v2, 0x0
invoke-virtual {v0}, Ljava/lang/Long;->longValue()J
:try_end_25
.catchall {:try_start_5 .. :try_end_25} :catchall_4a
move-result-wide v4
cmp-long v2, v2, v4
if-nez v2, :cond_30
.line 110
:cond_2a
iget-object v0, p0, Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil;->mLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 112
:goto_2f
return-void
.line 105
:cond_30
:try_start_30
invoke-virtual {p2, v1}, Ljava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
.line 107
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v2
invoke-virtual {v0}, Ljava/lang/Long;->longValue()J
move-result-wide v0
sub-long v0, v2, v0
invoke-static {v0, v1}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object v0
.line 108
invoke-virtual {p2, p1, v0}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
:try_end_44
.catchall {:try_start_30 .. :try_end_44} :catchall_4a
.line 110
iget-object v0, p0, Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil;->mLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
goto :goto_2f
:catchall_4a
move-exception v0
iget-object v1, p0, Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil;->mLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public static getInstance()Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil;
.registers 1
.prologue
.line 26
invoke-static {}, Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil$a;->a()Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil;
move-result-object v0
return-object v0
.end method
.method private getInvokeDetail(Ljava/util/List;)Ljava/lang/StringBuffer;
.registers 8
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List",
"<",
"Ljava/util/Map$Entry",
"<",
"Ljava/lang/String;",
"Ljava/lang/Long;",
">;>;)",
"Ljava/lang/StringBuffer;"
}
.end annotation
.prologue
.line 115
new-instance v2, Ljava/lang/StringBuffer;
invoke-direct {v2}, Ljava/lang/StringBuffer;-><init>()V
.line 116
invoke-interface {p1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v3
:cond_9
:goto_9
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_55
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/util/Map$Entry;
.line 117
invoke-interface {v0}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/lang/String;
const-string v4, "&____invoke_start"
invoke-virtual {v1, v4}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
move-result v1
if-nez v1, :cond_9
.line 120
new-instance v4, Ljava/lang/StringBuilder;
invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
.line 121
invoke-interface {v0}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/lang/String;
invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
const-string v5, ":"
.line 122
invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
const-string v5, "<font color=#ff0000>"
invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-interface {v0}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;
move-result-object v0
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, "</font>"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, "<p/>"
.line 123
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 124
invoke-virtual {v2, v4}, Ljava/lang/StringBuffer;->append(Ljava/lang/CharSequence;)Ljava/lang/StringBuffer;
goto :goto_9
.line 126
:cond_55
return-object v2
.end method
.method private getTraceListDescBySpentTime(Ljava/util/HashMap;)Ljava/util/List;
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/HashMap",
"<",
"Ljava/lang/String;",
"Ljava/lang/Long;",
">;)",
"Ljava/util/List",
"<",
"Ljava/util/Map$Entry",
"<",
"Ljava/lang/String;",
"Ljava/lang/Long;",
">;>;"
}
.end annotation
.prologue
.line 72
iget-object v0, p0, Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil;->mLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 74
:try_start_5
new-instance v0, Ljava/util/ArrayList;
invoke-virtual {p1}, Ljava/util/HashMap;->entrySet()Ljava/util/Set;
move-result-object v1
invoke-direct {v0, v1}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
.line 75
new-instance v1, Lcom/cleanmaster/performance/appboot/utils/a;
invoke-direct {v1, p0}, Lcom/cleanmaster/performance/appboot/utils/a;-><init>(Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil;)V
invoke-static {v0, v1}, Ljava/util/Collections;->sort(Ljava/util/List;Ljava/util/Comparator;)V
:try_end_16
.catchall {:try_start_5 .. :try_end_16} :catchall_1c
.line 83
iget-object v1, p0, Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil;->mLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 81
return-object v0
.line 83
:catchall_1c
move-exception v0
iget-object v1, p0, Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil;->mLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
# virtual methods
.method public beginTraceInvoke(Ljava/lang/String;Ljava/lang/String;)V
.registers 5
.prologue
.line 41
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, "."
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
.line 42
iget-object v1, p0, Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil;->mInvokeMap:Ljava/util/HashMap;
invoke-direct {p0, v0, v1}, Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil;->begin(Ljava/lang/String;Ljava/util/HashMap;)V
.line 43
return-void
.end method
.method public beginTraceProcedure(Ljava/lang/String;)V
.registers 3
.prologue
.line 54
iget-object v0, p0, Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil;->mProcedureMap:Ljava/util/HashMap;
invoke-direct {p0, p1, v0}, Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil;->begin(Ljava/lang/String;Ljava/util/HashMap;)V
.line 55
return-void
.end method
.method public endTraceInvoke(Ljava/lang/String;Ljava/lang/String;)V
.registers 5
.prologue
.line 49
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, "."
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
.line 50
iget-object v1, p0, Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil;->mInvokeMap:Ljava/util/HashMap;
invoke-direct {p0, v0, v1}, Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil;->end(Ljava/lang/String;Ljava/util/HashMap;)V
.line 51
return-void
.end method
.method public endTraceProcedure(Ljava/lang/String;)V
.registers 3
.prologue
.line 58
iget-object v0, p0, Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil;->mProcedureMap:Ljava/util/HashMap;
invoke-direct {p0, p1, v0}, Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil;->end(Ljava/lang/String;Ljava/util/HashMap;)V
.line 59
return-void
.end method
.method public getAllInvokeDetail()Ljava/lang/StringBuffer;
.registers 2
.prologue
.line 62
iget-object v0, p0, Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil;->mInvokeMap:Ljava/util/HashMap;
invoke-direct {p0, v0}, Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil;->getTraceListDescBySpentTime(Ljava/util/HashMap;)Ljava/util/List;
move-result-object v0
.line 63
invoke-direct {p0, v0}, Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil;->getInvokeDetail(Ljava/util/List;)Ljava/lang/StringBuffer;
move-result-object v0
return-object v0
.end method
.method public getAllProcedureDetail()Ljava/lang/StringBuffer;
.registers 2
.prologue
.line 67
iget-object v0, p0, Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil;->mProcedureMap:Ljava/util/HashMap;
invoke-direct {p0, v0}, Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil;->getTraceListDescBySpentTime(Ljava/util/HashMap;)Ljava/util/List;
move-result-object v0
.line 68
invoke-direct {p0, v0}, Lcom/cleanmaster/performance/appboot/utils/InvokeInfoUtil;->getInvokeDetail(Ljava/util/List;)Ljava/lang/StringBuffer;
move-result-object v0
return-object v0
.end method