@@ -55,9 +55,12 @@ struct JNIClassTests {
5555
5656 import org.swift.swiftkit.core.*;
5757 import org.swift.swiftkit.core.util.*;
58+ import java.util.*;
59+ import java.util.concurrent.atomic.AtomicBoolean;
60+ import org.swift.swiftkit.core.annotations.*;
5861 """ ,
5962 """
60- public final class MyClass extends JNISwiftInstance {
63+ public final class MyClass implements JNISwiftInstance {
6164 static final String LIB_NAME = " SwiftModule " ;
6265
6366 @SuppressWarnings( " unused " )
@@ -68,9 +71,21 @@ struct JNIClassTests {
6871 }
6972 """ ,
7073 """
71- private MyClass(long selfPointer, SwiftArena swiftArena) {
72- super(selfPointer, swiftArena);
73- }
74+ private final long selfPointer;
75+ """ ,
76+ """
77+ public long $memoryAddress() {
78+ return this.selfPointer;
79+ }
80+ """ ,
81+ """
82+ private MyClass(long selfPointer, SwiftArena swiftArena) {
83+ SwiftObjects.requireNonZero(selfPointer, " selfPointer " );
84+ this.selfPointer = selfPointer;
85+
86+ // Only register once we have fully initialized the object since this will need the object pointer.
87+ swiftArena.register(this);
88+ }
7489 """ ,
7590 """
7691 public static MyClass wrapMemoryAddressUnsafe(long selfPointer, SwiftArena swiftArena) {
@@ -92,7 +107,7 @@ struct JNIClassTests {
92107 expectedChunks: [
93108 """
94109 @Override
95- protected Runnable $createDestroyFunction() {
110+ public Runnable $createDestroyFunction() {
96111 long self$ = this.$memoryAddress();
97112 if (CallTraces.TRACE_DOWNCALLS) {
98113 CallTraces.traceDowncall( " MyClass.$createDestroyFunction " ,
0 commit comments