Skip to content

Cache continuation used for runtime async callable value task thunks#127973

Merged
jakobbotsch merged 13 commits into
dotnet:mainfrom
jakobbotsch:cache-value-task-source-continuation
May 18, 2026
Merged

Cache continuation used for runtime async callable value task thunks#127973
jakobbotsch merged 13 commits into
dotnet:mainfrom
jakobbotsch:cache-value-task-source-continuation

Conversation

@jakobbotsch
Copy link
Copy Markdown
Member

ValueTask backed by IValueTaskSource can suspend without allocating. However, runtime async did not support this when calling a ValueTask returning method through a runtime async callable thunk. In that case we would always allocate in the case where the ValueTask suspended.

This adds a custom ValueTaskContinuation that replaces the existing ValueTaskSourceNotifier mechanism. We now cache a ValueTaskContinuation instance and reuse it if possible whenever suspending for a ValueTask.

The same approach could be used to avoid allocations for runtime async callable thunks for task-returning methods.

cc @VSadov

`ValueTask` backed by `IValueTaskSource` can suspend without allocating.
However, runtime async did not support this when calling a `ValueTask`
returning method through a runtime async callable thunk. In that case we
would always allocate in the case where the `ValueTask` suspended.

This adds a custom `ValueTaskContinuation` that replaces the existing
`ValueTaskSourceNotifier` mechanism. We now cache a
`ValueTaskContinuation` instance and reuse it if possible whenever
suspending for a `ValueTask`.

The same approach could be used to avoid allocations for runtime async
callable thunks for task-returning methods.
Copilot AI review requested due to automatic review settings May 8, 2026 21:41
@dotnet-policy-service
Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @agocke
See info in area-owners.md if you want to be subscribed.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates CoreCLR’s runtime-async callable thunk path for ValueTask/ValueTask<T> so that suspending on ValueTask backed by IValueTaskSource can reuse a cached continuation object rather than allocating per-suspension, and removes the older ValueTaskSourceNotifier / AsTaskOrNotifier mechanism.

Changes:

  • Introduces AsyncHelpers.TransparentAwaitValueTask* and a ValueTaskContinuation type that integrates with runtime-async suspension/resumption and is cached in TLS for reuse.
  • Removes ValueTask.AsTaskOrNotifier and the ValueTaskSourceNotifier helper type from ValueTask.
  • Adjusts VM continuation type handling to distinguish continuation subtypes that do have metadata (managed subclasses) vs the dynamically-created metadata-less ones, including DAC support.

Reviewed changes

Copilot reviewed 15 out of 15 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
src/libraries/System.Private.CoreLib/src/System/Threading/Tasks/ValueTask.cs Removes AsTaskOrNotifier and deletes ValueTaskSourceNotifier.
src/coreclr/vm/vars.hpp Adds global g_singletonContinuationEEClass declaration for continuation metadata detection.
src/coreclr/vm/vars.cpp Adds global g_singletonContinuationEEClass definition.
src/coreclr/vm/typehandle.inl Avoids “upcasting” continuations that have real metadata.
src/coreclr/vm/typehandle.h Adds TypeHandle::IsContinuationWithMetadata().
src/coreclr/vm/typehandle.cpp Implements TypeHandle::IsContinuationWithMetadata() and relaxes class-object allocation restriction for metadata continuations.
src/coreclr/vm/methodtable.h Adds MethodTable::IsContinuationWithMetadata() and relaxes asserts/preconditions for metadata continuations.
src/coreclr/vm/methodtable.cpp Implements MethodTable::IsContinuationWithMetadata() and updates continuation-related special-casing.
src/coreclr/vm/corelib.h Removes binder entries for ValueTask.AsTaskOrNotifier; adds binder entries for TransparentAwaitValueTask*.
src/coreclr/vm/asyncthunks.cpp Emits thunk IL that tail-awaits via TransparentAwaitValueTask* instead of AsTaskOrNotifier + TransparentAwait.
src/coreclr/vm/asynccontinuations.cpp Moves singleton continuation EEClass storage to global g_singletonContinuationEEClass.
src/coreclr/tools/Common/TypeSystem/IL/Stubs/AsyncThunks.cs Updates managed type-system thunk emission to call TransparentAwaitValueTask* and TailAwait.
src/coreclr/System.Private.CoreLib/src/System/Runtime/CompilerServices/AsyncHelpers.CoreCLR.cs Adds ValueTaskContinuation, TLS caching, and TransparentAwaitValueTask*; updates suspension handling to use it.
src/coreclr/inc/dacvars.h Exposes g_singletonContinuationEEClass to DAC.
src/coreclr/debug/daccess/dacdbiimpl.cpp Updates continuation canonical-MT validity logic to account for metadata continuations.

