Skip to content

Commit 48939f2

Browse files
Add SIMD Support for Java 21 (#1499)
1 parent 2ebde54 commit 48939f2

3 files changed

Lines changed: 35 additions & 4 deletions

File tree

patches/api/0001-Pufferfish-API-Changes.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ You should have received a copy of the GNU General Public License
2020
along with this program. If not, see <http://www.gnu.org/licenses/>.
2121

2222
diff --git a/build.gradle.kts b/build.gradle.kts
23-
index bf01892c248b988531d21d9fb0f74d0adf2205ac..80833c13a2d19e31d6f648e7ef5b3456025e767e 100644
23+
index 66bcd8f9a8fce8f920a0f1dd7ae0a2937da68e80..c43eb3099747b9f1155b918ca818487b63488538 100644
2424
--- a/build.gradle.kts
2525
+++ b/build.gradle.kts
2626
@@ -51,6 +51,7 @@ dependencies {
@@ -480,7 +480,7 @@ index eaefbb00e9993d54906cc8cf35cf753c0d6c7707..301e82369603f3dd6e6c1bd380da4bac
480480

481481
if (cloader instanceof PluginClassLoader) {
482482
diff --git a/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java b/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java
483-
index f9b57b872780aa6b9b959494874b57c7a8ff0c53..90953bfc81168068a281be4d2d3942d5e7dd69ff 100644
483+
index 7e4f7cb2afbc145e532285c793573ad107bc3033..12449e18180d604e9cbbc744da74a8b222a18e1f 100644
484484
--- a/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java
485485
+++ b/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java
486486
@@ -50,6 +50,8 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm

patches/api/0002-Fix-pufferfish-issues.patch

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,19 @@ Date: Tue, 4 Jan 2022 23:05:41 -0600
44
Subject: [PATCH] Fix pufferfish issues
55

66

7+
diff --git a/src/main/java/gg/pufferfish/pufferfish/simd/SIMDChecker.java b/src/main/java/gg/pufferfish/pufferfish/simd/SIMDChecker.java
8+
index ab5fea0b03224bf249352ce340e94704ff713345..3441cdad70da1bd523c5933b1a914688718c2657 100644
9+
--- a/src/main/java/gg/pufferfish/pufferfish/simd/SIMDChecker.java
10+
+++ b/src/main/java/gg/pufferfish/pufferfish/simd/SIMDChecker.java
11+
@@ -15,7 +15,7 @@ public class SIMDChecker {
12+
@Deprecated
13+
public static boolean canEnable(Logger logger) {
14+
try {
15+
- if (SIMDDetection.getJavaVersion() != 17 && SIMDDetection.getJavaVersion() != 18 && SIMDDetection.getJavaVersion() != 19) {
16+
+ if (SIMDDetection.getJavaVersion() < 17 || SIMDDetection.getJavaVersion() > 21) {
17+
return false;
18+
} else {
19+
SIMDDetection.testRun = true;
720
diff --git a/src/test/java/org/bukkit/AnnotationTest.java b/src/test/java/org/bukkit/AnnotationTest.java
821
index 88f1ca89fa640a686231b8eec87e70419b2d73ef..d6b91c49a267c89d7df2ddee7ccfe64675d117be 100644
922
--- a/src/test/java/org/bukkit/AnnotationTest.java

patches/server/0003-Fix-pufferfish-issues.patch

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,27 @@ index 7e82d2c6a6085a5ea335ba9ef2a5ec3f5a37e787..32366253c04c493135f2b22d1940f836
1818
+ jvmArgs("-DPaper.isRunDev=true")
1919
}
2020
diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
21-
index f6a3364175476c57a7763a087ff55e1689474800..5e01bfdad663656168604fc878a993dd910bf45b 100644
21+
index f6a3364175476c57a7763a087ff55e1689474800..8b8fe02b9db5192a3adb8d4a3bb3c2105f90544d 100644
2222
--- a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
2323
+++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
24+
@@ -86,7 +86,7 @@ public class PufferfishConfig {
25+
// Attempt to detect vectorization
26+
try {
27+
SIMDDetection.isEnabled = SIMDDetection.canEnable(PufferfishLogger.LOGGER);
28+
- SIMDDetection.versionLimited = SIMDDetection.getJavaVersion() != 17 && SIMDDetection.getJavaVersion() != 18 && SIMDDetection.getJavaVersion() != 19;
29+
+ SIMDDetection.versionLimited = SIMDDetection.getJavaVersion() < 17 || SIMDDetection.getJavaVersion() > 21;
30+
} catch (NoClassDefFoundError | Exception ignored) {
31+
ignored.printStackTrace();
32+
}
33+
@@ -94,7 +94,7 @@ public class PufferfishConfig {
34+
if (SIMDDetection.isEnabled) {
35+
PufferfishLogger.LOGGER.info("SIMD operations detected as functional. Will replace some operations with faster versions.");
36+
} else if (SIMDDetection.versionLimited) {
37+
- PufferfishLogger.LOGGER.warning("Will not enable SIMD! These optimizations are only safely supported on Java 17, Java 18, and Java 19.");
38+
+ PufferfishLogger.LOGGER.warning("Will not enable SIMD! These optimizations are only safely supported on Java 17 through Java 21.");
39+
} else {
40+
PufferfishLogger.LOGGER.warning("SIMD operations are available for your server, but are not configured!");
41+
PufferfishLogger.LOGGER.warning("To enable additional optimizations, add \"--add-modules=jdk.incubator.vector\" to your startup flags, BEFORE the \"-jar\".");
2442
@@ -232,7 +232,7 @@ public class PufferfishConfig {
2543
public static int activationDistanceMod;
2644

@@ -62,7 +80,7 @@ index 62ad086b5b07303d920fdb3534a556673ef51f71..15aaa270e51b9194596e7ed5061c85c9
6280

6381
private int currentIceAndSnowTick = 0; protected void resetIceAndSnowTick() { this.currentIceAndSnowTick = this.randomTickRandom.nextInt(16); } // Pufferfish
6482
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
65-
index d18296739a833dbe6c3bf45e00d5d5c2e80099ac..d25dd9018eff5f3817c1b56f49632cc0a9388b8e 100644
83+
index 5c5c8fbd562b46f8699be97353447eaab36c007a..385253bddf50c290317b6d0f283331edf515badd 100644
6684
--- a/src/main/java/net/minecraft/world/entity/Entity.java
6785
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
6886
@@ -825,7 +825,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S

0 commit comments

Comments
 (0)