.class public final Lcom/google/android/gms/internal/ads/zzbnr; .super Lcom/google/android/gms/internal/ads/zzcai; .source "SourceFile" # instance fields .field private final zza:Ljava/lang/Object; .field private final zzb:Lcom/google/android/gms/ads/internal/util/zzbd; .field private zzc:Z .field private zzd:I # direct methods .method public constructor (Lcom/google/android/gms/ads/internal/util/zzbd;)V .locals 1 .line 1 invoke-direct {p0}, Lcom/google/android/gms/internal/ads/zzcai;->()V new-instance v0, Ljava/lang/Object; invoke-direct {v0}, Ljava/lang/Object;->()V iput-object v0, p0, Lcom/google/android/gms/internal/ads/zzbnr;->zza:Ljava/lang/Object; iput-object p1, p0, Lcom/google/android/gms/internal/ads/zzbnr;->zzb:Lcom/google/android/gms/ads/internal/util/zzbd; const/4 p1, 0x0 iput-boolean p1, p0, Lcom/google/android/gms/internal/ads/zzbnr;->zzc:Z iput p1, p0, Lcom/google/android/gms/internal/ads/zzbnr;->zzd:I return-void .end method # virtual methods .method public final zza()Lcom/google/android/gms/internal/ads/zzbnm; .locals 4 .line 1 new-instance v0, Lcom/google/android/gms/internal/ads/zzbnm; invoke-direct {v0, p0}, Lcom/google/android/gms/internal/ads/zzbnm;->(Lcom/google/android/gms/internal/ads/zzbnr;)V const-string v1, "createNewReference: Trying to acquire lock" .line 2 invoke-static {v1}, Lcom/google/android/gms/ads/internal/util/zze;->zza(Ljava/lang/String;)V iget-object v1, p0, Lcom/google/android/gms/internal/ads/zzbnr;->zza:Ljava/lang/Object; .line 3 monitor-enter v1 :try_start_0 const-string v2, "createNewReference: Lock acquired" .line 4 invoke-static {v2}, Lcom/google/android/gms/ads/internal/util/zze;->zza(Ljava/lang/String;)V new-instance v2, Lcom/google/android/gms/internal/ads/zzbnn; invoke-direct {v2, p0, v0}, Lcom/google/android/gms/internal/ads/zzbnn;->(Lcom/google/android/gms/internal/ads/zzbnr;Lcom/google/android/gms/internal/ads/zzbnm;)V new-instance v3, Lcom/google/android/gms/internal/ads/zzbno; invoke-direct {v3, p0, v0}, Lcom/google/android/gms/internal/ads/zzbno;->(Lcom/google/android/gms/internal/ads/zzbnr;Lcom/google/android/gms/internal/ads/zzbnm;)V .line 5 invoke-virtual {p0, v2, v3}, Lcom/google/android/gms/internal/ads/zzcai;->zzj(Lcom/google/android/gms/internal/ads/zzcaf;Lcom/google/android/gms/internal/ads/zzcad;)V iget v2, p0, Lcom/google/android/gms/internal/ads/zzbnr;->zzd:I const/4 v3, 0x1 if-ltz v2, :cond_0 move v2, v3 goto :goto_0 :cond_0 const/4 v2, 0x0 .line 6 :goto_0 invoke-static {v2}, Lcom/google/android/gms/common/internal/Preconditions;->checkState(Z)V iget v2, p0, Lcom/google/android/gms/internal/ads/zzbnr;->zzd:I add-int/2addr v2, v3 iput v2, p0, Lcom/google/android/gms/internal/ads/zzbnr;->zzd:I .line 7 monitor-exit v1 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 const-string v1, "createNewReference: Lock released" .line 8 invoke-static {v1}, Lcom/google/android/gms/ads/internal/util/zze;->zza(Ljava/lang/String;)V return-object v0 :catchall_0 move-exception v0 .line 7 :try_start_1 monitor-exit v1 :try_end_1 .catchall {:try_start_1 .. :try_end_1} :catchall_0 throw v0 .end method .method public final zzb()V .locals 3 const-string v0, "markAsDestroyable: Trying to acquire lock" .line 1 invoke-static {v0}, Lcom/google/android/gms/ads/internal/util/zze;->zza(Ljava/lang/String;)V iget-object v0, p0, Lcom/google/android/gms/internal/ads/zzbnr;->zza:Ljava/lang/Object; .line 2 monitor-enter v0 :try_start_0 const-string v1, "markAsDestroyable: Lock acquired" .line 3 invoke-static {v1}, Lcom/google/android/gms/ads/internal/util/zze;->zza(Ljava/lang/String;)V iget v1, p0, Lcom/google/android/gms/internal/ads/zzbnr;->zzd:I const/4 v2, 0x1 if-ltz v1, :cond_0 move v1, v2 goto :goto_0 :cond_0 const/4 v1, 0x0 .line 4 :goto_0 invoke-static {v1}, Lcom/google/android/gms/common/internal/Preconditions;->checkState(Z)V const-string v1, "Releasing root reference. JS Engine will be destroyed once other references are released." .line 5 invoke-static {v1}, Lcom/google/android/gms/ads/internal/util/zze;->zza(Ljava/lang/String;)V iput-boolean v2, p0, Lcom/google/android/gms/internal/ads/zzbnr;->zzc:Z .line 6 invoke-virtual {p0}, Lcom/google/android/gms/internal/ads/zzbnr;->zzc()V .line 7 monitor-exit v0 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 const-string v0, "markAsDestroyable: Lock released" .line 8 invoke-static {v0}, Lcom/google/android/gms/ads/internal/util/zze;->zza(Ljava/lang/String;)V return-void :catchall_0 move-exception v1 .line 7 :try_start_1 monitor-exit v0 :try_end_1 .catchall {:try_start_1 .. :try_end_1} :catchall_0 throw v1 .end method .method public final zzc()V .locals 3 const-string v0, "maybeDestroy: Trying to acquire lock" .line 1 invoke-static {v0}, Lcom/google/android/gms/ads/internal/util/zze;->zza(Ljava/lang/String;)V iget-object v0, p0, Lcom/google/android/gms/internal/ads/zzbnr;->zza:Ljava/lang/Object; .line 2 monitor-enter v0 :try_start_0 const-string v1, "maybeDestroy: Lock acquired" .line 3 invoke-static {v1}, Lcom/google/android/gms/ads/internal/util/zze;->zza(Ljava/lang/String;)V iget v1, p0, Lcom/google/android/gms/internal/ads/zzbnr;->zzd:I if-ltz v1, :cond_0 const/4 v1, 0x1 goto :goto_0 :cond_0 const/4 v1, 0x0 .line 4 :goto_0 invoke-static {v1}, Lcom/google/android/gms/common/internal/Preconditions;->checkState(Z)V iget-boolean v1, p0, Lcom/google/android/gms/internal/ads/zzbnr;->zzc:Z if-eqz v1, :cond_1 iget v1, p0, Lcom/google/android/gms/internal/ads/zzbnr;->zzd:I if-nez v1, :cond_1 const-string v1, "No reference is left (including root). Cleaning up engine." .line 6 invoke-static {v1}, Lcom/google/android/gms/ads/internal/util/zze;->zza(Ljava/lang/String;)V new-instance v1, Lcom/google/android/gms/internal/ads/zzbnq; invoke-direct {v1, p0}, Lcom/google/android/gms/internal/ads/zzbnq;->(Lcom/google/android/gms/internal/ads/zzbnr;)V new-instance v2, Lcom/google/android/gms/internal/ads/zzcae; invoke-direct {v2}, Lcom/google/android/gms/internal/ads/zzcae;->()V .line 7 invoke-virtual {p0, v1, v2}, Lcom/google/android/gms/internal/ads/zzcai;->zzj(Lcom/google/android/gms/internal/ads/zzcaf;Lcom/google/android/gms/internal/ads/zzcad;)V goto :goto_1 :catchall_0 move-exception v1 goto :goto_2 :cond_1 const-string v1, "There are still references to the engine. Not destroying." .line 5 invoke-static {v1}, Lcom/google/android/gms/ads/internal/util/zze;->zza(Ljava/lang/String;)V .line 8 :goto_1 monitor-exit v0 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 const-string v0, "maybeDestroy: Lock released" .line 9 invoke-static {v0}, Lcom/google/android/gms/ads/internal/util/zze;->zza(Ljava/lang/String;)V return-void .line 8 :goto_2 :try_start_1 monitor-exit v0 :try_end_1 .catchall {:try_start_1 .. :try_end_1} :catchall_0 throw v1 .end method .method public final zzd()V .locals 2 const-string v0, "releaseOneReference: Trying to acquire lock" .line 1 invoke-static {v0}, Lcom/google/android/gms/ads/internal/util/zze;->zza(Ljava/lang/String;)V iget-object v0, p0, Lcom/google/android/gms/internal/ads/zzbnr;->zza:Ljava/lang/Object; .line 2 monitor-enter v0 :try_start_0 const-string v1, "releaseOneReference: Lock acquired" .line 3 invoke-static {v1}, Lcom/google/android/gms/ads/internal/util/zze;->zza(Ljava/lang/String;)V iget v1, p0, Lcom/google/android/gms/internal/ads/zzbnr;->zzd:I if-lez v1, :cond_0 const/4 v1, 0x1 goto :goto_0 :cond_0 const/4 v1, 0x0 .line 4 :goto_0 invoke-static {v1}, Lcom/google/android/gms/common/internal/Preconditions;->checkState(Z)V const-string v1, "Releasing 1 reference for JS Engine" .line 5 invoke-static {v1}, Lcom/google/android/gms/ads/internal/util/zze;->zza(Ljava/lang/String;)V iget v1, p0, Lcom/google/android/gms/internal/ads/zzbnr;->zzd:I add-int/lit8 v1, v1, -0x1 iput v1, p0, Lcom/google/android/gms/internal/ads/zzbnr;->zzd:I .line 6 invoke-virtual {p0}, Lcom/google/android/gms/internal/ads/zzbnr;->zzc()V .line 7 monitor-exit v0 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 const-string v0, "releaseOneReference: Lock released" .line 8 invoke-static {v0}, Lcom/google/android/gms/ads/internal/util/zze;->zza(Ljava/lang/String;)V return-void :catchall_0 move-exception v1 .line 7 :try_start_1 monitor-exit v0 :try_end_1 .catchall {:try_start_1 .. :try_end_1} :catchall_0 throw v1 .end method