diff --git a/src/main/java/net/runelite/deob/pool/Double.java b/src/main/java/net/runelite/deob/pool/Double.java index 7ed74a9ade..e489ad4f3b 100644 --- a/src/main/java/net/runelite/deob/pool/Double.java +++ b/src/main/java/net/runelite/deob/pool/Double.java @@ -35,6 +35,14 @@ public class Double extends PoolEntry return value == d.value; } + @Override + public int hashCode() + { + int hash = 5; + hash = 79 * hash + (int) (java.lang.Double.doubleToLongBits(this.value) ^ (java.lang.Double.doubleToLongBits(this.value) >>> 32)); + return hash; + } + @Override public int getSlots() { diff --git a/src/main/java/net/runelite/deob/pool/Float.java b/src/main/java/net/runelite/deob/pool/Float.java index 33fa6f297d..68f0512675 100644 --- a/src/main/java/net/runelite/deob/pool/Float.java +++ b/src/main/java/net/runelite/deob/pool/Float.java @@ -35,6 +35,14 @@ public class Float extends PoolEntry return value == f.value; } + @Override + public int hashCode() + { + int hash = 7; + hash = 37 * hash + java.lang.Float.floatToIntBits(this.value); + return hash; + } + @Override public Type getTypeClass() { diff --git a/src/main/java/net/runelite/deob/pool/Integer.java b/src/main/java/net/runelite/deob/pool/Integer.java index b0746dba10..f4851f210f 100644 --- a/src/main/java/net/runelite/deob/pool/Integer.java +++ b/src/main/java/net/runelite/deob/pool/Integer.java @@ -34,6 +34,14 @@ public class Integer extends PoolEntry Integer i = (Integer) other; return value == i.value; } + + @Override + public int hashCode() + { + int hash = 3; + hash = 97 * hash + this.value; + return hash; + } @Override public java.lang.String toString() diff --git a/src/main/java/net/runelite/deob/pool/InterfaceMethod.java b/src/main/java/net/runelite/deob/pool/InterfaceMethod.java index 0da3118783..7e80537b19 100644 --- a/src/main/java/net/runelite/deob/pool/InterfaceMethod.java +++ b/src/main/java/net/runelite/deob/pool/InterfaceMethod.java @@ -5,6 +5,7 @@ import net.runelite.deob.ConstantPool; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; +import java.util.Objects; public class InterfaceMethod extends PoolEntry { @@ -51,6 +52,15 @@ public class InterfaceMethod extends PoolEntry InterfaceMethod i = (InterfaceMethod) other; return clazz.equals(i.clazz) && nat.equals(i.nat); } + + @Override + public int hashCode() + { + int hash = 5; + hash = 23 * hash + Objects.hashCode(this.clazz); + hash = 23 * hash + Objects.hashCode(this.nat); + return hash; + } public Class getClassEntry() { diff --git a/src/main/java/net/runelite/deob/pool/Long.java b/src/main/java/net/runelite/deob/pool/Long.java index c372c31a74..becf785789 100644 --- a/src/main/java/net/runelite/deob/pool/Long.java +++ b/src/main/java/net/runelite/deob/pool/Long.java @@ -35,6 +35,14 @@ public class Long extends PoolEntry return value == l.value; } + @Override + public int hashCode() + { + int hash = 3; + hash = 37 * hash + (int) (this.value ^ (this.value >>> 32)); + return hash; + } + @Override public int getSlots() { diff --git a/src/main/java/net/runelite/deob/pool/PoolEntry.java b/src/main/java/net/runelite/deob/pool/PoolEntry.java index 3760174d1d..18c1ed93a5 100644 --- a/src/main/java/net/runelite/deob/pool/PoolEntry.java +++ b/src/main/java/net/runelite/deob/pool/PoolEntry.java @@ -29,6 +29,9 @@ public abstract class PoolEntry @Override public abstract boolean equals(Object other); + @Override + public abstract int hashCode(); + public abstract void write(DataOutputStream out) throws IOException; public ConstantType getType() diff --git a/src/main/java/net/runelite/deob/pool/String.java b/src/main/java/net/runelite/deob/pool/String.java index b135e3f4a5..60406f0710 100644 --- a/src/main/java/net/runelite/deob/pool/String.java +++ b/src/main/java/net/runelite/deob/pool/String.java @@ -6,6 +6,7 @@ import net.runelite.deob.execution.Type; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; +import java.util.Objects; public class String extends PoolEntry { @@ -54,6 +55,14 @@ public class String extends PoolEntry return string.equals(s.string); } + @Override + public int hashCode() + { + int hash = 5; + hash = 83 * hash + Objects.hashCode(this.string); + return hash; + } + @Override public void write(DataOutputStream out) throws IOException { diff --git a/src/main/java/net/runelite/deob/pool/UTF8.java b/src/main/java/net/runelite/deob/pool/UTF8.java index e431e93837..13ddba0f98 100644 --- a/src/main/java/net/runelite/deob/pool/UTF8.java +++ b/src/main/java/net/runelite/deob/pool/UTF8.java @@ -5,6 +5,7 @@ import net.runelite.deob.ConstantPool; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; +import java.util.Objects; public class UTF8 extends PoolEntry { @@ -34,6 +35,14 @@ public class UTF8 extends PoolEntry return string.equals(u.string); } + @Override + public int hashCode() + { + int hash = 5; + hash = 29 * hash + Objects.hashCode(this.string); + return hash; + } + public java.lang.String getValue() { return string;