Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sfh fix tests #8

Merged
merged 339 commits into from
Jun 23, 2022
Merged
Changes from 1 commit
Commits
Show all changes
339 commits
Select commit Hold shift + click to select a range
6418252
Use the signature types when building ABI info (#70635)
SingleAccretion Jun 13, 2022
4277bc5
[wasm] Build WasmAppHost with UseAppHost=false (#70606)
radical Jun 13, 2022
025b763
JIT: Optimize expansion of indir cell addresses for CFG (#70491)
jakobbotsch Jun 13, 2022
15f1e1d
Handle mis-sized structs in XARCH `PUTARG_STK` codegen (#68611)
SingleAccretion Jun 13, 2022
59b2dd9
Improve distribution of CoseHeaderLabel hash codes (#70695)
GrabYourPitchforks Jun 13, 2022
fbae62d
Implement digest one shots for browser implementation
vcsjones Jun 14, 2022
a344441
[wasm] Don't use a fixed listening port for the proxy (#70681)
radical Jun 14, 2022
731c262
Fix SOS tests on 7.0 (#70677)
mikem8361 Jun 14, 2022
367193d
[wasm] Enable some previously failing WBT/AOT tests on windows (#70595)
radical Jun 14, 2022
20e5237
List other architectures and DOTNET_ROOT environment variables in dot…
elinor-fung Jun 14, 2022
e5acd4d
[mono] Remove dead code. (#70671)
rolfbjarne Jun 14, 2022
3bb45af
Avoid throwing Win32Exception from HTTP authentication (#70474)
filipnavara Jun 14, 2022
84f7cad
Fix usage of GSS_KRB5_CRED_NO_CI_FLAGS_X (#70447)
filipnavara Jun 14, 2022
a361f7f
Use IndexOf in WebUtility (#70700)
stephentoub Jun 14, 2022
4fc6287
Hoist the invariants out of multi-level nested loops (#68061)
kunalspathak Jun 14, 2022
b85f6b3
Delete GTF_ASSERTION_PROP_LONG (#70521)
SingleAccretion Jun 14, 2022
021dc5f
Convert exception help context parsing to managed (#70251)
huoyaoyuan Jun 14, 2022
1615e78
Delete tests for .NET Framework Xsltc.exe tool (#70706)
danmoseley Jun 14, 2022
89962a5
Reenable C4244 in repo (#70026)
AaronRobinsonMSFT Jun 14, 2022
8bb880d
Add SlidingWindow and FixedWindow to RateLimitPartition (#68782)
BrennanConroy Jun 14, 2022
20cb077
align GC memory load calculation on Linux with Docker and Kubernetes …
dennis-yemelyanov Jun 14, 2022
3428247
[wasm] Fix Debug configuration builds (#70683)
lambdageek Jun 14, 2022
fb9be0a
[wasm] Make runtime_is_initialized promise callbacks one-shot (#70694)
lambdageek Jun 14, 2022
261574b
Do not use ExecutableMemoryAllocator on 64 bit platforms if default b…
gbalykov Jun 14, 2022
56e58d3
[wasm][debugger] Implement get bytes from loaded_files using debugger…
thaystg Jun 14, 2022
978df67
Add doc on Unix temporary file security practice (#70585)
agocke Jun 14, 2022
0ca092e
ConfigurationBinder.Bind on virtual properties duplicates elements (#…
pedrobsaila Jun 14, 2022
042fdf4
Obsolete AssemblyName.CodeBase, AssemblyName.EscapedCodeBase (#70534)
buyaa-n Jun 14, 2022
c8654e7
JIT: Enable JitConsumeProfileForCasts by default (#69869)
EgorBo Jun 14, 2022
41ce20a
Fix AttributePresence in composite mode (#70737)
trylek Jun 15, 2022
6896e1b
Handle mis-sized structs in ARM/64 `PUTARG_SPLIT` codegen (#70249)
SingleAccretion Jun 15, 2022
42d76d3
Refactor how implicit byrefs are morphed (#70243)
SingleAccretion Jun 15, 2022
4501e39
Do not change `gtRetClsHnd` in `impNormStructVal` (#70699)
SingleAccretion Jun 15, 2022
010eb63
Support `PUTARG_STK(STRUCT LCL_VAR/LCL_FLD)` on ARM/64 (#70256)
SingleAccretion Jun 15, 2022
b9d9b0e
Support `PUTARG_STK(STRUCT LCL_VAR/LCL_FLD)` on x86/Unix x64 (#70702)
SingleAccretion Jun 15, 2022
344c792
Allow `TYP_STRUCT` `LCL_FLD` on the RHS of block copies (#70633)
SingleAccretion Jun 15, 2022
eeb0c15
Revert "Fix usage of GSS_KRB5_CRED_NO_CI_FLAGS_X (#70447)" (#70747)
wfurt Jun 15, 2022
1abd9a1
Add note about backward branch constraints to ECMA-335 augments (#70760)
jkotas Jun 15, 2022
e30570d
[NativeAOT] Enabling return address hijacking on ARM64 Windows (#70740)
VSadov Jun 15, 2022
cd60639
Fix value numbering of HWI loads (#70621)
SingleAccretion Jun 15, 2022
702c1ea
Small MsQuicStream refactorings (#70433)
rzikm Jun 15, 2022
53e52f2
Updating HWIntrinsicInfo::lookupId to not accelerate Vector256 APIs w…
tannergooding Jun 15, 2022
b3e606f
Dsiable CertificateValidationRemoteServer.ConnectWithRevocation_WithC…
rzikm Jun 15, 2022
e242424
NativeAOT Unlock assignability comparison in reflection-free (#70726)
kant2002 Jun 15, 2022
82a7ee4
[Mono] Fix C4018 round I (#70417)
fanyang-mono Jun 15, 2022
63bdb98
Fix race condition in LoaderAllocator::CompareExchangeValueInHandle (…
jkotas Jun 15, 2022
2f0a796
Enable redirection on arm64 (#70769)
VSadov Jun 15, 2022
f19d85b
Handle HW exceptions on Windows without redirection (#70428)
janvorli Jun 15, 2022
6a2727f
Predicate for valid Tracker Reference is inverted (#70709)
AaronRobinsonMSFT Jun 15, 2022
5810b02
JIT: Enable addressing modes for gc types (#70749)
EgorBo Jun 15, 2022
7198edb
JIT: Faster long->int overflow checks (#69865)
EgorBo Jun 15, 2022
06c7957
Update .net version for asp.net spmi collection script (#70778)
AndyAyersMS Jun 15, 2022
10288c9
Enable IlcTrimMetadata by default (#70201)
MichalStrehovsky Jun 15, 2022
4c6b53b
Remove GSS_KRB5_CRED_NO_CI_FLAGS_X code (#70772)
filipnavara Jun 15, 2022
1e97f7c
Make ConnectWithRevocation_StapledOcsp more resilient to being slow
bartonjs Jun 15, 2022
4e844e6
Upgrade SDK to Preview 5 (#70117)
agocke Jun 15, 2022
2ce8130
Find&replace FastInterlock* with Interlocked* (#70784)
jkotas Jun 15, 2022
446e5ad
JIT: rework optCanonicalizeLoop (#70792)
AndyAyersMS Jun 16, 2022
205b7ff
Avoid infinite loop in case of heap corruption (#70759)
cshung Jun 16, 2022
a7052ac
[wasm][debugger] Remove workaround to get pauseOnExceptions setting (…
thaystg Jun 16, 2022
24bbfbf
Add SubstitutionParser that uses XPath Navigator into NativeAOT (#64671)
tlakollo Jun 16, 2022
3c33b42
Add end-to-end test for NTLM/Negotiate authentication against fake se…
filipnavara Jun 16, 2022
3fc61eb
Enable ThreadAbort with CET enabled via the QueueUserAPC2 (#70803)
janvorli Jun 16, 2022
c972517
Test additional NativeAOT Lib testing (#70212)
LakshanF Jun 16, 2022
3b04dc1
Fix emitDispJumpList for Arm64 (#70542)
kunalspathak Jun 16, 2022
8b3be89
Fix regression in runtime-jit-experimental (#70797)
Jun 16, 2022
f25caab
JIT: relax fwd sub restriction on changing class handle (#70587)
AndyAyersMS Jun 16, 2022
9ab00ef
Use LastIndexOf in ZipArchiveEntry.GetFileName_Unix (#70701)
stephentoub Jun 16, 2022
cfeab72
Update dogfooding instructions (#70833)
jkotas Jun 16, 2022
ab998cc
Add icon to dotnet.exe on Windows (#70578)
elinor-fung Jun 16, 2022
6e7001c
Add two new stages to prepare for our new custom type marshalling des…
jkoritzinsky Jun 16, 2022
1b6f76d
Simplify `Environment.IsWindows8OrAbove`. (#70818)
teo-tsirpanis Jun 16, 2022
3874c65
Delete redundant aliases for primitive types (#70805)
jkotas Jun 16, 2022
9a80f1d
Add limited support for LocalCertificateSelectionCallback for QUIC (#…
rzikm Jun 16, 2022
401722b
JIT: Optimize range checks for X >> CNS and for short/byte indices (…
EgorBo Jun 16, 2022
195a0a9
Tighten checks in `areArgumentsContiguous` (#70829)
SingleAccretion Jun 16, 2022
52cced2
Narrow cast fix (#70518)
TIHan Jun 16, 2022
3b09519
[wasm] Disable WBT test failing on windows (#70808)
radical Jun 16, 2022
502f9ac
Enable IDE1005 (Delegate invocation can be simplified) (#70522)
stephentoub Jun 16, 2022
1dbda71
Disable long running test (#70843)
fanyang-mono Jun 16, 2022
ae49f52
[wasm] Enabled WriteToReadOnly tests - emscripten bug got fixed (#70814)
ilonatommy Jun 16, 2022
11d8e26
Use IndexOf{Any} in a few more places (#70176)
stephentoub Jun 16, 2022
5713bea
Fix corerun for assemblies with mismatched filename (#70800)
jkotas Jun 16, 2022
36f2dc2
Fix a few Stream-related issues in System.Net.Http (#70731)
stephentoub Jun 16, 2022
795a0f7
Catch (more) mismatched args in `fgMorphArgs` (#70846)
SingleAccretion Jun 16, 2022
1a02f0d
[coop] fix coop suspend timeout cue card (#70828)
lambdageek Jun 16, 2022
48adb84
Fixing the handling of Positive NaN in Math.Min for float/double (#70…
tannergooding Jun 17, 2022
e3a2097
JIT: break loop canonicalization into two stages (#70809)
AndyAyersMS Jun 17, 2022
6154792
Use `Array.Empty()` in `System.Reflection.Metadata`. (#70862)
teo-tsirpanis Jun 17, 2022
eca86de
Delete StaticallyLinked property from Microsoft.NETCore.Native.Unix.p…
jkotas Jun 17, 2022
b6e2e1c
Restore ArchivingUtils.AttemptSetLastWriteTime (#70617)
carlossanlop Jun 17, 2022
d940a01
Fix GC stress failure in LoaderAllocator::CompareExchangeValueInHandl…
jkotas Jun 17, 2022
3b1a36e
Small performance cleanups in S.S.Cryptography
vcsjones Jun 17, 2022
3b2883b
ARM64 - Optimize `i % 2` (#70599)
TIHan Jun 17, 2022
30379b7
Assign proper VNs to "shared constant" CSE defs (#70852)
SingleAccretion Jun 17, 2022
a796755
Enable IDE0054 (Use compound assignment) (#70564)
stephentoub Jun 17, 2022
10438a5
Use new byte[] span optimization in a few more places (#70665)
stephentoub Jun 17, 2022
8a6672a
Improve TLS1.3 detection in registry for QUIC (#70730)
rzikm Jun 17, 2022
07b5741
Generate method bodies for delegate Invoke methods (#70883)
MichalStrehovsky Jun 17, 2022
c75659b
Avoid crashing on unresolved dependencies (#70871)
MichalStrehovsky Jun 17, 2022
3fdee96
Enable IDE0020 (Use pattern matching) (#70523)
stephentoub Jun 17, 2022
1b87ff9
Fix failure building two libraries tests (#70881)
MichalStrehovsky Jun 17, 2022
5fc5c68
Use hash/hmac one shots in NTLM (#70857)
vcsjones Jun 17, 2022
a78211b
Unpin locals, attempt 2 (#70655)
aromaa Jun 17, 2022
6d6a373
Replace a few instances of PtrToStructure with more efficient marshal…
jkotas Jun 17, 2022
5df4473
Fix for timer scheduling happening on the incorrect thread when wasm …
kg Jun 17, 2022
41d9c1c
Add event to capture min/max threads (#70063)
eduardo-vp Jun 17, 2022
2627ea3
[wasm] Add support for per-project customization of helix work items …
radical Jun 17, 2022
051b482
Fix bug in Tar preventing extraction of hardlinks or entries starting…
carlossanlop Jun 17, 2022
0d0fd75
Remove #define Sleep (#70868)
AaronRobinsonMSFT Jun 17, 2022
0666d9d
Fix ICorDebugFunction2::GetVersionNumber for arm32. (#69901)
viewizard Jun 17, 2022
9dfdfbf
Replace the remaining uses of Marshal.PtrToStructure in core networki…
jkotas Jun 17, 2022
cae8546
Add support for delegate GDV and method-based vtable GDV (#68703)
jakobbotsch Jun 17, 2022
4abfe7c
Use ArgumentNullException.ThrowIfNull in a few more places (#70897)
stephentoub Jun 18, 2022
df822e7
Append the function pointer type (#70923)
AaronRobinsonMSFT Jun 18, 2022
e9175f4
[main] Update dependencies from dotnet/runtime dotnet/icu dotnet/xhar…
dotnet-maestro[bot] Jun 18, 2022
4adb117
Harden for null byrefs (#70317)
AaronRobinsonMSFT Jun 18, 2022
7a2cccd
Use u8 in a few more places (#70894)
stephentoub Jun 18, 2022
6dc9faa
Enable lib tests that used to fail with GC issues (#70831)
LakshanF Jun 18, 2022
9d0fcb5
Remove some dead code / branches (#70146)
stephentoub Jun 18, 2022
e771b5d
superpmi.py: Add `-jitoption` for asmdiffs (#70939)
BruceForstall Jun 18, 2022
c230ba6
EventLogException is missing the original win32 error code (#70629)
pedrobsaila Jun 19, 2022
656f909
Enable IDE0071 (Simplify interpolation) (#70918)
stephentoub Jun 19, 2022
8442a62
Enable IDE0100 (Remove redundant equality) (#70896)
stephentoub Jun 19, 2022
246d9bb
Enable IDE0065 (Misplaced using directive) (#70919)
stephentoub Jun 19, 2022
27182d4
Optimization for full range checks (#70145) (#70222)
SkiFoD Jun 19, 2022
7a039ff
Update C# compiler (#70947)
stephentoub Jun 19, 2022
b8d9a74
Allow ValueListBuilder to work with empty scratch spans (#70917)
stephentoub Jun 19, 2022
566de97
Enable IDE0030 (Use coalesce expression) (#70948)
stephentoub Jun 19, 2022
222d9e9
Do not reuse implicit byrefs for by-value args (#70955)
SingleAccretion Jun 19, 2022
3dc3eba
Enable `TYP_STRUCT` `LCL_VAR/LCL_FLD` call args on Windows x64 (#70777)
SingleAccretion Jun 19, 2022
61b5d61
Make SuperPMI more explicit about JIT in error messages (#70938)
BruceForstall Jun 20, 2022
2b0d0d1
Fix illumos-x64 build (#70956)
am11 Jun 20, 2022
1ec5ba5
Disable W^X on macOS under Rosetta emulation (#70912)
janvorli Jun 20, 2022
f00c8be
Add support for randomized guard stack cookies (#70806)
MichalStrehovsky Jun 20, 2022
12c1ead
Fixes #64159 - JsonSerializerContext source generation fails with key…
SteveDunn Jun 20, 2022
38794de
[main] Update dependencies from dotnet/arcade (#70662)
dotnet-maestro[bot] Jun 20, 2022
de170cc
Enable IDE0031 (Use null propagation) (#70965)
stephentoub Jun 20, 2022
b4df8db
Fix nullable annotations on MailAddress.TryCreate (#70943)
stephentoub Jun 20, 2022
38719c0
[QUIC] Removes abstract providers and mock from S.N.Quic (#70421)
ManickaP Jun 20, 2022
b9f899e
Stop wrapping SIMD nodes in OBJs (#70888)
SingleAccretion Jun 20, 2022
edd3597
Upstream coreclr and pal changes to support powerpc (ppc64le) archite…
vikasgupta8 Jun 20, 2022
6d80379
Collections contain stale object IDs (#70924)
AaronRobinsonMSFT Jun 20, 2022
807d091
Minor refactoring for `UpgradeToRegexGeneratorAnalyzer` (#70767)
Youssef1313 Jun 20, 2022
dc8fd68
Fix arm64 funclet frame type 5 (#70922)
BruceForstall Jun 20, 2022
df53937
Fix default log color behavior when console is redirected (#70504)
maryamariyan Jun 20, 2022
81cf5ad
JIT: Model string literal objects as invariant and non-GLOB_REF (#70986)
jakobbotsch Jun 20, 2022
18ec279
Add support for cross module inlining and cross module generic compil…
davidwrighton Jun 20, 2022
d6d28e4
Implement Vector128 version of System.Buffers.Text.Base64 DecodeFromU…
a74nh Jun 20, 2022
220ac84
Use `gtEffectiveVal` for `GT_ADD` op1 in `optCreateAssertion` (#70228)
TIHan Jun 20, 2022
eba3636
Convert fallback path of GetCommandLineArgs to managed (#70608)
huoyaoyuan Jun 20, 2022
96a7014
[wasm] Enabled WasmTestOnBrowser run on Windows for Browser. (#70890)
ilonatommy Jun 20, 2022
1070187
[wasm][debugger] Fix side effect on Firefox of getting bytes from loa…
thaystg Jun 20, 2022
e2cddab
Add AddSystemd() and AddWindowsService() IServiceCollection extension…
halter73 Jun 20, 2022
9876d8c
[main] Update dependencies from dotnet/runtime dotnet/xharness dotnet…
dotnet-maestro[bot] Jun 20, 2022
6be8d27
Windows/Arm64: Use 8.1 atomic instructions if they are available (#70…
kunalspathak Jun 20, 2022
19fcc31
Add ZipArchiveEntry.IsEncrypted for password-protection detection (#7…
jeffhandley Jun 20, 2022
715c71a
Exposing IRootFunctions.Hypot and IRootFunctions.Root (#71010)
tannergooding Jun 20, 2022
943da70
Add TarEntry conversion constructors (#70325)
carlossanlop Jun 21, 2022
87194f2
[wasm] Wasm.Build.Tests: disable tests failing on CI (#71020)
radical Jun 21, 2022
30bf66a
Remove allocation in ImmutableArray Builder Sort (#70850)
grbell-ms Jun 21, 2022
cb32ed3
[Android] Make sure AdditionalTimeZoneChecks trait is added to xunit-…
steveisok Jun 21, 2022
f1358d0
Use LastIndexOfAny in GetFileName_Windows (#71032)
stephentoub Jun 21, 2022
229502e
Avoid unnecessary allocations in SanitizeEntryFilePath (#71034)
stephentoub Jun 21, 2022
8a7930e
Fix Ordinal Ignore Case string compare (#71022)
tarekgh Jun 21, 2022
7ab7f83
Move allocation of command line argument array to C# (#71021)
jkotas Jun 21, 2022
20baea2
Add markdown readme for System.Reflection.MetadataLoadContext (#70610)
MSDN-WhiteKnight Jun 21, 2022
5889de5
set red zone size 512 for powerpc64. (#70885)
vikasgupta8 Jun 21, 2022
3b8a6f4
Ensure consistent reflectability for generic methods (#70977)
MichalStrehovsky Jun 21, 2022
79f6709
Implement NegotiateAuthentication API (#70720)
filipnavara Jun 21, 2022
ff57575
Fix IPAddress equality comparison in MsQuicListener (#70979)
rzikm Jun 21, 2022
f9999cc
Fix typo in GC_FORBID doc (#71050)
huoyaoyuan Jun 21, 2022
3affc68
[mono] Do not generate impossible instantiations for constrained gene…
ivanpovazan Jun 21, 2022
786ec9d
Switch to PREEMPT mode when calling CoTaskMem* APIs (#71031)
AaronRobinsonMSFT Jun 21, 2022
95138dd
JIT: fix loop alignment issue (#70936)
AndyAyersMS Jun 21, 2022
43be83a
JIT: Fix reordering of call args on x86 (#70931)
jakobbotsch Jun 21, 2022
ddb3c79
Simplify random GDV (#70980)
jakobbotsch Jun 21, 2022
d24bf09
Add missing call to initiate thread abort with CET (#71053)
janvorli Jun 21, 2022
bb17fb5
Enabling console logger queue length and mode to be configurable (#70…
maryamariyan Jun 21, 2022
99e58d5
Fix SIMD data overallocation (#71043)
BruceForstall Jun 21, 2022
ad8b979
fix: [Wasm] Add missing libicudata.a for native layout (#70682)
jeromelaban Jun 21, 2022
3684aa8
JIT: handle case where we are cloning adjacent sibling loops (#70874)
AndyAyersMS Jun 21, 2022
925e26e
JIT: avoid cloning mid-entry loops with multiple non-loop entry preds…
AndyAyersMS Jun 21, 2022
8fb75de
Fixed :scheme header for H/2 with PlaintextStreamFilter (#71057)
ManickaP Jun 21, 2022
c158591
[wasm] Migrate to ref/out param while reading data from typed array (…
maraf Jun 21, 2022
775a7ec
Renaming files because they don't reflect the IL code used in the tes…
thaystg Jun 21, 2022
89dc073
Revert "Add support for cross module inlining and cross module generi…
davidwrighton Jun 21, 2022
eed18af
Use crypto.subtle for HMAC on Browser WASM (#70745)
eerhardt Jun 21, 2022
8558cdc
Add CreateChained rate limiter API (#70739)
BrennanConroy Jun 21, 2022
18d7e39
[Mono] Fix C4018 warnings round II (#70783)
fanyang-mono Jun 21, 2022
ff4ae18
Enabled tests that were reported to fail but now pass. (#71077)
ilonatommy Jun 21, 2022
e40236a
[wasm][aot] Enable `DataContractSerializerTests.DCS_DerivedTypeWithDi…
ilonatommy Jun 21, 2022
058f83b
Align arm64 data section as requested (#71044)
BruceForstall Jun 21, 2022
46f53e3
[mono] Extend MonoAOTCompiler Task (#70851)
mdh1418 Jun 22, 2022
11b746a
Remove SString::UIndex and SString::UIterator as they are never used.…
jkoritzinsky Jun 22, 2022
ead19a3
Add idIsBound() check in emitDispJumpList() (#71086)
kunalspathak Jun 22, 2022
fdc3b51
Include all dlerror messages to DllNotFoundException (#70964)
HJLeee Jun 22, 2022
0f149b7
[HTTP/3] Try catch for unreachable host in AltSvc H/3 upgrade test (#…
ManickaP Jun 22, 2022
3282677
[main] Update dependencies from dotnet/linker (#70614)
dotnet-maestro[bot] Jun 22, 2022
2a680c1
[mono] Fix SpanHelpers.Reverse regression (#70650)
BrzVlad Jun 22, 2022
93f46d2
Mark simple.il and nested.il ilasm/ildasm roundtrip incompatible (#71…
jakobbotsch Jun 22, 2022
305144e
Make GC Stress 4/8 work with CET (#71085)
janvorli Jun 22, 2022
250e1b0
Base64 library tests: use full encoding map (#71006)
a74nh Jun 22, 2022
c78fffd
[main] Update dependencies from dotnet/xharness (#71051)
dotnet-maestro[bot] Jun 22, 2022
1de38da
Delete duplicate helper in HttpConnection.cs (#71091)
stephentoub Jun 22, 2022
dbc7d8c
Use SequenceEqual in SslCredKey.Equals (#71097)
stephentoub Jun 22, 2022
9b4f152
Simplify and improve SocketAddress.Equals (#71090)
stephentoub Jun 22, 2022
604681a
Enable `TYP_STRUCT` `LCL_VAR/LCL_FLD` call args on x86 (#70779)
SingleAccretion Jun 22, 2022
4dc676f
Delete SegmentCommandLine from utilcode (#71111)
jkotas Jun 22, 2022
51b904b
Delete the Unix x64 implicit byref quirk (#70961)
SingleAccretion Jun 22, 2022
202f0af
Sort ConstrainedDirectCall cells (#71121)
MichalStrehovsky Jun 22, 2022
fc813dd
Allow guessing canonical owning type instantiations (#71120)
MichalStrehovsky Jun 22, 2022
7e46936
Fix test failure in Apple OSs due to paths too long and using Ustar w…
carlossanlop Jun 22, 2022
b1839d3
Reduce allocations parsing X.509 certificates on Windows
vcsjones Jun 22, 2022
d3f7e01
Implement Tar Global Extended Attributes API changes (#70869)
carlossanlop Jun 22, 2022
1ef5515
Normalize Watson crash buckets between .NET Core/.NET Framework (#71107)
mikem8361 Jun 22, 2022
6212eab
[mono][debugger] Support new hot reload features from runtime (#70697)
thaystg Jun 22, 2022
c9007c8
Bump Newtonsoft.Json in /src/installer/tests/TestUtils (#71142)
dependabot[bot] Jun 22, 2022
c1d4494
Print LARGEJMP instruction on ARM64 (#71094)
Jun 22, 2022
de078d1
Avoid delegate allocation in TraceSourceLoggerProvider.GetOrAddTraceS…
stephentoub Jun 22, 2022
897b2a3
JSON contract customization (#70435)
krwq Jun 22, 2022
6258ee5
JIT: Stop reordering arguments throwing distinct exceptions (#70893)
jakobbotsch Jun 22, 2022
4388cc5
VM: Better strategy for TryReserveInitialMemory on arm64 (jump stubs)…
EgorBo Jun 22, 2022
f20a046
Add exception interop test for validating native exception interop on…
jkoritzinsky Jun 22, 2022
f310367
Fix ILGenerator maxstack computation (#70388)
panguye Jun 22, 2022
bc1a872
Enable fake hot/cold splitting on ARM64 (#70708)
Jun 22, 2022
9d3f060
Simplify NtProcessInfoHelper.GetProcessShortName (#71136)
stephentoub Jun 22, 2022
0855da7
Exposing AcosPi, AsinPi, Atan2Pi, AtanPi, CosPi, SinPi, and TanPi for…
tannergooding Jun 22, 2022
b02729b
Add tests for `IMallocSpy` (#71106)
AaronRobinsonMSFT Jun 22, 2022
78a2627
Work around for UriFormatException caused by \\?\ prefix in the path …
buyaa-n Jun 22, 2022
9bb393c
Make RateLimitPartition.Factory public (#71145)
wtgodbe Jun 22, 2022
53cfcf3
Bump Newtonsoft.Json from 9.0.1 to 13.0.1 in /src/tests/ilverify (#71…
dependabot[bot] Jun 22, 2022
9b6ce5c
[iOS][Android] Fix crash in Exception.CaptureDispatchState (#70970)
steveisok Jun 22, 2022
08c0ea1
Fix the heuristics for L3 cache size for Arm64 (#71029)
kunalspathak Jun 22, 2022
ccf1257
Fix the handling of UInt128.DivideSlow on big endian platforms (#71162)
tannergooding Jun 22, 2022
315e931
Fix Native Digits Support (#71045)
tarekgh Jun 22, 2022
f4cf69e
[LibraryImportGenerator] Basic stateless value marshaller support (#7…
elinor-fung Jun 22, 2022
9616b57
NextObj fix (#71113)
Maoni0 Jun 22, 2022
df3bd55
Fix for issue 70385 (stack overflow in the CoreCLR runtime during SVM…
trylek Jun 22, 2022
70e9ca0
Fix Tar timestamp conversion from/to string and DateTimeOffset (#71038)
carlossanlop Jun 23, 2022
982946a
Use IndexOfAny in HttpListener.HandleAuthentication (#71137)
stephentoub Jun 23, 2022
d17741d
Change SString::GetUTF8NoConvert to GetUTF8 that converts the SString…
jkoritzinsky Jun 23, 2022
95d64e8
JIT: arm64 osr funclet frame probing (#70916)
AndyAyersMS Jun 23, 2022
70df1f5
Mirror Microsoft.Diagnostics.NETCore.Client (#71139)
hoyosjs Jun 23, 2022
9e8c7a8
Update design docs to reflect our new marshaller design from partner …
jkoritzinsky Jun 23, 2022
ddc4f95
Implement UnixFileMode APIs (#69980)
tmds Jun 23, 2022
a73c582
Update apphost error dialog text to put question last (#71165)
elinor-fung Jun 23, 2022
05ae801
[NativeAOT] Enable dynamic linking of ucrt for release runtime (#71182)
jkotas Jun 23, 2022
af9b7e7
Merge remote-tracking branch 'origin/main' into issue-20234
tmds Jun 23, 2022
edf948e
Fix Unix test failures.
tmds Jun 23, 2022
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
JIT: rework optCanonicalizeLoop (dotnet#70792)
Rework loop canonicalization in anticipation of extending it to handle
non-loop edges like those seen in dotnet#70802 (details in dotnet#70569).

The code to fix up flow out of `h` was not needed and has been removed.
We now assert upstream that no such fix up will be needed.
  • Loading branch information
AndyAyersMS committed Jun 16, 2022
commit 446e5ad932ba693d64225bd2939e977832a642e2
110 changes: 69 additions & 41 deletions src/coreclr/jit/optimizer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2874,38 +2874,49 @@ bool Compiler::optIsLoopEntry(BasicBlock* block) const
return false;
}

// Canonicalize the loop nest rooted at parent loop 'loopInd'.
// Returns 'true' if the flow graph is modified.
//-----------------------------------------------------------------------------
// optCanonicalizeLoopNest: Canonicalize a loop nest
//
// Arguments:
// loopInd - index of outermost loop in the nest
//
// Returns:
// true if the flow graph was modified
//
// Notes:
// For loopInd and all contained loops, ensures each loop top's back edges
// do not come from nested loops.
//
// Will split top blocks and redirect edges if needed.
//
bool Compiler::optCanonicalizeLoopNest(unsigned char loopInd)
{
bool modified = false;

// Is the top of the current loop in any nested loop?
if (optLoopTable[loopInd].lpTop->bbNatLoopNum != loopInd)
{
if (optCanonicalizeLoop(loopInd))
{
modified = true;
}
}
bool modified = optCanonicalizeLoop(loopInd);

for (unsigned char child = optLoopTable[loopInd].lpChild; //
child != BasicBlock::NOT_IN_LOOP; //
child = optLoopTable[child].lpSibling)
{
if (optCanonicalizeLoopNest(child))
{
modified = true;
}
modified |= optCanonicalizeLoopNest(child);
}

return modified;
}

//-----------------------------------------------------------------------------
// optCanonicalizeLoop: ensure that each loop top's back edges do not come
// from nested loops.
//
// Arguments:
// loopInd - index of the loop to consider
//
// Returns:
// true if flow changes were made
//
bool Compiler::optCanonicalizeLoop(unsigned char loopInd)
{
// Is the top uniquely part of the current loop?
BasicBlock* t = optLoopTable[loopInd].lpTop;
BasicBlock* const t = optLoopTable[loopInd].lpTop;

if (t->bbNatLoopNum == loopInd)
{
Expand Down Expand Up @@ -2993,12 +3004,28 @@ bool Compiler::optCanonicalizeLoop(unsigned char loopInd)
// outside of and disjoint with the "try" region of the back edge. However, to
// simplify things, we disqualify this type of loop, so we should never see this here.

BasicBlock* h = optLoopTable[loopInd].lpHead;
BasicBlock* b = optLoopTable[loopInd].lpBottom;
BasicBlock* const h = optLoopTable[loopInd].lpHead;
BasicBlock* const b = optLoopTable[loopInd].lpBottom;

// The loop must be entirely contained within a single handler region.
assert(BasicBlock::sameHndRegion(t, b));

// We expect h to be already "canonical" -- that is, it falls through to t
// and is not a degenerate BBJ_COND (both branches and falls through to t)
// or a side entry to the loop.
//
// Because of this, introducing a block before t automatically gives us
// the right flow out of h.
//
assert(h->bbNext == t);
assert(h->bbFallsThrough());
assert((h->bbJumpKind == BBJ_NONE) || (h->bbJumpKind == BBJ_COND));
if (h->bbJumpKind == BBJ_COND)
{
BasicBlock* const hj = h->bbJumpDest;
assert((hj->bbNum < t->bbNum) || (hj->bbNum > b->bbNum));
}

// If the bottom block is in the same "try" region, then we extend the EH
// region. Otherwise, we add the new block outside the "try" region.
const bool extendRegion = BasicBlock::sameTryRegion(t, b);
Expand All @@ -3016,9 +3043,12 @@ bool Compiler::optCanonicalizeLoop(unsigned char loopInd)
// a call to fgUpdateChangedFlowGraph which will recompute the reachability sets anyway.

// Redirect the "bottom" of the current loop to "newT".
BlockToBlockMap* blockMap = new (getAllocator(CMK_LoopOpt)) BlockToBlockMap(getAllocator(CMK_LoopOpt));
BlockToBlockMap* const blockMap = new (getAllocator(CMK_LoopOpt)) BlockToBlockMap(getAllocator(CMK_LoopOpt));
blockMap->Set(t, newT);
optRedirectBlock(b, blockMap);
JITDUMP("in optCanonicalizeLoop: redirecting bottom->top backedge " FMT_BB " -> " FMT_BB " to " FMT_BB " -> " FMT_BB
"\n",
b->bbNum, t->bbNum, b->bbNum, newT->bbNum);

// Redirect non-loop preds of "t" to also go to "newT". Inner loops that also branch to "t" should continue
// to do so. However, there maybe be other predecessors from outside the loop nest that need to be updated
Expand All @@ -3039,9 +3069,14 @@ bool Compiler::optCanonicalizeLoop(unsigned char loopInd)
// outside-in, so we shouldn't encounter the new blocks at the loop boundaries, or in the predecessor lists.
if (t->bbNum <= topPredBlock->bbNum && topPredBlock->bbNum <= b->bbNum)
{
JITDUMP("in optCanonicalizeLoop: 'top' predecessor " FMT_BB " is in the range of " FMT_LP " (" FMT_BB
".." FMT_BB "); not redirecting its bottom edge\n",
topPredBlock->bbNum, loopInd, t->bbNum, b->bbNum);
// Note we've already redirected b->t above.
//
if (topPredBlock->bbNum != b->bbNum)
{
JITDUMP("in optCanonicalizeLoop: in-loop 'top' predecessor " FMT_BB " is in the range of " FMT_LP
" (" FMT_BB ".." FMT_BB "); not redirecting its bottom edge\n",
topPredBlock->bbNum, loopInd, t->bbNum, b->bbNum);
}
continue;
}

Expand Down Expand Up @@ -3073,10 +3108,12 @@ bool Compiler::optCanonicalizeLoop(unsigned char loopInd)
}
}

assert(h->bbNext == newT);
assert(newT->bbNext == t);

// If it had been a do-while loop (top == entry), update entry, as well.
BasicBlock* origE = optLoopTable[loopInd].lpEntry;
// If loopInd is a do-while loop (top == entry), update entry as well.
//
BasicBlock* const origE = optLoopTable[loopInd].lpEntry;
if (optLoopTable[loopInd].lpTop == origE)
{
optLoopTable[loopInd].lpEntry = newT;
Expand All @@ -3088,24 +3125,10 @@ bool Compiler::optCanonicalizeLoop(unsigned char loopInd)
JITDUMP("in optCanonicalizeLoop: made new block " FMT_BB " [%p] the new unique top of loop %d.\n", newT->bbNum,
dspPtr(newT), loopInd);

// Make sure the head block still goes to the entry...
if (h->bbJumpKind == BBJ_NONE && h->bbNext != optLoopTable[loopInd].lpEntry)
{
h->bbJumpKind = BBJ_ALWAYS;
h->bbJumpDest = optLoopTable[loopInd].lpEntry;
}
else if (h->bbJumpKind == BBJ_COND && h->bbNext == newT && newT != optLoopTable[loopInd].lpEntry)
{
BasicBlock* h2 = fgNewBBafter(BBJ_ALWAYS, h, /*extendRegion*/ true);
optLoopTable[loopInd].lpHead = h2;
h2->bbJumpDest = optLoopTable[loopInd].lpEntry;
h2->bbStmtList = nullptr;
fgInsertStmtAtEnd(h2, fgNewStmtFromTree(gtNewOperNode(GT_NOP, TYP_VOID, nullptr)));
}

// If any loops nested in "loopInd" have the same head and entry as "loopInd",
// it must be the case that they were do-while's (since "h" fell through to the entry).
// it must be the case that they were also do-while's (since "h" fell through to the entry).
// The new node "newT" becomes the head of such loops.
//
for (unsigned char childLoop = optLoopTable[loopInd].lpChild; //
childLoop != BasicBlock::NOT_IN_LOOP; //
childLoop = optLoopTable[childLoop].lpSibling)
Expand All @@ -3114,6 +3137,11 @@ bool Compiler::optCanonicalizeLoop(unsigned char loopInd)
newT->bbJumpKind == BBJ_NONE && newT->bbNext == origE)
{
optUpdateLoopHead(childLoop, h, newT);

// Fix pred list here, so when we walk preds of child loop tops
// we see the right blocks.
//
fgReplacePred(optLoopTable[childLoop].lpTop, h, newT);
}
}
return true;
Expand Down