diff options
Diffstat (limited to 'patches/server/0411-Reduce-MutableInt-allocations-from-light-engine.patch')
-rw-r--r-- | patches/server/0411-Reduce-MutableInt-allocations-from-light-engine.patch | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/patches/server/0411-Reduce-MutableInt-allocations-from-light-engine.patch b/patches/server/0411-Reduce-MutableInt-allocations-from-light-engine.patch new file mode 100644 index 0000000000..1a92be0a01 --- /dev/null +++ b/patches/server/0411-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; |