Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Commit 614966d

Browse files
committed
Fix CoreCLR build for changes in shared partition
1 parent 80416dc commit 614966d

File tree

7 files changed

+84
-165
lines changed

7 files changed

+84
-165
lines changed

src/System.Private.CoreLib/shared/System/Runtime/CompilerServices/AsyncMethodBuilder.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
1212

1313
using System.Diagnostics;
14+
using System.Diagnostics.Tracing;
1415
using System.Reflection;
1516
using System.Runtime.ExceptionServices;
1617
#if FEATURE_COMINTEROP

src/System.Private.CoreLib/shared/System/Runtime/CompilerServices/TaskAwaiter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ private static Action OutputWaitEtwEvents(Task task, Action continuation)
318318
{
319319
if (Task.s_asyncDebuggingEnabled)
320320
{
321-
Task.RemoveFromActiveTasks(innerTask.Id);
321+
Task.RemoveFromActiveTasks(innerTask);
322322
}
323323

324324
TplEtwProvider innerEtwLog = TplEtwProvider.Log;

src/System.Private.CoreLib/src/System/Threading/Tasks/AsyncCausalityTracer.cs

Lines changed: 15 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -14,37 +14,6 @@
1414

1515
namespace System.Threading.Tasks
1616
{
17-
internal enum CausalityTraceLevel
18-
{
19-
Required = WFD.CausalityTraceLevel.Required,
20-
Important = WFD.CausalityTraceLevel.Important,
21-
Verbose = WFD.CausalityTraceLevel.Verbose
22-
}
23-
24-
internal enum AsyncCausalityStatus
25-
{
26-
Canceled = WFD.AsyncCausalityStatus.Canceled,
27-
Completed = WFD.AsyncCausalityStatus.Completed,
28-
Error = WFD.AsyncCausalityStatus.Error,
29-
Started = WFD.AsyncCausalityStatus.Started
30-
}
31-
32-
internal enum CausalityRelation
33-
{
34-
AssignDelegate = WFD.CausalityRelation.AssignDelegate,
35-
Join = WFD.CausalityRelation.Join,
36-
Choice = WFD.CausalityRelation.Choice,
37-
Cancel = WFD.CausalityRelation.Cancel,
38-
Error = WFD.CausalityRelation.Error
39-
}
40-
41-
internal enum CausalitySynchronousWork
42-
{
43-
CompletionNotification = WFD.CausalitySynchronousWork.CompletionNotification,
44-
ProgressNotification = WFD.CausalitySynchronousWork.ProgressNotification,
45-
Execution = WFD.CausalitySynchronousWork.Execution
46-
}
47-
4817
internal static class AsyncCausalityTracer
4918
{
5019
internal static void EnableToETW(bool enabled)
@@ -129,14 +98,15 @@ private static void TracingStatusChangedHandler(object sender, WFD.TracingStatus
12998
// The TraceXXX methods should be called only if LoggingOn property returned true
13099
//
131100
[MethodImplAttribute(MethodImplOptions.NoInlining)] // Tracking is slow path. Disable inlining for it.
132-
internal static void TraceOperationCreation(CausalityTraceLevel traceLevel, int taskId, string operationName, ulong relatedContext)
101+
internal static void TraceOperationCreation(Task task, string operationName)
133102
{
134103
try
135104
{
105+
int taskId = task.Id;
136106
if ((f_LoggingOn & Loggers.ETW) != 0)
137-
TplEtwProvider.Log.TraceOperationBegin(taskId, operationName, (long)relatedContext);
107+
TplEtwProvider.Log.TraceOperationBegin(taskId, operationName, RelatedContext: 0);
138108
if ((f_LoggingOn & Loggers.CausalityTracer) != 0)
139-
s_TracerFactory.TraceOperationCreation((WFD.CausalityTraceLevel)traceLevel, s_CausalitySource, s_PlatformId, GetOperationId((uint)taskId), operationName, relatedContext);
109+
s_TracerFactory.TraceOperationCreation(WFD.CausalityTraceLevel.Required, s_CausalitySource, s_PlatformId, GetOperationId((uint)taskId), operationName, relatedContext: 0);
140110
}
141111
catch (Exception ex)
142112
{
@@ -146,14 +116,15 @@ internal static void TraceOperationCreation(CausalityTraceLevel traceLevel, int
146116
}
147117

148118
[MethodImplAttribute(MethodImplOptions.NoInlining)]
149-
internal static void TraceOperationCompletion(CausalityTraceLevel traceLevel, int taskId, AsyncCausalityStatus status)
119+
internal static void TraceOperationCompletion(Task task, AsyncCausalityStatus status)
150120
{
151121
try
152122
{
123+
int taskId = task.Id;
153124
if ((f_LoggingOn & Loggers.ETW) != 0)
154125
TplEtwProvider.Log.TraceOperationEnd(taskId, status);
155126
if ((f_LoggingOn & Loggers.CausalityTracer) != 0)
156-
s_TracerFactory.TraceOperationCompletion((WFD.CausalityTraceLevel)traceLevel, s_CausalitySource, s_PlatformId, GetOperationId((uint)taskId), (WFD.AsyncCausalityStatus)status);
127+
s_TracerFactory.TraceOperationCompletion(WFD.CausalityTraceLevel.Required, s_CausalitySource, s_PlatformId, GetOperationId((uint)taskId), (WFD.AsyncCausalityStatus)status);
157128
}
158129
catch (Exception ex)
159130
{
@@ -163,14 +134,15 @@ internal static void TraceOperationCompletion(CausalityTraceLevel traceLevel, in
163134
}
164135

165136
[MethodImplAttribute(MethodImplOptions.NoInlining)]
166-
internal static void TraceOperationRelation(CausalityTraceLevel traceLevel, int taskId, CausalityRelation relation)
137+
internal static void TraceOperationRelation(Task task, CausalityRelation relation)
167138
{
168139
try
169140
{
141+
int taskId = task.Id;
170142
if ((f_LoggingOn & Loggers.ETW) != 0)
171143
TplEtwProvider.Log.TraceOperationRelation(taskId, relation);
172144
if ((f_LoggingOn & Loggers.CausalityTracer) != 0)
173-
s_TracerFactory.TraceOperationRelation((WFD.CausalityTraceLevel)traceLevel, s_CausalitySource, s_PlatformId, GetOperationId((uint)taskId), (WFD.CausalityRelation)relation);
145+
s_TracerFactory.TraceOperationRelation(WFD.CausalityTraceLevel.Important, s_CausalitySource, s_PlatformId, GetOperationId((uint)taskId), (WFD.CausalityRelation)relation);
174146
}
175147
catch (Exception ex)
176148
{
@@ -180,14 +152,15 @@ internal static void TraceOperationRelation(CausalityTraceLevel traceLevel, int
180152
}
181153

182154
[MethodImplAttribute(MethodImplOptions.NoInlining)]
183-
internal static void TraceSynchronousWorkStart(CausalityTraceLevel traceLevel, int taskId, CausalitySynchronousWork work)
155+
internal static void TraceSynchronousWorkStart(Task task, CausalitySynchronousWork work)
184156
{
185157
try
186158
{
159+
int taskId = task.Id;
187160
if ((f_LoggingOn & Loggers.ETW) != 0)
188161
TplEtwProvider.Log.TraceSynchronousWorkBegin(taskId, work);
189162
if ((f_LoggingOn & Loggers.CausalityTracer) != 0)
190-
s_TracerFactory.TraceSynchronousWorkStart((WFD.CausalityTraceLevel)traceLevel, s_CausalitySource, s_PlatformId, GetOperationId((uint)taskId), (WFD.CausalitySynchronousWork)work);
163+
s_TracerFactory.TraceSynchronousWorkStart(WFD.CausalityTraceLevel.Required, s_CausalitySource, s_PlatformId, GetOperationId((uint)taskId), (WFD.CausalitySynchronousWork)work);
191164
}
192165
catch (Exception ex)
193166
{
@@ -197,14 +170,14 @@ internal static void TraceSynchronousWorkStart(CausalityTraceLevel traceLevel, i
197170
}
198171

199172
[MethodImplAttribute(MethodImplOptions.NoInlining)]
200-
internal static void TraceSynchronousWorkCompletion(CausalityTraceLevel traceLevel, CausalitySynchronousWork work)
173+
internal static void TraceSynchronousWorkCompletion(CausalitySynchronousWork work)
201174
{
202175
try
203176
{
204177
if ((f_LoggingOn & Loggers.ETW) != 0)
205178
TplEtwProvider.Log.TraceSynchronousWorkEnd(work);
206179
if ((f_LoggingOn & Loggers.CausalityTracer) != 0)
207-
s_TracerFactory.TraceSynchronousWorkCompletion((WFD.CausalityTraceLevel)traceLevel, s_CausalitySource, (WFD.CausalitySynchronousWork)work);
180+
s_TracerFactory.TraceSynchronousWorkCompletion(WFD.CausalityTraceLevel.Required, s_CausalitySource, (WFD.CausalitySynchronousWork)work);
208181
}
209182
catch (Exception ex)
210183
{

src/System.Private.CoreLib/src/System/Threading/Tasks/FutureFactory.cs

Lines changed: 17 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -552,12 +552,11 @@ private static void FromAsyncCoreLogic(
552552
else
553553
{
554554
if (AsyncCausalityTracer.LoggingOn)
555-
AsyncCausalityTracer.TraceOperationCompletion(CausalityTraceLevel.Required, promise.Id, AsyncCausalityStatus.Completed);
555+
AsyncCausalityTracer.TraceOperationCompletion(promise, AsyncCausalityStatus.Completed);
556556

557557
if (Task.s_asyncDebuggingEnabled)
558-
{
559-
Task.RemoveFromActiveTasks(promise.Id);
560-
}
558+
Task.RemoveFromActiveTasks(promise);
559+
561560
if (requiresSynchronization)
562561
{
563562
promise.TrySetResult(result);
@@ -675,12 +674,10 @@ internal static Task<TResult> FromAsyncImpl(
675674
Task<TResult> promise = new Task<TResult>((object)null, creationOptions);
676675

677676
if (AsyncCausalityTracer.LoggingOn)
678-
AsyncCausalityTracer.TraceOperationCreation(CausalityTraceLevel.Required, promise.Id, "TaskFactory.FromAsync", 0);
677+
AsyncCausalityTracer.TraceOperationCreation(promise, "TaskFactory.FromAsync");
679678

680679
if (Task.s_asyncDebuggingEnabled)
681-
{
682680
Task.AddToActiveTasks(promise);
683-
}
684681

685682
// Just specify this task as detached. No matter what happens, we want endMethod
686683
// to be called -- even if the parent is canceled. So we don't want to flow
@@ -693,12 +690,10 @@ internal static Task<TResult> FromAsyncImpl(
693690
default, TaskCreationOptions.None, InternalTaskOptions.None, null);
694691

695692
if (AsyncCausalityTracer.LoggingOn)
696-
AsyncCausalityTracer.TraceOperationCreation(CausalityTraceLevel.Verbose, t.Id, "TaskFactory.FromAsync Callback", 0);
693+
AsyncCausalityTracer.TraceOperationCreation(t, "TaskFactory.FromAsync Callback");
697694

698695
if (Task.s_asyncDebuggingEnabled)
699-
{
700696
Task.AddToActiveTasks(t);
701-
}
702697

703698
if (asyncResult.IsCompleted)
704699
{
@@ -794,12 +789,10 @@ internal static Task<TResult> FromAsyncImpl(Func<AsyncCallback, object, IAsyncRe
794789
Task<TResult> promise = new Task<TResult>(state, creationOptions);
795790

796791
if (AsyncCausalityTracer.LoggingOn)
797-
AsyncCausalityTracer.TraceOperationCreation(CausalityTraceLevel.Required, promise.Id, "TaskFactory.FromAsync: " + beginMethod.Method.Name, 0);
792+
AsyncCausalityTracer.TraceOperationCreation(promise, "TaskFactory.FromAsync: " + beginMethod.Method.Name);
798793

799794
if (Task.s_asyncDebuggingEnabled)
800-
{
801795
Task.AddToActiveTasks(promise);
802-
}
803796

804797
try
805798
{
@@ -819,12 +812,10 @@ internal static Task<TResult> FromAsyncImpl(Func<AsyncCallback, object, IAsyncRe
819812
catch
820813
{
821814
if (AsyncCausalityTracer.LoggingOn)
822-
AsyncCausalityTracer.TraceOperationCompletion(CausalityTraceLevel.Required, promise.Id, AsyncCausalityStatus.Error);
815+
AsyncCausalityTracer.TraceOperationCompletion(promise, AsyncCausalityStatus.Error);
823816

824817
if (Task.s_asyncDebuggingEnabled)
825-
{
826-
Task.RemoveFromActiveTasks(promise.Id);
827-
}
818+
Task.RemoveFromActiveTasks(promise);
828819

829820
// Make sure we don't leave promise "dangling".
830821
promise.TrySetResult(default);
@@ -916,12 +907,10 @@ internal static Task<TResult> FromAsyncImpl<TArg1>(Func<TArg1, AsyncCallback, ob
916907
Task<TResult> promise = new Task<TResult>(state, creationOptions);
917908

918909
if (AsyncCausalityTracer.LoggingOn)
919-
AsyncCausalityTracer.TraceOperationCreation(CausalityTraceLevel.Required, promise.Id, "TaskFactory.FromAsync: " + beginMethod.Method.Name, 0);
910+
AsyncCausalityTracer.TraceOperationCreation(promise, "TaskFactory.FromAsync: " + beginMethod.Method.Name);
920911

921912
if (Task.s_asyncDebuggingEnabled)
922-
{
923913
Task.AddToActiveTasks(promise);
924-
}
925914

926915
try
927916
{
@@ -940,12 +929,10 @@ internal static Task<TResult> FromAsyncImpl<TArg1>(Func<TArg1, AsyncCallback, ob
940929
catch
941930
{
942931
if (AsyncCausalityTracer.LoggingOn)
943-
AsyncCausalityTracer.TraceOperationCompletion(CausalityTraceLevel.Required, promise.Id, AsyncCausalityStatus.Error);
932+
AsyncCausalityTracer.TraceOperationCompletion(promise, AsyncCausalityStatus.Error);
944933

945934
if (Task.s_asyncDebuggingEnabled)
946-
{
947-
Task.RemoveFromActiveTasks(promise.Id);
948-
}
935+
Task.RemoveFromActiveTasks(promise);
949936

950937
// Make sure we don't leave promise "dangling".
951938
promise.TrySetResult(default);
@@ -1045,12 +1032,10 @@ internal static Task<TResult> FromAsyncImpl<TArg1, TArg2>(Func<TArg1, TArg2, Asy
10451032
Task<TResult> promise = new Task<TResult>(state, creationOptions);
10461033

10471034
if (AsyncCausalityTracer.LoggingOn)
1048-
AsyncCausalityTracer.TraceOperationCreation(CausalityTraceLevel.Required, promise.Id, "TaskFactory.FromAsync: " + beginMethod.Method.Name, 0);
1035+
AsyncCausalityTracer.TraceOperationCreation(promise, "TaskFactory.FromAsync: " + beginMethod.Method.Name);
10491036

10501037
if (Task.s_asyncDebuggingEnabled)
1051-
{
10521038
Task.AddToActiveTasks(promise);
1053-
}
10541039

10551040
try
10561041
{
@@ -1069,12 +1054,10 @@ internal static Task<TResult> FromAsyncImpl<TArg1, TArg2>(Func<TArg1, TArg2, Asy
10691054
catch
10701055
{
10711056
if (AsyncCausalityTracer.LoggingOn)
1072-
AsyncCausalityTracer.TraceOperationCompletion(CausalityTraceLevel.Required, promise.Id, AsyncCausalityStatus.Error);
1057+
AsyncCausalityTracer.TraceOperationCompletion(promise, AsyncCausalityStatus.Error);
10731058

10741059
if (Task.s_asyncDebuggingEnabled)
1075-
{
1076-
Task.RemoveFromActiveTasks(promise.Id);
1077-
}
1060+
Task.RemoveFromActiveTasks(promise);
10781061

10791062
// Make sure we don't leave promise "dangling".
10801063
promise.TrySetResult(default);
@@ -1182,12 +1165,10 @@ internal static Task<TResult> FromAsyncImpl<TArg1, TArg2, TArg3>(Func<TArg1, TAr
11821165
Task<TResult> promise = new Task<TResult>(state, creationOptions);
11831166

11841167
if (AsyncCausalityTracer.LoggingOn)
1185-
AsyncCausalityTracer.TraceOperationCreation(CausalityTraceLevel.Required, promise.Id, "TaskFactory.FromAsync: " + beginMethod.Method.Name, 0);
1168+
AsyncCausalityTracer.TraceOperationCreation(promise, "TaskFactory.FromAsync: " + beginMethod.Method.Name);
11861169

11871170
if (Task.s_asyncDebuggingEnabled)
1188-
{
11891171
Task.AddToActiveTasks(promise);
1190-
}
11911172

11921173
try
11931174
{
@@ -1206,12 +1187,10 @@ internal static Task<TResult> FromAsyncImpl<TArg1, TArg2, TArg3>(Func<TArg1, TAr
12061187
catch
12071188
{
12081189
if (AsyncCausalityTracer.LoggingOn)
1209-
AsyncCausalityTracer.TraceOperationCompletion(CausalityTraceLevel.Required, promise.Id, AsyncCausalityStatus.Error);
1190+
AsyncCausalityTracer.TraceOperationCompletion(promise, AsyncCausalityStatus.Error);
12101191

12111192
if (Task.s_asyncDebuggingEnabled)
1212-
{
1213-
Task.RemoveFromActiveTasks(promise.Id);
1214-
}
1193+
Task.RemoveFromActiveTasks(promise);
12151194

12161195
// Make sure we don't leave the promise "dangling".
12171196
promise.TrySetResult(default);

0 commit comments

Comments
 (0)