From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Spottedleaf 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 { 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= 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 { 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= 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;