Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 1a30a88

Browse files
authored
Merge branch 'release/9.0-staging' into backport/pr-110762-to-release/9.0-staging
2 parents ece65e4 + f8df617 commit 1a30a88

File tree

53 files changed

+1452
-431
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+1452
-431
lines changed

NuGet.config

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,11 @@
99
<clear />
1010
<!--Begin: Package sources managed by Dependency Flow automation. Do not edit the sources below.-->
1111
<!-- Begin: Package sources from dotnet-emsdk -->
12-
<add key="darc-pub-dotnet-emsdk-cd2146c" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-emsdk-cd2146c9/nuget/v3/index.json" />
13-
<add key="darc-pub-dotnet-emsdk-cd2146c-3" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-emsdk-cd2146c9-3/nuget/v3/index.json" />
14-
<add key="darc-pub-dotnet-emsdk-cd2146c-2" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-emsdk-cd2146c9-2/nuget/v3/index.json" />
15-
<add key="darc-pub-dotnet-emsdk-cd2146c-1" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-emsdk-cd2146c9-1/nuget/v3/index.json" />
1612
<add key="darc-pub-dotnet-emsdk-5a19723" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-emsdk-5a197234/nuget/v3/index.json" />
13+
<add key="darc-pub-dotnet-emsdk-5a19723-1" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-emsdk-5a197234-1/nuget/v3/index.json" />
1714
<!-- End: Package sources from dotnet-emsdk -->
1815
<!-- Begin: Package sources from dotnet-sdk -->
19-
<add key="darc-pub-dotnet-sdk-cbec38b" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-sdk-cbec38b1/nuget/v3/index.json" />
16+
<add key="darc-pub-dotnet-sdk-a345a00" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-sdk-a345a003/nuget/v3/index.json" />
2017
<!-- End: Package sources from dotnet-sdk -->
2118
<!--End: Package sources managed by Dependency Flow automation. Do not edit the sources above.-->
2219
<!--

eng/Version.Details.xml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -54,14 +54,14 @@
5454
<Sha>803d8598f98fb4efd94604b32627ee9407f246db</Sha>
5555
<SourceBuild RepoName="command-line-api" ManagedOnly="true" />
5656
</Dependency>
57-
<Dependency Name="Microsoft.DotNet.Cecil" Version="0.11.5-alpha.24602.1">
57+
<Dependency Name="Microsoft.DotNet.Cecil" Version="0.11.5-alpha.24620.1">
5858
<Uri>https://github.com/dotnet/cecil</Uri>
59-
<Sha>72791f7604750fb8af9249b94318547c5f1d6683</Sha>
59+
<Sha>c2cde417237f6dea0a04cc796fa1b4cad66996a6</Sha>
6060
</Dependency>
6161
<!-- Intermediate is necessary for source build. -->
62-
<Dependency Name="Microsoft.SourceBuild.Intermediate.cecil" Version="0.11.5-alpha.24602.1">
62+
<Dependency Name="Microsoft.SourceBuild.Intermediate.cecil" Version="0.11.5-alpha.24620.1">
6363
<Uri>https://github.com/dotnet/cecil</Uri>
64-
<Sha>72791f7604750fb8af9249b94318547c5f1d6683</Sha>
64+
<Sha>c2cde417237f6dea0a04cc796fa1b4cad66996a6</Sha>
6565
<SourceBuild RepoName="cecil" ManagedOnly="true" />
6666
</Dependency>
6767
<Dependency Name="Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport" Version="9.0.1-servicing.24571.2">
@@ -79,9 +79,9 @@
7979
<SourceBuild RepoName="emsdk" ManagedOnly="true" />
8080
</Dependency>
8181
<!-- Intermediate is necessary for source build. -->
82-
<Dependency Name="Microsoft.SourceBuild.Intermediate.source-build-reference-packages" Version="9.0.0-alpha.1.24568.3">
82+
<Dependency Name="Microsoft.SourceBuild.Intermediate.source-build-reference-packages" Version="9.0.0-alpha.1.24619.1">
8383
<Uri>https://github.com/dotnet/source-build-reference-packages</Uri>
84-
<Sha>a3776f67d97bd5d9ada92122330454b284bfe915</Sha>
84+
<Sha>e2b1d16fd66540b3a5813ec0ac1fd166688c3e0a</Sha>
8585
<SourceBuild RepoName="source-build-reference-packages" ManagedOnly="true" />
8686
</Dependency>
8787
<!-- Intermediate is necessary for source build. -->
@@ -388,12 +388,12 @@
388388
</Dependency>
389389
<Dependency Name="Microsoft.DotNet.ApiCompat.Task" Version="9.0.102">
390390
<Uri>https://github.com/dotnet/sdk</Uri>
391-
<Sha>cbec38b13edc53f701225f8f087fb5a2dbfd3679</Sha>
391+
<Sha>a345a00343aa14a693aec75a3d56fc07e99e517f</Sha>
392392
</Dependency>
393393
<!-- Intermediate is necessary for source build. -->
394-
<Dependency Name="Microsoft.SourceBuild.Intermediate.sdk" Version="9.0.102-servicing.24579.1">
394+
<Dependency Name="Microsoft.SourceBuild.Intermediate.sdk" Version="9.0.102-servicing.24610.2">
395395
<Uri>https://github.com/dotnet/sdk</Uri>
396-
<Sha>cbec38b13edc53f701225f8f087fb5a2dbfd3679</Sha>
396+
<Sha>a345a00343aa14a693aec75a3d56fc07e99e517f</Sha>
397397
<SourceBuild RepoName="sdk" ManagedOnly="true" />
398398
</Dependency>
399399
<Dependency Name="optimization.windows_nt-arm64.MIBC.Runtime" Version="1.0.0-prerelease.24462.2">

