Skip to content

Commit 0941ebe

Browse files
committed
Mark the Continuation enter lambda as VMMethod
1 parent b39388c commit 0941ebe

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/thread/Target_jdk_internal_vm_Continuation.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,13 @@
2626

2727
import org.graalvm.nativeimage.CurrentIsolate;
2828

29+
import com.oracle.svm.core.NeverInline;
2930
import com.oracle.svm.core.annotate.Alias;
3031
import com.oracle.svm.core.annotate.Inject;
31-
import com.oracle.svm.core.NeverInline;
3232
import com.oracle.svm.core.annotate.RecomputeFieldValue;
3333
import com.oracle.svm.core.annotate.Substitute;
3434
import com.oracle.svm.core.annotate.TargetClass;
35+
import com.oracle.svm.core.jdk.InternalVMMethod;
3536
import com.oracle.svm.core.jdk.JDK19OrLater;
3637
import com.oracle.svm.core.jdk.LoomJDK;
3738
import com.oracle.svm.core.jdk.NotLoomJDK;
@@ -123,12 +124,26 @@ boolean isStarted() {
123124
@Alias
124125
public static native Target_jdk_internal_vm_Continuation getCurrentContinuation(Target_jdk_internal_vm_ContinuationScope scope);
125126

127+
@InternalVMMethod
128+
private static class ContinuationEnter0 implements Runnable {
129+
private final Target_jdk_internal_vm_Continuation continuation;
130+
131+
public ContinuationEnter0(Target_jdk_internal_vm_Continuation c) {
132+
this.continuation = c;
133+
}
134+
135+
@Override
136+
public void run() {
137+
continuation.enter0();
138+
}
139+
}
140+
126141
@Substitute
127142
static void enterSpecial(Target_jdk_internal_vm_Continuation c, boolean isContinue, boolean isVirtualThread) {
128143
assert isVirtualThread;
129144
if (!isContinue) {
130145
assert c.internal == null;
131-
c.internal = new Continuation(c::enter0);
146+
c.internal = new Continuation(new ContinuationEnter0(c));
132147
}
133148
c.internal.enter();
134149
}

0 commit comments

Comments
 (0)