1. 26 8月, 2022 9 次提交
    • A
      CI: Tighten the path based triggers for jobs (#74534) · 9cfdadc4
      Ankit Jain 提交于
      * CI: Tighten the path based triggers for jobs
      
      `subsets`:
      - `mono`: exclude all `src/mono/wasm`, since any changes in that will
        trigger the wasm jobs anyway
      - `runtimetests`: exclude Wasm.Build.Tests, and Wasm.Debugger.Tests,
        both of which are in `src/tests/BuildWasmApps`, but are *not* related
        to runtime tests.
      - `coreclr_jit`: exclude `src/mono/*` completely, unrelated.
      
      Also, exclude `eng/pipelines/common/evaluate-default-paths.yml` from all
      the subsets, so changes in that doesn't trigger unncessary builds.
      
      * Address review feedback
      9cfdadc4
    • S
      Re-enable MemoryCacheTest.Contains. (#74551) · 125f10bf
      Steve Molloy 提交于
      * Re-enable MemoryCacheTest.Contains. Add a little more info in case of failures.
      125f10bf
    • A
      [mini] Disable passing valuetypes in SIMD registers (#74582) · b9e22141
      Aleksey Kliger (λgeek) 提交于
      Partially reverts https://github.com/dotnet/runtime/pull/68991
      
      When LLVM code calls non-LLVM code it will pass arguments in SIMD
      registers which the non-LLVM code doesn't expect
      
      Fixes https://github.com/dotnet/runtime/issues/73454 (issue 1)
      b9e22141
    • T
      update Helix arm64 images (#73963) · e51d9424
      Tomas Weinfurt 提交于
      * update Helix arm64 images
      
      * update images
      
      * fix conditions
      
      * uopdate docker images
      
      * update containers
      
      * update debian containers
      
      * update ubuntu
      
      * update ubuntu
      e51d9424
    • A
      Reenable class-memaccess warning (#74363) · 53841055
      Aaron Robinson 提交于
      * Reenable class-memaccess warning
      
      * Match x64 logic in emitarm.cpp
      
      * Make GCProtect sections with "gc" variable consistent
      Co-authored-by: NJan Kotas <jkotas@microsoft.com>
      53841055
    • R
      Disable ConnectWithRevocation_ServerCertWithoutContext_NoStapledOcsp on NativeAoT (#74561) · 8755447e
      Radek Zikmund 提交于
      * Disable ConnectWithRevocation_ServerCertWithoutContext_NoStapledOcsp on NativeAoT
      * Disable tests against #70981 instead
      8755447e
    • D
      Attempt to reduce test build cost (#74471) · 8d4364c0
      David Wrighton 提交于
      An evaluation of the cost of "Copy native test components to test output folder" indicates that there are 2 major performance bottlenecks in that routine.
      
      There are the findings I had
      1. The routine spends significant time loading every test project into msbuild to determine what to do. This processing takes as much as 400ms per test on hardware which has slow IO performance.
      2. On Unix platforms, when producing the test script binaries, we make the scripts executable by using chmod. This ALSO takes as long as 400ms on the slowest platforms.
      3. Actually copying the native binaries around is extremely cheap and fast, and the cost to generate the test scripts is also fairly low.
      
      This change addresses both of these issues.
      1. For the issue that we look into each test project to determine what to do, I observed that for tests which are pri1 tests, when running a pri0 only job, we don't need to even examine any of the tests marked as exclusively pri1. This is a bit of a hack, but it does seem to work quite well.
      2. For the chmod issue, since we don't actually maintain the executable bit when sent to helix, I set an msbuild property when generating the scripts during the "Copy native test components to test output folder" to just not set that flag.
      
      Results:
      Mac OSX test run jobs take ~8 minutes to run this portion of the build, down from ~27 minutes. Performance improvements are visible on all architectures/OS pairings, but they aren't as dramatic.
      8d4364c0
    • F
      Bump Kerberos.NET version in tests (#74554) · 48713582
      Filip Navara 提交于
      Fixes tests on big endian platforms.
      48713582
    • T
  2. 25 8月, 2022 24 次提交
    • S
      Disable distributed transaction tests on ARM (#74572) · 7a8af49f
      Shay Rojansky 提交于
      To unblock CI build failures, works around #74170
      7a8af49f
    • M
      f26c91bb
    • A
      [wasm] Move all the wasm jobs from runtime-staging to runtime (#73596) · e130a89c
      Ankit Jain 提交于
      * [wasm] Move stable jobs from runtime-staging to runtime
      
      - library tests: windows
      - AOT tests: windows
      - Debugger tests (chrome): windows, and linux
      - Wasm.Build.Tests: windows
      
      * Move last remaining wasm-firefox tests to runtime too
      
      * Move firefox debugger tests to runtime-extra-platforms
      
      * Fix browser-eventpipe build
      
      ```
      src/mono/sample/wasm/browser-eventpipe/Program.cs(80,13): error IDE0074: (NETCORE_ENGINEERING_TELEMETRY=Build) Use compound assignment
      ```
      e130a89c
    • A
      Add server1.pfx to CredScanSuppressions.json (#74559) · 0e13ffaa
      Alexander Köplinger 提交于
      **BYPASS_SECRET_SCANNING**
      0e13ffaa
    • E
      Add NuGet package for System.Runtime.Serialization.Schema (#74533) · 3e7d5964
      Eric Erhardt 提交于
      System.Runtime.Serialization.Schema isn't getting a NuGet package created for it because it doesn't set IsPackable=true.
      3e7d5964
    • J
      Switch to unified fully managed Overlapped implementation (#74532) · 4cf2e3bb
      Jan Kotas 提交于
      This change was attempted before in https://github.com/dotnet/coreclr/pull/23029 and rejected due to performance impact. Things have changed since then that makes it feasible now.
      
      Sockets and file I/O do not use pinning feature of Overlapped anymore. They pin memory on their own using `{ReadOnly}Memory<T>.Pin` instead. It means that the async pinned handles are typically not pinning anything. The async pinned handles come with some extra overhead in this common use case. Also, they cause confusion during GC behavior drill downs. This change removes the support for async pinned handles from the GC:
      - It makes the current most common Overlapped use cheaper. It is hard to measure the impact of eliminating async pinned handles exactly since they are just a small part of the total GC costs. The unified fully managed implementation enabled simplificication of the implementation and reduced allocations.
      - It gets rid of confusing async pinned handles behavior. The change was actually motivated by a recent discussion with a customer who was surprised by the async pinned handles not pinning anything. They were not sure whether it is expected behavior or whether it is a bug in the diagnostic tools.
      
      Micro-benchmarks for pinning feature of Overlapped are going to regress with this change. The regression in a micro-benchmark that runs Overlapped.Pack/Unpack in a tight loop is about 20% for each pinned object. If there is 3rd party code still using the pinning feature of Overlapped, Overlapped.Pack/Unpack is expected to be a tiny part of the end-to-end async flow and the regression for end-to-end scenarios is expected to be in noise range.
      4cf2e3bb
    • M
      #50575 colorbehavior default should disable colors in android/applemobile (#74496) · ebdb0455
      Meri Khamoyan 提交于
      * #50575 colorbehavior default should disable colors in android/applemobile
      ebdb0455
    • M
      Only stack allocate when marshalling Utf8 arguments (#74478) · 442c1378
      Michal Strehovský 提交于
      * Only stack allocate when marshalling Utf8 arguments
      
      Fixes #74394.
      
      * Review feedback
      442c1378
    • A
      5764faf1
    • J
      Enable caching of writeable W^X mappings (#74526) · 16414dd1
      Jan Vorlicek 提交于
      This change enables caching of the last used writeable mapping for
      W^X. It was originally disabled by an ifdef, but after we've turned W^X
      on by default, performance tests have shown a regression in some regex
      tests. I have investigated those and found that they do excessive amount
      of jitting (around 50000 methods). Enabling the caching of the last used
      writeable mapping fixes the regression completely.
      The caching implementation was present in the sources ever since I've
      implemented the W^X stuff, but if was disabled by an ifdef. So this
      change just defines the related symbol and enables the code.
      
      The caching basically just keeps a writeable mapping after unmapping
      until the next mapping request arrives, so it gives an opportunity to
      reuse it in case of series of mappings of sequential range of executable
      memory, which happens e.g. in the case mentioned.
      16414dd1
    • S
      [Android] gRPC client tests (#73060) · 7a4b0afc
      Simon Rozsival 提交于
      * WIP: add gRPC tests
      
      * Fix AOT and trimming
      
      * WIP
      
      * Implement IncludeNetworkSecurityConfig
      
      * Use IncludeNetworkSecurityConfig
      
      * Fix gRPC test
      
      * Avoid git checkout
      
      * Remove unnecessary code
      
      * WIP: start working on CI configuration
      
      * Remove WinHttpHandler
      
      * Fix problem with SSL
      
      * Change server host
      
      * Setup CI (#1)
      
      * Get Docker container building & exported via test build
      
      * Changes
      
      * Add missing pfx certificate
      
      * changes
      
      * cleanup
      Co-authored-by: NSimon Rozsival <simon@rozsival.com>
      
      * Use tls
      
      * Update yml
      
      * Revert changes to the mono Android sample app
      
      * Bump android image version
      
      * Bump image version
      
      * Enable TLS
      
      * Remove hardcoded package versions
      
      * Update package versions
      
      * Update package versions
      
      * Rename pipeline
      
      * Move interop tests website dependencies versions to Versions.props
      
      * Add cred scan supression for the interop test server private key
      
      * Fix licenses
      
      * Remove dependencies
      
      * Fix path to Versions.props
      
      * Remove unnecessary dependency version
      
      * Fix building docker image
      
      * Change pfx password
      Co-authored-by: NJo Shields <directhex@apebox.org>
      7a4b0afc
    • P
      Working with StressLogAnalyzer I found yet another issue where we are missing... · 79e3cd09
      Peter Sollich 提交于
      Working with StressLogAnalyzer I found yet another issue where we are missing an initialization when re-running the analysis - when you add a format string to look for via the -f option, and then later remove it, it's not actually removed, but is still found. (#74491)
      
       missing an initialization when re-running the analysis - when you add a format string to look for via the -f option, and then later remove it, it's not actually removed, but is still found.
      
      The fix is simply to clear the s_interestingStringTable above the fixed entries.
      79e3cd09
    • M
      Fix building CLR test tree (#74547) · 3eccadff
      Michal Strehovský 提交于
      * If we're only building Pri-0 tests, don't try to AOT compile Pri-1 tests. `_WillCLRTestProjectBuild` is the property that checks for that.
      * Targeting pack references get injected in a way that the compiler targets don't see. The compiler targets are written for publish scenarios but we're not doing a publish.
      
      Fixes #68394
      3eccadff
    • S
      7b0227d5
    • A
      Fix a buffer overrun in GC structures (#74540) · dc55d613
      Anton Lapounov 提交于
      dc55d613
    • A
      Remove all non-functional/non-informational uses of mscorlib. (#74529) · 8ec62773
      Aaron Robinson 提交于
      * Remove all non-functional/non-informational uses of mscorlib.
      8ec62773
    • A
      [wasm] Test, and app host fixes (#74512) · e8583df7
      Ankit Jain 提交于
      * [wasm] Use explicity allowed ports with playwright, on linux too
      
      Fixes https://github.com/dotnet/runtime/issues/72436 .
      
      * [wasm] Quote path, and arguments for wasm app host
      
      Fixes use of app host on windows, when it's installed in `c:\program
      files`.
      
      * Update BrowserRunner.cs
      e8583df7
    • A
      [mono] Assert that we don't need to inflate types when applying DIM overrides (#74379) · 33fddbd6
      Aleksey Kliger (λgeek) 提交于
      Due to rearranging the logic in #64102 we already inflated the interfaces that are generic instances. Inflating again is wrong and will use the wrong generic context.
      
      * use member access, not type punning
      
      * Add regression test for #70190
      
      * Assert that overrides are already inflated how we expect
      
      * remove unused var
      
      * Remove one more inflate, there's nothing to do
      
         In https://github.com/dotnet/runtime/pull/64102#discussion_r790019545 we concluded that this branch is never taken.
      
      * Add link to issue for failing tests
      33fddbd6
    • T
    • P
      improved perf test (#74514) · c7a4e28c
      Pavel Savara 提交于
      c7a4e28c
    • T
      Remove unnecessary runtime lookup for constrained callvirt (#73823) · 24d185e5
      Tomáš Rylek 提交于
      In my change adding support for default static virtual interface
      method implementations I made a subtle bug that caused
      behavioral change for some pre-existing constrained virtual calls
      that newly started to require runtime lookup. This is unnecessary
      and perf-negative, I have modified the code so that my change
      kicks in only for static virtual methods.
      
      Thanks
      
      Tomas
      24d185e5
    • S
      Allow SIMD-returning calls as arguments (#74184) · a07f2e99
      SingleAccretion 提交于
      * Add a test
      
      * Allow SIMD-returning calls as arguments
      
      As of this change we handle all relevant ABI scenarios.
      
      1) Windows x64:
         - SIMD8: returned and passed as "TYP_LONG", fine.
         - SIMD12 / SIMD16 / SIMD32: returned and passed via a return buffer, fine.
      2) Unix x64:
         - SIMD8: returned and passed in one FP register, fine.
         - SIMD12 / SIMD16, Vector4: returned and passed in two FP registers, fine.
         - SIMD16, Vector128 / SIMD32: returned and passed via a return buffer, fine.
      3) x86:
         - SIMD8: can be returned via two registers or a return buffer (and is always passed on stack), both are fine.
         - SIMD12/SIMD16/SIMD32: returned via a return buffer, passed on stack, fine.
      4) ARM64:
         - SIMD8, Vector2: returned in two FP registers (and passed as such or "TYP_LONG" under Windows varargs), fine.
         - SIMD8, Vector64: returned in one FP register, can be passed as such or as "TYP_LONG" under Windows varargs.
           The latter case is now handled correctly in "Lowering::LowerArg".
         - SIMD12: returned in three FP registers, passed as such or in two integer registers under Windows varargs, fine.
         - SIMD16, Vector4: returned in four FP registers, passed as such, or in two integer registers under Windows varargs, fine.
         - SIMD16, Vector128: returned in one FP register, passed as such, or in two integer registers under Windows varargs, fine
           (morph will decompose the varargs case into a `FIELD_LIST` via a temp).
      a07f2e99
    • J
    • D
      Allow more than 64 ISA flags for jit interface. (#73965) · 040c7bd9
      DeepakRajendrakumaran 提交于
      Details:
      Previously ISA flags were represented as bits in a 64 bit variable.
      This limited the total number of possible ISAs to 64. This change
      modifies this and starts using an array of 64 bit vars to store ISA flags.
      The main changes are in InstructionSetGenerator.cs. This drives a lot of other
      changes in this commit which are generated files.
      040c7bd9
  3. 24 8月, 2022 7 次提交
    • J
      Improve windows hardware exception handling performance (#74426) · 86412566
      Jan Vorlicek 提交于
      * Improve windows hardware exception handling performance
      
      With my recent change that modified hardware exception handling so that
      the related managed exception is thrown directly from the vectored
      exception handler, the performance of handling such exceptions have
      regressed. Several exception handling dotnet/performance microbenchmarks
      have regressed upto 15%.
      The reason for the regression was the larger number of stack frames
      between the exception raising and the actual handler frame. With a
      recent change that @AntonLapounov has made to fix process corrupting
      exceptions handling, the regression went down to 8%. This change moves
      the location where we raise the exception down to the
      ClrVectoredExceptionHandlerShim, which means to the closest possible
      frame to the managed code.
      This gets rid of the regression completely.
      86412566
    • E
      Expose JsonSerializer.IsReadOnly and MakeReadOnly() APIs. (#74431) · 4b14c921
      Eirik Tsarpalis 提交于
      * Expose JsonSerializer.IsReadOnly and MakeReadOnly() APIs.
      
      * Address feedback
      4b14c921
    • S
      Contain memory operands under casts (#72719) · 04690205
      SingleAccretion 提交于
      * Add GenTreeCast::IsZeroExtending
      
      * Cast descriptor support
      
      * XARCH support
      
      * ARM/ARM64 support
      
      TODO: consider using a dedicated IND_EXT oper for ARM/ARM64 instead of containment.
      This would allow us to cleany handle all indirections. It would not mean we'd give
      up on the casts containment, as we'd still need to handle the "reg optional" case.
      
      IND_EXT will be much like an ordinary IND, but have a "source" and "target" types.
      The "target" type would always be int/long, while "source" could be of any integral
      type.
      
      This design would be a bit more natural, and nicely separable from casts. However,
      the main problem with the current state of things, apart from the fact codegen of
      indirections is tied strongly to "GenTreeIndir", is the fact that changing type of
      the load can invalidate LEA containment. One would think this is solvable with some
      tricks, like re-running containment analysis on an indirection after processing the
      cast, but ARM64 codegen doesn't support uncontained LEAs in some cases.
      
      A possible solution to that problem is uncontaining the whole address tree. That
      would be messy, but ought to work. An additional complication is that these trees
      can contain a lot of contained operands as part of ADDEX and BFIZ, so what would
      have to be done first is the making of these into proper EXOPs.
      
      In any case, this is all future work.
      04690205
    • S
    • M
      Revert "#50575 default case color behaviour is enabled (#74349)" (#74485) · 474b2aaa
      Meri Khamoyan 提交于
      This reverts commit ad366f29.
      474b2aaa
    • M
      Fix naming in interop code generation (#74472) · 0165b25d
      Michal Strehovský 提交于
      The name of the method was a lie. The comment was a lie.
      0165b25d
    • A
      [mini] double quote linker path in defined(LD_NAME) case (#74451) · 15d742a0
      Aleksey Kliger (λgeek) 提交于
      * [mini] double quote linker path in defined(LD_NAME) case
      
      In
      https://github.com/dotnet/runtime/commit/e71a9583b4d6c9bd97edd87cda7f98f232f63530
      we started setting a default `LD_NAME` for x86 non-mach targets
      
      Fixes Android x86 builds that specify a `tool_prefix` with spaces in it
      
      * also add an "llvm_only" branch to the defined(LD_NAME) case
      15d742a0