alexandroid/decompiled/jadx/sources/com/mapbox/bindgen/ObjectReferences.java
KaKi87 a47fad5135 📦 Add decompiled Alexa 2.2.730155.0 (jadx, apktool, Hermes strings)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-07 00:04:16 +01:00

70 lines
2.8 KiB
Java

package com.mapbox.bindgen;
import androidx.annotation.NonNull;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
/* compiled from: r8-map-id-b9432e0f623b4a4bff4ba50a8a24c4aafad2c1e11092747b9fb5e6a22af5a940 */
/* loaded from: classes8.dex */
class ObjectReferences {
private static final AtomicReferenceFieldUpdater<ObjectReferences, Object> MAIN_REF_UPDATER = AtomicReferenceFieldUpdater.newUpdater(ObjectReferences.class, Object.class, "mainReference");
private static final AtomicIntegerFieldUpdater<ObjectReferences> REF_COUNT_UPDATER = AtomicIntegerFieldUpdater.newUpdater(ObjectReferences.class, "referenceCount");
private volatile Object mainReference;
private volatile int referenceCount = 1;
private volatile ConcurrentHashMap<Integer, Object> additionalReferences = null;
public ObjectReferences(@NonNull Object obj) {
this.mainReference = obj;
}
private int deleteAdditionalReference(int i) {
ConcurrentHashMap<Integer, Object> concurrentHashMap = this.additionalReferences;
return concurrentHashMap == null ? this.referenceCount : concurrentHashMap.remove(Integer.valueOf(i)) != null ? REF_COUNT_UPDATER.decrementAndGet(this) : this.referenceCount;
}
private int deleteMainReference() {
return MAIN_REF_UPDATER.getAndSet(this, null) != null ? REF_COUNT_UPDATER.decrementAndGet(this) : this.referenceCount;
}
public int addAdditional(@NonNull Object obj) {
REF_COUNT_UPDATER.incrementAndGet(this);
ConcurrentHashMap<Integer, Object> concurrentHashMap = this.additionalReferences;
if (concurrentHashMap == null) {
synchronized (this) {
try {
concurrentHashMap = this.additionalReferences;
if (concurrentHashMap == null) {
concurrentHashMap = new ConcurrentHashMap<>();
this.additionalReferences = concurrentHashMap;
}
} finally {
}
}
}
int size = concurrentHashMap.size();
do {
size++;
} while (concurrentHashMap.putIfAbsent(Integer.valueOf(size), obj) != null);
return size;
}
public int delete(int i) {
return i == 0 ? deleteMainReference() : deleteAdditionalReference(i);
}
public Object get(int i) {
if (i == 0) {
return this.mainReference;
}
ConcurrentHashMap<Integer, Object> concurrentHashMap = this.additionalReferences;
if (i < 0 || concurrentHashMap == null) {
return null;
}
return concurrentHashMap.get(Integer.valueOf(i));
}
public int getReferenceCount() {
return this.referenceCount;
}
}