Skip to content
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

Introduce write barriers in wasm bindings, migrate to ref/out params, add gc safe regions #65994

Merged
merged 7 commits into from
Apr 6, 2022

Conversation

kg
Copy link
Member

@kg kg commented Mar 1, 2022

For GC safety we need to have write barriers any time we modify a managed reference, and we also want to keep raw managed pointers out of parameters, locals, and return values (the GC can't see them there). We also need to introduce GC safe/unsafe regions in appropriate places to ensure that the GC does not run at inopportune times. This PR moves us towards all of those things.

When changing the signature of a method in this PR I try to add a Ref or _ref on the end of the name so that any code expecting the old signature will break loudly instead of silently crashing or corrupting the heap. I also updated names for consistency so that methods accepting WasmRoot instances end in _root (some of them ended in _ref or such). Previously there were some _rooted APIs that took bare pointers you promised to root, but those are not safe either so they get replaced with _root or _ref.

WasmRoot's API is updated in this PR to add an .address property that you can use with methods that want a raw T&& address or ref object, and it also gains copy_from and copy_to methods you can use to copy managed pointers from place to place safely with a write barrier (x.value = y.value in JS is not safe).

Bound method signatures are updated to add a new 'R' character which is the equivalent of ref object, so you can replace existing 'o's in signatures when changing your parameters appropriately. This allows existing signatures where you were passing arbitrary JS values to continue to work (temporary rooted storage space is created during the call to hold the value). For out-params you'll want to use 'm' and pass the root.address directly as a bare pointer.

Some dead code is also removed because it would have been time consuming to update it (the AddEventListener/RemoveEventListener APIs, which were originally added for our websocket implementation but are no longer used, etc.)

@kg kg added NO-MERGE The PR is not ready for merge yet (see discussion for detailed reasons) arch-wasm WebAssembly architecture area-System.Runtime.InteropServices.JavaScript labels Mar 1, 2022
@ghost ghost assigned kg Mar 1, 2022
@ghost
Copy link

ghost commented Mar 1, 2022

Tagging subscribers to 'arch-wasm': @lewing
See info in area-owners.md if you want to be subscribed.

Issue Details

For GC safety we need to have write barriers any time we modify a managed reference, and we also want to keep raw managed pointers out of parameters and return values (the GC can't see them there). We also need to introduce GC safe/unsafe regions in appropriate places to ensure that the GC does not run at inopportune times. This PR moves us towards all of those things.

When changing the signature of a method in this PR I try to add a 'Ref' or '_ref' on the end of the name so that any code expecting the old signature will break loudly instead of silently crashing or corrupting the heap.

WasmRoot's API is updated in this PR to add an .address property that you can use with methods that want a raw T&& address, and it also gains copy_from and copy_to methods you can use to copy managed pointers from place to place safely with a write barrier (x.value = y.value in JS is not safe).

Author: kg
Assignees: -
Labels:

* NO MERGE *, arch-wasm, area-System.Runtime.InteropServices.JavaScript

Milestone: -

src/mono/wasm/runtime/driver.c Outdated Show resolved Hide resolved
src/mono/wasm/runtime/driver.c Outdated Show resolved Hide resolved
@kg
Copy link
Member Author

kg commented Mar 8, 2022

/azp run runtime-extra-platforms

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@kg
Copy link
Member Author

kg commented Mar 8, 2022

/azp run runtime-extra-platforms

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@steveisok steveisok self-requested a review March 15, 2022 18:04
@kg kg marked this pull request as ready for review March 15, 2022 18:48
@kg kg requested a review from marek-safar as a code owner March 15, 2022 18:48
@lambdageek
Copy link
Member

I'll try to look at this later tonight or tomorrow morning

Copy link
Member

@lambdageek lambdageek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking good. Needs some broader GC Unsafe regions in some places.

Also, you should consider adding the MONO_ASSERT_GC_SAFE macros (like in xamarin-macios, below):

https://github.com/xamarin/xamarin-macios/blob/eb281aefee7e06f466cdc4779bb6a9dd317df331/runtime/xamarin/runtime.h#L404-L410

In particular if you have C helpers, I find it useful to put MONO_ASSERT_GC_UNSAFE in them to ensure that their callers switched from GC Safe (where all GC code and the C code it invokes directly executes)

src/mono/wasm/runtime/driver.c Outdated Show resolved Hide resolved
src/mono/wasm/runtime/corebindings.c Outdated Show resolved Hide resolved
src/mono/wasm/runtime/corebindings.c Show resolved Hide resolved
src/mono/wasm/runtime/corebindings.c Outdated Show resolved Hide resolved
src/mono/wasm/runtime/corebindings.c Outdated Show resolved Hide resolved
src/mono/wasm/runtime/driver.c Outdated Show resolved Hide resolved
Copy link
Member

@lambdageek lambdageek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The C code is starting to look boring and uniform, which is a good thing. :shipit:

src/mono/wasm/runtime/driver.c Outdated Show resolved Hide resolved
src/mono/wasm/runtime/driver.c Outdated Show resolved Hide resolved
src/mono/wasm/runtime/driver.c Outdated Show resolved Hide resolved
src/mono/wasm/runtime/driver.c Outdated Show resolved Hide resolved
@lewing
Copy link
Member

lewing commented Mar 22, 2022

/azp run runtime-wasm

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

kg added 2 commits March 29, 2022 20:40
…ref/out parameters (squashed)

Introduce 'MonoObjectRef' ts type. Migrate mono_string_intern to not have a retval
Add new 'R' signature char for 'ref object'
Remove AddEventListener and RemoveEventListener
Update call_method signature to avoid passing raw object pointers
Ref-ify one websocket API and fix types and incorrect rooting of two others
Add deprecation metadata
Remove outdated comments
Add volatile modifiers, satisfy eslint
Use macros for volatile
Move some gc stuff into a header, add unsafe regions in corebindings.c
@kg
Copy link
Member Author

kg commented Apr 2, 2022

I've verified that blazor's sample works using this as a runtime pack, so it should be pretty safe to merge once all the tests are passing. Going to try and figure out why they aren't passing anymore...

@kg
Copy link
Member Author

kg commented Apr 2, 2022

Making some changes to the exports based on problems I've hit trying to update blazor to use the new APIs, so I can't land it until that's done.

@lewing
Copy link
Member

lewing commented Apr 5, 2022

@kg how is the additional work coming?

@kg kg merged commit c537cc6 into dotnet:main Apr 6, 2022
LakshanF added a commit to LakshanF/runtime that referenced this pull request Apr 11, 2022
commit 7bfc61b970e28f94782ef7c0cbcbbbc94ef9f5eb
Author: Juan Hoyos <juan.hoyos@microsoft.com>
Date:   Mon Apr 11 01:24:09 2022 -0700

    Fix dbgshim entry in platform manifest (#67831)

    This fixes the official build - mono's dbgshim still ships from the runtime repo.

commit 2087c07830770d3c7b8e8452e42a398b16ac0a0b
Author: Dan Moseley <danmose@microsoft.com>
Date:   Sun Apr 10 17:44:05 2022 -0600

    Remove COM from profiler messages (#67774)

    * Remove COM from profiler messages

    * Remove COR_ mentions

commit c1f6fb836fc2eeb8fecb233abbd8aa8e3de4a838
Author: Theodor Zoulias <48834899+theodorzoulias@users.noreply.github.com>
Date:   Mon Apr 11 02:30:05 2022 +0300

    Take method, XML documentation corrections (#67812)

    The public T Take(); method doesn't throw OperationCanceledException.

commit f4931fe0e530d7371ea98c5db13e90c61b56c410
Author: Viktor Hofer <viktor.hofer@microsoft.com>
Date:   Mon Apr 11 00:48:47 2022 +0200

    Delete dead code (#67648)

commit 4e61fb11116393b9babdb029412eb37274cddf73
Author: Jan Kotas <jkotas@microsoft.com>
Date:   Sun Apr 10 12:04:55 2022 -0700

    Delete dummy ==++== file headers (#67823)

    These file headers are leftovers from before open sourcing. We have missed cleaning them up in some files.

commit cde7799901885d47c6c9c12dc3e2166d1a33d90a
Author: Kunal Pathak <Kunal.Pathak@microsoft.com>
Date:   Sun Apr 10 08:30:35 2022 -0700

    Use CRT implementation of memset/memcpy (#67788)

    * Use CRT implementation of memset/memcpy

    * Remove the outdated comment:

commit 4a8f23098702d7d8693c5673ed8d31a1af8e8d72
Author: Dan Moseley <danmose@microsoft.com>
Date:   Sun Apr 10 09:29:43 2022 -0600

    Remove dead strings from .rc files (#67817)

commit 72dc5c5dc48089a0a2bd1c094483a4c743461cd5
Author: Jan Kotas <jkotas@microsoft.com>
Date:   Sat Apr 9 21:58:35 2022 -0700

    Delete some Win9x-specific code and comments (#67814)

commit 93c7c896c70737fb7b81480d11bba108fb0f7660
Author: creator1creeper1 <88212773+creator1creeper1@users.noreply.github.com>
Date:   Sat Apr 9 20:06:57 2022 +0200

    GC: Correctly align `exclusive_sync.alloc_objects` (#67799)

    Previously, the calculation of the `cache_separator` size of the array
    failed to take the first member `rwp_object` into account. Therefore,
    `alloc_objects` was not properly aligned to `HS_CACHE_LINE_SIZE`.

commit 1276f01a3df7cd467099e4a3a497147d10359988
Author: Alexander Köplinger <alex.koeplinger@outlook.com>
Date:   Sat Apr 9 19:52:53 2022 +0200

    [mono] Cleanup unused code and remove sparc and mips architectures (#67503)

    * Remove linux_magic.h

    * Remove dead files

    * Remove remap_keys() in assembly.c

    It is no longer needed.

    * Remove mono_dump_jit_offsets/mono_dump_metadata_offsets

    It was actually producing incorrect code, see https://github.com/mono/mono/issues/13689
    This wasn't noticed because we're generating the offsets file via offsets-tool.py and that uses the correct target.platform_define which is passed to the script.

    The code in metadata-cross-helpers.c was only used as a verification helper but I don't think it has enough value to keep.

    * Remove leftover code from Mono.Simd

    * Remove leftover code from Mono.Tasklets

    * Remove unused functions in mono-proclib.c

    * Remove sparc and mips architecture

    * Disable the Vector4 SIMD fix, it causes an issue

    See https://github.com/dotnet/runtime/issues/67762

commit c1f6785534560c473e460d00251390c6573075e5
Author: Vladimir Sadov <vsadov@microsoft.com>
Date:   Sat Apr 9 10:43:53 2022 -0700

    Fix for the elusive suspension hang on Win7 WOW64 (#67628)

    * Do not use CONTEXT_EXCEPTION_REQUEST anywhere except in EEGetThreadContext

    * a test for suspension livelock in concurrent stack producer-consumer scenario

commit 107676e60c83bdd2da95b5e6200475c27c99e6ee
Author: Lakshan Fernando <lakshanf@microsoft.com>
Date:   Sat Apr 9 10:24:58 2022 -0700

    Adding class target to RequiresDynamicCodeAttribute (#67778)

    * Adding class target to RequiresDynamicCodeAttribute

    * FB

commit 063fca6ddb701e36dd45f4a613591ad3718ac271
Author: Jeff Handley <jeffhandley@users.noreply.github.com>
Date:   Sat Apr 9 09:19:51 2022 -0700

    FabricBot config: Viktor is back (#67787)

commit 0c64bdf3afc1fdc9166ad6c22c1990d3e0a6c509
Author: Tomáš Rylek <trylek@microsoft.com>
Date:   Sat Apr 9 16:03:45 2022 +0200

    Always run CopyAllNativeProjectReferenceBinaries (#67718)

    Previously this target was only called from the recursive traversal
    used when globally copying native artifacts for all projects (this
    is used in the lab where the native artifacts are produced on
    a different machine than the managed test artifacts). In case of
    combined (local) test build we weren't running the target, only
    its dependencies (ResolveCMakeNativeProjectReference and
    ConsolidateNativeProjectReference); this used to be sufficient as
    these two targets handle all logic related to copying native
    components of a normal project, however I have recently added
    special logic for copying merged test wrapper native artifacts
    the CopyAllNativeProjectReferenceBinaries target and so we now must
    make sure it also always runs.

    Mark JIT optimization-sensitive tests as out-of-process and fix
    logic around skipping of out-of-process tests on the excluded platforms.

    Fix GetFilteredExcludeList to properly report out-of-process tests

    Add issues.targets exclusions for compat_i4_u_il_d / compat_i4_u_il_r
    on all Mono platforms

    Log timestamps in generated wrapper for investigation of timeouts

    Log timestamps around Crossgen2 invocations for investigation of timeouts

    Suppress noisy stderr spew for deletion of non-existent rsp files

    Expand test timeout to 30 minutes

    In the merged scenario we're intentionally reducing the number of
    work items at the expense of a single work item size. When
    Crossgen2 compilation is involved, with hundreds of tests in the
    Methodical_*** projects we're hitting the 15 minute test timeout
    so I'm bumping it up to 30. I have also suppressed uninteresting
    stderr spew from deletion of the pre-existing composite image.

    Thanks

    Tomas

commit 3537bf20373e2c6fd01d4e2d477be1b6d5be51d9
Author: Michal Strehovský <MichalStrehovsky@users.noreply.github.com>
Date:   Sat Apr 9 22:37:52 2022 +0900

    Remove Roslyn workaround in NativeAOT smoke test (#67795)

    Might not be needed after #67780.

commit 1094cee7816d1f0433da14b74b491a9fbb2212de
Author: Adeel Mujahid <3840695+am11@users.noreply.github.com>
Date:   Sat Apr 9 16:37:05 2022 +0300

    Update coding-style.md (#67801)

    * Remove mention of outdated formatting script and C++ language that was removed from libraries.
    * Move C# coding style at the top of document.

commit c38f006577b673eb2de9742d00106edc74ffe9be
Author: Stephen Toub <stoub@microsoft.com>
Date:   Sat Apr 9 09:28:22 2022 -0400

    Rewrite RegexPrefixAnalyzer.FindFirstCharClass (#67732)

    Every other analysis we use is on a recursion plan; this one is the last holdover that's still based on iteration maintaining its own custom stack of objects, making it difficult to comprehend the logic.  As it turns out, it also has some bugs causing it to miss some cases, in particular where the pattern starts with an anchor followed by a negated set.  This PR rewrites it to be simpler / recursive like the rest of our analyses.

commit 45cc9d5954ecc3bccbff0ac87ad80a1862e71eb8
Author: Egor Bogatov <egorbo@gmail.com>
Date:   Sat Apr 9 12:54:15 2022 +0300

    Vectorize IndexOf for OrdinalIgnoreCase (#67758)

    Co-authored-by: Stephen Toub <stoub@microsoft.com>

commit 072d87b8c95cc7427a7a242c85d6b17950c7a074
Author: Jose Perez Rodriguez <joperezr@microsoft.com>
Date:   Fri Apr 8 22:43:54 2022 -0700

    Re-adding some tests that were commented out now that IgnoreCase work is done (#67709)

commit 71294e8176f48c7aecd40c849a40c2dec1d01bfd
Author: Stephen Toub <stoub@microsoft.com>
Date:   Sat Apr 9 00:28:49 2022 -0400

    Update C# compiler and revert workaround

    * Update C# compiler to pick up attribute fix

    * Revert "Work around https://github.com/dotnet/roslyn/issues/60572"

    This reverts commit dc030a0362e3177389f4d4e73e1332c345eab891.

commit 285b8259af30e255980b1ebfb2ddd60ca291a83a
Author: Aleksey Kliger (λgeek) <aleksey@lambdageek.org>
Date:   Fri Apr 8 23:30:15 2022 -0400

    [runtime] copy updated byref nullables after invoke (#67652)

    * [runtime] copy updated byref nullables after invoke

    Bring back some code lost in
    https://github.com/dotnet/runtime/pull/60270

    When a `null` is passed for a `ref Nullable<S>` argument to a runtime
    invoke, the invoke wrapper creates a default `Nullable` that should be
    copied back into the original arguments array of the invoke.

    There is code in the managed `Invoke` method to do some of the copying from the temporary
    array that is created for the Invoke (we pass a `Span<object>` over
    that array from managed to native), but in
    `mono_runtime_try_invoke_span` we create a C array `pa` that has the
    arguments (this takes care of by-value semantics for value types, for
    example).  We need to copy the byref nullables back from `pa` to the
    span, so that managed code can then copy it back from the span to the
    original input array of the Invoke.

    Fixes https://github.com/dotnet/runtime/issues/67269

commit d09f42d1075ce9cedd0101df07c6f4861e03901c
Author: Fan Yang <52458914+fanyang-mono@users.noreply.github.com>
Date:   Fri Apr 8 21:59:14 2022 -0400

    [Mono]Enable emitting intrinsics for System.Numerics.Vector<T> on arm64 (#67125)

    * Enable emitting intrinsics for System.Numerics.Vector<T> on arm64

    * Handle multiply by scalar

    * Fix typo

    * Add support for IsHardwareAccelerated

    * Move architecture specific code under corresponding functions

    * Resolve feedback

    * Fix scalar checking

commit 35ff17525407006719454605d3ed206c38df9349
Author: Bruce Forstall <brucefo@microsoft.com>
Date:   Fri Apr 8 18:58:48 2022 -0700

    Change SuperPMI asm diffs relocation handling (#67688)

    * Change SuperPMI asm diffs relocation handling

    Add new techniques for handling relocations to prevent spurious asm diffs.
    Especially, better handling for REL32 relocs on 64-bit targets, and
    specifically AMD64.

    With these changes, we should rarely if ever need to force REL32 relocs
    to fit (there is code that already does that, as a backstop).

    * Feedback

    * Feedback: break out of loops once `delta` has been determined

commit c815ca5485093ce76d55e38c3d412f77254f59bb
Author: Ankit Jain <radical@gmail.com>
Date:   Fri Apr 8 21:56:46 2022 -0400

    [wasm] Perf: Fixes for blazor_scenarios (#67414)

    * Bump sdk used for workload testing to 7.0.100-preview.4.22180.18

    * Fix multiple issues for blazor scenarios run

    * Standardize on using $(payload)/dotnet, even for wasm runs

    .. which allows removing, and avoiding some special casing for wasm.

    Also, fix the work item names, and job names to indicate wasm/wasmaot.

    * performance-setup.sh: extra logging

    * cleanup

commit 29a76ddafb62fd45ce70402724325ace750d9102
Author: dotnet-maestro[bot] <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date:   Fri Apr 8 20:37:55 2022 -0500

    Update dependencies from https://github.com/dotnet/roslyn-analyzers build 20220407.3 (#67755)

    Microsoft.CodeAnalysis.NetAnalyzers
     From Version 7.0.0-preview1.22180.6 -> To Version 7.0.0-preview1.22207.3

    Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>

commit 998a8a4bd5bd4854491142d8cef49dbfb6e30120
Author: Michal Strehovský <MichalStrehovsky@users.noreply.github.com>
Date:   Sat Apr 9 10:22:17 2022 +0900

    Fix some minor reflection bugs (#67571)

    Found in System.Reflection tests.

commit fabda703f9d237b99190f457aec10ef4165a30f8
Author: Bruce Forstall <brucefo@microsoft.com>
Date:   Fri Apr 8 17:33:27 2022 -0700

    Fix a JIT formatting issue (#67785)

commit 27fbbda5685ac01d48d33c5f2915b8ca65163e97
Author: Vitek Karas <10670590+vitek-karas@users.noreply.github.com>
Date:   Fri Apr 8 16:10:58 2022 -0700

    Update host tracing doc to match the current functionality (#67749)

    I rewrote the doc to act as a point-in-time documentation (instead of a proposal as before).

    Co-authored-by: Elinor Fung <elfung@microsoft.com>

commit ff6abfea0bb9b71eb3215157749047dd120a4d9f
Author: Mike McLaughlin <mikem@microsoft.com>
Date:   Fri Apr 8 13:59:46 2022 -0700

    Remove dbgshim and related code (#67725)

    The dbgshim component has been moved to the diagnostics repo
    and ships out of band.

    Issue: https://github.com/dotnet/runtime/issues/65017

commit 79d9c420fc18b2e11bf26f62bdf7a7275aedab4d
Author: Steve Harter <steveharter@users.noreply.github.com>
Date:   Fri Apr 8 15:38:01 2022 -0500

    Reflection Invoke refactoring to support future byref-like and IL emit features (#66357)

commit b8dc04b445fc98d24fd92262364a9e5b5e23a5b9
Author: Larry Ewing <lewing@microsoft.com>
Date:   Fri Apr 8 14:54:58 2022 -0500

    Use properties for target versions for core and framework (#67717)

    * Populate target framework versions for tasks, and generated nugets based

    .. on other properties, instead of hardcoding the values.

    * Version substitution for MonoTargets nuget

    * Version substitution for MonoAOTCompiler nuget

    * sendhelixhelp.proj: Ensure that DotNetCliVersion gets overridden, as

    .. intended. This seems to have been broken by the condition being
    removed in
    https://github.com/dotnet/arcade/commit/cfdac3560f1c887780bac171df7c22f7805e6f40
    from the `DotNetCliVersion` property, causing the value to always
    overridden again to `6.0.100`.

    And this breaks wasm aot/eat tests on helix:
    ```
    /datadisks/disk1/work/A4EE08D9/p/build/wasm/WasmApp.Native.targets(569,5): error MSB4062: The "MonoAOTCompiler" task could not be loaded from the assembly /datadisks/disk1/work/A4EE08D9/p/build/MonoAOTCompiler/MonoAOTCompiler.dll. Could not load file or assembly 'System.Runtime, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified. [/datadisks/disk1/work/A4EE08D9/w/B3AE0955/e/publish/ProxyProjectForAOTOnHelix.proj]
    /datadisks/disk1/work/A4EE08D9/p/build/wasm/WasmApp.Native.targets(569,5): error MSB4062:  Confirm that the <UsingTask> declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask.
    ```

    * Fix build for net7.0

    Fails with:
    ```
    src/tests/tracing/eventpipe/common/Microsoft.Diagnostics.NETCore.Client/DiagnosticsIpc/IpcSocket.cs(27,35): error CS0108: 'IpcSocket.AcceptAsync(CancellationToken)' hides inherited member 'Socket.AcceptAsync(CancellationToken)'. Use the new keyword if hiding was intended. [/__w/1/s/src/tests/tracing/eventpipe/common/Microsoft.Diagnostics.NETCore.Client/Microsoft.Diagnostics.NETCore.Client.csproj]
    ```

    * Fix some more target frameworks

    * bump the workload sdk version

    * Revert "sendhelixhelp.proj: Ensure that DotNetCliVersion gets overridden, as"

    This reverts commit 426b4b19155d54a7f338140f4c87feec471b5d92.

    Last update to Arcade's XHarnessRunner.targets unconditionally set
    DotNetCliVersion, to workaround which this commit was added. But the
    update in this PR changed DotNetCliPackageType to `aspnetcore-runtime`,
    which makes the version from global.json - `6.0.100` incorrect for
    aspnetcore.

    And the next upcoming update will set versions explicitly and change the
    DotNetCliPackageType back to `sdk`.

    Instead, revert this. And don't use version from global.json for now,
    instead relying on the version that xharnesrunner.targets sets.

    Co-authored-by: Ankit Jain <radical@gmail.com>

commit aff3c1867b50d8a021c0a7b1df94f54a40cb44a5
Author: Juan Hoyos <juan.hoyos@microsoft.com>
Date:   Fri Apr 8 12:02:49 2022 -0700

    Fix cross dac packaging (#67710)

commit 19475c2dc8a86e04525ce8781d819b1cfd4c0c2a
Author: Badre BSAILA <54767641+pedrobsaila@users.noreply.github.com>
Date:   Fri Apr 8 20:44:11 2022 +0200

    display tidy message for failed assertions (#67750)

commit cef4ae17d91c278880f45f017e4272afe1f379b3
Author: Maryam Ariyan <maryam.ariyan@microsoft.com>
Date:   Fri Apr 8 14:16:17 2022 -0400

    Add metrics for caching (#66479)

commit 51afa067be9f0d00dac2c455ceb78e38eef1e239
Author: Qiao Pengcheng <qiaopengcheng@loongson.cn>
Date:   Sat Apr 9 01:58:36 2022 +0800

    [LoongArch64] coreclr-jit directory (#62843)

    * Part6-1: add the coreclr-jit directory for LoongArch64. (#59561)

    Co-authored-by: Loongson's .NET-teams

    * [LoongArch64] add jit/CMakeLists.txt from #62889.

    * [LoongArch64] update LoongArch64 after merge from main.

    * [LoongArch64] Fix the error for "IsLoongArch64".

    * [LoongArch64] Fix the cross-compiling error.

    * [LoongArch64] Fixed the compiling errors after merge.

    * [LoongArch64] revert `src/coreclr/jit/ICorJitInfo_API_names.h`.

    * [LoongArch64] workround the compiling error on windows.

    * [LoongArch64] amend the code-format.

    * [LoongArch64] update by `git apply format.patch`.

    * [LoongArch64] Delete the interface getArgType2.
    And refactor the returned values of `getFieldSizeClassificationByHnd`.

    Keep aligned with #62893 `02ff4bfa41d7887b151d381e2697ba82ab6a0bca`.

    * [LoongArch64] update code by `git apply format.patch`
    And update `getLoongArch64PassStructInRegisterFlags`.

    * [LoongArch64] Fixed the error when passing float-arg by integer-reg.

    * [Loongarch64] amend patch formate by 'git apply format.patch'

    * [LoongArch64] update the version of the `LICENSE description`.

    * [LoongArch64] amend the CodeGen::genFnPrologCalleeRegArgs for the SC_IG_BUFFER_SIZE.

    * [LoongArch64]: update the crossgen2 within the JIT.

    * [LoongArch64] git-apply the `format.patch`.

    * [LoongArch64] Fix the compiling error after merge-main.

    * [LoongArch64] amend the code for reviewing by @BruceForstall.

    * [LoongArch64] apply the `format.patch`.

    * [LoongArch64] round 2 amend for reviewing by @BruceForstall.

    * [LoongArch64] round 3 amend for reviewing by @BruceForstall.

    * [LoongArch64] amend the format.

    * [LoongArch64] round 4 amending for reviewing.

    * [LoongArch64] add compiling the `clrjit_unix_loongarch64_*`.

    * [LoongArch64] delete unused code and amend the format.
    Also amend inst_Mov.

    * [LoongArch64] apply the format and fix compiling warning.

    * [LoongArch64] round 1 amend for reviewing by @kunalspathak.

    * [LoongArch64] merge fast-tail-call from main.

    * [LoongArch64] temp commit for windows compiling error.

    * [LoongArch64] amend format for reviewing.

    * [LoongArch64] amend the coding for LA-ABI's flags.

    * [LoongArch64] amend some missed CRs.

    * [LoongArch64] amend some code for CR.

    * [LoongArch64] amend some code for CR round2.

    * [LoongArch64] amend the output format of `emitDisInsName`.

    * [LoongArch64] remove the optimization for type-cast
    which depends on LoongArch64.

    * [LoongArch64] ament the code for CR.

    * [LoongArch64] amend some code for CR.

    * [LoongArch64] amend some code for CR round2.

    * [LoongArch64] amend some code for CR round3.

    * [LoongArch64] amend some code for CR round4.

    * [LoongArch64] amend some code for CR round5.

    * [LoongArch64] amend some code after refacting.

    * [LoongArch64] amend the compare and fix the error
    when running hello-world within debug-mode.

    Co-authored-by: qiaopengcheng <qiaopengcheng-hf@loongson.cn>

commit f89fbb96cabe95db5869e3d44c6b48c1c0f8fc1a
Author: Drew Scoggins <anscoggi@microsoft.com>
Date:   Fri Apr 8 09:51:23 2022 -0700

    Add NoWASM to category filter (#67721)

commit c9e0a3b2e8cb66349820ad3ede4dc35de7d74359
Author: Bruce Forstall <brucefo@microsoft.com>
Date:   Fri Apr 8 09:35:25 2022 -0700

    Add JitDump output for calls to recordRelocation (#67639)

    E.g.,

    ```
    recordRelocation: 000001ECBD3AE28C (rw: 000001ECBD3AE28C) => 000001ECBD38BC04, type 16 (IMAGE_REL_BASED_DISP32), delta 0
    ```

commit 20c4bde6b1b8b7afb173abf730a10eb10c6be55e
Author: Krzysztof Wicher <kwicher@microsoft.com>
Date:   Fri Apr 8 17:35:18 2022 +0200

    Further JsonPropertyInfo caching cleanup (#67754)

commit eb223d8514fb0b3166cc0824d492ca3c0a5736ed
Author: Stephen Toub <stoub@microsoft.com>
Date:   Fri Apr 8 11:09:35 2022 -0400

    Allow getting code coverage for the unit test project itself (#67736)

    This is helpful for our test projects that include source directly into them.  You can now do `dotnet build /t:test /p:Coverage=true /p:CoverageIncludeTests=true` to include the test project in the analysis.

commit dee2bb50f12e5d6ef16eee7ed944b0fb7ef27053
Author: Radek Zikmund <32671551+rzikm@users.noreply.github.com>
Date:   Fri Apr 8 16:40:20 2022 +0200

    Fix exception thrown from MsQuicStream writes when connection is aborted by peer. (#67651)

    * Fix exception thrown from MsQuicStream writes when connection is aborted by peer.

    * Code review feedback

commit 3e5e118c5352d0c06444b7557652b8c280876d5b
Author: Koundinya Veluri <kouvel@users.noreply.github.com>
Date:   Fri Apr 8 07:20:18 2022 -0700

    Change `CrossLoaderAllocatorHash` to not use the GC (#67160)

    * Change `CrossLoaderAllocatorHash` to not use the GC

    `GCHeapHash`:
    - Replaced `GCHeapHash` usage with `SHash`
    - Added `s_supports_autoremove` to `SHash` to simulate `GCHeapHash`'s ability to remove elements while iterating them. When enabled, `SHash` calls `ShouldDelete()` on elements it walks during various operations and removes them if requested
    - Added an optional on-remove cleanup action for elements in `SHash` to ease cleanup of heap-allocated elements

    `CrossLoaderAllocatorHash`:
    - Added formal native types for internal data structures and hash table elements. The layout of the internal data structures is mostly the same as before.
    - Trackers are ref-counted since they may be inserted into multiple hash tables, and get deleted once their ref count reaches zero
    - Translated the current implementation. Used holders where necessary to handle OOMs gracefully.

    Miscellaneous:
    - Removed cooperative GC mode usage in the relevant places in slot backpatching and inline tracking, and removed usage of the forbid-suspend-for-debugger region in those places
    - When deleting call counters, reordered such that the runtime is suspended before the slot backpatching lock is acquired, to prevent the suspension code from suspending for the debugger while the lock is held and leading to FuncEval deadlocks

    Testing:
    - Memory usage is roughly the same as before, if anything it seems to be a bit lower
    - Perf is similar to before, no significant change
    - Ran a slot backpatching test including collectible assemblies in stress mode to look for issues

commit 322ea09acfaa1f334702fddba8b6d74bb2573805
Author: Stephen Toub <stoub@microsoft.com>
Date:   Fri Apr 8 06:19:59 2022 -0400

    Disable ClientAndServer_OneOrBothUseDefault_Ok test (#67737)

commit 8e8a62156ea459945b1d953c4fbe950d276bbc9b
Author: Tom Deseyn <tom.deseyn@gmail.com>
Date:   Fri Apr 8 10:30:12 2022 +0200

    FileSystem: MoveDirectory: some improvements. (#65132)

    * FileSystem: MoveDirectory: some improvements.

    - Perform same file check after MoveFile/rename failed.

    - Unix: use LStat to instead of Stat so links are not followed.

    * Fix case-sensitive rename.

commit e6c8d42cd6b4d6fb7dc35b7a02ff208e665e6cb0
Author: Trayan Zapryanov <lrt80@abv.bg>
Date:   Fri Apr 8 11:22:37 2022 +0300

    Replace 2 allocations from string.ToCharArray() with ReadOnlySpan in System.Private.Xml library (#67002)

    * Remove ToCharArray() used in BinHexDecoder

    * Replace ToCharArray() used in XmlSerializationReader with Span

    * Address feedback

    * Remove not necessary check for null

    * Remove OutOfMemoryException catch

    Co-authored-by: Trayan Zapryanov <Traian.Zaprianov@docuware.com>

commit 9cb6475516b94aff3d35c67eab579ceb351899b9
Author: Vlad Brezae <brezaevlad@gmail.com>
Date:   Fri Apr 8 11:02:37 2022 +0300

    [mono][interp] Fix corruption of the LMF chain (#67663)

    * [mono][interp] Fix corruption of the LMF chain

    If multiple lmf's were unwinded during EH, by pop'ing ext, we were pushing one of them back. This was leading to hangs, since we could end up with a lmf that has itself as a previous lmf. Other weird behavior was also possible.

    * Re-enable test

commit 7c21927c257f8eff7ceb3f3c0fd4ee2c8fe6c414
Author: Tanner Gooding <tagoo@outlook.com>
Date:   Fri Apr 8 00:07:28 2022 -0700

    Updating generic math to support user-defined checked operators (#67714)

    * Uncomment the user-defined checked operators for generic math

    * Change SA1000 to be a suggestion until https://github.com/DotNetAnalyzers/StyleCopAnalyzers/issues/3478 can be resolved

    * Regenerating the System.Runtime ref assembly

    * Adding tests covering user-defined checked operators in generic math

    * Remove the checked() context from integer division, since there is no behavioral difference on .NET

    * Ensure the doc comments around user-defined checked operators are uncommented

    * Fix some doc comments that shouldn't have been uncommented yet

commit c093bb8f2a6f602943affbda995ce860ef25f494
Author: Maoni Stephens <Maoni0@users.noreply.github.com>
Date:   Thu Apr 7 23:50:39 2022 -0700

    need to check if the child obj is on an ro region (#67729)

    when we check if a card is needed, we need to check if the child obj is in an ro region before getting its gen_num since there's no region data structure for it.

commit 1a31bf638c6c220d20ef65f43a07a9ac562d92d9
Author: Michal Strehovský <MichalStrehovsky@users.noreply.github.com>
Date:   Fri Apr 8 14:25:34 2022 +0900

    Fix generation of type forwarders (#67570)

    These need to be interned to account for nested forwarders. We were erroneously generating multiple containing forwarders whenever there's a nested one.

commit c585bd7abd20d39f2c5bd08bca05b7f5280f1f26
Author: Bruce Forstall <brucefo@microsoft.com>
Date:   Thu Apr 7 22:23:17 2022 -0700

    Temporarily disable assert to avoid #67600 (#67711)

commit 244aa7ae7c3ea29821c3a500933d78161c5f470a
Author: Ankit Jain <radical@gmail.com>
Date:   Fri Apr 8 01:22:21 2022 -0400

    [wasm] Add support for installing latest sdk for workload testing (#67606)

    `$(SdkVersionForWorkloadTesting)` can be set to use a specific version.

    This is used with workload testing for Wasm.Build.Tests, and with perf
    pipeline.

commit 4c9065074269dd769b08749435e1e0952b3e0c99
Author: Michal Strehovský <MichalStrehovsky@users.noreply.github.com>
Date:   Fri Apr 8 14:20:08 2022 +0900

    Improve reflection rooting generic methods (#67572)

    When we need to reflection-root a generic method on a generic type (without being told the exact instantiaton and falling back to trying something that works), try to find a fitting generic method instantiation on a fitting generic type.

    Previously we would give up if we had to guess the owning type.

commit 120da3e6081b27533d0e02fdcf529db1a35c0d8e
Author: Michal Strehovský <MichalStrehovsky@users.noreply.github.com>
Date:   Fri Apr 8 14:16:28 2022 +0900

    Make it possible to do typeof of function pointers (#67573)

    We would previously generate a method body that throws InvalidProgramException. Do what CoreCLR does and pretend it was an IntPtr. There's an odd System.Reflection test that tests kind of this because yeah IntPtr is public: https://github.com/dotnet/runtime/blob/3e01d11fd1722450d326f90b4913f3831ce132bb/src/libraries/System.Reflection/tests/TypeInfoTests.cs#L1217-L1222.

commit 457796f3c76788c79bc2fa9b14cccd0d5b89f691
Author: Michal Strehovský <MichalStrehovsky@users.noreply.github.com>
Date:   Fri Apr 8 14:15:13 2022 +0900

    Don't detect link on path (#67525)

    If we're in a poisoned environment (set up for non-x64 Windows SDK), we would successfully detect a link.exe but then crash when actually running it. Remove the detection, we rarely succeed with it anyway; always run vcvarsall.

    Fixes #64135.

commit bed8bc7094f24360256ee4c014da3c5cadc2e3d2
Author: Maksym Koshovyi <maximkoshevoi61@gmail.com>
Date:   Fri Apr 8 05:39:06 2022 +0300

    [Group 7] Enable nullable annotations for `Microsoft.Extensions.Logging.Console` (#67459)

    * First pass

    * DisallowNull

    * Update ctor for ConsoleLoggerProcessor

    * Update ctor for ConsoleLogger

    * formatters can be null

    * Update src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerProvider.cs

    Co-authored-by: Eric Erhardt <eric.erhardt@microsoft.com>

    * Update src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerProcessor.cs

    Co-authored-by: Eric Erhardt <eric.erhardt@microsoft.com>

    * Remove `#nullable enable`

    Co-authored-by: Eric Erhardt <eric.erhardt@microsoft.com>

commit 3b7303af3a917cd9c78cd7194efdb1baf90ea4d9
Author: Ankit Jain <radical@gmail.com>
Date:   Thu Apr 7 21:52:24 2022 -0400

    [wasm] Bundle net472 dependencies for MonoAOTCompiler task (#67719)

    .. same as what we do for WasmAppBuilder, and MonoTargets.

    Without this, it would work if msbuild/VS happened to load the expected
    System.Reflection.Metadata assembly before loading the task. But break
    when it didn't. And that breakage happens with 7.0*p3 with VS 17.2 .

    msbuild, and VS break with:
    ```
    The "MonoAOTCompiler" task failed unexpectedly.System.IO.FileNotFoundException: Could not load file or assembly 'System.Reflection.Metadata, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies.
        The system cannot find the file specified.File name: 'System.Reflection.Metadata, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
            at MonoAOTCompiler.FilterAssemblies(IEnumerable`1 assemblies)
            at MonoAOTCompiler.ExecuteInternal()
            at MonoAOTCompiler.Execute()
            at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
            at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext()

        WRN: Assembly binding logging is turned OFF.To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.Note: There is some performance penalty associ ated with assembly bind failure logging.To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].
    ```

    These are the files bundled for net472 now:

    ```
    tasks/net472/Microsoft.Bcl.AsyncInterfaces.dll
    tasks/net472/Microsoft.Build.dll
    tasks/net472/Microsoft.Build.Framework.dll
    tasks/net472/Microsoft.Build.Tasks.Core.dll
    tasks/net472/Microsoft.Build.Utilities.Core.dll
    tasks/net472/Microsoft.NET.StringTools.dll
    tasks/net472/Microsoft.VisualStudio.Setup.Configuration.Interop.dll
    tasks/net472/MonoAOTCompiler.dll
    tasks/net472/MonoAOTCompiler.dll.config
    tasks/net472/System.Buffers.dll
    tasks/net472/System.Collections.Immutable.dll
    tasks/net472/System.Configuration.ConfigurationManager.dll
    tasks/net472/System.Memory.dll
    tasks/net472/System.Numerics.Vectors.dll
    tasks/net472/System.Reflection.Metadata.dll
    tasks/net472/System.Resources.Extensions.dll
    tasks/net472/System.Runtime.CompilerServices.Unsafe.dll
    tasks/net472/System.Security.AccessControl.dll
    tasks/net472/System.Security.Permissions.dll
    tasks/net472/System.Security.Principal.Windows.dll
    tasks/net472/System.Text.Encodings.Web.dll
    tasks/net472/System.Text.Json.dll
    tasks/net472/System.Threading.Tasks.Dataflow.dll
    tasks/net472/System.Threading.Tasks.Extensions.dll
    tasks/net472/System.ValueTuple.dll
    ```

    Issue: https://devdiv.visualstudio.com/DevDiv/_workitems/edit/1520454

commit 5ec483c64236166f3ab24a809c75f577c808d91c
Author: David Cantú <dacantu@microsoft.com>
Date:   Thu Apr 7 18:29:12 2022 -0700

    S.S.C.Cose: Remove ECDsa and RSA overloads in favor of AsymmetricAlgorithm (#67661)

    * Remove ECDsa and RSA overloads in favor of AsymmetricAlgorithm

    * GenAPI changes

    * Assert parameter names

    * Keep _dummy and _dummyPrimitive

    https://github.com/dotnet/arcade/issues/8792#issuecomment-1090915957

commit 708171d358538cb1225fd91c6ee96e18a2177524
Author: Michal Strehovský <MichalStrehovsky@users.noreply.github.com>
Date:   Fri Apr 8 10:16:20 2022 +0900

    Block implementation details on System.Object (#67574)

    When reflection blocking is disabled (like we do for libraries tests), still block implementation details on System.Object because tests (or anyone else for that matter) don't like to see them. Move implementation details methods on System.Object elsewhere.

commit 7db963a298b5be0903279b1dcfd333371a04324c
Author: Trayan Zapryanov <lrt80@abv.bg>
Date:   Fri Apr 8 03:32:23 2022 +0300

    Cache several char[] allocations in System.Private.Xml library methods (#67001)

    * Cache trim character array in ExtensionMethods.ToUri

    * cache static one more split array

    * Address feedback - add new lines

    * Remove ExtensionMethods.cs and use XmlConvert.ToUri instead.

    * Address feedback3

    Co-authored-by: Traian Zaprianov <Traian.Zaprianov@docuware.com>

commit ade99ed7cb678abe93461906928f33d544e0debe
Author: Larry Ewing <lewing@microsoft.com>
Date:   Thu Apr 7 19:07:04 2022 -0500

    Update dependencies from https://github.com/dotnet/emsdk build 20220401.2 (#67715)

    Microsoft.NET.Workload.Emscripten.Manifest-7.0.100
     From Version 7.0.0-preview.4.22178.1 -> To Version 7.0.0-preview.4.22201.2

    Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>

commit dd66c99ea80513cbbddc2d4c087f79a1928f29bb
Author: Mike McLaughlin <mikem@microsoft.com>
Date:   Thu Apr 7 15:42:31 2022 -0700

    VS4Mac crash reports on MacOS v12 (Monterey) are missing native stack frames. (#67713)

    Can not properly triage VS4Mac failures.

    The amd64 frameless compact encoding is being used now in MacOS version 12 and needed to be implemented.

    Issue: https://github.com/dotnet/diagnostics/issues/2924

commit d43fff4e884d23568cbf8094eeb257d3c64ba18c
Author: Drew Scoggins <anscoggi@microsoft.com>
Date:   Thu Apr 7 14:36:37 2022 -0700

    Increase timeout as AOT tests take longer (#67708)

commit b11a22f9681863d6bf3193a7ab4c2c2041e0eeaf
Author: Zoltan Varga <vargaz@gmail.com>
Date:   Thu Apr 7 23:28:42 2022 +0200

    [mono][llvm] Add support for llvm 13.x. (#67690)

    LLVM 13.x removed the JIT APIs the llvm jit code was using, so the JIT support
    is disabled when 13.x is used for now.

commit 2e1935739c321b413a3f0c10720aea56f00ea8fb
Author: Stephen Toub <stoub@microsoft.com>
Date:   Thu Apr 7 16:59:05 2022 -0400

    Refactor CharSetSolver and friends to avoid unbounded caching (#67673)

    * Refactor CharSetSolver and friends to avoid unbounded caching

    CharSetSolver today is a singleton and holds on to a thread-safe cache that is augmented with every BDD produced by every regex processed.  Over time, then, the cache grows unbounded and represents a significant leak.  This change makes CharSetSolver no longer a singleton, with every regex creating its own CharSetSolver, with caches no longer shared across instances.  In doing so, we also remove the need for CharSetSolver's cache to be thread-safe, making it cheaper with a `Dictionary<>` instead of a `ConcurrentDictionary<>`.

    As part of this refactoring, other code has been refactored and cleaned up:
    - CharSetSolver was the only type deriving from the abstract BDDAlgebra.  The base type has been removed and its functionality merged up into CharSetSolver.
    - ICharAlgebra was the only type inheriting IBooleanAlgebra.  The latter has been removed and its APIs moved up into ICharAlgebra, which has also been renamed to ISolver.
    - Similarly, UInt64Algebra and BitVectorAlgebra have been renamed to UInt64Solver and BitVectorSolver, respectively.
    - Several files were renamed to match the types they contain.
    - Several functions were parameterized with an integer value but the same value was passed in from every call site; that value has been moved to be a const in the method and the parameter removed.
    - CharSetSolver had a complicated PrettyPrint method.  Most of it has been deleted in favor of using the set description functionality already present in RegexCharClass.
    - Generic type parameter names for the implementation of sets (BDD, ulong, BitVector) were all over the map.  I've standardized on TSet.
    - Several members of ISolver (formerly ICharAlgebra/IBooleanAlgebra) have been renamed: True is now Full, False is now Empty, and CharConstraint is now CreateFromChar.  IsSatisfiable and AreEquivalent were removed in favor of adding IsEmpty and IsFull members (AreEquivalent was only ever used with Full, and IsSatisfiable calls were replaced with !IsEmpty calls).
    - Use of "predicate" has largely been removed.
    - Replaced a few recursive algorithms with loops.
    - Added some more comments.

    * Address PR feedback

commit dc030a0362e3177389f4d4e73e1332c345eab891
Author: Stephen Toub <stoub@microsoft.com>
Date:   Thu Apr 7 10:52:48 2022 -0400

    Work around https://github.com/dotnet/roslyn/issues/60572

commit 23b87fb4b927f4a19e339aa03f9f154cad81cfa3
Author: Stephen Toub <stoub@microsoft.com>
Date:   Wed Apr 6 21:20:16 2022 -0400

    Work around https://github.com/dotnet/roslyn/issues/60612

commit 851fbc98b6b666f34fc33af07eed51b230ed2012
Author: Stephen Toub <stoub@microsoft.com>
Date:   Fri Apr 1 10:43:53 2022 -0400

    Manually update C# compiler version to a more recent preview

commit c288acdb794b1f2edba90868a823b161d88bd2b0
Author: Andy Ayers <andya@microsoft.com>
Date:   Thu Apr 7 08:14:09 2022 -0700

    JIT: fix OSR handling for pinned locals (#67680)

    The OSR method may not see any references to the pinned local, but must
    still report it in the GC info. So under OSR, mark (root method) pinned
    locals as implicitly referenced.

    This should address the issue seen in #67688.

commit 32a6620831f28e81f91a33fd09aba3476f43c09e
Author: Andy Ayers <andya@microsoft.com>
Date:   Thu Apr 7 08:13:47 2022 -0700

    JIT: Fix OSR local detection for implicit byref promotion (#67678)

    In #67247 I revised how the JIT determines if a local requires special
    handling for OSR, but for implicit byrefs we may move locals for promoted
    fields back and forth between parents and this messes with the new logic.
    The fix is to reset the `lvIsOSRLocal` bit explicitly when creating the
    fields for an implicit byref promotion.

    Also added a bit of sanity checking to `lvaIsOSRLocal`.

    Fixes #67488.

commit 02f0b2135c7c559b35c4086655aa4f7d47a9ca4c
Author: Krzysztof Wicher <kwicher@microsoft.com>
Date:   Thu Apr 7 17:07:43 2022 +0200

    Cleanup JsonTypeInfo construction (#67700)

commit 7b26638a4c845e4aa91756a24b291618ca5cb1eb
Author: Steve Pfister <steveisok@users.noreply.github.com>
Date:   Thu Apr 7 10:02:15 2022 -0400

    [Android] Disable System.Security.Cryptography tests on x64 and x86 Emulators (#67654)

    Rolling back https://github.com/dotnet/runtime/pull/67057 as the changes we made to monitor caused OOM's to happen more frequently.

    We were also able to reproduce locally, so we'll disable the suite until a proper fix can be made.

    Tracking issue: https://github.com/dotnet/runtime/issues/62547

commit e86e74ed25db60aa69ab0d67a2ce52fb85811b0c
Author: Jakob Botsch Nielsen <Jakob.botsch.nielsen@gmail.com>
Date:   Thu Apr 7 15:56:38 2022 +0200

    Enable MSVC standard conformance for JIT sources, try 2 (#67695)

    This was reverted in 794a19941a20275d47527dfa7389ae9accf754e1 as a
    compiler error had snuck in in the precompiled header. This fixes the
    problem by moving the global placement new operator into new.h instead
    of defining it in compiler.h where jitstd cannot (should not) access it.

commit b2b2f6debe846c4ed0b97e9e40a3ec67e7b4d2f6
Author: Stephen Toub <stoub@microsoft.com>
Date:   Thu Apr 7 09:16:10 2022 -0400

    Add more StringSyntaxAttribute syntaxes (#67621)

    * Add DateFormat and TimeFormat to StringSyntaxAttribute

    * Add NumericFormat to StringSyntaxAttribute

    * Add TimeSpanFormat to StringSyntaxAttribute

    * Add EnumFormat to StringSyntaxAttribute

    * Add GuidFormat to StringSyntaxAttribute

    * Add CompositeFormat to StringSyntaxAttribute

    * Add Xml to StringSyntaxAttribute

    * Add Uri to StringSyntaxAttribute

    * Update ref usage to strings

    * Address API review renames

    * Fix netstandard build

    * Address PR feedback

commit 431f8b6d6ba51c45831347f566c43d9e3a64c08a
Author: Jakob Botsch Nielsen <Jakob.botsch.nielsen@gmail.com>
Date:   Thu Apr 7 14:43:18 2022 +0200

    Reenable crossgen2 promotion outside version bubble (#66983)

    * [crossgen2] Promote single byref aot. (#65682)

    * Rename `CORINFO_FLG_DONT_PROMOTE` to `CORINFO_FLG_DONT_DIG_FIELDS`.

    * Support promotion of `struct{ 1 gcref; }` outside of version bubble.

    Co-authored-by: Sergey Andreenko <andreenkosa@gmail.com>

commit dbc966aa2dca791a145a08c227b06ba23886e876
Author: Egor Bogatov <egorbo@gmail.com>
Date:   Thu Apr 7 13:50:24 2022 +0300

    JIT: Fix UB in CreateConstVector (strict alignment) (#67669)

commit 502268852b88b8ec7f3f57fe0c579897244d55b2
Author: Alexander Köplinger <alex.koeplinger@outlook.com>
Date:   Thu Apr 7 12:21:35 2022 +0200

    Update xharness to latest version (#67667)

    Needed for some perf scenarios.

commit 98e01739167a3dc320b3b2fb6c31291808f19c07
Author: Krzysztof Wicher <kwicher@microsoft.com>
Date:   Thu Apr 7 12:01:08 2022 +0200

    Split Reflection and SourceGen TypeInfos (#67526)

    * Split Reflection and SourceGen TypeInfos

    * Apply PR feedback

    * improve exception unwrapping

commit cca6d24dd44ee73c6907581e25bf5e5fb42ad4c2
Author: Ilona Tomkowicz <32700855+ilonatommy@users.noreply.github.com>
Date:   Thu Apr 7 10:33:10 2022 +0200

    [debugger][wasm] ValueTypeClass refactoring. (#63626)

    * Refactoring.

    * Added null-indexing check.

    * Cleaning ValueTypeClass.

    * Moving public method below private fields.

    * Applied @radical's comments about readonly fields and method names simplification.

    * Rename and correct switch case error.

    Switch case should be based on GetValues result, not GetValueTypeClass.

commit c16075477d048a42a8dac970ca3f637c48b56de6
Author: Jeremy Koritzinsky <jekoritz@microsoft.com>
Date:   Wed Apr 6 21:53:41 2022 -0700

    Various fixes for merged test runners on Mono (#67665)

commit c61cb7192e337230c4b6f7518034f3ac65b0f1cb
Author: Stephen Toub <stoub@microsoft.com>
Date:   Wed Apr 6 22:11:06 2022 -0400

    Remove _caseInsensitive field from RegexInterpreter (#67681)

commit afb1c64a8dd8933d7b4aab99ab0eade72d6e2dab
Author: Jeff Handley <jeffhandley@users.noreply.github.com>
Date:   Wed Apr 6 16:11:30 2022 -0700

    System.Runtime no longer needs to enable preview features (#67162)

    * System.Runtime no longer needs to enable preview features

    * Remove diagnostic suppression around VirtualStaticsInInterfaces

    * Remove remaining CA2252 suppressions for VirtualStaticsInInterfaces

commit 6e3eb0de56e8d5306b756f33bd17a287cf88df68
Author: Petteri Stenius <petteri.stenius@ubisecure.com>
Date:   Thu Apr 7 02:06:38 2022 +0300

    Fix System.DirectoryServices.Protocols to work on Linux (#67338)

    Co-authored-by: Petteri Stenius <petteri.stenius@gmail.com>

commit 794a19941a20275d47527dfa7389ae9accf754e1
Author: Jakob Botsch Nielsen <Jakob.botsch.nielsen@gmail.com>
Date:   Thu Apr 7 01:04:26 2022 +0200

    Revert "Enable MSVC standard conformance for JIT sources (#67608)" (#67674)

    This reverts commit 548bb581b632b40c8caf1aa39514590b7b183926.

commit 1c1cc624cc2ca3e8324439e746735a9870583406
Author: Nikola Milosavljevic <nikolam@microsoft.com>
Date:   Wed Apr 6 15:56:24 2022 -0700

    Add libssl3 dependency (#67658)

commit ccda82b0b60d3d30b15767b56ebf7ae35f1ac510
Author: Jeremy Koritzinsky <jekoritz@microsoft.com>
Date:   Wed Apr 6 15:47:40 2022 -0700

    Pin Roslyn version for generators in .NET 7 ref pack (#67599)

    Co-authored-by: Jose Perez Rodriguez <joperezr@microsoft.com>

commit b248950e52d31e9c05120aa649f082df81023d52
Author: dotnet-maestro[bot] <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date:   Wed Apr 6 17:00:24 2022 -0400

    [main] Update dependencies from dotnet/linker (#67581)

    * Update dependencies from https://github.com/dotnet/linker build 20220404.1

    Microsoft.NET.ILLink.Tasks
     From Version 7.0.100-1.22178.1 -> To Version 7.0.100-1.22204.1

    * Update dependencies from https://github.com/dotnet/linker build 20220405.1

    Microsoft.NET.ILLink.Tasks
     From Version 7.0.100-1.22178.1 -> To Version 7.0.100-1.22205.1

    Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>

commit 71470821df251c43a7bd4a046cb36a11db27d06d
Author: Eirik Tsarpalis <eirik.tsarpalis@gmail.com>
Date:   Wed Apr 6 21:26:25 2022 +0100

    Disable HandleCollectionsAsync for OSX x64 (#67662)

commit c79c8e1523ebba8a4104c431a9eb09f331546a93
Author: Maryam Ariyan <maryam.ariyan@microsoft.com>
Date:   Wed Apr 6 16:01:57 2022 -0400

    Allow access to child providers in ChainedConfigurationProvider (#67610)

commit 548bb581b632b40c8caf1aa39514590b7b183926
Author: Jakob Botsch Nielsen <Jakob.botsch.nielsen@gmail.com>
Date:   Wed Apr 6 21:32:39 2022 +0200

    Enable MSVC standard conformance for JIT sources (#67608)

    The JIT sources pretty much already compiled under this mode except for
    one thing that could just be fixed by removing the code. This will catch
    some obvious bugs, like passing 'false' as a pointer.

commit 07cc0a3d448153649e5f9915e02e7d7b0885fbbf
Author: Zoltan Varga <vargaz@gmail.com>
Date:   Wed Apr 6 21:22:46 2022 +0200

    [mono][llvm] Remove support for llvm 9.x, the 11.x support is stable … (#67277)

    * [mono][llvm] Remove support for llvm 9.x, the 11.x support is stable enough.

    * Use llvm 11.x APIs in some places.

    * Remove cmake support for llvm 9.x as well.

commit 424a09cb81c678fb1ba1c27211b80aba2de070ad
Author: AlekseyTs <AlekseyTs@users.noreply.github.com>
Date:   Wed Apr 6 06:54:22 2022 -0700

    Proposed changes to ECMA 335 for checked user-defined operators (#66714)

    C# now supports defining `checked` variants of the following user-defined operators so that users can opt into or out of overflow behavior as appropriate:
    *  The `++` and `--` unary operators [§11.7.14](https://github.com/dotnet/csharpstandard/blob/draft-v6/standard/expressions.md#11714-postfix-increment-and-decrement-operators) and [§11.8.6](https://github.com/dotnet/csharpstandard/blob/draft-v6/standard/expressions.md#1186-prefix-increment-and-decrement-operators).
    *  The `-` unary operator [§11.8.3](https://github.com/dotnet/csharpstandard/blob/draft-v6/standard/expressions.md#1183-unary-minus-operator).
    *  The `+`, `-`, `*`, and `/` binary operators [§11.9](https://github.com/dotnet/csharpstandard/blob/draft-v6/standard/expressions.md#119-arithmetic-operators).
    *  Explicit conversion operators.

    Motivation:
    There is no way for a user to declare a type and support both checked and unchecked versions of an operator. This makes it hard to port various algorithms to use the proposed `generic math` interfaces exposed by the libraries team. Likewise, this makes it impossible to expose a type such as `Int128` or `UInt128` without the language simultaneously shipping its own support to avoid breaking changes.

    This change adds names for the new checked operators to the specification.

commit 74f58586d6165e4c8c7a33fde2030024d502bf7c
Author: Stephen Toub <stoub@microsoft.com>
Date:   Wed Apr 6 09:01:14 2022 -0400

    Disable RegexExperiment tests

    These were accidentally left enabled.

commit 22870c2e31ae3c028cece52babd3cae57b560713
Author: Radek Zikmund <32671551+rzikm@users.noreply.github.com>
Date:   Wed Apr 6 12:35:17 2022 +0200

    Disable System.Net.Quic.Tests.QuicStreamTests.WriteAsync_LocalAbort_Throws (#67638)

    Contributes to #67612

commit cf2aef28f55aecc1432442129010024cc0b909c4
Author: Stephen Toub <stoub@microsoft.com>
Date:   Wed Apr 6 06:27:00 2022 -0400

    Change Regex UnicodeCategoryRanges to use spans (#67576)

    * Change Regex UnicodeCategoryRanges to use spans

    This avoids the overhead of allocating this data in large byte arrays.

    * Clean up after merge

commit 3dbc67e1b844b022fd759361af4b3cd248afa05e
Author: Stephen Toub <stoub@microsoft.com>
Date:   Wed Apr 6 06:24:22 2022 -0400

    Improve handling of more common Regex sets (#67365)

    - Today for a set like [\r\n], we'll emit a comparison that compares the char to each of '\r' and '\n', but for a set like [^\r\n], we end up falling back to emitting a lookup table.  With this PR, we simply use the existing support for the non-negating case, just negating the result.
    - Today for a set like [\p{IsGreek}\p{IsGreekExtended}] that ends up being two ranges, we'll fall back to our lookup table.  With this PR, we'll emit it as two range checks.
    - Today for a set like [A-Za-z], we'll fall back to our lookup table.  As a special case of two-range support, with this PR we'll now recognize that these ranges are just one bit flip away from each other, and we'll employ the normal ASCII casing to do a single range comparison against the input or'd with a mask.
    - Today as a fallback, we employ a lookup table stored in a string; this requires a bounds check, dereferencing the string object, doing the math to find the right index, doing the math to find the right bit, etc.  With this PR, for sets composed only of ranges where the exclusiveMax - inclusiveMin <= 64, with this PR we'll now emit it as a lookup into a ulong that's done in a branchless fashion and is much faster.
    - It appears to be relatively common for folks to use [\d\D], [\w\W], or [\s\S] as a simple way of saying "match anything"; RegexOptions.Singleline changes '.' to mean this as well.  We already have special handling for '.' with Singleline as "AnyClass"... this just normalizes those other common representations into the same shape so that everyhing else recognizes them accordingly.
    - Today when we see an AnyClass, we emit a nonsense comparison that always results in true (or false for negations); that's because, for a while, the expression given to the matching routine may have had side effects.  There are no longer side effects, though, so it's ok to just emit "true" or "false" directly and make the operation cheaper.
    - For every optimization we have in MatchCharacterClass, we should always be able to handle negation trivially.
    - Handle character classes composed of multiple UnicodeCategories. This helps with composed categories, like \p{N}.
    - Fix hard-coded char class strings for \W and \S. There are multiple ways to invert a RegexCharClass string: you can invert the whole string by just setting the invert flag, or you can invert all the individual components, e.g. if the string is composed of only categories, invert each category.  The hardcoded string the parser uses when you write \W simply sets the negated bit, but this causes problems if \W is used as [\W], because then the individual components are added into a larger set that doesn't have negation set.  And that means \W and [\W] result in different strings, which means any place we special-case the string for \W, we don't recognize [\W].  The same applies to \S. This commit changes the hardcoded string for \W and \S to use the more canonical form. Also, the implementation generally uses "set" and "class" interchangeably, but when specifying the ECMA-related strings, it uses "set" to actually mean "ranges", which is very confusing.  I've changed them.

commit c537cc6a45c4c75524ec98f6a8d4c9637438958e
Author: Katelyn Gadd <kg@luminance.org>
Date:   Wed Apr 6 02:27:12 2022 -0700

    Introduce write barriers in wasm bindings, migrate to ref/out params, add gc safe regions (#65994)

    Introduce write barriers in key parts of the wasm bindings and migrate most code to use ref/out parameters instead of passing raw managed pointers as arguments or return values.
    Introduced MonoObjectRef typescript type and corresponding 'R' signature char (for 'ref/out object')
    Marked various old/unsafe code as deprecated
    Fixed some incorrect rooting in websocket APIs
    Introduced 'volatile' attribute on various C pointers in the bindings
    Added GC unsafe/safe regions in key parts of the C bindings
    Expanded exported APIs

commit bea863ba1f3066af624454ff97aef4d86a46d4a6
Author: Adam Sitnik <adam.sitnik@gmail.com>
Date:   Wed Apr 6 11:07:44 2022 +0200

    log entire content to see which assertion fails (#67586)

    * add AssertExtensions.Eqal(string, string) that logs entire content if provided strings are not equal

    * log entire content to see which assertion fails

commit f6ca720b4276e30b1494400dd11b3e704286aba3
Author: Radek Zikmund <32671551+rzikm@users.noreply.github.com>
Date:   Wed Apr 6 10:08:50 2022 +0200

    Add CipherSuitesPolicy support for MsQuic (#67239)

    * Add CipherSuitesPolicy support for MsQuic

    * Add tests

    * Code review feedback

    * Fix test

commit bb5d94d3d6d91f4b1bbadcb5ff923ac97684e61b
Author: Stephen Toub <stoub@microsoft.com>
Date:   Tue Apr 5 22:58:43 2022 -0400

    Re-enable a few Regex source generator tests (#67585)

commit 90908d5748b3dd3d9995e319ec5d8c612fbe9e6c
Author: Jose Perez Rodriguez <joperezr@microsoft.com>
Date:   Tue Apr 5 19:25:24 2022 -0700

    Changing the logic for how we deal with RegexOptions.IgnoreCase matching. (#67184)

    * Changing the logic for how we deal with RegexOptions.IgnoreCase
    matching.

    * Addressing first round of feedback

    * Addressing more feedback.

    * - Ensure that Backreferences use the same case behavior that the casing table does when using IgnoreCase.
    - Addressing more feedback.

    * Apply suggestions from code review

    Co-authored-by: Stephen Toub <stoub@microsoft.com>

    * Address more feedback

    * Fix allocation regression for patterns with a lot of ascii letters

    * Skip few tests in Browser and .NET Framework

    * Skip one more test that shouldn't be ran on wasm

    * Address more PR Feedback

    * More feedback

    * Skip tests that are failing in NLS-globalization queues

    Co-authored-by: Stephen Toub <stoub@microsoft.com>

commit b4c76da8e8bddce2ffdf0d96574188b9ec20d151
Author: Andrii Kurdiumov <kant2002@gmail.com>
Date:   Wed Apr 6 06:51:22 2022 +0600

    Use ComSmartPtr in tests (#67584)

    * Use ComSmartPtr in tests

    See https://github.com/dotnet/winforms/pull/6743#discussion_r837019661 for discussion

    Co-authored-by: Aaron Robinson <arobins@microsoft.com>

commit 2e998c2712e5e09af2ad7258441a884170b25982
Author: Steve Pfister <steveisok@users.noreply.github.com>
Date:   Tue Apr 5 18:50:29 2022 -0400

    [iOS] Disable OptionsMonitorTest.TestCurrentValueDoesNotAllocateOnceValueIsCached (#67613)

    Created a tracking issue so that it can be fixed at a later date and not block the extra-platforms rolling build.

    https://github.com/dotnet/runtime/issues/67611

commit 0c5e7daf58e5d79cb7a2a8767d1f0e6ec4de4dd4
Author: Aleksey Kliger (λgeek) <aleksey@lambdageek.org>
Date:   Tue Apr 5 16:45:16 2022 -0400

    [tests] Re-enable generic math Create tests on iOS (#67542)

    Fixes https://github.com/dotnet/runtime/issues/61920

    Fixed by https://github.com/dotnet/runtime/pull/66739

commit 009d9cfedd8ebf5649e59633062229c6c5d6f1d0
Author: Jeremy Koritzinsky <jekoritz@microsoft.com>
Date:   Tue Apr 5 12:50:43 2022 -0700

    Move tests that touch the network to outerloop only for infra-stability reasons (#67593)

    * Move tests that touch the network to outerloop only for infra-stability reasons

    * PR feedback

commit 9b315dc916226770932d7d4b09fa9fd5c673fb6e
Author: Koundinya Veluri <kouvel@users.noreply.github.com>
Date:   Tue Apr 5 12:41:30 2022 -0700

    Disable deleting call counting stubs (#67563)

    It's currently incompatible with the W^X changes, and there's another rare issue that may cause a crash when checking if a precode target is a jump stub.

    Memory impact on x64:

    Calling and tiering up ~10 K empty methods causes the following amount of memory to remain.

    Methods with stubs: 10139
    Memory usage: ~876 KB
    Memory usage per method with stub: ~88.5 B
    Committed memory at the end after GC: ~9.5 MB

    On a larger test case that compiles Roslyn sources 16 times in the same process, the numbers are similar.

    Methods with stubs: 22141
    Memory usage: ~1913 KB
    Memory usage per method with stub: ~88.5 B
    Committed memory at the end after GC: 90-95 MB

    It should be possible to reduce the leaked memory per method with stub from ~88.5 B to about 10-16 B depending on architecture in the future if necessary.

    - Fixes https://github.com/dotnet/runtime/issues/66924
    - Fixes https://github.com/dotnet/runtime/issues/66424

commit 605ce9c70d9bcf3edbfdcba280aaa4073276a67d
Author: Andy Gocke <angocke@microsoft.com>
Date:   Tue Apr 5 12:06:34 2022 -0700

    Revert "Publish crossgen as AOT if supported by the target platform (#65948)" (#67590)

    This reverts commit 0d1e04ba2a9ebc9d21a7f65db00407dd0056b547.

commit 16b2cf5baa8c14650261f957d7ea31d4ae723561
Author: Elinor Fung <elfung@microsoft.com>
Date:   Tue Apr 5 11:26:09 2022 -0700

    Update error message for runtime not found (#67564)

commit 749e609615e5ef2697f16e3e48809ae02de7ad19
Author: Jakob Botsch Nielsen <Jakob.botsch.nielsen@gmail.com>
Date:   Tue Apr 5 19:05:35 2022 +0200

    Fix too wide constant stores to parameters on macOS  (#67336)

    Fix #67331

commit 07d8b82d54b6b8db16f5fbb531efcb1e276dc264
Author: Radek Zikmund <32671551+rzikm@users.noreply.github.com>
Date:   Tue Apr 5 15:54:35 2022 +0200

    [QUIC] Call SendResettableCompletionSource.CompleteException in AbortWrite (#67341)

    * Call SendResettableCompletionSource.CompleteException in AbortWrite

    * Add test

    * fixup! Add test

    * Use loop to make the test more robust

commit 34f2b587f3512d3974d73b316e565194df34eea3
Author: Aleksey Kliger (λgeek) <alklig@microsoft.com>
Date:   Mon Apr 4 22:02:34 2022 -0400

    Don't pass --minimize to Xcode 13.3 dsymutil (#67543)

    * Don't pass --minimize to Xcode 13.3 dsymutil

    Fixes https://github.com/dotnet/runtime/issues/66770

    New xcode command line tools dropped support for the `--minimize` option (which
    is now the default).

    The related LLVM change is https://github.com/llvm/llvm-project/commit/5d07dc897707f877c45cab6c7e4b65dad7d3ff6d

    * fix build with older Xcodes

       use a list of options, not a single option with a space in it

    Co-authored-by: Kevin Jones <vcsjones@github.com>

commit 4fed599fe7b7ebea8886d3c987c45e7520ba0fa3
Author: Bruce Forstall <brucefo@microsoft.com>
Date:   Mon Apr 4 17:43:03 2022 -0700

    Don't force `TieredCompilation=0` for SuperPMI replay job (#67489)

    Use whatever flags already are baked into the SuperPMI collection.

commit 161bdef74be8edde951f02524e20df6283474db6
Author: Ankit Jain <radical@gmail.com>
Date:   Mon Apr 4 20:19:35 2022 -0400

    Disable `Microsoft.Extensions.Hosting.WindowsServices.Tests` for (#67550)

    * Disable `Microsoft.Extensions.Hosting.WindowsServices.Tests` for

    .. non-windows platforms.

    * UseWindowsServiceTests: Mark the test as windows only

    * Fix build

commit d01cabec3c26afe9c44ebc865c7ee0112a7da852
Author: Tanner Gooding <tagoo@outlook.com>
Date:   Mon Apr 4 15:40:36 2022 -0700

    Updating the generic math interfaces according to the last API review (#67453)

    * Create INumberBase and allow Complex to implement it

    * Move DivRem to only be available for IBinaryInteger

    * Split apart various floating-point interfaces for better extensibility

    * Annotate the generic math interfaces to implement on BigInteger and Complex

    * Moving various generic math interfaces into the System.Numerics namespace

    * Split various generic math interfaces into their own file for easier discoverability

    * IParseable -> IParsable

    * Update ISignedNumber and IUnsignedNumber to be "marker" interfaces

    * PI -> Pi and IEEERemainder -> Ieee754Remainder

    * Removing the various TInteger constraints in favor of using int where feasible

    * Moving IDivisionOperators and ISpanFormattable down to INumberBase

    * Moving CopySign, IsNegative, MaxMagnitude, and MinMagnitude down to INumber

    * Create<TOther> -> CreateChecked<TOther>

    * Updating various generic math tests

    * Update src/libraries/System.Private.CoreLib/src/System/Numerics/INumber.cs

    Co-authored-by: Theodore Tsirpanis <teo@tsirpanis.gr>

    * Fixing the reference assembly for System.Numerics.Complex

    * Removing generic math support from System.Numerics.Complex until the trimming issue can be resolved

    Co-authored-by: Theodore Tsirpanis <teo@tsirpanis.gr>

commit 580d5568bf58b6831b34e2fd7191f97841f9305c
Author: Aaron Robinson <arobins@microsoft.com>
Date:   Mon Apr 4 13:50:23 2022 -0700

    Disable some interop tests on Win-ARM32 (#67553)

commit 4f602117b7f5832f691056325141a063072de019
Author: Ankit Jain <radical@gmail.com>
Date:   Mon Apr 4 16:14:13 2022 -0400

    [wasm][debugger] Some test fixes (#67373)

    * [wasm] Bump timeout for debugger tests to 30mins, to accomodate EvaluateOnCallFrameTests

    * [wasm][debugger] statically init App.static_method_table

    `debugger-driver.html` has a `App.init` function (called from `onDotnetReady`)
    that init's `App.static_method_table`. But this function can
    race with a test, which might call `invoke_static_method`, and that
    would fail because `App.static_method_table` is not defined yet.

    * Improve logging slightly to help debug random failures

    * Update line numbers in tests

commit 6ffb7f0504c8be8e54ba5ad55a04c4635ec49275
Author: Ankit Jain <radical@gmail.com>
Date:   Mon Apr 4 15:44:41 2022 -0400

    Revert "[main] Update dependencies from dotnet/linker (#67381)" (#67539)

    This reverts commit a0f7927c0ce4cfa8d1c832e70461b0145389a8be.

    It broke wasm builds: https://github.com/dotnet/runtime/pull/67381

commit e3ecc8372630f22011815d64099598e30bcb43a7
Author: devsko <devsko@users.noreply.github.com>
Date:   Mon Apr 4 20:28:28 2022 +0200

    Concatenate multiple cookies with semicolon (#67455)

    * Concatenate cookies with semicolon

    * Restore tests that run on .NET Framework

    * Change Cookie header to Custom

    * PR feedback

commit f46f4c9ed454e13afc650dd61db91c48921a0caa
Author: Michal Strehovský <MichalStrehovsky@users.noreply.github.com>
Date:   Tue Apr 5 01:41:37 2022 +0900

    Make handling of invalid code more robust (#67524)

    * Call `EnsureLoadableMethod` from scanner, same as we do in JitInterface.
    * Make scan/compile diffing less sensitive to differences caused by invalid IL.

commit f035591a173a528e938a682d93703a807e7016bd
Author: Michal Strehovský <MichalStrehovsky@users.noreply.github.com>
Date:   Tue Apr 5 01:30:33 2022 +0900

    Fix handling of makeref/refvalue in generic code (#67523)

    * Fix handling of makeref/refvalue in generic code

    Found in Pri0 tests. We didn't have any coverage for TypedReference in smoke tests.

    * Update Generics.cs

commit fe4ae7d7fb4e6e17a8f491697c7e7eaf8780a5d2
Author: Viktor Hofer <viktor.hofer@microsoft.com>
Date:   Mon Apr 4 17:25:52 2022 +0200

    Fix parent test folder name (#67528)

commit 6f30425664e452170a67072fff5462caf556c796
Author: Marcelo M. Maciel <4993482+marcelo-maciel@users.noreply.github.com>
Date:   Mon Apr 4 09:44:14 2022 -0300

    Updated branch name, from master to main. (#67522)

commit d9b8a0904187c533990cba681bb5defb57382a02
Author: madelson <1269046+madelson@users.noreply.github.com>
Date:   Mon Apr 4 07:59:23 2022 -0400

    Avoid pre-allocating large arrays in some scenarios for Enumerable.Chunk (#67210)

    * Avoid pre-allocating large arrays in some scenarios for Enumerable.Chunk().

    Fix #67132

    * Switch Chunk() to use List-based implementation.

    See discussion here:
    https://github.com/dotnet/runtime/pull/67210#discussion_r836561697

    * Address feedback from https://github.com/dotnet/runtime/pull/67210/files

commit c830e33c1aa0526ceefead48e39c3d483e7732c9
Author: Egor Bogatov <egorbo@gmail.com>
Date:   Mon Apr 4 12:46:30 2022 +0300

    JIT: Optimize unused array allocations (#67205)

    Co-authored-by: Jan Kotas <jkotas@microsoft.com>
    Co-authored-by: Jakob Botsch Nielsen <Jakob.botsch.nielsen@gmail.com>

commit 7281406fe89936e3bedd5e3a1c742f421f21a9f3
Author: …
maraf added a commit that referenced this pull request Apr 29, 2022
Migrate rest of the JS interop functions to out params instead of return. 
A follow up on the #65994.
- `mono_wasm_invoke_js_with_args`
- `mono_wasm_cancel_promise`
- `mono_wasm_compile_function`
@ghost ghost locked as resolved and limited conversation to collaborators May 6, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
arch-wasm WebAssembly architecture area-System.Runtime.InteropServices.JavaScript NO-MERGE The PR is not ready for merge yet (see discussion for detailed reasons)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants