Optimize some methods for inlining

Adds final to some methods to improve inlining ability
This commit is contained in:
Aikar
2020-09-19 11:51:01 -04:00
parent 7968c4f5c9
commit 0aa0eba111
4 changed files with 84 additions and 39 deletions

View File

@@ -10,15 +10,21 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -0,0 +0,0 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
}
@Override
- public Fluid getFluidIfLoaded(BlockPosition blockposition) {
+ public final Fluid getFluidIfLoaded(BlockPosition blockposition) {
IChunkAccess chunk = this.getChunkIfLoadedImmediately(blockposition.getX() >> 4, blockposition.getZ() >> 4);
return chunk == null ? null : chunk.getFluid(blockposition);
}
+
+ public boolean isLoadedAndInBounds(BlockPosition blockposition) {
+ public final boolean isLoadedAndInBounds(BlockPosition blockposition) { // Paper - final for inline
+ return getWorldBorder().isInBounds(blockposition) && getChunkIfLoadedImmediately(blockposition.getX() >> 4, blockposition.getZ() >> 4) != null;
+ }
+
+ public Chunk getChunkIfLoaded(int x, int z) {
+ public Chunk getChunkIfLoaded(int x, int z) { // Overridden in WorldServer for ABI compat which has final
+ return ((WorldServer) this).getChunkProvider().getChunkAtIfLoadedImmediately(x, z);
+ }
+ public final Chunk getChunkIfLoaded(BlockPosition blockposition) {
@@ -26,7 +32,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+ }
+
+ // reduces need to do isLoaded before getType
+ public IBlockData getTypeIfLoadedAndInBounds(BlockPosition blockposition) {
+ public final IBlockData getTypeIfLoadedAndInBounds(BlockPosition blockposition) {
+ return getWorldBorder().isInBounds(blockposition) ? getTypeIfLoaded(blockposition) : null;
+ }
// Paper end