Comment thread src/coreclr/vm/methodtable.h Outdated
Comment thread src/coreclr/vm/methodtable.h Outdated
Comment thread src/coreclr/vm/asyncthunks.cpp
@VSadov
Copy link
Copy Markdown
Member

VSadov commented May 9, 2026

Nice! Instead of caching and reusing ValueTaskSourceNotifier, we now cache/reuse the entire head continuation.

A scenario that awaits in a loop some ValueTaskSource wrapper (like reading chunks from a pipe) can run allocation-free.

@jakobbotsch
Copy link
Copy Markdown
Member Author

jakobbotsch commented May 10, 2026

I think I will use the same caching scheme as in #55955, which in addition to the TLS cached object also has a per-core cache.

Also, we probably need to introduce a runtime async mechanism similar to PoolingAsyncValueTaskMethodBuilder -- e.g. apply [PoolContinuations] on a runtime async method and it would cache continuations for that method following that scheme too.

Copilot AI review requested due to automatic review settings May 11, 2026 14:07
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 21 out of 21 changed files in this pull request and generated 3 comments.

Comments suppressed due to low confidence (1)

src/coreclr/System.Private.CoreLib/src/System/Runtime/CompilerServices/AsyncHelpers.CoreCLR.cs:1

  • The XML doc block still describes awaiting ValueTask, but TransparentAwait now accepts Task only, while ValueTask awaiting is handled by TransparentAwaitValueTask* above. Please update/move this comment so TransparentAwait’s docs describe only the Task scenario, and place the ValueTask-specific explanation on TransparentAwaitValueTask / TransparentAwaitValueTaskOfT.
// Licensed to the .NET Foundation under one or more agreements.

Comment thread src/coreclr/vm/methodtable.cpp
@jakobbotsch
Copy link
Copy Markdown
Member Author

I think I will use the same caching scheme as in #55955, which in addition to the TLS cached object also has a per-core cache.

I think I will do that separately. Right now the caching is essentially free since we can store it in the runtime async TLS that we already needed to access. If we introduce the per-core cache we will be paying more when the TLS cache doesn't hit, so I want to make sure I have some benchmarks for this.

@VSadov
Copy link
Copy Markdown
Member

VSadov commented May 11, 2026

I think I will do that separately

Per thread caching of 1 head continuation is probably the most effective as we reduce necessary allocations for that scenario to none.

Additional caching may cost more while having less impact. It makes sense to look at that separately.

Copilot AI review requested due to automatic review settings May 12, 2026 20:29
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 23 out of 23 changed files in this pull request and generated 1 comment.

@jakobbotsch jakobbotsch marked this pull request as ready for review May 12, 2026 22:05
Copilot AI review requested due to automatic review settings May 12, 2026 22:05
@jakobbotsch jakobbotsch requested review from VSadov and lateralusX May 12, 2026 22:10
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 23 out of 23 changed files in this pull request and generated 2 comments.

@jakobbotsch
Copy link
Copy Markdown
Member Author

Also some decent size improvements for NativeAOT since the thunks no longer need a suspension/resumption point:

