Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
db314fe
Passing async tests
jtschuster Feb 5, 2026
fcf110f
Undo extra changes
jtschuster Feb 5, 2026
e1dec2b
Fix merge issues
jtschuster Feb 5, 2026
696b6b6
Cleanup ManifestModuleWrappedIL creation
jtschuster Feb 6, 2026
d0a228c
Use correct OwningMethod for ManifestMetadataModuleWrappedMethodIL.In…
jtschuster Feb 6, 2026
dea51a8
Merge branch 'main' of https://github.com/dotnet/runtime into runtime16
jtschuster Feb 6, 2026
d37bfc8
Undo formatting in CorInfoImpl.ReadyToRun.cs
jtschuster Feb 6, 2026
af114a0
Remove duplicated method from merge, remove unnecessary token manipul…
jtschuster Feb 6, 2026
bf8f402
Merge branch 'main' of https://github.com/dotnet/runtime into runtime16
jtschuster Feb 6, 2026
435c5d9
Remove duplicates from merge
jtschuster Feb 6, 2026
8465ceb
Use the same version resilient hash code for resumption stub and asyn…
jtschuster Feb 8, 2026
49101ed
Generalize CreateR2RBackedILStub
jtschuster Feb 9, 2026
5bcb9b5
Allow async methods without resumption stubs
jtschuster Feb 9, 2026
17e3358
Allow using code for methods without resumption stubs in the r2r image
jtschuster Feb 9, 2026
c66218c
Enable RuntimeAsync library tests
jtschuster Feb 9, 2026
14973b0
Merge branch 'main' of https://github.com/dotnet/runtime into runtime16
jtschuster Feb 9, 2026
18754ac
Apply suggestions from code review
jtschuster Feb 9, 2026
4dfdfe2
Clean up extraneous changes and fix build
jtschuster Feb 9, 2026
a887cf6
Merge branch 'runtime16' of https://github.com/jtschuster/runtime int…
jtschuster Feb 9, 2026
7f36d5a
Don't use async method code if we can't find resumption stub
jtschuster Feb 10, 2026
5e4a0cd
Merge branch 'main' of https://github.com/dotnet/runtime into runtime16
jtschuster Feb 12, 2026
5c37396
Fix merge issues
jtschuster Feb 12, 2026
d9af071
Add label for resume stub code in r2rdump
jtschuster Feb 12, 2026
d0ff7c1
Don't emit async thunks - there are some issues to sort out
jtschuster Feb 12, 2026
c1ecd59
SetIsAsyncCall even if method is dispatch cell in ComputeCallRefMap
jtschuster Feb 12, 2026
b7604a8
Remove PInvokeTargetNativeMethod from GetPrimaryMethodDesc
jtschuster Feb 12, 2026
5c9cd91
Fix build error
jtschuster Feb 12, 2026
4fe194e
Merge branch 'runtime16' of https://github.com/jtschuster/runtime; br…
jtschuster Feb 18, 2026
1ea81c8
Remove extra GetTypicalMethodDefinition()
jtschuster Feb 18, 2026
eb88cc5
Clean up crossgen changes
jtschuster Feb 18, 2026
4df231a
Refactor ResumptionStub resolution
jtschuster Feb 19, 2026
61f77a1
Remove unused method, move definition of GetEntrypoint
jtschuster Feb 19, 2026
821188c
Remove unused method, move GetEntryPoint declaration, undo extra changes
jtschuster Feb 19, 2026
076b1a6
Merge branch 'runtime16' of https://github.com/jtschuster/runtime int…
jtschuster Feb 19, 2026
1770954
Use AsyncMethodVariant.Target, not GetTargetOfAsyncMethod()
jtschuster Feb 19, 2026
0487f2c
Rename IsAsyncThunk
jtschuster Feb 19, 2026
cc6c6be
Fix bug in SigMatchesMethodDesc
jtschuster Feb 19, 2026
7115923
Don't skip AsyncResumptionStubs in ExceptionInfoLookupTableNode
jtschuster Feb 19, 2026
1770f85
Make resumption stub signature buffer const
jtschuster Feb 19, 2026
e497dd6
Re-add PInvoke unwrapping to GetPrimaryMethodDesc()
jtschuster Feb 19, 2026
a6e90a0
Add issue link for resolving virtual async variants
jtschuster Feb 19, 2026
64d5a05
Reenable typeloading in R2RHelper fixups
jtschuster Feb 20, 2026
435d8fe
Add todo and issue links for inlining async methods
jtschuster Feb 20, 2026
5f95ee1
Change some usages of IsCompilerGeneratedILBodyForAsync to IsAsyncThunk
jtschuster Feb 20, 2026
bf8055d
Remove leftover _validTypes.TryAdd()
jtschuster Feb 20, 2026
f082f7b
Format StackTraceEmissionPolicy
jtschuster Feb 20, 2026
198acfb
Remove intermediate var
jtschuster Feb 20, 2026
b3120f2
Merge branch 'main' of https://github.com/dotnet/runtime into runtime16
jtschuster Feb 20, 2026
4027c01
Remove unused variable
jtschuster Feb 20, 2026
68b2d10
Use fixup + runtimefunctions offset for encoding resumption stub
jtschuster Feb 20, 2026
1651c02
Refactor ILStubCache to directly set stored method signature and clea…
jtschuster Feb 23, 2026
934b8dd
Refactor resumption stub handling to use RVA instead of runtime funct…
jtschuster Feb 23, 2026
265f351
Add MarkResumptionStubEntryPoints method to handle resumption stub en…
jtschuster Feb 23, 2026
991d7bb
Remove references to ResumptionStub signature flag, add AsyncVariant …
jtschuster Feb 23, 2026
613b93e
Cache R2R resumption stub method descs to avoid race conditions
jtschuster Feb 24, 2026
baf97fe
Update src/coreclr/vm/jitinterface.cpp
jkotas Feb 24, 2026
b15b091
Remove always-false isAsync parameter from CreateR2RBackedILStub
jtschuster Feb 24, 2026
64185c2
Use entry point hashtable for resumption stub dedup
jtschuster Feb 24, 2026
06daa55
Split and cache getAsyncResumptionStub into R2R/RyuJit files
jtschuster Feb 24, 2026
71fe323
Merge branch 'runtime16' of https://github.com/jtschuster/runtime int…
jtschuster Feb 24, 2026
e0bb512
Add new R2R enums to readytorun-format.md
jtschuster Feb 24, 2026
2f02e9d
Optimize resumption stub entry point marking
jtschuster Feb 24, 2026
c21f8b3
Update comments undo extra changes.
jtschuster Feb 24, 2026
21ffac7
Update comment
jtschuster Feb 24, 2026
9396732
Merge branch 'main' of https://github.com/dotnet/runtime into runtime16
jtschuster Feb 25, 2026
1e3aa5a
Emit direct call from R2R async resumption stub to target method
jtschuster Feb 25, 2026
6abe7fa
Fix ARM64 R2R async helper calls missing entry point setup
jtschuster Feb 25, 2026
0c3deda
Fix ARM64 R2R JMP epilog not setting x11 for import cell
jtschuster Feb 26, 2026
7e0f5ec
Fix clang-format in JMP epilog R2R fix
jtschuster Feb 26, 2026
603ac20
Support non-zero addends for ARM64 page-relative relocations in PEObj…
jtschuster Feb 26, 2026
224f1af
Disable hot-cold splitting for async methods
jtschuster Feb 26, 2026
625f542
Convert async context helpers from getFunctionEntryPoint to JIT helpers
jtschuster Feb 26, 2026
9347ca0
Revert "Support non-zero addends for ARM64 page-relative relocations …
jtschuster Feb 26, 2026
1504aa9
Merge branch 'main' of https://github.com/dotnet/runtime into runtime16
jtschuster Feb 26, 2026
6d0456d
Add NativeAOT and R2RDump support for async context JIT helpers
jtschuster Feb 27, 2026
4e2bc46
Reorder ReadyToRun async helper enum values to be sequential
jtschuster Feb 27, 2026
2005c99
Enable RuntimeAsync library tests on ARM64 platforms
jtschuster Feb 27, 2026
ea2a37e
Merge branch 'main' of https://github.com/dotnet/runtime into runtime16
jtschuster Feb 27, 2026
c670331
Merge branch 'runtime16' of https://github.com/jtschuster/runtime int…
jtschuster Feb 27, 2026
a6a0253
Rename async JIT helpers to use AsyncHelpers prefix consistently
jtschuster Feb 27, 2026
1b59499
Revert AsyncHelpers prefix from helper enum names, add comments instead
jtschuster Feb 27, 2026
dada384
Support non-zero addends in ARM64 PE page-relative relocations
jtschuster Feb 27, 2026
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
93 changes: 48 additions & 45 deletions docs/design/coreclr/botr/readytorun-format.md
Original file line number Diff line number Diff line change
Expand Up @@ -239,51 +239,53 @@ signature that contains the information required to fill the corresponding slot.
builds upon the encoding used for signatures in ECMA-335. The first element of the signature describes the
fixup kind, the rest of the signature varies based on the fixup kind.

