OptDexProcess.smali
.class Lorg/acdd/android/initializer/OptDexProcess;
.super Ljava/lang/Object;
.source "OptDexProcess.java"
# instance fields
.field private isInitialized:Z
.field private log:Lorg/acdd/log/Logger;
.field private notifyInstalled:Z
# direct methods
.method constructor <init>()V
.registers 2
.prologue
.line 48
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 42
invoke-static {}, Lorg/acdd/log/LoggerFactory;->getInstance()Lorg/acdd/log/Logger;
move-result-object v0
iput-object v0, p0, Lorg/acdd/android/initializer/OptDexProcess;->log:Lorg/acdd/log/Logger;
.line 49
return-void
.end method
.method private contains([Ljava/lang/String;Ljava/lang/String;)Z
.registers 7
.prologue
const/4 v0, 0x0
.line 148
if-eqz p1, :cond_5
if-nez p2, :cond_6
.line 156
:cond_5
:goto_5
return v0
.line 151
:cond_6
array-length v2, p1
move v1, v0
:goto_8
if-ge v1, v2, :cond_5
aget-object v3, p1, v1
.line 152
if-eqz v3, :cond_16
invoke-virtual {v3, p2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_16
.line 153
const/4 v0, 0x1
goto :goto_5
.line 151
:cond_16
add-int/lit8 v1, v1, 0x1
goto :goto_8
.end method
.method private runOptDexAuto()V
.registers 7
.prologue
.line 132
sget-object v2, Lorg/acdd/framework/ACDDConfig;->AUTO:[Ljava/lang/String;
array-length v3, v2
const/4 v0, 0x0
move v1, v0
:goto_5
if-ge v1, v3, :cond_2c
aget-object v0, v2, v1
.line 133
invoke-static {}, Lorg/acdd/framework/ACDD;->getInstance()Lorg/acdd/framework/ACDD;
move-result-object v4
invoke-virtual {v4, v0}, Lorg/acdd/framework/ACDD;->getBundle(Ljava/lang/String;)Lorg/osgi/framework/Bundle;
move-result-object v0
.line 134
if-eqz v0, :cond_18
.line 136
:try_start_13
check-cast v0, Lorg/acdd/framework/BundleImpl;
invoke-virtual {v0}, Lorg/acdd/framework/BundleImpl;->optDexFile()V
:try_end_18
.catch Ljava/lang/Throwable; {:try_start_13 .. :try_end_18} :catch_1c
.line 132
:cond_18
:goto_18
add-int/lit8 v0, v1, 0x1
move v1, v0
goto :goto_5
.line 137
:catch_1c
move-exception v0
.line 138
instance-of v4, v0, Lorg/acdd/framework/bundlestorage/BundleArchiveRevision$DexLoadException;
if-eqz v4, :cond_24
.line 139
check-cast v0, Ljava/lang/RuntimeException;
throw v0
.line 141
:cond_24
const-string v4, "CMPlugin"
const-string v5, "Error while dexopt >>>"
invoke-static {v4, v5, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
goto :goto_18
.line 145
:cond_2c
return-void
.end method
.method private runOptDexDelay()V
.registers 7
.prologue
.line 116
sget-object v2, Lorg/acdd/framework/ACDDConfig;->STORE:[Ljava/lang/String;
array-length v3, v2
const/4 v0, 0x0
move v1, v0
:goto_5
if-ge v1, v3, :cond_2c
aget-object v0, v2, v1
.line 117
invoke-static {}, Lorg/acdd/framework/ACDD;->getInstance()Lorg/acdd/framework/ACDD;
move-result-object v4
invoke-virtual {v4, v0}, Lorg/acdd/framework/ACDD;->getBundle(Ljava/lang/String;)Lorg/osgi/framework/Bundle;
move-result-object v0
.line 118
if-eqz v0, :cond_18
.line 120
:try_start_13
check-cast v0, Lorg/acdd/framework/BundleImpl;
invoke-virtual {v0}, Lorg/acdd/framework/BundleImpl;->optDexFile()V
:try_end_18
.catch Ljava/lang/Throwable; {:try_start_13 .. :try_end_18} :catch_1c
.line 116
:cond_18
:goto_18
add-int/lit8 v0, v1, 0x1
move v1, v0
goto :goto_5
.line 121
:catch_1c
move-exception v0
.line 122
instance-of v4, v0, Lorg/acdd/framework/bundlestorage/BundleArchiveRevision$DexLoadException;
if-eqz v4, :cond_24
.line 123
check-cast v0, Ljava/lang/RuntimeException;
throw v0
.line 125
:cond_24
const-string v4, "CMPlugin"
const-string v5, "Error while dexopt >>>"
invoke-static {v4, v5, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
goto :goto_18
.line 129
:cond_2c
return-void
.end method
.method private runOptDexNonDelay()V
.registers 5
.prologue
.line 101
invoke-static {}, Lorg/acdd/framework/ACDD;->getInstance()Lorg/acdd/framework/ACDD;
move-result-object v0
invoke-virtual {v0}, Lorg/acdd/framework/ACDD;->getBundles()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_c
:goto_c
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_3c
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/osgi/framework/Bundle;
.line 102
if-eqz v0, :cond_c
sget-object v2, Lorg/acdd/framework/ACDDConfig;->STORE:[Ljava/lang/String;
invoke-interface {v0}, Lorg/osgi/framework/Bundle;->getLocation()Ljava/lang/String;
move-result-object v3
invoke-direct {p0, v2, v3}, Lorg/acdd/android/initializer/OptDexProcess;->contains([Ljava/lang/String;Ljava/lang/String;)Z
move-result v2
if-nez v2, :cond_c
.line 104
:try_start_26
check-cast v0, Lorg/acdd/framework/BundleImpl;
invoke-virtual {v0}, Lorg/acdd/framework/BundleImpl;->optDexFile()V
:try_end_2b
.catch Ljava/lang/Throwable; {:try_start_26 .. :try_end_2b} :catch_2c
goto :goto_c
.line 105
:catch_2c
move-exception v0
.line 106
instance-of v2, v0, Lorg/acdd/framework/bundlestorage/BundleArchiveRevision$DexLoadException;
if-eqz v2, :cond_34
.line 107
check-cast v0, Ljava/lang/RuntimeException;
throw v0
.line 109
:cond_34
const-string v2, "CMPlugin"
const-string v3, "Error while dexopt >>>"
invoke-static {v2, v3, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
goto :goto_c
.line 113
:cond_3c
return-void
.end method
# virtual methods
.method init()V
.registers 2
.prologue
.line 62
const/4 v0, 0x1
iput-boolean v0, p0, Lorg/acdd/android/initializer/OptDexProcess;->isInitialized:Z
.line 63
return-void
.end method
.method declared-synchronized processPackages(ZZ)V
.registers 9
.prologue
.line 66
monitor-enter p0
:try_start_1
iget-boolean v0, p0, Lorg/acdd/android/initializer/OptDexProcess;->isInitialized:Z
if-nez v0, :cond_e
.line 67
const-string v0, "CMPlugin"
const-string v1, "Bundle Installer not initialized yet, process abort!"
invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
:try_end_c
.catchall {:try_start_1 .. :try_end_c} :catchall_47
.line 92
:cond_c
:goto_c
monitor-exit p0
return-void
.line 68
:cond_e
:try_start_e
iget-boolean v0, p0, Lorg/acdd/android/initializer/OptDexProcess;->notifyInstalled:Z
if-eqz v0, :cond_14
if-eqz p2, :cond_c
.line 70
:cond_14
if-eqz p1, :cond_4a
.line 71
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v0
.line 72
invoke-direct {p0}, Lorg/acdd/android/initializer/OptDexProcess;->runOptDexAuto()V
.line 76
iget-object v2, p0, Lorg/acdd/android/initializer/OptDexProcess;->log:Lorg/acdd/log/Logger;
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "[PluginTimer] dexopt auto start bundles cost time = "
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v4
sub-long v0, v4, v0
invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, " ms"
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
invoke-interface {v2, v0}, Lorg/acdd/log/Logger;->debug(Ljava/lang/String;)V
.line 88
:goto_41
if-nez p2, :cond_c
.line 89
const/4 v0, 0x1
iput-boolean v0, p0, Lorg/acdd/android/initializer/OptDexProcess;->notifyInstalled:Z
:try_end_46
.catchall {:try_start_e .. :try_end_46} :catchall_47
goto :goto_c
.line 66
:catchall_47
move-exception v0
monitor-exit p0
throw v0
.line 78
:cond_4a
:try_start_4a
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v0
.line 79
invoke-direct {p0}, Lorg/acdd/android/initializer/OptDexProcess;->runOptDexNonDelay()V
.line 80
iget-object v2, p0, Lorg/acdd/android/initializer/OptDexProcess;->log:Lorg/acdd/log/Logger;
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "[PluginTimer] dexopt bundles not delayed cost time = "
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v4
sub-long v0, v4, v0
invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, " ms"
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
invoke-interface {v2, v0}, Lorg/acdd/log/Logger;->debug(Ljava/lang/String;)V
.line 84
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v0
.line 85
invoke-direct {p0}, Lorg/acdd/android/initializer/OptDexProcess;->runOptDexDelay()V
.line 86
iget-object v2, p0, Lorg/acdd/android/initializer/OptDexProcess;->log:Lorg/acdd/log/Logger;
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "[PluginTimer] dexopt delayed bundles cost time = "
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v4
sub-long v0, v4, v0
invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, " ms"
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
invoke-interface {v2, v0}, Lorg/acdd/log/Logger;->debug(Ljava/lang/String;)V
:try_end_a0
.catchall {:try_start_4a .. :try_end_a0} :catchall_47
goto :goto_41
.end method