eng/Versions.props

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@
215215
<!-- Docs -->
216216
<MicrosoftPrivateIntellisenseVersion>9.0.0-preview-20241010.1</MicrosoftPrivateIntellisenseVersion>
217217
<!-- Mono Cecil -->
218-
<MicrosoftDotNetCecilVersion>0.11.5-alpha.24602.1</MicrosoftDotNetCecilVersion>
218+
<MicrosoftDotNetCecilVersion>0.11.5-alpha.24620.1</MicrosoftDotNetCecilVersion>
219219
<!-- ILCompiler -->
220220
<MicrosoftDotNetILCompilerVersion>9.0.0-rtm.24511.16</MicrosoftDotNetILCompilerVersion>
221221
<!-- ICU -->
@@ -262,7 +262,8 @@
262262
<MicrosoftExtensionsLoggingVersion>3.1.7</MicrosoftExtensionsLoggingVersion>
263263
<MicrosoftSymbolStoreVersion>1.0.406601</MicrosoftSymbolStoreVersion>
264264
<!-- sdk version, for testing workloads -->
265-
<SdkVersionForWorkloadTesting>$(MicrosoftDotNetApiCompatTaskVersion)</SdkVersionForWorkloadTesting>
265+
<!--<SdkVersionForWorkloadTesting>$(MicrosoftDotNetApiCompatTaskVersion)</SdkVersionForWorkloadTesting>-->
266+
<SdkVersionForWorkloadTesting>9.0.101</SdkVersionForWorkloadTesting>
266267
<runtimewinx64MicrosoftNETCoreRuntimeWasmNodeTransportPackageVersion>9.0.0-alpha.1.24175.1</runtimewinx64MicrosoftNETCoreRuntimeWasmNodeTransportPackageVersion>
267268
<EmsdkPackageVersion>$(MicrosoftNETRuntimeEmscriptenVersion)</EmsdkPackageVersion>
268269
<NodePackageVersion>$(runtimewinx64MicrosoftNETCoreRuntimeWasmNodeTransportPackageVersion)</NodePackageVersion>

src/coreclr/jit/block.cpp

Lines changed: 15 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -267,15 +267,21 @@ FlowEdge* Compiler::BlockPredsWithEH(BasicBlock* blk)
267267
// 'blk'.
268268
//
269269
// Arguments:
270-
// blk - Block to get dominance predecessors for.
270+
// blk - Block to get dominance predecessors for.
271271
//
272272
// Returns:
273-
// List of edges.
273+
// List of edges.
274274
//
275275
// Remarks:
276-
// Differs from BlockPredsWithEH only in the treatment of handler blocks;
277-
// enclosed blocks are never dominance preds, while all predecessors of
278-
// blocks in the 'try' are (currently only the first try block expected).
276+
// Differs from BlockPredsWithEH only in the treatment of handler blocks;
277+
// enclosed blocks are never dominance preds, while all predecessors of
278+
// blocks in the 'try' are (currently only the first try block expected).
279+
//
280+
// There are additional complications due to spurious flow because of
281+
// two-pass EH. In the flow graph with EH edges we can see entries into the
282+
// try from filters outside the try, to blocks other than the "try-begin"
283+
// block. Hence we need to consider the full set of blocks in the try region
284+
// when considering the block dominance preds.
279285
//
280286
FlowEdge* Compiler::BlockDominancePreds(BasicBlock* blk)
281287
{
@@ -284,44 +290,18 @@ FlowEdge* Compiler::BlockDominancePreds(BasicBlock* blk)
284290
return blk->bbPreds;
285291
}
286292

287-
EHblkDsc* ehblk = ehGetBlockHndDsc(blk);
288-
if (!ehblk->HasFinallyOrFaultHandler() || (ehblk->ebdHndBeg != blk))
289-
{
290-
return ehblk->ebdTryBeg->bbPreds;
291-
}
292-
293-
// Finally/fault handlers can be preceded by enclosing filters due to 2
294-
// pass EH, so add those and keep them cached.
295293
BlockToFlowEdgeMap* domPreds = GetDominancePreds();
296294
FlowEdge* res;
297295
if (domPreds->Lookup(blk, &res))
298296
{
299297
return res;
300298
}
301299