| ReadyToRunFixupKind | Value | Description
|:-----------------------------------------|------:|:-----------
| READYTORUN_FIXUP_ThisObjDictionaryLookup | 0x07 | Generic lookup using `this`; followed by the type signature and by the method signature
| READYTORUN_FIXUP_TypeDictionaryLookup | 0x08 | Type-based generic lookup for methods on instantiated types; followed by the typespec signature
| READYTORUN_FIXUP_MethodDictionaryLookup | 0x09 | Generic method lookup; followed by the method spec signature
| READYTORUN_FIXUP_TypeHandle | 0x10 | Pointer uniquely identifying the type to the runtime, followed by typespec signature (see ECMA-335)
| READYTORUN_FIXUP_MethodHandle | 0x11 | Pointer uniquely identifying the method to the runtime, followed by method signature (see below)
| READYTORUN_FIXUP_FieldHandle | 0x12 | Pointer uniquely identifying the field to the runtime, followed by field signature (see below)
| READYTORUN_FIXUP_MethodEntry | 0x13 | Method entrypoint or call, followed by method signature
| READYTORUN_FIXUP_MethodEntry_DefToken | 0x14 | Method entrypoint or call, followed by methoddef token (shortcut)
| READYTORUN_FIXUP_MethodEntry_RefToken | 0x15 | Method entrypoint or call, followed by methodref token (shortcut)
| READYTORUN_FIXUP_VirtualEntry | 0x16 | Virtual method entrypoint or call, followed by method signature
| READYTORUN_FIXUP_VirtualEntry_DefToken | 0x17 | Virtual method entrypoint or call, followed by methoddef token (shortcut)
| READYTORUN_FIXUP_VirtualEntry_RefToken | 0x18 | Virtual method entrypoint or call, followed by methodref token (shortcut)
| READYTORUN_FIXUP_VirtualEntry_Slot | 0x19 | Virtual method entrypoint or call, followed by typespec signature and slot
| READYTORUN_FIXUP_Helper | 0x1A | Helper call, followed by helper call id (see chapter 4 Helper calls)
| READYTORUN_FIXUP_StringHandle | 0x1B | String handle, followed by metadata string token
| READYTORUN_FIXUP_NewObject | 0x1C | New object helper, followed by typespec signature
| READYTORUN_FIXUP_NewArray | 0x1D | New array helper, followed by typespec signature
| READYTORUN_FIXUP_IsInstanceOf | 0x1E | isinst helper, followed by typespec signature
| READYTORUN_FIXUP_ChkCast | 0x1F | chkcast helper, followed by typespec signature
| READYTORUN_FIXUP_FieldAddress | 0x20 | Field address, followed by field signature
| READYTORUN_FIXUP_CctorTrigger | 0x21 | Static constructor trigger, followed by typespec signature
| READYTORUN_FIXUP_StaticBaseNonGC | 0x22 | Non-GC static base, followed by typespec signature
| READYTORUN_FIXUP_StaticBaseGC | 0x23 | GC static base, followed by typespec signature
| READYTORUN_FIXUP_ThreadStaticBaseNonGC | 0x24 | Non-GC thread-local static base, followed by typespec signature
| READYTORUN_FIXUP_ThreadStaticBaseGC | 0x25 | GC thread-local static base, followed by typespec signature
| READYTORUN_FIXUP_FieldBaseOffset | 0x26 | Starting offset of fields for given type, followed by typespec signature. Used to address base class fragility.
| READYTORUN_FIXUP_FieldOffset | 0x27 | Field offset, followed by field signature
| READYTORUN_FIXUP_TypeDictionary | 0x28 | Hidden dictionary argument for generic code, followed by typespec signature
| READYTORUN_FIXUP_MethodDictionary | 0x29 | Hidden dictionary argument for generic code, followed by method signature
| READYTORUN_FIXUP_Check_TypeLayout | 0x2A | Verification of type layout, followed by typespec and expected type layout descriptor
| READYTORUN_FIXUP_Check_FieldOffset | 0x2B | Verification of field offset, followed by field signature and expected field layout descriptor
| READYTORUN_FIXUP_DelegateCtor | 0x2C | Delegate constructor, followed by method signature
| READYTORUN_FIXUP_DeclaringTypeHandle | 0x2D | Dictionary lookup for method declaring type. Followed by the type signature.
| READYTORUN_FIXUP_IndirectPInvokeTarget | 0x2E | Target (indirect) of an inlined PInvoke. Followed by method signature.
| READYTORUN_FIXUP_PInvokeTarget | 0x2F | Target of an inlined PInvoke. Followed by method signature.
| READYTORUN_FIXUP_Check_InstructionSetSupport | 0x30 | Specify the instruction sets that must be supported/unsupported to use the R2R code associated with the fixup.
| READYTORUN_FIXUP_Verify_FieldOffset | 0x31 | Generate a runtime check to ensure that the field offset matches between compile and runtime. Unlike CheckFieldOffset, this will generate a runtime exception on failure instead of silently dropping the method
| READYTORUN_FIXUP_Verify_TypeLayout | 0x32 | Generate a runtime check to ensure that the field offset matches between compile and runtime. Unlike CheckFieldOffset, this will generate a runtime exception on failure instead of silently dropping the method
| READYTORUN_FIXUP_Check_VirtualFunctionOverride | 0x33 | Generate a runtime check to ensure that virtual function resolution has equivalent behavior at runtime as at compile time. If not equivalent, code will not be used. See [Virtual override signatures](virtual-override-signatures) for details of the signature used.
| READYTORUN_FIXUP_Verify_VirtualFunctionOverride | 0x34 | Generate a runtime check to ensure that virtual function resolution has equivalent behavior at runtime as at compile time. If not equivalent, generate runtime failure. See [Virtual override signatures](virtual-override-signatures) for details of the signature used.
| READYTORUN_FIXUP_Check_IL_Body | 0x35 | Check to see if an IL method is defined the same at runtime as at compile time. A failed match will cause code not to be used. See[IL Body signatures](il-body-signatures) for details.
| READYTORUN_FIXUP_Verify_IL_Body | 0x36 | Verify an IL body is defined the same at compile time and runtime. A failed match will cause a hard runtime failure. See[IL Body signatures](il-body-signatures) for details.
| READYTORUN_FIXUP_ModuleOverride | 0x80 | When or-ed to the fixup ID, the fixup byte in the signature is followed by an encoded uint with assemblyref index, either within the MSIL metadata of the master context module for the signature or within the manifest metadata R2R header table (used in cases inlining brings in references to assemblies not seen in the input MSIL).
| ReadyToRunFixupKind | Value | Description
|:------------------------------------------------|------:|:-----------
| READYTORUN_FIXUP_ThisObjDictionaryLookup | 0x07 | Generic lookup using `this`; followed by the type signature and by the method signature
| READYTORUN_FIXUP_TypeDictionaryLookup | 0x08 | Type-based generic lookup for methods on instantiated types; followed by the typespec signature
| READYTORUN_FIXUP_MethodDictionaryLookup | 0x09 | Generic method lookup; followed by the method spec signature
| READYTORUN_FIXUP_TypeHandle | 0x10 | Pointer uniquely identifying the type to the runtime, followed by typespec signature (see ECMA-335)
| READYTORUN_FIXUP_MethodHandle | 0x11 | Pointer uniquely identifying the method to the runtime, followed by method signature (see below)
| READYTORUN_FIXUP_FieldHandle | 0x12 | Pointer uniquely identifying the field to the runtime, followed by field signature (see below)
| READYTORUN_FIXUP_MethodEntry | 0x13 | Method entrypoint or call, followed by method signature
| READYTORUN_FIXUP_MethodEntry_DefToken | 0x14 | Method entrypoint or call, followed by methoddef token (shortcut)
| READYTORUN_FIXUP_MethodEntry_RefToken | 0x15 | Method entrypoint or call, followed by methodref token (shortcut)
| READYTORUN_FIXUP_VirtualEntry | 0x16 | Virtual method entrypoint or call, followed by method signature
| READYTORUN_FIXUP_VirtualEntry_DefToken | 0x17 | Virtual method entrypoint or call, followed by methoddef token (shortcut)
| READYTORUN_FIXUP_VirtualEntry_RefToken | 0x18 | Virtual method entrypoint or call, followed by methodref token (shortcut)
| READYTORUN_FIXUP_VirtualEntry_Slot | 0x19 | Virtual method entrypoint or call, followed by typespec signature and slot
| READYTORUN_FIXUP_Helper | 0x1A | Helper call, followed by helper call id (see chapter 4 Helper calls)
| READYTORUN_FIXUP_StringHandle | 0x1B | String handle, followed by metadata string token
| READYTORUN_FIXUP_NewObject | 0x1C | New object helper, followed by typespec signature
| READYTORUN_FIXUP_NewArray | 0x1D | New array helper, followed by typespec signature
| READYTORUN_FIXUP_IsInstanceOf | 0x1E | isinst helper, followed by typespec signature
| READYTORUN_FIXUP_ChkCast | 0x1F | chkcast helper, followed by typespec signature
| READYTORUN_FIXUP_FieldAddress | 0x20 | Field address, followed by field signature
| READYTORUN_FIXUP_CctorTrigger | 0x21 | Static constructor trigger, followed by typespec signature
| READYTORUN_FIXUP_StaticBaseNonGC | 0x22 | Non-GC static base, followed by typespec signature
| READYTORUN_FIXUP_StaticBaseGC | 0x23 | GC static base, followed by typespec signature
| READYTORUN_FIXUP_ThreadStaticBaseNonGC | 0x24 | Non-GC thread-local static base, followed by typespec signature
| READYTORUN_FIXUP_ThreadStaticBaseGC | 0x25 | GC thread-local static base, followed by typespec signature
| READYTORUN_FIXUP_FieldBaseOffset | 0x26 | Starting offset of fields for given type, followed by typespec signature. Used to address base class fragility.
| READYTORUN_FIXUP_FieldOffset | 0x27 | Field offset, followed by field signature
| READYTORUN_FIXUP_TypeDictionary | 0x28 | Hidden dictionary argument for generic code, followed by typespec signature
| READYTORUN_FIXUP_MethodDictionary | 0x29 | Hidden dictionary argument for generic code, followed by method signature
| READYTORUN_FIXUP_Check_TypeLayout | 0x2A | Verification of type layout, followed by typespec and expected type layout descriptor
| READYTORUN_FIXUP_Check_FieldOffset | 0x2B | Verification of field offset, followed by field signature and expected field layout descriptor
| READYTORUN_FIXUP_DelegateCtor | 0x2C | Delegate constructor, followed by method signature
| READYTORUN_FIXUP_DeclaringTypeHandle | 0x2D | Dictionary lookup for method declaring type. Followed by the type signature.
| READYTORUN_FIXUP_IndirectPInvokeTarget | 0x2E | Target (indirect) of an inlined PInvoke. Followed by method signature.
| READYTORUN_FIXUP_PInvokeTarget | 0x2F | Target of an inlined PInvoke. Followed by method signature.
| READYTORUN_FIXUP_Check_InstructionSetSupport | 0x30 | Specify the instruction sets that must be supported/unsupported to use the R2R code associated with the fixup.
| READYTORUN_FIXUP_Verify_FieldOffset | 0x31 | Generate a runtime check to ensure that the field offset matches between compile and runtime. Unlike CheckFieldOffset, this will generate a runtime exception on failure instead of silently dropping the method
| READYTORUN_FIXUP_Verify_TypeLayout | 0x32 | Generate a runtime check to ensure that the field offset matches between compile and runtime. Unlike CheckFieldOffset, this will generate a runtime exception on failure instead of silently dropping the method
| READYTORUN_FIXUP_Check_VirtualFunctionOverride | 0x33 | Generate a runtime check to ensure that virtual function resolution has equivalent behavior at runtime as at compile time. If not equivalent, code will not be used. See [Virtual override signatures](virtual-override-signatures) for details of the signature used.
| READYTORUN_FIXUP_Verify_VirtualFunctionOverride | 0x34 | Generate a runtime check to ensure that virtual function resolution has equivalent behavior at runtime as at compile time. If not equivalent, generate runtime failure. See [Virtual override signatures](virtual-override-signatures) for details of the signature used.
| READYTORUN_FIXUP_Check_IL_Body | 0x35 | Check to see if an IL method is defined the same at runtime as at compile time. A failed match will cause code not to be used. See[IL Body signatures](il-body-signatures) for details.
| READYTORUN_FIXUP_Verify_IL_Body | 0x36 | Verify an IL body is defined the same at compile time and runtime. A failed match will cause a hard runtime failure. See[IL Body signatures](il-body-signatures) for details.
| READYTORUN_FIXUP_ContinuationLayout | 0x37 | Layout of an async method continuation type, followed by typespec signature
| READYTORUN_FIXUP_ResumptionStubEntryPoint | 0x38 | Entry point of an async method resumption stub
| READYTORUN_FIXUP_ModuleOverride | 0x80 | When or-ed to the fixup ID, the fixup byte in the signature is followed by an encoded uint with assemblyref index, either within the MSIL metadata of the master context module for the signature or within the manifest metadata R2R header table (used in cases inlining brings in references to assemblies not seen in the input MSIL).

#### Method Signatures

Expand All @@ -301,6 +303,7 @@ token, and additional data determined by the flags.
| READYTORUN_METHOD_SIG_Constrained | 0x20 | Constrained type for method resolution. Typespec appended as additional data.
| READYTORUN_METHOD_SIG_OwnerType | 0x40 | Method type. Typespec appended as additional data.
| READYTORUN_METHOD_SIG_UpdateContext | 0x80 | If set, update the module which is used to parse tokens before performing any token processing. A uint index into the modules table immediately follows the flags
| READYTORUN_METHOD_SIG_AsyncVariant | 0x100 | If set, the method signature refers to the runtime-async variant of the method.

#### Field Signatures

Expand Down
3 changes: 3 additions & 0 deletions eng/pipelines/coreclr/crossgen2.yml
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,11 @@ extends:
buildConfig: Release
platforms:
- linux_x64
- linux_arm64
# - osx_x64 Not included to reduce pressure on osx_x64 machines
- osx_arm64
- windows_x64
- windows_arm64
jobParameters:
testGroup: innerloop
buildArgs: -s clr+libs+libs.tests
Expand Down
8 changes: 8 additions & 0 deletions src/coreclr/inc/corinfo.h
Original file line number Diff line number Diff line change
Expand Up @@ -593,10 +593,18 @@ enum CorInfoHelpFunc
CORINFO_HELP_VALIDATE_INDIRECT_CALL, // CFG: Validate function pointer
CORINFO_HELP_DISPATCH_INDIRECT_CALL, // CFG: Validate and dispatch to pointer

