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

[arm64] JIT: Redundant zero/sign extensions after ldrX/ldrsX #62630

Merged
merged 14 commits into from
Jan 19, 2022

Conversation

EgorBo
Copy link
Member

@EgorBo EgorBo commented Dec 10, 2021

Just a quick peephole opt to drop redundant zero extensions after ldr, seems to have some nice asm diffs: up to -177648 bytes: https://dev.azure.com/dnceng/public/_build/results?buildId=1508477&view=ms.vss-build-web.run-extensions-tab

Minimal repro:

static ulong Foo(ref uint p) => p;

Codegen diff:

; Method Prog:Foo(byref):long
G_M41239_IG01:
            stp     fp, lr, [sp,#-16]!
            mov     fp, sp
G_M41239_IG02:
            ldr     w0, [x0]
-           mov     w0, w0
G_M41239_IG03:
            ldp     fp, lr, [sp],#16
            ret     lr
-; Total bytes of code: 24
+; Total bytes of code: 20

Closes #35254

@dotnet-issue-labeler dotnet-issue-labeler bot added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Dec 10, 2021
@ghost
Copy link

ghost commented Dec 10, 2021

Tagging subscribers to this area: @JulieLeeMSFT
See info in area-owners.md if you want to be subscribed.

Issue Details

Just a quick peephole to drop redundant zero extensions after ldr, seems to have some nice asm diffs..

Author: EgorBo
Assignees: -
Labels:

area-CodeGen-coreclr

Milestone: -

@EgorBo EgorBo changed the title arm64: redundant zero extend after ldr [arm64] JIT: Redundant zero extend after ldr/ldrh/ldrb Dec 10, 2021
@EgorBo EgorBo marked this pull request as draft December 10, 2021 15:32
@EgorBo EgorBo force-pushed the arm64-zeroext-after-ldr branch from 476a745 to 5df813b Compare December 11, 2021 15:37
@EgorBo EgorBo marked this pull request as ready for review December 11, 2021 15:38
@EgorBo
Copy link
Member Author

EgorBo commented Dec 11, 2021

/azp run Fuzzlyn, Antigen

@azure-pipelines
Copy link

Azure Pipelines successfully started running 2 pipeline(s).

@EgorBo EgorBo changed the title [arm64] JIT: Redundant zero extend after ldr/ldrh/ldrb [arm64] JIT: Redundant zero/sign extensions after ldrX/ldrsX Dec 11, 2021
@EgorBo
Copy link
Member Author

EgorBo commented Dec 12, 2021

/azp run Fuzzlyn

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@jakobbotsch
Copy link
Member

jakobbotsch commented Dec 13, 2021

@EgorBo I noticed that no arm64 results were summarized in the latest Fuzzlyn run because one of the partitions timed out (likely it was reducing an example past the timeout of 1.5 hours, might need to up it a bit or give up on reductions if we are getting close to the timeout). But it looks like some examples were found, I extracted one from one of the partitions that weren't killed:

// Generated by Fuzzlyn v1.5 on 2021-12-12 18:21:13
// Run on Arm64 Linux
// Seed: 16712647819592322137
// Reduced from 55.7 KiB to 0.3 KiB in 00:09:53
// Debug: Outputs True
// Release: Outputs False
public class C0
{
    public sbyte F2;
}

public class Program
{
    public static void Main()
    {
        var vr2 = new C0();
        uint[, ] vr9 = new uint[, ]{{2451056371U}};
        bool vr10 = vr2.F2-- <= vr9[0, 0];
        System.Console.WriteLine(vr10);
    }
}

@EgorBo
Copy link
Member Author

EgorBo commented Dec 14, 2021

/azp run Fuzzlyn

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@EgorBo
Copy link
Member Author

EgorBo commented Dec 16, 2021

/azp run Fuzzlyn

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@EgorBo
Copy link
Member Author

EgorBo commented Jan 15, 2022

@dotnet/jit-contrib PTAL, very simple change with nice diffs (up to -44376)

tree->AsOp()->gtOp1 = tmp;
BlockRange().InsertAfter(op1, tmp);
}

Copy link
Member Author

Choose a reason for hiding this comment

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

dead code

@BruceForstall
Copy link
Member

  1. Please update the IsRedundantMov function header comment to cover this new case.
  2. Did you look at why we're generating the extraneous mov in the first place? I.e., is it easy/possible to simply stop generating it instead of cleaning it up later?

@EgorBo
Copy link
Member Author

EgorBo commented Jan 19, 2022

Did you look at why we're generating the extraneous mov in the first place? I.e., is it easy/possible to simply stop generating it instead of cleaning it up later?

Yes it's possible via a sort of an invalid LIR:

N004 (  5,  5) [000003] ---XG-------              *  RETURN    long   $280
N003 (  4,  4) [000002] ---XG----U--              \--*  CAST      long <- ulong <- uint <l:$241, c:$243>
N002 (  3,  2) [000001] *--XG-------                 \--*  IND       int    <l:$201, c:$200>
N001 (  1,  1) [000000] ------------                    \--*  LCL_VAR   byref  V00 arg0         u:1 (last use) $80
N004 (  5,  5) [000003] ---XG-------              *  RETURN    long   $280
N002 (  3,  2) [000001] *--XG-------               \--*  IND       int    <l:$201, c:$200>
N001 (  1,  1) [000000] ------------                  \--*  LCL_VAR   byref  V00 arg0         u:1 (last use) $80

or via a new GT_IND_x node but it doesn't bring much value compared to this change IMO.

but I'd keep it in the emitter (it's a few lines of code anyway) rather than producing sub-valid IR in lower. It's just like ldr cleared upper 4 bytes for us unintentionally 🙂

@EgorBo
Copy link
Member Author

EgorBo commented Jan 19, 2022

Please update the IsRedundantMov function header comment to cover this new case.

Done!

Copy link
Member

@kunalspathak kunalspathak left a comment

Choose a reason for hiding this comment

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

LGTM

