Radek Doulik [Fri, 12 Nov 2021 14:34:56 +0000 (15:34 +0100)]
[wasm] Add AppStart task to the bench Sample (#61481)
Measure browser app start times, 2 measurements implemented.
First to measure till the JS window.pageshow event, second to measure
time when we reach managed C# code.
Example ouput:
| measurement | time |
|-:|-:|
| AppStart, Page show | 108.1400ms |
| AppStart, Reach managed | 240.2174ms |
Tanner Gooding [Fri, 12 Nov 2021 04:32:49 +0000 (20:32 -0800)]
Implement Narrow and Widen using SIMDAsHWIntrinsic (#60094)
* Moving Narrow to implemented using SIMDAsHWIntrinsic
* Moving Widen to implemented using SIMDAsHWIntrinsic
* Fix some handling of Narrow/Widen hwintrinsics
* Ensure that Vector.Widen is still treated as an intrinsic
* Fixing NI_VectorT128_WidenUpper on ARM64 to actually call gtNewSimdWidenUpper
anthonycanino [Fri, 12 Nov 2021 01:41:39 +0000 (17:41 -0800)]
XARCH: Remove redudant tests for GT_LT/GT_GE relops. (#61152)
* XARCH: Remove redudant tests for GT_LT/GT_GE relops.
We can now optimize cases such as `(x + y < 0)` or `for (int x = v; x >= 0; x--)`
using the flag tracking logic during the emit stage. Notably, cases that
would generate...
```
add reg0, reg1
test reg0, reg0
jge LABEL
```
now transform to
```
add reg0, reg1
jns LABEL
```
This transform is valid for signed GE and signed LT only.
* Add a few asserts related to flag reuse optimizations.
Tanner Gooding [Thu, 11 Nov 2021 23:33:25 +0000 (15:33 -0800)]
Updating src/tests/Interop/PInvoke/Generics/GenericsNative.Vector* to annotate individual methods as requiring AVX (#61259)
* Updating src/tests/Interop/PInvoke/Generics/GenericsNative.Vector* to annotate individual methods as requiring AVX
* Always use __m256i on XARCH
Kevin Jones [Thu, 11 Nov 2021 21:42:40 +0000 (16:42 -0500)]
Add PEM PKCS#8 and SPKI exports for AsymmetricAlgorithm
Yusuke Ito [Thu, 11 Nov 2021 21:05:31 +0000 (06:05 +0900)]
Add tests for metricseventsource HistogramLimitReached(#60752, #61199) (#61449)
Davis Goodin [Thu, 11 Nov 2021 19:48:08 +0000 (13:48 -0600)]
Enable sourcelink in source-build for '.version' file (#60944)
Bruce Forstall [Thu, 11 Nov 2021 19:41:38 +0000 (11:41 -0800)]
Refine superpmi-replay trigger (#61469)
Don't run if the JIT-EE GUID has changed, since there won't be any collections
to download, so the downloads will fail.
Also update the superpmi-asmdiffs trigger comment.
Elinor Fung [Thu, 11 Nov 2021 16:18:30 +0000 (08:18 -0800)]
Use DllImportGenerator in System.Diagnostics.PerformanceCounter (#61389)
dotnet-maestro[bot] [Thu, 11 Nov 2021 15:48:27 +0000 (16:48 +0100)]
[main] Update dependencies from 5 repositories (#61463)
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Peter Sollich [Thu, 11 Nov 2021 15:02:07 +0000 (16:02 +0100)]
Fix bug where we reference the entry #0 in the pinned plug queue (#60966)
We reference entry #0 in the pinned plug queue even if there are no pinned plugs at all and thus the pinned plug queue contains left-over data from the mark phase.
The fix is to initialize saved_pinned_plug_index to a value that is invalid as a pinned plug queue index, and only use saved_pinned_plug_index as an index if is valid.
Simon Rozsival [Thu, 11 Nov 2021 14:10:34 +0000 (15:10 +0100)]
[Mono] Skip flaky android tests (#61460)
There are connectivity issues on some physical Android devices. We should disable the affected tests until the issue isn't resolved.
Ref #61343
Jakob Botsch Nielsen [Thu, 11 Nov 2021 11:00:35 +0000 (12:00 +0100)]
Some more precise debug info improvements (#61419)
* We were not recording precise info in inlinees except for at IL offset
0 because most of the logic that handles determining when to attach
debug info did not run for inlinees. There are no changes in what the
EE sees since we were normalizing debug info back to the root anyway.
* Propagate debug info even further than just until rationalization, to
make it simpler to dump the precise debug info. This means we create
some more GT_IL_OFFSET nodes, in particular when the inlinee debug
info is valid but the root info is invalid. This is currently
happening for newobj IL instructions when the constructor is inlined.
We generate two statements:
GT_ASG(GT_LCL_VAR(X), ALLOCOBJ(CLS));
GT_CALL(CTOR, GT_LCL_VAR(X))
and the first statement ends up "consuming" the debug info, meaning we
end up with no debug info for the GT_CALL, which eventually propagates
into the inline tree. I have held off on fixing this for now since it
causes debug info diffs in the data reported back to the EE.
The additional nodes in LIR result in 0.15% more memory use and 0.015%
more instructions retired for SPMI over libraries.
There is also a small fix in gtlist.h for GT_BFIZ when
MEASURE_NODE_SIZES is defined.
No SPMI diffs.
Jeremy Koritzinsky [Thu, 11 Nov 2021 08:48:41 +0000 (00:48 -0800)]
Include the "TargetingPack" folder in the mobile apps. (#61432)
Fixes #61322
Fixes #61299
Elinor Fung [Thu, 11 Nov 2021 02:23:47 +0000 (18:23 -0800)]
Clean up tests under Interop/PInvoke/BestFitMapping (#61390)
Andy Ayers [Thu, 11 Nov 2021 01:58:36 +0000 (17:58 -0800)]
JIT: slightly more aggressive tail duplication (#61179)
Catch patterns like the one in #37904 where a trinary compare feeds a
binary compare.
Bruce Forstall [Thu, 11 Nov 2021 00:45:20 +0000 (16:45 -0800)]
Fix CI trigger of superpmi-asmdiffs pipeline (#61444)
Aaron Robinson [Thu, 11 Nov 2021 00:07:10 +0000 (16:07 -0800)]
Fix Array ctor integer widening and add Reflection tests (#61347)
* coreclr/
Make sure integral types respect sign extension during widen operation for Invoke Array ctor.
Remove always false IsStructRequiringStackAllocRetBuf().
* mono/
Create macro define for SPAN_T.
* libraries/
Add tests for Reflection Binder type conversion support during Invoke.
Tomáš Rylek [Thu, 11 Nov 2021 00:02:28 +0000 (01:02 +0100)]
Explicitly mark tests with CLRTestKind=SharedLibrary (#61235)
Previously the Directory.Build.targets script used to automatically
infer that OutputType=Library without a CLRTestKind implies
SharedLibrary. This is however hard to consolidate with the planned
test merging - as the SDK script set OutputType=Library by default,
we need the combination Library+(implicit)BuildAndRun to indicate
the "new-style" [Fact]-based tests. For this reason I propose to
remove this automatic inference and manually fix the handful of tests
that are missing an explicit CLRTestKind=SharedLibrary property.
In light of this description we can theoretically remove the
OutputType=Library specification from all test projects but even if
we decide to do that, I believe it will be easier to do that as a
separate mechanical change, not as part of this relatively small
change that has a different purpose. Additionally in the one case
of the GitHub_22583 regression test, I removed the explicit setting
of GenerateRunScript=false because that's the default.
Fix OutputType=exe in OpenDelegate.csproj
I believe this was a pre-existing bug - previously, with the
special clause regarding SharedLibrary, the test just got silently
skipped because it was considered to be a shared library.
Thanks
Tomas
Larry Ewing [Wed, 10 Nov 2021 23:58:30 +0000 (17:58 -0600)]
Remove dead code (#61427)
Elinor Fung [Wed, 10 Nov 2021 23:27:59 +0000 (15:27 -0800)]
[DllImportGenerator] Initialize by-value out array to default (#61431)
dotnet-maestro[bot] [Wed, 10 Nov 2021 22:30:14 +0000 (17:30 -0500)]
[main] Update dependencies from dotnet/arcade dotnet/icu dotnet/emsdk dotnet/hotreload-utils dotnet/llvm-project (#61365)
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Ankit Jain <radical@gmail.com>
Bruce Forstall [Wed, 10 Nov 2021 21:28:49 +0000 (13:28 -0800)]
Create superpmi-asmdiffs pipeline (#61194)
Create a new `runtime-coreclr superpmi-asmdiffs` pipeline that runs SuperPMI asmdiffs for every change in the JIT directory.
The diffs are run on two platforms: Windows x64 and Windows x86. Linux, and Arm64 and Arm32, asm diffs are done using cross-compilers, as follows:
| Platform | Asm diffs |
| -- | -- |
| Windows x64 | win-x64, win-arm64, linux-x64, linux-arm64 |
| Windows x86 | win-x86, linux-arm |
The resulting summary .md files are uploaded into the pipeline artifacts, one .md file per platform (so, one for the Windows x64 runs and one for the Windows x86 runs). The results are also displayed in "Extensions" page of the AzDO pipeline.
The runs take about 50 minutes to complete (assuming not much waiting for machines).
The asm diffs pipeline is similar to the "superpmi-replay" pipeline, except:
1. It determines what an appropriate baseline JIT would be based on the PR commit and how it merges with the `main` branch. Given this, it downloads the matching baseline JITs from the JIT rolling build artifacts in Azure Storage.
2. It clones the `jitutils` repo and builds the `jit-analyze` tool, needed to generate the summary .md file.
3. It downloads and adds to the Helix machine payload a "portable" `git` installation, as `git diff` is used by `jit-analyze` for analyzing the generated .dasm files of the diff.
4. It collects all the various summary.md files into one per platform on which the runs are done, and publishes that to the artifacts and the `Extensions` page.
5. It only does one replay (asmdiffs) run, not one for each of a set of multiple stress modes.
As part of this implementation,
a. The `azdo_pipelines_util.py` was renamed to `jitutil.py`, and a lot of utility functions from superpmi.py were moved over to it. This was mostly to share the code for downloading and uncompressing .zip files. (There is a slight change to the output from the `superpmi.py download` command as a result.) However, I also moved a bunch of simple, more general helpers, for possible future sharing.
b. `jitrollingbuild.py download` can now take no arguments and download a baseline JIT (from the JIT rolling build Azure Storage location), for the current enlistment, to the default location. Previously, it required a specific git_hash and target directory. There is similar logic in superpmi.py, but not quite the same.
c. The `superpmi.py --no_progress` option was made global, and applied in a few more places. This was necessary because `superpmi.py asmdiffs` will download a coredistools binary from the JIT Azure Storage if one isn't found in the Core_Root folder.
Fixes https://github.com/dotnet/runtime/issues/59445
Elinor Fung [Wed, 10 Nov 2021 21:18:43 +0000 (13:18 -0800)]
Fix inconsistency in p/invoke arguments introduced when switching some to be blittable (#61071)
Tomáš Rylek [Wed, 10 Nov 2021 20:28:35 +0000 (21:28 +0100)]
Baseline two failing tests to make outerloop green again (#61280)
Juan Hoyos [Wed, 10 Nov 2021 20:21:36 +0000 (12:21 -0800)]
Update timeout for sourcebuild (#61436)
Adeel Mujahid [Wed, 10 Nov 2021 19:43:15 +0000 (21:43 +0200)]
Fix common workflow issues (#61027)
Pavel Savara [Wed, 10 Nov 2021 19:00:39 +0000 (20:00 +0100)]
fix lint issue (#61433)
Adeel Mujahid [Wed, 10 Nov 2021 17:22:45 +0000 (19:22 +0200)]
Delete unused mono_unbox_int (#61384)
* Delete unused mono_unbox_int
* Fix gcc step display name
* Match command invocation order
Ankit Jain [Wed, 10 Nov 2021 16:33:33 +0000 (16:33 +0000)]
[wasm] Build improvements (#61276)
Fixes #61067
Fixes #59538
Larry Ewing [Wed, 10 Nov 2021 16:09:24 +0000 (10:09 -0600)]
[wasm][debugger] Correct the endian swapping and string implementation (#61386)
* [wasm][debugger[ Correct the endian swapping and string implementation
Marek Fišera [Wed, 10 Nov 2021 09:20:40 +0000 (10:20 +0100)]
[wasm] Add task marshaling tests. (#61324)
Add various tests for marshaling task to JavaScript promise.
- Sync and async.
- Task and ValueTask.
- Generic and non-generic.
- Successful and failed.
Katelyn Gadd [Wed, 10 Nov 2021 08:47:26 +0000 (00:47 -0800)]
Change WASM direct heap access to use helper functions (#61355)
Direct heap writes via Module.HEAPxx[y] = func(...) are incorrect because the left-hand side (according to spec) is evaluated before the right, so if evaluating func(...) causes the heap to grow, the assignment target becomes a detached buffer and the write goes nowhere, breaking your application. This PR introduces a new set of helper functions for memory reads and writes.
Egor Bogatov [Wed, 10 Nov 2021 06:53:04 +0000 (09:53 +0300)]
[arm64] JIT: Enable CSE/hoisting for "arrayBase + elementOffset" (#61293)
Zoltan Varga [Wed, 10 Nov 2021 02:01:03 +0000 (21:01 -0500)]
[wasm] Allow enums in unmanaged callbacks. (#61377)
Fixes https://github.com/dotnet/runtime/issues/61144.
Ankit Jain [Tue, 9 Nov 2021 23:32:40 +0000 (23:32 +0000)]
InstallWorkload: Use the repo's `nuget.config` as the base for installing manifests (#60699)
Elinor Fung [Tue, 9 Nov 2021 20:28:15 +0000 (12:28 -0800)]
Delete unused test projects (#61348)
Elinor Fung [Tue, 9 Nov 2021 20:27:10 +0000 (12:27 -0800)]
Remove unnecessary DLLIMPORTGENERATOR_ENABLED ifdefs (#61345)
Badre BSAILA [Tue, 9 Nov 2021 19:51:38 +0000 (20:51 +0100)]
Add unit test for variable length encoding HTTP/3 (#60766)
Fixes #51519
Badre BSAILA [Tue, 9 Nov 2021 19:38:32 +0000 (20:38 +0100)]
Implement WebRequest CachePolicy (#60913)
Jakob Botsch Nielsen [Tue, 9 Nov 2021 19:32:14 +0000 (20:32 +0100)]
Start tracking debug info for inlined statements (#61220)
* Refactor IL_OFFSETX into DebugInfo
Remove IL_OFFSETX in favor of a DebugInfo structure. Previously we were
packing extra information into the upper bits of IL_OFFSETX, which are
now separate bit fields on a new ILLocation structure. DebugInfo
contains an ILLocation and also an inline context, which will be used in
the future when tracking debug info inside of inlinees.
Another problem with IL_OFFSETX was that there were several sentinel
values used to describe prologs, epilogs and no mappings. However these
were only used in code-gen, so refactor codegen to track this separately
instead of having to muddle it into IL_OFFSETX. This makes it clearer
what we can expect from IL offsets during JIT.
This change is no-diff and PIN also shows that TP is not negatively
affected; in fact, there seems to be a small TP gain, maybe because we
don't have to handle sentinel values anymore.
* Track debug information in statements from inlinees
Add support for tracking debug information in statements coming from
inlinees. Changes:
* Turn on compDbgInfo in inlinees. We use the implicit boundaries from
the inline root, but we do not use any explicit boundaries. That is,
we do not query the EE for explicit boundaries for the inlinee.
* Create InlineContexts eagerly and use them during import. All
DebugInfo created in the JIT is in a "consistent" state, meaning that
we never see an IL location set without a corresponding inline
context. This was difficult before as InlineContexts would be created
quite late, after the importer for the inlinee had run. We now create
it eagerly and attach it to debug info during importation. Later, when
we figure out whether an inline succeeded or not, we mark it as
succeeded or failed.
* Stop carrying InlineContext around unconditionally in Statement. The
inline context is now only part of the debug info, which may not be
set. Inlining needs the inline context to create new inline contexts
and to check for recursive inlines. Previously it retrieved it from
the inline statement, but due to the above change we now have to get
it from somewhere else. To do this we now keep it unconditionally
together with InlineCandidateInfo so that we can retrieve it later.
* Validate all created debug information when associated with a
statement. This is done by creating a bitvector containing IL
locations that mark the beginning of IL instructions, and validating
that all IL offsets point to these when Statement::SetDebugInfo is
called.
* While we track debug info in statements from inlinees, the runtime
side is still not hooked up. Currently we track the information until
we get to rationalize, where we normalize all debug info back to the
root inserted as GT_IL_OFFSET nodes. The change is free of any diffs
due to this normalization. We also track IL offsets as part of basic
blocks: these are also normalized to be in the root.
SingleAccretion [Tue, 9 Nov 2021 19:12:49 +0000 (22:12 +0300)]
Proper VNs for zeroed structs (#61285)
* Number zero-initialized struct properly
Previously, zero-initialized struct locals were given
a special $VNForZeroMap, which had the nice property
that VNForMapSelect($VNForZeroMap, Field) would always
return zero of the appropriate type. However, the fact
that this VN is not unique meant that it was dangerous
to propagate it, e. g. through copies, which was hidden
by the fact that ApplySelectorsTypeCheck's logic is very
conservative.
This change introduces a new VNFunc to represent zeroed
objects - VNF_ZeroObj, that takes a struct handle as its
argument and is thus free of the aforementioned problem and
can be propagated freely and not treated specially. It
also, of course, retains the ZeroMap's selection property.
There are almost no diffs for this change because of some
other deficiencies in assertion and copy propagation, they
are being/will be fixed separately.
* Fix VNZeroForType's handling of SIMD types
Previously this codepath was reachable, but did not matter as
the returned values were immediately discarded because of the
conservative logic in VNApplySelectorsTypeCheck. This is still
more or less the case, but let's just fix it properly.
Jakob Botsch Nielsen [Tue, 9 Nov 2021 18:23:48 +0000 (19:23 +0100)]
SPMI: Use diffed bytes for jit-analyze and print more info (#61254)
Fix the misleading total bytes displayed when diffing with SPMI. If one
of the JITs encountered missing data, the code bytes would not be
included, while the other JIT could still have it included if it did not
encounter missing data.
Also add more information about missing SPMI data/successful replays
printed. For replays that is useful to be able to gauge whether there is
still ok coverage after a large change. For diffs, we print a warning
for missing SPMI data that the diff summary may be misleading.
Example for a successful replay:
Clean SuperPMI replay (219868 contexts processed)
Example for a replay with missing data:
SuperPMI encountered missing data for 6 out of 27272 contexts
Example warning printed:
Warning: SuperPMI encountered missing data during the diff. The diff
summary printed above may be misleading.
Missing with base JIT: 0. Missing with diff JIT: 6. Total contexts:
27272.
Mike McLaughlin [Tue, 9 Nov 2021 16:31:46 +0000 (08:31 -0800)]
Add System.Diagnostics.StackFrame.GetMethodFromNativeIP API for VS4Mac (#61289)
* Add System.Diagnostics.StackFrame.GetMethodInfoFromNativeIP API for VS4Mac
Issue: https://github.com/dotnet/runtime/issues/61186
Eirik Tsarpalis [Tue, 9 Nov 2021 16:30:26 +0000 (16:30 +0000)]
Ensure MaxBy/MinBy return first element if all keys are null. (#61364)
Adeel Mujahid [Tue, 9 Nov 2021 15:50:46 +0000 (17:50 +0200)]
Add additional steps in gcc validation leg (#61241)
Radek Doulik [Tue, 9 Nov 2021 15:28:52 +0000 (16:28 +0100)]
[wasm] Remove WasmBuildTemplate (#61315)
It is not needed anymore, as the flags and stripping is handled
by msbuild and cmake. The configuration dependent template parameters
are not used anymore.
kronic [Tue, 9 Nov 2021 10:39:57 +0000 (13:39 +0300)]
Convert concatenation string to interpolation for System.Private.Xml (#60057)
* use interpolation string
* fix XmlSerializationReader
* fix new line
* fix new line for XmlSerializationReaderILGen
* review feedback
* review feedback
* fix XmlTextWriter
* fix Compiler
* fix XmlSchemaExporter
* fix XmlSchemas
* fix XmlSerializationReader
* fix XmlSerializationWriter
* fix XmlSerializationWriter
* fix XmlSerializationWriterILGen
* fix QilValidationVisitor
* fix XmlSerializationReaderILGen
* fix XmlQueryOutput
Co-authored-by: kronic <kronic@softland.ru>
Krzysztof Wicher [Tue, 9 Nov 2021 09:36:07 +0000 (10:36 +0100)]
[wasm][aot] Disable (again) `Microsoft.Extensions.Logging.Generators.Roslyn3.11.Tests` failing due to OOM (#61323)
* [wasm] Disable tests failing due to OOM
Microsoft.Extensions.Logging.Generators.Roslyn3.11.Tests
https://github.com/dotnet/runtime/issues/61339
* [wasm] Use special exitcodes when AOT test build fails, and when it gets oom-killed
Co-authored-by: Ankit Jain <radical@gmail.com>
Kevin Jones [Tue, 9 Nov 2021 08:04:25 +0000 (03:04 -0500)]
Provide PEM implementations for AsymmetricAlgorithm.
Now that the Encoding and Primitive assemblies are unified, an implementation
for PKCS#8 and SPKI keys can be provided in the abstract AsymmetricAlgorithm.
Derived types will continue to override these members to provide support
for additional PEM labels.
Jeremy Barton [Tue, 9 Nov 2021 08:02:24 +0000 (00:02 -0800)]
Fix binplacing for (impl) System.Security.Cryptography.Encoding.dll
Kevin Jones [Tue, 9 Nov 2021 07:03:46 +0000 (02:03 -0500)]
Use UTC throughout certificate request tests
Jose Perez Rodriguez [Tue, 9 Nov 2021 04:26:40 +0000 (20:26 -0800)]
Adding Regex source generator to Microsoft.netcore.app.ref pack (#61329)
Eric Erhardt [Tue, 9 Nov 2021 02:18:05 +0000 (20:18 -0600)]
Add instructions for using Codespaces (#60996)
* Add instructions for using Codespaces
* Automate resetting the HEAD to the same commit ID used to build the pre-built container
* - Add notes about testing changes.
- Add 4-core machines
* Revert 4-core change since prebuild doesn't support multiple sku_names.
Andy Ayers [Tue, 9 Nov 2021 01:30:01 +0000 (17:30 -0800)]
JIT: extend redundant relop to handle side effects (#61275)
Handle the case where the side-effecting redundant relop appears
just before the jump tree relop.
Also revamp how we search for related VNs so it can be done as a
search loop.
Bruce Forstall [Tue, 9 Nov 2021 00:07:20 +0000 (16:07 -0800)]
Fix format.py to use jit-format.exe, not jit-format.bat (#61334)
Adjust for https://github.com/dotnet/jitutils/pull/343
Annchous [Mon, 8 Nov 2021 23:05:08 +0000 (02:05 +0300)]
Fix: add missed open curly (#61320)
Michal Strehovský [Mon, 8 Nov 2021 21:55:37 +0000 (06:55 +0900)]
Remove sorting requirement for interface lists (#60541)
Fixes #60454.
Tom McDonald [Mon, 8 Nov 2021 21:12:57 +0000 (13:12 -0800)]
Fix incorrect CCW decoding in GetObjectForCCW (#61193)
* Fix incorrect CCW decoding in GetObjectForCCW
* Fix linux/mac build
Vladimir Sadov [Mon, 8 Nov 2021 19:58:19 +0000 (11:58 -0800)]
Type key hash tweaks. (#61234)
* use HashTypeKey(), remove ComputeHash()
* nonrecursive HashTypeHandle
* remove instrumentation from pendingload.cpp
* two more uses of `ComputeHash()`
* Make GCC happy
* couple tweaks
* unnecessary full fences.
Vladimir Sadov [Mon, 8 Nov 2021 19:34:34 +0000 (11:34 -0800)]
Removing `m_hostAssemblyMap` and ceremony around it (#61292)
* remove m_hostAssemblyMap and ceremony around it
* Removes SHash::AddPhases - support for callouts in hosted scenarios.
* typos
SingleAccretion [Mon, 8 Nov 2021 16:08:09 +0000 (19:08 +0300)]
Fix value numbering of field assignments (#61113)
When value numbering an assignment to a field, VNApplySelectorsAssign
was called twice, first for the field sequence to find the exact
value, then for the heap VN update. This is not correct as the method
expects to be called only for sequences that will end up updating a
map with exact values, as it type checks the store with the helper
VNApplySelectorsAssignTypeCoerce. Usage of VNApplySelectorsAssign
to update the heap ended up meaning that any stores to struct fields
ended up with casts for maps, blocking traversal in VNForMapSelect.
A handful of positive diffs for this commit resulting from more CSEs
and redundant branch optimizations, due to more precise liberal VNs.
dotnet-maestro[bot] [Mon, 8 Nov 2021 15:55:03 +0000 (16:55 +0100)]
[main] Update dependencies from dotnet/runtime dotnet/xharness (#61309)
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
dotnet-maestro[bot] [Mon, 8 Nov 2021 12:05:30 +0000 (13:05 +0100)]
[main] Update dependencies from 10 repositories (#61087)
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Premek Vysoky <premek.vysoky@microsoft.com>
SingleAccretion [Mon, 8 Nov 2021 11:30:55 +0000 (14:30 +0300)]
Enable global constant propagation for GT_LCL_FLD (#61209)
These are leaf nodes without side effects, and we can
sometimes evaluate them in VN, so it does not seem like
there is any reason not to enable propagation for them.
Maxim Lipnin [Mon, 8 Nov 2021 09:11:54 +0000 (12:11 +0300)]
Clean up the documentation for the library testing (#59401)
Radek Doulik [Mon, 8 Nov 2021 08:58:06 +0000 (09:58 +0100)]
[wasm] Add console version of browser-bench sample (#60733)
* [wasm] Add console version of browser-bench sample
Example run:
> v8 --expose_wasm runtime.js -- --run Wasm.Console.Bench.Sample.dll -t Json:non,Exceptions:Inline
console.info: Arguments: --run,Wasm.Console.Bench.Sample.dll,-t,Json:non,Exceptions:Inline
console.debug: MONO_WASM: Initializing mono runtime
console.debug: MONO_WASM: ICU data archive(s) loaded, disabling invariant mode
console.debug: mono_wasm_runtime_ready
fe00e07a-5519-4dfe-b35a-
f867dbaf2e28
console.info: Initializing.....
Benchmark started
Json, non-ASCII text serialize count: 23, per call: 7.565217391304348ms, total: 0.174s
...
Exceptions, TryCatchFilterInline count: 1766666, per call: 4.
301888415806949E-05ms, total: 0.076s
Summary
Json, non-ASCII text serialize: 7.478260869565218ms
Json, non-ASCII text deserialize: 10.789473684210526ms
Exceptions, TryCatchFilterInline: 4.
301888415806949E-05ms
.md
| measurement | time |
|-:|-:|
| Json, non-ASCII text serialize | 7.4783ms |
| Json, non-ASCII text deserialize | 10.7895ms |
| Exceptions, TryCatchFilterInline | 0.0430us |
* Don't generate v8 script for browser project
* Fix option set
* Changes for linux/mac
* Add link to bench sample README
* Pass ARGS to the console version
Add info about filtering and options to the README
* Show how the table will looks like
* Do not sign the assembly
To avoid
CSC : error CS8002: Referenced assembly 'Mono.Options, Version=6.0.0.0, Culture=neutral, PublicKeyToken=null' does not have a strong name.
* Add examples how to run it on windows
* Fix interpolated string
* Improve formatting
* Remove unwanted space
Vlad Brezae [Mon, 8 Nov 2021 08:57:28 +0000 (10:57 +0200)]
[mono][interp] Implement tailcalls (#59799)
* [interp] Fix opcode dump
* [interp] Implement tailcalls
Before this commit we supported tailcalls only for calls to the same method. Tailcalls are implemented by copying the call arguments to the start of the stack space, followed by replacing of the current executing method.
* Re-enable test
Jeremy Koritzinsky [Sun, 7 Nov 2021 01:11:31 +0000 (18:11 -0700)]
Fix build failure due to conflicting PR merge (#61286)
Jeremy Koritzinsky [Sat, 6 Nov 2021 19:46:50 +0000 (12:46 -0700)]
Use the Xunit assert library instead of CoreCLRTestLibrary for most asserts (#61226)
Asserts not provided by Xunit are provided by an AssertExtensions class.
Tests that reference System.Private.Corelib directly will use a polyfill implementation based off the old CoreCLRTestLibrary asserts.
All assert methods provided by CoreCLRTestLibrary have been changed to follow Xunit conventions.
Jeremy Koritzinsky [Sat, 6 Nov 2021 19:02:48 +0000 (12:02 -0700)]
Don't create a COM weak reference if the object is an aggregated COMWrappers RCW. (#61267)
* Don't create a COM weak reference if the object is an aggregated COMWrappers RCW.
* Add test for weak reference + aggregation with native weak reference impl.
* Apply suggestions from code review
Co-authored-by: Aaron Robinson <arobins@microsoft.com>
Co-authored-by: Aaron Robinson <arobins@microsoft.com>
Geoff Kizer [Sat, 6 Nov 2021 17:15:14 +0000 (10:15 -0700)]
ensure the AcceptSocket is cleared when AcceptAsync completes (#61258)
Co-authored-by: Geoffrey Kizer <geoffrek@windows.microsoft.com>
Egor Bogatov [Sat, 6 Nov 2021 14:10:38 +0000 (17:10 +0300)]
Make JitPrintInlinedMethods less verbose (#61208)
Sergey Andreenko [Sat, 6 Nov 2021 09:28:18 +0000 (02:28 -0700)]
use GenTreeFlags for better debugging (#61272)
Elinor Fung [Sat, 6 Nov 2021 04:24:50 +0000 (21:24 -0700)]
Remove BestFitMapping, CallingConvention, and ThrowOnUnmappableChar from GeneratedDllImportAttribute (#61182)
SingleAccretion [Sat, 6 Nov 2021 03:10:03 +0000 (06:10 +0300)]
Implement `GT_AND_NOT` for ARM/ARM64 (#59881)
* Move late arithmetic to its own section in gtlist
* Implement AND_NOT for AAarch
* Delete the unnecessary platfrom-specific methods
They were a leftover from some previous work.
* Mention the SIMD origins of AND_NOT
Andy Gocke [Sat, 6 Nov 2021 02:49:31 +0000 (19:49 -0700)]
Update area-owners.md (#61269)
Aaron Robinson [Sat, 6 Nov 2021 00:09:05 +0000 (17:09 -0700)]
Convert to OleDb assembly and last Cryptography DllImport to GeneratedDllImport (#61184)
* Enable DllImport generator for all source projects.
* Convert OleDb to only use GeneratedDllImport.
* Update source generator to distinguish between "no marshalling info"
which can cause a failure vs "missing support" which enables us to
fallback to the marshalling forwarder.
* Remove unused DllImports.
* Reuse existing P/Invoke definitions.
Olli Saarikivi [Fri, 5 Nov 2021 23:05:03 +0000 (16:05 -0700)]
Simplify minterm generation in Regex NonBacktracking engine (#61232)
PartitionTree had a holdover from when it was tracking the predicates
that made up each minterm, which caused it to use order n too much
memory for some patterns.
Nodes with the same predicate as the parent are no longer created.
This also significantly simplified the algorithm.
Remove the deduplication, since its now optional and the only call
site already passes in a unique set of predicates.
Make MintermGenerator take an IEnumerable.
Ankit Jain [Fri, 5 Nov 2021 23:00:48 +0000 (23:00 +0000)]
[wasm] Add test for blazor/sdk fix for lazy loaded assemblies (#60673)
Co-authored-by: Larry Ewing <lewing@microsoft.com>
Yusuke Ito [Fri, 5 Nov 2021 22:06:52 +0000 (07:06 +0900)]
fix unexpected TimeSeriesLimitReached after HistogramLimitReached(#60752) (#61199)
Steve Molloy [Fri, 5 Nov 2021 21:27:50 +0000 (14:27 -0700)]
1388 xml serializer assembly load context awareness (#58932)
* Generate dynamic serialization assembly in the appropriate ALC, and don't keep any hard refs to types that could prevent unloading.
Andy Ayers [Fri, 5 Nov 2021 18:54:16 +0000 (11:54 -0700)]
Fix build options for native test lib to not enable avx-512 (#61229)
Just enable AVX, so that we can run the lib on any of our test machines.
Andy Ayers [Fri, 5 Nov 2021 15:58:17 +0000 (08:58 -0700)]
JIT: don't bother with GDV for an abstract class (#61191)
Fixes #61190.
Stephen Toub [Fri, 5 Nov 2021 15:06:44 +0000 (11:06 -0400)]
Fix UnobservedTaskException from SemaphoreSlim.WaitAsync (#60890)
* Fix UnobservedTaskException from SemaphoreSlim.WaitAsync
If a SemaphoreSlim.WaitAsync times out, it correctly returns false, but it also results in TaskScheduler.UnobservedTaskException being raised unexpectedly, due to internal use of a faulted task whose exception isn't observed. This fixes that by marking any such exceptions as having been observed.
* Fix wasm build
Marek Fišera [Fri, 5 Nov 2021 14:02:45 +0000 (15:02 +0100)]
[wasm] Revert back to eval in wasm InvokeJS with modularization support . (#61212)
Revert back to eval in wasm InvokeJS with modularization support .
Wrap code to evaluate in a function with MONO, BINDING, INTERNAL
and module as local variables.
Added tests for running js expressions (successful, null, undefined, global scope separation)
Co-authored-by: Pavel Savara <pavelsavara@microsoft.com>
James Newton-King [Fri, 5 Nov 2021 13:38:02 +0000 (02:38 +1300)]
Fix comment typo (#61246)
Egor Bogatov [Fri, 5 Nov 2021 13:11:23 +0000 (16:11 +0300)]
JIT: Fold "shift-by-zero" in lower (#61222)
Katelyn Gadd [Fri, 5 Nov 2021 10:55:12 +0000 (03:55 -0700)]
Fix bug in iterator test, modify attempt count, make more robust (#61242)
Jeremy Barton [Thu, 4 Nov 2021 23:31:56 +0000 (16:31 -0700)]
Fold S.S.C.Encoding into new System.Security.Cryptography library
* Split the new library from just NetCoreAppCurrent to all of the varieties that S.S.C.Encoding had, plus browser.
* Move src/libraries/System.Security.Cryptography.Encoding/src/System/... to src/libraries/System.Security.Cryptography/src/System/...
* Move src/libraries/System.Security.Cryptography.Encoding/src/Internal/Cryptography/* to src/libraries/System.Security.Cryptography.Encoding/src/System/Security/Cryptography/*
* Merge in the Strings.resx content that was needed.
* Added two ObjectDisposedException.ThrowIf calls to eliminate a resource from the move.
* Move src/libraries/System.Security.Cryptography.Encoding/tests/... to src/libraries/System.Security.Cryptography.Encoding/tests/..., with a couple files gaining the "Tests" suffix that their class had.
* Fix the namespaces of the previously moved from-Primitives tests to match the new location.
* Fix the namespaces of the newly moved from-Encoding tests to match the new location.
* Make System.Security.Cryptography.Encoding ref & src just build as facades/forwarders.
Jeremy Koritzinsky [Thu, 4 Nov 2021 23:16:30 +0000 (16:16 -0700)]
[DllImportGenerator] Use ElementMarshallingGeneratorFactory to create the marshalling generator for collection elements (#61219)
Buyaa Namnan [Thu, 4 Nov 2021 23:10:05 +0000 (16:10 -0700)]
Use constant ids for RoArrayType GetMethodsCore (#61177)
Margus Veanes [Thu, 4 Nov 2021 23:02:32 +0000 (16:02 -0700)]
improved BDD Unicode table representation in NonBacktracking engine (#61142)
* improved BDD Unicode table representation in NonBacktracking engine
* remove line
Co-authored-by: Dan Moseley <danmose@microsoft.com>
* improved bounds-check elimination
Co-authored-by: Stephen Toub <stoub@microsoft.com>
* clearer notation of numbers
Co-authored-by: Dan Moseley <danmose@microsoft.com>
* fixed typo
Co-authored-by: Dan Moseley <danmose@microsoft.com>
Co-authored-by: Stephen Toub <stoub@microsoft.com>
Vlad Brezae [Thu, 4 Nov 2021 21:24:26 +0000 (23:24 +0200)]
[mono][interp] Fix GetType called on ptr constrained to Nullable` (#61020)
* [interp] Fix GetType called on ptr constrained to Nullable`
We were statically optimizing this call to return the actual constrained class type, which is incorrect for nullables, because boxing of a nullable (as part of the constrained call) actually creates an object with the type of the nullable's value (or null if there is no value).
* Add test for GetType call on ptr constrained to nullable
Ilona Tomkowicz [Thu, 4 Nov 2021 12:08:52 +0000 (13:08 +0100)]
Applied @marek-safar review to exit the loop once the condition is fulfilled. (#61165)
Egor Bogatov [Thu, 4 Nov 2021 11:41:54 +0000 (14:41 +0300)]
Fix Assertion failed 'ins == INS_add' for madd/msub (#61171)
Co-authored-by: SingleAccretion <62474226+SingleAccretion@users.noreply.github.com>
Jakob Botsch Nielsen [Thu, 4 Nov 2021 10:34:48 +0000 (11:34 +0100)]
Set IL offsets for calls created during devirtualization (#61189)
Since inlined statements use the IL location of the inliner's statement
all statements created while inlining devirtualized calls would get no
debug info before, while normally these will have IL location pointing
to the call statement in the root.
Egor Bogatov [Thu, 4 Nov 2021 08:51:29 +0000 (11:51 +0300)]
[arm64] JIT: Recognize sbfiz/ubfiz idioms (#61045)
Elinor Fung [Thu, 4 Nov 2021 05:49:01 +0000 (22:49 -0700)]
[DllImportGenerator] Fix stub generation for char array marshalling (#61188)
Margus Veanes [Wed, 3 Nov 2021 23:55:39 +0000 (16:55 -0700)]
lock protect nullability cache of symbolic regex node (#60942)
* fixed nullability checking to be threadsafe
* use volatile write for nullability cache
Co-authored-by: Stephen Toub <stoub@microsoft.com>
* made read of nullability cache volatile and fixed other PR comments
* made non-lock-protected reads from SymbolicRegexBuilder._delta volatile
* Apply suggestions from code review
Co-authored-by: Stephen Toub <stoub@microsoft.com>