Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
81617ee
allocation free
roberttoyonaga Feb 20, 2025
46e2d11
Compiling dump file is working
roberttoyonaga Mar 13, 2025
be0cd0a
fix classloader issue
roberttoyonaga Apr 30, 2025
b062580
type repo refactor
roberttoyonaga May 6, 2025
2006521
improve hashing for packages
roberttoyonaga May 6, 2025
7e79ee6
make pathBuffer allocation free. Clean up
roberttoyonaga Jun 4, 2025
bfe91e7
JfrTypeRepository record classes upon event emission. Remove prealloc…
roberttoyonaga Jun 5, 2025
e912a0b
add hook next to heap dump code. Only process full sampler buffers.
roberttoyonaga Jun 10, 2025
01b11b9
qsort chunk files. Bug fix traceID check.
roberttoyonaga Jun 16, 2025
30b036a
open emergency dump chunk
roberttoyonaga Jun 25, 2025
a831599
Do markChunkFinal and patch header like regular rotatios. Add tests.
roberttoyonaga Jun 25, 2025
533da7a
Emit old object sample and jdk.DumpReason events. Fix testEmergencyD…
roberttoyonaga Jun 27, 2025
847d6fb
style
roberttoyonaga Jul 2, 2025
cbeda3e
removed unused method
roberttoyonaga Jul 7, 2025
62bf8a9
style
roberttoyonaga Jul 7, 2025
785f415
style
roberttoyonaga Jul 7, 2025
38fdc1d
Do a full chunk rotation before emergency dumping
roberttoyonaga Jul 28, 2025
d162e3b
Merge branch 'master' into emergency-dump
roberttoyonaga Aug 29, 2025
62a031f
review feedback
roberttoyonaga Sep 3, 2025
59d80bf
style, gate fixes, remove logging, use stack instead of C heap for JF…
roberttoyonaga Sep 4, 2025
ead4718
style
roberttoyonaga Sep 4, 2025
723b88e
minor test refactor
roberttoyonaga Sep 11, 2025
85a90f9
Merge branch 'master' into emergency-dump
roberttoyonaga Sep 16, 2025
ee772f0
use JFR logging
roberttoyonaga Sep 16, 2025
af5dafd
small fix to JfrChunkFileWriter.writeString
roberttoyonaga Sep 16, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@
*/
package com.oracle.svm.core.posix;

import static com.oracle.svm.core.Uninterruptible.CALLED_FROM_UNINTERRUPTIBLE_CODE;

import org.graalvm.nativeimage.c.type.CCharPointer;
import org.graalvm.nativeimage.c.type.CCharPointerPointer;
import org.graalvm.word.PointerBase;
Expand Down Expand Up @@ -107,6 +109,12 @@ public int strcmp(CCharPointer s1, CCharPointer s2) {
return PosixLibC.strcmp(s1, s2);
}

@Override
@Uninterruptible(reason = CALLED_FROM_UNINTERRUPTIBLE_CODE, mayBeInlined = true)
public int strncmp(CCharPointer s1, CCharPointer s2, UnsignedWord n) {
return PosixLibC.strncmp(s1, s2, n);
}

@Override
@Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)
public int isdigit(int c) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,11 @@ public final class PosixPlatformTimeUtils extends PlatformTimeUtils {
@Override
@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-24+3/src/hotspot/os/posix/os_posix.cpp#L1409-L1415")
@Uninterruptible(reason = "Must not migrate platform threads when executing on a virtual thread.")
public SecondsNanos javaTimeSystemUTC() {
public void javaTimeSystemUTC(SecondsNanos result) {
Time.timespec ts = StackValue.get(Time.timespec.class);
int status = PosixUtils.clock_gettime(Time.CLOCK_REALTIME(), ts);
PosixUtils.checkStatusIs0(status, "javaTimeSystemUTC: clock_gettime(CLOCK_REALTIME) failed.");
return allocateSecondsNanosInterruptibly(ts.tv_sec(), ts.tv_nsec());
result.setNanos(ts.tv_nsec());
result.setSeconds(ts.tv_sec());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@

import static org.graalvm.nativeimage.c.function.CFunction.Transition.NO_TRANSITION;

import com.oracle.svm.core.Uninterruptible;
import com.oracle.svm.core.headers.LibC;
import org.graalvm.nativeimage.c.CContext;
import org.graalvm.nativeimage.c.constant.CConstant;
import org.graalvm.nativeimage.c.function.CFunction;
Expand Down Expand Up @@ -74,5 +76,15 @@ public static class NoTransitions {
@CFunction(transition = NO_TRANSITION)
public static native int unlinkat(int dirfd, CCharPointer pathname, int flags);

@Uninterruptible(reason = "LibC.errno() must not be overwritten accidentally.")
public static int restartableOpen(CCharPointer directory, int flags, int mode) {
int result;
do {
result = open(directory, flags, mode);
} while (result == -1 && LibC.errno() == Errno.EINTR());

return result;
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,9 @@ public class PosixLibC {
@CFunction(transition = CFunction.Transition.NO_TRANSITION)
public static native int strcmp(PointerBase s1, PointerBase s2);

@CFunction(transition = CFunction.Transition.NO_TRANSITION)
public static native int strncmp(PointerBase s1, PointerBase s2, UnsignedWord n);

@CFunction(transition = CFunction.Transition.NO_TRANSITION)
public static native CCharPointer strcpy(CCharPointer dst, CCharPointer src);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@

import com.oracle.svm.core.annotate.Substitute;
import com.oracle.svm.core.annotate.TargetClass;
import com.oracle.svm.core.graal.stackvalue.UnsafeStackValue;
import com.oracle.svm.core.util.BasedOnJDKFile;
import com.oracle.svm.core.util.PlatformTimeUtils;
import com.oracle.svm.core.util.PlatformTimeUtils.SecondsNanos;
Expand All @@ -41,13 +42,13 @@ final class Target_jdk_internal_misc_VM {
public static long getNanoTimeAdjustment(long offsetInSeconds) {
long maxDiffSecs = 0x0100000000L;
long minDiffSecs = -maxDiffSecs;
SecondsNanos time = UnsafeStackValue.get(SecondsNanos.class);
PlatformTimeUtils.singleton().javaTimeSystemUTC(time);

SecondsNanos time = PlatformTimeUtils.singleton().javaTimeSystemUTC();

long diff = time.seconds() - offsetInSeconds;
long diff = time.getSeconds() - offsetInSeconds;
if (diff >= maxDiffSecs || diff <= minDiffSecs) {
return -1;
}
return (diff * 1000000000) + time.nanos();
return (diff * 1000000000) + time.getNanos();
}
}
Loading