diff --git a/common.json b/common.json index 4fe2b1787db0..e08d46e2ecc3 100644 --- a/common.json +++ b/common.json @@ -8,7 +8,7 @@ "COMMENT.jdks": "When adding or removing JDKs keep in sync with JDKs in ci/common.jsonnet", "jdks": { - "galahad-jdk": {"name": "jpg-jdk", "version": "24", "build_id": "jdk-24+24-2921", "platformspecific": true, "extrabundles": ["static-libs"]}, + "galahad-jdk": {"name": "jpg-jdk", "version": "24", "build_id": "jdk-24+24-2950", "platformspecific": true, "extrabundles": ["static-libs"]}, "oraclejdk17": {"name": "jpg-jdk", "version": "17.0.7", "build_id": "jdk-17.0.7+8", "platformspecific": true, "extrabundles": ["static-libs"]}, "labsjdk-ce-17": {"name": "labsjdk", "version": "ce-17.0.7+4-jvmci-23.1-b02", "platformspecific": true }, diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/thread/Target_java_lang_Thread.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/thread/Target_java_lang_Thread.java index 7f8886f30ce9..26385ae097cf 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/thread/Target_java_lang_Thread.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/thread/Target_java_lang_Thread.java @@ -31,8 +31,6 @@ import java.util.Map; import java.util.Objects; -import com.oracle.svm.core.jdk.JDKUtils; -import jdk.graal.compiler.serviceprovider.JavaVersionUtil; import org.graalvm.nativeimage.IsolateThread; import org.graalvm.nativeimage.Platforms; import org.graalvm.nativeimage.impl.InternalPlatform; @@ -54,6 +52,7 @@ import jdk.graal.compiler.api.directives.GraalDirectives; import jdk.graal.compiler.replacements.ReplacementsUtil; +import jdk.graal.compiler.serviceprovider.JavaVersionUtil; @TargetClass(Thread.class) @SuppressWarnings({"unused"}) @@ -117,7 +116,7 @@ public final class Target_java_lang_Thread { */ @Alias // @RecomputeFieldValue(kind = RecomputeFieldValue.Kind.Reset) // - @TargetElement(onlyWith = JDK21OrEarlier.class) + @TargetElement(onlyWith = JDK21OrEarlier.class) // public AccessControlContext inheritedAccessControlContext; @Alias // @@ -218,6 +217,7 @@ void setCurrentThread(Thread thread) { @Substitute @SuppressWarnings({"unused"}) @Platforms(InternalPlatform.NATIVE_ONLY.class) + @TargetElement(onlyWith = JDK21OrEarlier.class) private Target_java_lang_Thread( ThreadGroup g, String name, @@ -237,6 +237,27 @@ private Target_java_lang_Thread( this.scopedValueBindings = NEW_THREAD_BINDINGS; } + @Substitute + @Platforms(InternalPlatform.NATIVE_ONLY.class) + @TargetElement(onlyWith = JDKLatest.class) + private Target_java_lang_Thread( + ThreadGroup g, + String name, + int characteristics, + Runnable target, + long stackSize) { + /* Non-0 instance field initialization. */ + this.interruptLock = new Object(); + /* Injected Target_java_lang_Thread instance field initialization. */ + this.threadData = new ThreadData(); + + String nameLocal = (name != null) ? name : genThreadName(); + boolean inheritThreadLocals = (characteristics & NO_INHERIT_THREAD_LOCALS) == 0; + JavaThreads.initializeNewThread(this, g, target, nameLocal, stackSize, null, inheritThreadLocals); + + this.scopedValueBindings = NEW_THREAD_BINDINGS; + } + @Substitute static String genThreadName() { int threadNum = JavaThreads.JavaThreadNumberSingleton.singleton().threadInitNumber.incrementAndGet(); @@ -543,7 +564,7 @@ boolean isTerminated() { final class Target_java_lang_Thread_Constants { // Checkstyle: stop @SuppressWarnings("removal") // - @TargetElement(onlyWith = JDK21OrEarlier.class) + @TargetElement(onlyWith = JDK21OrEarlier.class) // @Alias static AccessControlContext NO_PERMISSIONS_ACC; @Alias static ThreadGroup VTHREAD_GROUP;