< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/meta/HotSpotHostForeignCallsProvider.java

Print this page

        

@@ -23,10 +23,11 @@
 
 
 package org.graalvm.compiler.hotspot.meta;
 
 import static jdk.vm.ci.hotspot.HotSpotCallingConventionType.NativeCall;
+import static jdk.vm.ci.hotspot.HotSpotCallingConventionType.JavaCall;
 import static org.graalvm.compiler.core.common.GraalOptions.GeneratePIC;
 import static org.graalvm.compiler.core.target.Backend.ARITHMETIC_DREM;
 import static org.graalvm.compiler.core.target.Backend.ARITHMETIC_FREM;
 import static org.graalvm.compiler.hotspot.HotSpotBackend.BACKEDGE_EVENT;
 import static org.graalvm.compiler.hotspot.HotSpotBackend.BASE64_ENCODE_BLOCK;

@@ -82,10 +83,12 @@
 import static org.graalvm.compiler.hotspot.HotSpotHostBackend.UNCOMMON_TRAP_HANDLER;
 import static org.graalvm.compiler.hotspot.replacements.AssertionSnippets.ASSERTION_VM_MESSAGE_C;
 import static org.graalvm.compiler.hotspot.replacements.HotSpotG1WriteBarrierSnippets.G1WBPOSTCALL;
 import static org.graalvm.compiler.hotspot.replacements.HotSpotG1WriteBarrierSnippets.G1WBPRECALL;
 import static org.graalvm.compiler.hotspot.replacements.HotSpotG1WriteBarrierSnippets.VALIDATE_OBJECT;
+import static org.graalvm.compiler.hotspot.replacements.ContinuationSubstitutions.CONTINUATION_DO_CONTINUE;
+import static org.graalvm.compiler.hotspot.replacements.ContinuationSubstitutions.CONTINUATION_YIELD;
 import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.MARK_WORD_LOCATION;
 import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.TLAB_END_LOCATION;
 import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.TLAB_TOP_LOCATION;
 import static org.graalvm.compiler.hotspot.replacements.Log.LOG_OBJECT;
 import static org.graalvm.compiler.hotspot.replacements.Log.LOG_PRIMITIVE;

@@ -415,10 +418,16 @@
         }
         if (c.useSquareToLenIntrinsic()) {
             registerForeignCall(SQUARE_TO_LEN, c.squareToLen, NativeCall, DESTROYS_REGISTERS, LEAF_NO_VZERO, REEXECUTABLE_ONLY_AFTER_EXCEPTION, NamedLocationIdentity.getArrayLocation(JavaKind.Int));
         }
 
+        if (c.continuationThaw != 0) {
+            registerForeignCall(CONTINUATION_DO_CONTINUE, c.continuationThaw, JavaCall, DESTROYS_REGISTERS, SAFEPOINT, NOT_REEXECUTABLE, any());
+            registerForeignCall(CONTINUATION_YIELD, c.continuationDoYield, JavaCall, DESTROYS_REGISTERS, SAFEPOINT, NOT_REEXECUTABLE, any());
+        }
+
+
         if (c.useAESIntrinsics) {
             /*
              * When the java.ext.dirs property is modified then the crypto classes might not be
              * found. If that's the case we ignore the ClassNotFoundException and continue since we
              * cannot replace a non-existing method anyway.
< prev index next >