Move legacy crap out (atomics)

This commit is contained in:
Daniel Mills
2020-11-14 15:05:56 -05:00
parent b85efcd85a
commit 468448ff6e
40 changed files with 164 additions and 296 deletions

View File

@@ -1,7 +0,0 @@
package com.volmit.iris.generator.legacy.atomics;
import com.volmit.iris.object.IrisBiome;
public class AtomicBiomeMap extends AtomicObjectMap<IrisBiome> {
}

View File

@@ -1,119 +0,0 @@
package com.volmit.iris.generator.legacy.atomics;
import java.util.function.Supplier;
import com.volmit.iris.util.IrisLock;
import com.volmit.iris.util.M;
public class AtomicCache<T>
{
private transient volatile T t;
private transient volatile long a;
private transient volatile int validations;
private final IrisLock check;
private final IrisLock time;
private final IrisLock write;
private final boolean nullSupport;
public AtomicCache()
{
this(false);
}
public AtomicCache(boolean nullSupport)
{
this.nullSupport = nullSupport;
check = new IrisLock("Check");
write = new IrisLock("Write");
time = new IrisLock("Time");
validations = 0;
a = -1;
t = null;
}
public void reset()
{
check.lock();
write.lock();
time.lock();
a = -1;
t = null;
time.unlock();
write.unlock();
check.unlock();
}
public T aquire(Supplier<T> t)
{
if(nullSupport)
{
return aquireNull(t);
}
if(this.t != null && validations > 1000)
{
return this.t;
}
if(this.t != null && M.ms() - a > 1000)
{
if(this.t != null)
{
validations++;
}
return this.t;
}
check.lock();
if(this.t == null)
{
write.lock();
this.t = t.get();
time.lock();
if(a == -1)
{
a = M.ms();
}
time.unlock();
write.unlock();
}
check.unlock();
return this.t;
}
public T aquireNull(Supplier<T> t)
{
if(validations > 1000)
{
return this.t;
}
if(M.ms() - a > 1000)
{
validations++;
return this.t;
}
check.lock();
write.lock();
this.t = t.get();
time.lock();
if(a == -1)
{
a = M.ms();
}
time.unlock();
write.unlock();
check.unlock();
return this.t;
}
}

View File

@@ -1,23 +0,0 @@
package com.volmit.iris.generator.legacy.atomics;
import com.google.common.util.concurrent.AtomicDoubleArray;
public class AtomicDoubleMap {
private final AtomicDoubleArray data;
public AtomicDoubleMap() {
data = new AtomicDoubleArray(256);
}
public double get(int x, int z) {
return data.get((z << 4) | x);
}
public int getInt(int x, int z) {
return (int) Math.round(get(x, z));
}
public void set(int x, int z, double v) {
data.set((z << 4) | x, v);
}
}

View File

@@ -1,19 +0,0 @@
package com.volmit.iris.generator.legacy.atomics;
import java.util.concurrent.atomic.AtomicIntegerArray;
public class AtomicIntMap {
private final AtomicIntegerArray data;
public AtomicIntMap() {
data = new AtomicIntegerArray(256);
}
public int get(int x, int z) {
return data.get((z << 4) | x);
}
public void set(int x, int z, int v) {
data.set((z << 4) | x, v);
}
}

View File

@@ -1,19 +0,0 @@
package com.volmit.iris.generator.legacy.atomics;
import java.util.concurrent.atomic.AtomicReferenceArray;
public class AtomicObjectMap<T> {
private final AtomicReferenceArray<T> data;
public AtomicObjectMap() {
data = new AtomicReferenceArray<T>(256);
}
public T get(int x, int z) {
return data.get((z << 4) | x);
}
public void set(int x, int z, T v) {
data.set((z << 4) | x, v);
}
}

View File

@@ -1,64 +0,0 @@
package com.volmit.iris.generator.legacy.atomics;
import com.volmit.iris.util.IrisLock;
import com.volmit.iris.util.KMap;
public class MasterLock
{
private final KMap<String, IrisLock> locks;
private final IrisLock lock;
private boolean enabled;
public MasterLock()
{
enabled = true;
locks = new KMap<>();
lock = new IrisLock("MasterLock");
}
public void clear()
{
locks.clear();
}
public void disable()
{
enabled = false;
}
public void lock(String key)
{
if(!enabled)
{
return;
}
lock.lock();
if(!locks.containsKey(key))
{
locks.put(key, new IrisLock("Locker"));
}
IrisLock l = locks.get(key);
lock.unlock();
l.lock();
}
public void unlock(String key)
{
if(!enabled)
{
return;
}
lock.lock();
if(!locks.containsKey(key))
{
locks.put(key, new IrisLock("Unlocker"));
}
IrisLock l = locks.get(key);
lock.unlock();
l.unlock();
}
}