.class public final Ldagger/internal/DoubleCheck; .super Ljava/lang/Object; .source "SourceFile" # interfaces .implements Ljavax/inject/Provider; .implements Ldagger/Lazy; # static fields .field public static final UNINITIALIZED:Ljava/lang/Object; # instance fields .field public volatile instance:Ljava/lang/Object; .field public volatile provider:Ljavax/inject/Provider; # direct methods .method static constructor ()V .locals 1 .line 29 new-instance v0, Ljava/lang/Object; invoke-direct {v0}, Ljava/lang/Object;->()V sput-object v0, Ldagger/internal/DoubleCheck;->UNINITIALIZED:Ljava/lang/Object; return-void .end method .method public constructor (Ljavax/inject/Provider;)V .locals 1 .line 34 invoke-direct {p0}, Ljava/lang/Object;->()V sget-object v0, Ldagger/internal/DoubleCheck;->UNINITIALIZED:Ljava/lang/Object; iput-object v0, p0, Ldagger/internal/DoubleCheck;->instance:Ljava/lang/Object; iput-object p1, p0, Ldagger/internal/DoubleCheck;->provider:Ljavax/inject/Provider; return-void .end method .method public static provider(Ljavax/inject/Provider;)Ljavax/inject/Provider; .locals 1 .line 80 invoke-static {p0}, Ldagger/internal/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; .line 81 instance-of v0, p0, Ldagger/internal/DoubleCheck; if-eqz v0, :cond_0 return-object p0 .line 86 :cond_0 new-instance v0, Ldagger/internal/DoubleCheck; invoke-direct {v0, p0}, Ldagger/internal/DoubleCheck;->(Ljavax/inject/Provider;)V return-object v0 .end method .method public static reentrantCheck(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; .locals 3 sget-object v0, Ldagger/internal/DoubleCheck;->UNINITIALIZED:Ljava/lang/Object; if-eq p0, v0, :cond_1 if-ne p0, p1, :cond_0 goto :goto_0 .line 69 :cond_0 new-instance v0, Ljava/lang/IllegalStateException; new-instance v1, Ljava/lang/StringBuilder; invoke-direct {v1}, Ljava/lang/StringBuilder;->()V const-string v2, "Scoped provider was invoked recursively returning different results: " invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; const-string p0, " & " invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; const-string p0, ". This is likely due to a circular dependency." invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p0 invoke-direct {v0, p0}, Ljava/lang/IllegalStateException;->(Ljava/lang/String;)V throw v0 :cond_1 :goto_0 return-object p1 .end method # virtual methods .method public get()Ljava/lang/Object; .locals 2 iget-object v0, p0, Ldagger/internal/DoubleCheck;->instance:Ljava/lang/Object; sget-object v1, Ldagger/internal/DoubleCheck;->UNINITIALIZED:Ljava/lang/Object; if-ne v0, v1, :cond_1 .line 44 monitor-enter p0 :try_start_0 iget-object v0, p0, Ldagger/internal/DoubleCheck;->instance:Ljava/lang/Object; if-ne v0, v1, :cond_0 iget-object v0, p0, Ldagger/internal/DoubleCheck;->provider:Ljavax/inject/Provider; .line 47 invoke-interface {v0}, Ljavax/inject/Provider;->get()Ljava/lang/Object; move-result-object v0 iget-object v1, p0, Ldagger/internal/DoubleCheck;->instance:Ljava/lang/Object; .line 48 invoke-static {v1, v0}, Ldagger/internal/DoubleCheck;->reentrantCheck(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; move-result-object v1 iput-object v1, p0, Ldagger/internal/DoubleCheck;->instance:Ljava/lang/Object; const/4 v1, 0x0 iput-object v1, p0, Ldagger/internal/DoubleCheck;->provider:Ljavax/inject/Provider; goto :goto_0 :catchall_0 move-exception v0 goto :goto_1 .line 53 :cond_0 :goto_0 monitor-exit p0 goto :goto_2 :goto_1 monitor-exit p0 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 throw v0 :cond_1 :goto_2 return-object v0 .end method