From c7287dd5eeaff49debf60cb6d48e92ea78668c64 Mon Sep 17 00:00:00 2001 From: Alfie Cleveland Date: Fri, 19 Aug 2016 01:52:56 +0100 Subject: [PATCH] Optimise BlockState's hashCode/equals These are singleton "single instance" objects. We can rely on object identity checks safely. Use a simpler optimized hashcode --- .../block/state/properties/EnumProperty.java.patch | 12 ++++++++++++ .../state/properties/IntegerProperty.java.patch | 12 ++++++++++++ .../level/block/state/properties/Property.java.patch | 11 +++++++++++ 3 files changed, 35 insertions(+) create mode 100644 paper-server/patches/sources/net/minecraft/world/level/block/state/properties/EnumProperty.java.patch create mode 100644 paper-server/patches/sources/net/minecraft/world/level/block/state/properties/IntegerProperty.java.patch create mode 100644 paper-server/patches/sources/net/minecraft/world/level/block/state/properties/Property.java.patch diff --git a/paper-server/patches/sources/net/minecraft/world/level/block/state/properties/EnumProperty.java.patch b/paper-server/patches/sources/net/minecraft/world/level/block/state/properties/EnumProperty.java.patch new file mode 100644 index 000000000..95194b370 --- /dev/null +++ b/paper-server/patches/sources/net/minecraft/world/level/block/state/properties/EnumProperty.java.patch @@ -0,0 +1,12 @@ +--- a/net/minecraft/world/level/block/state/properties/EnumProperty.java ++++ b/net/minecraft/world/level/block/state/properties/EnumProperty.java +@@ -59,8 +59,7 @@ + return this.ordinalToIndex[enum_.ordinal()]; + } + +- @Override +- public boolean equals(Object object) { ++ public boolean equals_unused(Object object) { // Paper - Perf: Optimize hashCode/equals + if (this == object) { + return true; + } else { diff --git a/paper-server/patches/sources/net/minecraft/world/level/block/state/properties/IntegerProperty.java.patch b/paper-server/patches/sources/net/minecraft/world/level/block/state/properties/IntegerProperty.java.patch new file mode 100644 index 000000000..6542f0bc6 --- /dev/null +++ b/paper-server/patches/sources/net/minecraft/world/level/block/state/properties/IntegerProperty.java.patch @@ -0,0 +1,12 @@ +--- a/net/minecraft/world/level/block/state/properties/IntegerProperty.java ++++ b/net/minecraft/world/level/block/state/properties/IntegerProperty.java +@@ -28,8 +28,7 @@ + return this.values; + } + +- @Override +- public boolean equals(Object object) { ++ public boolean equals_unused(Object object) { // Paper - Perf: Optimize hashCode/equals + if (this == object) { + return true; + } else { diff --git a/paper-server/patches/sources/net/minecraft/world/level/block/state/properties/Property.java.patch b/paper-server/patches/sources/net/minecraft/world/level/block/state/properties/Property.java.patch new file mode 100644 index 000000000..e0a6a659b --- /dev/null +++ b/paper-server/patches/sources/net/minecraft/world/level/block/state/properties/Property.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/world/level/block/state/properties/Property.java ++++ b/net/minecraft/world/level/block/state/properties/Property.java +@@ -72,7 +72,7 @@ + + @Override + public boolean equals(Object object) { +- return this == object || object instanceof Property property && this.clazz.equals(property.clazz) && this.name.equals(property.name); ++ return this == object; // Paper - Perf: Optimize hashCode/equals + } + + @Override