Skip to content
Merged
Show file tree
Hide file tree
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)
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)
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
Enable IlcTrimMetadata by default (dotnet#70201)
Enables more aggressive metadata stripping by default. In this mode, the AOT compiler only generates reflection metadata for artifacts that were deemed reflection-visible by either dataflow analysis, or user inputs. Previously we would consider everything that got generated reflection-visible.

* Change the defaults within the compiler (making the conservative mode opt-in).
* Add tests for scenarios in dotnet/runtimelab#656 (resolves dotnet/runtimelab#656).
* Update tests
* Do more marking where it was necessary
  • Loading branch information
MichalStrehovsky authored Jun 15, 2022
commit 10288c966bfdd46cdc0d612beaa05888819171a9
Original file line number Diff line number Diff line change
Expand Up @@ -232,14 +232,14 @@ The .NET Foundation licenses this file to you under the MIT license.
<IlcArg Condition="$(Optimize) == 'true' and $(IlcOptimizationPreference) == 'Size'" Include="--Os" />
<IlcArg Condition="$(Optimize) == 'true' and $(IlcOptimizationPreference) == 'Speed'" Include="--Ot" />
<IlcArg Condition="$(IlcInstructionSet) != ''" Include="--instructionset:$(IlcInstructionSet)" />
<IlcArg Condition="$(IlcDisableReflection) == 'true'" Include="--disablereflection" />
<IlcArg Condition="$(IlcDisableReflection) == 'true'" Include="--reflectiondata:none" />
<IlcArg Condition="$(IlcDisableReflection) == 'true'" Include="--feature:System.Collections.Generic.DefaultComparers=false" />
<IlcArg Condition="$(IlcSingleThreaded) == 'true'" Include="--parallelism:1" />
<IlcArg Condition="$(IlcSystemModule) != ''" Include="--systemmodule:$(IlcSystemModule)" />
<IlcArg Condition="$(IlcDumpIL) == 'true'" Include="--ildump:$(NativeIntermediateOutputPath)%(ManagedBinary.Filename).il" />
<IlcArg Condition="$(NoWarn) != ''" Include='--nowarn:"$([MSBuild]::Escape($(NoWarn)))"' />
<IlcArg Condition="$(TrimmerSingleWarn) == 'true'" Include="--singlewarn" />
<IlcArg Condition="$(IlcTrimMetadata) == 'true'" Include="--reflectedonly" />
<IlcArg Condition="$(IlcTrimMetadata) == 'false'" Include="--reflectiondata:all" />
<IlcArg Condition="'$(ControlFlowGuard)' == 'Guard' and '$(TargetOS)' == 'windows'" Include="--guard:cf" />
<IlcArg Include="@(_IlcRootedAssemblies->'--root:%(Identity)')" />
<IlcArg Include="@(_IlcConditionallyRootedAssemblies->'--conditionalroot:%(Identity)')" />
Expand Down
19 changes: 9 additions & 10 deletions src/coreclr/nativeaot/docs/optimizing.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,6 @@ To specify a switch, add a new property to your project file with one or more of

under the `<Project>` node of your project file.

## Options related to library features

Native AOT supports enabling and disabling all [documented framework library features](https://docs.microsoft.com/en-us/dotnet/core/deploying/trimming-options#trimming-framework-library-features). For example, to remove globalization specific code and data, add a `<InvariantGlobalization>true</InvariantGlobalization>` property to your project. Disabling a framework feature (or enabling a minimal mode of the feature) can result in significant size savings.

🛈 Native AOT difference: The `EnableUnsafeBinaryFormatterSerialization` framework switch is already set to the optimal value of `false` (removing the support for [obsolete](https://github.com/dotnet/designs/blob/21b274dbc21e4ae54b7e4c5dbd5ef31e439e78db/accepted/2020/better-obsoletion/binaryformatter-obsoletion.md) binary serialization).

## Options related to trimming

The Native AOT compiler supports the [documented options](https://docs.microsoft.com/en-us/dotnet/core/deploying/trim-self-contained) for removing unused code (trimming). By default, the compiler tries to very conservatively remove some of the unused code.
Expand All @@ -26,16 +20,21 @@ The Native AOT compiler supports the [documented options](https://docs.microsoft

By default, the compiler tries to maximize compatibility with existing .NET code at the expense of compilation speed and size of the output executable. This allows people to use their existing code that worked well in a fully dynamic mode without hitting issues caused by trimming. To read more about reflection, see the [Reflection in AOT mode](reflection-in-aot-mode.md) document.

🛈 Native AOT difference: the `TrimMode` of framework assemblies is set to `link` by default. To compile entire framework assemblies, use `TrimmerRootAssembly` to root the selected assemblies. It's not recommended to root the entire framework.

To enable more aggressive removal of unreferenced code, set the `<TrimMode>` property to `link`.
To enable more aggressive removal of unreferenced code, set the `<TrimmerDefaultAction>` property to `link`.

To aid in troubleshooting some of the most common problems related to trimming add `<IlcGenerateCompleteTypeMetadata>true</IlcGenerateCompleteTypeMetadata>` to your project. This ensures types are preserved in their entirety, but the extra members that would otherwise be trimmed cannot be used in runtime reflection. This mode can turn some spurious `NullReferenceExceptions` (caused by reflection APIs returning a null) caused by trimming into more actionable exceptions.

The Native AOT compiler can remove unused metadata more effectively than non-Native deployment models. For example, it's possible to remove names and metadata for methods while keeping the native code of the method. The higher efficiency of trimming in Native AOT can result in differences in what's visible to reflection at runtime in trimming-unfriendly code. To increase compatibility with the less efficient non-Native trimming, set the `<IlcTrimMetadata>` property to `false`. This compatibility mode is not necessary if there are no trimming warnings.

## Options related to library features

Native AOT supports enabling and disabling all [documented framework library features](https://docs.microsoft.com/en-us/dotnet/core/deploying/trimming-options#trimming-framework-library-features). For example, to remove globalization specific code and data, add a `<InvariantGlobalization>true</InvariantGlobalization>` property to your project. Disabling a framework feature (or enabling a minimal mode of the feature) can result in significant size savings.

Since `PublishTrimmed` is implied to be true with Native AOT, some framework features such as binary serialization are disabled by default.

## Options related to metadata generation

* `<IlcGenerateStackTraceData>false</IlcGenerateStackTraceData>`: this disables generation of stack trace metadata that provides textual names in stack traces. This is for example the text string one gets by calling `Exception.ToString()` on a caught exception. With this option disabled, stack traces will still be generated, but will be based on reflection metadata alone (they might be less complete).
* `<IlcTrimMetadata>true</IlcTrimMetadata>`: allows the compiler to remove reflection metadata from things that were not visible targets of reflection. By default, the compiler keeps metadata for everything that was compiled. With this option turned on, reflection metadata (and therefore reflection) will only be available for visible targets of reflection. Visible targets of reflection are things like assemblies rooted from the project file, RD.XML, ILLinkTrim descriptors, DynamicallyAccessedMembers annotations or DynamicDependency annotations.

## Options related to code generation
* `<IlcOptimizationPreference>Speed</IlcOptimizationPreference>`: when generating optimized code, favor code execution speed.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -597,6 +597,12 @@ public override bool HandleCall(MethodIL callingMethodBody, MethodDesc calledMet
if (systemTypeValue.RepresentedType.Type.IsDefType)
{
_reflectionMarker.Dependencies.Add(_factory.StructMarshallingData((DefType)systemTypeValue.RepresentedType.Type), "Marshal API");
if (intrinsicId == IntrinsicId.Marshal_PtrToStructure
&& systemTypeValue.RepresentedType.Type.GetParameterlessConstructor() is MethodDesc ctorMethod
&& !_factory.MetadataManager.IsReflectionBlocked(ctorMethod))
{
_reflectionMarker.Dependencies.Add(_factory.ReflectableMethod(ctorMethod), "Marshal API");
}
}
}
else
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,11 @@ protected override ISymbolNode GetBaseTypeNode(NodeFactory factory)
return _type.BaseType != null ? factory.NecessaryTypeSymbol(_type.BaseType.NormalizeInstantiation()) : null;
}

protected override ISymbolNode GetNonNullableValueTypeArrayElementTypeNode(NodeFactory factory)
{
return factory.ConstructedTypeSymbol(((ArrayType)_type).ElementType);
}

protected override int GCDescSize
{
get
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,11 @@ protected override ISymbolNode GetBaseTypeNode(NodeFactory factory)
return _type.BaseType != null ? factory.ConstructedTypeSymbol(_type.BaseType) : null;
}

protected override ISymbolNode GetNonNullableValueTypeArrayElementTypeNode(NodeFactory factory)
{
return factory.ConstructedTypeSymbol(((ArrayType)_type).ElementType);
}

protected override IEETypeNode GetInterfaceTypeNode(NodeFactory factory, TypeDesc interfaceType)
{
// The interface type will be visible to reflection and should be considered constructed.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -757,14 +757,29 @@ protected virtual ISymbolNode GetBaseTypeNode(NodeFactory factory)
return _type.BaseType != null ? factory.NecessaryTypeSymbol(_type.BaseType) : null;
}

protected virtual ISymbolNode GetNonNullableValueTypeArrayElementTypeNode(NodeFactory factory)
{
return factory.NecessaryTypeSymbol(((ArrayType)_type).ElementType);
}

private ISymbolNode GetRelatedTypeNode(NodeFactory factory)
{
ISymbolNode relatedTypeNode = null;

if (_type.IsArray || _type.IsPointer || _type.IsByRef)
if (_type.IsParameterizedType)
{
var parameterType = ((ParameterizedType)_type).ParameterType;
relatedTypeNode = factory.NecessaryTypeSymbol(parameterType);
if (_type.IsArray && parameterType.IsValueType && !parameterType.IsNullable)
{
// This might be a constructed type symbol. There are APIs on Array that allow allocating element
// types through runtime magic ("((Array)new NeverAllocated[1]).GetValue(0)" or IEnumerable) and we don't have
// visibility into that. Conservatively assume element types of constructed arrays are also constructed.
relatedTypeNode = GetNonNullableValueTypeArrayElementTypeNode(factory);
}
else
{
relatedTypeNode = factory.NecessaryTypeSymbol(parameterType);
}
}
else
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ protected override MetadataCategory GetMetadataCategory(TypeDesc type)
return category;
}

protected override bool AllMethodsCanBeReflectable => (_generationOptions & UsageBasedMetadataGenerationOptions.ReflectedMembersOnly) == 0;
protected override bool AllMethodsCanBeReflectable => (_generationOptions & UsageBasedMetadataGenerationOptions.CreateReflectableArtifacts) != 0;

protected override void ComputeMetadata(NodeFactory factory,
out byte[] metadataBlob,
Expand Down Expand Up @@ -527,7 +527,7 @@ protected override void GetDependenciesDueToMethodCodePresenceInternal(ref Depen
}

// Presence of code might trigger the reflectability dependencies.
if ((_generationOptions & UsageBasedMetadataGenerationOptions.ReflectedMembersOnly) == 0)
if ((_generationOptions & UsageBasedMetadataGenerationOptions.CreateReflectableArtifacts) != 0)
{
GetDependenciesDueToReflectability(ref dependencies, factory, method);
}
Expand All @@ -538,7 +538,7 @@ public override void GetConditionalDependenciesDueToMethodCodePresence(ref Combi
MethodDesc typicalMethod = method.GetTypicalMethodDefinition();

// Ensure methods with genericness have the same reflectability by injecting a conditional dependency.
if ((_generationOptions & UsageBasedMetadataGenerationOptions.ReflectedMembersOnly) != 0
if ((_generationOptions & UsageBasedMetadataGenerationOptions.CreateReflectableArtifacts) == 0
&& method != typicalMethod)
{
dependencies ??= new CombinedDependencyList();
Expand All @@ -549,7 +549,7 @@ public override void GetConditionalDependenciesDueToMethodCodePresence(ref Combi

public override void GetDependenciesDueToVirtualMethodReflectability(ref DependencyList dependencies, NodeFactory factory, MethodDesc method)
{
if ((_generationOptions & UsageBasedMetadataGenerationOptions.ReflectedMembersOnly) == 0)
if ((_generationOptions & UsageBasedMetadataGenerationOptions.CreateReflectableArtifacts) != 0)
{
// If we have a use of an abstract method, GetDependenciesDueToReflectability is not going to see the method
// as being used since there's no body. We inject a dependency on a new node that serves as a logical method body
Expand Down Expand Up @@ -600,8 +600,40 @@ public override void GetDependenciesDueToAccess(ref DependencyList dependencies,
dependencies.Add(factory.DataflowAnalyzedMethod(methodIL.GetMethodILDefinition()), "Access to interesting field");
}

if ((_generationOptions & UsageBasedMetadataGenerationOptions.ReflectedMembersOnly) == 0
&& !IsReflectionBlocked(writtenField))
string reason = "Use of a field";

bool generatesMetadata = false;
if (!IsReflectionBlocked(writtenField))
{
if ((_generationOptions & UsageBasedMetadataGenerationOptions.CreateReflectableArtifacts) != 0)
{
// If access to the field should trigger metadata generation, we should generate the field
generatesMetadata = true;
}
else
{
// There's an invalid suppression in the CoreLib that assumes used fields on attributes will be kept.
// It's used in the reflection-based implementation of Attribute.Equals and Attribute.GetHashCode.
// .NET Native used to have a non-reflection based implementation of Equals/GetHashCode to get around
// this problem. We could explore that as well, but for now, emulate the fact that accessed fields
// on custom attributes will be visible in reflection metadata.
MetadataType currentType = (MetadataType)writtenField.OwningType.BaseType;
while (currentType != null)
{
if (currentType.Module == factory.TypeSystemContext.SystemModule
&& currentType.Name == "Attribute" && currentType.Namespace == "System")
{
generatesMetadata = true;
reason = "Field of an attribute";
break;
}

currentType = currentType.MetadataBaseType;
}
}
}

if (generatesMetadata)
{
FieldDesc fieldToReport = writtenField;

Expand All @@ -619,7 +651,7 @@ public override void GetDependenciesDueToAccess(ref DependencyList dependencies,
}

dependencies = dependencies ?? new DependencyList();
dependencies.Add(factory.ReflectableField(fieldToReport), "Use of a field");
dependencies.Add(factory.ReflectableField(fieldToReport), reason);
}
}

Expand Down Expand Up @@ -1039,9 +1071,9 @@ public enum UsageBasedMetadataGenerationOptions
ReflectionILScanning = 4,

/// <summary>
/// Only members that were seen as reflected on will be reflectable.
/// Consider all native artifacts (native method bodies, etc) visible from reflection.
/// </summary>
ReflectedMembersOnly = 8,
CreateReflectableArtifacts = 8,

/// <summary>
/// Fully root used assemblies that are not marked IsTrimmable in metadata.
Expand Down
19 changes: 12 additions & 7 deletions src/coreclr/tools/aot/ILCompiler/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,8 @@ internal class Program
private string _mapFileName;
private string _metadataLogFileName;
private bool _noMetadataBlocking;
private bool _disableReflection;
private string _reflectionData;
private bool _completeTypesMetadata;
private bool _reflectedOnly;
private bool _scanReflection;
private bool _methodBodyFolding;
private int _parallelism = Environment.ProcessorCount;
Expand Down Expand Up @@ -159,6 +158,8 @@ private void InitializeDefaultOptions()

private ArgumentSyntax ParseCommandLine(string[] args)
{
var validReflectionDataOptions = new string[] { "all", "none" };

IReadOnlyList<string> inputFiles = Array.Empty<string>();
IReadOnlyList<string> referenceFiles = Array.Empty<string>();

Expand Down Expand Up @@ -201,9 +202,8 @@ private ArgumentSyntax ParseCommandLine(string[] args)
syntax.DefineOption("map", ref _mapFileName, "Generate a map file");
syntax.DefineOption("metadatalog", ref _metadataLogFileName, "Generate a metadata log file");
syntax.DefineOption("nometadatablocking", ref _noMetadataBlocking, "Ignore metadata blocking for internal implementation details");
syntax.DefineOption("disablereflection", ref _disableReflection, "Disable generation of reflection metadata");
syntax.DefineOption("completetypemetadata", ref _completeTypesMetadata, "Generate complete metadata for types");
syntax.DefineOption("reflectedonly", ref _reflectedOnly, "Generate metadata only for reflected members");
syntax.DefineOption("reflectiondata", ref _reflectionData, $"Reflection data to generate (one of: {string.Join(", ", validReflectionDataOptions)})");
syntax.DefineOption("scanreflection", ref _scanReflection, "Scan IL for reflection patterns");
syntax.DefineOption("scan", ref _useScanner, "Use IL scanner to generate optimized code (implied by -O)");
syntax.DefineOption("noscan", ref _noScanner, "Do not use IL scanner to generate optimized code");
Expand Down Expand Up @@ -342,6 +342,11 @@ private ArgumentSyntax ParseCommandLine(string[] args)
Helpers.MakeReproPackage(_makeReproPath, _outputFilePath, args, argSyntax, new[] { "-r", "-m", "--rdxml", "--directpinvokelist" });
}

if (_reflectionData != null && Array.IndexOf(validReflectionDataOptions, _reflectionData) < 0)
{
Console.WriteLine($"Warning: option '{_reflectionData}' not recognized");
}

return argSyntax;
}

Expand Down Expand Up @@ -527,7 +532,7 @@ private int Run(string[] args)
InstructionSetSupportBuilder.GetNonSpecifiableInstructionSetsForArch(_targetArchitecture),
_targetArchitecture);

bool supportsReflection = !_disableReflection && _systemModuleName == DefaultSystemModule;
bool supportsReflection = _reflectionData != "none" && _systemModuleName == DefaultSystemModule;

//
// Initialize type system context
Expand Down Expand Up @@ -758,8 +763,8 @@ static string ILLinkify(string rootedAssembly)
metadataGenerationOptions |= UsageBasedMetadataGenerationOptions.CompleteTypesOnly;
if (_scanReflection)
metadataGenerationOptions |= UsageBasedMetadataGenerationOptions.ReflectionILScanning;
if (_reflectedOnly)
metadataGenerationOptions |= UsageBasedMetadataGenerationOptions.ReflectedMembersOnly;
if (_reflectionData == "all")
metadataGenerationOptions |= UsageBasedMetadataGenerationOptions.CreateReflectableArtifacts;
if (_rootDefaultAssemblies)
metadataGenerationOptions |= UsageBasedMetadataGenerationOptions.RootDefaultAssemblies;
}
Expand Down
Loading