Skip to content

Commit 7131e5a

Browse files
[GR-24080] [GR-57399] [GR-57642] [GR-57990] Bugfixes, refactorings, and cleanups for the Posix signal handling.
PullRequest: graal/18677
2 parents a574e41 + a1296ae commit 7131e5a

31 files changed

+1329
-979
lines changed

sdk/src/org.graalvm.nativeimage/snapshot.sigtest

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ meth public void printStackTrace(java.io.PrintStream)
9999
meth public void printStackTrace(java.io.PrintWriter)
100100
meth public void setStackTrace(java.lang.StackTraceElement[])
101101
supr java.lang.Object
102-
hfds CAUSE_CAPTION,EMPTY_THROWABLE_ARRAY,NULL_CAUSE_MESSAGE,SELF_SUPPRESSION_MESSAGE,SUPPRESSED_CAPTION,SUPPRESSED_SENTINEL,UNASSIGNED_STACK,backtrace,cause,depth,detailMessage,serialVersionUID,stackTrace,suppressedExceptions
102+
hfds CAUSE_CAPTION,EMPTY_THROWABLE_ARRAY,NULL_CAUSE_MESSAGE,SELF_SUPPRESSION_MESSAGE,SUPPRESSED_CAPTION,SUPPRESSED_SENTINEL,UNASSIGNED_STACK,backtrace,cause,depth,detailMessage,jfrTracing,serialVersionUID,stackTrace,suppressedExceptions
103103
hcls PrintStreamOrWriter,SentinelHolder,WrappedPrintStream,WrappedPrintWriter
104104

105105
CLSS public abstract interface java.lang.annotation.Annotation
@@ -224,23 +224,23 @@ meth public abstract void fatalError()
224224
meth public abstract void flush()
225225
meth public abstract void log(org.graalvm.nativeimage.c.type.CCharPointer,org.graalvm.word.UnsignedWord)
226226

227-
CLSS public final org.graalvm.nativeimage.MissingReflectionRegistrationError
228-
cons public init(java.lang.String,java.lang.Class<?>,java.lang.Class<?>,java.lang.String,java.lang.Class<?>[])
227+
CLSS public final org.graalvm.nativeimage.MissingJNIRegistrationError
228+
cons public init(java.lang.String,java.lang.Class<?>,java.lang.Class<?>,java.lang.String,java.lang.String)
229229
meth public java.lang.Class<?> getDeclaringClass()
230230
meth public java.lang.Class<?> getElementType()
231-
meth public java.lang.Class<?>[] getParameterTypes()
232231
meth public java.lang.String getElementName()
232+
meth public java.lang.String getSignature()
233233
supr java.lang.Error
234-
hfds declaringClass,elementName,elementType,parameterTypes,serialVersionUID
234+
hfds declaringClass,elementName,elementType,serialVersionUID,signature
235235

236-
CLSS public final org.graalvm.nativeimage.MissingJNIRegistrationError
237-
cons public init(java.lang.String,java.lang.Class<?>,java.lang.Class<?>,java.lang.String,java.lang.String)
236+
CLSS public final org.graalvm.nativeimage.MissingReflectionRegistrationError
237+
cons public init(java.lang.String,java.lang.Class<?>,java.lang.Class<?>,java.lang.String,java.lang.Class<?>[])
238238
meth public java.lang.Class<?> getDeclaringClass()
239239
meth public java.lang.Class<?> getElementType()
240-
meth public java.lang.String getSignature()
240+
meth public java.lang.Class<?>[] getParameterTypes()
241241
meth public java.lang.String getElementName()
242242
supr java.lang.Error
243-
hfds declaringClass,elementName,elementType,signature,serialVersionUID
243+
hfds declaringClass,elementName,elementType,parameterTypes,serialVersionUID
244244

