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;
39 public abstract class IDecRefQueue<T
extends Z3Object> {
40 private final ReferenceQueue<T> referenceQueue =
new ReferenceQueue<>();
41 private final Map<PhantomReference<T>, Long> referenceMap =
42 new IdentityHashMap<>();
54 protected abstract void decRef(
Context ctx,
long obj);
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 forceClear(Context ctx)
void storeReference(Context ctx, T obj)