buyaa-n [Mon, 16 Dec 2019 21:09:45 +0000 (13:09 -0800)]
Annotate System.Collections.Immutable for nullable (#367)
* Annotate System.Collections.Immutable for nullable
Andy Ayers [Mon, 16 Dec 2019 20:03:15 +0000 (12:03 -0800)]
JIT: detect address of field as an invariant inlining arg (#845)
Update the check for arg invariance to include addresses of fields in local
structs. This allows the inliner to directly substitute more arguments into
the body of the inlinee.
Resolves dotnet/coreclr#27630.
mikedn [Mon, 16 Dec 2019 18:49:09 +0000 (20:49 +0200)]
Start generating LCL_FLDs in LocalAddressVisitor (#737)
* Start generating LCL_FLDs in LocalAddressVisitor
* Fix broken vararg offset computation
Since it's subtracted the local field offset also need to be subtracted so it actually ends up being added as needed.
* Introduce array/index temps for LCL_FLDs
Previously fgMorphArrayIndex was always creating temporaries for array/index FIELD trees. Since now LCL_FLDs are created before fgMorphArrayIndex this preserves the existing behavior.
* CR feedback
* Fix incorrect field sequence type check
* Fix GetTail formatting
Viktor Hofer [Mon, 16 Dec 2019 18:36:55 +0000 (19:36 +0100)]
Remove usage of TargetGroup where possible (#899)
In non-infra related paths we don't need to check on TargetGroup anymore
and can instead use the well-known TargetFramework property.
Tanner Gooding [Mon, 16 Dec 2019 15:48:36 +0000 (07:48 -0800)]
Merge pull request #257 from tannergooding/float-format
Fixing Dragon4 to take unbiased rounding into account.
Viktor Hofer [Mon, 16 Dec 2019 15:30:02 +0000 (16:30 +0100)]
Use default setting for UseSharedCompilation (#900)
UseSharedCompilation now defaults to true in the Microsoft.Net.Compilers.Toolset package. Previously we used the deprecated Microsoft.Net.Compilers package in which the property defaults to false.
Andy Gocke [Sun, 15 Dec 2019 23:13:46 +0000 (15:13 -0800)]
Add SkipLocalsInitAttribute (#454)
This attribute supports a new compiler feature that allows a user to
specify that they don't want to emit the CLR `.locals init` portion of
the header in methods. This can sometimes produce a performance
improvement but, in some cases, can reveal uninitialized memory to the
application.
Fixes https://github.com/dotnet/corefx/issues/29026
Vladimir Sadov [Sun, 15 Dec 2019 19:43:39 +0000 (11:43 -0800)]
Adjusting `GetCurrentProcessorId` caching to different environments. (#467)
* Adjusting `GetCurrentProcessorId` caching rate based on relative performance of `GetCurrentProcessorNumber` and `TheadStatic`
Tanner Gooding [Fri, 22 Nov 2019 23:33:41 +0000 (15:33 -0800)]
Adding a regression test for corefx#42576
Tanner Gooding [Thu, 21 Nov 2019 20:39:03 +0000 (12:39 -0800)]
Fixing Dragon4 to take unbiased rounding into account.
Santiago Fernandez Madero [Sun, 15 Dec 2019 00:36:43 +0000 (18:36 -0600)]
Use wildcard to resolve S.P.CoreLib from CoreCLRArtifacts (#878)
* Use wildcard to resolve S.P.CoreLib from CoreCLRArtifacts
* Probe 2 paths instead
Jeremy Koritzinsky [Sat, 14 Dec 2019 23:06:20 +0000 (15:06 -0800)]
Remove PackageReference to cijobs tool used to add it to Core_Ro… (#746)
* Remove PackageReference to cijobs tool.
* Remove jit-dasm and jit-analyze package references per feedback.
* Remove test_runtime.csproj and move the copying of the UCRT files to Core_Root to test_dependencies.csproj.
Tomáš Rylek [Sat, 14 Dec 2019 22:38:17 +0000 (23:38 +0100)]
Fix incorrect merge of my framework crossgenning fix with Jeremy's local live-live change (#879)
I found out that in two places my fix for crossgenning the framework
incorrectly merged with Jeremy's live-live change. In particular,
as I was moving around the steps for patching CORE_ROOT with explicit
CoreFX while Jeremy was deleting them, my changes inadvertently
resurrected two such deleted sections.
Thanks
Tomas
Anirudh Agnihotry [Sat, 14 Dec 2019 20:22:29 +0000 (12:22 -0800)]
Removing "netcoreapp" and "netfx" TargetGroup (#457)
* netcoreapp -> netcoreapp5.0 in .sln files
* netcoreapp; -> netcoreapp5.0; , netcoreapp- to netcoreapp5.0-
* netcoreapp- -> netcoreapp5.0 in .csproj
* 'netcoreapp -> 'netcoreapp5.0 in .csproj
* done with libraries sub folder
* missed semicolon
* minor changes
* netcoreapp -> netcoreapp5.0 in some extra files
* vNext target variable in configurations.props
* netcoreapp => netcoreapp5/0 in some other .props file
* netcoreapp -> vnext in .csproj
* making the netcorepap framework switch work
* fixing sendToHelix and linux build
* TargetFrameworkVNext -> netcoreappCurrent
* case correct netcoreappcurrent
* fixing send to helix zip path
* netfx -> net472 in .sln
* netfx; -> net472; in .props
* netfx- -> net472- in .props
* netfx - -> net472- in .csproj
* 'netfx-> 'net472 in .csproj
* netfx -> net472 manual change
* fixing ci build for netfx
* Not trying to change the global property
* Fixing build failure due to master changes in net https tests
* adding documentaiton and fixing filtering
* netcoreapp -> netcore5.0 in py file
* changing the path to use netcoreapp5.0 version
* feedback and override corefx path corrected in installers
* remaing netcoreapp5.0 changes done
* netcoreapp-> netcoreapp5.0 after live builds
* net472 -> netframeworkcurrent
Tomáš Rylek [Sat, 14 Dec 2019 19:39:04 +0000 (20:39 +0100)]
Fix crossgenning of framework libraries on Windows (#747)
1) Fix crossgenning of framework libraries on Windows;
2) Enable crossgenning S.P.C with CG2, remove obsolete CoreCLR logic;
3) Fix framework build with legacy Crossgen due to a typo in my change;
4) The ordering of steps in build-test was incorrect - we need to
patch CORE_ROOT with live-live libraries build before Crossgenning
the framework therein, otherwise weird things happen (and the result
is incorrect in any case).
5) Removed misplaced >nul 2>nul - we agreed with JanV that it's
better to not throw diagnostic information away.
6) Applied JanV's suggestion for improvement - using a tighter filter
for reference assemblies - Microsoft.*.dll / System.*.dll /
mscorlib.dll instead of just *.dll that ended up picking tons of
garbage like clrjit.dll and the various Win32 API contracts, both
in the build-test script and in CLRTest.Crossgen.targets.
Thanks
Tomas
Bruce Forstall [Sat, 14 Dec 2019 06:17:13 +0000 (22:17 -0800)]
Fix JitEECallTimingInfo bit rot (#868)
Added new JIT/EE interface functions. Moved some around so
the order of functions is exactly the same order as in the
corinfo.h header file.
This functionality can be enabled by:
1. Changing the definition of `MEASURE_CLRAPI_CALLS` in jit.h
from `0` to `1`.
2. Building Release on x86 or x64 (arm32 and arm64 are currently unsupported)
3. Set environment variables:
```
set COMPlus_JitTimeLogFile=time.txt
set COMPlus_JitEECallTimingInfo=1
```
4. Run a program.
The `time.txt` file will contain a JIT phase time line item "CLR API calls"
for the sum total of all JIT-EE function call cost, plus a per-API breakdown
for each called API with number of calls, total/max/average time, and percentage
of total ABI call cost.
Bruce Forstall [Sat, 14 Dec 2019 06:15:37 +0000 (22:15 -0800)]
Ignore method name when doing `mcs -removeDup` (#602)
Thus, methods with different names but otherwise are identical will
match and only one will be retained.
This improves both Checked and Release, and fixes the Release
build removeDup regression introduced in #548.
David Shulman [Sat, 14 Dec 2019 02:14:11 +0000 (18:14 -0800)]
Fix enterprise testing pipeline due to live-live changes (#843)
Revised script to build the libraries subset due to changes with CoreCLR and live-live build.
Carol Eidt [Fri, 13 Dec 2019 23:54:27 +0000 (15:54 -0800)]
Clarify Lowering in ryujit-overview (#859)
yowl [Fri, 13 Dec 2019 21:04:26 +0000 (16:04 -0500)]
tiny comment typo. (#846)
Stephen Toub [Fri, 13 Dec 2019 21:02:54 +0000 (16:02 -0500)]
Comment on why s_createProcessLock exists in Process.Windows.cs (#838)
Carol Eidt [Fri, 13 Dec 2019 20:55:21 +0000 (12:55 -0800)]
Clarify Lowering in ryujit-overview (#844)
Fadi Hanna [Fri, 13 Dec 2019 20:00:48 +0000 (15:00 -0500)]
Fix bug with type loadability validation (#841)
The check had a small typo: .IsRuntimeDeterminiedType instead of .IsRuntimeDeterminedSubtype
Stephen Toub [Fri, 13 Dec 2019 18:51:34 +0000 (13:51 -0500)]
Revert workarounds for IEquatable and nullable (#795)
Roslyn now special-cases IEquatable to be contravariant for nullable, so we can remove our workarounds.
Carlos Sanchez Lopez [Fri, 13 Dec 2019 18:35:15 +0000 (10:35 -0800)]
FileSecurity/DirectorySecurity should support long paths (#647)
* FileSecurity/DirectorySecurity should support long paths
* Address danmosemsft suggestions
* Address unit test danmosemsft suggestions
* Address test failures in NetFX
* addressing suggestions
Jeremy Koritzinsky [Fri, 13 Dec 2019 18:30:58 +0000 (10:30 -0800)]
Local live-live builds (#494)
* Convert libraries and installer to use a live CoreCLR.
* Installer uses a live libraries build for DLLs.
* Remove newline in path.
* Enable live-live builds to build required live dependencies when the dependencies are in the building subset/subset category.
* Update path to coreclr output.
* Fix typo in coreclr.proj.
* Remove last usage of CoreCLRPDBOverridePath.
* Update path of binplaced runtime to include OS and Arch.
* Fix typo in coreclr/tests/src/Common/Directory.Build.targets.
* Restore CoreFX shared framework from live build for CoreCLR test dependencies.
* Remove dependency on Microsoft.NETCore.CoreCLR.TestDependencies package.
* Enable referencing live builds of the OOB libraries by temporarily adding a new BinplaceConfiguration. Update test_dependencies in the CoreCLR tree to use that to restore OOB libraries.
* Remove reference to System.Drawing.Common from NETClientPrimitives (the reference is only needed at runtime and Core_Root already has System.Drawing.Common).
* Remove package-based checked CoreCLR + CoreFX test runs. In the live-live world, we'll run this test configuration by pointing the CoreFX test host build step at the artifacts from a checked CoreCLR build (possible in both local and CI builds).
* Only copy the UCRT on Windows.
* CoreCLR test build now builds against a live libraries sfx+oob ref assembly set.
* Override GetCorePackagePaths target to not reference unused packages (breaks the live-live build on a clean system).
* Remove live references to Microsoft.NETCore.Platforms now that it seems to be unneeded since the SDK now packages a RID graph. Use the live RID graph in test_runtime.csproj where we may actually be looking for the live RID graph.
* Fix coreclr build arg generation bug that was causing build failures.
* Remove references to Microsoft.NETCore.Platforms outside of package references from the installers.
* Fix problems in installer build in live-live that were found from a clean build.
* Remove unused dependency on Microsoft.NETCore.Targets.
* Fix Microsoft.NETCore.App -> Microsoft.NETCore.Platforms dependency.
* Remove Microsoft.NETCore.Targets version from Versions.props.
* Remove unused deps.csproj file that was the last dependency on the packaged Microsoft.NETCore.Platforms package.
* Fix OSGroup calculation for dependent projects off-Windows.
* Fix construction of Microsoft.NETCore.App.Internal package.
* Remove unneeded CoreRun copying.
* Serialize subsets that have dependencies across subset groups. Don't use `<MSBuild />` tasks to rebuild subsets since we don't want to rebuild projects multiple times (coreclr was being built multiple times).
* Cleanup from PR feedback.
* Only copy libraries outputs to artifacts/bin/runtime.
* Use the netcoreapp output directories for OOB-included references to libraries outputs.
* Remove references to deleted old corefx override setup.
* First pass to get new runtime pipeline using the local live-live infra (coreclr+libraries only for now).
* Don't generate layout during test native build.
* Fix ref assembly default binplacing for netcoreapp.
* Remove msbuild goo around importing Subsets.props and Directory.Build.props only once each. This goo isn't needed anymore.
* Fix disabling of binplacing for the target vertical to exclude only runtime.depproj and not exclude winrt.depproj.
* Fix libraries test build.
* Copy all paths used by the "ResolveLibrariesFromLocalBuild" target to publish from libraries build.
* For shims, reference the System.Private.CoreLib directly from CoreCLR outputs instead of through runtime.depproj.
* Hard-code the libraries configuration to release in coreclr test builds.
* Resolve ReferenceFromRuntime items directly from the CoreCLR output instead of via the runtime.depproj project.
* Fix test host generation. Fix running the XML Serialization generator as part of libraries test build.
* Fix XmlSerializer.Generator.Tests again.
* Don't look for CoreCLR files when using ReferenceFromRuntime and not using netcoreapp.
* Crossgen-comparison should depend on a libraries build so we can populate Core_Root.
* Add job dependency on libraries build from run-test-job to ensure we wait correctly. Otherwise we might have a race since the managed test build might depend on one libraries build while the test run depends on another.
* Only resolve coreclr files from local build when targetting netcoreapp.
* Add steps to download libraries build for crossgen-comparison.
* Revive old method of resolving references to the runtime for building against old netcoreapp (ie netcoreapp 3.0). Fix correctly passing along aliases info.
* Fix failing AllConfigurations leg that was due to the netcoreapp runtime.depproj getting binplaced in the runtime output folder.
* Update eng/liveBuilds.targets
Co-Authored-By: Davis Goodin <dagood@users.noreply.github.com>
* HostArch->BuildArchitecture and share with installer.
* Fix format nits.
* Update YAML variable name.
* Remove setting property to import liveBuilds.targets.
* Upload docs and packages folders from libraries build
* Inclue doc files in the Microsoft.NETCore.App.Internal package
* Try making the runtime-installer pipeline live-live using the build-coreclr-and-libraries-job template.
* Update artifacts download paths and msbuild properties for installer build.
* Mark cross-component files as native.
* Remove FrameworkPackageName to remove error about missing $(FrameworkPackageName).versions.txt file that other shared frameworks also don't generate.
* Restore GetFilesFromPackageResolve override.
* Don't clean the unpack folder for the libraries download. It wipes out the CoreCLR download.
* Make sure that we restore the WinRT targetting pack during the installer build.
* Add libraries package directory to RestoreSources for the case where the LibrariesConfiguration is different from the installer build configuration.
* Don't pass OfficialBuildId unless it is an official build. We want to be consistent with the libraries build so our package versions match.
* Give default value for OfficialBuildArg variable
* Ensure installer tests can see the libraries-generated packages. Fix typo in TargetPath for CoreCLR assets (runtime instead of runtimes).
Fix paths for CoreCLR cross-target files as well as crossgen to place them in the correct directories.
* Add back FrameworkPackageName to get the partial platform manifest to generate.
Stephen Toub [Fri, 13 Dec 2019 17:16:55 +0000 (12:16 -0500)]
Remove TKey : notnull constraint from `IDictionary<TKey, TValue>` (#793)
* Remove TKey : notnull constraint from `IDictionary<TKey, TValue>`
The interface explicitly documents that some implementations may choose to support null keys.
* Remove TKey : notnull constraint from `IReadOnlyDictionary<TKey, TValue>`
* Remove notnull constraints from extension methods on those interfaces
dotnet-maestro[bot] [Fri, 13 Dec 2019 17:14:49 +0000 (11:14 -0600)]
Update dependencies from https://github.com/dotnet/arcade build
20191212.1 (#835)
- Microsoft.DotNet.XUnitExtensions - 5.0.0-beta.19612.1
- Microsoft.DotNet.XUnitConsoleRunner - 2.5.1-beta.19612.1
- Microsoft.DotNet.VersionTools.Tasks - 5.0.0-beta.19612.1
- Microsoft.DotNet.ApiCompat - 5.0.0-beta.19612.1
- Microsoft.DotNet.Arcade.Sdk - 5.0.0-beta.19612.1
- Microsoft.DotNet.Build.Tasks.Configuration - 5.0.0-beta.19612.1
- Microsoft.DotNet.Build.Tasks.Feed - 5.0.0-beta.19612.1
- Microsoft.DotNet.Build.Tasks.Packaging - 5.0.0-beta.19612.1
- Microsoft.DotNet.Build.Tasks.SharedFramework.Sdk - 5.0.0-beta.19612.1
- Microsoft.DotNet.CodeAnalysis - 5.0.0-beta.19612.1
- Microsoft.DotNet.GenAPI - 5.0.0-beta.19612.1
- Microsoft.DotNet.GenFacades - 5.0.0-beta.19612.1
- Microsoft.DotNet.Helix.Sdk - 5.0.0-beta.19612.1
- Microsoft.DotNet.RemoteExecutor - 5.0.0-beta.19612.1
Viktor Hofer [Fri, 13 Dec 2019 09:28:29 +0000 (10:28 +0100)]
Invoke dotnet.cmd/sh from right location in py (#823)
Andrew Au [Fri, 13 Dec 2019 03:22:18 +0000 (19:22 -0800)]
Fix the gc layout algorithm to not double count byref (#814)
Anubhav Srivastava [Fri, 13 Dec 2019 03:14:19 +0000 (19:14 -0800)]
Miscellaneous performance fixes for Crossgen2 (#758)
* Miscellaneous performance fixes.
Create comparison functions for Enum (Enum.CompareTo boxes since it takes an Object).
In ModuleToken, use the existing MetadataReader instead of making a new one each time.
Use Dictionary instead of ImmutableDictionary in CoreRTNameMangler to reduce allocations.
In CopiedFieldRvaNode, only read as much of the section as we need to copy.
Fadi Hanna [Fri, 13 Dec 2019 03:10:29 +0000 (22:10 -0500)]
Check method can compile before rooting (#729)
* Check if a method should be skipped from compilation, and if so, do not root it.
* Harden various signature nodes against type system exceptions
Use existing validation API in CompilerTypeSystemContext to validate types on the various signature-emitting nodes: if it throws a
TypeSystem exception due to a malformed type/method, the exception will propagate, get handled, and cause the current
method being compiled to abort and be skipped (otherwise, the compiler will crash while emitting these problematic signatures)
Santiago Fernandez Madero [Fri, 13 Dec 2019 03:02:08 +0000 (21:02 -0600)]
Add more path exclusions to subsets (#828)
dotnet-maestro[bot] [Fri, 13 Dec 2019 00:48:29 +0000 (01:48 +0100)]
[master] Update dependencies from dotnet/arcade Microsoft/vstest (#790)
* Update dependencies from https://github.com/dotnet/arcade build
20191211.6
- Microsoft.DotNet.XUnitExtensions - 5.0.0-beta.19611.6
- Microsoft.DotNet.XUnitConsoleRunner - 2.5.1-beta.19611.6
- Microsoft.DotNet.VersionTools.Tasks - 5.0.0-beta.19611.6
- Microsoft.DotNet.ApiCompat - 5.0.0-beta.19611.6
- Microsoft.DotNet.Arcade.Sdk - 5.0.0-beta.19611.6
- Microsoft.DotNet.Build.Tasks.Configuration - 5.0.0-beta.19611.6
- Microsoft.DotNet.Build.Tasks.Feed - 5.0.0-beta.19611.6
- Microsoft.DotNet.Build.Tasks.Packaging - 5.0.0-beta.19611.6
- Microsoft.DotNet.Build.Tasks.SharedFramework.Sdk - 5.0.0-beta.19611.6
- Microsoft.DotNet.CodeAnalysis - 5.0.0-beta.19611.6
- Microsoft.DotNet.GenAPI - 5.0.0-beta.19611.6
- Microsoft.DotNet.GenFacades - 5.0.0-beta.19611.6
- Microsoft.DotNet.Helix.Sdk - 5.0.0-beta.19611.6
- Microsoft.DotNet.RemoteExecutor - 5.0.0-beta.19611.6
* Update dependencies from https://github.com/microsoft/vstest build
20191211-02
- Microsoft.NET.Test.Sdk - 16.5.0-preview-
20191211-02
dhusemann [Fri, 13 Dec 2019 00:47:06 +0000 (18:47 -0600)]
Update Contributing.MD links (#815)
* Update Contributing.MD link for misspelled link
Updated link docs/project/api-review-process.md so 404 error will be corrected.
* update Contributing.MD links
updated coreclr to run time for remainder of links.
Ivan Diaz Sanchez [Fri, 13 Dec 2019 00:40:00 +0000 (16:40 -0800)]
Added OS and Bit Specific tags to accordingly .csproj files. (#637)
Andy Ayers [Fri, 13 Dec 2019 00:27:53 +0000 (16:27 -0800)]
JIT: fix spill logic for local structs (#797)
If we're appending an assignment whose LHS is is a location within a local
struct, we need to spill all references to that struct from the eval stack.
Update the existing logic for this to handle the case where the LHS is a field
of a local struct, and the field is updated by unusual means (here, `initobj`).
Fixes #764.
Anton Lapounov [Thu, 12 Dec 2019 23:21:58 +0000 (15:21 -0800)]
Support targeting ARM64 in crossgen2 (#775)
With these changes compilation for ARM64 finishes successfully and generates a R2R image.
There are some execution issues that need addressing.
David Wrighton [Thu, 12 Dec 2019 22:59:46 +0000 (14:59 -0800)]
Fix the LockFreeReaderHashtable (#777)
Fix the LockFreeReaderHashtable
- Communication of the presence of an expanding hashtable was very close to not safe
- Changed to aggressively use Interlocked operations instead
- If there were 3 threads, 1 which was expanding (thread A), 1 which failed an insert and was waiting on an expand(thread B), and a third which did a lookup for the item in process of insert on thread B, the table would find the item in process of insertion
- Fixed by moving to a scheme where insertion didn't actually write in the value until it was confirmed that that spot was the right place to insert, and the value would be preserved into an expansion
- In order to acquire a sentinel for scenarios without requiring the explicit definition of one, the first item inserted is used as the sentinel. It simply exists outside of the hashtable in a side variable
Fadi Hanna [Thu, 12 Dec 2019 22:38:16 +0000 (17:38 -0500)]
Fixes to static field offsets (#699)
* Fixes to static field offsets
1) Stop counting offsets for RVA fields (this messes up the offsets of all statics)
2) Small fix to the size computation of nonGC statics (we were counting some GC statics as non-gc statics)
3) Bringing a small optimization we had with crossgen1 (safe static byref return)
4) Tiny micro-optimization: avoid allocation while looking up a field in one of the Typesystem hashtables (introduced with determinism work)
* Count the sizes of RVA statics in module field layout to match coreclr TypeSystem
Bruce Forstall [Thu, 12 Dec 2019 19:13:42 +0000 (11:13 -0800)]
Update RyuJIT documentation (#755)
* Update RyuJIT documentation
1. Convert links to reference new repo
2. Update various mostly stylistic things in the RyuJIT overview
3. Add more high-level strategy/steps statements to the RyuJIT porting guide
* Update for code review comments
Jeremy Barton [Thu, 12 Dec 2019 17:55:30 +0000 (09:55 -0800)]
Merge pull request #769 from vcsjones/735-fix
Preserve HResult for bad password in managed PKCS12 PAL
Jan Vorlicek [Thu, 12 Dec 2019 17:24:12 +0000 (18:24 +0100)]
Limit crossgen2 instantiating depth (#791)
Two coreclr pri1 tests were causing the crossgen2 to run until all
memory was depleeted due to the fact that we were not limiting depth of
instantiations of methods and those tests had recursive instantiation.
An example taken from one of the tests is this:
```
private static T meth<T>(int v, T x)
{
//Recursive generic
return ((v >= 0) ? meth<Tuple<T, T>>(v - 1, new Tuple<T, T>(x, x)).Field0 : x);
}
```
This change fixes it by adding the instantiation depth check for
function calls. If the level of instantiation for any of the generic
parameters exceeds a preset value (currently 10, taken from old
crossgen), the caller is not compiled by crossgen2. Such a method will
be compiled at runtime by JIT instead.
Eirik Tsarpalis [Thu, 12 Dec 2019 17:05:22 +0000 (19:05 +0200)]
Consolidate NCL stress testing infrastructure (#700)
Andrew Au [Thu, 12 Dec 2019 15:18:03 +0000 (07:18 -0800)]
Make sure we tell the same lie to the JIT for default interface methods
Santiago Fernandez Madero [Thu, 12 Dec 2019 14:17:37 +0000 (06:17 -0800)]
Set azure pipelines variables based on changed paths (#748)
* Set variables based on changed paths
* PR Feedback
* PR feedback
Alexander Nikolaev [Thu, 12 Dec 2019 12:22:09 +0000 (13:22 +0100)]
HttpListener.Stop closes the request queue handle with CloseIoEx method (#684)
Currently, if HttpListener.Stop is called while the other thread is blocked inside a synchronous GetContext cal, it has no effect because Stop cannot dispose the request queue handle. This is caused by a reference counting mechanism implemented in SafeHandle which prevents disposal of the native handle due to the following reason.
GetContext method invokes the native HttpReceiveHttpRequest to start listening for incoming requests. HttpReceiveHttpRequest is called through P/Invoke and accepts SafeHandle as a request queue handle. In such case, runtime injects a special call to SafeHandle.DangerousAddRef incrementing the ref counter to prevent an accidental disposal from the managed side. In general, it's a good safety measure, but in the given scenario it prevents SafeHandle.Dispose from actually closing the underlying OS handle thus GetContext gets blocked until a next request arrives.
To overcome this limitation, PR adds a call to CloseIoEx before invoking Dispose to close the request queue and unblock GetContext.
Fixes dotnet/corefx#28169
Brian Sullivan [Thu, 12 Dec 2019 05:14:18 +0000 (21:14 -0800)]
Added PerfScore support for Arm64 (#751)
Based upon arm_cortex_a55_software_optimization_guide_v2.pdf
Stephen Toub [Thu, 12 Dec 2019 04:33:27 +0000 (23:33 -0500)]
Improve RegexOptions.Compiled codegen for ignoring case (in particular InvariantCulture) (#714)
* Remove unused RegexCompiler helpers
* Fix FindFirstChar to update runtextpos in the case of failure
I introduced this in a previous PR; by not updating the position in the case of failure, we end up potentially retrying some of the same text repeatedly.
* Improve codegen for FindFirstChar
For the common case of left-to-right, we can use a span to improve the code gen, which helps when there are multiple characters until the start of the regex.
* Optimize IgnoreCase and InvariantCulture codegen
We can improve our codegen for EmiCallCharInClass by avoiding the need to call char.ToLower{Invariant} in a variety of situations. If the character class is one for which we already generate a check that handles case appropriately (e.g. using char.IsDigit for \d), there's no need to generate a ToLower call, regardless of culture. And if we're using InvariantCulture, we can build the invariance into our generated lookup table, which means we only actually need the ToLowerInvariant call if the input isn't ASCII and we have to fall back to doing an actual CharInClass call.
* Fix stale comments
* Use rem.un instead of rem for timeout check
When a timeout is set, we try to avoid lots of CheckTimeout calls by only doing the call once every 2048 occurrences. That check is currently done with a signed % operation; the codegen code for an unsigned % operation is better, and that's all we need. We also don't need to explicitly compare to 0, and can just use brtrue on the rem.un result.
* Fix stylistic issues cited in code reviews
- Renamed all RegexCompiler static fields to be consistently named after the fields they represent
- Renamed some methods that were using acronyms
- Renamed LocalBuilers to be named consistently after the fields they mirror, and also to use consistent suffixes
- Fixed some comments
- Removed use of Enum.HasFlag to be consistent with bit flags checks elsewhere
Stephen Toub [Thu, 12 Dec 2019 02:21:23 +0000 (21:21 -0500)]
Update nullability.md
Stephen Toub [Thu, 12 Dec 2019 02:04:55 +0000 (21:04 -0500)]
Update nullability.md
buyaa-n [Wed, 11 Dec 2019 22:44:42 +0000 (14:44 -0800)]
Annotate System.IO.FileSystem for nullable (#590)
Annotate System.IO.FileSystem for nullable
Andrew Au [Wed, 11 Dec 2019 22:41:29 +0000 (14:41 -0800)]
Clarifies the comment
Carol Eidt [Wed, 11 Dec 2019 22:33:59 +0000 (14:33 -0800)]
Kill a non-gc-type lclVar if it has a gc-type value (#679)
* Kill a non-gc-type lclVar if it has a gc-type value
Viktor Hofer [Wed, 11 Dec 2019 20:01:58 +0000 (21:01 +0100)]
Move dotnet.cmd/sh helper scripts into the repo root (#672)
* Move dotnet helper scripts to repo root
* Don't swallow InitializeDotNetCli output
* Use temporary file to store sdk location
To avoid a nested process chain in which the inner process then invokes
the host, we instead create a temporary file to store the sdk location.
Erhan Atesoglu [Wed, 11 Dec 2019 18:27:44 +0000 (10:27 -0800)]
Verified the null checking in the extension methods. (#316)
* Verified the null checking in the extension methods.
* Apply suggestions from code review
Co-Authored-By: Carlos Sanchez Lopez <1175054+carlossanlop@users.noreply.github.com>
* Updated Test to check for named parameters. Removed additional braces
* This fixes null checks in NetFX.
Adds equivalent null checks to NetFX.
Adds back Allman style braces.
Bruce Forstall [Wed, 11 Dec 2019 18:01:11 +0000 (10:01 -0800)]
Update SuperPMI readme (#723)
* Update SuperPMI readme
Convert it to Markdown and increase the amount of detail describing
the collection process.
* Fix relative link
* Update links, add statement about publishing resultant files.
* More updates
Krzysztof Bogacki [Wed, 11 Dec 2019 17:41:06 +0000 (18:41 +0100)]
Fix corehost RID generation logic for versionless distros (#318)
Kevin Jones [Wed, 11 Dec 2019 17:01:43 +0000 (12:01 -0500)]
Convert Win32 statuses to HResults.
Tomáš Rylek [Wed, 11 Dec 2019 15:58:09 +0000 (16:58 +0100)]
Increase the heuristic fetchDepth value to 20 for the combined repo (#750)
Andrew Au [Wed, 11 Dec 2019 06:01:44 +0000 (22:01 -0800)]
Make sure we tell the same lie to the JIT for default interface methods
Jan Vorlicek [Wed, 11 Dec 2019 15:38:52 +0000 (16:38 +0100)]
Fix Emscripten build of libraries (#762)
Updating the libraries native build to use native cmake support for the
position independent code has broken emscripten build. This change
disables that for Emscripten.
Medeni Baykal [Wed, 11 Dec 2019 14:46:53 +0000 (15:46 +0100)]
Fixed a typo. (#763)
Andrew Arnott [Wed, 11 Dec 2019 14:46:29 +0000 (07:46 -0700)]
Document caution regarding AdvanceTo's side effect (#691)
After calling `PipeReader.AdvanceTo`, the `ReadResult.Buffer` property's backing data is recycled, leading to indeterministic changes to not only the content but its `Length` property. This isn't particular predictable as a consumer and the docs didn't make it clear either.
Kevin Jones [Wed, 11 Dec 2019 14:42:32 +0000 (09:42 -0500)]
Use invalid password hresult in managed p12 reader
The managed PKCS12 reader was not setting the HResult on exceptions
when the MAC of the PKCS12 failed (typically the result of a bad password).
This made the CryptographicException indistinguishable from other
PKCS12 CryptographicExceptions without relying on the exception message.
Some other applications used the HResult to determine if the PKCS12
could not be read due to an invalid password.
Tomáš Rylek [Wed, 11 Dec 2019 10:18:38 +0000 (11:18 +0100)]
Switch over stress runs to live-live mode (#697)
Anton Landor [Wed, 11 Dec 2019 07:59:32 +0000 (08:59 +0100)]
Added tests to cover all branches of JsonNodeOptions (#436)
* Added tests to cover all branches of JsonNodeOptions.
* Created a test class for JsonNodeOptions and moved relevant tests to it. Also implemented tests for CommentHandling and AllowTrailingCommas options.
* Added tests for default values. Moved JsonNodeOptionsTests to the correct item group.
* Added test to make sure default JsonNodeOptions have equal values to JsonNodeOptions created from default constructor.
* Added missed options arguments.
* Added assertions to make sure default JsonNodeOptions values are as expected.
Jeremy Koritzinsky [Wed, 11 Dec 2019 02:19:56 +0000 (18:19 -0800)]
Remove unused CMake define. (#744)
Remove unused CMAKE_USER_MAKE_RULES_OVERRIDE define. We used to use this define before 3.0 in coreclr. When we stopped using it, we had to define the variable in this command on each invocation to update it in the CMake cache, otherwise the old value might still be there and cause an error. As a result, I added in these "set to empty" lines to avoid issues checking out old branches that still used these files.
Now that we're in the dotnet/runtime repo and don't have any old servicing branches, we can remove this CMake define.
Andrew Au [Wed, 11 Dec 2019 01:18:00 +0000 (17:18 -0800)]
Merge pull request #719 from SrivastavaAnubhav/optional-mapfile
Disable generating a map file by default.
Davis Goodin [Wed, 11 Dec 2019 00:35:29 +0000 (18:35 -0600)]
Add installer build/test to the runtime.yml pipeline (#705)
* First pass to get an installer build integrated into runtime.yml with minimal changes to the installer jobs.
Fix paths to jobs.
Fix typos
Add platform to parameter lists.
Pass platform to all jobs.
Cleanup variable usages.
Don't pass buildConfig down to installer jobs. They use matrix strategy instead.
Fix variable usage in windows build.
Fix windows platform names.
Add missing platform parameter for Windows_NT_arm
Update last condition re parameters.dockerImage.
Rename dockerImage parameter to productBuildDockerImage to be more explicit.
Use pool and container parameters from platform-matrix in installer build.
Pass rootfs dir via crossrootfsDir to bash-build.yml.
Fix passing down container in runtime-installer pipeline.
Remove unused Linux_x64_raw config.
* Add support for clang 9 to corehost build.
* Skip tests on Linux_musl_arm64
* runtime.yml installer build with live artifacts
Includes refactoring the runtime legs to avoid duplicating artifact
transfer logic and preserve the runtime standalone build.
* Fix installer overrides: accept live CI artifacts
* Use clone-checkout-bundle-step.yml everywhere
* Try using isOfficialBuild var from template expr
* Switch from $[] to $() to fix clone template
$[] becomes empty string when a variable is undefined. $() sticks around literally if the variable doesn't exist, messing up the command. Unfortunately $[] doesn't seem to work in this context so we must use $() and define the variable as empty string.
David Wrighton [Wed, 11 Dec 2019 00:33:57 +0000 (16:33 -0800)]
Add porting guide (#716)
- General guidance for porting CoreCLR to a new architecture
Chris Ross [Tue, 10 Dec 2019 23:36:42 +0000 (15:36 -0800)]
Sync H2 namespace updates (#710)
Jan Vorlicek [Tue, 10 Dec 2019 22:48:07 +0000 (23:48 +0100)]
Fix relro, now and PIE for host and libraries (#685)
* Fix relro, now and PIE for host and libraries
The former core-setup and corefx native code build was missing the
-z,relro and -z,now options and also the position independent related
settings.
* Reflect PR feedback
Fadi Hanna [Tue, 10 Dec 2019 21:58:48 +0000 (13:58 -0800)]
Disable more tests from the crossgen2 run (#741)
Anubhav Srivastava [Tue, 10 Dec 2019 18:11:32 +0000 (10:11 -0800)]
Rename --generate-map-file to --map.
dotnet-maestro[bot] [Tue, 10 Dec 2019 16:06:41 +0000 (17:06 +0100)]
[master] Update dependencies from dotnet/arcade Microsoft/vstest (#614)
* Update dependencies from https://github.com/dotnet/arcade build
20191205.6
- Microsoft.DotNet.XUnitExtensions - 5.0.0-beta.19605.6
- Microsoft.DotNet.XUnitConsoleRunner - 2.5.1-beta.19605.6
- Microsoft.DotNet.VersionTools.Tasks - 5.0.0-beta.19605.6
- Microsoft.DotNet.ApiCompat - 5.0.0-beta.19605.6
- Microsoft.DotNet.Arcade.Sdk - 5.0.0-beta.19605.6
- Microsoft.DotNet.Build.Tasks.Configuration - 5.0.0-beta.19605.6
- Microsoft.DotNet.Build.Tasks.Feed - 5.0.0-beta.19605.6
- Microsoft.DotNet.Build.Tasks.Packaging - 5.0.0-beta.19605.6
- Microsoft.DotNet.Build.Tasks.SharedFramework.Sdk - 5.0.0-beta.19605.6
- Microsoft.DotNet.CodeAnalysis - 5.0.0-beta.19605.6
- Microsoft.DotNet.GenAPI - 5.0.0-beta.19605.6
- Microsoft.DotNet.GenFacades - 5.0.0-beta.19605.6
- Microsoft.DotNet.Helix.Sdk - 5.0.0-beta.19605.6
- Microsoft.DotNet.RemoteExecutor - 5.0.0-beta.19605.6
* Update dependencies from https://github.com/dotnet/arcade build
20191206.1
- Microsoft.DotNet.XUnitExtensions - 5.0.0-beta.19606.1
- Microsoft.DotNet.XUnitConsoleRunner - 2.5.1-beta.19606.1
- Microsoft.DotNet.VersionTools.Tasks - 5.0.0-beta.19606.1
- Microsoft.DotNet.ApiCompat - 5.0.0-beta.19606.1
- Microsoft.DotNet.Arcade.Sdk - 5.0.0-beta.19606.1
- Microsoft.DotNet.Build.Tasks.Configuration - 5.0.0-beta.19606.1
- Microsoft.DotNet.Build.Tasks.Feed - 5.0.0-beta.19606.1
- Microsoft.DotNet.Build.Tasks.Packaging - 5.0.0-beta.19606.1
- Microsoft.DotNet.Build.Tasks.SharedFramework.Sdk - 5.0.0-beta.19606.1
- Microsoft.DotNet.CodeAnalysis - 5.0.0-beta.19606.1
- Microsoft.DotNet.GenAPI - 5.0.0-beta.19606.1
- Microsoft.DotNet.GenFacades - 5.0.0-beta.19606.1
- Microsoft.DotNet.Helix.Sdk - 5.0.0-beta.19606.1
- Microsoft.DotNet.RemoteExecutor - 5.0.0-beta.19606.1
* Update dependencies from https://github.com/dotnet/arcade build
20191207.1
- Microsoft.DotNet.XUnitExtensions - 5.0.0-beta.19607.1
- Microsoft.DotNet.XUnitConsoleRunner - 2.5.1-beta.19607.1
- Microsoft.DotNet.VersionTools.Tasks - 5.0.0-beta.19607.1
- Microsoft.DotNet.ApiCompat - 5.0.0-beta.19607.1
- Microsoft.DotNet.Arcade.Sdk - 5.0.0-beta.19607.1
- Microsoft.DotNet.Build.Tasks.Configuration - 5.0.0-beta.19607.1
- Microsoft.DotNet.Build.Tasks.Feed - 5.0.0-beta.19607.1
- Microsoft.DotNet.Build.Tasks.Packaging - 5.0.0-beta.19607.1
- Microsoft.DotNet.Build.Tasks.SharedFramework.Sdk - 5.0.0-beta.19607.1
- Microsoft.DotNet.CodeAnalysis - 5.0.0-beta.19607.1
- Microsoft.DotNet.GenAPI - 5.0.0-beta.19607.1
- Microsoft.DotNet.GenFacades - 5.0.0-beta.19607.1
- Microsoft.DotNet.Helix.Sdk - 5.0.0-beta.19607.1
- Microsoft.DotNet.RemoteExecutor - 5.0.0-beta.19607.1
* Update dependencies from https://github.com/dotnet/arcade build
20191208.1
- Microsoft.DotNet.XUnitExtensions - 5.0.0-beta.19608.1
- Microsoft.DotNet.XUnitConsoleRunner - 2.5.1-beta.19608.1
- Microsoft.DotNet.VersionTools.Tasks - 5.0.0-beta.19608.1
- Microsoft.DotNet.ApiCompat - 5.0.0-beta.19608.1
- Microsoft.DotNet.Arcade.Sdk - 5.0.0-beta.19608.1
- Microsoft.DotNet.Build.Tasks.Configuration - 5.0.0-beta.19608.1
- Microsoft.DotNet.Build.Tasks.Feed - 5.0.0-beta.19608.1
- Microsoft.DotNet.Build.Tasks.Packaging - 5.0.0-beta.19608.1
- Microsoft.DotNet.Build.Tasks.SharedFramework.Sdk - 5.0.0-beta.19608.1
- Microsoft.DotNet.CodeAnalysis - 5.0.0-beta.19608.1
- Microsoft.DotNet.GenAPI - 5.0.0-beta.19608.1
- Microsoft.DotNet.GenFacades - 5.0.0-beta.19608.1
- Microsoft.DotNet.Helix.Sdk - 5.0.0-beta.19608.1
- Microsoft.DotNet.RemoteExecutor - 5.0.0-beta.19608.1
* Update dependencies from https://github.com/microsoft/vstest build
20191210-01
- Microsoft.NET.Test.Sdk - 16.5.0-preview-
20191210-01
Jan Vorlicek [Tue, 10 Dec 2019 11:40:49 +0000 (12:40 +0100)]
Fix DynamicMethodDesc::Destroy vs code heap enumeration race (#713)
There is a race between DynamicMethodDesc::Destroy called from
the finalizer thread and the MethodDescs enumeration called from
ETW::MethodLog::SendEventsForJitMethods at process exit.
DynamicMethodDesc::Destroy cleanos up its members m_pSig and
m_pszMethodName and then it calls GetLCGMethodResolver()->Destroy();
That calls EEJitManager::FreeCodeMemory, which tries to take the
m_CodeHeapCritSec lock. But this lock is already held by
the ETW::MethodLog::SendEventsForJitMethods.
So the iterator can see half-destroyed DynamicMethodDesc and
a crash happens when trying to get the dynamic method name
from the m_pszMethodName for the ETW event purposes.
The fix is to call the GetLCGMethodResolver()->Destroy() before
destroying the m_pSig and m_pszMethodName.
Anubhav Srivastava [Tue, 10 Dec 2019 03:46:44 +0000 (19:46 -0800)]
Disable generating a map file by default.
Swaroop Sridhar [Tue, 10 Dec 2019 02:50:44 +0000 (18:50 -0800)]
Update Multi-level SharedFX Lookup Doc (#503)
This document was written before .net core 3 was released, and
refers to certain features in .net core 2.1 and 3 as "proposed features."
This change integrates the sections describing (then) upcoming features
into the doc's mainstream.
The doc can be improved further to be more cohesive; this change
addresses the specific issue in #493
Fixes #493
Mateo Torres-Ruiz [Tue, 10 Dec 2019 02:09:41 +0000 (18:09 -0800)]
Merge pull request #692 from mateoatr/issue-353
Fix memory leaked caused by Marshal.GetFunctionPointerForDelegate
Bruce Forstall [Mon, 9 Dec 2019 23:45:42 +0000 (15:45 -0800)]
Improve superpmi collection steps (#652)
Rearrange the "clean" and "remove dups" phases of the collection
steps. This saves a lot of time by avoiding JIT compiling
all the functions that we will just throw out because the MCs
are considered duplicates.
Fixes #646
Tomáš Rylek [Mon, 9 Dec 2019 23:44:06 +0000 (00:44 +0100)]
Live-live CoreCLR ci.yml (#586)
Jarret Shook [Mon, 9 Dec 2019 23:21:19 +0000 (00:21 +0100)]
Re-enable arm32 windows testing (#642)
Cory Nelson [Mon, 9 Dec 2019 22:32:36 +0000 (14:32 -0800)]
Merge pull request #711 from dotnet/tratcher/codeowners
Add back CODEOWNERS for Http2 shared code
Chris R [Mon, 9 Dec 2019 22:16:25 +0000 (14:16 -0800)]
Add back CODEOWNERS for Http2 shared code
Nikolche Kolev [Mon, 9 Dec 2019 22:12:36 +0000 (14:12 -0800)]
Update repoRestore.targets (#451)
v-jizho2 [Mon, 9 Dec 2019 22:07:04 +0000 (14:07 -0800)]
Fix zero connection timeout issue (#400)
* Fix zero connection timeout issue
* Update based on comments
* remove trailing whitespace
* minor change to ctor
Jan Vorlicek [Mon, 9 Dec 2019 21:21:26 +0000 (22:21 +0100)]
Implement classMustBeLoadedBeforeCodeIsRun in crossgen2 (#608)
* Implement classMustBeLoadedBeforeCodeIsRun in crossgen2
This fixes missing eager fixups for method call arguments and return
value for methods going through PreStub.
It fixes the coreclr JIT\Regression\CLR-x86-JIT\V1.2-M01\b02345\b02345
test that needed Span<byte> type during GC stack walk with PreStub of a
method with Span<byte> argument on the stack and failed as it couldn't
be loaded during the GC.
The same failure also happened in many if not all tests when I have
attempted to run them with GCStress 3.
* Reflect PR feedback on member / property naming and method location
Sung Yoon Whang [Mon, 9 Dec 2019 21:07:05 +0000 (13:07 -0800)]
Turn back on some of the EventPipe tests that were disabled in GCStress (#533)
* Turn back on some of the EventPipe tests that were disabled in GCStress
* Mark more EventPipe tests as gcstress compatible
Next Turn [Mon, 9 Dec 2019 20:21:25 +0000 (04:21 +0800)]
Publish nethost static library (#296)
mateoatr [Mon, 9 Dec 2019 19:30:11 +0000 (19:30 +0000)]
Poison code before deleting the handle.
Keep code consistent.
mateoatr [Mon, 9 Dec 2019 19:05:19 +0000 (19:05 +0000)]
Delete handle before adding thunk to free list.
Set object handle to zero after destroying the handle.
Tomáš Rylek [Mon, 9 Dec 2019 17:53:14 +0000 (18:53 +0100)]
Add new YAML template for combined build of CoreCLR and libraries (#626)
As a common idiom in many live-live CoreCLR pipelines, we need
libraries to build a platform matrix equivalent to the CoreCLR
testing matrix. I have created a new template to capture that idiom.
I have initially switched over the Crossgen2 pipeline to use it.
Thanks
Tomas
mateoatr [Mon, 9 Dec 2019 17:11:22 +0000 (17:11 +0000)]
Destroy handle on UMEntryThunk::Terminate
Bruce Forstall [Mon, 9 Dec 2019 16:48:02 +0000 (08:48 -0800)]
Fix runtest.py for the dotnet/runtime repo (#669)
I simplified a lot of functions to just take the "args"
object, which contains a lot of paths and directories.
This makes it easier to centralize the directory computations
without spreading paths throughout the function signatures.
Viktor Hofer [Mon, 9 Dec 2019 15:56:35 +0000 (16:56 +0100)]
Add runtime-assets dependency (#671)
Adding a dependency to dotnet/runtime-assets to enable dependency flow
for (test) data packages.
Roman Marusyk [Mon, 9 Dec 2019 13:48:49 +0000 (14:48 +0100)]
Consolidate .netcoreapp.cs test files in System.Net.* (#664)
* Consolidate .netcoreapp.cs files because System.Net.* projects is no longer cross-compiled
* Fix build
* Add end-of-line
Anubhav Srivastava [Mon, 9 Dec 2019 10:47:40 +0000 (02:47 -0800)]
Fix logging initialization race (#616) (#634)
* Make logging initialization thread-safe. Fix broken defines for InterlockedCompareExchangePointer and InterlockedExchangePointer.
* Add InitLogging back to log.h. Revert change to the defines in utilcode.h. Move LogFileMutex initialization to InitializeLogging.
Jan Vorlicek [Mon, 9 Dec 2019 10:43:19 +0000 (11:43 +0100)]
Fix crossgen2 issue with generic delegates (#613)
The coreclr pri1 test is failing with the following error:
Expected typeof generic method Type Parameter for parameter, 'aaaa', to
be 'System.String', but found 'System.__Canon'
The issue was caused by the fact that we were not setting the
isInstantiatingStub for calls to generic delegates. The old crossgen
was doing that correctly.
Eugene Samoylov [Mon, 9 Dec 2019 07:56:59 +0000 (12:56 +0500)]
Add support for escaped characters in JsonString (for {Try}GetDateTime{Offset}) (#386)
* Add support for escaped characters in JsonString (for {Try}GetDateTime{Offset})
* Fix the review issues
* Fix a mistake after resolving a merge conflict
* Change `var` to explicit type