monojenkins [Wed, 9 Dec 2020 13:06:50 +0000 (08:06 -0500)]
Add support for external icalls not using a wrapper. (#45766)
Add support to register an external icall getting minimal runtime overhead when called. An icall that can be used without a wrapper needs to follow specific rules in order to correctly collaborate with runtime. All functions are currently internal only and only accessible by runtime or embedders using static linking and fully acknowledge that this is not an optimization available as a public API.
Co-authored-by: lateralusX <lateralusX@users.noreply.github.com>
Alexander Köplinger [Wed, 9 Dec 2020 12:57:08 +0000 (13:57 +0100)]
Remove autotools dependencies from the build requirements (#45825)
Now that Mono has switched to CMake we no longer need the autoconf, automake and libtool build dependencies.
Adam Sitnik [Wed, 9 Dec 2020 12:39:25 +0000 (13:39 +0100)]
Remove some allocations related to storing CacheEntry scopes (#45563)
* CacheEntryStack._previous is never used so it can be removed
* remove CacheEntryStack and ScopeLease as it's enough to have just AsyncLocal<CacheEntry>
* the first Entry created has no previous entry, so the field is set to null
* Update src/libraries/Microsoft.Extensions.Caching.Memory/src/CacheEntryHelper.cs
Co-authored-by: Eric Erhardt <eric.erhardt@microsoft.com>
Co-authored-by: Eric Erhardt <eric.erhardt@microsoft.com>
FireCubeStudios [Wed, 9 Dec 2020 11:11:49 +0000 (12:11 +0100)]
Added Rebecca Purple (#42785)
* Added Rebecca Purple
Added Rebecca Purple color to System.Drawing.Color
Added RebeccaPurple (#663399) to KnownColorNames.cs, Color.cs, KnownColortable.cs and KnownColor.cs
#38244
* Added RebeccaPurple to UnitTest and Ref
Added RebeccaPurple color to the UnitTest and to the ref
Added RebeccaPurple a,r,g,b value to unittest in System.Drawing.Primitive. Also updated the ref.
#38244
* Added RebeccaPurple to the system.drawing.primitive ref
Added RebeccaPurple color to the System.Drawing.Primitive ref file.
"RebeccaPurple = 141" was added. I updated the other colors to their previous number by one.
#38244
* Reverted breaking changes in drawing.primitive ref
Reverted the breaking changes in system.drawing.primivite ref.
the numbers of colors were restored back and i removed rebeccapurple.
#38244
* Added RebeccaPurple to the ref
I added rebeccapurple to the ref file with value 175.
RebeccaPurple was added with value 175 to the bottom of the enum.
#38244
* Added rebeccapurple to bottom of Knowncolors.cs
I added rebeccapurple to theend of the file
RebeccaPurple was added to the bottom of the enum.
#38244
* Added Rebecca Purple
Added Rebecca Purple color to System.Drawing.Color
Added RebeccaPurple (#663399) to KnownColorNames.cs, Color.cs, KnownColortable.cs and KnownColor.cs
#38244
* Added RebeccaPurple to UnitTest and Ref
Added RebeccaPurple color to the UnitTest and to the ref
Added RebeccaPurple a,r,g,b value to unittest in System.Drawing.Primitive. Also updated the ref.
#38244
* Added RebeccaPurple to the system.drawing.primitive ref
Added RebeccaPurple color to the System.Drawing.Primitive ref file.
"RebeccaPurple = 141" was added. I updated the other colors to their previous number by one.
#38244
* Reverted breaking changes in drawing.primitive ref
Reverted the breaking changes in system.drawing.primivite ref.
the numbers of colors were restored back and i removed rebeccapurple.
#38244
* Added RebeccaPurple to the ref
I added rebeccapurple to the ref file with value 175.
RebeccaPurple was added with value 175 to the bottom of the enum.
#38244
* Added rebeccapurple to bottom of Knowncolors.cs
I added rebeccapurple to theend of the file
RebeccaPurple was added to the bottom of the enum.
#38244
* Fixed some of the requested changes with ordering of Enum
Removed a comment in "knowncolor.cs" and moved rebeccapurple to match enum order.
moved rebeccapurple in knowncolortable.cs, color.cs, and knowncolornames.cs
#38244
* Removed duplicates and added a comment
Added a comment in KnownColorNames.cs stating that the array follows order of knowncolor enum. Also removed duplicate rebeccapurple entries
#38244
* Fixing up the handling of RebeccaPurple
* Added a comment to explain changes
Added a comment in KnownColortable.cs stating that the code accounts for the system colors and new rebeccapurple color
#38244
Co-authored-by: Tanner Gooding <tagoo@outlook.com>
Sung Yoon Whang [Wed, 9 Dec 2020 08:09:35 +0000 (00:09 -0800)]
Fix EventPipeSession::WriteEventSuspend (#45672)
* wait for session write to finish in EventPipeBufferManager
* fix comment
* fix typo
* remove yieldwhile
Kenneth Pouncey [Wed, 9 Dec 2020 04:58:14 +0000 (05:58 +0100)]
[browser][websocket] Throw OperationCanceledException on connect (#44722)
* [browser][websocket] Throw OperationCanceledException on connect if cancel was requested before.
* try to handle cancellation in connect stage
* Add new test for inflight connect
- Add new supported property for skipping particular tests when Browser is detected and DOM is detected.
* first pass at throwing pnse when websocket is missing
* Address review comment
* Make the platform check explicit
* Revert CreateDefaultOptions change
* Address review comment
Co-authored-by: Larry Ewing <lewing@microsoft.com>
Santiago Fernandez Madero [Wed, 9 Dec 2020 04:46:44 +0000 (20:46 -0800)]
Disable long running Socket test on Mono (#45811)
Santiago Fernandez Madero [Wed, 9 Dec 2020 01:45:52 +0000 (17:45 -0800)]
Add workarounds for brew on old OSX images (#45802)
* Add workarounds for brew on old OSX images
* Don't remove openssl directories
Andy Ayers [Wed, 9 Dec 2020 01:11:46 +0000 (17:11 -0800)]
JIT: remove early prop's type propagation (#45655)
This doesn't do any actual propagation, so remove it and the associated
tracking flags.
Jeremy Koritzinsky [Wed, 9 Dec 2020 00:43:08 +0000 (16:43 -0800)]
Add a blurb on the x86 calling convention to clr-abi.md (#45807)
Co-authored-by: Sergey Andreenko <seandree@microsoft.com>
Dan Moseley [Tue, 8 Dec 2020 23:58:11 +0000 (15:58 -0800)]
Update using-dotnet-cli.md (#45717)
* Update using-dotnet-cli.md
* Update using-dotnet-cli.md
Change versions to 6.0
* Update using-dotnet-cli.md
* Update using-dotnet-cli.md
* Update using-dotnet-cli.md
* Update using-dotnet-cli.md
Vladimir Sadov [Tue, 8 Dec 2020 23:50:10 +0000 (15:50 -0800)]
renaming `clrcompression` --> `System.IO.Compression.Native` (#45713)
* renaming `clrcompression` --> `System.IO.Compression.Native`
* rename `clrcompression.def` file
* exclude `System.*.Native.dll` when creating managed shims
* static library should be `System.IO.Compression.Native.lib` on Windows. Same as Globalization - without `lib` prefix
* revert change to the resource string in tests
* move consts to src/Interop, remove `lib` prefix on Windows
* Delete what used to be System.IO.Compression.clrcompression package
* Preserve old PlatformManifestFileEntry for clrcompression.dll
* partially revert the src\Interop change
* Adjust projects for removal of `Interop\Interop.Libraries.cs`
revert 1
* Undo entire System.IO.Compression.csproj to get rid of an invisible edit.
Eric Erhardt [Tue, 8 Dec 2020 23:33:56 +0000 (17:33 -0600)]
Ensure XslCompiledTransform works with TrimMode=link (#45522)
Resolve ILLinker warnings in Xml.Xsl in order to make a basic Xslt scenario work.
Fix #45393
Eric Erhardt [Tue, 8 Dec 2020 23:32:02 +0000 (17:32 -0600)]
Address remaining Ref.Emit ILLink warnings in Mono. (#45723)
* Address remaining Ref.Emit ILLink warnings in Mono.
Contributes to #45623
* Remove mono suppressions file from illink-sharedframework.targets
monojenkins [Tue, 8 Dec 2020 22:03:02 +0000 (17:03 -0500)]
[aot] Don't force gsharedvt to be enabled in llvmonly+interp mode. (#45687)
Co-authored-by: vargaz <vargaz@users.noreply.github.com>
Jan Kotas [Tue, 8 Dec 2020 20:16:36 +0000 (12:16 -0800)]
Simplify devirtualization in crossgen2 (#45744)
Eric StJohn [Tue, 8 Dec 2020 19:23:00 +0000 (11:23 -0800)]
Update package baseline for 5.0.1 (#45775)
Zoltan Varga [Tue, 8 Dec 2020 19:14:56 +0000 (14:14 -0500)]
Add support for MONO_TYPE_FNPTR to aot. (#45616)
Fixes https://github.com/dotnet/runtime/issues/45548.
Jan Kotas [Tue, 8 Dec 2020 18:40:17 +0000 (10:40 -0800)]
Find&Replace coreclr/src -> coreclr (#45761)
Anton Firszov [Tue, 8 Dec 2020 18:09:03 +0000 (19:09 +0100)]
WinHttpHandler: apply [SupportedOSPlatform("windows10.0.19041")] on TcpKeepAlive properties (#45494)
WINHTTP_OPTION_TCP_KEEPALIVE is only available since the May 2020 Update, so it's reasonable to decorate the TcpKeepalive API with [SupportedOSPlatform]
monojenkins [Tue, 8 Dec 2020 17:48:04 +0000 (12:48 -0500)]
Fix LLVM link issues when compiling static library on Windows. (#45752)
Co-authored-by: lateralusX <lateralusX@users.noreply.github.com>
Viktor Hofer [Tue, 8 Dec 2020 15:24:24 +0000 (16:24 +0100)]
Add Microsoft StrongNameKey back to System.Composition* (#45756)
Viktor Hofer [Tue, 8 Dec 2020 12:31:52 +0000 (13:31 +0100)]
Move msbuild tasks into src folder and delete dead code (#45722)
* Move tools-local\tasks to src\tasks
* Delete dead task code
* nit installer.tasks.csproj changes
* Remove mobile.tasks intermediate folder
dotnet-maestro[bot] [Tue, 8 Dec 2020 10:34:03 +0000 (10:34 +0000)]
Update dependencies from https://github.com/dotnet/xharness build
20201207.2 (#45726)
[master] Update dependencies from dotnet/xharness
Peter Sollich [Tue, 8 Dec 2020 10:29:08 +0000 (11:29 +0100)]
Equalize marklists (#41599)
Equalize mark lists across GC heaps in Server GC.
With real world workloads, we observe that the size of the mark lists is often very uneven across the heaps. This will also lead to uneven sort times across the heaps. As the GC threads need to synchronize at the end of sort_mark_list, the GC threads with less work will need to wait for those with more work to finish.
Therefore, it should be advantageous to even out the workload before we start sorting.
This PR does this adding a new method equalize_mark_lists that is called at the beginning of sort_mark_list. This method is executed in parallel on all GC threads and computes what pieces of the mark list need to be moved from one heap to another to achieve an even distribution. To avoid additional synchronization, each GC thread only writes its own mark list, and treats the other mark lists as read-only.
Performance analysis for a real-word scenario showed a 2.0 ms (3.2%) reduction in GC pause time.
Aaron Robinson [Tue, 8 Dec 2020 05:08:58 +0000 (21:08 -0800)]
COM Host - Invalid compute of default value string length (#45728)
Incorrectly compute the length of the default string value
for a registry key. This doesn't impact the actual COM
registration but does impact tooling that helps with COM
registration.
Ben Adams [Tue, 8 Dec 2020 04:47:55 +0000 (04:47 +0000)]
Fix .sln path for shared for coreclr (#45738)
Jan Kotas [Tue, 8 Dec 2020 04:43:26 +0000 (20:43 -0800)]
Fix conditions for implicit use of hardware intrinsics (#45662)
JIT uses hardware intrinsics implicitly in certain cases. Unlike regular hardware intrinsics, these
transformations are not guarded using explicit IsSupported checks. NativeAOT had fragile code that tried
to step around this limitation. This change makes this contract explicit by allowing notifyInstructionSetUsage
callback to return bool that the EE side can use to suppress implicit use of hardware intrinsics.
Fixes dotnet/runtimelab#425
Andy Gocke [Tue, 8 Dec 2020 03:21:23 +0000 (19:21 -0800)]
Change temp folder name used in installer tests (#45523)
Tests in the AppHost.Bundle.Tests assembly seem to randomly fail due to a race condition
with the file system. They try to create separate '0','1','2'... subdirectories to isolate
the published files for each test, but I think what's happening is that files may be
marked for deletion, but then not deleted until a later write. For instance, files in
'2' may be marked for deletion and some may fail a File.Exists check, which leads to
'2' being recreated, at which point deletion may occur, which will cause the current test
to fail due to a concurrent write operation.
This change tries to avoid locking & contention by randomly generating folder names and
using a (hopefully atomically created) lock file to indicate ownership of a particular name.
Fixes #43316
Tomáš Rylek [Tue, 8 Dec 2020 02:19:44 +0000 (03:19 +0100)]
December infra rollout - remove duplicated 'src' from coreclr subrepo (src/coreclr/src becomes src/coreclr) (#44973)
* Move src/coreclr/src/Directory.Build.targets to src/coreclr
Merge src/coreclr/src/CMakeLists.txt into src/coreclr/CMakeLists.txt
* Mechanical move of src/coreclr/src to src/coreclr
* Scripts adjustments to reflect the changed paths
John Salem [Tue, 8 Dec 2020 01:21:04 +0000 (17:21 -0800)]
Enable StressLog for subprocess in EventPipe tests (#45425)
SingleAccretion [Tue, 8 Dec 2020 00:26:18 +0000 (03:26 +0300)]
Reword the note on redundancy of frequent clean builds (#45718)
Viktor Hofer [Tue, 8 Dec 2020 00:06:30 +0000 (01:06 +0100)]
Move regenerate-download-table and cleanup (#45724)
Adeel Mujahid [Tue, 8 Dec 2020 00:05:07 +0000 (02:05 +0200)]
Add default case in RLimitResources switch (#45707)
* Add default case in RLimitResources switch
* Fix cmake warning in libs, showing up in -s clr too
David Wrighton [Mon, 7 Dec 2020 22:12:04 +0000 (14:12 -0800)]
There is one true bool and it is bool (#45630)
While reviewing a PR by @AndyAyersMS, I saw that @Rattenkrieg had noticed our variable use of the `bool` and `BOOL` types. This change converts all BOOL usage to bool in the jit interface api,
- This change should have no impact on anything but the jit interface api surface
- I have a goal of converting the jit interface to be loadable in a non-PAL based header environment. As part of that BOOL as well as many other Windowsisms will need to go away and be replaced by standard types
- This was just the first type, although its the only type change that I believe will necessitate changes in the managed crossgen2 codebase
Huo Yaoyuan [Mon, 7 Dec 2020 22:11:04 +0000 (06:11 +0800)]
Add CompressionLevel.SmallestSize (#41960)
* Add CompressionLevel.SmallestSize and map to ZLibNative.CompressionLevel.BestCompression.
* Update xmldoc for CompressionLevel.
* Fix xml doc on ZLibNative.CompressionLevel.
* Apply suggestion from review
Co-authored-by: Dan Moseley <danmose@microsoft.com>
* Add SmallestSize to tests.
* Add test for compression level and sizes.
* Update src/libraries/Common/tests/System/IO/Compression/CompressionStreamUnitTestBase.cs
* Brotli
* Re-add size in order test.
Co-authored-by: Dan Moseley <danmose@microsoft.com>
Layomi Akinrinade [Mon, 7 Dec 2020 22:06:56 +0000 (14:06 -0800)]
Update CODEOWNERS (#45620)
Mitchell Hwang [Mon, 7 Dec 2020 21:21:01 +0000 (16:21 -0500)]
[wasm] Add WasmAppBuilder pkgproj for wasm sample (#44749)
* Add wasm sample pkgproj
* Add wasm Sample pkgproj to descriptions
* Add wasm sample pkgproj ProjectReference
* Add packaging target
* Update to use NetCoreAppToolCurrent
Co-authored-by: Mitchell Hwang <mitchell.hwang@microsoft.com>
dotnet-maestro[bot] [Mon, 7 Dec 2020 21:20:07 +0000 (21:20 +0000)]
Update dependencies from https://github.com/dotnet/xharness build
20201207.1 (#45684)
[master] Update dependencies from dotnet/xharness
Ryan Lucia [Mon, 7 Dec 2020 19:51:31 +0000 (14:51 -0500)]
Add test for exception propagation inside loader events (#43910)
James Newton-King [Mon, 7 Dec 2020 19:43:03 +0000 (08:43 +1300)]
Enable nullable on HostFactoryResolver (#45513)
Koundinya Veluri [Mon, 7 Dec 2020 19:20:33 +0000 (11:20 -0800)]
Update portable thread pool event enablement checks (#45681)
* Revert "Make PortableThreadPool to check events correctly before firing them (#45666)"
This reverts commit
83d19de66a596ff5e0ad0519e48dff62945cc636.
* Add keyword and verbosity checks for events
Reverted the part of https://github.com/dotnet/runtime/pull/38225/commits/
e8043ffa05450b1983a1e751d0a1af80e43e1f31 regarding `IsEnabled` checks
monojenkins [Mon, 7 Dec 2020 18:11:16 +0000 (13:11 -0500)]
[aot] Store the addresses of aot constants in an array instead of using a switch statement on wasm to save space. (#45669)
Co-authored-by: vargaz <vargaz@users.noreply.github.com>
Carol Eidt [Mon, 7 Dec 2020 17:56:50 +0000 (09:56 -0800)]
Combine free and busy register allocation (#45135)
* Combine free and busy allocation
Perform register allocation for a given RefPosition
with a single traversal of the registers, whether free
or busy.
* More refactoring
* More refactoring to separate evaluation of heursitics.
* More refactoring to simplify configuration.
Fix one source of arm32 double diffs.
* Delete unused `registerIsAvailable` method
Fix `nextPhysRefLocation` computation for Arm32
* Use `UNIT_MAX` not `MAXUINT`
* clear constantReg when interval is moved
* Fix merge issues
* Fix weight
* Fix spill cost update for UpperVectors
* Fix a bug in reload of multireg call on Arm64
* FixedReg fixes
* Review feedback and other cleanup
* Call clearConstanReg before nulling out the interval, so that we can correctly handling doubles on ARM
* Minor cleanup
* Formatting changes
* Other minor pending fixes
Co-authored-by: Kunal Pathak <Kunal.Pathak@microsoft.com>
Adeel Mujahid [Mon, 7 Dec 2020 17:54:54 +0000 (19:54 +0200)]
Fix GNU linker detection on FreeBSD (#45664)
dotnet-maestro[bot] [Mon, 7 Dec 2020 17:00:56 +0000 (18:00 +0100)]
[master] Update dependencies from mono/linker (#45565)
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Eric Erhardt [Mon, 7 Dec 2020 16:37:35 +0000 (10:37 -0600)]
Suppress ILLink warnings in Reflection (#45603)
* Suppress RunClassConstructor ILLinker warning in RuntimeConstructorInfo
This instance is the static constructor, so the static constructor will be present.
* Suppress ILLink warning in CustomAttributeData.Init.
Update ILLink.Suppressions file.
dotnet-maestro[bot] [Mon, 7 Dec 2020 11:45:38 +0000 (11:45 +0000)]
Update dependencies from https://github.com/dotnet/xharness build
20201204.1 (#45626)
[master] Update dependencies from dotnet/xharness
Sung Yoon Whang [Mon, 7 Dec 2020 04:24:15 +0000 (20:24 -0800)]
Make PortableThreadPool to check events correctly before firing them (#45666)
Vladimir Sadov [Mon, 7 Dec 2020 04:08:41 +0000 (20:08 -0800)]
Static linking of native libs (#44505)
* from prototype
* fix OSX
* fix for Android
* treat "libSystem.Globalization.Native" as QCall in mono too (for now).
* fix for wasm
* fix pedantic errors on GCC
* delete gPalGlobalizationNative
* pass overrider from the host
* default override
* default PInvoke override runs after optional host-provided overrider.
* Some PR feedback (mostly related to code, not the CMake stuff).
* more coding PR feedback
* Deleted "libraries-native" folder.
* unifying tryrun.cmake into 1 common file
* factor out adding lib-specific dependencies into one place (per native library)
* cleanup: entirely remove tryrun.cmake propagation in eng, gen-buildsys, build-commons, and build scripts
* remove "clrcompression.dll" and "libSystem.IO.Compression.Native.dylib" from single-file host packaging
* mono: refactor Globalization lookup into `default_resolve_dllimport`.
* set FEATURE_DISTRO_AGNOSTIC_SSL according to __PortableBuild
* CORECLR_CALLING_CONVENTION for the host callback types
* refactor common parts of entrypoints.c into entrypoints.h
* rename OverrideEntry --> DllImportEntry
* extra libs as CMake functions
* use macros instead of functions in extra_libs.cmake
* mono formatting style in src/mono/mono/metadata/native-library.c
Co-authored-by: Ryan Lucia <ryan@luciaonline.net>
* mono: Remaining stylistic nits.
Co-authored-by: Ryan Lucia <ryan@luciaonline.net>
* do not set DFEATURE_DISTRO_AGNOSTIC_SSL on iOS, Android, tvOS
Co-authored-by: Ryan Lucia <ryan@luciaonline.net>
Jan Kotas [Sun, 6 Dec 2020 20:42:39 +0000 (12:42 -0800)]
Delete redundant DivMod implementation (#45652)
Jan Kotas [Sun, 6 Dec 2020 19:33:18 +0000 (11:33 -0800)]
Delete IsIntrinsicWorkaround (#45656)
Tomáš Rylek [Sun, 6 Dec 2020 19:10:56 +0000 (20:10 +0100)]
Add support for diffing GC ref map info to R2RDump; small bugfix (#45619)
xtqqczze [Sun, 6 Dec 2020 16:24:57 +0000 (16:24 +0000)]
Upgrade StyleCopAnalyzers to v1.2.0-beta.304 (#45644)
Follow-up to #45562.
Andy Ayers [Sat, 5 Dec 2020 16:33:21 +0000 (08:33 -0800)]
Get exact class during devirtualization (#45526)
If we devirtualize to a method on a generic class, try and obtain the
exact class. Pass this back to the jit to unblock some types of inlines.
Also refactor how information is passed during devirtualization in
anticipation of follow on work to devirtualize default interface methods.
Because there are now multiple inputs and outputs, convey everything
using a struct.
Resolves #38477.
Hong Li [Sat, 5 Dec 2020 02:38:12 +0000 (18:38 -0800)]
Update area-owners.md (#45584)
Andy Ayers [Sat, 5 Dec 2020 02:19:37 +0000 (18:19 -0800)]
JIT: don't compute edge weights when there's no profile data (#45615)
We don't look edge the weights unless there's profile data, so only compute
edge weights if there is profile data.
Saves a tiny bit on TP (~0.2%).
Roman Konecny [Fri, 4 Dec 2020 22:42:40 +0000 (23:42 +0100)]
Optimize huffman encoding static table initialization (#45303)
Huffman encoding table split into two static arrays
Maoni Stephens [Fri, 4 Dec 2020 21:43:43 +0000 (13:43 -0800)]
This is an initial checkin and allows to run some tests (I've included the ones I ran below). (#45172)
I have not done a full functional test run - there are things I know don't work yet. But being
able to run some tests will allow multiple people to work on this in parallel.
I added an env var for now to specify the range for regions. We can have a default reserve range
that's very large. This simplies a lot of things. Right now I'm only enabling the feature on 64-bit
because I've only been testing on 64-bit. For 32-bit we would likely still need to have things like grow_brick_card_tables.
Each generation has at least one region; each region can only belong to one generation.
---
Main changes -
+ I'm using the current heap_segment to represent a region instead of doing a ton of renaming
because each region also needs to keep track of the same allocated/committed/etc. So when
USE_REGIONS is defined you could think region whenever you see segment. But gen/planned gen
are now maintained by each region since we no long have a contiguous range for ephemeral gens.
+ Added a simple region allocator that finds free blocks for region alloc requests and coalesce
adjacent free blocks.
+ Places that need to check for ephemeral generations are changed to check for gen_num/plan_gen_num
accordingly, eg, gc_mark, mark_through_cards, relocate_address.
+ plan phase is changed quite a bit to accommodate regions, eg, we set each region's plan as
we've planned them; we need to go through eph regions for allocating survivors, instead of
detecting crossing gen0/1 boundary by the survivors position relative to their gen start, we
plan the next generation (if necessary) when we run out of regions of the current generation
we are going through. This actually avoids some of the complexity with segments.
+ sweep phase is heavily changed since we don't have a gen limit to detect eph gen boundaries
anymore.
+ Rewrote the code that threads segments together for regions after compact/sweep is done.
+ Changed the SOH allocator to acquire new regions when needed, still maintain ephemeral_heap_segment
but now it's used to indicate the region we are currently allocating in.
+ Got rid of the following that doesn't apply to regions -
ephemeral_low/ephemeral_high
demotion_low/demotion_high
Some of these were replaced for regions; others haven't been (like ephemeral_low/ephemeral_high)
which will be done in separate work items.
+ Added some internal stress mechanisms like selectively pinning some objects and creating ro segs
in GC.
+ I have not changed the write barrier code so for WKS GC cards will be set unconditionally like in
SVR GC.
+ Changed verify_heap to verify regions.
+ Perf changes, eg, to determine compaction.
+ Some changes for BGC; it's still incomplete but I've changed places where it needs to avoid reading
into the ephemeral regions for concurrent like BGC revisit/overflow. Overflow can be optimized to
be per region (this optimization applies to segs as well but more gains with regions).
Some key implementation differences between regions and segments -
+ We no longer have the expand heap code paths which simplies things by a lot.
+ We no longer have a generation start object - each generation has a list of regions that belong to
that generation. Any empty region can be removed off of this list. This is different from when we
had a generation start which meant the first segment would never be empty and we don't reuse it for new
eph seg.
+ With segments in plan phase we may not have allocated gen1/0 start while going through survivors since
there may not be survivors in gen1/0... with regions it's different because each time I finish a generation
I will call process_last_np to allocate the new gen. It's more consistent.
+ consing_gen in plan phase really doesn't need to be a generation. With segments it would change that
generation's alloc seg and we'd switch to gen1 when we need to plan ephemeral generations. But this is
unnecessary because all we need is the alloc_ptr/limit pair + alloc seg (or alloc region for regions).
I've made some progress simplying this so this never changes (always the condemned gen) and always
represents the alloc_ptr/limit/region. We can totally get rid of consing_gen and only maintain those
3 things.
=======
Other things worth mentioning -
+ I intentionally left quite a bit of logging for the new code. Some can be removed when the code
is more baked.
+ I have some "REGIONS TODO"s in the code that are things needed to changed about this PR. Of course
there are many optimizations that will be done - seperated PRs will be submitted for those.
=======
This is the env I used for testing -
complus_gcConcurrent=0
complus_GCLogEnabled=1
complus_GCLogFile=c:\temp\gclog
complus_GCLogFileSize=100
complus_GCName=clrgc.dll
complus_GCRegionsRange=
20000000
complus_heapverify=1
complus_StressLog=0
command line I used for GCPerfSim -
-tc 2 -tagb 16 -tlgb 0.05 -lohar 0 -sohsi 10 -lohsi 0 -pohsi 0 -sohpi 0 -lohpi 0 -pohpi 0 -sohfi 0 -lohfi 0 -pohfi 0 -allocType reference -testKind time -printEveryNthIter 300000
-tc 2 -tagb 32 -tlgb 0.05 -lohar 100 -sohsi 10 -lohsi 100 -pohsi 0 -sohpi 0 -lohpi 0 -pohpi 0 -sohfi 0 -lohfi 0 -pohfi 0 -allocType reference -testKind time -printEveryNthIter 300000
Zoltan Varga [Fri, 4 Dec 2020 20:16:49 +0000 (15:16 -0500)]
Fix warnings in the code emitted by the wasm pinvoke generator. (#45322)
Santiago Fernandez Madero [Fri, 4 Dec 2020 20:08:35 +0000 (12:08 -0800)]
Add link to active issue attribute on PR guide (#45606)
Carol Eidt [Fri, 4 Dec 2020 20:05:23 +0000 (12:05 -0800)]
Add description of AvoidSplittingBackedge branch and link to #40264 (#45609)
Aleksey Kliger (λgeek) [Fri, 4 Dec 2020 19:37:27 +0000 (14:37 -0500)]
[Mono] Arrays shouldn't implement linked out generic classes (#45125)
Elinor Fung [Fri, 4 Dec 2020 18:30:03 +0000 (10:30 -0800)]
Slight cleanup of host test RepoDirectoriesProvider helper (#45579)
Alexander Köplinger [Fri, 4 Dec 2020 17:21:44 +0000 (18:21 +0100)]
Use NetCoreAppToolCurrent TFM for *AppBuilders (#45591)
This ensures they're built against net5.0 right now instead of net6.0.
Next Turn [Fri, 4 Dec 2020 16:11:24 +0000 (00:11 +0800)]
Replace new UTF8Encoding(false) (#45541)
* Replace new UTF8Encoding(false)
* Remove static field
Eric Erhardt [Fri, 4 Dec 2020 16:06:17 +0000 (10:06 -0600)]
Remove unnecessary IsStatic checks in ActivatorUtilities (#45439)
Vadim Galaktionov [Fri, 4 Dec 2020 13:04:46 +0000 (16:04 +0300)]
Fix resolve root IServiceProvider (#45171)
Maryam Ariyan [Fri, 4 Dec 2020 13:01:36 +0000 (05:01 -0800)]
Breaking change: Throw when resolving on a disposed service provider (#45116)
Juan Hoyos [Fri, 4 Dec 2020 05:18:02 +0000 (21:18 -0800)]
Add documentation on how to disable runtime tests (#45578)
* Update pr-guide.md
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
Ilia [Fri, 4 Dec 2020 04:50:12 +0000 (07:50 +0300)]
Return the result of PAL_InjectActivation in Thread::InjectGcSuspension (#44731)
Tomáš Matoušek [Fri, 4 Dec 2020 04:46:50 +0000 (20:46 -0800)]
Document Compilation Options and Compilation Metadata References CDIs (#37605)
Egor Bogatov [Fri, 4 Dec 2020 04:39:33 +0000 (07:39 +0300)]
Add Tuple-based Math.DivRem overloads (#45074)
* Add Tuple-based Math.DivRem overloads
* Remove internal versions of Math.DivRem
* Add AggressiveInlining
* Add comments
Co-authored-by: Stephen Toub <stoub@microsoft.com>
Bruce Forstall [Fri, 4 Dec 2020 04:34:36 +0000 (20:34 -0800)]
Fix location of JIT-EE version GUID (#45574)
With #45044 it moved from corinfo.h to jiteeversionguid.h
Jeremy Koritzinsky [Fri, 4 Dec 2020 04:16:27 +0000 (20:16 -0800)]
Update UnmanagedCallersOnly tests to not emit IL (#45572)
* Update UnmanagedCallersOnly tests to emit IL only when needed.
* Move last test into IL and delete test that uses invalid IL that only RefEmit can handle.
Sung Yoon Whang [Fri, 4 Dec 2020 03:59:57 +0000 (19:59 -0800)]
Make BinderEventListener not listen to TplEventSource (#45570)
* Make BinderEventListener not listen to TplEventSource
* Remove TasksFlowActivityIds definition
Co-authored-by: Juan Hoyos <juan.hoyos@microsoft.com>
Eric Erhardt [Fri, 4 Dec 2020 02:14:14 +0000 (20:14 -0600)]
XmlSerializer.Serialize doesn't work when using TrimMode=link (#44772)
* XmlSerializer.Serialize doesn't work when using TrimMode=link
Make XmlSerializer work correctly with ILLinker trimming.
1. Use constant BindingFlags to work around https://github.com/mono/linker/issues/1617
2. Annotate CodeGenerator.CreateTypeBuilder correctly to preserve base class members
Fix #41389
* Update ILLinker suppressions file.
* PR feedback.
Fix ILLinker suppresions.
Bruce Forstall [Fri, 4 Dec 2020 01:16:10 +0000 (17:16 -0800)]
SuperPMI collection pipeline: fix location of JIT-EE version GUID (#45576)
With #45044 it moved from corinfo.h to jiteeversionguid.h
Jeremy Koritzinsky [Fri, 4 Dec 2020 00:06:23 +0000 (16:06 -0800)]
Various fixes in Microsoft.NETCore.App packs (#45566)
xtqqczze [Fri, 4 Dec 2020 00:02:32 +0000 (00:02 +0000)]
Upgrade StyleCopAnalyzers to v1.2.0-beta.261 (#45562)
* Upgrade StyleCopAnalyzers to v1.2.0-beta.261
https://github.com/DotNetAnalyzers/StyleCopAnalyzers/releases/tag/1.2.0-beta.261
* Disable SA1142
* Enable SA1142 except in tests
Santiago Fernandez Madero [Thu, 3 Dec 2020 23:02:21 +0000 (15:02 -0800)]
Fix dependency for test assets on musl test runs (#45567)
* Fix dependency for test assets on musl test runs
* Use testOsSubGroup on dependency
Santiago Fernandez Madero [Thu, 3 Dec 2020 22:39:39 +0000 (14:39 -0800)]
Disable Long Running JSON tests on Checked CoreCLR (#45505)
* Disable Long Running JSON tests on Checked CoreCLR
* PR Feedback
Jan Vorlicek [Thu, 3 Dec 2020 21:34:47 +0000 (22:34 +0100)]
Don't emit type fixups for primitive types in Crossgen2 (#45555)
We were emitting fixups for primitive types like bool, void, etc. These
are not necessary as all of these types are always loaded and so it was
just a waste of R2R file space.
This change blocks generating fixups for those.
Yujin Lee [Thu, 3 Dec 2020 21:16:16 +0000 (06:16 +0900)]
Removed Serialization tests for SQLClient types (#42016)
* Remove Serialization tests for SQLClient types
* Deleted reference to System.Data.SqlClient
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
Jan Vorlicek [Thu, 3 Dec 2020 20:38:32 +0000 (21:38 +0100)]
Fix covariant returns with generic return types (#45275)
* Fix covariant returns with generic return types
When a covariant return type was an uninstantiated generic type, the
ClassLoader::IsCompatibleWith was not working properly. In debug builds,
it was asserting because there was no MethodTable for that type and in
release builds, it resulted in ExecutionEngineException or an internal
CLR error.
This change fixes it by using TypeHandle::CanCastTo instead of
MethodTable::CanCastTo and adds a regression test for two cases where
the problem was observed (Assembly.GetTypes() and creating an instance
of a type with a covariant return with a problematic kind of type).
* Fix issue 45082 too
There were two issues. First, the
ClassLoader::ValidateMethodsWithCovariantReturnTypes was called before
typeHnd.DoFullyLoad and that resulted in an assert down the call chain
of TypeDesc::CanCastTo due to a wrong load level.
Second, the SigTypeContext generation for the current MD in the
ClassLoader::ValidateMethodsWithCovariantReturnTypes requires the same
change for class instantiation as the one that we had for the parent MD.
* Fix the issue 45082 in a correct way
The call to ClassLoader::ValidateMethodsWithCovariantReturnTypes is now
in MethodTable::DoFullyLoad.
I have also added a test case that verifies a case that David Wrighton
has suggested offline, where there are 3 types... A, B and C.
C derives from B which derives from A. B has a bad override which
should produce an error. Then, cause C to be fully loaded without
otherwise triggering a load of B.
Eric Erhardt [Thu, 3 Dec 2020 20:34:52 +0000 (14:34 -0600)]
Remove FEATURE_COMPILED_XSL define (#45553)
* Remove FEATURE_COMPILED_XSL define
This is always defined, so there is no need in this define. In the past, it was not defined for UAP builds.
* Remove unused resource
Jeremy Koritzinsky [Thu, 3 Dec 2020 19:58:19 +0000 (11:58 -0800)]
Move return buffer handling from interop to the JIT (#39294)
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
Co-authored-by: Carol Eidt <carol.eidt@microsoft.com>
Co-authored-by: Sergey Andreenko <seandree@microsoft.com>
Co-authored-by: Andy Ayers <andya@microsoft.com>
Carol Eidt [Thu, 3 Dec 2020 19:15:40 +0000 (11:15 -0800)]
Update first-class-structs.md (#45512)
* Update first-class-structs.md
* Address feedback and add links to x64 vector ABI branches
Steve Pfister [Thu, 3 Dec 2020 18:29:31 +0000 (13:29 -0500)]
Adds support for testing tvOS (#45043)
XHarness already supports tvOS as a target, so this change supplies the right info
Co-authored-by: Steve Pfister <steve.pfister@microsoft.com>
dotnet-maestro[bot] [Thu, 3 Dec 2020 16:39:12 +0000 (16:39 +0000)]
[master] Update dependencies from dotnet/xharness dotnet/runtime-assets dotnet/arcade (#45487)
[master] Update dependencies from dotnet/xharness dotnet/runtime-assets dotnet/arcade
Vitek Karas [Thu, 3 Dec 2020 15:21:22 +0000 (07:21 -0800)]
Correctly apply EventSourceSupport feature switch to NativeRuntimeEventSource (#43602)
`NativeRuntimeEventSource.Process` is called from native code in CoreCLR and as such is rooted in the descriptor. But if event source is disabled via feature switch it should not do anything.
monojenkins [Thu, 3 Dec 2020 13:05:25 +0000 (08:05 -0500)]
[runtime] Avoid checking for hardened runtime on ios, its not needed, and it causes alerts because of PROT_WRITE|PROT_EXEC. (#45514)
Co-authored-by: vargaz <vargaz@users.noreply.github.com>
Peter Sollich [Thu, 3 Dec 2020 08:25:08 +0000 (09:25 +0100)]
Fix issue 45091 (#45409)
Fix overeager call to Validate() - we should call this with a bDeep parameter of FALSE, because the pointers to other objects may not be valid yet, if these other objects have not yet been copied.
Note this issue will only repro if HEAPVERIFY_GC is on - otherwise we won't attempt to verify pointers to other objects.
Juan Hoyos [Thu, 3 Dec 2020 07:45:00 +0000 (23:45 -0800)]
Temporarily disable Mono Desktop Windows Release x64 (#45529)
Santiago Fernandez Madero [Thu, 3 Dec 2020 05:52:07 +0000 (21:52 -0800)]
DisableFileSystemWatcherTest (#45511)
Eric Erhardt [Tue, 1 Dec 2020 22:28:36 +0000 (16:28 -0600)]
Remove ActivatorUtilities_In_DependencyInjection #define
Eric Erhardt [Tue, 1 Dec 2020 22:11:52 +0000 (16:11 -0600)]
Move ActivatorUtilities from the Common directory to DI.Abstractions
This is the only project in the repo that uses this file. There's no reason for it to be in the Common directory.
Santiago Fernandez Madero [Thu, 3 Dec 2020 02:33:11 +0000 (18:33 -0800)]
Fix continue on error conditions (#45519)
David Mason [Thu, 3 Dec 2020 02:17:04 +0000 (18:17 -0800)]
fix invalid IL in profiler stub helper (#45453)
Andrew Au [Thu, 3 Dec 2020 01:59:50 +0000 (17:59 -0800)]
Fixes paths (#45392)