Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/corert.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/System.Private.CoreLib/shared/System/Threading/Tasks/ValueTask.cs')
-rw-r--r--src/System.Private.CoreLib/shared/System/Threading/Tasks/ValueTask.cs9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/System.Private.CoreLib/shared/System/Threading/Tasks/ValueTask.cs b/src/System.Private.CoreLib/shared/System/Threading/Tasks/ValueTask.cs
index 384e4a8ab..4ccf0f8a4 100644
--- a/src/System.Private.CoreLib/shared/System/Threading/Tasks/ValueTask.cs
+++ b/src/System.Private.CoreLib/shared/System/Threading/Tasks/ValueTask.cs
@@ -116,6 +116,15 @@ namespace System.Threading.Tasks
// and the hash code we generate in GetHashCode.
_task ?? AsyncTaskMethodBuilder<TResult>.GetTaskForResult(_result);
+ internal Task<TResult> AsTaskExpectNonNull() =>
+ // Return the task if we were constructed from one, otherwise manufacture one.
+ // Unlike AsTask(), this method is called only when we expect _task to be non-null,
+ // and thus we don't want GetTaskForResult inlined.
+ _task ?? GetTaskForResultNoInlining();
+
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ private Task<TResult> GetTaskForResultNoInlining() => AsyncTaskMethodBuilder<TResult>.GetTaskForResult(_result);
+
/// <summary>Gets whether the <see cref="ValueTask{TResult}"/> represents a completed operation.</summary>
public bool IsCompleted => _task == null || _task.IsCompleted;