// Helpers for runtime async (see System.Runtime.CompilerServices.AsyncHelpers)
CORINFO_HELP_ALLOC_CONTINUATION,
CORINFO_HELP_ALLOC_CONTINUATION_METHOD,
CORINFO_HELP_ALLOC_CONTINUATION_CLASS,

CORINFO_HELP_ASYNC_CAPTURE_CONTEXTS,
CORINFO_HELP_ASYNC_RESTORE_CONTEXTS,
CORINFO_HELP_ASYNC_CAPTURE_EXECUTION_CONTEXT,
CORINFO_HELP_ASYNC_RESTORE_EXECUTION_CONTEXT,
CORINFO_HELP_ASYNC_RESTORE_CONTEXTS_ON_SUSPENSION,
CORINFO_HELP_ASYNC_CAPTURE_CONTINUATION_CONTEXT,

CORINFO_HELP_COUNT,
};

Expand Down
7 changes: 7 additions & 0 deletions src/coreclr/inc/jithelpers.h
Original file line number Diff line number Diff line change
Expand Up @@ -356,6 +356,13 @@
DYNAMICJITHELPER(CORINFO_HELP_ALLOC_CONTINUATION_METHOD, NULL, METHOD__ASYNC_HELPERS__ALLOC_CONTINUATION_METHOD)
DYNAMICJITHELPER(CORINFO_HELP_ALLOC_CONTINUATION_CLASS, NULL, METHOD__ASYNC_HELPERS__ALLOC_CONTINUATION_CLASS)

