Bruce Forstall [Thu, 18 May 2023 19:05:56 +0000 (12:05 -0700)]
Remove call to morph on hoisted trees (#86450)
It is unnecessary (this causes no diffs). And theoretically if it
did cause diffs, the morphed tree would then not match the tree
being hoisted, meaning CSE wouldn't "find" it and consider it a CSE.
Layomi Akinrinade [Thu, 18 May 2023 18:20:51 +0000 (11:20 -0700)]
Clean various aspects of config binding generator up (#86420)
Brant Burnett [Thu, 18 May 2023 18:09:37 +0000 (14:09 -0400)]
Vectorize the CRC64 implementation (#85221)
Mark Plesko [Thu, 18 May 2023 18:04:34 +0000 (11:04 -0700)]
Fix GCStress timeouts in JIT/jit64 (#85040)
This includes several changes that seem to help with the timeouts. It might be overkill but seems like a good direction as this has been broken for a while.
- Change the test wrapper logic to only put one test in a TestExecutor so that the callstacks are much simpler.
- Factor the test wrapper logic into some helpers to simplify the main method. I also tried to make the "Full" and "XHarness" code generation very similar but didn't try to factor/unify them.
- Mark several tests as RequiresProcessIsolation so that their gcstress is kept separate from the rest of the tests. Disables a large test under gcstress.
- Add gcstress striping to some merged groups.
Should fix #85590
Vlad Brezae [Thu, 18 May 2023 17:55:03 +0000 (20:55 +0300)]
[mono][interp] Fix alignment problems with calls and simd types in unoptimized methods (#86433)
* [mono][interp] Make stack moving opcode generic
This opcode will be used to properly align stack in various unoptimized scenarios
* [mono][interp] Move params moving code
We still have the stack contents intact here
* [mono][interp] Account for alignment when computed stack size of the params
* [mono][interp] Fix alignment of simd args
When we align the parameters so the frame stack alignment is satisfied, we break the alignment on all simd arguments (which we previously aligned). We need to do another realignment.
* [mono][interp] Fix args alignment for newobj in unoptimized methods
Get rid of special opcode and do all the arg moving with MINT_MOV_STACK_UNOPT
* [mono][interp] Small cleanup
* Add test
Tom Deseyn [Thu, 18 May 2023 16:58:31 +0000 (18:58 +0200)]
Zip.Unix: don't hang when creating zip file from directory with named pipe. (#85301)
* Zip.Unix: don't hang when creating zip file from directory with named pipe.
When we open the named pipe for reading, that call will block indefinitely
when there is no writer to provide data.
And if we manage to read data from a pipe, that data was probably meant
for someone else.
Rather than opening named pipes, throw an IOException indicating they
are not supported.
And like the named pipes, this also treat character devices,
block devices, and sockets as unsupported types.
* Skip test on browser.
* Tar,Zip: update unsupported file type error message.
* Skip tests on tvOS/iOS.
dotnet-maestro[bot] [Thu, 18 May 2023 16:41:34 +0000 (11:41 -0500)]
Update dependencies from https://github.com/dotnet/arcade build
20230518.1 (#86437)
Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.TargetFramework , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Build.Tasks.Workloads , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.GenAPI , Microsoft.DotNet.GenFacades , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.PackageTesting , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.SharedFramework.Sdk , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.XUnitExtensions
From Version 8.0.0-beta.23267.2 -> To Version 8.0.0-beta.23268.1
Dependency coherency updates
Microsoft.SourceLink.GitHub,Microsoft.DotNet.XliffTasks
From Version 8.0.0-beta.23252.2 -> To Version 8.0.0-beta.23252.2 (parent: Microsoft.DotNet.Arcade.Sdk
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Bruce Forstall [Thu, 18 May 2023 16:16:07 +0000 (09:16 -0700)]
Fix issue with hoisting and copy prop interaction (#85493)
* Fix issue with hoisting and copy prop interaction
After hoisting creates a tree copy, it morphs it. That morph might
lose the value numbers on LCL_VAR uses, but leave the SSA numbers.
Copy prop was assuming that such a use had a VN. Instead, check this
dynamically instead of asserting.
Fixes #84619
* Further optimize cast in fgOptimizeCastOnStore()
If we optimize the cast, call `fgOptimizeCast` to see if it can be
optimized further.
* Add regression test
* Feedback
Aleksey Kliger (λgeek) [Thu, 18 May 2023 16:13:34 +0000 (12:13 -0400)]
[wasm] Set WasmEnableWebcil to true by default (#86330)
* [wasm] Set WasmEnableWebcil to true by default
* WebcilReader: copy updated struct for BlobReader.ReadUtf8NullTerminated
When using reflection to call a method on BlobReader, make sure to
copy the struct after the call since the internal state is modified
Fixes PdbChecksum extraction from Webcil files
(This was a problem even before webcil-in-wasm)
Michal Strehovský [Thu, 18 May 2023 13:58:11 +0000 (22:58 +0900)]
Fix scanning synchronized methods (#86427)
After #85810 we need to generate reflection metadata for owning types of static synchronized methods. Before that change, obtaining a RuntimeType for locking would obtain a reflection blocked type. We now need a named type and scanner must predict it.
Found in Pri0 testing.
Michal Strehovský [Thu, 18 May 2023 13:45:22 +0000 (22:45 +0900)]
Fill out array bounds in metadata transform (#86313)
* Fill out array bounds in metadata transform
The metadata writer will nullref if these are not set.
* FB
Stephen Toub [Thu, 18 May 2023 13:21:40 +0000 (09:21 -0400)]
Fix Base64 decoding regressions from whitespace handling (#86396)
* Fix Base64 decoding regressions from whitespace handling
Put the main code paths back to how they were before, with the sole exception being an extra method argument and an extra check in the InvalidData exit section that delegates to a helper if that method argument is true.
* Address PR feedback for pre-existing code
Pavel Savara [Thu, 18 May 2023 13:09:43 +0000 (15:09 +0200)]
[browser] logging cleanup (#86431)
* introduce logging functions
Eirik Tsarpalis [Thu, 18 May 2023 12:44:23 +0000 (13:44 +0100)]
Remove System.Reflection wrappers from the STJ source generator. (#86334)
* Remove System.Reflection wrappers from the STJ source generator.
* Fix linker warning.
* Fix namespace.
* Move ImmutableEquatableArray to Helpers folder.
* Fix build
* Salvage test from TypeWrapperTests
Ilona Tomkowicz [Thu, 18 May 2023 12:39:34 +0000 (14:39 +0200)]
[browser][non-icu] `HybridGlobalization` indexing (#85254)
* A bit faster version of indexing. WIP
* Tiny speedup.
* Fixed IndexOf, ToDo: LastIndexOf.
* All tests pass.
* Updated docs.
* Update docs.
* Slicing + saving previous absolute index instead of pushing the iterator to the start position.
* Refactored.
* Fixed tests on browser.
* Str1 and str2 was confusing.
* Fix CI- correctly trimming Hybrid properties.
* Previous commit should target only Browser.
* Applied @mkhamoyan's suggestion to avoid code duplication.
* Applied @pavelsavara's review.
* Get rid of build errors.
* Revert.
Egor Bogatov [Thu, 18 May 2023 11:09:10 +0000 (13:09 +0200)]
Fix assertprop assert for missing handle flag (#86409)
* Number IND<size_t>(obj) as handle
David Mason [Thu, 18 May 2023 09:42:59 +0000 (02:42 -0700)]
Fix deadlock in NativeRuntimeEventSourceTest (#86370)
* Update NativeRuntimeEventSourceTest.cs
* Update NativeRuntimeEventSourceTest.cs
* Update NativeRuntimeEventSourceTest.cs
Alexander Köplinger [Thu, 18 May 2023 09:35:46 +0000 (11:35 +0200)]
Disable DllImportSearchPathsTest and StartupHookTests on mobile (#86269)
Also try to fix the StartupHookTests on LLVM FullAOT by making sure we also AOT dlls in subdirectories.
This uncovered an issue in src/tests/Common/external/external.csproj where an old version of Microsoft.CodeAnalysis.Compilers was referenced which made AOT fail, so I upgraded it.
That uncovered a problem AOTing Microsoft.CodeAnalysis.VisualBasic.dll so had to exclude it from AOTing.
Oleksandr Didyk [Thu, 18 May 2023 08:15:33 +0000 (10:15 +0200)]
add pre-built detection (#86151)
Marek Fišera [Thu, 18 May 2023 07:29:43 +0000 (09:29 +0200)]
[browser] Describe ES6 modules (#86381)
Mark Plesko [Thu, 18 May 2023 06:36:40 +0000 (23:36 -0700)]
Convert JIT/CodeGenBringUpTests to a merged test group (#85847)
See https://github.com/markples/utils/tree/for-PR-dotnet-runtime-85847-others for ILTransform tool. As usual, I recommend viewing the commit list since it partitions the changes in a more readable way and paying more attention to manual changes.
* [ILTransform -public] Make test entrypoints accessible
* [ILTransform -ilfact] Main->TestEntryPoint, [Fact], remove OutputType=Exe
* Manual fixes for xUnit1013 - internal methods
* Add merged group
* Update porting-ryujit.md with info on merged test groups
Tomas Weinfurt [Thu, 18 May 2023 05:42:35 +0000 (22:42 -0700)]
avoid ProtocolToken allocations in TLS handshake (#86163)
* avoild ProtocolToken allocations in TLS handshake
* cleanup
* UnitTests
* feedback from review
Michal Strehovský [Thu, 18 May 2023 03:34:22 +0000 (12:34 +0900)]
Add natstepfilter to skip over object allocators (#86418)
VS 17.6 added support for natstepfilter in project files. Take advantage of it to skip over object allocators that we pretty much never want to step into.
I'm following up with some VS debugger people to see if there's any plans to allow embedding this in the PDB like natvis. Having this in the vcxproj helps the repro project, but doesn't help end user scenarios.
Jeremy Koritzinsky [Thu, 18 May 2023 03:09:06 +0000 (20:09 -0700)]
Make IDerivedTest.CallBaseInterfaceMethod_EnsureQiCalledOnce trim-friendly (#86397)
Change the reflection usage to be trim friendly.
Michal Strehovský [Thu, 18 May 2023 02:03:54 +0000 (11:03 +0900)]
Do not assert RyuJIT if InitializeArray cannot be expanded (#86373)
Found in Pri0 tests. `RuntimeHelper.InitializeArray(default, default)` would assert RyuJIT. Do not assert.
The tests also have various invalid combinations of the intrinsic that make it difficult to do optimized builds (we don't want the target field to become reflectable in the common cases but also failing to predict when this doesn't expand results in scanning failures due to unmet reflection dependencies).
Give up on trying to predict when intrinsic expansion kicks in and instead lean into RVA statics not being expressible in C# and the fields not being reflection-invokable anyway.
Bruce Forstall [Thu, 18 May 2023 01:12:43 +0000 (18:12 -0700)]
Remove extraneous VN code (#86407)
* Remove extraneous code
This wasn't invoking the JitHashTable destructor as evidently intended,
though the destructor was already being invoked by default.
Fixes #86372
* Feedback: delete entire VNMap dtor
Kunal Pathak [Thu, 18 May 2023 00:36:05 +0000 (17:36 -0700)]
Delay reg free for tbx_1reg (#86292)
* Delay reg free for tbx_1reg
* remove unused code
* jit format
* Fix WideningLower
* Remove the unnecessary asserT
Jackson Schuster [Thu, 18 May 2023 00:09:44 +0000 (17:09 -0700)]
Add basic support for StringMarshalling in GeneratedComInterface (#86404)
Layomi Akinrinade [Wed, 17 May 2023 22:42:31 +0000 (15:42 -0700)]
Enable config binding gen tests that pass (#86406)
dotnet bot [Wed, 17 May 2023 22:03:22 +0000 (15:03 -0700)]
Localized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 2182497 (#86369)
* Localized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 2182111
* Localized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 2182111
Michal Strehovský [Wed, 17 May 2023 21:53:06 +0000 (06:53 +0900)]
Make sure not to strip `endfilter` (#86374)
Fixes the issue described in #86304 (but doesn't fix the issue because that's for ILLink). Found by Pri0 tests.
Sanjam Panda [Wed, 17 May 2023 21:03:33 +0000 (02:33 +0530)]
[MONO] Add JIT_CODE_DEBUG_INFO record functionality for Jitdump (#85107)
* added support for JITDEBUG_INFO
* added comments
* Update mini-runtime.c
* made changes to coding conventions
* Update mini-runtime.c
* Update mini-runtime.c
* Update mini-runtime.c
* Update mini-runtime.c
David Mason [Wed, 17 May 2023 20:23:27 +0000 (13:23 -0700)]
Add IPC commands to enable and disable PerfMaps/JitDumps (#85801)
SingleAccretion [Wed, 17 May 2023 19:47:38 +0000 (22:47 +0300)]
Delete the verification type system (#86179)
* Delete "verIsByRefLike"
* Decouple SIMD class recognition from 'typeInfo'
* Remove struct handles from 'typeInfo'
* Delete the verification type system
* Delete 'verType' comments
Zoltan Varga [Wed, 17 May 2023 18:28:21 +0000 (11:28 -0700)]
[mono][jit] Implement JIT support for the arm64 Crc and Dp intrinsics sets. (#86106)
Also implement hw capacity detection for apple+arm64 platforms.
Egor Bogatov [Wed, 17 May 2023 18:00:40 +0000 (20:00 +0200)]
Improve constant folding for some frozen objects (#86318)
Eirik Tsarpalis [Wed, 17 May 2023 16:23:45 +0000 (17:23 +0100)]
Revert RequiredAttribute.DisallowAllDefaultValues (#86378)
Mike McLaughlin [Wed, 17 May 2023 16:20:00 +0000 (09:20 -0700)]
Fix DAC syncblk API so the SOS tests stop failing intermittently (#86339)
Fix DAC syncblk API
Only fill in the syncblk data if there are blocks
Add SBNumber index validation to API
Qiao Pengcheng [Wed, 17 May 2023 15:11:06 +0000 (23:11 +0800)]
[LoongArch64] amend the crossgen2/r2rdump for LA64. (#85038)
Trung Nguyen [Wed, 17 May 2023 15:10:39 +0000 (01:10 +1000)]
Initial build configuration for Haiku (#86303)
* Haiku: Initial configuration support
Initially recognize Haiku as a supported platform in
Directory.Build.props and all scripts in eng/**.
* Drop some unused configure values
Drop some unused configure values from tryrun.cmake,
configure.cmake and config.h.in.
* Simplify error message in build.sh
Simplified an error message for the `--os` option to avoid maintaining a duplicate list of OSes.
Co-authored-by: Adeel Mujahid <3840695+am11@users.noreply.github.com>
Jakob Botsch Nielsen [Wed, 17 May 2023 14:58:32 +0000 (16:58 +0200)]
JIT: Stop specifying general JitStress in OSR/largefuncletframe (#86380)
Otherwise new stress modes can change what the test is testing. I
verified that these stress modes reproduced the original issue back when
the test was introduced.
Fix #86185
Michal Strehovský [Wed, 17 May 2023 14:50:46 +0000 (23:50 +0900)]
Include Native AOT pdbs in Helix payload (#86367)
LateApexEarlySpeed [Wed, 17 May 2023 14:25:35 +0000 (22:25 +0800)]
Add ToDictionary() overloads for KeyValuePair and ValueTuple kv. (#85811)
* Initial commit to add ToDictionary() overloads for KeyValuePair and ValueTuple kv.
* Add xml doc; add tests.
* Fix comments: use Dictionary's ctor for IEnumerable<KeyValuePair<>> overload; API signature changed to nullable comparer.
* Throw ArgumentNullExp with 'source' parameter name.
Stephen Toub [Wed, 17 May 2023 14:23:45 +0000 (10:23 -0400)]
Special-case array/list in Dictionary(IEnumerable, …) ctors (#86254)
* Special-case array/list in Dictionary(IEnumerable, ...) ctors
It's reasonably common to construct a dictionary from a `KeyValuePair<TKey, TValue>[]` or a `List<KeyValuePair<TKey, TValue>>`, and we can make both cheaper.
Dong-Heon Jung [Wed, 17 May 2023 13:09:41 +0000 (22:09 +0900)]
[RISC-V][JIT] Fix floating-point args passing (#86244)
Marek Fišera [Wed, 17 May 2023 12:56:00 +0000 (14:56 +0200)]
[browser] Fix using startupOptions when loadBootResource is not specified (#86371)
- Fix passing startupOptions to resourceLoader creation when loadBootResource is not specified
- Fix propagating applicationEnvironment
Michal Strehovský [Wed, 17 May 2023 12:08:20 +0000 (21:08 +0900)]
Baseline Native AOT tests (#86366)
* Remove NativeAOT test exclusion for issue #83167
Resolves #83167.
* Update tests.proj
* Update tests.proj
Qiao Pengcheng [Wed, 17 May 2023 11:46:10 +0000 (19:46 +0800)]
fix the regs conflicts within the `addResolution` for LoongArch64 and RISC-V. (#86294)
* Fix the regs conflicts within the `addResolution` for LoongArch64/RISC-V.
* amend the code for CR.
* add terminatorNodeLclVarDsc2 for the second op2.
Tom Deseyn [Wed, 17 May 2023 10:06:24 +0000 (12:06 +0200)]
ProcessTests: allow WorkingSet to be zero just after launching the process. (#85649)
* ProcessTests: allow WorkingSet to be zero just after launching the process.
The WorkingSet tests fail on Fedora 38+ because a zero working set value
is observed just after the process start.
Tobias Mollstam [Wed, 17 May 2023 08:56:14 +0000 (10:56 +0200)]
Fix debug compile error in mono mini (#86329)
Adeel Mujahid [Wed, 17 May 2023 08:52:29 +0000 (11:52 +0300)]
Restructure WellKnownOids.cs to reduce binary size (#84921)
Milos Kotlar [Wed, 17 May 2023 08:15:53 +0000 (10:15 +0200)]
Enable eh runtime tests on Interpreter (#86307)
dotnet bot [Wed, 17 May 2023 06:09:42 +0000 (23:09 -0700)]
Localized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 2181920 (#86361)
Jackson Schuster [Wed, 17 May 2023 05:44:07 +0000 (22:44 -0700)]
[ComInterfaceGenerator] Add tests for diagnostics, and copy attributes from base methods to generated shadowing methods (#86344)
Adds tests to ensure expected diagnostics are produced for interfaces with a Guid and generic interfaces.
Copies attributes on methods on base methods to the generated shadowing method definitions.
Adds Test type with a CompilationVerifier field of Action to make it easier to make one-off tests that verify compilations without making a new type.
Ilona Tomkowicz [Wed, 17 May 2023 03:01:50 +0000 (05:01 +0200)]
[wasm][node] Disable System.Net.Http.Functional with timeouts (#86321)
Disabled tests that are timing out on node 16.19.0. On the newer version, 19.9.0 it's already fine.
Removing timeouts uncovered a bunch of failures that are gone in the newer node as well.
Related issues: https://github.com/dotnet/runtime/issues/86317, and https://github.com/dotnet/runtime/issues/86326
* Active issue.
* Disable failures uncovered when timeouts are gone.
Michal Strehovský [Wed, 17 May 2023 01:20:42 +0000 (10:20 +0900)]
Exclude profiler/r2r tests from building (#86314)
These are excluded in issues.targets, but we shouldn't even build them.
David Wrighton [Wed, 17 May 2023 01:02:01 +0000 (18:02 -0700)]
Fix incorrect usage of u16_strcmp instead of u16_strncmp (#86356)
Layomi Akinrinade [Tue, 16 May 2023 23:15:26 +0000 (16:15 -0700)]
Support remaining collections in config binder generator (#86285)
* Support remaining collections in config binder generator
* Address feedback
* Fix IReadOnlyDictionary net462 issue
Theon [Tue, 16 May 2023 22:01:49 +0000 (05:01 +0700)]
Pooled async value task for HTTP 1 connection (#81426)
Use PoolingAsyncValueTaskMethodBuilder for
System.Net.Http.HttpConnection to improve asynchronous performance.
Fix dotnet#81318
Co-authored-by: Theon McKendry <theon.mckendry@outlook.com>
Egor Bogatov [Tue, 16 May 2023 21:49:18 +0000 (23:49 +0200)]
Fix be test #2 (#86323)
Jeremy Koritzinsky [Tue, 16 May 2023 21:40:58 +0000 (14:40 -0700)]
Clean up some code after the interface inheritance work (#86347)
Kunal Pathak [Tue, 16 May 2023 21:04:05 +0000 (14:04 -0700)]
Constrained mask should take into account busy registers (#85933)
* NO MERGE
* Revert "NO MERGE"
This reverts commit
68657c6d26c47fbba5dfddbe0ba8157ed449a71b.
* Make sure constrained regMask doesn't include busy registers
* add the missing parameter
* fix superpmi failure
* fix the release errors
* review comment
* review comment
* use gtSkipReloadOrCopy()
* update the assert
Sven Boemer [Tue, 16 May 2023 20:36:48 +0000 (13:36 -0700)]
Clean up dead code in illink targets (#85741)
Removes TFM version checks, and adds a warning when using
explicit ILLink package reference.
We reference ILLink as a packagereference that versions with the
runtime, so the 8.0 linker is only supported when targeting
`net8.0`, and we can remove the TFM checks. We don't want to
support someone adding a PackageReference to an 8.0 linker, while
targeting an older TFM, in an attempt to get newer linker bits
but with settings that were closer to what we shipped with that
TFM.
---------
Co-authored-by: Marek Safar <marek.safar@gmail.com>
Co-authored-by: Vitek Karas <10670590+vitek-karas@users.noreply.github.com>
Jeremy Koritzinsky [Tue, 16 May 2023 20:15:15 +0000 (13:15 -0700)]
Write the generated file header to the ComInterfaceGenerator-generated files (#86283)
Aleksey Kliger (λgeek) [Tue, 16 May 2023 20:10:38 +0000 (16:10 -0400)]
[wasm] Webcil-in-WebAssembly (#85932)
Define a WebAssembly module wrapper for Webcil assemblies.
Contributes to #80807
### Why
In some settings serving `application/octet-stream` data, or files with weird extensions will trigger firewalls or AV tools. But let's assume that if you're interested in deploying a .NET WebAssembly app, you're in an environment that can at least serve WebAssembly modules.
### How
Essentially we serve this WebAssembly module:
```wat
(module
(data "\0f\00\00\00") ;; data segment 0: payload size
(data "webcil Payload\cc") ;; data segment 1: webcil payload
(memory (import "webcil" "memory") 1)
(global (export "webcilVersion") i32 (i32.const 0))
(func (export "getWebcilSize") (param $destPtr i32) (result)
local.get $destPtr
i32.const 0
i32.const 4
memory.init 0)
(func (export "getWebcilPayload") (param $d i32) (param $n i32) (result)
local.get $d
i32.const 0
local.get $n
memory.init 1))
```
The module exports two WebAssembly functions `getWebcilSize` and `getWebcilPayload` that write some bytes (being the size or payload of the webcil assembly) to the linear memory at a given offset. The module also exports the constant `webcilVersion` to version the wrapper format.
So a runtime or tool that wants to consume the webcil module can do something like:
```js
const wasmModule = new WebAssembly.Module (...);
const wasmMemory = new WebAssembly.Memory ({initial: 1});
const wasmInstance =
new WebAssembly.Instance(wasmModule, {webcil: {memory: wasmMemory}});
const { getWebcilPayload, webcilVersion, getWebcilSize } = wasmInstance.exports;
console.log (`Version ${webcilVersion.value}`);
getWebcilSize(0);
const size = new Int32Array (wasmMemory.buffer)[0]
console.log (`Size ${size}`);
console.log (new Uint8Array(wasmMemory.buffer).subarray(0, 20));
getWebcilPayload(4, size);
console.log (new Uint8Array(wasmMemory.buffer).subarray(0, 20));
```
### How (Part 2)
But actually, we will define the wrapper to consist of exactly 2 data segments in the WebAssembly data section: segment 0 is 4 bytes and encodes the webcil payload size; and segment 1 is of variable size and contains the webcil payload.
So to load a webcil-in-wasm module, the runtime gets the _raw bytes_ of the WebAssembly module (ie: without instantiating it), and parses it to find the data section, assert that there are 2 segments, ensure they're both passive, and get the data directly from segment 1.
---
* Add option to emit webcil inside a wasm module wrapper
* [mono][loader] implement a webcil-in-wasm reader
* reword WebcilWasmWrapper summary comment
* update the Webcil spec to include the WebAssembly wrapper module
* Adjust RVA map offsets to account for wasm prefix
MonoImage:raw_data is used as a base when applying the RVA map to map virtual addresses to physical offsets in the assembly. With webcil-in-wasm there's an extra wasm prefix before the webcil payload starts, so we need to account for this extra data when creating the mapping.
An alternative is to compute the correct offsets as part of generating the webcil, but that would entangle the wasm module and the webcil payload. The current (somewhat hacky approach) keeps them logically separate.
* Add a note about the rva mapping to the spec
* Serve webcil-in-wasm as .wasm
* remove old .webcil support from Sdk Pack Tasks
* Implement support for webcil in wasm in the managed WebcilReader
* align webcil payload to a 4-byte boundary within the wasm module
Add padding to data segment 0 to ensure that data segment 1's payload (ie the webcil content itself) is 4-byte aligned
* assert that webcil raw data is 4-byte aligned
* add 4-byte alignment requirement to the webcil spec
* Don't modify MonoImageStorage:raw_data
instead just keep track of the webcil offset in the MonoImageStorage.
This introduces a situation where MonoImage:raw_data is different from MonoImageStorage:raw_data. The one to use for accessing IL and metadata is MonoImage:raw_data.
The storage pointer is just used by the image loading machinery
---------
Co-authored-by: Larry Ewing <lewing@microsoft.com>
Tanner Gooding [Tue, 16 May 2023 19:56:50 +0000 (12:56 -0700)]
Ensure that INS_TT_MEM128 is correctly handled (#86331)
Andrew Au [Tue, 16 May 2023 19:20:21 +0000 (12:20 -0700)]
Stop testing UnregisterFrozenSegment (#86279)
Jan Kotas [Tue, 16 May 2023 18:51:43 +0000 (11:51 -0700)]
Delete some dead code (#86337)
NGen left overs
Tanner Gooding [Tue, 16 May 2023 18:48:30 +0000 (11:48 -0700)]
Improve the handling of ToScalar and GetElement(0) (#86209)
* Improve the handling of ToScalar and GetElement(0)
* Fix build failure
* Ensure ToScalar handling is in EvalHWIntrinsicFunUnary, not FunBinary
* Ensure we don't regress codegen for small types
Qiao Pengcheng [Tue, 16 May 2023 18:48:13 +0000 (02:48 +0800)]
[LoongArch64] just skip the array type. (#86290)
The `struct {int array[1]; float field_2;}` which the array field is only one element,
just skip it although it can be passed by registers one integer and one float-register.
Details see github https://github.com/dotnet/runtime/pull/62885#discussion_r821878981
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
Huo Yaoyuan [Tue, 16 May 2023 18:31:27 +0000 (02:31 +0800)]
Add -DCLI_CMAKE_FALLBACK_OS in CMakeSettings.json (#86261)
Michal Strehovský [Tue, 16 May 2023 17:40:18 +0000 (02:40 +0900)]
Implement GetNonRuntimeDeterminedTypeFromRuntimeDeterminedSubtypeViaSubstitution (#86310)
This was reached in the Pri0 test suite.
Michal Strehovský [Tue, 16 May 2023 17:37:09 +0000 (02:37 +0900)]
Fix handling of non-beforefieldinit interface cctors (#86311)
Scanner would miss them. These trigger the same way as valuetype methods (instance methods will trigger them).
Michal Strehovský [Tue, 16 May 2023 17:30:50 +0000 (02:30 +0900)]
Account for rank 1 array special casing in RyuJIT (#86312)
Should have been done in #84205.
Qiao Pengcheng [Tue, 16 May 2023 15:51:47 +0000 (23:51 +0800)]
[LoongArch64] fix the conflicts within the DIV/MOD. (#86289)
dotnet-maestro[bot] [Tue, 16 May 2023 14:38:57 +0000 (10:38 -0400)]
Update dependencies from https://github.com/dotnet/arcade build
20230515.1 (#86320)
Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.TargetFramework , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Build.Tasks.Workloads , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.GenAPI , Microsoft.DotNet.GenFacades , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.PackageTesting , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.SharedFramework.Sdk , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.XUnitExtensions
From Version 8.0.0-beta.23262.5 -> To Version 8.0.0-beta.23265.1
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Michal Strehovský [Tue, 16 May 2023 14:38:40 +0000 (23:38 +0900)]
Update references to ILLink tool name (#86315)
This warning message is shared with the NativeAOT compiler.
Ilona Tomkowicz [Tue, 16 May 2023 14:11:10 +0000 (16:11 +0200)]
Document how we run multithreaded debugger tests. (#86325)
Ivan Povazan [Tue, 16 May 2023 14:07:29 +0000 (16:07 +0200)]
[mono] Prevent memory corruption when decoding UCO entry point (#86266)
Fixes: https://github.com/dotnet/runtime/issues/86264
Pavel Savara [Tue, 16 May 2023 13:42:07 +0000 (15:42 +0200)]
[browser] fix lint issues (#86155)
* fix lint issues
* don't format jiterpreter-tables
Andrew Au [Tue, 16 May 2023 13:26:13 +0000 (06:26 -0700)]
Remove Architecture Property (#86277)
Ankit Jain [Tue, 16 May 2023 12:53:20 +0000 (08:53 -0400)]
GetChromeVersions task: Try to find older versions, if the latest one is (#86184)
Michal Strehovský [Tue, 16 May 2023 10:48:07 +0000 (19:48 +0900)]
Start runing CctorForWrite test (#86302)
This was apparently fixed but not removed from issues.targets.
Marek Fišera [Tue, 16 May 2023 07:34:13 +0000 (09:34 +0200)]
[browser] Load appsettings to VFS (#85520)
Milos Kotlar [Tue, 16 May 2023 06:46:34 +0000 (08:46 +0200)]
[mono][tests] Enable runtime tests on Interpreter (#86097)
* Enable runtime tests on interpreter
Ankit Jain [Tue, 16 May 2023 05:16:34 +0000 (01:16 -0400)]
[wasm] WBT: Re-enable blazor run test (#86268)
Jackson Schuster [Tue, 16 May 2023 04:45:34 +0000 (21:45 -0700)]
[ComInterfaceGenerator] Interface inheritance follow up (#85117)
This commit creates types to model the Com interfaces and the methods in the com interfaces. The new types with suffix "Info" are meant to be the first step of the pipeline that can be created with just an ISymbol and SyntaxNode. The types suffixed with "Context" are meant to contain all info necessary for generating the code, and they may require multiple "Info"s to be created (e.g. need info about the base interface or other methods in the interface). There is also a type that represents the Com interface and all the methods that are required to generate the code necessary for Com.
Noah Falk [Tue, 16 May 2023 03:21:15 +0000 (20:21 -0700)]
MetricEventSource tests workaround .NET Framework double rounding (#86286)
Fixes #85290
Desktop .NET Framework on x86 improperly rounds double values in some circumstances. I switched the test to use a lower precision double value so that it is not impacted by the extra rounding.
Kunal Pathak [Tue, 16 May 2023 02:23:07 +0000 (19:23 -0700)]
Unmark loop align regardless if we found block to align or not (#86198)
* unmark loop align regardless if we found block to align or not
* remove redundant if check
David Wrighton [Tue, 16 May 2023 02:20:01 +0000 (19:20 -0700)]
Intrinsics analyzer and fixes (#85481)
* Implement analyzer for platform intrinsics use in System.Private.CoreLib
This analyzer detects the use of all platform intrinsics and checks to
ensure that they are all used either protected by an if statement OR
ternary operator which checks an appropriate IsSupported flag, or that
the intrinsic is used within a method where the behavior of platform
support for the intrinsic is not allowed to vary between compile time
and runtime. The analyzer attempts to be conservative about allowed patterns.
All existing code in System.Private.CoreLib has been annotated to avoid producing
errors.
See the markdown document for details.
Co-authored-by: Jeremy Koritzinsky <jkoritzinsky@gmail.com>
Jérôme Laban [Tue, 16 May 2023 00:30:38 +0000 (20:30 -0400)]
[Wasm] Adjust error message for .NET 7 assemblies, JSExport and multi-threading (#86197)
fix: Adjust error message for .NET 7 assemblies, JSExport and multi-threading
Katelyn Gadd [Mon, 15 May 2023 23:02:06 +0000 (16:02 -0700)]
Move jiterpreter tables to new file; Add draft jiterpreter overview document (#86270)
Add draft jiterpreter overview document
Move jiterpreter tables out of jiterpreter-trace-generator
Sven Boemer [Mon, 15 May 2023 22:54:45 +0000 (15:54 -0700)]
Incremental generator for illink analyzer tests (#86260)
Changes the existing generator for ILLink.RoslynAnalyzer
testcases to be an IIncrementalGenerator.
Tomas Weinfurt [Mon, 15 May 2023 22:53:47 +0000 (15:53 -0700)]
add RID for Alpine 3.18 (#86276)
Egor Bogatov [Mon, 15 May 2023 22:13:15 +0000 (00:13 +0200)]
Clean up impSpanEqualsOrStartsWith (#86129)
Co-authored-by: SingleAccretion <62474226+SingleAccretion@users.noreply.github.com>
Günther Foidl [Mon, 15 May 2023 22:06:22 +0000 (00:06 +0200)]
Handle the remainder in MemoryExtensions.Count vectorized (#82687)
* Re-use targetVector from Vector256 in Vector128 code-path
Saves an additional vpbroadcastb.
* Process remainder vectorized
* Use unsigned division for remaining elements
Avoids the signed integer division.
* Process remainder vectorized only if more than half of vector remains
Benchmarking showed that the cost is quite high, so for just a few elements the scalar loop seems better.
* Added comment why / 2 got chosen
Jakob Botsch Nielsen [Mon, 15 May 2023 21:56:53 +0000 (23:56 +0200)]
JIT: Fix new helper calls for some block copies involving promoted locals (#86246)
The change in #85620 was missing a check for the case where the
destination is not on stack but the source is. The backend still uses a
helper call for this case.
The field-by-field case would also usually involve helper calls since it
would normally need write barriers; however, the exception were for
byref fields, so Span<T>/ReadOnlySpan<T> were particularly affected.
Michal Strehovský [Mon, 15 May 2023 21:33:42 +0000 (06:33 +0900)]
Delete some code around `ModuleList` (#86230)
The concept of loading modules on demand never existed outside some internal ProjectN branches. Delete some code around it. Also delete an extra enumerator that was only used in one place.
Thays Grazia [Mon, 15 May 2023 21:15:44 +0000 (18:15 -0300)]
[debugger] Fix MDBGPROT_CMD_TYPE_ELEMENT_TYPE behavior (#85679)
* Fix MDBGPROT_CMD_TYPE_ELEMENT_TYPE
* fix tabs
* Remove generation of dbgshim.
Address @lambdageek comment.
Radek Doulik [Mon, 15 May 2023 20:17:35 +0000 (22:17 +0200)]
[wasm] Add extending conversions to PackedSimd (#86252)
* [wasm] Add extending conversions to PackedSimd
* Feedback