Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
e7f430a
WIP
jakobbotsch Jul 15, 2025
3b85c95
JIT: Preparatory refactoring to support multiple defs per single node
jakobbotsch Jul 15, 2025
fba620a
Mitigate some TP diffs
jakobbotsch Jul 16, 2025
3939f24
Nit
jakobbotsch Jul 16, 2025
2e151fe
Merge branch 'multiple-defs-per-node' into restore-sync-context-field
jakobbotsch Jul 16, 2025
5fec55f
WIP
jakobbotsch Jul 16, 2025
b9483e7
Attempt at jump threading optimization
jakobbotsch Jul 16, 2025
8301152
Drop jump threading opt for now
jakobbotsch Jul 16, 2025
4a88fe8
Run jit-format
jakobbotsch Jul 16, 2025
c2b3e88
Clean up
jakobbotsch Jul 17, 2025
f9e62e1
Fix SPMI
jakobbotsch Jul 17, 2025
41158a3
Merge branch 'main' of github.com:dotnet/runtime into restore-sync-co…
jakobbotsch Jul 17, 2025
576d138
Fix build
jakobbotsch Jul 17, 2025
39549be
JIT: Fix unique successors in `BBswtDesc` in runtime async
jakobbotsch Jul 17, 2025
a38902b
Clean up
jakobbotsch Jul 17, 2025
f91aa6a
Expand test
jakobbotsch Jul 17, 2025
c786545
Nit
jakobbotsch Jul 17, 2025
aa31bfb
Fix release build
jakobbotsch Jul 17, 2025
9e3a686
Fix dangling pointer bug
jakobbotsch Jul 17, 2025
c78ca39
Update JIT-EE GUID
jakobbotsch Jul 17, 2025
24cd099
Redisable runtime async
jakobbotsch Jul 17, 2025
f40c255
Require AsyncSuspendedIndicator to be present when HasSuspensionIndic…
jakobbotsch Jul 21, 2025
2c073ab
Update async comments
jakobbotsch Jul 21, 2025
0741517
Assert NumPosts
jakobbotsch Jul 21, 2025
8066afb
Add another test that we capture the sync context from before the call
jakobbotsch Jul 21, 2025
ddd7584
Use sync context from before call as continuation context
jakobbotsch Jul 21, 2025
ce2f834
Reset continuation context handling for tailcalls:
jakobbotsch Jul 21, 2025
0405154
Add some more comments
jakobbotsch Jul 23, 2025
b1329a7
Run jit-format
jakobbotsch Jul 23, 2025
6510e37
Make SyncContext parameter the first one
jakobbotsch Jul 23, 2025
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
Prev Previous commit
Next Next commit
Run jit-format
  • Loading branch information
jakobbotsch committed Jul 23, 2025
commit b1329a70331f75a8e565aaec545b1d8141db1239
24 changes: 12 additions & 12 deletions src/coreclr/jit/gentree.h
Original file line number Diff line number Diff line change
Expand Up @@ -4364,31 +4364,31 @@ struct AsyncCallInfo
//
// The breakdown of the handling is as follows:
//
// - For custom awaitables there is no special handling of `SynchronizationContext` or `TaskScheduler`. All the handling
// that exists is custom implemented by the user. In this case "ContinuationContextHandling == None" and
// - For custom awaitables there is no special handling of `SynchronizationContext` or `TaskScheduler`. All the
// handling that exists is custom implemented by the user. In this case "ContinuationContextHandling == None" and
// "SaveAndRestoreSynchronizationContextField == false".
//
// - For custom awaitables there _is_ special handling of `ExecutionContext`: when the custom awaitable suspends, the
// JIT ensures that the `ExecutionContext` will be captured on suspension and restored when the continuation is running.
// This is represented by "ExecutionContextHandling == AsyncSaveAndRestore".
// - For custom awaitables there _is_ special handling of `ExecutionContext`: when the custom awaitable suspends,
// the JIT ensures that the `ExecutionContext` will be captured on suspension and restored when the continuation is
// running. This is represented by "ExecutionContextHandling == AsyncSaveAndRestore".
//
// - For task awaits there is special handling of `SynchronizationContext` and `TaskScheduler` in multiple ways:
//
// * The JIT ensures that `Thread.CurrentThread._synchronizationContext` is saved and restored around synchronously
// finishing calls. This is represented by "SaveAndRestoreSynchronizationContextField == true".
// * The JIT ensures that `Thread.CurrentThread._synchronizationContext` is saved and restored around
// synchronously finishing calls. This is represented by "SaveAndRestoreSynchronizationContextField == true".
//
// * The JIT/runtime/BCL ensure that when the callee suspends, the caller will eventually be resumed on the
// `SynchronizationContext`/`TaskScheduler` present before the call started, depending on the configuration of the
// task await by the user. This resumption can be inlined if the `SynchronizationContext` is current when the
// continuation is about to run, and otherwise will be posted to it. This is represented by
// "ContinuationContextHandling == ContinueOnCapturedContext/ContinueOnThreadPool".
//
// * When the callee suspends restoration of `Thread.CurrentThread._synchronizationContext` is left up to the custom
// implementation of the `SynchronizationContext`, it must not be done by the JIT.
// * When the callee suspends restoration of `Thread.CurrentThread._synchronizationContext` is left up to the
// custom implementation of the `SynchronizationContext`, it must not be done by the JIT.
//
// - For task awaits the runtime/BCL ensure that `Thread.CurrentThread._executionContext` is captured before the call
// and restored after it. This happens consistently regardless of whether the callee finishes synchronously or not. This
// is represented by "ExecutionContextHandling == SaveAndRestore".
// - For task awaits the runtime/BCL ensure that `Thread.CurrentThread._executionContext` is captured before the
// call and restored after it. This happens consistently regardless of whether the callee finishes synchronously or
// not. This is represented by "ExecutionContextHandling == SaveAndRestore".
//
ExecutionContextHandling ExecutionContextHandling = ExecutionContextHandling::None;
ContinuationContextHandling ContinuationContextHandling = ContinuationContextHandling::None;
Expand Down
Loading