DYNAMICJITHELPER(CORINFO_HELP_ASYNC_CAPTURE_CONTEXTS, NULL, METHOD__ASYNC_HELPERS__CAPTURE_CONTEXTS)
DYNAMICJITHELPER(CORINFO_HELP_ASYNC_RESTORE_CONTEXTS, NULL, METHOD__ASYNC_HELPERS__RESTORE_CONTEXTS)
DYNAMICJITHELPER(CORINFO_HELP_ASYNC_CAPTURE_EXECUTION_CONTEXT, NULL, METHOD__ASYNC_HELPERS__CAPTURE_EXECUTION_CONTEXT)
DYNAMICJITHELPER(CORINFO_HELP_ASYNC_RESTORE_EXECUTION_CONTEXT, NULL, METHOD__ASYNC_HELPERS__RESTORE_EXECUTION_CONTEXT)
DYNAMICJITHELPER(CORINFO_HELP_ASYNC_RESTORE_CONTEXTS_ON_SUSPENSION, NULL, METHOD__ASYNC_HELPERS__RESTORE_CONTEXTS_ON_SUSPENSION)
DYNAMICJITHELPER(CORINFO_HELP_ASYNC_CAPTURE_CONTINUATION_CONTEXT, NULL, METHOD__ASYNC_HELPERS__CAPTURE_CONTINUATION_CONTEXT)

