SpectrumSoLoader.smali

.class public Lcom/facebook/spectrum/SpectrumSoLoader;
.super Ljava/lang/Object;
.source "SpectrumSoLoader.java"


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Lcom/facebook/spectrum/SpectrumSoLoader$SpectrumImplForFbJniSoLoaderDelegate;,
        Lcom/facebook/spectrum/SpectrumSoLoader$SystemSoLoaderImpl;,
        Lcom/facebook/spectrum/SpectrumSoLoader$FacebookSoLoaderImpl;,
        Lcom/facebook/spectrum/SpectrumSoLoader$SoLoaderWrapper;
    }
.end annotation


# static fields
.field public static final sAlreadyInitialized:Ljava/util/concurrent/atomic/AtomicBoolean;

.field public static sSoLoaderDelegate:Lcom/facebook/spectrum/SpectrumSoLoader$SoLoaderWrapper;


# direct methods
.method public static constructor <clinit>()V
    .registers 2

    new-instance v0, Ljava/util/concurrent/atomic/AtomicBoolean;

    const/4 v1, 0x0

    invoke-direct {v0, v1}, Ljava/util/concurrent/atomic/AtomicBoolean;-><init>(Z)V

    sput-object v0, Lcom/facebook/spectrum/SpectrumSoLoader;->sAlreadyInitialized:Ljava/util/concurrent/atomic/AtomicBoolean;

    return-void
.end method

.method public constructor <init>()V
    .registers 1

    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    return-void
.end method

.method public static init(Landroid/content/Context;)V
    .registers 2

    new-instance v0, Lcom/facebook/spectrum/SpectrumSoLoader$FacebookSoLoaderImpl;

    invoke-direct {v0}, Lcom/facebook/spectrum/SpectrumSoLoader$FacebookSoLoaderImpl;-><init>()V

    invoke-static {p0, v0}, Lcom/facebook/spectrum/SpectrumSoLoader;->init(Landroid/content/Context;Lcom/facebook/spectrum/SpectrumSoLoader$SoLoaderWrapper;)V

    return-void
.end method

.method public static init(Landroid/content/Context;Lcom/facebook/spectrum/SpectrumSoLoader$SoLoaderWrapper;)V
    .registers 4

    sget-object v0, Lcom/facebook/spectrum/SpectrumSoLoader;->sAlreadyInitialized:Ljava/util/concurrent/atomic/AtomicBoolean;

    const/4 v1, 0x1

    invoke-virtual {v0, v1}, Ljava/util/concurrent/atomic/AtomicBoolean;->getAndSet(Z)Z

    move-result v0

    if-nez v0, :cond_17

    sput-object p1, Lcom/facebook/spectrum/SpectrumSoLoader;->sSoLoaderDelegate:Lcom/facebook/spectrum/SpectrumSoLoader$SoLoaderWrapper;

    invoke-interface {p1, p0}, Lcom/facebook/spectrum/SpectrumSoLoader$SoLoaderWrapper;->init(Landroid/content/Context;)V

    new-instance p0, Lcom/facebook/spectrum/SpectrumSoLoader$SpectrumImplForFbJniSoLoaderDelegate;

    const/4 p1, 0x0

    invoke-direct {p0, p1}, Lcom/facebook/spectrum/SpectrumSoLoader$SpectrumImplForFbJniSoLoaderDelegate;-><init>(Lcom/facebook/spectrum/SpectrumSoLoader$1;)V

    sput-object p0, Lcom/facebook/jni/FbJniSoLoader;->delegate:Lcom/facebook/jni/FbJniSoLoader$SoLoaderWrapper;

    return-void

    :cond_17
    new-instance p0, Ljava/lang/IllegalStateException;

    const-string p1, "SpectrumSoLoader must not be initialized more than once"

    invoke-direct {p0, p1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V

    throw p0
.end method

.method public static loadLibrary(Ljava/lang/String;)V
    .registers 4

    sget-object v0, Lcom/facebook/spectrum/SpectrumSoLoader;->sAlreadyInitialized:Ljava/util/concurrent/atomic/AtomicBoolean;

    monitor-enter v0

    :try_start_3
    sget-object v1, Lcom/facebook/spectrum/SpectrumSoLoader;->sAlreadyInitialized:Ljava/util/concurrent/atomic/AtomicBoolean;

    const/4 v2, 0x1

    invoke-virtual {v1, v2}, Ljava/util/concurrent/atomic/AtomicBoolean;->getAndSet(Z)Z

    move-result v1

    if-nez v1, :cond_13

    new-instance v1, Lcom/facebook/spectrum/SpectrumSoLoader$FacebookSoLoaderImpl;

    invoke-direct {v1}, Lcom/facebook/spectrum/SpectrumSoLoader$FacebookSoLoaderImpl;-><init>()V

    sput-object v1, Lcom/facebook/spectrum/SpectrumSoLoader;->sSoLoaderDelegate:Lcom/facebook/spectrum/SpectrumSoLoader$SoLoaderWrapper;

    :cond_13
    monitor-exit v0
    :try_end_14
    .catchall {:try_start_3 .. :try_end_14} :catchall_1a

    sget-object v0, Lcom/facebook/spectrum/SpectrumSoLoader;->sSoLoaderDelegate:Lcom/facebook/spectrum/SpectrumSoLoader$SoLoaderWrapper;

    invoke-interface {v0, p0}, Lcom/facebook/spectrum/SpectrumSoLoader$SoLoaderWrapper;->loadLibrary(Ljava/lang/String;)V

    return-void

    :catchall_1a
    move-exception p0

    :try_start_1b
    monitor-exit v0
    :try_end_1c
    .catchall {:try_start_1b .. :try_end_1c} :catchall_1a

    throw p0
.end method