@EgorBo EgorBo merged commit 7f828a7 into dotnet:main Jan 19, 2022
mkhamoyan added a commit to mkhamoyan/runtime that referenced this pull request Jan 20, 2022
commit 36cdb5fc0c38cbb44291114e48e2b202ff37db01
Author: Ilona Tomkowicz <[email protected]>
Date:   Thu Jan 20 11:03:02 2022 +0100

    [wasm][debugger] Added support for stepper boundary attribute (#63991)

    * Hidden methods and step through methods behave the same way.

    * Perpared flow for setting JustMyCode in the future.

    * Tests for JustMyCode setting before debug launch.

    * Transformed into dynamic JustMyCode change flow.

    * JustMyCode disabled, first 3 cases solved.

    * Finished behavior for JMC disabled (with 1 difference).

    * JMC enabled: stepIn np bp + stepIn bp + resume bp.

    * Functional version (with minor deviations from expected behavior).

    * Refactoring.

    * All tests for NonUserCode work.

    * Fix line number after adding code above.

    * Stepper boundary with tests.

    * Save information about multiple decorators.

    * Fix error in merge.

commit 5a523cf27a9b73e61adb1408f21b5e75a2246d9e
Author: Ilona Tomkowicz <[email protected]>
Date:   Thu Jan 20 10:26:06 2022 +0100

    [debugger][wasm] Added support for non user code attribute (#63876)

    * Hidden methods and step through methods behave the same way.

    * Perpared flow for setting JustMyCode in the future.

    * Tests for JustMyCode setting before debug launch.

    * Transformed into dynamic JustMyCode change flow.

    * JustMyCode disabled, first 3 cases solved.

    * Finished behavior for JMC disabled (with 1 difference).

    * JMC enabled: stepIn np bp + stepIn bp + resume bp.

    * Functional version (with minor deviations from expected behavior).

    * Refactoring.

    * All tests for NonUserCode work.

    * Fix line number after adding code above.

    * Fix error in merge.

    * Removing duplicated tests.

commit 8f2c84f02b74dbbe6e1f02dc9be37cf3ee288d6e
Author: Peter Sollich <[email protected]>
Date:   Thu Jan 20 10:06:45 2022 +0100

    Fix issues with verify_regions, clear_batch_mark_array_bits. (#63798)

    Details:
    - we cannot verify the tail of the region list from background GC, as it may be updated by threads allocating.
    - fix case in clear_batch_mark_array_bits where end is equal to the very end of a segment and we write into uncommitted memory in the mark_array.
    -  bgc_clear_batch_mark_array_bits did some checks and then called clear_batch_mark_array_bits which repeated the exact same checks. Renamed clear_batch_mark_array_bits to bgc_batch_mark_array_bits and removed the old copy, removed the declaration for clear_batch_mark_array_bits.

commit e4bfedd847990795eb28cda4008b5ff4c58fd561
Author: Jeremy Barton <[email protected]>
Date:   Thu Jan 20 00:06:28 2022 -0800

    Fix OpenSSL version check in GetAlpnSupport

    The previous check failed 3.0.0 because the Minor was 0 and Build was 0.

    It could probably be rewritten to be `>= new Version(1, 0, 2)`, but that'd require more thinking.

commit 2cf6b0d07309a3c19938f4c886fe13e8d5cc28ee
Author: Andrew Au <[email protected]>
Date:   Wed Jan 19 20:57:41 2022 -0800

    Fix gc_heap::remove_ro_segment (#63473)

commit 65a5d0e8a3027f2b240d098f47327ba3e1f743b1
Author: Tlakaelel Axayakatl Ceja <[email protected]>
Date:   Wed Jan 19 19:46:45 2022 -0800

    Add ProcessLinkerXmlBase to NativeAOT (#63666)

    Add Xml Parsing linker files as a reference source to NativeAOT
    Rename NativeAOT ProcessLinkerXmlBase version to ProcessXmlBase (uses XmlReader)
    Add ProcessLinkerXmlBase from linker and fix it so it can be used in NativeAOT (uses XPath)

commit f1c8b10ef824c5abf0c851f610ab0961ca31693f
Author: Egor Chesakov <[email protected]>
Date:   Wed Jan 19 19:43:26 2022 -0800

    [Arm64] Keep unrolling InitBlock and CopyBlock up to 128 bytes (#63422)

    * Add INITBLK_LCL_UNROLL_LIMIT and CPBLK_LCL_UNROLL_LIMIT of 128 bytes in src/coreclr/jit/targetarm64.h

    * Keep unrolling InitBlock up to INITBLK_LCL_UNROLL_LIMIT bytes when dstAddr points to the stack in src/coreclr/jit/lowerarmarch.cpp

    * Keep unrolling CopyBlock up to CPBLK_LCL_UNROLL_LIMIT bytes when both srcAddr and dstAddr point to the stack in src/coreclr/jit/lowerarmarch.cpp

commit a5158df084780e52005e4dcbd02ee091542e06d0
Author: Will Smith <[email protected]>
Date:   Wed Jan 19 18:44:19 2022 -0800

    'cmeq' and 'fcmeq' Vector64<T>.Zero/Vector128<T>.Zero ARM64 containment optimizations (#62933)

    * Initial work

    * Added a comma to display

    * Cleanup

    * Fixing build

    * More cleanup

    * Update comment

    * Update comment

    * Added CompareEqual Vector64/128 with Zero tests

    * Do not contain op1 for now

    * Wrong intrinsic id used

    * Removing generated tests

    * Removing generated tests

    * Added CompareEqual tests

    * Supporting containment for first operand

    * Fix test build

    * Passing correct register

    * Check IsVectorZero before not allocing a register

    * Update comment

    * Fixing test

    * Minor format change

    * Fixed formatting

    * Renamed test

    * Adding AdvSimd_Arm64 tests:

    * Adding support for rest of 'cmeq' and 'fcmeq' instructions

    * Removing github csproj

    * Minor test fix

    * Fixed tests

    * Fix print

    * Minor format change

    * Fixing test

    * Added some emitter tests

    * Feedback

    * Update emitarm64.cpp

    * Feedback

commit 68a923a24edb47f1d0e3c38a69d4091a7587bfc4
Author: Andrew Au <[email protected]>
Date:   Wed Jan 19 17:59:07 2022 -0800

    Check if the child object is in the heap range before object_gennum (#63970)

commit 752569f66bcde98fcc4dd1e651f9f1f138184c5c
Author: Andrew Au <[email protected]>
Date:   Wed Jan 19 17:58:39 2022 -0800

    Check if the child object is in the heap range before get_region_plan_gen_num (#63828)

commit 5cefc0f9e618e2d8b38d7de67bbd8a50adb9646f
Author: SingleAccretion <[email protected]>
Date:   Thu Jan 20 04:23:50 2022 +0300

    Fix invalid threading of nodes in rationalization (#64012)

    The code in question assumes that the ASG will be
    reversed and thus threads "simdTree" before "location"
    in the linear order. That dependency, while valid,
    because "gtSetEvalOrder" will always reverse ASGs
    with locals on the LHS, is unnecessary and incorrect
    from the IR validity point of view.

    Fix this by using "InsertAfter" instead of manual
    node threading.

commit 93dc760481bdde2c463d725c2927b9da8787eb98
Author: Tomáš Rylek <[email protected]>
Date:   Thu Jan 20 01:52:15 2022 +0100

    Fix Crossgen2 bug #61104 and add regression test (#63956)

    The issue tracks the runtime regression failure where
    Crossgen2-compiled app is unable to locate a type with non-ASCII
    characters in its name. The failure was caused by the fact that
    Crossgen2 was incorrectly zero-extending the individual UTF8 characters
    when calculating the hash whereas runtime is sign-extending them.

    Thanks

    Tomas

commit 94b699cc6f6b88c6de1d13152143d32285c59555
Author: Jeremy Koritzinsky <[email protected]>
Date:   Wed Jan 19 16:46:00 2022 -0800

    Update StructMarshalling design now that DisableRuntimeMarshallingAttribute is approved (#63765)

    Co-authored-by: Elinor Fung <[email protected]>

commit a618086f53fa755732697fba171a16e8bf67900a
Author: Andy Ayers <[email protected]>
Date:   Wed Jan 19 16:01:16 2022 -0800

    JIT: fix up switch map for out-of-loop predecessor (#64014)

    If we have a loop where some of the non-loop predecessors are switchs, and
    we add pre-header to the loop, we need to update the switch map for those
    predecessors.

    Fixes #63982.

commit 7f828a7e6b712bdeab02d75160249cd13c26a467
Author: Egor Bogatov <[email protected]>
Date:   Thu Jan 20 02:08:10 2022 +0300

    [arm64] JIT: Redundant zero/sign extensions after ldrX/ldrsX (#62630)

commit ae1b755cd074745b0f09e826d3c7064b2a8f20dd
Author: Dan Moseley <[email protected]>
Date:   Wed Jan 19 16:07:53 2022 -0700

    Retries for flaky WMI test (#64008)

commit 54eec5d1f4d7ded21e33e65c63ada26afe80b208
Author: Elinor Fung <[email protected]>
Date:   Wed Jan 19 14:23:48 2022 -0800

    Make ILStubGenerated event log ModuleID corresponding to that on other events (#63974)

commit 97fec41a752f067f4d6dde170073300e1184693b
Author: Santiago Fernandez Madero <[email protected]>
Date:   Wed Jan 19 14:18:21 2022 -0800

    Add runtime-extra-platforms pipeline to have matching runtime PR and Rolling builds (#62564)

    * Add runtime-extended-platforms pipeline to have matching runtime PR and Rolling builds

    * Fix evaluate changed paths condition for the extra pipeline

    * PR Feedback and fix condition

    * Move MacCatalyst back to staging, disable tvOS tests

    * Disable browser wasm windows legs

commit 826e03e4b984d3bb76b2ead5f6ebb847be9c616f
Author: Jeremy Koritzinsky <[email protected]>
Date:   Wed Jan 19 14:08:07 2022 -0800

    Bump Explicit-layout value types with no fields to at minimum 1 byte size. (#63975)

commit 6f8d8b20a0c78dcfc09ea7a43db48a9a4e055e13
Author: Ankit Jain <[email protected]>
Date:   Wed Jan 19 16:41:04 2022 -0500

    Disable hot reload tests for AOT configurations (#64006)

commit 675c16711007536120fa2ef7b69224e44299d1e3
Author: Egor Chesakov <[email protected]>
Date:   Wed Jan 19 12:59:49 2022 -0800

    [Arm64] Don't use D-copies in CopyBlock (#63588)

    * Increase the maximum number of internal registers allowd per node in src/coreclr/jit/lsra.h

    * Based on discussion in https://github.com/dotnet/runtime/issues/63453 don't allocate a SIMD register pair if the JIT won't be able to use Q-copies in src/coreclr/jit/lsraarmarch.cpp

    * Update CodeGen to reflect that Q-copies should be used only when size >= 2 * FP_REGSIZE_BYTES and using of them makes the instruction sequence shorter in src/coreclr/jit/codegenarmarch.cpp

    * Update comment - we don't use D-copies after that change in src/coreclr/jit/codegenarmarch.cpp

commit ac4c7fb9457a8b0972686b017d82367d7a9bf1ca
Author: Pavel Savara <[email protected]>
Date:   Wed Jan 19 20:59:01 2022 +0100

    - mono_wasm_new_external_root for roots on stack (#63997)

    - temp_malloc helper via linear buffer in js
    - small refactorings
    Co-authored-by: Katelyn Gadd <[email protected]>

commit 65db54e2a92a2ef8ba8a75c70990e78f21818e18
Author: Egor Bogatov <[email protected]>
Date:   Wed Jan 19 22:23:45 2022 +0300

    Add IsKnownConstant jit helper and optimize 'str == ""' with str.StartsWith('c') (#63734)

    Co-authored-by: Miha Zupan <[email protected]>
    Co-authored-by: SingleAccretion <[email protected]>

commit ded841a690e73c04ebdc86c681893bf9fd372751
Author: Egor Bogatov <[email protected]>
Date:   Wed Jan 19 22:22:49 2022 +0300

    Don't reuse registers in Debug mode (#63698)

    Co-authored-by: Bruce Forstall <[email protected]>

commit 67848f23d51562bd2e54f6490f5aad22f57baffe
Author: Brennan <[email protected]>
Date:   Wed Jan 19 11:01:24 2022 -0800

    [RateLimiting] Dequeue items when queuing with NewestFirst (#63377)

commit 12f434db114e629854e7d5eb966e07d24e243712
Author: Adeel Mujahid <[email protected]>
Date:   Wed Jan 19 20:42:27 2022 +0200

    Fix for Werror=use-after-free in PAL (#63954)

    * Fix for Werror=use-after-free in PAL

    * Delete Local{Alloc,Free}

    * Delete LMEM_* macros

    * Delete PAL_dladdr

commit bbbfba31b61a2299c434172f709716325c073ef8
Author: Stephen Toub <[email protected]>
Date:   Wed Jan 19 12:27:25 2022 -0500

    Use IndexOf in StringBuilder.Replace(char, char) (#63913)

commit df049b9a23c5182bf7f26f224b69bf1f47f9dc2f
Author: Dan Moseley <[email protected]>
Date:   Wed Jan 19 09:26:30 2022 -0700

    Disable 2 SMTP tests on checked runtime (#63947)

commit 8604989022950ef38f94b9150043b31d81f061a5
Author: Maksym Koshovyi <[email protected]>
Date:   Wed Jan 19 17:49:39 2022 +0200

    [Group 5] Enable nullable annotations for `Microsoft.Extensions.Configuration.Json` (#63694)

    * Nullable enable

commit a8c1408084714a7db13db7eb5cae10b209d9c096
Author: TobiasLaving <[email protected]>
Date:   Wed Jan 19 16:04:02 2022 +0100

    Update runtime.json with manjaro information (#63338)

    Without specifying runtime on manjaro we cannot run the projects.
    FYI: Manjaro has a "ID_LIKE" param in os_release that has arch as input. Perhaps that would be another way forward.

commit 31f20c54ad56946a506d705261a5445930b56d29
Author: Stephen Toub <[email protected]>
Date:   Wed Jan 19 09:57:04 2022 -0500

    Improve auto-atomicity for conditionals (#63299)

    - Allow for automatically making loops that end conditional branches be atomic
    - Allow for using a following expression conditional to make a prior loop atomic
    - Allow conditionals to influence the computed minimum length

commit 8fe0467efd29d952fc2afbf302c1d8a1bb3b2fa5
Author: Maxim Lipnin <[email protected]>
Date:   Wed Jan 19 16:55:40 2022 +0300

    Take MacCatalyst into account in EnvironmentTests.WorkingSet_Valid test (#63995)

    Follow-up on https://github.com/dotnet/runtime/pull/63934

commit b042bc3043f3f7f475f5bd6e8f58df2952dd9250
Author: Radek Zikmund <[email protected]>
Date:   Wed Jan 19 14:15:57 2022 +0100

    Avoid allocating byte array when setting ALPN list on Linux (#63674)

    * Avoid allocating byte array when setting ALPN list

    * Code review feedback

    * Apply suggestions from code review

    Co-authored-by: Stephen Toub <[email protected]>

    * Slice the stackalloc'd buffer to correct length

    Co-authored-by: Miha Zupan <[email protected]>

    * Code review fixes

    Co-authored-by: Stephen Toub <[email protected]>
    Co-authored-by: Miha Zupan <[email protected]>

commit 34794bc5f2bcdbaa9057bb07b8764e2bb6a411a2
Author: Krzysztof Wicher <[email protected]>
Date:   Wed Jan 19 13:45:01 2022 +0100

    Enable System.Text.Json tests on netfx (#63803)

    * Enable System.Text.Json tests on netfx

    * use NETFRAMEWORK define

    * disable another two test cases after rebase

    * disable last test case which repros only on CI for me

    * add p2p only on netfx

commit e54df94bc9a5e1e064835be817d3e9ac773e1d9a
Author: Eirik Tsarpalis <[email protected]>
Date:   Wed Jan 19 11:59:34 2022 +0000

    Replace "needs more info" label with "needs-author-action" (#63899)

commit a5292a6b54ca743efe2e5b6776864efb7c7702a5
Author: Olivier Giniaux <[email protected]>
Date:   Wed Jan 19 12:56:54 2022 +0100

    Fix profiling objectsallocatedbyclass (#63814)

    * Add test for ObjectsAllocatedByClass profiler callbacks

    * Fix ObjectsAllocatedByClass profiler callbacks based on wrong flag

    * Fix wrong args in test log

    Co-authored-by: Olivier Giniaux <[email protected]>

commit 6e4dfbfe2db42c9c67f1094dd65ec683c44e3457
Author: Stephen Toub <[email protected]>
Date:   Wed Jan 19 06:53:36 2022 -0500

    Improve reductions for Regex empty / nothing nodes (#63695)

commit 777c353c767c588824a489ad39238fef01c80f4e
Author: Stephen Toub <[email protected]>
Date:   Wed Jan 19 06:53:24 2022 -0500

    Extend regex switch alternation optimization to IgnoreCase (#63756)

    IgnoreCase now results in producing sets (e.g. an 'a' becomes '[Aa]') but the source generator's optimization that produces a switch statements for alternations with non-overlapping branches doesn't yet understand such sets.  This augments that logic to fix that.

commit a25536f790258fe68240feff864713e8d20b418c
Author: Stephen Toub <[email protected]>
Date:   Wed Jan 19 06:52:15 2022 -0500

    Improve auto-atomicity for Regex loops (#63986)

    - As part of recognizing loops that could be made atomic, we currently only look at the node guaranteed to come immediately after it, e.g. in a+b+c+, when analyzing a+ we only look at the b+.  That's fine in many cases, but if our expression was instead e.g. a*b*c*, we couldn't make a* atomic because we wouldn't be guaranteed it'd be followed by a b, and we wouldn't look at the subsequent nodes to determine what else might follow.  When that situation occurs, we can now walk the tree to find the next node, and repeatedly do so as much as is needed in order to find the next node, enabling us to make all of those loops atomic.
    - We currently perform the auto-atomicity reduction for single-char loops as part of reducing concatenations.  But this means we're performing that transformation at a time when the tree isn't fully formed, which means we can't necessarily reach out of a concatenation to what comes after it and use that to influence the atomicity.  It also means we might repeat the analysis unnecessarily multiple times, because it's done as part of parenting a node.  We can instead do that optimization as part of the final optimization phase, after the tree is already created.
    - When we find a lazy loop at the end of an expression, we can treat it as atomic, which means we can lower its max bound to its min bound.
    - When we encounter a loop (lazy or greedy) at the end of an expression, if it has a max bound of 1 (i.e. it's optional), we can proceed to eliminate ending backtracking with its child regardless of whether the child could be made atomic with the start of the loop, since it won't ever repeat more than once.

commit eeaee44e6fe4425db044967e025255e6a12c97a9
Author: dotnet-maestro[bot] <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date:   Wed Jan 19 11:20:02 2022 +0100

    [main] Update dependencies from dotnet/runtime dotnet/arcade dotnet/xharness dotnet/icu dotnet/roslyn-analyzers dotnet/llvm-project (#63737)

    Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
    Co-authored-by: Alexander Köplinger <[email protected]>

commit 313baef638104ed64f93e077c84547421884c91b
Author: Egor Bogatov <[email protected]>
Date:   Wed Jan 19 13:16:28 2022 +0300

    JIT: Fix repeatable failure for max CALLSITE_DEPTH (#63966)

commit a354bb152f4e505d53034c3538f971ad4c2f18ac
Author: Stephen Toub <[email protected]>
Date:   Wed Jan 19 04:10:27 2022 -0500

    Address follow-up feedback to CachedCompletedInt32Task (#63968)

commit b68cf65634bb0d6a1a7e588568959cdc33a0322c
Author: Adam Sitnik <[email protected]>
Date:   Wed Jan 19 08:58:20 2022 +0100

    Reading beyond EOF should return 0 for FILE_FLAG_NO_BUFFERING (#63625)

    * move Length to SafeFileHandle, so it's cached value can be reused in more places

commit ea2a98163327022e6cefb6a424de4cb4e9618277
Author: Ilona Tomkowicz <[email protected]>
Date:   Wed Jan 19 08:55:35 2022 +0100

    [wasm][debugger] Added support for StepThroughAttribute (#63679)

    * Hidden methods and step through methods behave the same way.

    * Perpared flow for setting JustMyCode in the future.

    * Tests for JustMyCode setting before debug launch.

    * Transformed into dynamic JustMyCode change flow.

    * JustMyCode disabled, first 3 cases solved.

    * Finished behavior for JMC disabled (with 1 difference).

    * JMC enabled: stepIn np bp + stepIn bp + resume bp.

    * Functional version (with minor deviations from expected behavior).

    * Refactoring.

commit 00e13f5482ea1156e6b37ea5d242d7f27befb8d3
Author: Adam Sitnik <[email protected]>
Date:   Wed Jan 19 08:42:07 2022 +0100

    Add tests for creating memory mapped files from non-seekable files (#63927)

commit c66e3c49b59e0894ed3e7c41b0e78dcda22528ae
Author: Michal Strehovský <[email protected]>
Date:   Wed Jan 19 15:01:43 2022 +0900

    Add support for libraries testing with NativeAOT (#63781)

    This adds support for running libraries tests with NativeAOT. It reuses the single file xunit runner since we cannot `LoadFrom` the tests on NativeAOT. The strategy is the same as for single file testing: do a publish. To do the NativeAOT publish, we include the Microsoft.DotNet.ILCompiler.targets.

commit 3104ed8a3579746eaadb6280acc4fae1ae0df6ed
Author: Michal Strehovský <[email protected]>
Date:   Wed Jan 19 15:00:52 2022 +0900

    Fix up warnings from delegate thunks (#63980)

    If we hit a p/invoke with a `System.Delegate` in a delegate marshalling stub, blame the delegate type, not the compiler-generated method. Apparently we marshal System.Delegate in MsQuick interop.

commit 0b307c95286a4f468fbb627a66515054ff18dc87
Author: Adeel Mujahid <[email protected]>
Date:   Wed Jan 19 07:25:12 2022 +0200

    Add managed implementation of Math/MathF.Abs (#63881)

    * Add managed implementation of  Math/MathF.Abs

    * Cleanup trailing whitespaces in changeset

    * Delete unused _copysignf macro

commit fc3875f14f310cdce716df30a94feb43db79a28a
Author: Jose Perez Rodriguez <[email protected]>
Date:   Tue Jan 18 19:47:09 2022 -0800

    Fix case where we incorrectly select a prefix as a FindFirstChar optimization when the pattern includdes an alternation that could lead to different prefixes. (#63976)

commit 454ac0a6e7584e1c02677d459d20dae5df61fb47
Author: Stephen Toub <[email protected]>
Date:   Tue Jan 18 22:15:32 2022 -0500

    Revert "Improve auto-atomicity for Regex loops (#63518)" (#63984)

    This reverts commit 557901e779a009cf4a51327963727a4d1ded0094.

commit da72791c37480532e647e8f69aff3f2b7eef6049
Author: Jan Kotas <[email protected]>
Date:   Tue Jan 18 18:59:04 2022 -0800

    Fix System.Reflection.Metadata version in ILVerification nuget package metadata (#63965)

    Fixes #63944

commit b7d8f5ecfa7bceb8069448951c7fabd65bcf26a0
Author: Tarek Mahmoud Sayed <[email protected]>
Date:   Tue Jan 18 18:39:37 2022 -0800

    Fix Failing Globalization Test on OSX (#63971)

commit 546c23804538ee751e4bb419942bc0170c3e5e06
Author: Michal Strehovský <[email protected]>
Date:   Wed Jan 19 10:58:17 2022 +0900

    Improve ILLink.targets integration (#63914)

    Runtime side of https://github.com/dotnet/sdk/pull/23470 (depends on that getting merged). Skip touching the IL Linker semaphore that tricks the target into not running.

commit 557901e779a009cf4a51327963727a4d1ded0094
Author: Stephen Toub <[email protected]>
Date:   Tue Jan 18 20:40:35 2022 -0500

    Improve auto-atomicity for Regex loops (#63518)

    * Improve auto-atomicity for Regex loops

    - As part of recognizing loops that could be made atomic, we currently only look at the node guaranteed to come immediately after it, e.g. in a+b+c+, when analyzing a+ we only look at the b+.  That's fine in many cases, but if our expression was instead e.g. a*b*c*, we couldn't make a* atomic because we wouldn't be guaranteed it'd be followed by a b, and we wouldn't look at the subsequent nodes to determine what else might follow.  When that situation occurs, we can now walk the tree to find the next node, and repeatedly do so as much as is needed in order to find the next node, enabling us to make all of those loops atomic.
    - We currently perform the auto-atomicity reduction for single-char loops as part of reducing concatenations.  But this means we're performing that transformation at a time when the tree isn't fully formed, which means we can't necessarily reach out of a concatenation to what comes after it and use that to influence the atomicity.  It also means we might repeat the analysis unnecessarily multiple times, because it's done as part of parenting a node.  We can instead do that optimization as part of the final optimization phase, after the tree is already created.
    - When we find a lazy loop at the end of an expression, we can treat it as atomic, which means we can lower its max bound to its min bound.
    - When we encounter a loop (lazy or greedy) at the end of an expression, if it has a max bound of 1 (i.e. it's optional), we can proceed to eliminate ending backtracking with its child regardless of whether the child could be made atomic with the start of the loop, since it won't ever repeat more than once.

    * Extend auto-atomicity to lazy loops

commit 14ebc594b2757e29e1f73742ce37d68f855c0a3c
Author: Jan Kotas <[email protected]>
Date:   Tue Jan 18 17:36:09 2022 -0800

    Do not register ACTIVATION_SIGNAL for secondary PAL copies (#63961)

    Related to #63959

commit cde93b69b6b099627d3615ec7f54cfb28b25bcde
Author: Andy Ayers <[email protected]>
Date:   Tue Jan 18 16:57:51 2022 -0800

    JIT: yet another OSR stress mode (#62980)

    Existing OSR stress use existing patchpoint placement logic and alter the
    policy settings so that OSR methods are created more eagerly.

    This new version of OSR stress alters the patchpoint placement logic, to
    add patchpoints to more places. In conjunction with the eager policy stress
    above this leads to creation and execution of large numbers of OSR methods.

    Any IL offset in the method with an empty stack (and not in a handler) is fair
    game for a patchpoint, so this new method randomly adds patchpoints to the
    starts of blocks when stack empty (future work may extend this to mid-block
    stack empty points).

    The new mode is enabled by setting `COMPlus_JitRandomOnStackReplacement` to a
    non-zero value; this value represents the likelihood of adding a patchpoint
    at a stack-empty block start, and also factors into the random seed. (Recall
    this is parsed in hex, so 0x64 == 100 or larger will put a patchpoint at the
    start of every stack empty block).

    Various values are interesting because once a method reaches a patchpoint
    and triggers OSR, the remainder of that method's execution is in the OSR method,
    so later patchpoints in the original method may never be reached. So some sort
    of random/selective patchpoint approach (in conjunction with varying policy
    settings) is needed to ensure that we create an execute as many different OSR
    variants as possible.

    This PR also includes a couple of fixes exposed by local testing of this new
    stress mode:
    * The OSR prolog may end up empty, which gcencoder doesn't like. Detect this
    and add a `nop` for the prolog.
    * If we're importing the `fgEntryBB` during OSR, we don't need to schedule it
    for re-importation. This happens if we put a patchpoint at IL offset zero.
    * Update the selective dumping policy `COMPlus_JitDumpAtOSROoffset` to only
    dump OSR method compilations.

    A new test leg is added to `jit-experimental` to run with this mode enabled
    with a probability of 21% (0x15) and quick OSR triggers.

    Also included:
    * fix probability calc
    * remove obsolete assert
    * osr exposed does not apply to simd
    * only pad zero-sized OSR prolog if we're reporting generic context
    * Add ability to have patchpoint at specified offset.
    * Fix interaction of stress patchpoints and profile instrumentation.
    We need to force block-based instrumentation if we might have stress
    patchpoints.

commit 93cb3559a17aca424e3ce1206a71496da2c34b69
Author: Honza Rameš <[email protected]>
Date:   Wed Jan 19 01:12:18 2022 +0100

    Reduce allocations in code generated by Logging generators (#61162) (#62011)

commit c50185bb24ace683f2ce6c5e4351ce2104bd1349
Author: Aleksey Kliger (λgeek) <[email protected]>
Date:   Tue Jan 18 18:40:42 2022 -0500

    [mono] Hot Reload: initial push to support adding lambdas (#63513)

    Adds support for:
    * Adding static lambdas to existing methods, whether or not they had lambdas before.
    * Adding lambdas that capture `this` to existing methods that already captured `this` before
    * Adding new static or instance methods to existing types
    * Adding static fields to existing types
    * Adding new types (note that adding instance fields currently will fail.  It'll go in in a future PR that will address https://github.com/dotnet/runtime/issues/63643).

    Note that reflection on newly added members isn't tested yet and likely doesn't work.

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

    Contributes to https://github.com/dotnet/runtime/issues/57365

    * Add AddStaticField test; cleanup AddLambdaCapturingThis

    * Add AddNestedClass testcase

    * hot_reload: add a comment about remaining work

    * move per-class metadata update info to MonoClassMetadataUpdateInfo

       Use a property on the class instead of a hash table in the baseline image to keep track of added fields and methods

    * Cleanup pass1 to check add/update against prior gen

       Instead of the baseline image

    * adding a class

       Working on making mono_metadata_nested_in_typedef do the right thing for nested classes

       Contributes to making mono_class_create_from_typedef do the right thing for nested classes.

    * fix: correct mutant table population when the baseline table is empty

       In that case the table row_size and size_bitmap of the baseline are both 0, so offset calculations don't work.

       In that case when we know we need to add rows to the mutant table, use the uncompressed layout (32-bit columns, always) same as the EnC delta.

    * Calling new methods on a nested class works

    * adding fields

       Doesn't work yet.  Dies in mono_class_get_field, called from mono_field_from_token_checked.

       The problem we're going to have to deal with is that unlike MonoMethod which is allocated upon lookup, the MonoClassFields of a class are allocated contiguously in class initialization.  And there are not really enough fields in MonoClassField to indicate "this is not an ordinary field, don't do pointer arithmetic with it".  One idea is to steal a bit from MonoClassField:parent and always check it as a trigger to go on a slower path.

    * adding static fields

       Rework the delta info to store info about "members" (rather than methods and fields separately).

       Add a MonoClassMetadataUpdateField subclass of MonoClassField that has extra info.

       Add new component methods to go from a MonoClassField to an index, and from a field token to a MonoClassField.

       Set MonoClassField:offset to -1 to generally go down the "special static field" codepath since we will need to do some one-off work to make a storage area for added static fields.

       Instance fields are not supported yet and error out during the update pass for now.

    * fix custom attribute lookups on new classes/methods/fields

    * Add a sketch of HotReloadInstanceFieldTable

       This is a class that manages the lifetime for added instance fields for reference types that had new fields added to them by EnC   It's basically ConditionalWeakTable<object, Dictionary<uint, Store>> where the outer key is the object instance, the inner key is the fielddef token, and the value is a Store.  The store has a single object? field which the location where the field's value will go.  For reference types this is the reference directly, and for valuetypes and primitives, this is the boxed object (so to get the actual storage address you need to add sizeof(MonoObject)).

    * mono_metadata_update_get_static_field_addr

       two reminders:

       1. The static field area needs to be GC-visible
       2. We should really handle added fields on un-inited classes by allocating the instances in the normal way - in the layout algorithm.

    * Free MonoClassMetadataUpdateInfo when BaselineInfo is destroyed

    * placeholder struct for runtime class data; instance offset placeholder

    * static field storage

       Need to store the fields in a GC root, and in pinned allocations.

    * Implement hot_reload_get_static_field_addr()

    * Add mono_metadata_update_find_method_by_name

       Now we can find .cctor

       This is enough that a basic sample with an added static lambda works

    * Fix infinite loop

    * fix build

    * fix dynamic components builds

    * fix windows build

    * Fix inadvertent fallthru in previous fix

    * Report new capabilities

       NewTypeDefinition is not completely functional because adding instance fields is not supported yet.   But adding classes with only static methods works.

    * tests: describe what existing tests do, add placeholder static lambda test

    * tests: Add AddStaticLambda test case

       Adding a brand new static lambda to an existing method body is supported

    * Destroy the runtime part of MonoClassMetadataUpdateInfo, too

    * rename Mono.HotReload file

       it has more classes than just the instance table

    * tests: add ActiveIssue for supporting adding instance fields

    * ifdef out Mono.HotReload.InstanceFieldTable

       it's not ready yet

    * Remove get_added_members from hot reload component interface

       Doesn't seem necessary to expose this yet.  It's only used in hot_reload.c right now

    * Change the AddStaticLambda sample to use Func<string,string>

       To check that lambdas with parameters work

    * Use a mempool allocated GSlist for the added members

       This avoids invalidating iterators in case we add members on one thread while another thread is iterating.

       If it turns out we need random access, we can switch to a GArray with locking.  But so far we only ever iterate.

    * Use mono_get_corlib instead of passing MonoDefaults to hot_reload

    * use normal GENERATE_TRY_GET_CLASS_WITH_CACHE

    * [metadata] make m_field_set_parent and m_field_set_meta_flags inline

       m_ prefix functions are supposed to be inline

commit d2844ebf57568de4926517c521a94a721d9c26a8
Author: Bradley Grainger <[email protected]>
Date:   Tue Jan 18 15:32:16 2022 -0800

    Add `UnicodeRange.ArabicExtendedB` (#63901)

commit 8d5f5267d33f7703c014cc89670f1f7aa47544f9
Author: Andrii Kurdiumov <[email protected]>
Date:   Wed Jan 19 05:23:32 2022 +0600

    Update links to the project for DllImportGenerator (#63940)

    As coincidence, I think `RestoreAdditionalProjectSources` not needed anymore.

commit 83b52cdc310ebd77cddff7efd772a0800a403f47
Author: Alexander Köplinger <[email protected]>
Date:   Tue Jan 18 23:13:58 2022 +0100

    [iOS/tvOS] Remove P/Invokes to libproc from System.Private.CoreLib (#63934)

    They aren't allowed by Apple when submitting to the App Store.

    Finishes https://github.com/dotnet/runtime/issues/61265

commit b0de23b1677fbaf4fbcde814ec0bad6f60094920
Author: Andy Gocke <[email protected]>
Date:   Tue Jan 18 13:37:41 2022 -0800

    Revert "Enable GC Regions by default (#59283)" (#63935)

    This reverts commit cf91716.

    This looks to be creating a lot of crashes in a lot of different unit tests on Mac. Reverting seems to halt the Mac failures (see https://dev.azure.com/dnceng/public/_build/results?buildId=1557880)

    Fixes #63439

commit 0266f034221188bc7d0156ba76a571c71885c68f
Author: Kunal Pathak <[email protected]>
Date:   Tue Jan 18 11:04:48 2022 -0800

    Fix decoding errors (#63929)

commit 078da6c37e2ab602fe37ab699051ef71161ce2cc
Author: Bruce Forstall <[email protected]>
Date:   Tue Jan 18 11:04:22 2022 -0800

    Introduce `BasicBlock::KindIs()` for checking bbJumpKind (#63203)

    * Introduce `BasicBlock::KindIs()` for checking bbJumpKind

    This can simplify code that is checking for multiple `bbJumpKind` kinds with
    an `if` statement, where a `switch` is not warranted. It's the same
    usage model as `GenTree::OperIs()`.

    e.g.,
    ```
    if (block->KindIs(BBJ_COND, BBJ_SWITCH, BBJ_RETURN))
    ```

    * Fix argument name

commit 82b8d79b6f858f0d44791e3eab36735b7093d935
Author: Shane Krueger <[email protected]>
Date:   Tue Jan 18 13:56:09 2022 -0500

    Fix NullabilityInfoContext.Create to properly analyze types with nested generic types (#63556)

commit f04a24249835096eea1a1a66e4af03cfec5ed32b
Author: Artem Kliatchkine <[email protected]>
Date:   Tue Jan 18 18:18:45 2022 +0100

    Set zero (infinite) options timeout in case of Timeout.InfiniteTimeSpan (#55984) (#63733)

    Co-authored-by: Artem Kliatchkine <[email protected]>

commit 2eb2e883dc807897fe07dd6559462e37e8613693
Author: Tomas Weinfurt <[email protected]>
Date:   Tue Jan 18 09:18:29 2022 -0800

    improve protocol detection in jail (#63565)

    * improve protocol detection in jail

    * add comment

commit d18d6c703295555d466fb159f8dec64857f68ed9
Author: Kevin Jones <[email protected]>
Date:   Tue Jan 18 12:15:11 2022 -0500

    Update SAN test to account for OpenSSL 3 changes

commit 64896116e66377aa8e951abb9e9505aff8a25f89
Author: Kevin Jones <[email protected]>
Date:   Tue Jan 18 11:36:15 2022 -0500

    Fix OpenSSL 3 reporting an OutOfMemoryException for missing private key

commit 5a12420546d7f0d963bcccf082400c1b057e38ef
Author: Maxim Lipnin <[email protected]>
Date:   Tue Jan 18 18:21:33 2022 +0300

    Remove individual exclusions for DllImportGenerator.Unit.Tests in favor of the general one for the entire set of mobile targets (#63924)

commit 39ef452edcf90bae76a1e4c8c1c24209e17ac5f2
Author: Maxim Lipnin <[email protected]>
Date:   Tue Jan 18 18:20:15 2022 +0300

    Disable DllImportGenerator.Unit.Tests test suite on macOS+arm64+CoreCLR (#63887)

commit 856e8c3510cb0aaaa3b1a1679552c03ae5308b9e
Author: Adeel Mujahid <[email protected]>
Date:   Tue Jan 18 17:16:10 2022 +0200

    Fix compilation with older gcc (#63721)

commit 2f366a85444570429f8739b13bde18226a10bc86
Author: Adeel Mujahid <[email protected]>
Date:   Tue Jan 18 17:12:47 2022 +0200

    Delete a few unused PAL APIs (#63916)

    * Delete _fullpath PAL API

    * Delete PAL_wcscspn

    * Delete PAL_wcstok

commit 207590a7b82afa086e889f3fc695b104713f7c8e
Author: Michal Strehovský <[email protected]>
Date:   Wed Jan 19 00:10:36 2022 +0900

    Fold coreclr/ToolBox into coreclr/tools (#63917)

    This separation only existed because of Razzle build sequencing of desktop CLR. It doesn't make sense for CoreCLR. The only thing the extra directory is doing now is that it breaks tab completion when navigating the CoreCLR source tree because ToolBox comes before tools alphabetically and most things live in tools.

commit e30fe9b4d3afabc4acdfcaa539ecf213c16aea1a
Author: Theodore Tsirpanis <[email protected]>
Date:   Tue Jan 18 16:58:11 2022 +0200

    Encapsulate the logic of caching the last synchronously completed task. (#61781)

    * Encapsulate the logic of caching the last synchronously completed task.

    * Apply suggestions from code review

    Co-authored-by: Adam Sitnik <[email protected]>

commit e6ad043996419f04b1c0ae9fea113318f61e234f
Author: Michal Strehovský <[email protected]>
Date:   Tue Jan 18 23:32:28 2022 +0900

    Split CheckNotDisposed to allow inlining (#63863)

    * Split CheckNotDisposed to allow inlining

    `CheckNotDisposed` is not getting inlined because RyuJIT thinks it's not profitable (ldstr/newobj/throw is expensive). If we extract the rare path into a separate method, it changes the profitability math and allows inlining to happen.

    * Review feedback

commit dfb36ae68d9a099c9b90317c97bdf485bab4121e
Author: Stephen Toub <[email protected]>
Date:   Tue Jan 18 09:31:12 2022 -0500

    Fix a few IndexOf{Any} uses (#63852)

commit 7a0388a9f1a11b723aa09aeae3436a078b32bb43
Author: Eirik Tsarpalis <[email protected]>
Date:   Tue Jan 18 13:33:57 2022 +0000

    Extend triage board automation to more pods (#63897)

commit 8d8ef6dac58acf2ab944289c69dd46ee9e12d717
Author: Tom Deseyn <[email protected]>
Date:   Tue Jan 18 11:00:35 2022 +0100

    FileSystemEntry.Unix: don't make a syscall to check hidden on Linux. (#63878)

commit 24bdc3844c3de6d6a3c47534411c8322ae1a7bc6
Author: dotnet-maestro[bot] <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date:   Tue Jan 18 10:41:02 2022 +0100

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

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

commit 126db6dd10fcf618a9ab17ed93347044cc5a3a24
Author: Michal Strehovský <[email protected]>
Date:   Tue Jan 18 14:19:20 2022 +0900

    Disable warnings as errors in the repro project (#63910)

commit d0e2dac3a828b6afda5cff812b7b09b9dba213b7
Author: SingleAccretion <[email protected]>
Date:   Tue Jan 18 01:23:41 2022 +0300

    Actually properly type primary selectors (#63752)

    * Use only one [out] parameter in IsFieldAddr

    Since only one is needed.

    * Actually properly type primary selectors

commit d48a44f2ee2f6b4b039ca10cfd5dc01c331669f5
Author: Michal Strehovský <[email protected]>
Date:   Tue Jan 18 02:11:44 2022 +0900

    Separate variance information in mangled names (#63866)

    Fixes https://github.com/dotnet/runtimelab/issues/1821.

    Eventually we'll need to have a holistic look at how we mangle things.

commit 6dcb03913c7d55dca824abcd21617212bef62553
Author: Jan Kotas <[email protected]>
Date:   Mon Jan 17 07:46:40 2022 -0800

    Delete UMThkCallFrame (#63826)

    * Delete UMThkCallFrame

    * Place UnmanagedToManagedFrame under FEATURE_COMINTEROP

commit 4fac9549fea1ccbf296aeaa0861478825d70c5c3
Author: Mandar Sahasrabuddhe <[email protected]>
Date:   Mon Jan 17 16:05:28 2022 +0530

    Fix escaped strings for TryGetDateTime(Offset) (#63534)

    * Fix escaped strings for TryGetDateTime(Offset)

    Fix the exception thrown when the escaped DateTime(Offset)
    property value is unescaped and it becomes shorter than
    the minimum expected length. In such case the Try* method
    should fail and returns false.

    Fixes #62720

    * Fix escaped strings for TryGetDateTime(Offset)

    Fix the exception thrown when the escaped DateTime(Offset)
    property value is unescaped and it becomes shorter than
    the minimum expected length. In such a case, the Try* method
    should fail and return false.

    Fixes #62720

    * Fix escaped strings for TryGetDateTime(Offset)

    Fix the exception thrown when the escaped DateTime(Offset)
    property value is unescaped and it becomes shorter than
    the minimum expected length. In such a case, the Try* method
    should fail and return false.

    Fixes #62720

    * Fix escaped strings for TryGetDateTime(Offset)

    Fix the exception thrown when the escaped DateTime(Offset)
    property value is unescaped and it becomes shorter than
    the minimum expected length. In such a case, the Try* method
    should fail and return false.

    Fixes #62720

    * Fix escaped strings for TryGetDateTime(Offset)

    Fix the exception thrown when the escaped DateTime(Offset)
    property value is unescaped and it becomes shorter than
    the minimum expected length. In such a case, the Try* method
    should fail and return false.

    Fixes #62720

commit d72ed27cfe8656807ece255b275ca9d617af073b
Author: SingleAccretion <[email protected]>
Date:   Mon Jan 17 13:11:43 2022 +0300

    Treat CLS_VAR_ADDR as never null (#63844)

    Allows the LIR DCE to remove some indirections that
    were previously incorrectly thought to be throwing.

    Contributes to CLS_VAR deletion (by minimizing the diffs).

commit bf1d4a10b998a80b92728f80aa5ebbcd5138347a
Author: Radek Zikmund <[email protected]>
Date:   Mon Jan 17 11:11:10 2022 +0100

    Fix generating RunTests.sh and RunTests.cmd scripts (#63875)

    This fixes issue where generated RunTests.sh in the "To repro directly: "
    section contained unevaluated variables like RUNTIME_PATH, which
    prevented simple copy-pasting the code into the terminal

commit ae2f60c950cc021921fce83c796cbcb5ff96c658
Author: Andrii Kurdiumov <[email protected]>
Date:   Mon Jan 17 09:57:15 2022 +0600

    NativeAOT: Allow Delegate and MulticastDelegate marshalling (#63219)

    - Closes https://github.com/dotnet/runtimelab/issues/1107
    - Progress towards https://github.com/GtkSharp/GtkSharp/issues/300

commit 84926be4243143b7830e78cb7727057ed711a3cc
Author: Andrii Kurdiumov <[email protected]>
Date:   Mon Jan 17 07:42:08 2022 +0600

    Prevent assert if stack trace has function pointer (#63787)

commit 217b288cfabd2368082343c7e36e7ac0a8f96db9
Author: Adeel Mujahid <[email protected]>
Date:   Mon Jan 17 03:10:54 2022 +0200

    Convert h2inc to a cmake function (#63841)

    * Convert h2inc to a cmake function

    * Reuse preprocess_file

commit ec349cd8e9960ec44bf528eef52c56a87e601207
Author: Tomáš Rylek <[email protected]>
Date:   Sun Jan 16 20:50:01 2022 +0100

    Fix a few IL tests using the namespace syntax without an actual namespace (#63772)

commit 4f34cedc8eefb2a396646a67869e784f06d7def8
Author: Tomáš Rylek <[email protected]>
Date:   Sun Jan 16 20:45:15 2022 +0100

    Disable the Runtime_34587 regression test with GH issue #63818 (#63819)

commit bf65675a8181d5448134788a148f844d35c4f091
Author: SingleAccretion <[email protected]>
Date:   Sun Jan 16 20:21:52 2022 +0300

    Compress operand kinds array and optimize `OperIsLocal` (#63253)

    * Delete GTK_CONST

    * Delete OperIsRelop

    * Delete GTK_RELOP

    * Delete GTK_LOGOP

    * Delete GTK_LOCAL

    * Compress oper kinds

    They now fit into 8 bits.

commit 23de81782ca9cd24f024bd598563d363df29660c
Author: Zoltan Varga <[email protected]>
Date:   Sat Jan 15 22:05:07 2022 -0500

    [mono] Disable partial generic sharing for gparams with non-enum constraints for method gparams too. (#63813)

    This is an optimization, but it also avoids hitting some gsharing limitations wrt
    calling abstract static methods from gshared code.

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

commit c5c7967ddccc46c84c98c0e8c7e00c3009c65894
Author: Stephen Toub <[email protected]>
Date:   Sat Jan 15 20:35:25 2022 -0500

    Unify string.{Last}IndexOfAny and span.{Last}IndexOfAny (#63817)

    * Unify string.{Last}IndexOfAny and span.{Last}IndexOfAny

    Currently, string.IndexOfAny delegates to span.IndexOfAny (MemoryExtensions) for 1 through 5 values, and for more than it, it falls back to its own "probabilistic map"-based implementation, which tries to avoid looping through each value character for each character in the input.  span.IndexOfAny doesn't do that, instead always looping through every char for every input char.  This PR moves the logic from string into MemoryExtensions and then has string unconditionally delegate to span.

    string.LastIndexOfAny in contrast would only delegate to span's implementation if the values list actually only had a single character in it; otherwise, it would again fall back to its own "probabilistic map"-based implementation.  This PR again moves that fallback into MemoryExtensions, with string unconditionally delegating to it.  MemoryExtensions also has LastIndexOf overloads for 2 and 3 items, so rather than using the probabilistic path for those, it delegates to the existing overloads.

    * Address PR feedback

commit 1e22b3f00501e8263af571ad74cb043fb3407b70
Author: Jeremy Koritzinsky <[email protected]>
Date:   Sat Jan 15 12:59:33 2022 -0800

    Refactor the "produce an RSP file" step into a separate step from the "run ILC" step to make it easier to generate the RSP file on the fly (#63820)

commit fd2883f7bb60e75df6edcec58ac7bc79ecd10196
Author: Jan Kotas <[email protected]>
Date:   Sat Jan 15 12:21:07 2022 -0800

    Delete notifyexternals.* (#63835)

    Leftovers from loader lock MDA

commit 78dea7ff6599dd851210df6db330ee3b58f5294c
Author: Stephen Toub <[email protected]>
Date:   Sat Jan 15 10:28:53 2022 -0500

    Add Regex FindFirstChar optimization for a literal after an atomic loop (#63477)

    * Add Regex FindFirstChar optimization for a literal after an atomic loop

    If after all of our analysis we can't find anything to IndexOf{Any} as part of finding the next match location, we'll also look for a literal (a single char, a string of chars, or a set of a small number of chars) following an unbounded atomic set loop that starts the pattern.  In that case, we can IndexOf for the literal, and then walk backwards through the characters prior to it looking for the beginning of the match.

    * Extend optimization to Setloop/lazy in addition to Setloopatomic

commit c30d55ec5b584e26186a85adedf313c81a64269c
Author: Tanner Gooding <[email protected]>
Date:   Sat Jan 15 05:00:18 2022 -0800

    Perform some minor code cleanup of the System.Numerics and System.Runtime.Intrinsics namespaces (#63753)

    * Ensure the System.Numerics and System.Runtime.Intrinsics namespaces are using explicit type when "not apparent" to match repo conventions

    * Ensure the System.Runtime.Intrinsics types are using TARGET_64BIT to match project convention

    * Improving some docs and simplifying names where possible

commit a2e017dc876729678d7874706086bd444f010bcf
Author: SingleAccretion <[email protected]>
Date:   Sat Jan 15 15:42:31 2022 +0300

    Fix MOffset size estimate (#63766)

commit 9db60963097adac1c25a5117d3918de17e1b5fb1
Author: Egor Bogatov <[email protected]>
Date:   Sat Jan 15 15:20:36 2022 +0300

    JIT: Mark constant arguments of HWINTRINSIC nodes as DONT_CSE (#63442)

commit 20e6ec1a43cab03cd2d48f9fad32d56e83787ea0
Author: Geoff Kizer <[email protected]>
Date:   Sat Jan 15 04:03:03 2022 -0800

    Avoid unnecessary string allocation in HttpRuleParser.GetHostLength (#63641)

    * avoid unnecessary string allocation in HttpRuleParser.GetHostLength

    Co-authored-by: Geoffrey Kizer <[email protected]>

commit 25d999b5a6711fc6d2ffc42fa38a58ec865a7232
Author: Stephen Toub <[email protected]>
Date:   Sat Jan 15 06:50:49 2022 -0500

    Improve use of {Last}IndexOf{Any} in Regex loops (#63428)

    * Improve .*string to LastIndexOf "string" rather than just 's'

    * Enable .*string LastIndexOf optimization in the face of an UpdateBumpalong

    If the loop starts the expression, we will have inserted an UpdateBumpalong node, but that was then interfering with detecting a subsequent character/string.

    * Use IndexOf{Any} in lazy loop backtracking

    * Improve how sets are described in comments

    * Change RealWorld tests to be invoked once per engine

    To help with debugging

    * Address PR feedback

commit 386f87139c7fe48f6b733e3cae6d09128c827192
Author: Aleksey Kliger (λgeek) <[email protected]>
Date:   Sat Jan 15 04:05:03 2022 -0500

    [metadata] Use MonoDefaults from components without hacks (#63822)

commit 692052e016407e6eb11feeaee5269625c3ee741a
Author: Ankit Jain <[email protected]>
Date:   Fri Jan 14 23:52:13 2022 -0500

    Split `sendtohelixhelp.proj` to extract wasm, and mobile bits to separate files. (#63373)

    Extract wasm, and mobile specific bits from sendtohelixhelp.proj into  …
    .. separate files, so they can be easier to manage.

    - the platform specific properties are set in their respective files
      (for eg `sendtohelixhelp-wasm.proj`)
    - a new target `BuildHelixCommand` is extracted from
      `BuildHelixWorkItems`, which runs first
      - and essentially builds `@(HelixCommand)`

    - Platform specific targets can run via
      `$(BuildHelixWorkItemsDependsOn)`
      - which then add any "special" helix work items

    - `BuildHelixWorkItems` in the main file supports adding for the regular
      case, which is controlled by `$(EnableDefaultBuildHelixWorkItems)`.

    Also, fixes https://github.com/dotnet/runtime/issues/52137

commit 9daaab152ff1c0794ee21645bf57acf444f900ff
Author: Anton Firszov <[email protected]>
Date:   Sat Jan 15 03:15:26 2022 +0100

    serialize SendPacketsAsync tests (#63702)

commit 40047f2a82595546eadbabf9e438f7592eb1f002
Author: Stephen Toub <[email protected]>
Date:   Fri Jan 14 20:48:36 2022 -0500

    Improve Regex UpdateBumpalong optimization for non-atomic and lazy loops (#63398)

    * Improve handling of UpdateBumpalong for non-atomic loops

    For atomic greedy loops, UpdateBumpalong is serving its purpose: upon consuming as much as possible for the loop, base.runtextpos is set to that position so that the next time FindFirstChar runs, it'll start from at least that location.  However, for non-atomic greedy loops, with base.runtextpos being set to the ending position after each backtracking, we end up inadvertently voiding any benefits of the UpdateBumpalong, as we end up overwriting the further position with the shorter position.  A simple tweak to that, only setting the position if it's greater, yields significant benefits, in particular when there's no match.

    * Add more tests for lazy loops

    These just duplicate the greedy loop tests and tweak them for lazy.

    * Insert UpdateBumpalong for lazy loops as well

    * Address PR feedback

commit 513fe2863ad5ec6dc453d223d4b60f787a0ffa78
Author: Tomáš Rylek <[email protected]>
Date:   Sat Jan 15 00:36:58 2022 +0100

    More duplicate projects under JIT/Methodical/NaN to delete (#63771)

commit 2692407f03ce8b648c54daa4d3a3eb534132edc9
Author: Santiago Fernandez Madero <[email protected]>
Date:   Fri Jan 14 13:36:50 2022 -0800

    Build all packages on source-build even when in servicing (#63755)

commit e1c69cc75a4c51ea3e3011a084f74b486b2dbc88
Author: Tomáš Rylek <[email protected]>
Date:   Fri Jan 14 21:47:44 2022 +0100

    Move localloc/common library under JIT folder (#63510)

    In today source tree we have five different libraries named
    'common'. This change is a first step in deduplicating their names;
    I have also moved the library under the JIT/ folder as it's
    used not only by JIT/jit64 tests but also by Methodical and
    Regression tests.

    Thanks

    Tomas

commit 3a83c5ca772a1a74e1707474c1d05c283f264a2f
Author: Jan Kotas <[email protected]>
Date:   Fri Jan 14 12:47:18 2022 -0800

    Delete unused method (#63797)

commit 02e22b02975d50944220e6e9a494af491487c6a9
Author: Tomáš Rylek <[email protected]>
Date:   Fri Jan 14 21:00:01 2022 +0100

    Remove string[] args from Main methods under JIT/Methodical (#63770)

    In most cases the arguments were formal and not really used so
    I just fixed the Main method signature. In a bunch of cases the
    command-line arguments supported variant functionality of the
    test case but I haven't found any test projects that would be
    exercising this functionality. I don't think it makes sense to
    keep untested code paths so I deleted the logic pertaining to
    non-empty command-line arguments.

    In the particular case of stringintern tests, each test apparently
    had a TestSameObjRef and TestDiffObjRef variant, triggered by
    command-line arguments. I tried to run TestDiffObjRef but it
    ended up failing left and right - not suprising for untested
    code logic - so I also deleted the TestDiffObjRef variants
    as I suppose the invariants previously tested there no longer hold.

    Thanks

    Tomas

commit 562606671166edb60234c5062f69b35f6b2ac5c9
Author: Egor Chesakov <[email protected]>
Date:   Fri Jan 14 10:44:07 2022 -0800

    Enable superpmi-collect pipeline on macOS arm64 (#63691)

    * Enable superpmi-collect on macOS Arm64 in eng/pipelines/coreclr/superpmi-collect.yml

    * Add -platform argument and use the value for determining what Helix queue to use in src/coreclr/scripts/superpmi_collect_setup.py

    * Pass platform to superpmi_collect_setup.py in eng/pipelines/coreclr/templates/run-superpmi-collect-job.yml

    * Copy *.dylib on macOS and *.so on Linux in src/coreclr/scripts/superpmi_collect_setup.py

    * Install azure-storage-blob in eng/pipelines/coreclr/templates/run-superpmi-collect-job.yml

    * Remove macOS/x64 from platforms list in eng/pipelines/coreclr/superpmi-collect.yml

    * Add "CoreCLR Product Build OSX x64 checked" that produces required artifacts that consumed by macOS/arm64 superpmi-collect-job

    * Fix typo in libraries_test_assets should correspond to target arch in eng/pipelines/coreclr/templates/superpmi-collect-job.yml

    * Update a comment indicating what Helix queues are used for macOS in src/coreclr/scripts/superpmi_collect_setup.py

    * Workaround https://github.com/dotnet/sdk/issues/23430 in src/coreclr/scripts/superpmi_benchmarks.py

    * Enable macOS/arm64 benchmarks collection in eng/pipelines/coreclr/superpmi-collect.yml

commit a991e1349e4325770d8e2ddf085184a68cd2555b
Author: Elinor Fung <[email protected]>
Date:   Fri Jan 14 10:49:26 2022 -0500

    Make ObjectiveC tests in System.Runtime.InteropServices.Tests check exit code for remote execution (#63769)

commit 33179fa0ac1ab75bb09e5cc7ed63aa6629c51411
Author: Maksym Koshovyi <[email protected]>
Date:   Fri Jan 14 17:49:06 2022 +0200

    [Group 5] Enable nullable annotations for `Microsoft.Extensions.Configuration.Ini` (#60368)

    * Add annotations

    * Use pattern matching

    * NetCoreAppMinimum

    * ReadLine won't return null

    * Update src/libraries/Microsoft.Extensions.Configuration.Ini/ref/Microsoft.Extensions.Configuration.Ini.csproj

    Co-authored-by: Eric Erhardt <[email protected]>

    * Add comment

    * Revert non-nullable change

    Co-authored-by: Eric Erhardt <[email protected]>

commit 3956126d55e32203a8926a54a8ee3090b3e69749
Author: MSDN.WhiteKnight <[email protected]>
Date:   Fri Jan 14 20:33:03 2022 +0500

    Fix typo in  SRM package description (#63782)

commit d568a3fec2c9a2e7341466a28f88f52558fddf6c
Author: Tarek Mahmoud Sayed <[email protected]>
Date:   Fri Jan 14 07:27:32 2022 -0800

    Introduce Activity.IsStopped Property (#63713)

    Co-authored-by: Dan Moseley <[email protected]>

commit 0b527a201f4c286f13ef8b829bbd1651bdad7a52
Author: Zoltan Varga <[email protected]>
Date:   Fri Jan 14 08:07:47 2022 -0500

    Fix a style issue. (#63776)

commit b184ee0393aaf0395a69e70590d5c529e8c93ccf
Author: Adam Sitnik <[email protected]>
Date:   Fri Jan 14 10:04:11 2022 +0100

    MemoryMappedFile: don't check for file existence if there is no need (#63754)

    Co-authored-by: Stephen Toub <[email protected]>

commit c96869a6d10a235b5a26c9e15d685fabc7f87cb0
Author: Michal Strehovský <[email protected]>
Date:   Fri Jan 14 17:03:22 2022 +0900

    Disable annoying warnings in the repro project (#63777)

    We have repo-wide WarnAsError that makes this super annoying in a repro project.

commit b7e0a85ab6111b77ad19a1c2db0dedcedded4940
Author: Qiao <[email protected]>
Date:   Fri Jan 14 14:33:20 2022 +0800

    [LoongArch64] add all the coreclr-build-config files (#62889)

commit 1ba80f698c85b525545f1a13c02eb405588b0461
Author: Andrii Kurdiumov <[email protected]>
Date:   Fri Jan 14 12:20:45 2022 +0600

    Remove errors during first run of runpaltests.h (#62642)

    * Remove errors during first run of runpaltests.h

    If you run `runpaltests.h` for first time, you will see 2 errors about file or folder not found.

    First error comes from using `RELATIVE_PATH_TO_PAL_TESTS` which does not used anywhere, except maybe some platform where you can `cd` to non-existing folder. In that case 3rd parameter to script would be interpreted incorrectly. I doubt that, but who know what's somewhere deep in infra.

    Second error is entirely preventable, since `cd $PAL_TEST_OUTPUT_DIR` does not affect anything until subsequent `cd $PAL_TEST_OUTPUT_DIR` on line 118.

    Discovered here https://github.com/dotnet/runtime/pull/62625#issuecomment-991172978

    * Remove not nescessary cd

    * Fix

    * oopsie

commit 27fdc2d22f8717c7b0ba254ae9ef2900d00f5e7a
Author: Stephen Halter <[email protected]>
Date:   Thu Jan 13 17:20:28 2022 -0800

    Avoid deadlock with ConfigurationManager (#62209)

    Co-authored-by: Eric Erhardt <[email protected]>

commit 2c28e63f9360280011a3b03c1ca6dc0edce1fae4
Author: Alexander Köplinger <[email protected]>
Date:   Thu Jan 13 22:17:54 2022 +0100

    Temporarily disable coredumps during library testing on macOS (#63742)

    System.Runtime.InteropServices.Tests seems to produce >10GB of coredumps which overwhelms CI.

commit 79e40e35ce3e218ad2d81259572e462b56bfd807
Author: Kevin Jones <[email protected]>
Date:   Thu Jan 13 15:04:36 2022 -0500

    Add public constants for HMAC and hash sizes

commit c912a1532a1bb653a21a3749aaad7c5fb556ae01
Author: Kevin Jones <[email protected]>
Date:   Thu Jan 13 14:07:55 2022 -0500

    Change non-breaking spaces (U00A0) to a plain space in code files (#63688)

commit ec0c7f3a91b9fc47f7a867f0b997ba34560302e7
Author: Aaron Robinson <[email protected]>
Date:   Thu Jan 13 12:20:43 2022 -0500

    Add negative tests for by-ref in UnmanagedCallersOnly scenarios. (#63711)

commit c78d9fa3edb2ae8e14f0529566c20d33a2512cab
Author: Maxim Lipnin <[email protected]>
Date:   Thu Jan 13 19:08:27 2022 +0300

    Disable System.Drawing.Common.Tests test suite on Windows+Mono (#63726)

commit 048e1a395523f1855c054d01a3f1f4c55d873ea4
Author: Simon Rozsival <[email protected]>
Date:   Thu Jan 13 16:57:12 2022 +0100

    [Android] Throw PNSE for unavailable network information (#63633)

    * Update tests

    * Add android specific implementation

    * Add UnsupportedOSPlatform attributes

    * Fix typo

    * Remove unnecessary file reference

    * Clean-up code

    * Minor code clean-up

    * Remove dictionary

    * Refactoring

    * Revert comment change

commit 77bdad50a01f3a330c03b093544245d39620314b
Author: Alexander Köplinger <[email protected]>
Date:   Thu Jan 13 16:06:39 2022 +0100

    Bump to macOS 10.14 minimum in libs and mono builds too (#63682)

    https://github.com/dotnet/runtime/pull/62822 bumped the minimum CMAKE_OSX_DEPLOYMENT_TARGET to 10.14, but the libs.native and mono parts of the build still used the old 10.13 value.
    In build-native.sh for libs.native we can actually remove the explicit setting since we're already setting it in eng/native/configurecompiler.cmake.

commit 01cdd1dcaebcc9f2ab36027204142a6703a1b70b
Author: Pavel Savara <[email protected]>
Date:   Thu Jan 13 15:42:08 2022 +0100

    [wasm] Emscripten uses `require` even when targeting ES6. This deals with the consequences. (#63718)

commit a13ee96335ea4c41cfe273855611caec4c35cae8
Author: Thays Grazia <[email protected]>
Date:   Thu Jan 13 09:53:43 2022 -0300

    [wasm][debugger] Fixing error after receiving loaded_files = null (#63591)

    * Fixing #39301

    * Addressing @radical comments

    * Sending the error toconsole in the browser.

    * Applying @radical suggestion.

    * Update src/mono/wasm/debugger/DebuggerTestSuite/BreakpointTests.cs

    Co-authored-by: Ankit Jain <[email protected]>

    * Update src/mono/wasm/debugger/tests/debugger-test/wasm-page-without-assets.html

    Co-authored-by: Ankit Jain <[email protected]>

    * Space -> tabs

    * Fix compilation error.

    Co-authored-by: Ankit Jain <[email protected]>

commit 64c05a3bcb4e71ee9972a3fb47eb4d3e061d3462
Author: SingleAccretion <[email protected]>
Date:   Thu Jan 13 12:58:37 2022 +0300

    Reconfigure the field sequences for statics (#62632)

    * Reconfigure the field sequences for statics

    To make the "boxed static" and, in the future, "shared" cases identical
    to simple ones.

    It used to be that we attached the field sequence to the
    "inner" constant, and then added the "#FirstElem" pseudo-field for the
    outer offset. This was causing complexity and mistakes in the pattern
    matching performed by "IsFieldAddr".

    The solution is straightforward: always use the outer offset for the sequence.
    The much simpler pattern is easier and cheaper to recognize, with less room for
    false positives.

    * Drop support for mutable RVA statics

    They were broken on 32 bit already, and this change does not
    break them on 64 bit, but we'll reserve the right to do that
    in the future as the scenario appears to be non-existent.

commit 46db4aa3c505ac36cf8d0d612d4161bb7239ed87
Author: Michal Strehovský <[email protected]>
Date:   Thu Jan 13 15:28:38 2022 +0900

    Add NativeAOT libraries tests annotations (#63668)

    Adds `ActiveIssue`/`Conditional` attributes to libraries tests so that we can get a clean run with NativeAOT.

    Starting with System.Collections, System.Runtime, and System.IO.FileSystem.

commit f580068aa93fb3c6d5fbc7e33f6cd7d52fa86b24
Author: Dmitry Bogatykh <[email protected]>
Date:   Thu Jan 13 07:00:39 2022 +0300

    Fix JsonObject constuctor (#63150)

    * Fix JsonObject constuctor

    * Fix constructor this

    * JsonObject constructor test

    * Augment tests

    Co-authored-by: Layomi Akinrinade <[email protected]>

commit c7630198c93988fcf2cab2e6e30aadc76328e09a
Author: Pavel Savara <[email protected]>
Date:   Thu Jan 13 02:55:18 2022 +0100

    [wasm] Load assets earlier (#63623)

    - allow Module.config to have assets with buffer instead of url
    - change sample to show how emscripten callbacks are triggered
    - pass config into onConfigLoaded and made it async
    - split asset download from copying it into memory
    - moved startup s…
mkhamoyan added a commit that referenced this pull request Jan 27, 2022
* #51371 fixed failing test in iossimulator

* #51371 added skiptestexception

* #51371 added space after reference

* #51371 fixed remaining failing tests

* #51371 whitespace issue

* #51371 removed extra spaces

* Squashed commit of the following:

commit 36cdb5fc0c38cbb44291114e48e2b202ff37db01
Author: Ilona Tomkowicz <[email protected]>
Date:   Thu Jan 20 11:03:02 2022 +0100

    [wasm][debugger] Added support for stepper boundary attribute (#63991)

    * Hidden methods and step through methods behave the same way.

    * Perpared flow for setting JustMyCode in the future.

    * Tests for JustMyCode setting before debug launch.

    * Transformed into dynamic JustMyCode change flow.

    * JustMyCode disabled, first 3 cases solved.

    * Finished behavior for JMC disabled (with 1 difference).

    * JMC enabled: stepIn np bp + stepIn bp + resume bp.

    * Functional version (with minor deviations from expected behavior).

    * Refactoring.

    * All tests for NonUserCode work.

    * Fix line number after adding code above.

    * Stepper boundary with tests.

    * Save information about multiple decorators.

    * Fix error in merge.

commit 5a523cf27a9b73e61adb1408f21b5e75a2246d9e
Author: Ilona Tomkowicz <[email protected]>
Date:   Thu Jan 20 10:26:06 2022 +0100

    [debugger][wasm] Added support for non user code attribute (#63876)

    * Hidden methods and step through methods behave the same way.

    * Perpared flow for setting JustMyCode in the future.

    * Tests for JustMyCode setting before debug launch.

    * Transformed into dynamic JustMyCode change flow.

    * JustMyCode disabled, first 3 cases solved.

    * Finished behavior for JMC disabled (with 1 difference).

    * JMC enabled: stepIn np bp + stepIn bp + resume bp.

    * Functional version (with minor deviations from expected behavior).

    * Refactoring.

    * All tests for NonUserCode work.

    * Fix line number after adding code above.

    * Fix error in merge.

    * Removing duplicated tests.

commit 8f2c84f02b74dbbe6e1f02dc9be37cf3ee288d6e
Author: Peter Sollich <[email protected]>
Date:   Thu Jan 20 10:06:45 2022 +0100

    Fix issues with verify_regions, clear_batch_mark_array_bits. (#63798)

    Details:
    - we cannot verify the tail of the region list from background GC, as it may be updated by threads allocating.
    - fix case in clear_batch_mark_array_bits where end is equal to the very end of a segment and we write into uncommitted memory in the mark_array.
    -  bgc_clear_batch_mark_array_bits did some checks and then called clear_batch_mark_array_bits which repeated the exact same checks. Renamed clear_batch_mark_array_bits to bgc_batch_mark_array_bits and removed the old copy, removed the declaration for clear_batch_mark_array_bits.

commit e4bfedd847990795eb28cda4008b5ff4c58fd561
Author: Jeremy Barton <[email protected]>
Date:   Thu Jan 20 00:06:28 2022 -0800

    Fix OpenSSL version check in GetAlpnSupport

    The previous check failed 3.0.0 because the Minor was 0 and Build was 0.

    It could probably be rewritten to be `>= new Version(1, 0, 2)`, but that'd require more thinking.

commit 2cf6b0d07309a3c19938f4c886fe13e8d5cc28ee
Author: Andrew Au <[email protected]>
Date:   Wed Jan 19 20:57:41 2022 -0800

    Fix gc_heap::remove_ro_segment (#63473)

commit 65a5d0e8a3027f2b240d098f47327ba3e1f743b1
Author: Tlakaelel Axayakatl Ceja <[email protected]>
Date:   Wed Jan 19 19:46:45 2022 -0800

    Add ProcessLinkerXmlBase to NativeAOT (#63666)

    Add Xml Parsing linker files as a reference source to NativeAOT
    Rename NativeAOT ProcessLinkerXmlBase version to ProcessXmlBase (uses XmlReader)
    Add ProcessLinkerXmlBase from linker and fix it so it can be used in NativeAOT (uses XPath)

commit f1c8b10ef824c5abf0c851f610ab0961ca31693f
Author: Egor Chesakov <[email protected]>
Date:   Wed Jan 19 19:43:26 2022 -0800

    [Arm64] Keep unrolling InitBlock and CopyBlock up to 128 bytes (#63422)

    * Add INITBLK_LCL_UNROLL_LIMIT and CPBLK_LCL_UNROLL_LIMIT of 128 bytes in src/coreclr/jit/targetarm64.h

    * Keep unrolling InitBlock up to INITBLK_LCL_UNROLL_LIMIT bytes when dstAddr points to the stack in src/coreclr/jit/lowerarmarch.cpp

    * Keep unrolling CopyBlock up to CPBLK_LCL_UNROLL_LIMIT bytes when both srcAddr and dstAddr point to the stack in src/coreclr/jit/lowerarmarch.cpp

commit a5158df084780e52005e4dcbd02ee091542e06d0
Author: Will Smith <[email protected]>
Date:   Wed Jan 19 18:44:19 2022 -0800

    'cmeq' and 'fcmeq' Vector64<T>.Zero/Vector128<T>.Zero ARM64 containment optimizations (#62933)

    * Initial work

    * Added a comma to display

    * Cleanup

    * Fixing build

    * More cleanup

    * Update comment

    * Update comment

    * Added CompareEqual Vector64/128 with Zero tests

    * Do not contain op1 for now

    * Wrong intrinsic id used

    * Removing generated tests

    * Removing generated tests

    * Added CompareEqual tests

    * Supporting containment for first operand

    * Fix test build

    * Passing correct register

    * Check IsVectorZero before not allocing a register

    * Update comment

    * Fixing test

    * Minor format change

    * Fixed formatting

    * Renamed test

    * Adding AdvSimd_Arm64 tests:

    * Adding support for rest of 'cmeq' and 'fcmeq' instructions

    * Removing github csproj

    * Minor test fix

    * Fixed tests

    * Fix print

    * Minor format change

    * Fixing test

    * Added some emitter tests

    * Feedback

    * Update emitarm64.cpp

    * Feedback

commit 68a923a24edb47f1d0e3c38a69d4091a7587bfc4
Author: Andrew Au <[email protected]>
Date:   Wed Jan 19 17:59:07 2022 -0800

    Check if the child object is in the heap range before object_gennum (#63970)

commit 752569f66bcde98fcc4dd1e651f9f1f138184c5c
Author: Andrew Au <[email protected]>
Date:   Wed Jan 19 17:58:39 2022 -0800

    Check if the child object is in the heap range before get_region_plan_gen_num (#63828)

commit 5cefc0f9e618e2d8b38d7de67bbd8a50adb9646f
Author: SingleAccretion <[email protected]>
Date:   Thu Jan 20 04:23:50 2022 +0300

    Fix invalid threading of nodes in rationalization (#64012)

    The code in question assumes that the ASG will be
    reversed and thus threads "simdTree" before "location"
    in the linear order. That dependency, while valid,
    because "gtSetEvalOrder" will always reverse ASGs
    with locals on the LHS, is unnecessary and incorrect
    from the IR validity point of view.

    Fix this by using "InsertAfter" instead of manual
    node threading.

commit 93dc760481bdde2c463d725c2927b9da8787eb98
Author: Tomáš Rylek <[email protected]>
Date:   Thu Jan 20 01:52:15 2022 +0100

    Fix Crossgen2 bug #61104 and add regression test (#63956)

    The issue tracks the runtime regression failure where
    Crossgen2-compiled app is unable to locate a type with non-ASCII
    characters in its name. The failure was caused by the fact that
    Crossgen2 was incorrectly zero-extending the individual UTF8 characters
    when calculating the hash whereas runtime is sign-extending them.

    Thanks

    Tomas

commit 94b699cc6f6b88c6de1d13152143d32285c59555
Author: Jeremy Koritzinsky <[email protected]>
Date:   Wed Jan 19 16:46:00 2022 -0800

    Update StructMarshalling design now that DisableRuntimeMarshallingAttribute is approved (#63765)

    Co-authored-by: Elinor Fung <[email protected]>

commit a618086f53fa755732697fba171a16e8bf67900a
Author: Andy Ayers <[email protected]>
Date:   Wed Jan 19 16:01:16 2022 -0800

    JIT: fix up switch map for out-of-loop predecessor (#64014)

    If we have a loop where some of the non-loop predecessors are switchs, and
    we add pre-header to the loop, we need to update the switch map for those
    predecessors.

    Fixes #63982.

commit 7f828a7e6b712bdeab02d75160249cd13c26a467
Author: Egor Bogatov <[email protected]>
Date:   Thu Jan 20 02:08:10 2022 +0300

    [arm64] JIT: Redundant zero/sign extensions after ldrX/ldrsX (#62630)

commit ae1b755cd074745b0f09e826d3c7064b2a8f20dd
Author: Dan Moseley <[email protected]>
Date:   Wed Jan 19 16:07:53 2022 -0700

    Retries for flaky WMI test (#64008)

commit 54eec5d1f4d7ded21e33e65c63ada26afe80b208
Author: Elinor Fung <[email protected]>
Date:   Wed Jan 19 14:23:48 2022 -0800

    Make ILStubGenerated event log ModuleID corresponding to that on other events (#63974)

commit 97fec41a752f067f4d6dde170073300e1184693b
Author: Santiago Fernandez Madero <[email protected]>
Date:   Wed Jan 19 14:18:21 2022 -0800

    Add runtime-extra-platforms pipeline to have matching runtime PR and Rolling builds (#62564)

    * Add runtime-extended-platforms pipeline to have matching runtime PR and Rolling builds

    * Fix evaluate changed paths condition for the extra pipeline

    * PR Feedback and fix condition

    * Move MacCatalyst back to staging, disable tvOS tests

    * Disable browser wasm windows legs

commit 826e03e4b984d3bb76b2ead5f6ebb847be9c616f
Author: Jeremy Koritzinsky <[email protected]>
Date:   Wed Jan 19 14:08:07 2022 -0800

    Bump Explicit-layout value types with no fields to at minimum 1 byte size. (#63975)

commit 6f8d8b20a0c78dcfc09ea7a43db48a9a4e055e13
Author: Ankit Jain <[email protected]>
Date:   Wed Jan 19 16:41:04 2022 -0500

    Disable hot reload tests for AOT configurations (#64006)

commit 675c16711007536120fa2ef7b69224e44299d1e3
Author: Egor Chesakov <[email protected]>
Date:   Wed Jan 19 12:59:49 2022 -0800

    [Arm64] Don't use D-copies in CopyBlock (#63588)

    * Increase the maximum number of internal registers allowd per node in src/coreclr/jit/lsra.h

    * Based on discussion in https://github.com/dotnet/runtime/issues/63453 don't allocate a SIMD register pair if the JIT won't be able to use Q-copies in src/coreclr/jit/lsraarmarch.cpp

    * Update CodeGen to reflect that Q-copies should be used only when size >= 2 * FP_REGSIZE_BYTES and using of them makes the instruction sequence shorter in src/coreclr/jit/codegenarmarch.cpp

    * Update comment - we don't use D-copies after that change in src/coreclr/jit/codegenarmarch.cpp

commit ac4c7fb9457a8b0972686b017d82367d7a9bf1ca
Author: Pavel Savara <[email protected]>
Date:   Wed Jan 19 20:59:01 2022 +0100

    - mono_wasm_new_external_root for roots on stack (#63997)

    - temp_malloc helper via linear buffer in js
    - small refactorings
    Co-authored-by: Katelyn Gadd <[email protected]>

commit 65db54e2a92a2ef8ba8a75c70990e78f21818e18
Author: Egor Bogatov <[email protected]>
Date:   Wed Jan 19 22:23:45 2022 +0300

    Add IsKnownConstant jit helper and optimize 'str == ""' with str.StartsWith('c') (#63734)

    Co-authored-by: Miha Zupan <[email protected]>
    Co-authored-by: SingleAccretion <[email protected]>

commit ded841a690e73c04ebdc86c681893bf9fd372751
Author: Egor Bogatov <[email protected]>
Date:   Wed Jan 19 22:22:49 2022 +0300

    Don't reuse registers in Debug mode (#63698)

    Co-authored-by: Bruce Forstall <[email protected]>

commit 67848f23d51562bd2e54f6490f5aad22f57baffe
Author: Brennan <[email protected]>
Date:   Wed Jan 19 11:01:24 2022 -0800

    [RateLimiting] Dequeue items when queuing with NewestFirst (#63377)

commit 12f434db114e629854e7d5eb966e07d24e243712
Author: Adeel Mujahid <[email protected]>
Date:   Wed Jan 19 20:42:27 2022 +0200

    Fix for Werror=use-after-free in PAL (#63954)

    * Fix for Werror=use-after-free in PAL

    * Delete Local{Alloc,Free}

    * Delete LMEM_* macros

    * Delete PAL_dladdr

commit bbbfba31b61a2299c434172f709716325c073ef8
Author: Stephen Toub <[email protected]>
Date:   Wed Jan 19 12:27:25 2022 -0500

    Use IndexOf in StringBuilder.Replace(char, char) (#63913)

commit df049b9a23c5182bf7f26f224b69bf1f47f9dc2f
Author: Dan Moseley <[email protected]>
Date:   Wed Jan 19 09:26:30 2022 -0700

    Disable 2 SMTP tests on checked runtime (#63947)

commit 8604989022950ef38f94b9150043b31d81f061a5
Author: Maksym Koshovyi <[email protected]>
Date:   Wed Jan 19 17:49:39 2022 +0200

    [Group 5] Enable nullable annotations for `Microsoft.Extensions.Configuration.Json` (#63694)

    * Nullable enable

commit a8c1408084714a7db13db7eb5cae10b209d9c096
Author: TobiasLaving <[email protected]>
Date:   Wed Jan 19 16:04:02 2022 +0100

    Update runtime.json with manjaro information (#63338)

    Without specifying runtime on manjaro we cannot run the projects.
    FYI: Manjaro has a "ID_LIKE" param in os_release that has arch as input. Perhaps that would be another way forward.

commit 31f20c54ad56946a506d705261a5445930b56d29
Author: Stephen Toub <[email protected]>
Date:   Wed Jan 19 09:57:04 2022 -0500

    Improve auto-atomicity for conditionals (#63299)

    - Allow for automatically making loops that end conditional branches be atomic
    - Allow for using a following expression conditional to make a prior loop atomic
    - Allow conditionals to influence the computed minimum length

commit 8fe0467efd29d952fc2afbf302c1d8a1bb3b2fa5
Author: Maxim Lipnin <[email protected]>
Date:   Wed Jan 19 16:55:40 2022 +0300

    Take MacCatalyst into account in EnvironmentTests.WorkingSet_Valid test (#63995)

    Follow-up on https://github.com/dotnet/runtime/pull/63934

commit b042bc3043f3f7f475f5bd6e8f58df2952dd9250
Author: Radek Zikmund <[email protected]>
Date:   Wed Jan 19 14:15:57 2022 +0100

    Avoid allocating byte array when setting ALPN list on Linux (#63674)

    * Avoid allocating byte array when setting ALPN list

    * Code review feedback

    * Apply suggestions from code review

    Co-authored-by: Stephen Toub <[email protected]>

    * Slice the stackalloc'd buffer to correct length

    Co-authored-by: Miha Zupan <[email protected]>

    * Code review fixes

    Co-authored-by: Stephen Toub <[email protected]>
    Co-authored-by: Miha Zupan <[email protected]>

commit 34794bc5f2bcdbaa9057bb07b8764e2bb6a411a2
Author: Krzysztof Wicher <[email protected]>
Date:   Wed Jan 19 13:45:01 2022 +0100

    Enable System.Text.Json tests on netfx (#63803)

    * Enable System.Text.Json tests on netfx

    * use NETFRAMEWORK define

    * disable another two test cases after rebase

    * disable last test case which repros only on CI for me

    * add p2p only on netfx

commit e54df94bc9a5e1e064835be817d3e9ac773e1d9a
Author: Eirik Tsarpalis <[email protected]>
Date:   Wed Jan 19 11:59:34 2022 +0000

    Replace "needs more info" label with "needs-author-action" (#63899)

commit a5292a6b54ca743efe2e5b6776864efb7c7702a5
Author: Olivier Giniaux <[email protected]>
Date:   Wed Jan 19 12:56:54 2022 +0100

    Fix profiling objectsallocatedbyclass (#63814)

    * Add test for ObjectsAllocatedByClass profiler callbacks

    * Fix ObjectsAllocatedByClass profiler callbacks based on wrong flag

    * Fix wrong args in test log

    Co-authored-by: Olivier Giniaux <[email protected]>

commit 6e4dfbfe2db42c9c67f1094dd65ec683c44e3457
Author: Stephen Toub <[email protected]>
Date:   Wed Jan 19 06:53:36 2022 -0500

    Improve reductions for Regex empty / nothing nodes (#63695)

commit 777c353c767c588824a489ad39238fef01c80f4e
Author: Stephen Toub <[email protected]>
Date:   Wed Jan 19 06:53:24 2022 -0500

    Extend regex switch alternation optimization to IgnoreCase (#63756)

    IgnoreCase now results in producing sets (e.g. an 'a' becomes '[Aa]') but the source generator's optimization that produces a switch statements for alternations with non-overlapping branches doesn't yet understand such sets.  This augments that logic to fix that.

commit a25536f790258fe68240feff864713e8d20b418c
Author: Stephen Toub <[email protected]>
Date:   Wed Jan 19 06:52:15 2022 -0500

    Improve auto-atomicity for Regex loops (#63986)

    - As part of recognizing loops that could be made atomic, we currently only look at the node guaranteed to come immediately after it, e.g. in a+b+c+, when analyzing a+ we only look at the b+.  That's fine in many cases, but if our expression was instead e.g. a*b*c*, we couldn't make a* atomic because we wouldn't be guaranteed it'd be followed by a b, and we wouldn't look at the subsequent nodes to determine what else might follow.  When that situation occurs, we can now walk the tree to find the next node, and repeatedly do so as much as is needed in order to find the next node, enabling us to make all of those loops atomic.
    - We currently perform the auto-atomicity reduction for single-char loops as part of reducing concatenations.  But this means we're performing that transformation at a time when the tree isn't fully formed, which means we can't necessarily reach out of a concatenation to what comes after it and use that to influence the atomicity.  It also means we might repeat the analysis unnecessarily multiple times, because it's done as part of parenting a node.  We can instead do that optimization as part of the final optimization phase, after the tree is already created.
    - When we find a lazy loop at the end of an expression, we can treat it as atomic, which means we can lower its max bound to its min bound.
    - When we encounter a loop (lazy or greedy) at the end of an expression, if it has a max bound of 1 (i.e. it's optional), we can proceed to eliminate ending backtracking with its child regardless of whether the child could be made atomic with the start of the loop, since it won't ever repeat more than once.

commit eeaee44e6fe4425db044967e025255e6a12c97a9
Author: dotnet-maestro[bot] <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date:   Wed Jan 19 11:20:02 2022 +0100

    [main] Update dependencies from dotnet/runtime dotnet/arcade dotnet/xharness dotnet/icu dotnet/roslyn-analyzers dotnet/llvm-project (#63737)

    Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
    Co-authored-by: Alexander Köplinger <[email protected]>

commit 313baef638104ed64f93e077c84547421884c91b
Author: Egor Bogatov <[email protected]>
Date:   Wed Jan 19 13:16:28 2022 +0300

    JIT: Fix repeatable failure for max CALLSITE_DEPTH (#63966)

commit a354bb152f4e505d53034c3538f971ad4c2f18ac
Author: Stephen Toub <[email protected]>
Date:   Wed Jan 19 04:10:27 2022 -0500

    Address follow-up feedback to CachedCompletedInt32Task (#63968)

commit b68cf65634bb0d6a1a7e588568959cdc33a0322c
Author: Adam Sitnik <[email protected]>
Date:   Wed Jan 19 08:58:20 2022 +0100

    Reading beyond EOF should return 0 for FILE_FLAG_NO_BUFFERING (#63625)

    * move Length to SafeFileHandle, so it's cached value can be reused in more places

commit ea2a98163327022e6cefb6a424de4cb4e9618277
Author: Ilona Tomkowicz <[email protected]>
Date:   Wed Jan 19 08:55:35 2022 +0100

    [wasm][debugger] Added support for StepThroughAttribute (#63679)

    * Hidden methods and step through methods behave the same way.

    * Perpared flow for setting JustMyCode in the future.

    * Tests for JustMyCode setting before debug launch.

    * Transformed into dynamic JustMyCode change flow.

    * JustMyCode disabled, first 3 cases solved.

    * Finished behavior for JMC disabled (with 1 difference).

    * JMC enabled: stepIn np bp + stepIn bp + resume bp.

    * Functional version (with minor deviations from expected behavior).

    * Refactoring.

commit 00e13f5482ea1156e6b37ea5d242d7f27befb8d3
Author: Adam Sitnik <[email protected]>
Date:   Wed Jan 19 08:42:07 2022 +0100

    Add tests for creating memory mapped files from non-seekable files (#63927)

commit c66e3c49b59e0894ed3e7c41b0e78dcda22528ae
Author: Michal Strehovský <[email protected]>
Date:   Wed Jan 19 15:01:43 2022 +0900

    Add support for libraries testing with NativeAOT (#63781)

    This adds support for running libraries tests with NativeAOT. It reuses the single file xunit runner since we cannot `LoadFrom` the tests on NativeAOT. The strategy is the same as for single file testing: do a publish. To do the NativeAOT publish, we include the Microsoft.DotNet.ILCompiler.targets.

commit 3104ed8a3579746eaadb6280acc4fae1ae0df6ed
Author: Michal Strehovský <[email protected]>
Date:   Wed Jan 19 15:00:52 2022 +0900

    Fix up warnings from delegate thunks (#63980)

    If we hit a p/invoke with a `System.Delegate` in a delegate marshalling stub, blame the delegate type, not the compiler-generated method. Apparently we marshal System.Delegate in MsQuick interop.

commit 0b307c95286a4f468fbb627a66515054ff18dc87
Author: Adeel Mujahid <[email protected]>
Date:   Wed Jan 19 07:25:12 2022 +0200

    Add managed implementation of Math/MathF.Abs (#63881)

    * Add managed implementation of  Math/MathF.Abs

    * Cleanup trailing whitespaces in changeset

    * Delete unused _copysignf macro

commit fc3875f14f310cdce716df30a94feb43db79a28a
Author: Jose Perez Rodriguez <[email protected]>
Date:   Tue Jan 18 19:47:09 2022 -0800

    Fix case where we incorrectly select a prefix as a FindFirstChar optimization when the pattern includdes an alternation that could lead to different prefixes. (#63976)

commit 454ac0a6e7584e1c02677d459d20dae5df61fb47
Author: Stephen Toub <[email protected]>
Date:   Tue Jan 18 22:15:32 2022 -0500

    Revert "Improve auto-atomicity for Regex loops (#63518)" (#63984)

    This reverts commit 557901e779a009cf4a51327963727a4d1ded0094.

commit da72791c37480532e647e8f69aff3f2b7eef6049
Author: Jan Kotas <[email protected]>
Date:   Tue Jan 18 18:59:04 2022 -0800

    Fix System.Reflection.Metadata version in ILVerification nuget package metadata (#63965)

    Fixes #63944

commit b7d8f5ecfa7bceb8069448951c7fabd65bcf26a0
Author: Tarek Mahmoud Sayed <[email protected]>
Date:   Tue Jan 18 18:39:37 2022 -0800

    Fix Failing Globalization Test on OSX (#63971)

commit 546c23804538ee751e4bb419942bc0170c3e5e06
Author: Michal Strehovský <[email protected]>
Date:   Wed Jan 19 10:58:17 2022 +0900

    Improve ILLink.targets integration (#63914)

    Runtime side of https://github.com/dotnet/sdk/pull/23470 (depends on that getting merged). Skip touching the IL Linker semaphore that tricks the target into not running.

commit 557901e779a009cf4a51327963727a4d1ded0094
Author: Stephen Toub <[email protected]>
Date:   Tue Jan 18 20:40:35 2022 -0500

    Improve auto-atomicity for Regex loops (#63518)

    * Improve auto-atomicity for Regex loops

    - As part of recognizing loops that could be made atomic, we currently only look at the node guaranteed to come immediately after it, e.g. in a+b+c+, when analyzing a+ we only look at the b+.  That's fine in many cases, but if our expression was instead e.g. a*b*c*, we couldn't make a* atomic because we wouldn't be guaranteed it'd be followed by a b, and we wouldn't look at the subsequent nodes to determine what else might follow.  When that situation occurs, we can now walk the tree to find the next node, and repeatedly do so as much as is needed in order to find the next node, enabling us to make all of those loops atomic.
    - We currently perform the auto-atomicity reduction for single-char loops as part of reducing concatenations.  But this means we're performing that transformation at a time when the tree isn't fully formed, which means we can't necessarily reach out of a concatenation to what comes after it and use that to influence the atomicity.  It also means we might repeat the analysis unnecessarily multiple times, because it's done as part of parenting a node.  We can instead do that optimization as part of the final optimization phase, after the tree is already created.
    - When we find a lazy loop at the end of an expression, we can treat it as atomic, which means we can lower its max bound to its min bound.
    - When we encounter a loop (lazy or greedy) at the end of an expression, if it has a max bound of 1 (i.e. it's optional), we can proceed to eliminate ending backtracking with its child regardless of whether the child could be made atomic with the start of the loop, since it won't ever repeat more than once.

    * Extend auto-atomicity to lazy loops

commit 14ebc594b2757e29e1f73742ce37d68f855c0a3c
Author: Jan Kotas <[email protected]>
Date:   Tue Jan 18 17:36:09 2022 -0800

    Do not register ACTIVATION_SIGNAL for secondary PAL copies (#63961)

    Related to #63959

commit cde93b69b6b099627d3615ec7f54cfb28b25bcde
Author: Andy Ayers <[email protected]>
Date:   Tue Jan 18 16:57:51 2022 -0800

    JIT: yet another OSR stress mode (#62980)

    Existing OSR stress use existing patchpoint placement logic and alter the
    policy settings so that OSR methods are created more eagerly.

    This new version of OSR stress alters the patchpoint placement logic, to
    add patchpoints to more places. In conjunction with the eager policy stress
    above this leads to creation and execution of large numbers of OSR methods.

    Any IL offset in the method with an empty stack (and not in a handler) is fair
    game for a patchpoint, so this new method randomly adds patchpoints to the
    starts of blocks when stack empty (future work may extend this to mid-block
    stack empty points).

    The new mode is enabled by setting `COMPlus_JitRandomOnStackReplacement` to a
    non-zero value; this value represents the likelihood of adding a patchpoint
    at a stack-empty block start, and also factors into the random seed. (Recall
    this is parsed in hex, so 0x64 == 100 or larger will put a patchpoint at the
    start of every stack empty block).

    Various values are interesting because once a method reaches a patchpoint
    and triggers OSR, the remainder of that method's execution is in the OSR method,
    so later patchpoints in the original method may never be reached. So some sort
    of random/selective patchpoint approach (in conjunction with varying policy
    settings) is needed to ensure that we create an execute as many different OSR
    variants as possible.

    This PR also includes a couple of fixes exposed by local testing of this new
    stress mode:
    * The OSR prolog may end up empty, which gcencoder doesn't like. Detect this
    and add a `nop` for the prolog.
    * If we're importing the `fgEntryBB` during OSR, we don't need to schedule it
    for re-importation. This happens if we put a patchpoint at IL offset zero.
    * Update the selective dumping policy `COMPlus_JitDumpAtOSROoffset` to only
    dump OSR method compilations.

    A new test leg is added to `jit-experimental` to run with this mode enabled
    with a probability of 21% (0x15) and quick OSR triggers.

    Also included:
    * fix probability calc
    * remove obsolete assert
    * osr exposed does not apply to simd
    * only pad zero-sized OSR prolog if we're reporting generic context
    * Add ability to have patchpoint at specified offset.
    * Fix interaction of stress patchpoints and profile instrumentation.
    We need to force block-based instrumentation if we might have stress
    patchpoints.

commit 93cb3559a17aca424e3ce1206a71496da2c34b69
Author: Honza Rameš <[email protected]>
Date:   Wed Jan 19 01:12:18 2022 +0100

    Reduce allocations in code generated by Logging generators (#61162) (#62011)

commit c50185bb24ace683f2ce6c5e4351ce2104bd1349
Author: Aleksey Kliger (λgeek) <[email protected]>
Date:   Tue Jan 18 18:40:42 2022 -0500

    [mono] Hot Reload: initial push to support adding lambdas (#63513)

    Adds support for:
    * Adding static lambdas to existing methods, whether or not they had lambdas before.
    * Adding lambdas that capture `this` to existing methods that already captured `this` before
    * Adding new static or instance methods to existing types
    * Adding static fields to existing types
    * Adding new types (note that adding instance fields currently will fail.  It'll go in in a future PR that will address https://github.com/dotnet/runtime/issues/63643).

    Note that reflection on newly added members isn't tested yet and likely doesn't work.

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

    Contributes to https://github.com/dotnet/runtime/issues/57365

    * Add AddStaticField test; cleanup AddLambdaCapturingThis

    * Add AddNestedClass testcase

    * hot_reload: add a comment about remaining work

    * move per-class metadata update info to MonoClassMetadataUpdateInfo

       Use a property on the class instead of a hash table in the baseline image to keep track of added fields and methods

    * Cleanup pass1 to check add/update against prior gen

       Instead of the baseline image

    * adding a class

       Working on making mono_metadata_nested_in_typedef do the right thing for nested classes

       Contributes to making mono_class_create_from_typedef do the right thing for nested classes.

    * fix: correct mutant table population when the baseline table is empty

       In that case the table row_size and size_bitmap of the baseline are both 0, so offset calculations don't work.

       In that case when we know we need to add rows to the mutant table, use the uncompressed layout (32-bit columns, always) same as the EnC delta.

    * Calling new methods on a nested class works

    * adding fields

       Doesn't work yet.  Dies in mono_class_get_field, called from mono_field_from_token_checked.

       The problem we're going to have to deal with is that unlike MonoMethod which is allocated upon lookup, the MonoClassFields of a class are allocated contiguously in class initialization.  And there are not really enough fields in MonoClassField to indicate "this is not an ordinary field, don't do pointer arithmetic with it".  One idea is to steal a bit from MonoClassField:parent and always check it as a trigger to go on a slower path.

    * adding static fields

       Rework the delta info to store info about "members" (rather than methods and fields separately).

       Add a MonoClassMetadataUpdateField subclass of MonoClassField that has extra info.

       Add new component methods to go from a MonoClassField to an index, and from a field token to a MonoClassField.

       Set MonoClassField:offset to -1 to generally go down the "special static field" codepath since we will need to do some one-off work to make a storage area for added static fields.

       Instance fields are not supported yet and error out during the update pass for now.

    * fix custom attribute lookups on new classes/methods/fields

    * Add a sketch of HotReloadInstanceFieldTable

       This is a class that manages the lifetime for added instance fields for reference types that had new fields added to them by EnC   It's basically ConditionalWeakTable<object, Dictionary<uint, Store>> where the outer key is the object instance, the inner key is the fielddef token, and the value is a Store.  The store has a single object? field which the location where the field's value will go.  For reference types this is the reference directly, and for valuetypes and primitives, this is the boxed object (so to get the actual storage address you need to add sizeof(MonoObject)).

    * mono_metadata_update_get_static_field_addr

       two reminders:

       1. The static field area needs to be GC-visible
       2. We should really handle added fields on un-inited classes by allocating the instances in the normal way - in the layout algorithm.

    * Free MonoClassMetadataUpdateInfo when BaselineInfo is destroyed

    * placeholder struct for runtime class data; instance offset placeholder

    * static field storage

       Need to store the fields in a GC root, and in pinned allocations.

    * Implement hot_reload_get_static_field_addr()

    * Add mono_metadata_update_find_method_by_name

       Now we can find .cctor

       This is enough that a basic sample with an added static lambda works

    * Fix infinite loop

    * fix build

    * fix dynamic components builds

    * fix windows build

    * Fix inadvertent fallthru in previous fix

    * Report new capabilities

       NewTypeDefinition is not completely functional because adding instance fields is not supported yet.   But adding classes with only static methods works.

    * tests: describe what existing tests do, add placeholder static lambda test

    * tests: Add AddStaticLambda test case

       Adding a brand new static lambda to an existing method body is supported

    * Destroy the runtime part of MonoClassMetadataUpdateInfo, too

    * rename Mono.HotReload file

       it has more classes than just the instance table

    * tests: add ActiveIssue for supporting adding instance fields

    * ifdef out Mono.HotReload.InstanceFieldTable

       it's not ready yet

    * Remove get_added_members from hot reload component interface

       Doesn't seem necessary to expose this yet.  It's only used in hot_reload.c right now

    * Change the AddStaticLambda sample to use Func<string,string>

       To check that lambdas with parameters work

    * Use a mempool allocated GSlist for the added members

       This avoids invalidating iterators in case we add members on one thread while another thread is iterating.

       If it turns out we need random access, we can switch to a GArray with locking.  But so far we only ever iterate.

    * Use mono_get_corlib instead of passing MonoDefaults to hot_reload

    * use normal GENERATE_TRY_GET_CLASS_WITH_CACHE

    * [metadata] make m_field_set_parent and m_field_set_meta_flags inline

       m_ prefix functions are supposed to be inline

commit d2844ebf57568de4926517c521a94a721d9c26a8
Author: Bradley Grainger <[email protected]>
Date:   Tue Jan 18 15:32:16 2022 -0800

    Add `UnicodeRange.ArabicExtendedB` (#63901)

commit 8d5f5267d33f7703c014cc89670f1f7aa47544f9
Author: Andrii Kurdiumov <[email protected]>
Date:   Wed Jan 19 05:23:32 2022 +0600

    Update links to the project for DllImportGenerator (#63940)

    As coincidence, I think `RestoreAdditionalProjectSources` not needed anymore.

commit 83b52cdc310ebd77cddff7efd772a0800a403f47
Author: Alexander Köplinger <[email protected]>
Date:   Tue Jan 18 23:13:58 2022 +0100

    [iOS/tvOS] Remove P/Invokes to libproc from System.Private.CoreLib (#63934)

    They aren't allowed by Apple when submitting to the App Store.

    Finishes https://github.com/dotnet/runtime/issues/61265

commit b0de23b1677fbaf4fbcde814ec0bad6f60094920
Author: Andy Gocke <[email protected]>
Date:   Tue Jan 18 13:37:41 2022 -0800

    Revert "Enable GC Regions by default (#59283)" (#63935)

    This reverts commit cf91716.

    This looks to be creating a lot of crashes in a lot of different unit tests on Mac. Reverting seems to halt the Mac failures (see https://dev.azure.com/dnceng/public/_build/results?buildId=1557880)

    Fixes #63439

commit 0266f034221188bc7d0156ba76a571c71885c68f
Author: Kunal Pathak <[email protected]>
Date:   Tue Jan 18 11:04:48 2022 -0800

    Fix decoding errors (#63929)

commit 078da6c37e2ab602fe37ab699051ef71161ce2cc
Author: Bruce Forstall <[email protected]>
Date:   Tue Jan 18 11:04:22 2022 -0800

    Introduce `BasicBlock::KindIs()` for checking bbJumpKind (#63203)

    * Introduce `BasicBlock::KindIs()` for checking bbJumpKind

    This can simplify code that is checking for multiple `bbJumpKind` kinds with
    an `if` statement, where a `switch` is not warranted. It's the same
    usage model as `GenTree::OperIs()`.

    e.g.,
    ```
    if (block->KindIs(BBJ_COND, BBJ_SWITCH, BBJ_RETURN))
    ```

    * Fix argument name

commit 82b8d79b6f858f0d44791e3eab36735b7093d935
Author: Shane Krueger <[email protected]>
Date:   Tue Jan 18 13:56:09 2022 -0500

    Fix NullabilityInfoContext.Create to properly analyze types with nested generic types (#63556)

commit f04a24249835096eea1a1a66e4af03cfec5ed32b
Author: Artem Kliatchkine <[email protected]>
Date:   Tue Jan 18 18:18:45 2022 +0100

    Set zero (infinite) options timeout in case of Timeout.InfiniteTimeSpan (#55984) (#63733)

    Co-authored-by: Artem Kliatchkine <[email protected]>

commit 2eb2e883dc807897fe07dd6559462e37e8613693
Author: Tomas Weinfurt <[email protected]>
Date:   Tue Jan 18 09:18:29 2022 -0800

    improve protocol detection in jail (#63565)

    * improve protocol detection in jail

    * add comment

commit d18d6c703295555d466fb159f8dec64857f68ed9
Author: Kevin Jones <[email protected]>
Date:   Tue Jan 18 12:15:11 2022 -0500

    Update SAN test to account for OpenSSL 3 changes

commit 64896116e66377aa8e951abb9e9505aff8a25f89
Author: Kevin Jones <[email protected]>
Date:   Tue Jan 18 11:36:15 2022 -0500

    Fix OpenSSL 3 reporting an OutOfMemoryException for missing private key

commit 5a12420546d7f0d963bcccf082400c1b057e38ef
Author: Maxim Lipnin <[email protected]>
Date:   Tue Jan 18 18:21:33 2022 +0300

    Remove individual exclusions for DllImportGenerator.Unit.Tests in favor of the general one for the entire set of mobile targets (#63924)

commit 39ef452edcf90bae76a1e4c8c1c24209e17ac5f2
Author: Maxim Lipnin <[email protected]>
Date:   Tue Jan 18 18:20:15 2022 +0300

    Disable DllImportGenerator.Unit.Tests test suite on macOS+arm64+CoreCLR (#63887)

commit 856e8c3510cb0aaaa3b1a1679552c03ae5308b9e
Author: Adeel Mujahid <[email protected]>
Date:   Tue Jan 18 17:16:10 2022 +0200

    Fix compilation with older gcc (#63721)

commit 2f366a85444570429f8739b13bde18226a10bc86
Author: Adeel Mujahid <[email protected]>
Date:   Tue Jan 18 17:12:47 2022 +0200

    Delete a few unused PAL APIs (#63916)

    * Delete _fullpath PAL API

    * Delete PAL_wcscspn

    * Delete PAL_wcstok

commit 207590a7b82afa086e889f3fc695b104713f7c8e
Author: Michal Strehovský <[email protected]>
Date:   Wed Jan 19 00:10:36 2022 +0900

    Fold coreclr/ToolBox into coreclr/tools (#63917)

    This separation only existed because of Razzle build sequencing of desktop CLR. It doesn't make sense for CoreCLR. The only thing the extra directory is doing now is that it breaks tab completion when navigating the CoreCLR source tree because ToolBox comes before tools alphabetically and most things live in tools.

commit e30fe9b4d3afabc4acdfcaa539ecf213c16aea1a
Author: Theodore Tsirpanis <[email protected]>
Date:   Tue Jan 18 16:58:11 2022 +0200

    Encapsulate the logic of caching the last synchronously completed task. (#61781)

    * Encapsulate the logic of caching the last synchronously completed task.

    * Apply suggestions from code review

    Co-authored-by: Adam Sitnik <[email protected]>

commit e6ad043996419f04b1c0ae9fea113318f61e234f
Author: Michal Strehovský <[email protected]>
Date:   Tue Jan 18 23:32:28 2022 +0900

    Split CheckNotDisposed to allow inlining (#63863)

    * Split CheckNotDisposed to allow inlining

    `CheckNotDisposed` is not getting inlined because RyuJIT thinks it's not profitable (ldstr/newobj/throw is expensive). If we extract the rare path into a separate method, it changes the profitability math and allows inlining to happen.

    * Review feedback

commit dfb36ae68d9a099c9b90317c97bdf485bab4121e
Author: Stephen Toub <[email protected]>
Date:   Tue Jan 18 09:31:12 2022 -0500

    Fix a few IndexOf{Any} uses (#63852)

commit 7a0388a9f1a11b723aa09aeae3436a078b32bb43
Author: Eirik Tsarpalis <[email protected]>
Date:   Tue Jan 18 13:33:57 2022 +0000

    Extend triage board automation to more pods (#63897)

commit 8d8ef6dac58acf2ab944289c69dd46ee9e12d717
Author: Tom Deseyn <[email protected]>
Date:   Tue Jan 18 11:00:35 2022 +0100

    FileSystemEntry.Unix: don't make a syscall to check hidden on Linux. (#63878)

commit 24bdc3844c3de6d6a3c47534411c8322ae1a7bc6
Author: dotnet-maestro[bot] <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date:   Tue Jan 18 10:41:02 2022 +0100

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

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

commit 126db6dd10fcf618a9ab17ed93347044cc5a3a24
Author: Michal Strehovský <[email protected]>
Date:   Tue Jan 18 14:19:20 2022 +0900

    Disable warnings as errors in the repro project (#63910)

commit d0e2dac3a828b6afda5cff812b7b09b9dba213b7
Author: SingleAccretion <[email protected]>
Date:   Tue Jan 18 01:23:41 2022 +0300

    Actually properly type primary selectors (#63752)

    * Use only one [out] parameter in IsFieldAddr

    Since only one is needed.

    * Actually properly type primary selectors

commit d48a44f2ee2f6b4b039ca10cfd5dc01c331669f5
Author: Michal Strehovský <[email protected]>
Date:   Tue Jan 18 02:11:44 2022 +0900

    Separate variance information in mangled names (#63866)

    Fixes https://github.com/dotnet/runtimelab/issues/1821.

    Eventually we'll need to have a holistic look at how we mangle things.

commit 6dcb03913c7d55dca824abcd21617212bef62553
Author: Jan Kotas <[email protected]>
Date:   Mon Jan 17 07:46:40 2022 -0800

    Delete UMThkCallFrame (#63826)

    * Delete UMThkCallFrame

    * Place UnmanagedToManagedFrame under FEATURE_COMINTEROP

commit 4fac9549fea1ccbf296aeaa0861478825d70c5c3
Author: Mandar Sahasrabuddhe <[email protected]>
Date:   Mon Jan 17 16:05:28 2022 +0530

    Fix escaped strings for TryGetDateTime(Offset) (#63534)

    * Fix escaped strings for TryGetDateTime(Offset)

    Fix the exception thrown when the escaped DateTime(Offset)
    property value is unescaped and it becomes shorter than
    the minimum expected length. In such case the Try* method
    should fail and returns false.

    Fixes #62720

    * Fix escaped strings for TryGetDateTime(Offset)

    Fix the exception thrown when the escaped DateTime(Offset)
    property value is unescaped and it becomes shorter than
    the minimum expected length. In such a case, the Try* method
    should fail and return false.

    Fixes #62720

    * Fix escaped strings for TryGetDateTime(Offset)

    Fix the exception thrown when the escaped DateTime(Offset)
    property value is unescaped and it becomes shorter than
    the minimum expected length. In such a case, the Try* method
    should fail and return false.

    Fixes #62720

    * Fix escaped strings for TryGetDateTime(Offset)

    Fix the exception thrown when the escaped DateTime(Offset)
    property value is unescaped and it becomes shorter than
    the minimum expected length. In such a case, the Try* method
    should fail and return false.

    Fixes #62720

    * Fix escaped strings for TryGetDateTime(Offset)

    Fix the exception thrown when the escaped DateTime(Offset)
    property value is unescaped and it becomes shorter than
    the minimum expected length. In such a case, the Try* method
    should fail and return false.

    Fixes #62720

commit d72ed27cfe8656807ece255b275ca9d617af073b
Author: SingleAccretion <[email protected]>
Date:   Mon Jan 17 13:11:43 2022 +0300

    Treat CLS_VAR_ADDR as never null (#63844)

    Allows the LIR DCE to remove some indirections that
    were previously incorrectly thought to be throwing.

    Contributes to CLS_VAR deletion (by minimizing the diffs).

commit bf1d4a10b998a80b92728f80aa5ebbcd5138347a
Author: Radek Zikmund <[email protected]>
Date:   Mon Jan 17 11:11:10 2022 +0100

    Fix generating RunTests.sh and RunTests.cmd scripts (#63875)

    This fixes issue where generated RunTests.sh in the "To repro directly: "
    section contained unevaluated variables like RUNTIME_PATH, which
    prevented simple copy-pasting the code into the terminal

commit ae2f60c950cc021921fce83c796cbcb5ff96c658
Author: Andrii Kurdiumov <[email protected]>
Date:   Mon Jan 17 09:57:15 2022 +0600

    NativeAOT: Allow Delegate and MulticastDelegate marshalling (#63219)

    - Closes https://github.com/dotnet/runtimelab/issues/1107
    - Progress towards https://github.com/GtkSharp/GtkSharp/issues/300

commit 84926be4243143b7830e78cb7727057ed711a3cc
Author: Andrii Kurdiumov <[email protected]>
Date:   Mon Jan 17 07:42:08 2022 +0600

    Prevent assert if stack trace has function pointer (#63787)

commit 217b288cfabd2368082343c7e36e7ac0a8f96db9
Author: Adeel Mujahid <[email protected]>
Date:   Mon Jan 17 03:10:54 2022 +0200

    Convert h2inc to a cmake function (#63841)

    * Convert h2inc to a cmake function

    * Reuse preprocess_file

commit ec349cd8e9960ec44bf528eef52c56a87e601207
Author: Tomáš Rylek <[email protected]>
Date:   Sun Jan 16 20:50:01 2022 +0100

    Fix a few IL tests using the namespace syntax without an actual namespace (#63772)

commit 4f34cedc8eefb2a396646a67869e784f06d7def8
Author: Tomáš Rylek <[email protected]>
Date:   Sun Jan 16 20:45:15 2022 +0100

    Disable the Runtime_34587 regression test with GH issue #63818 (#63819)

commit bf65675a8181d5448134788a148f844d35c4f091
Author: SingleAccretion <[email protected]>
Date:   Sun Jan 16 20:21:52 2022 +0300

    Compress operand kinds array and optimize `OperIsLocal` (#63253)

    * Delete GTK_CONST

    * Delete OperIsRelop

    * Delete GTK_RELOP

    * Delete GTK_LOGOP

    * Delete GTK_LOCAL

    * Compress oper kinds

    They now fit into 8 bits.

commit 23de81782ca9cd24f024bd598563d363df29660c
Author: Zoltan Varga <[email protected]>
Date:   Sat Jan 15 22:05:07 2022 -0500

    [mono] Disable partial generic sharing for gparams with non-enum constraints for method gparams too. (#63813)

    This is an optimization, but it also avoids hitting some gsharing limitations wrt
    calling abstract static methods from gshared code.

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

commit c5c7967ddccc46c84c98c0e8c7e00c3009c65894
Author: Stephen Toub <[email protected]>
Date:   Sat Jan 15 20:35:25 2022 -0500

    Unify string.{Last}IndexOfAny and span.{Last}IndexOfAny (#63817)

    * Unify string.{Last}IndexOfAny and span.{Last}IndexOfAny

    Currently, string.IndexOfAny delegates to span.IndexOfAny (MemoryExtensions) for 1 through 5 values, and for more than it, it falls back to its own "probabilistic map"-based implementation, which tries to avoid looping through each value character for each character in the input.  span.IndexOfAny doesn't do that, instead always looping through every char for every input char.  This PR moves the logic from string into MemoryExtensions and then has string unconditionally delegate to span.

    string.LastIndexOfAny in contrast would only delegate to span's implementation if the values list actually only had a single character in it; otherwise, it would again fall back to its own "probabilistic map"-based implementation.  This PR again moves that fallback into MemoryExtensions, with string unconditionally delegating to it.  MemoryExtensions also has LastIndexOf overloads for 2 and 3 items, so rather than using the probabilistic path for those, it delegates to the existing overloads.

    * Address PR feedback

commit 1e22b3f00501e8263af571ad74cb043fb3407b70
Author: Jeremy Koritzinsky <[email protected]>
Date:   Sat Jan 15 12:59:33 2022 -0800

    Refactor the "produce an RSP file" step into a separate step from the "run ILC" step to make it easier to generate the RSP file on the fly (#63820)

commit fd2883f7bb60e75df6edcec58ac7bc79ecd10196
Author: Jan Kotas <[email protected]>
Date:   Sat Jan 15 12:21:07 2022 -0800

    Delete notifyexternals.* (#63835)

    Leftovers from loader lock MDA

commit 78dea7ff6599dd851210df6db330ee3b58f5294c
Author: Stephen Toub <[email protected]>
Date:   Sat Jan 15 10:28:53 2022 -0500

    Add Regex FindFirstChar optimization for a literal after an atomic loop (#63477)

    * Add Regex FindFirstChar optimization for a literal after an atomic loop

    If after all of our analysis we can't find anything to IndexOf{Any} as part of finding the next match location, we'll also look for a literal (a single char, a string of chars, or a set of a small number of chars) following an unbounded atomic set loop that starts the pattern.  In that case, we can IndexOf for the literal, and then walk backwards through the characters prior to it looking for the beginning of the match.

    * Extend optimization to Setloop/lazy in addition to Setloopatomic

commit c30d55ec5b584e26186a85adedf313c81a64269c
Author: Tanner Gooding <[email protected]>
Date:   Sat Jan 15 05:00:18 2022 -0800

    Perform some minor code cleanup of the System.Numerics and System.Runtime.Intrinsics namespaces (#63753)

    * Ensure the System.Numerics and System.Runtime.Intrinsics namespaces are using explicit type when "not apparent" to match repo conventions

    * Ensure the System.Runtime.Intrinsics types are using TARGET_64BIT to match project convention

    * Improving some docs and simplifying names where possible

commit a2e017dc876729678d7874706086bd444f010bcf
Author: SingleAccretion <[email protected]>
Date:   Sat Jan 15 15:42:31 2022 +0300

    Fix MOffset size estimate (#63766)

commit 9db60963097adac1c25a5117d3918de17e1b5fb1
Author: Egor Bogatov <[email protected]>
Date:   Sat Jan 15 15:20:36 2022 +0300

    JIT: Mark constant arguments of HWINTRINSIC nodes as DONT_CSE (#63442)

commit 20e6ec1a43cab03cd2d48f9fad32d56e83787ea0
Author: Geoff Kizer <[email protected]>
Date:   Sat Jan 15 04:03:03 2022 -0800

    Avoid unnecessary string allocation in HttpRuleParser.GetHostLength (#63641)

    * avoid unnecessary string allocation in HttpRuleParser.GetHostLength

    Co-authored-by: Geoffrey Kizer <[email protected]>

commit 25d999b5a6711fc6d2ffc42fa38a58ec865a7232
Author: Stephen Toub <[email protected]>
Date:   Sat Jan 15 06:50:49 2022 -0500

    Improve use of {Last}IndexOf{Any} in Regex loops (#63428)

    * Improve .*string to LastIndexOf "string" rather than just 's'

    * Enable .*string LastIndexOf optimization in the face of an UpdateBumpalong

    If the loop starts the expression, we will have inserted an UpdateBumpalong node, but that was then interfering with detecting a subsequent character/string.

    * Use IndexOf{Any} in lazy loop backtracking

    * Improve how sets are described in comments

    * Change RealWorld tests to be invoked once per engine

    To help with debugging

    * Address PR feedback

commit 386f87139c7fe48f6b733e3cae6d09128c827192
Author: Aleksey Kliger (λgeek) <[email protected]>
Date:   Sat Jan 15 04:05:03 2022 -0500

    [metadata] Use MonoDefaults from components without hacks (#63822)

commit 692052e016407e6eb11feeaee5269625c3ee741a
Author: Ankit Jain <[email protected]>
Date:   Fri Jan 14 23:52:13 2022 -0500

    Split `sendtohelixhelp.proj` to extract wasm, and mobile bits to separate files. (#63373)

    Extract wasm, and mobile specific bits from sendtohelixhelp.proj into  …
    .. separate files, so they can be easier to manage.

    - the platform specific properties are set in their respective files
      (for eg `sendtohelixhelp-wasm.proj`)
    - a new target `BuildHelixCommand` is extracted from
      `BuildHelixWorkItems`, which runs first
      - and essentially builds `@(HelixCommand)`

    - Platform specific targets can run via
      `$(BuildHelixWorkItemsDependsOn)`
      - which then add any "special" helix work items

    - `BuildHelixWorkItems` in the main file supports adding for the regular
      case, which is controlled by `$(EnableDefaultBuildHelixWorkItems)`.

    Also, fixes https://github.com/dotnet/runtime/issues/52137

commit 9daaab152ff1c0794ee21645bf57acf444f900ff
Author: Anton Firszov <[email protected]>
Date:   Sat Jan 15 03:15:26 2022 +0100

    serialize SendPacketsAsync tests (#63702)

commit 40047f2a82595546eadbabf9e438f7592eb1f002
Author: Stephen Toub <[email protected]>
Date:   Fri Jan 14 20:48:36 2022 -0500

    Improve Regex UpdateBumpalong optimization for non-atomic and lazy loops (#63398)

    * Improve handling of UpdateBumpalong for non-atomic loops

    For atomic greedy loops, UpdateBumpalong is serving its purpose: upon consuming as much as possible for the loop, base.runtextpos is set to that position so that the next time FindFirstChar runs, it'll start from at least that location.  However, for non-atomic greedy loops, with base.runtextpos being set to the ending position after each backtracking, we end up inadvertently voiding any benefits of the UpdateBumpalong, as we end up overwriting the further position with the shorter position.  A simple tweak to that, only setting the position if it's greater, yields significant benefits, in particular when there's no match.

    * Add more tests for lazy loops

    These just duplicate the greedy loop tests and tweak them for lazy.

    * Insert UpdateBumpalong for lazy loops as well

    * Address PR feedback

commit 513fe2863ad5ec6dc453d223d4b60f787a0ffa78
Author: Tomáš Rylek <[email protected]>
Date:   Sat Jan 15 00:36:58 2022 +0100

    More duplicate projects under JIT/Methodical/NaN to delete (#63771)

commit 2692407f03ce8b648c54daa4d3a3eb534132edc9
Author: Santiago Fernandez Madero <[email protected]>
Date:   Fri Jan 14 13:36:50 2022 -0800

    Build all packages on source-build even when in servicing (#63755)

commit e1c69cc75a4c51ea3e3011a084f74b486b2dbc88
Author: Tomáš Rylek <[email protected]>
Date:   Fri Jan 14 21:47:44 2022 +0100

    Move localloc/common library under JIT folder (#63510)

    In today source tree we have five different libraries named
    'common'. This change is a first step in deduplicating their names;
    I have also moved the library under the JIT/ folder as it's
    used not only by JIT/jit64 tests but also by Methodical and
    Regression tests.

    Thanks

    Tomas

commit 3a83c5ca772a1a74e1707474c1d05c283f264a2f
Author: Jan Kotas <[email protected]>
Date:   Fri Jan 14 12:47:18 2022 -0800

    Delete unused method (#63797)

commit 02e22b02975d50944220e6e9a494af491487c6a9
Author: Tomáš Rylek <[email protected]>
Date:   Fri Jan 14 21:00:01 2022 +0100

    Remove string[] args from Main methods under JIT/Methodical (#63770)

    In most cases the arguments were formal and not really used so
    I just fixed the Main method signature. In a bunch of cases the
    command-line arguments supported variant functionality of the
    test case but I haven't found any test projects that would be
    exercising this functionality. I don't think it makes sense to
    keep untested code paths so I deleted the logic pertaining to
    non-empty command-line arguments.

    In the particular case of stringintern tests, each test apparently
    had a TestSameObjRef and TestDiffObjRef variant, triggered by
    command-line arguments. I tried to run TestDiffObjRef but it
    ended up failing left and right - not suprising for untested
    code logic - so I also deleted the TestDiffObjRef variants
    as I suppose the invariants previously tested there no longer hold.

    Thanks

    Tomas

commit 562606671166edb60234c5062f69b35f6b2ac5c9
Author: Egor Chesakov <[email protected]>
Date:   Fri Jan 14 10:44:07 2022 -0800

    Enable superpmi-collect pipeline on macOS arm64 (#63691)

    * Enable superpmi-collect on macOS Arm64 in eng/pipelines/coreclr/superpmi-collect.yml

    * Add -platform argument and use the value for determining what Helix queue to use in src/coreclr/scripts/superpmi_collect_setup.py

    * Pass platform to superpmi_collect_setup.py in eng/pipelines/coreclr/templates/run-superpmi-collect-job.yml

    * Copy *.dylib on macOS and *.so on Linux in src/coreclr/scripts/superpmi_collect_setup.py

    * Install azure-storage-blob in eng/pipelines/coreclr/templates/run-superpmi-collect-job.yml

    * Remove macOS/x64 from platforms list in eng/pipelines/coreclr/superpmi-collect.yml

    * Add "CoreCLR Product Build OSX x64 checked" that produces required artifacts that consumed by macOS/arm64 superpmi-collect-job

    * Fix typo in libraries_test_assets should correspond to target arch in eng/pipelines/coreclr/templates/superpmi-collect-job.yml

    * Update a comment indicating what Helix queues are used for macOS in src/coreclr/scripts/superpmi_collect_setup.py

    * Workaround https://github.com/dotnet/sdk/issues/23430 in src/coreclr/scripts/superpmi_benchmarks.py

    * Enable macOS/arm64 benchmarks collection in eng/pipelines/coreclr/superpmi-collect.yml

commit a991e1349e4325770d8e2ddf085184a68cd2555b
Author: Elinor Fung <[email protected]>
Date:   Fri Jan 14 10:49:26 2022 -0500

    Make ObjectiveC tests in System.Runtime.InteropServices.Tests check exit code for remote execution (#63769)

commit 33179fa0ac1ab75bb09e5cc7ed63aa6629c51411
Author: Maksym Koshovyi <[email protected]>
Date:   Fri Jan 14 17:49:06 2022 +0200

    [Group 5] Enable nullable annotations for `Microsoft.Extensions.Configuration.Ini` (#60368)

    * Add annotations

    * Use pattern matching

    * NetCoreAppMinimum

    * ReadLine won't return null

    * Update src/libraries/Microsoft.Extensions.Configuration.Ini/ref/Microsoft.Extensions.Configuration.Ini.csproj

    Co-authored-by: Eric Erhardt <[email protected]>

    * Add comment

    * Revert non-nullable change

    Co-authored-by: Eric Erhardt <[email protected]>

commit 3956126d55e32203a8926a54a8ee3090b3e69749
Author: MSDN.WhiteKnight <[email protected]>
Date:   Fri Jan 14 20:33:03 2022 +0500

    Fix typo in  SRM package description (#63782)

commit d568a3fec2c9a2e7341466a28f88f52558fddf6c
Author: Tarek Mahmoud Sayed <[email protected]>
Date:   Fri Jan 14 07:27:32 2022 -0800

    Introduce Activity.IsStopped Property (#63713)

    Co-authored-by: Dan Moseley <[email protected]>

commit 0b527a201f4c286f13ef8b829bbd1651bdad7a52
Author: Zoltan Varga <[email protected]>
Date:   Fri Jan 14 08:07:47 2022 -0500

    Fix a style issue. (#63776)

commit b184ee0393aaf0395a69e70590d5c529e8c93ccf
Author: Adam Sitnik <[email protected]>
Date:   Fri Jan 14 10:04:11 2022 +0100

    MemoryMappedFile: don't check for file existence if there is no need (#63754)

    Co-authored-by: Stephen Toub <[email protected]>

commit c96869a6d10a235b5a26c9e15d685fabc7f87cb0
Author: Michal Strehovský <[email protected]>
Date:   Fri Jan 14 17:03:22 2022 +0900

    Disable annoying warnings in the repro project (#63777)

    We have repo-wide WarnAsError that makes this super annoying in a repro project.

commit b7e0a85ab6111b77ad19a1c2db0dedcedded4940
Author: Qiao <[email protected]>
Date:   Fri Jan 14 14:33:20 2022 +0800

    [LoongArch64] add all the coreclr-build-config files (#62889)

commit 1ba80f698c85b525545f1a13c02eb405588b0461
Author: Andrii Kurdiumov <[email protected]>
Date:   Fri Jan 14 12:20:45 2022 +0600

    Remove errors during first run of runpaltests.h (#62642)

    * Remove errors during first run of runpaltests.h

    If you run `runpaltests.h` for first time, you will see 2 errors about file or folder not found.

    First error comes from using `RELATIVE_PATH_TO_PAL_TESTS` which does not used anywhere, except maybe some platform where you can `cd` to non-existing folder. In that case 3rd parameter to script would be interpreted incorrectly. I doubt that, but who know what's somewhere deep in infra.

    Second error is entirely preventable, since `cd $PAL_TEST_OUTPUT_DIR` does not affect anything until subsequent `cd $PAL_TEST_OUTPUT_DIR` on line 118.

    Discovered here https://github.com/dotnet/runtime/pull/62625#issuecomment-991172978

    * Remove not nescessary cd

    * Fix

    * oopsie

commit 27fdc2d22f8717c7b0ba254ae9ef2900d00f5e7a
Author: Stephen Halter <[email protected]>
Date:   Thu Jan 13 17:20:28 2022 -0800

    Avoid deadlock with ConfigurationManager (#62209)

    Co-authored-by: Eric Erhardt <[email protected]>

commit 2c28e63f9360280011a3b03c1ca6dc0edce1fae4
Author: Alexander Köplinger <[email protected]>
Date:   Thu Jan 13 22:17:54 2022 +0100

    Temporarily disable coredumps during library testing on macOS (#63742)

    System.Runtime.InteropServices.Tests seems to produce >10GB of coredumps which overwhelms CI.

commit 79e40e35ce3e218ad2d81259572e462b56bfd807
Author: Kevin Jones <[email protected]>
Date:   Thu Jan 13 15:04:36 2022 -0500

    Add public constants for HMAC and hash sizes

commit c912a1532a1bb653a21a3749aaad7c5fb556ae01
Author: Kevin Jones <[email protected]>
Date:   Thu Jan 13 14:07:55 2022 -0500

    Change non-breaking spaces (U00A0) to a plain space in code files (#63688)

commit ec0c7f3a91b9fc47f7a867f0b997ba34560302e7
Author: Aaron Robinson <[email protected]>
Date:   Thu Jan 13 12:20:43 2022 -0500

    Add negative tests for by-ref in UnmanagedCallersOnly scenarios. (#63711)

commit c78d9fa3edb2ae8e14f0529566c20d33a2512cab
Author: Maxim Lipnin <[email protected]>
Date:   Thu Jan 13 19:08:27 2022 +0300

    Disable System.Drawing.Common.Tests test suite on Windows+Mono (#63726)

commit 048e1a395523f1855c054d01a3f1f4c55d873ea4
Author: Simon Rozsival <[email protected]>
Date:   Thu Jan 13 16:57:12 2022 +0100

    [Android] Throw PNSE for unavailable network information (#63633)

    * Update tests

    * Add android specific implementation

    * Add UnsupportedOSPlatform attributes

    * Fix typo

    * Remove unnecessary file reference

    * Clean-up code

    * Minor code clean-up

    * Remove dictionary

    * Refactoring

    * Revert comment change

commit 77bdad50a01f3a330c03b093544245d39620314b
Author: Alexander Köplinger <[email protected]>
Date:   Thu Jan 13 16:06:39 2022 +0100

    Bump to macOS 10.14 minimum in libs and mono builds too (#63682)

    https://github.com/dotnet/runtime/pull/62822 bumped the minimum CMAKE_OSX_DEPLOYMENT_TARGET to 10.14, but the libs.native and mono parts of the build still used the old 10.13 value.
    In build-native.sh for libs.native we can actually remove the explicit setting since we're already setting it in eng/native/configurecompiler.cmake.

commit 01cdd1dcaebcc9f2ab36027204142a6703a1b70b
Author: Pavel Savara <[email protected]>
Date:   Thu Jan 13 15:42:08 2022 +0100

    [wasm] Emscripten uses `require` even when targeting ES6. This deals with the consequences. (#63718)

commit a13ee96335ea4c41cfe273855611caec4c35cae8
Author: Thays Grazia <[email protected]>
Date:   Thu Jan 13 09:53:43 2022 -0300

    [wasm][debugger] Fixing error after receiving loaded_files = null (#63591)

    * Fixing #39301

    * Addressing @radical comments

    * Sending the error toconsole in the browser.

    * Applying @radical suggestion.

    * Update src/mono/wasm/debugger/DebuggerTestSuite/BreakpointTests.cs

    Co-authored-by: Ankit Jain <[email protected]>

    * Update src/mono/wasm/debugger/tests/debugger-test/wasm-page-without-assets.html

    Co-authored-by: Ankit Jain <[email protected]>

    * Space -> tabs

    * Fix compilation error.

    Co-authored-by: Ankit Jain <[email protected]>

commit 64c05a3bcb4e71ee9972a3fb47eb4d3e061d3462
Author: SingleAccretion <[email protected]>
Date:   Thu Jan 13 12:58:37 2022 +0300

    Reconfigure the field sequences for statics (#62632)

    * Reconfigure the field sequences for statics

    To make the "boxed static" and, in th…
deeprobin added a commit to deeprobin/runtime that referenced this pull request Feb 1, 2022
* [RateLimiting] Dequeue items when queuing with NewestFirst (#63377)

* Don't reuse registers in Debug mode (#63698)

Co-authored-by: Bruce Forstall <[email protected]>

* Add IsKnownConstant jit helper and optimize 'str == ""' with str.StartsWith('c') (#63734)

Co-authored-by: Miha Zupan <[email protected]>
Co-authored-by: SingleAccretion <[email protected]>

* - mono_wasm_new_external_root for roots on stack (#63997)

- temp_malloc helper via linear buffer in js
- small refactorings
Co-authored-by: Katelyn Gadd <[email protected]>

* [Arm64] Don't use D-copies in CopyBlock (#63588)

* Increase the maximum number of internal registers allowd per node in src/coreclr/jit/lsra.h

* Based on discussion in https://github.com/dotnet/runtime/issues/63453 don't allocate a SIMD register pair if the JIT won't be able to use Q-copies in src/coreclr/jit/lsraarmarch.cpp

* Update CodeGen to reflect that Q-copies should be used only when size >= 2 * FP_REGSIZE_BYTES and using of them makes the instruction sequence shorter in src/coreclr/jit/codegenarmarch.cpp

* Update comment - we don't use D-copies after that change in src/coreclr/jit/codegenarmarch.cpp

* Disable hot reload tests for AOT configurations (#64006)

* Bump Explicit-layout value types with no fields to at minimum 1 byte size. (#63975)

* Add runtime-extra-platforms pipeline to have matching runtime PR and Rolling builds (#62564)

* Add runtime-extended-platforms pipeline to have matching runtime PR and Rolling builds

* Fix evaluate changed paths condition for the extra pipeline

* PR Feedback and fix condition

* Move MacCatalyst back to staging, disable tvOS tests

* Disable browser wasm windows legs

* Make ILStubGenerated event log ModuleID corresponding to that on other events (#63974)

* Retries for flaky WMI test (#64008)

* [arm64] JIT: Redundant zero/sign extensions after ldrX/ldrsX (#62630)

* JIT: fix up switch map for out-of-loop predecessor (#64014)

If we have a loop where some of the non-loop predecessors are switchs, and
we add pre-header to the loop, we need to update the switch map for those
predecessors.

Fixes #63982.

* Update StructMarshalling design now that DisableRuntimeMarshallingAttribute is approved (#63765)

Co-authored-by: Elinor Fung <[email protected]>

* Fix Crossgen2 bug #61104 and add regression test (#63956)

The issue tracks the runtime regression failure where
Crossgen2-compiled app is unable to locate a type with non-ASCII
characters in its name. The failure was caused by the fact that
Crossgen2 was incorrectly zero-extending the individual UTF8 characters
when calculating the hash whereas runtime is sign-extending them.

Thanks

Tomas

* Fix invalid threading of nodes in rationalization (#64012)

The code in question assumes that the ASG will be
reversed and thus threads "simdTree" before "location"
in the linear order. That dependency, while valid,
because "gtSetEvalOrder" will always reverse ASGs
with locals on the LHS, is unnecessary and incorrect
from the IR validity point of view.

Fix this by using "InsertAfter" instead of manual
node threading.

* Check if the child object is in the heap range before get_region_plan_gen_num (#63828)

* Check if the child object is in the heap range before object_gennum (#63970)

* 'cmeq' and 'fcmeq' Vector64<T>.Zero/Vector128<T>.Zero ARM64 containment optimizations (#62933)

* Initial work

* Added a comma to display

* Cleanup

* Fixing build

* More cleanup

* Update comment

* Update comment

* Added CompareEqual Vector64/128 with Zero tests

* Do not contain op1 for now

* Wrong intrinsic id used

* Removing generated tests

* Removing generated tests

* Added CompareEqual tests

* Supporting containment for first operand

* Fix test build

* Passing correct register

* Check IsVectorZero before not allocing a register

* Update comment

* Fixing test

* Minor format change

* Fixed formatting

* Renamed test

* Adding AdvSimd_Arm64 tests:

* Adding support for rest of 'cmeq' and 'fcmeq' instructions

* Removing github csproj

* Minor test fix

* Fixed tests

* Fix print

* Minor format change

* Fixing test

* Added some emitter tests

* Feedback

* Update emitarm64.cpp

* Feedback

* [Arm64] Keep unrolling InitBlock and CopyBlock up to 128 bytes (#63422)

* Add INITBLK_LCL_UNROLL_LIMIT and CPBLK_LCL_UNROLL_LIMIT of 128 bytes in src/coreclr/jit/targetarm64.h

* Keep unrolling InitBlock up to INITBLK_LCL_UNROLL_LIMIT bytes when dstAddr points to the stack in src/coreclr/jit/lowerarmarch.cpp

* Keep unrolling CopyBlock up to CPBLK_LCL_UNROLL_LIMIT bytes when both srcAddr and dstAddr point to the stack in src/coreclr/jit/lowerarmarch.cpp

* Add ProcessLinkerXmlBase to NativeAOT (#63666)

Add Xml Parsing linker files as a reference source to NativeAOT
Rename NativeAOT ProcessLinkerXmlBase version to ProcessXmlBase (uses XmlReader) 
Add ProcessLinkerXmlBase from linker and fix it so it can be used in NativeAOT (uses XPath)

* Fix gc_heap::remove_ro_segment (#63473)

* Fix OpenSSL version check in GetAlpnSupport

The previous check failed 3.0.0 because the Minor was 0 and Build was 0.

It could probably be rewritten to be `>= new Version(1, 0, 2)`, but that'd require more thinking.

* Fix issues with verify_regions, clear_batch_mark_array_bits. (#63798)

Details:
- we cannot verify the tail of the region list from background GC, as it may be updated by threads allocating.
- fix case in clear_batch_mark_array_bits where end is equal to the very end of a segment and we write into uncommitted memory in the mark_array.
-  bgc_clear_batch_mark_array_bits did some checks and then called clear_batch_mark_array_bits which repeated the exact same checks. Renamed clear_batch_mark_array_bits to bgc_batch_mark_array_bits and removed the old copy, removed the declaration for clear_batch_mark_array_bits.

* [debugger][wasm] Added support for non user code attribute (#63876)

* Hidden methods and step through methods behave the same way.

* Perpared flow for setting JustMyCode in the future.

* Tests for JustMyCode setting before debug launch.

* Transformed into dynamic JustMyCode change flow.

* JustMyCode disabled, first 3 cases solved.

* Finished behavior for JMC disabled (with 1 difference).

* JMC enabled: stepIn np bp + stepIn bp + resume bp.

* Functional version (with minor deviations from expected behavior).

* Refactoring.

* All tests for NonUserCode work.

* Fix line number after adding code above.

* Fix error in merge.

* Removing duplicated tests.

* [wasm][debugger] Added support for stepper boundary attribute (#63991)

* Hidden methods and step through methods behave the same way.

* Perpared flow for setting JustMyCode in the future.

* Tests for JustMyCode setting before debug launch.

* Transformed into dynamic JustMyCode change flow.

* JustMyCode disabled, first 3 cases solved.

* Finished behavior for JMC disabled (with 1 difference).

* JMC enabled: stepIn np bp + stepIn bp + resume bp.

* Functional version (with minor deviations from expected behavior).

* Refactoring.

* All tests for NonUserCode work.

* Fix line number after adding code above.

* Stepper boundary with tests.

* Save information about multiple decorators.

* Fix error in merge.

* Polish the PR build doc (#64036)

* [wasm] WebSocket tests on NodeJS (#63441)

- NPM package with WS.
- Restore npm during build.
- Load npm modules in test-main.js.

Co-authored-by: Pavel Savara <[email protected]>

* Fix dependency in runtime-official.yml (#64040)

After https://github.com/dotnet/runtime/pull/62564 the `hostedOs` value is included in the job name.

* [API Implementation]: System.Diagnostics.CodeAnalysis.StringSyntaxAttribute (#62995)

* Add StringSyntaxAttribute

* Fix attribute declaration and add usage

* Address PR feedback

Co-authored-by: Stephen Toub <[email protected]>

* Reduce the memory footprint of HttpHeaders (#62981)

* Change HttpHeaders backing store to an array

* Reduce the size of HeaderDescriptor to 1 object

* Update UnitTests, fix GetOrCreateHeaderInfo

* Switch to a dictionary after ArrayThreshold headers

* Add unit tests

* Use storeValueRef naming consistently

* Workaround field layout regression (#63005)

* Mark _descriptor on HeaderDescriptor as nullable

* Remove HeaderDescriptor.Descriptor and add HasValue, IsKnownHeader, Equals

* Simplify HttpHeaderParser.Separator logic

* Add comments on HasValue checks

* Lazily group headers by name

* Add a header ordering+grouping test

* Make use of the _count field

* Revert all HeaderDescriptor changes from PR

* Switch back to always grouping by name

* Assert that the collection is not empty in GetEnumeratorCore

* Optimize AddHeaders for empty collections

* Reference the Roslyn bug issue

* Assert that multiValues are never empty

* Don't preserve a Dictionary across Clear

* Add comment about why a custom HeaderEntry type is used

* Disable DirectoryLongerThanMaxLongPathWithExtendedSyntax_ThrowsException (#64044)

* Add test coverage for frozen objects and GC interaction (#64030)

* Test coverage for frozen objects and GC interaction

* Update Preinitialization.cs

* Remove Type.MakeGenericType dependency from source generation (#64004)

* Remove Type.MakeGenericType dependency from srcgen

* address feedback

* add trimmer warning suppression

* address feedback

* Add ns2.0 support to System.Formats.Cbor (#62872)

* Add ns2.0 support to System.Formats.Cbor

* Add NetFrameworkMinimum to tfms

* Add ReadHalf and WriteHalf to compatibility suppressions

* Remove unwanted comment

* Exception sets: debug checker & fixes (#63539)

* Add a simple exception sets checker

* Add asserts to catch missing nodes

* Fix normal VN printing

* Fix JTRUE VNs

* Fix PHI VNs

* Update VNs for "this" ARGPLACE node

* Tolerate missing VNs on PHI_ARGs

We do not update them after numbering the loops.

(Though perhaps we should)

* Tolerate unreachable blocks

* Fix exception sets for VNF_PtrTo VNFuncs

* Add VNUniqueWithExc

* Add VNPUniqueWithExc

* Fix arrays

* Consistently give location nodes VNForVoid

And always add exception sets for them.
This will simplify the exception set
propagation code for assignments.

* Fix CSE

* Fix GT_RETURN

* Fix LCLHEAP

* Fix GT_ARR_ELEM

* Fix unique HWI

* Fix unique SIMD

* Fix GT_SWITCH

* Fix CKFINITE

* Fix HWI loads

* Fix fgValueNumberAddExceptionSetForIndirection

The method does not need to add the exception set for
the base address. Additionally, the way it did add the
sets, by unioning with normal value numbers, lost all
exceptions not coming from the base address.

This was fine for the unary loads, but broke the HWI loads
that could have exceptions coming from not just the address.

* Fix GT_RETFILT

* Fix INIT_VAL

* Fix DYN_BLK

* Fix FIELD_LIST

* De-pessimize CkFinite

* Add a test for HWIs

* Add a test for LCLHEAP

* Change test to check for store block operators (#60878)

* Update XUnit to 2.4.2-pre.22 (#63948)

* Update to Xunit build 2.4.2-pre.13

Also pick up latest pre-release of analyzers

* Disambiguate calls to Assert.Equals(double,double,int)

Xunit added a new Assert overload that caused a lot of ambiguous calls.
https://github.com/xunit/xunit/issues/2393

Workaround by casting to double.

* Fix new instances of xUnit2000 diagnostic

* Workaround xUnit2002 issue with implicit cast

Works around https://github.com/xunit/xunit/issues/2395

* Disable xUnit2014 diagnostic

This diagnostic forces the use of Assert.ThrowsAsync for any async method,
however in our case we may want to test that a method will throw
synchronously to avoid regressing that behavior by moving to the async
portion of the method.

* Use AssertExtensions to test for null ArgumentException.ParamName

Workaround https://github.com/xunit/xunit/issues/2396

* Update to Xunit 2.4.2-pre.22

* Fix another ArugmentException.ParamName == null assert

* Preserve OBJ/BLK on the RHS of ASG (#63268)

One of my upcoming changes will need this information to
accurately detect type mismatch in "fgValueNumberBlockAssignment".

* Revert "Temporarily disable coredumps during library testing on macOS (#63742)" (#64057)

This reverts commit 2c28e63f9360280011a3b03c1ca6dc0edce1fae4.

Fixes #63761

* Performance: Fix Browser Wasm job not being found for dependent jobs (#64058)

* Figure out the name that browser wasm now uses.

*  linux to the Browser wasm depends on name.

Update the browser wasm dependson name to match the new one found in the pipeline.

* Fix exception propagation over HW exception frame on macOS arm64 (#63596)

* Fix exception propagation over HW exception frame on macOS arm64

There is a problem unwinding over the PAL_DispatchExceptionWrapper
to the actual hardware exception location. The unwinder is unable
to get distinct LR and PC in that frame and sets both of them to
the same value. This is caused by the fact that the
PAL_DispatchExceptionWrapper is just an injected fake frame and
there was no real call. Calls always return with LR and PC set
to the same value.

The fix unifies the hardware exception frame unwinding with Linux
where we had problems unwinding over signal handler trampoline, so
PAL_VirtualUnwind skips the trampoline and now also the
PAL_DispatchExceptionWrapper frame by copying the context of
the exception as the unwound context.

* Reenable DllImportGenerator.Unit.Tests

* Add StringSyntax attribute to Regex.pattern field (#64063)

I missed adding this one in my initial audit.  It'll be exceedingly rare for a developer to manually write code that assigns a string to this protected field, but every source-generated regex does so, and thus any colorization VS provides will benefit looking at the source-generated code.

* Sync shared code from aspnetcore (#64059)

Co-authored-by: JamesNK <[email protected]>

* Read the System.GC.CpuGroup settings in runtimeconfig.json (#64067)

* Log message of unexpected exception in ThrowsAny (#64064)

* Log message of unexpected exception in ThrowsAny

* Update AssertExtensions.cs

* Enable some browser legs on the extra-platforms pipeline (#64065)

* Enable some browser legs on the extra-platforms pipeline

* Flow platform parameter from helix queues templates

* Fix another condition

* Allow CreateScalarUnsafe to be directly contained by hwintrinsics that support scalar loads (#62407)

* Ensure that floating-point constants can be contained by hardware intrinsics

* Allow CreateScalarUnsafe to be directly contained by hwintrinsics that support scalar loads

* Rename IsContainableHWIntrinsicOp to TryGetContainableHWIntrinsicOp and improve handling

* Ensure that NI_AVX2_BroadcastScalarToVector128/256 are properly tracked as MaybeMemoryLoad

* Applying formatting patch

* Ensure a few other "maybe memory" and special memory operand size cases are handled

* Applying formatting patch

* Remove commented code (#63869)

* Add pmi_path argument to superpmi.py script and use it in the superpmi-collect pipeline. (#63983)

* Add -pmi_path argument to superpmi.py collect command and use it to set PMIPATH environment variable in src/coreclr/scripts/superpmi.py

* Set pmi_path to $(SuperPMIDirectory)\crossgen2

* Print a warning if -pmi_path or -pmi_location is specified while --pmi is not in src/coreclr/scripts/superpmi.py

* Move setting of PMIPATH environment variable under `if self.coreclr_args.pmi is True:` in src/coreclr/scripts/superpmi.py

* Move pmi argument validation to setup_args() in src/coreclr/scripts/superpmi.py

* Clone root_env if we are going to set PMIPATH environment variable in src/coreclr/scripts/superpmi.py

* Update the macOS CoreCLR building documentation. (#63932)

This updates the documentation to refer to the up-to-date location of
requirements and prerequisites.

* Introduce RandomAccess.SetLength (#63992)

* don't Flush readonly MemoryMappedViewAccessor on disposal (#63794)

* don't Flush if it's impossible to write

* address code review feedback: apply same optimization to MemoryMappedViewStream

* Implement System.Runtime.CompilerServices.DisabledRuntimeMarshallingAttribute on CoreCLR-family of runtimes/type systems (#63320)

* Add the DisableRuntimeMarshallingAttribute to the build.

* Add initial test suite

* Implement support in IL stubs for the "disabled runtime marshalling" feature.

* Add testing for inlining IL stubs.

* Block SetLastError and LCID support when DisableRuntimeMarshallingAttribute is applied.

* Bump NativeAOT-only R2R version header (missed previously)

* Implement support in crossgen2 and NativeAOT

* Clean up the test tree and update the tests to fail more reliably when bugs are present.

Fix a bug that was uncovered when the tests were refactored.

* Fix NativeAOT and clean up crossgen2

* Add a test for NoPreserveSig with DisableRuntimeMarshalling

* Assign hr in SUCCEEDED macro.

* PR feedback.

* Block varargs in disabled marshalling mode.

* Fix typo

* Block types that have a field that is auto-layout somewhere in their layout.

* Fix typo

* Revert the AutoLayoutOrHasAutoLayoutFIeld check in the "marshalling enabled" case

* Only set scope when it isn't null (it's null for some cases).

* Fix narrowing conversion failure.

* First pass simple implementation in Mono

* Fix assert to still work for the built-in marshalling system

* S_FALSE is a thing

* Fix type load failures caused by eager type handle loading.

* Get MethodILScope from the calling method when available (this covers all cases where we need it)

* Add const modifier.

* Try 2 to fix const modifiers

* Fix compilation of NativeAOT jitinterface

* Fix type lookup in Mono

* Use try_get model for getting the attribute type in the case of failure. Fix mono implementation for looking up the attribute.

* Handle void and generic instantiations

* Update auto-layout check to check recursively in layout.

* Enhance test suite with more tests for UnmanagedCallersOnly, generics, and the like. Fix AutoLayout test.

* Fix IL and a few typos

* Set a value in the padding for easier debugging.

* Create sig->marshalling_disabled to track when marshalling is disabled, which is separate from the concept of "is this signature a P/Invoke"

* Fix running test suite on Mono + Mini JIT

* Fix recursive type load failure by only checking the "has auto-layout or field with auto-layout" for value types.

* Fix mono windows build.

* Feedback from Michal.

* Fix bug in EcmaAssembly.HasAssemblyCustomAttribute

* Make the runtime flavor check in the wrapper generator case-invariant

* Use helper method since various different platforms/configurations throw different exceptions for these scenarios.

* Fix AutoLayout test refactor and use a dummy value for the padding field in both enabled and disabled scenarios.

* Add an explicit test for using enums as they're a little weird and needed some special-casing.

* Fix build-time test filtering in xunit wrapper generator.

* Fix some x86-specific issues

* Add a nice big comment block.

* Fix x86

* Refactor tests so we can skip one on Mono since Char->char lossy conversion is not supported.

* Disable test in issues.targets until an alternative solution is reached.

* Add another SkipOnMono attribute in the "Enabled" test suite.

* Apply UnmangedFunctionPointerAttribute to help hint to the Mono LLVM AOT compiler to compile the managed->native thunks at aot-time

* Unify on "runtime marshalling" terminology

* Clean up unused usings.

* Address Jan's feedback except for applying the attribute to CoreLib.

* PR feedback.

* Mono throws an InvalidProgramException for varargs

* Fix copy-paste issue.

* Make sure we use the P/Invoke's Module and not the caller's module when deciding if runtime marshalling is enabled for a varargs P/Invoke call.

* Handle how LLVM AOT reports the failure to handle varargs (EEE)

* Make ILLink validation steps in libs incrementally buildable (#64041)

* Make ILLink validation steps in libs incrementally buildable

Both the illink-oob and the illink-sharedframework targets don't define Inputs and Outputs which makes them run during no-op incremental builds. This change defines Inputs and Outputs based on what's used during the target's execution so that if the input assemblies or the illink assembly itself haven't changed, the step will be skipped.

Also renaming properties and items to make them more readable and consistent. As these target files are "extensions" of the src.proj file and aren't shared anywhere, they can be treated like logic inside a project file and hence prefixing properties and items with an underscore "_" isn't necessary.

* Fix broken callstacks in interpreter on MonoVM. (#60338)

* Fix some broken callstacks in interpreter.

* Fix build error.

* Initial WASI support prototype (#63890)

* Add StringSyntaxAttribute.Json (#64081)

* [main] Update dependencies from 5 repositories (#64002)

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Přemek Vysoký <[email protected]>

* Fix crash when VS4Mac is debugging VS4Mac arm64 (#64085)

Fix crash when VS4Mac is debugging VS4Mac arm64

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

* ILVerify: Handle readonly references in ldfld (#64077)

* ILVerify: Handle readonly references in ldfld

Fixes #63953

* Fix test name

Co-authored-by: Michal Strehovský <[email protected]>

* Avoid additional local created for delegate invocations (#63796)

Very often 'this' is already a local and we can avoid creating another
local.

* [wasm][debugger] Apply changes on wasm using sdb protocol. (#63705)

* Apply changes on wasm using sdb protocol.

* conflict

* Merge conflict.

* Fix merge

* Fix compilation error.

* Fixed IsFloatPositiveZero from returning 'true' on non-constant double operands (#64083)

* Fixed IsFloatPositiveZero from returning 'true' on non-constant double operands

* Update src/coreclr/jit/gentree.h

Co-authored-by: Egor Bogatov <[email protected]>

Co-authored-by: Egor Bogatov <[email protected]>

* Ensure several helper intrinsics are correctly imported and handled (#63972)

* Ensure several helper intrinsics are correctly imported and handled

* Ensure that Sum for TYP_INT/UINT on Arm64 is correctly handled

* Respond to PR feedback and ensure ExtractMostSignificantBits for Vector64<int/uint> on Arm64 also uses AddPairwise

* Applying formatting patch

* Ensure the clsHnd is correct

* Fix the remaining musl failures

* Ensure that we aren't sign-extending TYP_BYTE (System.SByte) for ExtractMostSignificantBits

* Ensure an assert is correct on x64

* Ensure Vector64<int/uint>.Dot on Arm64 uses AddPairwise, not AddAcross

* Apply formatting patch

* RegexNode cleanup (#64074)

No functional changes, just code cleanup:
- Move node types into a RegexNodeKind enum
- Rename some of the kinds to make them more descriptive
- Rename node.Next to node.Parent to better describe its purpose
- Add a bunch of comments about node kinds

* Refactor optimizing morph for commutative operations (#63251)

* Create "fgOptimizeCommutativeArithmetic"

And just move code from "fgMorphSmpOp" to it.

Just one diff: better comma throw propagation in an ILGEN method.

* Refactor the function

Split it into specialized variants for each operator,
delete redundant code, fix up one case of wrong typing
for a constant in the MUL -> SHIFT optimization.

One CSE diff due to different VNs because of the typing
change for the constant (int -> long).

Many text diffs: "mov x3, 5" => "mov w3, 5".

* Do not set GTF_NO_CSE for sources of block copies (#63462)

It is not necessary, the compiler fully supports locals
on the RHS of a struct assignment. Not marking these results
in a CQ improvement, from struct (including SIMD) CSEs and
global constant propagation into promoted fields.

* Handle embedded assignments in copy propagation (#63447)

* Clean things up a little

Delete redundant conditions, use "LclVarDsc*", rename locals for clarity.

* Delete a redundant condition

For actual def nodes, GTF_VAR_CAST will never be set, it is
only set in "optNarrowTree" for uses.

For "def nodes" that are actually uses (parameters), the VNs
will never match anyway.

* Handle embedded assignments in copy propagation

Previously, as the comments in copy propagation tell us, it
did not handle "intervening", or not-top-level definitions of
locals, instead opting to maintain a dedicated kill set of them.

This is obviously a CQ problem, but also a TP one, as it meant
there had to be a second pass over the statement's IR, where
the definitions would be pushed on the stack.

This change does away with that, instead pushing new definitions
as they are encountered in execution order, and simultaneously
propagating on uses. Notably, this means the code now needs to
look at the real definition nodes, i. e. ASGs, not the LHS locals,
as those are encountered first in canonical execution order, i. e.
for a tree like:

```
  ASG
    LCL_VAR V00 "def"
    ADD
      LCL_VAR V00
      LCL_VAR V00
```

Were we to use the "def" as the definition point, we would wrongly
push it as the definition on the stack, even as the assignments
itself hasn't happened yet at that point.

There are nice diffs with this change, all resulting from unblocked
propagations, and mostly coming from setup arguments under calls.

* Simplify optIsSsaLocal

* Update format script permissions so it can be called on Unix systems directly. (#64107)

* Revert "Enable System.Text.Json tests on netfx (#63803)" (#64108)

This reverts commit 34794bc5f2bcdbaa9057bb07b8764e2bb6a411a2.

* Make ApiCompat.proj incrementally buildable (#64037)

* Make ApiCompat.proj incrementally buildable

In https://github.com/dotnet/runtime/pull/64000, I noticed that ApiCompat.proj never builds incrementally. Even though the RunApiCompat target has Inputs and Outputs, those aren't defined too late inside the target to have any effect. Moving them out and declare the generated response file as an output.

Also simplifying some msbuild logic and renaming some properties as underscore prefixes in project files don't make sense if the property isn't reserved in any way.

* Update ApiCompat.proj

* Remove enable drawing on unix switch (#64084)

* Remove enable drawing on unix switch

* Update some tests and not run tests that need Drawing on non Windows

* PR Feedback, just turn off the switch

* Address-expose locals under complex local addresses in block morphing (#63100)

* Handle complex local addresses in block morphing

In block morphing, "addrSpill" is used when the destination or source
represent indirections of "complex" addresses. Unfortunately, some trees
in the form of "IND(ADDR(LCL))" fall into this category.

If such an "ADDR(LCL)" is used as an "addrSpill", the underlying local
*must* be marked as address-exposed. Block morphing was using a very
simplistic test for when that needs to happen, essentially only recognizing
"ADDR(LCL_VAR/FLD)". But it is possible to have a more complicated pattern
as "PrepareDst/Src" uses "IsLocalAddrExpr" to recognize indirect stores
to locals.

Currently it appears impossible to get a mismatch here as morph transforms
"IND(ADD(ADDR(LCL_VAR), OFFSET))" into "LCL_FLD" (including for TYP_STRUCT
indirections), but this is a very fragile invariant. Transforming TYP_STRUCT
GT_FIELDs into GT_OBJs instead of GT_INDs breaks it, for example.

Fix this by address-exposing the local obtained via "IsLocalAddrExpr".

* Add a TODO-CQ for LCL_FLD usage

* [Group 2] Enable nullable annotations for `Microsoft.Extensions.DependencyInjection` (#63836)

* Annotate src

* Update ResolverBuilder.Build

* Update RunOnEmptyStackCore

* ILEmitResolverBuilderContext constructor

* Remove setter

* Add assert

* Enable nullable annotations for Microsoft.Extensions.Configuration.UserSecrets (#63700)

* [mono] Cleanup trailing whitespace. (#64112)

* Delete `GT_DYN_BLK` (#63026)

* Import GT_STORE_DYN_BLK directly

* Delete GT_DYN_BLK

* DynBlk -> StoreDynBlk

* Add some tests

* Mark tests Pri-1

* Rebase and fix build

* Bring back the odd early return

* Ignore conversion exceptions during dictionary construction (#63792)

* Extract SuperPMI into a separate component (#64035)

Allows building the runtime without SPMI.

`build.cmd clr` will still build SPMI.
`build.cmd clr.native` will still build SPMI.
`build.cmd clr.runtime` will no longer build SPMI.

This is mostly motivated by NativeAOT subset builds where SPMI contributes to 10% of the native build time (nativeaot CorecLR subset builds pretty quickly compared to full CoreCLR).

* Add COMWrappers to crossgen (#63969)

* pipelines: Add wasm jobs (#64109)

* Fixing update issue with multivalued properties #34267 (#56696)

* Add custom attribute test

* Adding test demonstrating issue #34267

* Solution for issue #34267

Replacing all values in property with the new collection, instead of just
appending new values, leaving old values in place.

* Incorporate review feedback

Changing the variable name

* Relax assert in ApplyEditAndContinue (#64132)

Fixes #64070

* Disable NJulianRuleTest test crashing in CI (#64142)

* Updating unit tests for DirectoryServices.AccountManagement (#56670)

Removing old, redundant unit tests that were actually never executed

Migrating old tests to new test infrastructure with configurable LDAP/AD
connections

* Fix MultiByteToWideChar call in pal (#64146)

* Extra tests for assembly name parser. (#64022)

* Dead code in native assembly name parsing

* disallow `\u` escaping in assembly names

* misc cleanup

* forward slash is illegal escaped or not

* ignore "language" attribute in assembly name ("culture" must be used)

* duplicate attributes are ok if unrecognized (just add tests)

* drop support for "custom" blob attribute

* drop support for publickey[token]=neutral ("null" must be used)

* ignore unknown assembly name attributes in mono (compat)

* disallow \0 anywhere in the assembly name

* disallow \0 in assembly names on mono (compat)

* only check for embedded nulls when parsing

* fix mono build

* make GCC happy

* couple test scenarios for publickey vs. publickeytoken (CoreRT parser might trip on these)

* produce errors on duplicate known attributes in mono

* Dispose LdapConnections used by ValidateCredentials (#62036)

Ensure that cached LdapConnection instances created by
PrincipalContext.ValidateCredentials are disposed when
the corresponding PrincipalContext is disposed.

Fix #62035

* Add runtime support for `ref` fields (#63985)

* Add mono and coreclr runtime support for ref fields

* Update Reflection.Emit tests to validate ref fields.

Add test for TypedReference as a ref field.

* Spmi replay asmdiffs mac os arm64 (#64119)

* Split unix-arm64 into linux-arm64 and osx-arm64 in src/coreclr/scripts/superpmi-replay.proj

* Split unix-arm64 into linux-arm64 and osx-arm64 in src/coreclr/scripts/superpmi-asmdiffs.proj

* Add all subdirectories of $(SuperPMIDirectory) as PMIPATH in src/coreclr/scripts/superpmi-collect.proj

* Update NativeAOT codegen and Crossgen2 for CreateSpan (#63977)

- Make sure FieldRVA pointers remain aligned as required by the code generator
  - Use the same Packing Size approach as the IL Linker will use (See jbevain/cecil#817 for details)
  - Compilers that generate CreateSpan will need to follow that trick to be compatible with rewriters.
- Provide ECMA spec augment describing packing size detail

* Add alignment to mapped field stream (#63305)

* Align MappeFieldDataStream at 8 byte boundary

* Add test to verify that the mapped field rva data blob is aligned to ManagedPEBuilder.MappedFieldDataAlignment

* Only align when the mapped field data is of size not equal to 0

* Implement hash and HMAC stream one shots 

This implements hashing and HMAC statics for streams. Additionally,
"LiteHmac" and "LiteHash" were introduced. The existing HMAC and hash
provider functionality do some bookkeeping we don't need for resetting.
Since we do not need to use these hash handles after the digest has
been finalized, resetting is unnecessary work. For HMAC, that also means
keeping a copy of the key around for some implementations which we don't
need to do.

The LiteHash and LiteHmac types are implemented as structs with a common
interface. To avoid boxing, generics are used and constrained to the interface
where possible.

The Browser implementation just defers to the existing HashDispenser rather
than do anything novel.

The HashProviderCng is somewhat specialized in its ability to reset. It did
up-front check to determine if the platform supported reusable hash providers,
and further had a single implementation for HMAC and Digests. The current
Lite hash design requires that they remain separate types.

* Title and message resources should be enforced to exist to prevent printing empty messages (#64151)

Sync ILLink.Shared folder with the latest version in dotnet/linker main branch

List of changes include:
- Enforce title and message resources to exist to prevent printing empty messages
- All diagnostics produced by linker now have a DiagnosticId, a title and a message
- Schema for xml link attributes file

- Added a readme file to the ILLink.Shared project to keep track of the commit is being used from dotnet/linker

* Allow generating Dwarf version 5 (#63988)

Contributes to https://github.com/dotnet/runtimelab/issues/1738.

* Re-enable failing long path test (#64113)

* Port MD4 managed implementation from mono/mono (#62074)

Porting MD4 managed implementation from mono/mono (MD4.cs and MD4Managed.cs). 
  
It adds:  
- an internal class in the System.Net.Security with a single HashData method for now;  
- a set of related MD 4 unit tests to System.Net.Security.Unit.Tests project.

* Fix one source of perf regression in GCHeap::Alloc. This impacts the System.Collections.CtorFromCollectionNonGeneric<Int32> family of benchmarks. (#64091)

These benchmarks manage to make GCHeap::Alloc into a hotspot, so the call to IsHeapPointer() at the end matters for performance.

* Add blsr (#63545)

* Fix FileSystemAclExtensions.Create when passing a null FileSecurity (#61297)

* Make FileSecurity parameter nullable.

* Add missing ArgumentException message for FileMode.Append.

* Refactor tests to ensure FileSecurity is tested with all FileMode and FileSystemRights combinations. Separate special cases.

* Remove exception that throws when FileSecurity is null.
Ensure we have logic that can create a FileHandle when FileSecurity is null.
Fix bug where FileShare.Inheritable causes IOException because it is being unexpectedly passed to the P/Invoke (it should just be saved in the SECURITY_ATTRIBUTES struct).
Add documentation to mention this parameter as optional.
Ensure all exceptions match exactly what we have in .NET Framework, with simpler logic.

* Address suggestions

Co-authored-by: carlossanlop <[email protected]>

* Tune FP CSEs live across a call better (#63903)

The problem was that the comparison of a weighted refcount,
which usually has the order of hundreds or tens, with a small
digit like "4" was too weak and missed some cases where we
were still trying to CSE cheaps floats across calls and ending
up with lots of stack shuffling.

Fix this by using different tuning parameters, namely the costs
estimated for the uses and defs (increase them to account for
the spills and reloads).

* [main] Update dependencies from dotnet/arcade dotnet/icu dotnet/xharness dotnet/emsdk (#64098)

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

* Update zip extraction to never throw any exceptions when the LastWriteTime update fails (#63912)

* Use kebab-case in FB automation labels (#64048)

* Onboard new Triage & PR Boards (#64198)

* Exclusively use GitHub teams for Libraries area mentions (#64199)

* Reduce buffer size used in XmlReader when using Async mode (#63459)

The current choice of AsyncBufferSize resulted in the character buffer in the XmlTextReader being allocated on the Large Object Heap (LOH)

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

* Ignoring leading dot when comparing cookie domains (#64038)

* ignoring leading dot when comparin cookie domain

* Simplify cookie comparing logic to equality and moving it to CookieComparer to fix the build

* Domain comparing optimizarion and more unit tests

* small check optimization

* Renaming method

* Add missing handle function enter/return macros (#64061)

The mono_field_static_get_value method uses a handle, but did not set up
enter/exit macros properly, so this handle was leaked.

Some code in Unity calls this embedding API method pretty often, which
can lead to the mark stack overflowing in the GC code.

* Drop support for .NET 5 SDK (#64186)

We had to duplicate a lot of Microsoft.NET.ILLink.targets logic.

* Implement IEquatable<T> on value types overriding Equals (and enable CA1066/1077) (#63690)

* [mono] Temporarily disable two tests that fail on arm64 LLVM FullAOT. (#64180)

* Delete stale reference in System.Drawing.Primitives (#64202)

* Respond to feedback in GenerateMultiTargetRoslynComponentTargetsFile (#63943)

* Respond to feedback in GenerateMultiTargetRoslynComponentTargetsFile

Two small follow up changes from #58446

- Fix a type-o that breaks incremental build. Forgot to use MSBuild property syntax
- Instead of having the infrastructure hard-code removing 'Abstractions', packages can set their own Disable source gen property name.

* PR feedback

* Use the static HashData(Stream) method in more places

* Add executable bit to tizen sh files (#64216)

* Bump Intellisensense package version to latest from `dotnet7-transport` (#63352)

* Ensure that we aren't accidentally generating instructions for unsupported ISAs (#64140)

* Assert that the ISA of the set intrinsic ID is supported

* Ensure gtNewSimdCmpOpAllNode and gtNewSimdCmpOpAnyNode don't generate AVX2 instructions when not supported

* Ensure codegen for Vector128.Dot when SSSE3 is disabled is correct

* Update src/coreclr/jit/hwintrinsiccodegenarm64.cpp

Co-authored-by: Jan Kotas <[email protected]>

* Ensure Vector256.Sum has a check for AVX2

Co-authored-by: Jan Kotas <[email protected]>

* Don't reference .NETFramework shims in libraries product or test composition (#64193)

* Don't reference .NETFramework shims

Stop referencing .NETFramework shims in libraries ref or source projects as those are supplementary and shouldn't impact the product composition.

* [Android][libs] Enable Internal.Console.Write in System.Private.CoreLib (#63949)

* [Android][libs] Enable Internal.Console.Write in System.Private.CoreLib

* [docs] Add debugging System.Private.CoreLib Internal.Console.Write

* Elaborate on debugging corelib log

* Address feedback

* Install v8 and Prebuild wasm (#64100)

* Port Mono to Raspberry Pi, ship as new linux-armv6 RID (#62594)

* Initial ARMv6 arch addition. Builds mono runtime, not CoreCLR (Mono already supports the CPU arch subset used by Raspberry Pi, whilst porting CoreCLR to e.g. VFPv2 would be major work)
* Build small clr subset on ARMv6, it's needed for SDK and we want to check it works

* Fix remote unwind (#64220)

The _OOP_find_proc_info was setting only a couple of members of the
unw_dyn_info_t instance on stack. So the remaining ones had random
values. The load_offset was a recently added member to the struct.
When we have updated libunwind, this change came in. The load_offset was
random and that has broken unwindign as this offset is subtracted from
the IP when looking up unwind info.

The fix clears the whole struct. I have verified that the issue we had no
longer happens with the fix.

* Put back FindCaseSensitivePrefix regex alternation support (#64204)

* Put back FindCaseSensitivePrefix alternation support

* Fix the bug from the initial version, and add more comments

* Update tests to expect RemoteExecutor to check exit code (#64133)

* update generation_allocation_size correctly for SIP regions (#64176)

SIP regions need to update the corresponding generation's generation_allocation_size and since this can be more than 1 gen older than the region's gen, we need to make all generation's alloc size get updated.

* Android remove backward timezones (#64028)

Fixes #63693

It was discovered that Android produces duplicate TimeZone DisplayNames among all timezone IDs in GetSystemTimeZones. These duplicate DisplayNames occur across TimeZone IDs that are aliases, where all except one are backward timezone IDs.

If a name is changed, put its old spelling in the 'backward' file

From the Android TimeZone data file tzdata, it isn't obvious which TimeZone IDs are backward (I find it strange that they're included in the first place), however we discovered that on some versions of Android, there is an adjacent file tzlookup.xml that can aid us in determining which TimeZone IDs are "current" (not backward).

This PR aims to utilize tzlookup.xml when it exists and post-filter's the Populated TimeZone IDs in the AndroidTzData instance by removing IDs and their associated information (byteoffset and length) from the AndroidTzData instance if it is not found in tzlookup.xml. This is using the assumption that all non-backward TimeZone IDs make it to the tzlookup.xml file.

This PR also adds a new TimeZoneInfo Test to check whether or not there are duplicate DisplayNames in GetSystemTimeZones

* Update main branding to preview2 (#64219)

* Catch UnicodeEncodeErrors (#64251)

* Make XmlSerializer.Generator targets incremental (#64191)

* Make XmlSerializer.Generator targets incremental

Adding inputs and outputs to make XmlSerializer.Generator incremental

* Make sure that shared memory object name meets the length requirements (#64099)

Co-authored-by: Stephen Toub <[email protected]>

* Fix PAL_wprintf for wide characters (#64181)

* [main] Update dependencies from dotnet/runtime dotnet/llvm-project (#64205)

* Update dependencies from https://github.com/dotnet/runtime build 20220123.5

Microsoft.NETCore.ILAsm , Microsoft.NETCore.DotNetHostPolicy , Microsoft.NETCore.DotNetHost , Microsoft.NETCore.App.Runtime.win-x64 , System.Runtime.CompilerServices.Unsafe , runtime.native.System.IO.Ports , Microsoft.NET.Sdk.IL , System.Text.Json
 From Version 7.0.0-alpha.1.22066.4 -> To Version 7.0.0-alpha.1.22073.5

* Update dependencies from https://github.com/dotnet/llvm-project build 20220123.1

runtime.win-x64.Microsoft.NETCore.Runtime.ObjWriter , runtime.win-arm64.Microsoft.NETCore.Runtime.ObjWriter , runtime.osx.10.12-x64.Microsoft.NETCore.Runtime.ObjWriter , runtime.osx.11.0-arm64.Microsoft.NETCore.Runtime.ObjWriter , runtime.linux-x64.Microsoft.NETCore.Runtime.ObjWriter , runtime.linux-musl-x64.Microsoft.NETCore.Runtime.ObjWriter , runtime.linux-musl-arm64.Microsoft.NETCore.Runtime.ObjWriter , runtime.linux-arm64.Microsoft.NETCore.Runtime.ObjWriter
 From Version 1.0.0-alpha.1.22070.1 -> To Version 1.0.0-alpha.1.22073.1

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

* Delete unused ApiCompat baseline files (#64190)

* Delete unused ApiCompat baseline files

* Delete ApiCompatBaseline.netfx.netstandardOnly.txt

* Remove manual .NETFramework baseline validation

* Delete ApiCompatBaseline.netcoreapp.netfx461.ignore.txt

* Delete ApiCompatBaseline.netcoreapp.netfx461.txt

* Improve Regex handling of anchors (#64177)

* Improve Regex handling of anchors

- Extend search for leading anchor to support alternations.  This means that an expression like `^abc|^def` will now observe the leading `^` whereas previously it didn't.
- Add a FindFirstChar optimization that jumps to the right position for a pattern that matches a computeable max length and ends with an end anchor.

* Address PR feedback

* Add the exception set for `ObjGetType` (#64106)

* Model NRE for ObjGetType

* Add tests

* [ILVerify] Fix casting check for arrays of generic parameters with class constraints (#64259)

Fixes #63999

* Use lower call count threshold for tiering in debug builds (#60945)

* Use lower call count threshold for tiering in debug builds

To exercise more paths during tests, see https://github.com/dotnet/runtime/pull/60886

* Skip tests using AsyncIO in FileSystemAclExtensionsTests where it's not supported (#64212)

The mono runtime does not yet support AsyncIO on Windows and there were some tests failing on CI because of it.
Fixes #64221

* Correct JsonNode.Root doc (#64238)

* Take ARMv6 out of PlatformGroup All (#64267)

* Take ARMv6 out of PlatformGroup All, CoreCLR assumes this means full support

Co-authored-by: Alexander Köplinger <[email protected]>

* Only send to Helix for rolling build, due to small Helix queue (#64274)

* Add ref field runtime feature indication (#64167)

* Add ref field runtime feature indication

Co-authored-by: Stephen Toub <[email protected]>

* Faster IndexOf for substrings (#63285)

* Improve "lastChar == firstChar" case, also, use IndexOf directly if value.Length == 1

* Try plain IndexOf first, to optimize cases where even first char of value is never met

* add 1-byte implementation

* copyrights

* fix copy-paste mistake

* Initial LastIndexOf impl

* More efficient LastIndexOf

* fix bug in Char version (we need two clear two lowest bits in the mask) & temporarily remove AdvSimd impl

* use ResetLowestSetBit

* Fix bug

* Add two-byte LastIndexOf

* Fix build

* Minor optimizations

* optimize cases with two-byte/two-char values

* Remove gotos, fix build

* fix bug in LastIndexOf

* Make sure String.LastIndexOf is optimized

* Use xplat simd helpers - implicit ARM support

* fix arm

* Delete \

* Use Vector128.IsHardwareAccelerated

* Fix build

* Use IsAllZero

* Address feedback

* Address feedback

* micro-optimization, do-while is better here since mask is guaranteed to be non-zero

* Address feedabc

* Use clever trick I borrowed from IndexOfAny for trailing elements

* give up on +1 bump for SequenceCompare

* Clean up

* Clean up

* fix build

* Add debug asserts

* Clean up: give up on the unrolled trick - too little value from code bloat

* Add a test

* Fix build

* Add byte-specific test

* Fix build

* Update IndexOfSequence.byte.cs

* [main] Update dependencies from dotnet/arcade dotnet/xharness dotnet/icu dotnet/hotreload-utils dotnet/llvm-project (#64265)

* Update dependencies from https://github.com/dotnet/arcade build 20220124.13

Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.Build.Tasks.Workloads , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.ApiCompat , Microsoft.DotNet.XUnitExtensions , Microsoft.DotNet.GenAPI , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.GenFacades , Microsoft.DotNet.SharedFramework.Sdk , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.PackageTesting , Microsoft.DotNet.Helix.Sdk
 From Version 2.5.1-beta.22071.6 -> To Version 2.5.1-beta.22074.13

* Update dependencies from https://github.com/dotnet/xharness build 20220124.1

Microsoft.DotNet.XHarness.CLI , Microsoft.DotNet.XHarness.TestRunners.Common , Microsoft.DotNet.XHarness.TestRunners.Xunit
 From Version 1.0.0-prerelease.22071.1 -> To Version 1.0.0-prerelease.22074.1

* Update dependencies from https://github.com/dotnet/icu build 20220124.5

Microsoft.NETCore.Runtime.ICU.Transport
 From Version 7.0.0-preview.2.22071.2 -> To Version 7.0.0-preview.2.22074.5

* Update dependencies from https://github.com/dotnet/hotreload-utils build 20220124.1

Microsoft.DotNet.HotReload.Utils.Generator.BuildTool
 From Version 1.0.2-alpha.0.22069.1 -> To Version 1.0.2-alpha.0.22074.1

* Update dependencies from https://github.com/dotnet/llvm-project build 20220124.2

runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools , runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk , runtime.linux-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk , runtime.linux-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools , runtime.linux-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk , runtime.linux-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools , runtime.osx.10.12-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk , runtime.osx.10.12-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools
 From Version 11.1.0-alpha.1.22067.2 -> To Version 11.1.0-alpha.1.22074.2

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

* Add CancellationToken to TextReader.ReadXAsync (#61898)

Co-authored-by: Adam Sitnik <[email protected]>
Co-authored-by: Stephen Toub <[email protected]>

* Restrict parallelism in LLVM FullAOT compile, to prevent OOM (#63800)

* Restrict parallelism in FullAOT compile, to prevent OOM

* Reduce parallelism further, due to more OOM

* Moved AssemblyName helpers to managed (#62866)

* Moved ComputePublicKeyToken to managed

* Managed assembly name parsing (adapted from nativeaot)

* Fix for HostActivation failures.

* PR feedback (RuntimeAssemblyName is back to CoreRT + other comments)

* remove AssemblyNameNative::Init form the .hpp

* remove AppX compat ifdef

* renamed instance fields to convention used in C#

* `Argument_InvalidAssemblyName`   should be   `InvalidAssemblyName`. Majority of use is `FileLoadException`.

* remove `this.`

* PR feedback (assign to fileds, bypass properties)

* missed this change in the rebase

* "low-hanging fruit" perf tweaks.

* move one-user helpers to where they are used.

* removed ActiveIssue for #45032

* remove AssemblyNameHelpers.cs form corelib

* Remove the List when detecting duplicates. Support PublicKey.

* whitespace

* Fix managed implementation to match the new tests.

* Some minor cleanup.

* Do not validate culture too early

* PR feedback

* use SR.InvalidAssemblyName

* Report the input string when throwing FileLoadException

* tweaked couple comments

* Disable RegexReductionTests tests on browser

* Fix formatting of resource string where excess arguments are passed (#63824)

* Fix formatting of resource string where excess arguments are passed. #63607

* Fix BuildCharExceptionArgs and ECCurve.Validate

* Fix CA2208

* Fix CA2208. Remove paramName becaus it is in error message

* Code review fixes

* Code review fixes

* Add Regex.Count string overloads (#64289)

* Clarify purpose of PDB Document hashing (#64306)

Fixes #63505

* Fix arm64/PInvoke so that NESTED_ENTRY/NESTED_END labels match. (#64296)

This was exposed by building on arm64 with gcc-12,
wherein the assembler complained about not being able
to evaluate the constant expression for .size for the symbol
on NESTED_END.  Since the symbol on NESTED_END is not
referenced anywhere else in the code base,
I concluded that it was wrong, and NESTED_ENTRY was right.

I have not tested this on anything but arm64 + gcc-12

* When decommitting, leaving one instead of two pages in regions case. (#64243)

* Ensure that canceled Task.Delays invoke continuations asynchronously from Cancel (#64217)

* Add gen folder moving gen projects from src folder (#64231)

* Fix minor typos in GC documentation. (#64298)

* Explicitly specify four subdirectories to use as part of the paths for -pmi_path arguments and expand the paths on a remote machine in src/coreclr/scripts/superpmi-collect.proj (#64308)

* Disable RegexReductionTests on browser (#64312)

* Add UnreachableException (#63922)

* [mono] Recognize new names for Xamarin.iOS etc assemblies (#64278)

They are being renamed in https://github.com/xamarin/xamarin-macios/pull/13847

* Remove usage of codecvt from corerun (#64157)

* Remove usage of codecvt from corerun

* Update src/coreclr/hosts/corerun/corerun.cpp

Co-authored-by: Aaron Robinson <[email protected]>

Co-authored-by: Aaron Robinson <[email protected]>

* Refactor FileStatus.Unix. (#62721)

* Refactor FileStatus.Unix.

- Moves InitiallyDirectory out of FileStatus into FileSystemInfo.
In FileSystemInfo it can be a readonly field making its usage clearer.
And FileStatus can then directly be used to implement some FileSystem methods
without allocating an intermediate FileInfo/DirectoryInfo.

- Treat not exists/exist as initialized states to avoid wrongly assuming
initialized means the file cache is valid, which isn't so when the file does
not exist.

- Use 0 for tracking uninitialized to make default(FileStatus) uninitialized.

* Fix unique VNs for `ADDR`s (#64230)

* Add the test

* Fix unique VNs for ADDRs

They need to keep the exception sets.

* Implemented hierarchy of attributes. (#64201)

* Implemented hierarchy of attributes.

* Shortened.

* Fixed overlooked test naming and simplified.

* Partial refactor.

* Update the managed type system to more gracefully fail when calling a varargs method. (#64286)

* Update the managed type system to more gracefully fail when calling a varargs method.

* Use ThrowHelper instead of manually throwing the exception.

* Update src/coreclr/tools/Common/TypeSystem/Ecma/EcmaSignatureParser.cs

Co-authored-by: Jan Kotas <[email protected]>

* [mono] Add some missing Internal.Runtime.CompilerServices.Unsafe intrinsics. (#64314)

* Remove usage of FEATURE_CORESYSTEM (#63850)

* Remove usage of FEATURE_CORESYSTEM from coreclr.

* [main] Update dependencies from dotnet/arcade dotnet/runtime-assets (#64331)

* Update dependencies from https://github.com/dotnet/arcade build 20220125.6

Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.Build.Tasks.Workloads , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.ApiCompat , Microsoft.DotNet.XUnitExtensions , Microsoft.DotNet.GenAPI , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.GenFacades , Microsoft.DotNet.SharedFramework.Sdk , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.PackageTesting , Microsoft.DotNet.Helix.Sdk
 From Version 2.5.1-beta.22074.13 -> To Version 2.5.1-beta.22075.6

* Update dependencies from https://github.com/dotnet/runtime-assets build 20220125.1

Microsoft.DotNet.CilStrip.Sources , System.ComponentModel.TypeConverter.TestData , System.Drawing.Common.TestData , System.IO.Compression.TestData , System.IO.Packaging.TestData , System.Net.TestData , System.Private.Runtime.UnicodeData , System.Runtime.Numerics.TestData , System.Runtime.TimeZoneData , System.Security.Cryptography.X509Certificates.TestData , System.Text.RegularExpressions.TestData , System.Windows.Extensions.TestData
 From Version 7.0.0-beta.22060.1 -> To Version 7.0.0-beta.22075.1

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

* Fixes bad log method generation in certain cases. (#64311)

In certain cases when developer by mistake places ILogger, Exception, or LogLevel in the message template,  the code generator will produce the expected warning and makes sure the code will indeed compile and run correctly.

Prior to this fix, the code generator would fail to compile with when either of ILogger, Exception or LogLevel were placed in message template incorrectly.

Fixes #64310

* Fix IsMutuallyAuthenticated on Linux and OSX (#63945)

* WIP - prepared a failing test

* Fix IsMutuallyAuthenticated on Linux

* Fix failing unit tests

* Minor cleanup

* Port changes to OSX

* Fix comment

* Invoke cert selection inline, don't allocate new credentials on Linux/OSX

* Fix tests on OSX

* Code review feedback

* Move tests to separate file

* Fix build

* Fix Failing tests

* Support {Last}IndexOfAny with sets after {lazy} loops (#64254)

When emitting backtracking loops, the loop consumes as much and then backtracks through the consumed input.  Rather than doing this one character by one character, we previously added use of LastIndexOf to search for the next place the literal after the loop matches.  We can also augment that to use IndexOfAny to search for a small set that comes after a loop instead of a literal.

Similarly when emitting backtracking lazy loops, rather than consuming one character and trying the rest of the expression and then consuming another character and trying the rest of the expression, we previously added an optimization to use IndexOf{Any} to find the next possible location of a match based on the literal that comes after the lazy loop.  And we can similarly augment that to support a small set after the lazy loop.

This is particularly helpful for IgnoreCase, as we're on a path to replacing literals with sets that contain all equivalent casings of that character.

* Fix race conditions in SystemEvents shutdown logic (#62773)

* Fix race conditions in SystemEvents shutdown logic

When the application is terminated through Restart Manager the event broadcasting window will get the `WM_CLOSE` message. The message gets handled by passing it to `DefWndProc` which calls `DestroyWindow` on the window itself thus making the window handle invalid. The `Shutdown` method expects the window handle to be valid to post `WM_QUIT` message to terminate the thread running the message loop but that's no longer possible under these conditions.

Additionally there's second race condition with the `s_eventThreadTerminated` event that is created during shutdown and set conditionally. A race condition between the threads could cause it to be created when the window message thread is already shutting down and thus it would never be set. Waiting for it in the `Shutdown` method would be cause a deadlock. This thread is also completely unnecessary since a `Join` is performed on the thread itself.

The fix has several changes that act together:
- `s_eventThreadTerminated` event is removed completely in favor of only relying on `Thread.Join`
- `WM_DESTROY` message is detected (which happens as a result of WM_CLOSE calling `DefWndProc` which in turn calls `DestroyWindow`) and handled by shutting down the message loop thread
- The message loop itself is rewritten to use standard `GetMessageW` loop. The reasoning on why it was not used seems not to be valid anymore since AppDomain shutdowns are performed differently

* Add unit test.

* Add braces

* Add marshaller for TypeLoad failure cases (#64317)

This is marshaller used when there incorrect configuration of marshaller applied to fields mostly

* Add additional loop table asserts (#64126)

1. Assert that top-level loops are basic block disjoint
2. Assert LPFLG_ITER related flags are legal

In addition:
1. Create a `optClearLoopIterInfo` phase to clear various bits in the loop
table that are known to no longer be valid, to prevent bad asserts or JitDump
output on their values.
2. Move the EndPhase call in Phase::PostPhase happens early, not late.
This causes any subsequent asserts due to post-phase checking to be
marked with the correct phase, in cases where there was a nested phase
executed (such as liveness re-computation).
3. Convert PHASE_INSERT_GC_POLLS to use EndPhase checking
4. Convert fgDetermineFirstCodeBlock to return a PhaseStatus
5. Some minor cleanup in optUpdateLoopsBeforeRemoveBlock()
(this was extracted from some bigger changes)

* Moved AssemblyName helpers to managed (part 2) (#63915)

* implement GetAssemblyName via dynamic call to MetadataReader

* A few more file-locking tests.

* fix #28153

* no need for version when getting MetadataReader

* rename the argument to match AssemblyName

* perf tweaks

* use memory-mapped file to read metadata

* adjust tests for the new implementation

* use "bufferSize: 1" when stream is going to be mapped.

* null-conditional operator.

* do Dispose before re-throwing

* get rid of the platform-specific/native stuff

* remove assemblyname.hpp

* remove `VerifyIsAssembly()`

* PR feedback

* put back gStdMngIEnumerableFuncs and the others

* Fix several bugs in NullabilityInfoContext. (#64143)

* Fix several bugs in NullabilityInfoContext.

* Reverse ASG(CLS_VAR, ...) (#63957)

This helps with register allocation. Consider:
```
***** BB01
STMT00001 ( 0x000[E-] ... ??? )
N003 ( 18, 10) [000003] -ACXG-------              *  ASG       ref    $c0
N001 (  3,  4) [000002] ----G--N----              +--*  CLS_VAR   ref    Hnd=0x8fec230 Fseq[hackishFieldName]
N002 ( 14,  5) [000000] --CXG-------              \--*  CALL      ref    CscBench.GetMscorlibPathCore $c0
```
The rationalizer will rewrite it to what is effectively:
```
***** BB01
STMT00001 ( 0x000[E-] ... ??? )
N004 ( 18, 12) [000003] -ACXG---R---              *  ASG       ref
N003 (  3,  6) [000002] n---G--N----              +--*  IND       ref
N002 (  1,  4) [000006] H-----------              |  \--*  CLS_VAR_ADDR byref  Hnd=0x8fec230
N001 ( 14,  5) [000000] --CXG-------              \--*  CALL      ref    CscBench.GetMscorlibPathCore
```
And the final LIR will look like:
```
               [000006] ------------                 IL_OFFSET void   INLRT @ 0x000[E-]
N001 (  3,  4) [000002] ----G--N----         t2 =    CLS_VAR_ADDR byref  Hnd=0x8fec230
N002 ( 14,  5) [000000] --CXG-------         t0 =    CALL      ref    CscBench.GetMscorlibPathCore $c0
                                                  /--*  t2     byref
                                                  +--*  t0     ref
N003 ( 18, 10) [000003] -A-XG-------              *  STOREIND  ref
               [000007] ------------                 IL_OFFSET void   INLRT @ 0x00A[E-]
N001 (  0,  0) [000004] ------------                 RETURN    void   $180
```
Since this store must use a barrier, `CLS_VAR_ADDR` won't be contained and will have to be evaludated
separately. Because its value is live across a call, it'll get spilled and reloaded. Reversing the ASG
fixes the problem:
```
------------ BB01 [000..00B) (return), preds={} succs={}
               [000006] ------------                 IL_OFFSET void   INLRT @ 0x000[E-]
N001 ( 14,  5) [000000] --CXG-------         t0 =    CALL      ref    CscBench.GetMscorlibPathCore $c0
N002 (  3,  4) [000002] ----G--N----         t2 =    CLS_VAR_ADDR byref  Hnd=0x8fec230
                                                  /--*  t2     byref
                                                  +--*  t0     ref
N003 ( 18, 10) [000003] -A-XG-------              *  STOREIND  ref
               [000007] ------------                 IL_OFFSET void   INLRT @ 0x00A[E-]
N001 (  0,  0) [000004] ------------                 RETURN    void   $180
```

* Fixes a few issues for dprintf on OSX (#64076)

* [Codespaces] Make it possible to run wasm samples in the browser (#64277)

With these changes, running the following in the Codespace will open the local browser to a page served from the codespace hosting the WASM sample:

```console
cd src/mono/sample/wasm/browser
make
make run-browser
```


* Set EMSDK_PATH in .devcontainer.json

   We provision Emscripten as part of the devcontainer prebuild.

   Set EMSDK_PATH to allow rebuilding the wasm runtime to work without any additional ceremony

* Install dotnet-serve into .dotnet-tools-global

* [wasm] Don't try to open browser if running in Codespaces

* .devcontainer: add global tools dir to PATH

* .devcontainer: forward port 8000

   This enables running the mono wasm samples in the local browser:

* [wasm] samples: also check for dotnet-serve on the path

   On Codespaces we install dotnet-se…
@ghost ghost locked as resolved and limited conversation to collaborators Feb 19, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
Projects
None yet
Development

Successfully merging this pull request may close these issues.

ARM64: Redundant movs done for zero extend the register
4 participants