aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0412-Reduce-MutableInt-allocations-from-light-engine.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/server/0412-Reduce-MutableInt-allocations-from-light-engine.patch')
-rw-r--r--patches/server/0412-Reduce-MutableInt-allocations-from-light-engine.patch50
1 files changed, 50 insertions, 0 deletions
diff --git a/patches/server/0412-Reduce-MutableInt-allocations-from-light-engine.patch b/patches/server/0412-Reduce-MutableInt-allocations-from-light-engine.patch
new file mode 100644
index 0000000000..1a92be0a01
--- /dev/null
+++ b/patches/server/0412-Reduce-MutableInt-allocations-from-light-engine.patch
@@ -0,0 +1,50 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Spottedleaf <[email protected]>
+Date: Mon, 27 Apr 2020 02:48:06 -0700
+Subject: [PATCH] Reduce MutableInt allocations from light engine
+
+We can abuse the fact light is single threaded and share an instance
+per light engine instance
+
+diff --git a/src/main/java/net/minecraft/world/level/lighting/BlockLightEngine.java b/src/main/java/net/minecraft/world/level/lighting/BlockLightEngine.java
+index 729c4b1763a24bac3c0764bea505555a32e54f57..37d7165dfd17da03428f8dbbbf95aa8005be289c 100644
+--- a/src/main/java/net/minecraft/world/level/lighting/BlockLightEngine.java
++++ b/src/main/java/net/minecraft/world/level/lighting/BlockLightEngine.java
+@@ -15,6 +15,7 @@ import org.apache.commons.lang3.mutable.MutableInt;
+ public final class BlockLightEngine extends LayerLightEngine<BlockLightSectionStorage.BlockDataLayerStorageMap, BlockLightSectionStorage> {
+ private static final Direction[] DIRECTIONS = Direction.values();
+ private final BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos();
++ private final MutableInt mutableInt = new MutableInt(); // Paper
+
+ public BlockLightEngine(LightChunkGetter chunkProvider) {
+ super(chunkProvider, LightLayer.BLOCK, new BlockLightSectionStorage(chunkProvider));
+@@ -44,7 +45,7 @@ public final class BlockLightEngine extends LayerLightEngine<BlockLightSectionSt
+ if (direction == null) {
+ return 15;
+ } else {
+- MutableInt mutableInt = new MutableInt();
++ //MutableInt mutableint = new MutableInt(); // Paper - share mutableint, single threaded
+ BlockState blockState = this.getStateAndOpacity(targetId, mutableInt);
+ if (mutableInt.getValue() >= 15) {
+ return 15;
+diff --git a/src/main/java/net/minecraft/world/level/lighting/SkyLightEngine.java b/src/main/java/net/minecraft/world/level/lighting/SkyLightEngine.java
+index 56b8f6ac53e7598da4dea2180825242222f86731..ca710a20e8b97341616463f4058b61cf4999af28 100644
+--- a/src/main/java/net/minecraft/world/level/lighting/SkyLightEngine.java
++++ b/src/main/java/net/minecraft/world/level/lighting/SkyLightEngine.java
+@@ -15,6 +15,7 @@ import org.apache.commons.lang3.mutable.MutableInt;
+ public final class SkyLightEngine extends LayerLightEngine<SkyLightSectionStorage.SkyDataLayerStorageMap, SkyLightSectionStorage> {
+ private static final Direction[] DIRECTIONS = Direction.values();
+ private static final Direction[] HORIZONTALS = new Direction[]{Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST};
++ private final MutableInt mutableInt = new MutableInt(); // Paper
+
+ public SkyLightEngine(LightChunkGetter chunkProvider) {
+ super(chunkProvider, LightLayer.SKY, new SkyLightSectionStorage(chunkProvider));
+@@ -26,7 +27,7 @@ public final class SkyLightEngine extends LayerLightEngine<SkyLightSectionStorag
+ if (level >= 15) {
+ return level;
+ } else {
+- MutableInt mutableInt = new MutableInt();
++ //MutableInt mutableint = new MutableInt(); // Paper - share mutableint, single threaded
+ BlockState blockState = this.getStateAndOpacity(targetId, mutableInt);
+ if (mutableInt.getValue() >= 15) {
+ return 15;