From 8c841e73fd665ed27fa767253f405098c6551238 Mon Sep 17 00:00:00 2001 From: Sotr Date: Tue, 26 Mar 2019 00:26:13 +0800 Subject: [PATCH] Places more unsafe timings --- .../server/core/AkarinWorldAccessor.java | 2 +- src/main/java/net/minecraft/server/Chunk.java | 4 ++-- .../minecraft/server/ChunkProviderServer.java | 2 +- .../net/minecraft/server/DedicatedServer.java | 4 ++-- .../net/minecraft/server/EntityTracker.java | 8 ++++---- .../minecraft/server/PaperLightingQueue.java | 2 +- .../minecraft/server/PlayerConnection.java | 4 ++-- .../server/PlayerConnectionUtils.java | 2 +- .../java/net/minecraft/server/PlayerList.java | 4 ++-- .../net/minecraft/server/WorldServer.java | 20 +++++++++---------- .../craftbukkit/scheduler/CraftScheduler.java | 8 ++++---- .../craftbukkit/scheduler/CraftTask.java | 4 ++-- .../java/org/spigotmc/ActivationRange.java | 4 ++-- work/Paper | 2 +- 14 files changed, 35 insertions(+), 35 deletions(-) diff --git a/src/main/java/io/akarin/server/core/AkarinWorldAccessor.java b/src/main/java/io/akarin/server/core/AkarinWorldAccessor.java index 3a05a19eb..c132ec2e9 100644 --- a/src/main/java/io/akarin/server/core/AkarinWorldAccessor.java +++ b/src/main/java/io/akarin/server/core/AkarinWorldAccessor.java @@ -21,7 +21,7 @@ import net.minecraft.server.WorldManager; public class AkarinWorldAccessor implements IWorldAccess { private final WorldManager worldManager; private final NavigationListener navigationListener; - private IWorldAccess[] customAccessors; + private IWorldAccess[] customAccessors = new IWorldAccess[0]; private boolean hasCustomAccessor; public void add(IWorldAccess worldAccessor) { diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java index a24216106..932a2d83b 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -981,7 +981,7 @@ public class Chunk implements IChunkAccess { server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkLoadEvent(this.bukkitChunk, this.needsDecoration)); if (this.needsDecoration) { - this.world.timings.syncChunkLoadPopulateTimer.startTiming(); // Paper + this.world.timings.syncChunkLoadPopulateTimer.startTimingUnsafe(); // Paper BlockSand.instaFall = true; java.util.Random random = new java.util.Random(); random.setSeed(world.getSeed()); @@ -1002,7 +1002,7 @@ public class Chunk implements IChunkAccess { } BlockSand.instaFall = false; server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkPopulateEvent(bukkitChunk)); - this.world.timings.syncChunkLoadPopulateTimer.stopTiming(); // Paper + this.world.timings.syncChunkLoadPopulateTimer.stopTimingUnsafe(); // Paper } } // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java index 48d2e29dc..ad81e469f 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java @@ -283,7 +283,7 @@ public class ChunkProviderServer implements IChunkProvider { } public void saveChunk(IChunkAccess ichunkaccess, boolean unloaded) { // Spigot - try (co.aikar.timings.Timing timed = world.timings.chunkSaveData.startTiming()) { // Paper - Timings + try (co.aikar.timings.Timing timed = world.timings.chunkSaveData.startTimingUnsafe()) { // Paper - Timings ichunkaccess.setLastSaved(this.world.getTime()); this.chunkLoader.saveChunk(this.world, ichunkaccess, unloaded); // Spigot } catch (IOException ioexception) { diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java index ab32fdc69..b5345774b 100644 --- a/src/main/java/net/minecraft/server/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/DedicatedServer.java @@ -467,7 +467,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer } public void handleCommandQueue() { - MinecraftTimings.serverCommandTimer.startTiming(); // Spigot + MinecraftTimings.serverCommandTimer.startTimingUnsafe(); // Spigot // Paper start - use proper queue ServerCommand servercommand; while ((servercommand = this.serverCommandQueue.poll()) != null) { @@ -484,7 +484,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer // CraftBukkit end } - MinecraftTimings.serverCommandTimer.stopTiming(); // Spigot + MinecraftTimings.serverCommandTimer.stopTimingUnsafe(); // Spigot } public boolean Q() { diff --git a/src/main/java/net/minecraft/server/EntityTracker.java b/src/main/java/net/minecraft/server/EntityTracker.java index a75ebf472..8b9e4831e 100644 --- a/src/main/java/net/minecraft/server/EntityTracker.java +++ b/src/main/java/net/minecraft/server/EntityTracker.java @@ -168,7 +168,7 @@ public class EntityTracker { public void updatePlayers() { List list = Lists.newArrayList(); Iterator iterator = this.c.iterator(); - world.timings.tracker1.startTiming(); // Paper + world.timings.tracker1.startTimingUnsafe(); // Paper while (iterator.hasNext()) { EntityTrackerEntry entitytrackerentry = (EntityTrackerEntry) iterator.next(); @@ -181,9 +181,9 @@ public class EntityTracker { } } } - world.timings.tracker1.stopTiming(); // Paper + world.timings.tracker1.stopTimingUnsafe(); // Paper - world.timings.tracker2.startTiming(); // Paper + world.timings.tracker2.startTimingUnsafe(); // Paper for (int i = 0; i < list.size(); ++i) { EntityPlayer entityplayer = (EntityPlayer) list.get(i); Iterator iterator1 = this.c.iterator(); @@ -196,7 +196,7 @@ public class EntityTracker { } } } - world.timings.tracker2.stopTiming(); // Paper + world.timings.tracker2.stopTimingUnsafe(); // Paper } diff --git a/src/main/java/net/minecraft/server/PaperLightingQueue.java b/src/main/java/net/minecraft/server/PaperLightingQueue.java index 9783f3a0d..47313d93e 100644 --- a/src/main/java/net/minecraft/server/PaperLightingQueue.java +++ b/src/main/java/net/minecraft/server/PaperLightingQueue.java @@ -54,7 +54,7 @@ class PaperLightingQueue { if (isOutOfTime(maxTickTime, startTime)) { return true; } - try (Timing ignored = chunk.world.timings.lightingQueueTimer.startTiming()) { + try (Timing ignored = chunk.world.timings.lightingQueueTimer.startTimingUnsafe()) { Runnable lightUpdate; while ((lightUpdate = this.poll()) != null) { lightUpdate.run(); diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java index 44c51053f..f68de3ea9 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -1841,7 +1841,7 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { // CraftBukkit end private void handleCommand(String s) { - MinecraftTimings.playerCommandTimer.startTiming(); // Paper + MinecraftTimings.playerCommandTimer.startTimingUnsafe(); // Paper // CraftBukkit start - whole method if ( org.spigotmc.SpigotConfig.logCommands ) // Spigot this.LOGGER.info(this.player.getName() + " issued server command: " + s); @@ -1865,7 +1865,7 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { java.util.logging.Logger.getLogger(PlayerConnection.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); return; } finally { - MinecraftTimings.playerCommandTimer.stopTiming(); // Paper + MinecraftTimings.playerCommandTimer.stopTimingUnsafe(); // Paper } // this.minecraftServer.getCommandDispatcher().a(this.player.getCommandListener(), s); // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/PlayerConnectionUtils.java b/src/main/java/net/minecraft/server/PlayerConnectionUtils.java index 363589879..cda91d6f7 100644 --- a/src/main/java/net/minecraft/server/PlayerConnectionUtils.java +++ b/src/main/java/net/minecraft/server/PlayerConnectionUtils.java @@ -11,7 +11,7 @@ public class PlayerConnectionUtils { iasynctaskhandler.ensuresMainThread(() -> { if (t0 instanceof PlayerConnection && ((PlayerConnection) t0).processedDisconnect) return; // CraftBukkit - try (Timing ignored = timing.startTiming()) { // Paper + try (Timing ignored = timing.startTimingUnsafe()) { // Paper packet.a(t0); } // Paper - timings }); diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java index 4820725e5..6c44064b7 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java @@ -1263,7 +1263,7 @@ public abstract class PlayerList { public void savePlayers(Integer interval) { MCUtil.ensureMain("Save Players", () -> { // Paper - ensure main long now = MinecraftServer.currentTick; - MinecraftTimings.savePlayers.startTiming(); // Paper + MinecraftTimings.savePlayers.startTimingUnsafe(); // Paper int numSaved = 0; // Paper for (int i = 0; i < this.players.size(); ++i) { EntityPlayer entityplayer = this.players.get(i); @@ -1272,7 +1272,7 @@ public abstract class PlayerList { if (interval != null && ++numSaved <= com.destroystokyo.paper.PaperConfig.maxPlayerAutoSavePerTick) { break; } // Paper } } - MinecraftTimings.savePlayers.stopTiming(); // Paper + MinecraftTimings.savePlayers.stopTimingUnsafe(); // Paper return null; }); // Paper - ensure main } // Paper end diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java index 92c01be07..c60d7ba33 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -271,10 +271,10 @@ public class WorldServer extends World implements IAsyncTaskHandler { // CraftBukkit start - Only call spawner if we have players online and the world allows for mobs or animals long time = this.worldData.getTime(); if (this.getGameRules().getBoolean("doMobSpawning") && this.worldData.getType() != WorldType.DEBUG_ALL_BLOCK_STATES && (this.allowMonsters || this.allowAnimals) && (this instanceof WorldServer && this.players.size() > 0)) { - timings.mobSpawn.startTiming(); // Spigot + timings.mobSpawn.startTimingUnsafe(); // Spigot this.spawnerCreature.a(this, this.allowMonsters && (this.ticksPerMonsterSpawns != 0 && time % this.ticksPerMonsterSpawns == 0L), this.allowAnimals && (this.ticksPerAnimalSpawns != 0 && time % this.ticksPerAnimalSpawns == 0L), this.worldData.getTime() % 400L == 0L); this.getChunkProvider().a(this, this.allowMonsters && (this.ticksPerMonsterSpawns != 0 && time % this.ticksPerMonsterSpawns == 0L), this.allowAnimals && (this.ticksPerAnimalSpawns != 0 && time % this.ticksPerAnimalSpawns == 0L)); - timings.mobSpawn.stopTiming(); // Spigot + timings.mobSpawn.stopTimingUnsafe(); // Spigot // CraftBukkit end } @@ -530,7 +530,7 @@ public class WorldServer extends World implements IAsyncTaskHandler { } //this.methodProfiler.exitEnter("tickBlocks"); // Akarin - remove caller - timings.chunkTicksBlocks.startTiming(); // Paper + timings.chunkTicksBlocks.startTimingUnsafe(); // Paper if (i > 0) { ChunkSection[] achunksection = chunk.getSections(); int i1 = achunksection.length; @@ -562,7 +562,7 @@ public class WorldServer extends World implements IAsyncTaskHandler { } } } - timings.chunkTicksBlocks.stopTiming(); // Paper + timings.chunkTicksBlocks.stopTimingUnsafe(); // Paper } //this.methodProfiler.exit(); // Akarin - remove caller @@ -868,7 +868,7 @@ public class WorldServer extends World implements IAsyncTaskHandler { if (chunkproviderserver.d()) { if (flag) org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld())); // CraftBukkit // Paper - Incremental Auto Saving - Only fire event on full save - timings.worldSave.startTiming(); // Paper + timings.worldSave.startTimingUnsafe(); // Paper if (flag || server.serverAutoSave) { // Paper if (iprogressupdate != null) { iprogressupdate.a(new ChatMessage("menu.savingLevel", new Object[0])); @@ -880,9 +880,9 @@ public class WorldServer extends World implements IAsyncTaskHandler { } } // Paper - timings.worldSaveChunks.startTiming(); // Paper + timings.worldSaveChunks.startTimingUnsafe(); // Paper chunkproviderserver.a(flag); - timings.worldSaveChunks.stopTiming(); // Paper + timings.worldSaveChunks.stopTimingUnsafe(); // Paper // CraftBukkit - ArrayList -> Collection /* //Paper start - disable vanilla chunk GC java.util.Collection list = chunkproviderserver.a(); @@ -896,7 +896,7 @@ public class WorldServer extends World implements IAsyncTaskHandler { } }*/ // Paper end - timings.worldSave.stopTiming(); // Paper + timings.worldSave.stopTimingUnsafe(); // Paper } } @@ -909,7 +909,7 @@ public class WorldServer extends World implements IAsyncTaskHandler { } protected void a() throws ExceptionWorldConflict { - timings.worldSaveLevel.startTiming(); // Paper + timings.worldSaveLevel.startTimingUnsafe(); // Paper this.checkSession(); Iterator iterator = this.server.getWorlds().iterator(); @@ -933,7 +933,7 @@ public class WorldServer extends World implements IAsyncTaskHandler { this.worldData.c(this.server.getBossBattleCustomData().c()); this.dataManager.saveWorldData(this.worldData, this.server.getPlayerList().t()); this.h().a(); - timings.worldSaveLevel.stopTiming(); // Paper + timings.worldSaveLevel.stopTimingUnsafe(); // Paper } // CraftBukkit start diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java index 3acfc0766..5cd4ce9bc 100644 --- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java +++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java @@ -479,10 +479,10 @@ public class CraftScheduler implements BukkitScheduler { runners.remove(task.getTaskId()); } } - MinecraftTimings.bukkitSchedulerFinishTimer.startTiming(); + MinecraftTimings.bukkitSchedulerFinishTimer.startTimingUnsafe(); pending.addAll(temp); temp.clear(); - MinecraftTimings.bukkitSchedulerFinishTimer.stopTiming(); + MinecraftTimings.bukkitSchedulerFinishTimer.stopTimingUnsafe(); //debugHead = debugHead.getNextHead(currentTick); // Paper } @@ -521,7 +521,7 @@ public class CraftScheduler implements BukkitScheduler { } void parsePending() { // Paper - if (!this.isAsyncScheduler) MinecraftTimings.bukkitSchedulerPendingTimer.startTiming(); // Paper + if (!this.isAsyncScheduler) MinecraftTimings.bukkitSchedulerPendingTimer.startTimingUnsafe(); // Paper CraftTask head = this.head; CraftTask task = head.getNext(); CraftTask lastTask = head; @@ -540,7 +540,7 @@ public class CraftScheduler implements BukkitScheduler { task.setNext(null); } this.head = lastTask; - if (!this.isAsyncScheduler) MinecraftTimings.bukkitSchedulerPendingTimer.stopTiming(); // Paper + if (!this.isAsyncScheduler) MinecraftTimings.bukkitSchedulerPendingTimer.stopTiming(Unsafe); // Paper } private boolean isReady(final int currentTick) { diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java index f32e66010..87cbd3e2f 100644 --- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java +++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java @@ -77,13 +77,13 @@ public class CraftTask implements BukkitTask, Runnable { // Spigot @Override public void run() { - if (timings != null && isSync()) timings.startTiming(); // Paper + if (timings != null && isSync()) timings.startTimingUnsafe(); // Paper if (rTask != null) { rTask.run(); } else { cTask.accept(this); } - if (timings != null && isSync()) timings.stopTiming(); // Paper + if (timings != null && isSync()) timings.stopTimingUnsafe(); // Paper } long getPeriod() { diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java index 081789a8f..89d40a6a6 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -110,7 +110,7 @@ public class ActivationRange */ public static void activateEntities(World world) { - MinecraftTimings.entityActivationCheckTimer.startTiming(); + MinecraftTimings.entityActivationCheckTimer.startTimingUnsafe(); final int miscActivationRange = world.spigotConfig.miscActivationRange; final int animalActivationRange = world.spigotConfig.animalActivationRange; final int monsterActivationRange = world.spigotConfig.monsterActivationRange; @@ -147,7 +147,7 @@ public class ActivationRange } } } - MinecraftTimings.entityActivationCheckTimer.stopTiming(); + MinecraftTimings.entityActivationCheckTimer.stopTimingUnsafe(); } /** diff --git a/work/Paper b/work/Paper index e8bbfbfdd..25e5bfe66 160000 --- a/work/Paper +++ b/work/Paper @@ -1 +1 @@ -Subproject commit e8bbfbfddf682fd10cee5f039c11fdacf70eafed +Subproject commit 25e5bfe6693b1d7177105621dfd0ec59a16adcf9