geforkt von Mirrors/Paper
4104545b11
"It was from a different time before books were as jank as they are now. As time has gone on they've only proven to be worse and worse."
51 Zeilen
3.3 KiB
Diff
51 Zeilen
3.3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Spottedleaf <spottedleaf@spottedleaf.dev>
|
|
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 4252247acd5c71e46d90f454663a9737e22e2a61..d122475c1a9d340046c478087d3ff5bf1ff8932c 100644
|
|
--- a/src/main/java/net/minecraft/world/level/lighting/SkyLightEngine.java
|
|
+++ b/src/main/java/net/minecraft/world/level/lighting/SkyLightEngine.java
|
|
@@ -14,6 +14,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));
|
|
@@ -25,7 +26,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;
|