302-
res = ehblk->ebdTryBeg->bbPreds;
303-
if (ehblk->HasFinallyOrFaultHandler() && (ehblk->ebdHndBeg == blk))
300+
EHblkDsc* ehblk = ehGetBlockHndDsc(blk);
301+
res = BlockPredsWithEH(blk);
302+
for (BasicBlock* predBlk : ehblk->ebdTryBeg->PredBlocks())
304303
{
305-
// block is a finally or fault handler; all enclosing filters are predecessors
306-
unsigned enclosing = ehblk->ebdEnclosingTryIndex;
307-
while (enclosing != EHblkDsc::NO_ENCLOSING_INDEX)
308-
{
309-
EHblkDsc* enclosingDsc = ehGetDsc(enclosing);
310-
if (enclosingDsc->HasFilter())
311-
{
312-
for (BasicBlock* filterBlk = enclosingDsc->ebdFilter; filterBlk != enclosingDsc->ebdHndBeg;
313-
filterBlk = filterBlk->Next())
314-
{
315-
res = new (this, CMK_FlowEdge) FlowEdge(filterBlk, blk, res);
316-
317-
assert(filterBlk->VisitEHEnclosedHandlerSecondPassSuccs(this, [blk](BasicBlock* succ) {
318-
return succ == blk ? BasicBlockVisit::Abort : BasicBlockVisit::Continue;
319-
}) == BasicBlockVisit::Abort);
320-
}
321-
}
322-
323-
enclosing = enclosingDsc->ebdEnclosingTryIndex;
324-
}
304+
res = new (this, CMK_FlowEdge) FlowEdge(predBlk, blk, res);
325305
}
326306

327307
domPreds->Set(blk, res);

src/coreclr/nativeaot/Runtime.Base/src/System/Runtime/CachedInterfaceDispatch.cs

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -82,28 +82,57 @@ private static IntPtr RhResolveDispatch(object pObject, MethodTable* interfaceTy
8282
}
8383

8484
[RuntimeExport("RhResolveDispatchOnType")]
85-
private static IntPtr RhResolveDispatchOnType(MethodTable* pInstanceType, MethodTable* pInterfaceType, ushort slot, MethodTable** ppGenericContext)
85+
private static IntPtr RhResolveDispatchOnType(MethodTable* pInstanceType, MethodTable* pInterfaceType, ushort slot)
8686
{
8787
return DispatchResolve.FindInterfaceMethodImplementationTarget(pInstanceType,
8888
pInterfaceType,
8989
slot,
90+
flags: default,
91+
ppGenericContext: null);
92+
}
93+
94+
[RuntimeExport("RhResolveStaticDispatchOnType")]
95+
private static IntPtr RhResolveStaticDispatchOnType(MethodTable* pInstanceType, MethodTable* pInterfaceType, ushort slot, MethodTable** ppGenericContext)
96+
{
97+
return DispatchResolve.FindInterfaceMethodImplementationTarget(pInstanceType,
98+
pInterfaceType,
99+
slot,
100+
DispatchResolve.ResolveFlags.Static,
90101
ppGenericContext);
91102
}
92103

104+
[RuntimeExport("RhResolveDynamicInterfaceCastableDispatchOnType")]
105+
private static IntPtr RhResolveDynamicInterfaceCastableDispatchOnType(MethodTable* pInstanceType, MethodTable* pInterfaceType, ushort slot, MethodTable** ppGenericContext)
106+
{
107+
IntPtr result = DispatchResolve.FindInterfaceMethodImplementationTarget(pInstanceType,
108+
pInterfaceType,
109+
slot,
110+
DispatchResolve.ResolveFlags.IDynamicInterfaceCastable,
111+
ppGenericContext);
112+
113+
if ((result & (nint)DispatchMapCodePointerFlags.RequiresInstantiatingThunkFlag) != 0)
114+
{
115+
result &= ~(nint)DispatchMapCodePointerFlags.RequiresInstantiatingThunkFlag;
116+
}
117+
else
118+
{
119+
*ppGenericContext = null;
120+
}
121+
122+
return result;
123+
}
124+
93125
private static unsafe IntPtr RhResolveDispatchWorker(object pObject, void* cell, ref DispatchCellInfo cellInfo)
94126
{
95127
// Type of object we're dispatching on.
96128
MethodTable* pInstanceType = pObject.GetMethodTable();
97129

98130
if (cellInfo.CellType == DispatchCellType.InterfaceAndSlot)
99131
{
100-
// Type whose DispatchMap is used. Usually the same as the above but for types which implement IDynamicInterfaceCastable
101-
// we may repeat this process with an alternate type.
102-
MethodTable* pResolvingInstanceType = pInstanceType;
103-
104-
IntPtr pTargetCode = DispatchResolve.FindInterfaceMethodImplementationTarget(pResolvingInstanceType,
132+
IntPtr pTargetCode = DispatchResolve.FindInterfaceMethodImplementationTarget(pInstanceType,
105133
cellInfo.InterfaceType,
106134
cellInfo.InterfaceSlot,
135+
flags: default,
107136
ppGenericContext: null);
108137
if (pTargetCode == IntPtr.Zero && pInstanceType->IsIDynamicInterfaceCastable)
109138
{

0 commit comments

Comments
 (0)