forked from dotnet/runtime
-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
bot upstream main merge 2021 12 01 #12
Closed
Closed
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
For now there's no functional change to the behavior of the tests, I have just copied the bits to inject from Jeremy's example in his pending PR. I have spot-checked that some of the tests use Main with the command-line args argument. I'm not changing them in this PR, the signature only becomes important once we start actually merging the IL tests and I presume we'll clean that up at that point. Thanks Tomas Contributes to: dotnet#54512
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
* Add JsonSerializerOptions.Default * address feedback * address feedback
`__DoCrossgen2` appears to be redundant with `__TestBuildMode=crossgen2`.
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
The issue was that VNApplySelectors uses the types of fields when selecting, but that's not valid for "the first field" maps. Mirror how the stores to fields are numbered.
For very large structs (> 64K in size) poisoning could end up generating instructions requiring larger local var offsets than we can handle. This hits IMPL_LIMIT that throws InvalidProgramException. Turn off poisoning for larger structs that require more than 16 movs to also avoid the significant code bloat by the singular movs. This is a less risky version of dotnet#61521 for backporting to .NET 6. Fix dotnet#60852
…tValueAtIndex (dotnet#60520) * SortedList<TKey, TValue> added GetKeyAtIndex, GetValueAtIndex, and SetValueAtIndex * Update src/libraries/System.Collections/src/System/Collections/Generic/SortedList.cs Co-authored-by: Eirik Tsarpalis <[email protected]>
This optimization is only legal if: 1) "Anything" is a sufficiently small constant itself. 2) We are in a context where we know the address will in fact be used for an indirection. It is the second point that is problematic - one would like to use MorphAddrContext, but it is not suitable for this purpose, as an unknown context is counted as an indirecting one. Additionally, the value of this optimization is rather low. I am guessing it was meant to support the legacy nullchecks, before GT_NULLCHECK was introduced, and had higher impact then. So, just remove the optimization and leave the 5 small regressions across all of SPMI be.
* Apply suggestions from code review Co-authored-by: Adam Sitnik <[email protected]> Co-authored-by: Jeremy Koritzinsky <[email protected]>
…Process, System.Diagnostics.Process, System.Diagnostics.FileVersionInfo, System.Runtime.InteropServices.RuntimeInformation (dotnet#61532)
* FileSystem.Unix: improve CopyFile. Like the upcoming version of GNU coreutils 'cp' prefer a copy-on-write clone. This shares the physical storage between files, which means no data needs to copied. CoW-clones are supported by a number of Linux file systems, like Btrfs, XFS, and overlayfs. Eliminate a 'stat' call that is always performed for checking if the target is a directory by only performing the check when the 'open' syscall reports an error. Eliminate a 'stat' call for retrieving the file size of the source by passing through the length that was retrieved when checking the opened file is not a directory. Create the destination with file permissions that match the source. We still need to fchmod due to umask being applied to the open mode. When performing a manual copy, limit the allocated buffer for small files. And, avoid the last 'read' call by checking when we've copied the expected nr of bytes. * Don't FICLONE for zero sourceLength * PR feedback * When using sendfile, don't loop when source file gets truncated. * Fall through when FICLONE fails. * Don't stop CopyFile_ReadWrite until read returns zero. * Revert all changes to CopyFile_ReadWrite * Move comment a few lines up. * Fix unused error.
Since libproc is a private Apple API, it is not available on iOS/tvOS and should be excluded (see dotnet#61265 (comment) and above for more details). This PR excludes $(CommonPath)Interop\OSX\Interop.libproc.cs on the iOS/tvOS as well as makes some methods in Process, ProcessManager, and ProcessThread classes calling that API throw PNSE so that for iOS/tvOS it's possible to re-use the respective *.UnknownUnix.cs parts.
We've tried to consistently use global:: whenever referring to core library types in the regex generator emitted code. I'd missed these two. (That said, these make the code a lot harder to read, especially in places where we're unable to use extension methods as extensions, so we'll want to revisit this policy.)
…dotnet#52639) * Implement most of the fix for dotnet#38824 Reverts the changes in the seperate PR dotnet@a617a01 to fix dotnet#38824. Does not re-enable the test because that relies on dotnet#49555, will add a seperate commit to whichever is merged last to enable the SettingUpdatesPropertiesOnSymlink test. * Most of the code for PR dotnet#52639 to fix dotnet#38824 • Deal with merge conflicts • Add FSOPT_NOFOLLOW for macOS and use it in setattrlist • Use AT_SYMLINK_NOFOLLOW with utimensat (note: there doesn't seem to be an equivalent for utimes) • Add SettingUpdatesPropertiesOnSymlink test to test if it actually sets it on the symlink itself (to the best that we can anyway ie. write + read the times) • Specify FILE_FLAG_OPEN_REPARSE_POINT for CreateFile in FileSystem.Windows.cs (is there any other CreateFile calls that need this?) * Remove additional FILE_FLAG_OPEN_REPARSE_POINT I added FILE_FLAG_OPEN_REPARSE_POINT before and it was then added in another PR, this removes the duplicate entry. * Add missing override keywords Add missing override keywords for abstract members in the tests. * Fix access modifiers Fix access modifiers for tests - were meant to be protected rather than public * Add more symlink tests, rearrange files • Move symlink creation api to better spot in non-base files • Add IsDirectory property for some of the new tests • Change abstract symlink api to CreateSymlink that accepts path and target • Create a CreateSymlinkToItem method that creates a symlink to an item that may be relative that uses the new/modified abstract CreateSymlink method • Add SettingUpdatesPropertiesCore to avoid code duplication • Add tests for the following variants: normal/symlink, target exists/doesn't exist, absolute/relative target • Exclude nonexistent symlink target tests on Unix for Directories since they are counted as files * Fix return type of CreateSymlink in File/GetSetTimes.cs * Remove browser from new symlink tests as it doesn't support creation of symlinks Remove browser from new symlink tests as it doesn't support creation of symlinks * Use lutimes, improve code readability, simplify tests • Use lutimes when it's available • Extract dwFlagsAndAttributes to a variable • Use same year for all tests • Checking to delete old symlink is unnecessary, so don't • Replace var with explicit type * Change year in test to 2014 to reduce diff * Rename symlink tests, use 1 core symlink times function, and check that target times don't change Rename symlink tests, use 1 core symlink times function, and check that target times don't change * Inline RunSymlinkTestPart 'function' Inline RunSymlinkTestPart 'function' so that the code can be reordered so the access time test can be valid. * Share CreateSymlinkToItem call in tests and update comment for clarity * Update symlink time tests • Make SettingUpdatesPropertiesOnSymlink a theory • Remove special case for Unix due to dotnet#52639 (comment) (will revert if fails) • Rename isRelative to targetIsRelative for clarity * Remove unnecessary Assert.All * Changes to SettingUpdatesPropertiesOnSymlink test • Rename item field to link field • Don't use if one-liner • Use all time functions since only using UTC isn't necessary • Remove the now-defunct IsDirectory property since we aren't checking it anymore * Remove unnecessary fsi.Refresh() • Remove unnecessary fsi.Refresh() since atime is only updated when reading a file * Updates to test and pal_time.c • Remove targetIsRelative cases • Multi-line if statement • Combine HAVE_LUTIMES and #else conditions to allow more code charing * Remove trailing space
by removing obvious warnings
* Delete regArgList Unused. * Delete CountSharedStaticHelper Unused. * Delete GTF_RELOP_QMARK Unused. * Delete lvaPromotedStructAssemblyScratchVar Unused. * Delete dead code from fgMorphSmpOp The conditions tested constitute invalid IR. * Delete gtCompareTree Unused. * Delete gtAssertColonCond Unused. * Delete IsSuperPMIException Unused.
- Remove unneeded FIRST concept in loop table; it was always equal to TOP. - Rename optMarkLoopsBlocks to optScaleLoopBlocks to more accurately describe what it does. More consistently report block scaling in the dump - Create optMarkLoopHeads. This was refactored out of fgRemoveUnreachableBlocks so it can be called in a more logical location (at the beginning of optFindLoops), and only does one thing. - fgMakeOutgoingStructArgCopy: remove unused `argIndex` argument; reorder calls to fgMightHaveLoop. - Update and write a bunch of comments; convert away from `/* */` style comments.
…net#61443) This change allows devs to manually kick off full test runs on the configurations that only execute smoke tests per PR. /azp runtime-staging-manual will do the trick
* Adding support for X86Base.Pause() and ArmBase.Yield() * Applying formatting patch * Ensure NI_ArmBase_Yield actually gets through to codegen on arm64
The comment above the method mentions "many problems" with leaving null pointers around, but it is unclear what kind of problems. I can only speculate those were the problems in legacy codegen which "could not handle constant op1". It also mentions that "we cannot even fold (null+offset)", which is incorrect: "gtFoldExprConst" does in fact fold such expressions to zero byrefs. It is also the case that spilling the null into a local affects little as local assertion propagation happily propagates the null back into its original place. There was also a little bug associated with the method that got fixed: morph was trying to use it, and in the process created uses of a local that was not initialized, since the statement list used by the method is the importer's one, invalid in morph.
Currently, Actions in the dotnet/runtime repository have read/write access by default, unless their permissions have been explicitly declared. The markdownlint workflow can be restricted from all access except the repository contents. This limits what the 3rd party `markdownlint-cli` npm package can do which is installed as part of the workflow.
* Fix parsing of ping error replies on raw sockets * Re-enable ping tests * Update the SendPingToExternalHostWithLowTtlTest test validation
…TFM (dotnet#61689) This PR changes both local (non-containerized) and containerized stress builds to build against the live-built runtime with the help of targetingpacks.targets.
Implement `RuntimeHelpers.CreateSpan<T>` dotnet#60948 Implementation provides for - Both non-intrinsic and intrinsic implementations in CoreCLR - Non-intrinsic implementation in Mono - Mono implementation also implements untested big endian support Co-authored-by: Aaron Robinson <[email protected]> Co-authored-by: Jan Kotas <[email protected]>
Co-authored-by: JamesNK <[email protected]>
* [Issue: 61620] Optimizing ARM64 for *x = 0; * Update src/coreclr/jit/lower.cpp Co-authored-by: SingleAccretion <[email protected]> * Fixed bug with * x = dConst if dConst is not 0 * remove extra printf * Replacing IsFPZero with IsCnsNonZeroFltOrDbl for STOREIND Minor edits with conditional compilation in lower.cpp * fixed ARM codegen for STOREIND * Update src/coreclr/jit/lower.cpp Co-authored-by: SingleAccretion <[email protected]> * Update src/coreclr/jit/lower.cpp Co-authored-by: SingleAccretion <[email protected]> * fix formatting Co-authored-by: SingleAccretion <[email protected]>
… that we use the RTM sdk. (dotnet#62156) Co-authored-by: Andy Gocke <[email protected]>
…net#62106) * Always use int3/bkpt * Use right formatting for brk instruction * Rename to brk_unix and brk_windows * jit format
* Fix a few syntax issues in shell scripts * Cleanup trailing whitespace in changed files ```sh # git remote add dotnet https://github.com/dotnet/runtime && git pull --rebase dotnet main if uname 2>/devnull | grep -q Darwin; then space=" " fi git show --name-only --pretty="" HEAD...dotnet/main |\ xargs -I{} sh -c "test -f {} && sed -i$space'' 's/[[:space:]]*$//' {}" ``` * Address CR feedback
* Improve SuperPMI temp filename creation 1. Disallow all non-ASCII characters from the MC filename. 2. Disallow `(` and `)` in filenames. 3. To improve uniqueness, always append an 8-character random number to the filename. * Fix Linux build
…#62163) * Add unmark loopAlign in a missing place * Add test case * add trailing \n
) System.Linq.Expressions currently offers multiple build time definitions to build different flavors of the library: * `FEATURE_COMPILE` (defined everywhere except iOS/tvOS/Catalyst, and NativeAOT) - enables Reflection.Emit-based expression tree compiler. * `FEATURE_INTERPRET` (always defined and not actually possible to build without) - enables the expression interpreter * `FEATURE_DLG_INVOKE` (defined everywhere except NativeAOT, but we likely need to be able to run without it on iOS too because there's uninvestigated bugs around it ActiveIssue'd in dotnet#54970) - in the interpreter, use a delegate to invoke `CallInstructions` instead of `MethodInfo.Invoke`. The delegate might have to be Reflection.Emitted if it's not supportable with `Func`/`Action` (that's the uninvestigated iOS/tvOS/Catalyst bug). For dotnet#61231, we need to be able to build a single System.Linq.Expression library that can switch between these build-time configurations _at publish time_ since we don't want to build a separate S.L.Expressions library for NativeAOT. There are advantages in having this setup for non-NativeAOT scenarios too. This pull request accomplishes that by mechanically changing the `#define`s into feature switches. The feature switch is placed in the last proposed location for dotnet#17973. I expect we'll want such API to be public at some point; now that Xamarin and NativeAOT use this formerly .NET Native-only thing the API request became relevant again. This pull request is focused on the mechanical replacement of `#defines` with feature switches and it's already a lot bigger than I'm comfortable with. There's some obvious "`!FEATURE_COMPILE` means this is .NET Native with everything what that meant" that I did not touch because this is meant to be a mechanical change. Some cleanup will be needed at some point. Right now this just mostly means we're running fewer tests than we could. Validation: * Verified that we're still running the same number of tests with CoreCLR as we previously were and they're all passing. * Verified we're getting mostly the same size of the S.L.Expressions library on iOS (433 kB grew to 436 kB, the diffs are expected). * Verified things work on the NativeAOT side as well.
…t#62134) * don't run the System.IO.FileSystem.DriveInfo in parallel, fixes dotnet#62119 * unify disabling test parallelization per assembly
…ds. (dotnet#62153) * Console.Unix: fix OpenStandardInput Stream sometimes throwing for Reads. When connected to a terminal reads happen line-by-line. StdInReader caches the line in a StringBuilder. Instead of returning when the destination buffer is full, an attempt was made to decode the next chunk from the StringBuilder (if there is one). This causes the encoder to throw for encoding into an empty buffer.
* Propagate debug info in loop cloning * Do not consume debug info on the standalone call statement created for inline candidates. This would lead to the loss of debugging information for failed inline candidates, since those statements are dropped and expanded in the upcoming GT_RET_EXPR node instead. In some cases it would also lead to the loss of debugging information for successful inlines. In the new logic we allow the same debugging information to be attached to the upcoming statement using the GT_RET_EXPR. This change adds around 40 KB (~0.5%) to SPC.
Fixes issue observed in dotnet/runtimelab#1128 (comment) - the trees generate additions of `TYP_I_IMPL` with `TYP_INT` and that confuses things down the line.
Use TYP_UNDEF (as TYP_MEM) for "first field"-like maps and TYP_UNKNOWN (as TYP_HEAP) for the heaps themselves. This will enable the type validation logic to be more precise. For now, just assert that the heap is always updated with the properly typed VNs.
- Convert RuntimeHelpers.InitializeArray to new style intrinsic - Delete unused isStructRequiringStackAllocRetBuf JIT/EE method and related optimization - Delete unused CORINFO_HELP_GETSTATICFIELDADDR_CONTEXT jit helper
…otnet#62225) Co-authored-by: Geoffrey Kizer <[email protected]>
* Optimize FMA codegen base on the overwritten * Improve function/var names * Add assertions * Get use of FMA with TryGetUse * Decide FMA form with two conditions, OverwrittenOpNum and isContained * Fix op reg error in codegen * Decide form using lastUse and isContained in no overwritten case * Clean up code * Separate default case overwrittenOpNum==0 * Apply format patch * Change variable and function names * Update regOptional for op1 and resolve some other comments * Optimize FMA codegen base on the overwritten * Improve function/var names * Add assertions * Get use of FMA with TryGetUse * Decide FMA form with two conditions, OverwrittenOpNum and isContained * Fix op reg error in codegen * Decide form using lastUse and isContained in no overwritten case * Clean up code * Separate default case overwrittenOpNum==0 * Apply format patch * Change variable and function names * Update regOptional for op1 and resolve some other comments * Change var names * Fix jit format * Fix build node error for op1 is regOptional * Use targetReg instead of GetResultOpNumForFMA in codegen * Update variable names * Refactor lsra to solve lastUse status changed caused assertion failure * Add check to prioritize contained op in lsra * Update for jit format * Simplify code * Resolve comments * Comment out assert because of lastUse change * Fix some copiesUpperBits related errors * Update src/coreclr/jit/lsraxarch.cpp Co-authored-by: Kunal Pathak <[email protected]> * Add link to the new issue Co-authored-by: Kunal Pathak <[email protected]>
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
GT_AND_NOT
for ARM/ARM64 (ImplementGT_AND_NOT
for ARM/ARM64 dotnet/runtime#59881)GenTreeFlags
oftener for better debugging. dotnet/runtime#61272)GT_LCL_FLD
dotnet/runtime#61209)m_hostAssemblyMap
and ceremony around it (Removingm_hostAssemblyMap
and ceremony around it dotnet/runtime#61292)Microsoft.Extensions.Logging.Generators.Roslyn3.11.Tests
failing due to OOM ([wasm][aot] Disable (again)Microsoft.Extensions.Logging.Generators.Roslyn3.11.Tests
failing due to OOM dotnet/runtime#61323)nuget.config
as the base for installing manifests (InstallWorkload: Use the repo'snuget.config
as the base for installing manifests dotnet/runtime#60699).version
file in shared fx dotnet/runtime#60944)__DoCrossgen2
(Delete__DoCrossgen2
dotnet/runtime#61582)impCheckForNullPointer
dotnet/runtime#61576)DisableImplicitNamespaceImports_DotNet
(RemoveDisableImplicitNamespaceImports_DotNet
dotnet/runtime#61656)Microsoft.Extensions.Configuration.Binder
([Group 4] Enable nullable annotations forMicrosoft.Extensions.Configuration.Binder
dotnet/runtime#57418)Microsoft.Extensions.Configuration.EnvironmentVariables
([Group 4] Enable nullable annotations forMicrosoft.Extensions.Configuration.EnvironmentVariables
dotnet/runtime#57433)Microsoft.Extensions.Configuration.CommandLine
([Group 4] Enable nullable annotations forMicrosoft.Extensions.Configuration.CommandLine
dotnet/runtime#57432)GT_LIST
) (Make intrinsic nodes multi op (aka deleteGT_LIST
) dotnet/runtime#59912)GetPinnableReference()
usage in multi-step custom type marshalling (UpdateGetPinnableReference()
usage in multi-step custom type marshalling dotnet/runtime#61539)VNForMapStore
(Do not explicitly pass type toVNForMapStore
dotnet/runtime#61882)ThrowHelper
([System.Text.Json] Move inline throw statements toThrowHelper
dotnet/runtime#61746)InferStructOpSizeAlign
dotnet/runtime#61880)optComputeLoopSideEffects
to account for HWI stores (FixoptComputeLoopSideEffects
to account for HWI stores dotnet/runtime#61911)NumChildren
,GetChild
andgtGetChildPointer
([TODO-List-Cleanup] DeleteNumChildren
,GetChild
andgtGetChildPointer
dotnet/runtime#61875)