245245
CLSS public abstract interface org.graalvm.nativeimage.ObjectHandle
246246
intf org.graalvm.word.ComparableWord
@@ -552,6 +552,7 @@ meth public abstract !hasdefault java.lang.String value()
552552
CLSS public final static org.graalvm.nativeimage.c.constant.CConstant$ValueAccess
553553
outer org.graalvm.nativeimage.c.constant.CConstant
554554
meth public static <%0 extends java.lang.Object> {%%0} get(java.lang.Class<?>,java.lang.String,java.lang.Class<{%%0}>)
555+
meth public static <%0 extends java.lang.Object> {%%0} get(java.lang.Enum<?>,java.lang.String)
555556
supr java.lang.Object
556557

557558
CLSS public abstract interface !annotation org.graalvm.nativeimage.c.constant.CEnum

sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/c/constant/CConstant.java

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,11 @@ private ValueAccess() {
9292
* @param declaringClass The class that contains the method.
9393
* @param methodName The name of the method annotated with {@link CConstant}.
9494
* @param returnType The desired type of the returned value. For integer-kind constants, the
95-
* supported types are {@link Long}, {@link Integer}, and {@link Boolean}. For
96-
* floating point constants, the only supported type is {@link Double}. For
97-
* string constants, the only supported type is {@link String}.
95+
* supported types are {@link Boolean}, {@link Byte}, {@link Short},
96+
* {@link Character}, {@link Integer}, and {@link Long}. For floating point
97+
* constants, the supported types are {@link Double} and {@link Float}. For
98+
* string constants, the only supported types are {@link String} and
99+
* {@code byte[]}.
98100
* @return The value of the C constant.
99101
*
100102
* @since 19.0
@@ -103,5 +105,24 @@ private ValueAccess() {
103105
public static <T> T get(Class<?> declaringClass, String methodName, Class<T> returnType) {
104106
return ImageSingletons.lookup(CConstantValueSupport.class).getCConstantValue(declaringClass, methodName, returnType);
105107
}
108+
109+
/**
110+
* Returns the value of a {@link CEnum}, i.e., the same value that calling the method
111+
* annotated with {@link CEnumValue} would return.
112+
* <p>
113+
* This method is useful during native image generation, when the annotated method cannot be
114+
* called.
115+
*
116+
* @param cEnum The enum value for which the C value should be returned. The enum type must
117+
* be annotated with {@link CEnum}.
118+
* @param methodName The name of the method annotated with {@link CEnumValue}.
119+
* @return The value of the C constant.
120+
*
121+
* @since 24.2
122+
*/
123+
@Platforms(Platform.HOSTED_ONLY.class)
124+
public static <T> T get(Enum<?> cEnum, String methodName) {
125+
return ImageSingletons.lookup(CConstantValueSupport.class).getCEnumValue(cEnum, methodName);
126+
}
106127
}
107128
}

sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/impl/CConstantValueSupport.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* The Universal Permissive License (UPL), Version 1.0
@@ -46,4 +46,6 @@
4646
@Platforms(Platform.HOSTED_ONLY.class)
4747
public interface CConstantValueSupport {
4848
<T> T getCConstantValue(Class<?> declaringClass, String methodName, Class<T> returnType);
49+
50+
<T> T getCEnumValue(Enum<?> cEnum, String methodName);
4951
}

substratevm/src/com.oracle.svm.core.posix/src/com/oracle/svm/core/posix/PosixPlatformTimeUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public final class PosixPlatformTimeUtils extends PlatformTimeUtils {
3636

3737
@Override
3838
@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-24+3/src/hotspot/os/posix/os_posix.cpp#L1409-L1415")
39-
protected SecondsNanos javaTimeSystemUTC() {
39+
public SecondsNanos javaTimeSystemUTC() {
4040
Time.timespec ts = StackValue.get(Time.timespec.class);
4141
int status = PosixUtils.clock_gettime(Time.CLOCK_REALTIME(), ts);
4242
PosixUtils.checkStatusIs0(status, "javaTimeSystemUTC: clock_gettime(CLOCK_REALTIME) failed.");

0 commit comments

Comments
 (0)