Skip to content

Commit

Permalink
address comments.
Browse files Browse the repository at this point in the history
  • Loading branch information
mur47x111 committed Nov 20, 2024
1 parent 4543aad commit d83b3cf
Showing 1 changed file with 28 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
import java.lang.ref.ReferenceQueue;
import java.lang.reflect.Array;

import jdk.internal.misc.Unsafe;
import org.graalvm.nativeimage.hosted.FieldValueTransformer;

import com.oracle.svm.core.NeverInline;
Expand All @@ -41,7 +40,9 @@
import com.oracle.svm.core.jdk.JDK21OrEarlier;
import com.oracle.svm.core.jdk.JDKLatest;
import com.oracle.svm.core.thread.VMThreads;
import com.oracle.svm.util.ReflectionUtil;

import jdk.graal.compiler.serviceprovider.JavaVersionUtil;
import jdk.internal.misc.InnocuousThread;

@TargetClass(className = "jdk.internal.ref.Cleaner")
Expand Down Expand Up @@ -163,13 +164,12 @@ final class Target_jdk_internal_ref_PhantomCleanable_JDK21 {

@TargetClass(className = "jdk.internal.ref.PhantomCleanable", onlyWith = JDKLatest.class)
final class Target_jdk_internal_ref_PhantomCleanable {
// TODO do we need the following? If so, how to reset the list?
// @Alias @RecomputeFieldValue(kind = RecomputeFieldValue.Kind.Custom, declClass = .class) //
// Target_jdk_internal_ref_CleanerImpl_CleanableList list;
// @Alias @RecomputeFieldValue(kind = RecomputeFieldValue.Kind.Custom, declClass = HolderObjectFieldTransformer.class) //
// Target_jdk_internal_ref_CleanerImpl_CleanableList_Node node;
// @Alias @RecomputeFieldValue(kind = RecomputeFieldValue.Kind.Custom, declClass = ResetToMinusOneTransformer.class) //
// int index;
@Alias @RecomputeFieldValue(kind = RecomputeFieldValue.Kind.Custom, declClass = HolderObjectFieldTransformer.class) //
Target_jdk_internal_ref_CleanerImpl_CleanableList list;
@Alias @RecomputeFieldValue(kind = RecomputeFieldValue.Kind.Custom, declClass = HolderObjectFieldTransformer.class) //
Target_jdk_internal_ref_CleanerImpl_CleanableList_Node node;
@Alias @RecomputeFieldValue(kind = RecomputeFieldValue.Kind.Custom, declClass = HolderObjectFieldTransformer.class) //
int index;

@AnnotateOriginal
@NeverInline("Ensure that every exception can be caught, including implicit exceptions.")
Expand All @@ -193,15 +193,14 @@ final class Target_jdk_internal_ref_CleanerImpl_CleanableList {
@TargetClass(className = "jdk.internal.ref.CleanerImpl$CleanableList$Node", onlyWith = JDKLatest.class)
final class Target_jdk_internal_ref_CleanerImpl_CleanableList_Node {

// TODO do we need the following?
// @Alias @RecomputeFieldValue(kind = RecomputeFieldValue.Kind.Custom, declClass = NewArrayTransformer.class) //
// Target_jdk_internal_ref_PhantomCleanable[] arr;
//
// @Alias @RecomputeFieldValue(kind = RecomputeFieldValue.Kind.Reset) //
// int size;
//
// @Alias @RecomputeFieldValue(kind = RecomputeFieldValue.Kind.Reset) //
// Target_jdk_internal_ref_CleanerImpl_CleanableList_Node next;
@Alias @RecomputeFieldValue(kind = RecomputeFieldValue.Kind.Custom, declClass = NewArrayTransformer.class) //
Target_jdk_internal_ref_PhantomCleanable[] arr;

@Alias @RecomputeFieldValue(kind = RecomputeFieldValue.Kind.Reset) //
int size;

@Alias @RecomputeFieldValue(kind = RecomputeFieldValue.Kind.Reset) //
Target_jdk_internal_ref_CleanerImpl_CleanableList_Node next;
}

final class HolderObjectFieldTransformer implements FieldValueTransformer {
Expand All @@ -219,8 +218,19 @@ public Object transform(Object receiver, Object originalValue) {
}

final class NewArrayTransformer implements FieldValueTransformer {

private static final int NODE_CAPACITY;

static {
if (JavaVersionUtil.JAVA_SPEC == 21) {
NODE_CAPACITY = -1;
} else {
NODE_CAPACITY = ReflectionUtil.readStaticField(ReflectionUtil.lookupClass("jdk.internal.ref.CleanerImpl$CleanableList"), "NODE_CAPACITY");
}
}

@Override
public Object transform(Object receiver, Object originalValue) {
return Array.newInstance(originalValue.getClass().getComponentType(), 4096);
return Array.newInstance(originalValue.getClass().getComponentType(), NODE_CAPACITY);
}
}

0 comments on commit d83b3cf

Please sign in to comment.