StrictReferenceHashStrategy
This commit is contained in:
parent
923f2e8ef6
commit
a6c849ef04
@ -161,7 +161,7 @@ dependencies {
|
||||
compileOnly(fg.deobf("mezz.jei:jei-${jei_mc_version}-forge-api:${jei_version}"))
|
||||
runtimeOnly(fg.deobf("mezz.jei:jei-${jei_mc_version}-forge:${jei_version}"))
|
||||
|
||||
runtimeOnly(fg.deobf("ru.dbotthepony:particle-collider:0.4.1"))
|
||||
runtimeOnly(fg.deobf("ru.dbotthepony:particle-collider:0.4.2"))
|
||||
|
||||
implementation(fg.deobf("curse.maven:jade-324717:${jade_id}"))
|
||||
//runtimeOnly(fg.deobf("curse.maven:configured-457570:${configured_id}"))
|
||||
|
@ -29,3 +29,23 @@ object ReferenceHashStrategy : Hash.Strategy<Any?> {
|
||||
return o.hashCode()
|
||||
}
|
||||
}
|
||||
|
||||
object StrictReferenceHashStrategy : Hash.Strategy<Any?> {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
override fun equals(a: Any?, b: Any?): Boolean {
|
||||
if (a === b) return true
|
||||
|
||||
if (a is Reference<*>) {
|
||||
if (b is Reference<*>) return false
|
||||
return b != null && (a as Reference<Any>).refersTo(b)
|
||||
} else if (b is Reference<*>) {
|
||||
return a != null && (b as Reference<Any>).refersTo(a)
|
||||
} else {
|
||||
return a == b
|
||||
}
|
||||
}
|
||||
|
||||
override fun hashCode(o: Any?): Int {
|
||||
return o.hashCode()
|
||||
}
|
||||
}
|
||||
|
@ -8,7 +8,7 @@ import java.lang.ref.ReferenceQueue
|
||||
|
||||
class WeakHashSet<E : Any>(initialCapacity: Int = 16, loadFactor: Float = 0.75f, linked: Boolean = false) : MutableSet<E> {
|
||||
private val queue = ReferenceQueue<E>()
|
||||
private val backing: ObjectSet<Any> = if (linked) ObjectLinkedOpenCustomHashSet(initialCapacity, loadFactor, ReferenceHashStrategy) else ObjectOpenCustomHashSet(initialCapacity, loadFactor, ReferenceHashStrategy)
|
||||
private val backing: ObjectSet<Any> = if (linked) ObjectLinkedOpenCustomHashSet(initialCapacity, loadFactor, StrictReferenceHashStrategy) else ObjectOpenCustomHashSet(initialCapacity, loadFactor, StrictReferenceHashStrategy)
|
||||
|
||||
private fun purge() {
|
||||
var next = queue.poll()
|
||||
|
Loading…
Reference in New Issue
Block a user