#undef JITHELPER
#undef DYNAMICJITHELPER
#undef JITHELPER
Expand Down
17 changes: 13 additions & 4 deletions src/coreclr/inc/readytorun.h
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,7 @@ enum ReadyToRunMethodSigFlags
READYTORUN_METHOD_SIG_Constrained = 0x20,
READYTORUN_METHOD_SIG_OwnerType = 0x40,
READYTORUN_METHOD_SIG_UpdateContext = 0x80,
READYTORUN_METHOD_SIG_AsyncVariant = 0x100,
};

enum ReadyToRunFieldSigFlags
Expand Down Expand Up @@ -298,6 +299,7 @@ enum ReadyToRunFixupKind
READYTORUN_FIXUP_Check_IL_Body = 0x35, /* Check to see if an IL method is defined the same at runtime as at compile time. A failed match will cause code not to be used. */
READYTORUN_FIXUP_Verify_IL_Body = 0x36, /* Verify an IL body is defined the same at compile time and runtime. A failed match will cause a hard runtime failure. */
READYTORUN_FIXUP_Continuation_Layout = 0x37, /* Layout of an async method continuation type */
READYTORUN_FIXUP_ResumptionStubEntryPoint = 0x38, /* Entry point of an async method resumption stub */

READYTORUN_FIXUP_ModuleOverride = 0x80, /* followed by sig-encoded UInt with assemblyref index into either the assemblyref table of the MSIL metadata of the master context module for the signature or */
/* into the extra assemblyref table in the manifest metadata R2R header table (used in cases inlining brings in references to assemblies not seen in the MSIL). */
Expand Down Expand Up @@ -469,12 +471,19 @@ enum ReadyToRunHelper

READYTORUN_HELPER_GetCurrentManagedThreadId = 0x112,

READYTORUN_HELPER_AllocContinuation = 0x113,
READYTORUN_HELPER_AllocContinuationClass = 0x114,
READYTORUN_HELPER_AllocContinuationMethod = 0x115,

READYTORUN_HELPER_InitClass = 0x116,
READYTORUN_HELPER_InitInstClass = 0x117,

// Helpers for runtime async (see System.Runtime.CompilerServices.AsyncHelpers)
READYTORUN_HELPER_AllocContinuation = 0x120,
READYTORUN_HELPER_AllocContinuationClass = 0x121,
READYTORUN_HELPER_AllocContinuationMethod = 0x122,
READYTORUN_HELPER_AsyncCaptureContexts = 0x123,
READYTORUN_HELPER_AsyncRestoreContexts = 0x124,
READYTORUN_HELPER_AsyncCaptureExecutionContext = 0x125,
READYTORUN_HELPER_AsyncRestoreExecutionContext = 0x126,
READYTORUN_HELPER_AsyncRestoreContextsOnSuspension = 0x127,
READYTORUN_HELPER_AsyncCaptureContinuationContext = 0x128,
};

#include "readytoruninstructionset.h"
Expand Down
Loading
Loading