BaseSize DiffSize Delta Percent Improved Name
16,852,992 16,716,288 -136,704 -0.811% System.Linq.AsyncEnumerable.Tests.exe
115,198,464 115,079,168 -119,296 -0.104% System.Text.Json.SourceGeneration.Roslyn4.4.Tests.exe
10,291,200 10,282,496 -8,704 -0.085% System.Threading.Channels.Tests.exe
12,003,328 11,993,088 -10,240 -0.085% System.IO.Tests.exe
19,561,472 19,545,088 -16,384 -0.084% System.IO.Compression.Tests.exe
14,579,712 14,568,960 -10,752 -0.074% System.Net.WebClient.Tests.exe
20,044,288 20,029,952 -14,336 -0.072% System.Formats.Tar.Tests.exe
45,556,224 45,524,992 -31,232 -0.069% System.Security.Cryptography.Tests.exe
21,715,456 21,700,608 -14,848 -0.068% System.IO.FileSystem.Tests.exe
18,455,552 18,443,264 -12,288 -0.067% System.Threading.Tasks.Parallel.Tests.exe
18,526,208 18,513,920 -12,288 -0.066% System.IO.MemoryMappedFiles.Tests.exe
10,067,456 10,060,800 -6,656 -0.066% System.Net.ServerSentEvents.Tests.exe
17,734,144 17,722,368 -11,776 -0.066% System.Threading.Tasks.Extensions.Tests.exe
15,771,648 15,761,408 -10,240 -0.065% System.Windows.Extensions.Tests.exe
19,296,768 19,284,480 -12,288 -0.064% System.IO.Pipes.Tests.exe
11,286,016 11,278,848 -7,168 -0.064% System.IO.Compression.Brotli.Tests.exe
19,570,176 19,557,888 -12,288 -0.063% System.Diagnostics.Process.Tests.exe
20,273,664 20,260,864 -12,800 -0.063% System.Threading.Tasks.Dataflow.Tests.exe
25,897,984 25,881,600 -16,384 -0.063% System.Text.Json.SourceGeneration.Roslyn3.11.Tests.exe
11,343,360 11,336,192 -7,168 -0.063% System.Net.WebSockets.Tests.exe
10,675,200 10,668,544 -6,656 -0.062% System.IO.Pipelines.Tests.exe
13,250,560 13,242,368 -8,192 -0.062% System.IO.Packaging.Tests.exe
20,009,984 19,997,696 -12,288 -0.061% System.Net.WebSockets.Client.Tests.exe
31,281,664 31,263,232 -18,432 -0.059% System.Net.Http.Functional.Tests.exe
20,942,848 20,930,560 -12,288 -0.059% System.Net.Quic.Functional.Tests.exe
17,798,656 17,788,416 -10,240 -0.058% System.Formats.Tar.Manual.Tests.exe
23,142,912 23,129,600 -13,312 -0.058% System.Threading.Tasks.Tests.exe
18,947,584 18,936,832 -10,752 -0.057% System.Runtime.Caching.Tests.exe
17,168,896 17,159,168 -9,728 -0.057% System.Runtime.Serialization.Formatters.Disabled.Tests.exe
17,439,232 17,429,504 -9,728 -0.056% System.Diagnostics.TraceSource.Tests.exe
17,223,168 17,213,952 -9,216 -0.054% System.Net.ServicePoint.Tests.exe
18,070,528 18,060,800 -9,728 -0.054% System.Console.Tests.exe
17,975,296 17,965,568 -9,728 -0.054% System.Threading.ThreadPool.Tests.exe
18,137,600 18,127,872 -9,728 -0.054% System.Diagnostics.TextWriterTraceListener.Tests.exe
18,380,800 18,371,072 -9,728 -0.053% System.Threading.Tests.exe
17,296,896 17,287,680 -9,216 -0.053% System.Runtime.InteropServices.RuntimeInformation.Tests.exe
17,438,720 17,429,504 -9,216 -0.053% System.Net.Ping.Functional.Tests.exe
17,244,160 17,234,944 -9,216 -0.053% System.Runtime.InvariantTimezone.Tests.exe
17,290,240 17,281,024 -9,216 -0.053% System.Threading.Overlapped.Tests.exe
17,363,968 17,354,752 -9,216 -0.053% Microsoft.Win32.SystemEvents.Tests.exe
17,306,112 17,296,896 -9,216 -0.053% System.Security.Claims.Tests.exe
18,594,816 18,585,088 -9,728 -0.052% ComInterfaceGenerator.Tests.exe
18,692,608 18,682,880 -9,728 -0.052% Microsoft.Extensions.Logging.Console.Tests.exe
17,578,496 17,569,280 -9,216 -0.052% MetricOuterLoop1.Tests.exe
17,573,888 17,564,672 -9,216 -0.052% MetricOuterLoop.Tests.exe
19,688,960 19,678,720 -10,240 -0.052% System.Net.Http.Unit.Tests.exe
17,975,296 17,966,080 -9,216 -0.051% System.Threading.ThreadPool.WindowsThreadPool.Tests.exe
28,039,168 28,024,832 -14,336 -0.051% System.Net.Security.Tests.exe
22,881,280 22,869,504 -11,776 -0.051% System.Net.Sockets.Tests.exe
19,059,200 19,049,472 -9,728 -0.051% System.Net.HttpListener.Tests.exe
18,040,832 18,031,616 -9,216 -0.051% Microsoft.Extensions.Diagnostics.Tests.exe
17,238,528 17,229,824 -8,704 -0.050% System.ComponentModel.EventBasedAsync.Tests.exe
17,369,088 17,360,384 -8,704 -0.050% System.Diagnostics.StackTrace.Tests.exe
18,496,512 18,487,296 -9,216 -0.050% Microsoft.Extensions.Hosting.Systemd.Tests.exe
17,320,448 17,311,744 -8,704 -0.050% System.Security.Principal.Windows.Tests.exe
17,337,344 17,328,640 -8,704 -0.050% System.Threading.Timer.Tests.exe
17,668,096 17,659,392 -8,704 -0.049% System.IO.FileSystem.Watcher.Tests.exe
17,624,576 17,615,872 -8,704 -0.049% System.Threading.Thread.Tests.exe
19,876,864 19,867,136 -9,728 -0.049% System.Text.Encoding.Tests.exe
17,670,656 17,661,952 -8,704 -0.049% System.Buffers.Tests.exe
19,401,216 19,392,000 -9,216 -0.048% System.Net.Primitives.Functional.Tests.exe
17,161,728 17,153,536 -8,192 -0.048% IcuAppLocal.Tests.exe
18,184,704 18,176,000 -8,704 -0.048% System.Text.Encoding.CodePages.Tests.exe
10,061,824 10,057,216 -4,608 -0.046% System.IO.Compression.ZipFile.Tests.exe
19,087,872 19,079,168 -8,704 -0.046% Microsoft.Extensions.Hosting.WindowsServices.Tests.exe
21,631,488 21,621,760 -9,728 -0.045% System.Data.OleDb.Tests.exe
20,581,376 20,572,160 -9,216 -0.045% System.Diagnostics.DiagnosticSource.Tests.exe
13,877,760 13,871,616 -6,144 -0.044% Microsoft.Extensions.Configuration.Functional.Tests.exe
19,752,960 19,744,256 -8,704 -0.044% System.Resources.ResourceManager.Tests.exe
20,748,800 20,739,584 -9,216 -0.044% System.Collections.Concurrent.Tests.exe
20,463,104 20,454,400 -8,704 -0.043% System.Reflection.Tests.exe
20,241,408 20,232,704 -8,704 -0.043% System.Runtime.InteropServices.Tests.exe
20,940,800 20,932,096 -8,704 -0.042% System.Runtime.Extensions.Tests.exe
12,425,728 12,420,608 -5,120 -0.041% System.Xml.Linq.SDMSample.Tests.exe
21,210,112 21,201,408 -8,704 -0.041% System.Net.Requests.Tests.exe
29,510,656 29,498,880 -11,776 -0.040% System.Net.Http.WinHttpHandler.Functional.Tests.exe
12,858,880 12,853,760 -5,120 -0.040% System.Xml.Schema.Extensions.Tests.exe
24,283,136 24,273,408 -9,728 -0.040% Microsoft.Extensions.Http.Tests.exe
14,142,464 14,136,832 -5,632 -0.040% System.DirectoryServices.Protocols.Tests.exe
10,599,424 10,595,328 -4,096 -0.039% Common.Tests.exe
9,264,128 9,260,544 -3,584 -0.039% Microsoft.Bcl.AsyncInterfaces.Tests.exe
14,903,808 14,898,176 -5,632 -0.038% System.Xml.Linq.Streaming.Tests.exe
13,953,536 13,948,416 -5,120 -0.037% Microsoft.Extensions.Configuration.Xml.Tests.exe
15,094,784 15,089,152 -5,632 -0.037% System.Security.Cryptography.Cng.Tests.exe
23,411,712 23,403,008 -8,704 -0.037% System.Memory.Tests.exe
27,287,040 27,277,312 -9,728 -0.036% Microsoft.Extensions.Hosting.Unit.Tests.exe
16,117,248 16,111,616 -5,632 -0.035% System.Data.Odbc.Tests.exe
26,646,528 26,637,312 -9,216 -0.035% Microsoft.Extensions.Logging.EventSource.Tests.exe
26,441,216 26,432,000 -9,216 -0.035% System.ComponentModel.TypeConverter.Tests.exe
16,525,312 16,519,680 -5,632 -0.034% System.Xml.Linq.Events.Tests.exe
16,778,752 16,773,120 -5,632 -0.034% System.Xml.Linq.Misc.Tests.exe
26,103,808 26,095,104 -8,704 -0.033% System.Globalization.Tests.exe
26,014,720 26,006,016 -8,704 -0.033% System.Globalization.Nls.Tests.exe
17,009,664 17,004,032 -5,632 -0.033% System.Xml.Linq.xNodeReader.Tests.exe
9,675,264 9,672,192 -3,072 -0.032% System.IO.UnmanagedMemoryStream.Tests.exe
15,048,192 15,043,584 -4,608 -0.031% System.Data.DataSetExtensions.Tests.exe
16,673,280 16,668,160 -5,120 -0.031% System.Xml.Linq.Properties.Tests.exe
11,599,360 11,595,776 -3,584 -0.031% System.Net.Http.Json.Unit.Tests.exe
17,065,984 17,060,864 -5,120 -0.030% System.Xml.Linq.xNodeBuilder.Tests.exe
20,819,456 20,813,312 -6,144 -0.030% System.Security.Cryptography.Csp.Tests.exe
17,123,840 17,118,720 -5,120 -0.030% System.Xml.Linq.TreeManipulation.Tests.exe
33,400,832 33,391,104 -9,728 -0.029% Microsoft.Bcl.Cryptography.Tests.exe
18,455,040 18,449,920 -5,120 -0.028% Microsoft.Extensions.Configuration.FileExtensions.Tests.exe
32,762,368 32,753,152 -9,216 -0.028% System.Linq.Expressions.Tests.exe
15,110,656 15,106,560 -4,096 -0.027% System.Drawing.Primitives.Tests.exe
18,381,312 18,376,704 -4,608 -0.025% Microsoft.Extensions.Primitives.Tests.exe
20,099,584 20,094,464 -5,120 -0.025% Microsoft.Extensions.Configuration.Json.Tests.exe
10,521,600 10,519,040 -2,560 -0.024% Microsoft.Extensions.Options.Tests.exe
16,973,824 16,977,920 +4,096 +0.024% System.Private.CoreLib.dll
20,038,656 20,034,048 -4,608 -0.023% Microsoft.Extensions.Configuration.UserSecrets.Tests.exe
19,972,096 19,967,488 -4,608 -0.023% Microsoft.Extensions.Logging.Tests.exe
9,351,168 9,349,120 -2,048 -0.022% System.IO.IsolatedStorage.Tests.exe
9,376,256 9,374,208 -2,048 -0.022% System.Net.Mail.Unit.Tests.exe
18,356,224 18,352,128 -4,096 -0.022% Microsoft.Extensions.FileProviders.Composite.Tests.exe
44,814,336 44,804,608 -9,728 -0.022% System.Runtime.Tests.exe
18,774,016 18,769,920 -4,096 -0.022% Microsoft.Extensions.FileProviders.Physical.Tests.exe
18,491,904 18,487,808 -4,096 -0.022% Microsoft.Extensions.Configuration.Tests.exe
9,346,560 9,344,512 -2,048 -0.022% Microsoft.Extensions.Diagnostics.Abstractions.Tests.exe
10,118,656 10,116,608 -2,048 -0.020% Microsoft.Extensions.Caching.Memory.Tests.exe
30,107,136 30,101,504 -5,632 -0.019% Microsoft.Extensions.DependencyModel.Tests.exe
10,508,288 10,506,240 -2,048 -0.019% System.Net.Http.WinHttpHandler.Unit.Tests.exe
8,563,200 8,561,664 -1,536 -0.018% System.Diagnostics.Contracts.Tests.exe
8,642,048 8,640,512 -1,536 -0.018% System.Net.WebHeaderCollection.Tests.exe
8,770,048 8,768,512 -1,536 -0.018% System.IO.FileSystem.DriveInfo.Tests.exe
12,285,952 12,283,904 -2,048 -0.017% System.Reflection.Metadata.Tests.exe
8,989,696 8,988,160 -1,536 -0.017% System.Net.Primitives.Pal.Tests.exe
33,161,216 33,155,584 -5,632 -0.017% System.Private.Xml.Tests.exe
9,454,080 9,452,544 -1,536 -0.016% Microsoft.Extensions.Logging.Testing.Tests.exe
9,630,720 9,629,184 -1,536 -0.016% System.Composition.Convention.Tests.exe
9,314,816 9,313,280 -1,536 -0.016% System.Net.Primitives.UnitTests.Tests.exe
11,484,160 11,482,624 -1,536 -0.013% System.IO.Ports.Tests.exe
8,601,600 8,600,576 -1,024 -0.012% Microsoft.Extensions.Hosting.Abstractions.Tests.exe
8,720,384 8,719,360 -1,024 -0.012% System.Private.Uri.Unit.Tests.exe
8,546,816 8,545,792 -1,024 -0.012% System.Runtime.CompilerServices.VisualC.Tests.exe
8,653,312 8,652,288 -1,024 -0.012% System.Globalization.CalendarsWithConfigSwitch.Tests.exe
8,836,608 8,835,584 -1,024 -0.012% System.Console.Manual.Tests.exe
9,364,480 9,363,456 -1,024 -0.011% System.Reflection.Context.Tests.exe
9,041,408 9,040,384 -1,024 -0.011% System.Net.NameResolution.Pal.Tests.exe
9,646,592 9,645,568 -1,024 -0.011% System.Private.Uri.Functional.Tests.exe
9,704,448 9,703,424 -1,024 -0.011% System.Text.RegularExpressions.Unit.Tests.exe
9,206,272 9,205,248 -1,024 -0.011% Microsoft.Extensions.Configuration.EnvironmentVariables.Tests.exe
9,004,032 9,003,008 -1,024 -0.011% System.Runtime.Serialization.Primitives.Tests.exe
9,056,256 9,055,232 -1,024 -0.011% Microsoft.Extensions.Configuration.CommandLine.Tests.exe
9,216,512 9,215,488 -1,024 -0.011% System.ServiceProcess.ServiceController.Tests.exe
9,539,584 9,538,560 -1,024 -0.011% System.IO.Hashing.Tests.exe
9,671,168 9,670,144 -1,024 -0.011% Microsoft.Extensions.Hosting.Functional.Tests.exe
4,940,288 4,939,776 -512 -0.010% coreclr.dll
10,935,808 10,934,784 -1,024 -0.009% System.Runtime.Intrinsics.Tests.exe
11,610,112 11,609,088 -1,024 -0.009% System.Resources.Extensions.Tests.exe
11,193,856 11,192,832 -1,024 -0.009% System.Text.Encodings.Web.Tests.exe
12,287,488 12,286,464 -1,024 -0.008% System.Net.NetworkInformation.Functional.Tests.exe
15,399,936 15,398,912 -1,024 -0.007% System.Globalization.Extensions.Nls.Tests.exe
15,399,936 15,398,912 -1,024 -0.007% System.Globalization.Extensions.Tests.exe
9,039,360 9,038,848 -512 -0.006% Microsoft.Extensions.FileSystemGlobbing.Tests.exe
8,558,080 8,557,568 -512 -0.006% System.Text.Encoding.Extensions.Tests.exe
8,704,512 8,704,000 -512 -0.006% System.Security.SecureString.Tests.exe
8,701,440 8,700,928 -512 -0.006% System.Security.Cryptography.ProtectedData.Tests.exe
8,688,128 8,687,616 -512 -0.006% System.Runtime.InteropServices.ComDisabled.Tests.exe
9,143,808 9,143,296 -512 -0.006% System.Security.AccessControl.Tests.exe
9,025,536 9,025,024 -512 -0.006% System.Reflection.TypeExtensions.Tests.exe
8,812,032 8,811,520 -512 -0.006% System.Resources.Reader.Tests.exe
9,083,392 9,082,880 -512 -0.006% System.ValueTuple.Tests.exe
8,606,208 8,605,696 -512 -0.006% System.Resources.Writer.Tests.exe
8,817,664 8,817,152 -512 -0.006% System.Web.HttpUtility.Tests.exe
8,863,232 8,862,720 -512 -0.006% System.Reflection.Extensions.Tests.exe
8,670,208 8,669,696 -512 -0.006% System.Runtime.Handles.Tests.exe
9,165,824 9,165,312 -512 -0.006% System.Globalization.Calendars.Tests.exe
8,543,744 8,543,232 -512 -0.006% System.IO.FileSystem.Primitives.Tests.exe
8,592,384 8,591,872 -512 -0.006% Microsoft.Bcl.Numerics.Tests.exe
8,952,832 8,952,320 -512 -0.006% Microsoft.Bcl.Memory.Tests.exe
8,717,312 8,716,800 -512 -0.006% System.Diagnostics.FileVersionInfo.Tests.exe
8,700,416 8,699,904 -512 -0.006% System.IO.FileSystem.Manual.Tests.exe
8,929,792 8,929,280 -512 -0.006% System.IO.Pipes.AccessControl.Tests.exe
8,624,128 8,623,616 -512 -0.006% System.Composition.Runtime.Tests.exe
9,108,992 9,108,480 -512 -0.006% System.IO.FileSystem.AccessControl.Tests.exe
8,559,104 8,558,592 -512 -0.006% System.Composition.AttributeModel.Tests.exe
8,759,296 8,758,784 -512 -0.006% Invariant.Tests.exe
8,547,840 8,547,328 -512 -0.006% System.ComponentModel.Tests.exe
9,161,728 9,161,216 -512 -0.006% System.ComponentModel.Primitives.Tests.exe
8,959,488 8,958,976 -512 -0.006% System.Threading.AccessControl.Tests.exe
8,991,232 8,990,720 -512 -0.006% Microsoft.Win32.Registry.Tests.exe
8,647,680 8,647,168 -512 -0.006% Microsoft.Win32.Registry.AccessControl.Tests.exe
8,549,376 8,548,864 -512 -0.006% System.Diagnostics.Tools.Tests.exe
8,664,576 8,664,064 -512 -0.006% Microsoft.Win32.Primitives.Tests.exe
9,750,016 9,749,504 -512 -0.005% System.Collections.Specialized.Tests.exe
22,340,608 22,339,584 -1,024 -0.005% System.Security.Cryptography.Pkcs.Tests.exe
9,852,928 9,852,416 -512 -0.005% System.Formats.Nrbf.Tests.exe
9,763,328 9,762,816 -512 -0.005% System.Formats.Asn1.Tests.exe
9,361,408 9,360,896 -512 -0.005% System.Security.Permissions.Tests.exe
11,048,448 11,047,936 -512 -0.005% System.Runtime.Numerics.Tests.exe
9,627,136 9,626,624 -512 -0.005% System.Diagnostics.EventLog.Tests.exe
18,779,136 18,778,112 -1,024 -0.005% System.Numerics.Vectors.Tests.exe
9,746,432 9,745,920 -512 -0.005% System.Threading.RateLimiting.Tests.exe
9,961,472 9,960,960 -512 -0.005% LibraryImportGenerator.Tests.exe
9,949,696 9,949,184 -512 -0.005% System.Collections.NonGeneric.Tests.exe
9,486,848 9,486,336 -512 -0.005% Microsoft.Extensions.Configuration.Ini.Tests.exe
13,553,664 13,554,176 +512 +0.004% crossgen2.exe
11,796,480 11,795,968 -512 -0.004% System.Security.Cryptography.Cose.Tests.exe
11,381,248 11,380,736 -512 -0.004% System.Net.Security.Unit.Tests.exe
15,545,856 15,545,344 -512 -0.003% System.Linq.Tests.exe
17,838,592 17,838,080 -512 -0.003% System.Collections.Tests.exe

Copilot AI review requested due to automatic review settings May 13, 2026 09:51
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 23 out of 23 changed files in this pull request and generated 2 comments.

@jakobbotsch jakobbotsch merged commit d9f57ab into dotnet:main May 18, 2026
155 of 157 checks passed
@jakobbotsch jakobbotsch deleted the cache-value-task-source-continuation branch May 18, 2026 07:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants