18 package com.microsoft.z3;
20 import java.lang.ref.PhantomReference;
21 import java.lang.ref.Reference;
22 import java.lang.ref.ReferenceQueue;
23 import java.util.IdentityHashMap;
40 private final ReferenceQueue<T> referenceQueue =
new ReferenceQueue<>();
41 private final Map<PhantomReference<T>, Long> referenceMap =
42 new IdentityHashMap<>();
57 PhantomReference<T> ref =
new PhantomReference<>(obj, referenceQueue);
58 referenceMap.put(ref, obj.getNativeObject());
67 Reference<? extends T> ref;
68 while ((ref = referenceQueue.poll()) != null) {
69 long z3ast = referenceMap.remove(ref);
79 for (
long ref : referenceMap.values()) {
void storeReference(Context ctx, T obj)
void forceClear(Context ctx)
abstract void decRef(Context ctx, long obj)