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

Prototype gchandle #2

Closed
wants to merge 86 commits into from
Closed
Changes from all commits
Commits
Show all changes
86 commits
Select commit Hold shift + click to select a range
ef1a8ab
JIT: Don't compact away block in cond-to-return folding (#113931)
amanasifkhalid Mar 26, 2025
cb29b08
JIT: Fix fgDebugCheckTypes assert + small clean up (#113920)
EgorBo Mar 26, 2025
a9dcd70
JIT: layout compatibility vs assignability (#113938)
AndyAyersMS Mar 26, 2025
4957991
Make sure BMI instructions get correct displacement size. (#113903)
Ruihan-Yin Mar 26, 2025
0ee8cba
Fix CoreclrTestWrapperLib to be robust against existed processes (#11…
jkotas Mar 27, 2025
2adab65
MLDsa initial OpenSSL based implementation
krwq Mar 27, 2025
9b091dc
Fix targets for using the NativeAOT runtime pack as the "target ILC" …
jkoritzinsky Mar 27, 2025
251e6be
[APX] Make sure KMOV is not encoded in EVEX when JitStressEvexEncodin…
Ruihan-Yin Mar 27, 2025
b21c93c
ML-KEM: MLKemOpenSsl
vcsjones Mar 27, 2025
be6d8d0
Update dependencies from https://github.com/dotnet/emsdk build 202503…
dotnet-maestro[bot] Mar 27, 2025
eff415b
[browser] EventPipe - CPU sampling - single thread (#113758)
pavelsavara Mar 27, 2025
68db36f
Make the eager-enumerator a sealed class (#113927)
IDisposable Mar 27, 2025
c32f8d0
Fix non-portable build for < OpenSSL 3.4.
vcsjones Mar 27, 2025
2d54736
don't assert when validation is skipped (#111596)
PranavSenthilnathan Mar 27, 2025
0b6e62e
[cDAC] Implement ISOSDacInterface::GetFrameName (#113769)
max-charlamb Mar 27, 2025
0ff4bf2
Reduce cost of working on fixedRegs by making it `SingleTypeRegSet`. …
DeepakRajendrakumaran Mar 27, 2025
c74241f
Disallow loading non-Explicit types with explicit field offsets (#113…
jkoritzinsky Mar 27, 2025
fa004fb
Fix issue where wrong message was added to EventReporter. (#113969)
lateralusX Mar 27, 2025
a37049f
Fix tracing in host sdk_resolver.cpp (#113887)
elinor-fung Mar 28, 2025
fce42d3
Use the shipping version in PackageOverrides.txt (#113981)
ViktorHofer Mar 28, 2025
156b92d
Do not generate unconstructed EEType for arrays that have a template …
MichalStrehovsky Mar 28, 2025
4f5c693
[WinHTTP] Remove legacy (Win 8.1-) WinInet proxy handling (#113915)
ManickaP Mar 28, 2025
a12e429
Add some logging for the new EH (#113891)
janvorli Mar 28, 2025
fbb0f14
Fix declared type of custom comparer for MaxBy and MinBy (#113944)
IDisposable Mar 28, 2025
12e5d2e
Add some basic tests for SLH-DSA (#113766)
PranavSenthilnathan Mar 28, 2025
cef21d2
Only use PGO data if clang can read it (#114005)
akoeplinger Mar 28, 2025
65f0139
Fix trivial typo (#113130)
IDisposable Mar 28, 2025
3e22ac1
Outbox PbeParameters and PbeEncryptionAlgorithm to Microsoft.Bcl.Cryp…
vcsjones Mar 28, 2025
6c1447e
Remove unused OutputPgoPathForCI target from nativepgo.targets (#114025)
akoeplinger Mar 28, 2025
ccc379b
Delete eng/pipelines/runtime-richnav.yml (#114010)
akoeplinger Mar 29, 2025
50e6f48
Extract `UnsafeAccessorAttribute` generation code. (#113989)
AaronRobinsonMSFT Mar 29, 2025
914ce6f
Avoid all compiler optimization on embedded apphost hash (#110554)
omajid Mar 29, 2025
454673e
JIT: fix case where importer can lose type information (#114033)
AndyAyersMS Mar 29, 2025
7cc3219
[mono][interp] Check packedsimd first on browser (#113743)
lewing Mar 30, 2025
de1e6a4
Fix EH and stack walking on linux-x86 (#113972)
filipnavara Mar 31, 2025
3e9ed11
Enable more constant foldings for switch ops using assertions (#113998)
EgorBo Mar 31, 2025
1bdf1a2
Update dependencies from https://github.com/dotnet/source-build-refer…
dotnet-maestro[bot] Mar 31, 2025
5b36734
Fix propagating of unhandled exception to native caller (#113980)
janvorli Mar 31, 2025
bee9dd2
JIT: Remove `BBF_FUNCLET_BEG` (#113975)
amanasifkhalid Mar 31, 2025
f91289f
Fixed some typos in the document (#113228)
HotCakeX Mar 31, 2025
2bb2434
Remove dead code (#113852)
filipnavara Mar 31, 2025
129820a
Fix Windows build (#114062)
tomeksowi Mar 31, 2025
ddd44f2
Include in WaitingWriteCount the thread that may be waiting in upgrad…
eduardo-vp Mar 31, 2025
f30fb15
ML-KEM: Contract Tests
vcsjones Mar 31, 2025
888312b
JIT: Always set block weight during method entry canonicalization (#1…
amanasifkhalid Mar 31, 2025
cd115dd
JIT: Fix improperly contained BroadcastScalarToVector(CreateScalar(GT…
saucecontrol Mar 31, 2025
4ec72ec
Address issues noted in Aaron's code review (#113857)
davidwrighton Mar 31, 2025
0893ef2
TypeDefinitionDocument documentation (#103135)
davidwengier Mar 31, 2025
77e5aa5
[wasm] Bump chrome for testing - linux: 134.0.6998.165, windows: 135.…
github-actions[bot] Apr 1, 2025
20d6554
ML-KEM: PKCS#8 Import
vcsjones Apr 1, 2025
4b16dce
Support overriding MsQuic.dll in the application directory on Windows…
rzikm Apr 1, 2025
bbc50e5
Fix Hang on when GetRequestStreamAsync (#113409)
liveans Apr 1, 2025
ef7ee5d
[debugger] Fix debugging a x86 app in mixed mode (#114075)
thaystg Apr 1, 2025
baaad1e
[cDAC] Remove superfluous modifiers from contract interfaces (#113983)
max-charlamb Apr 1, 2025
730af18
[Mono]: Fix syslog format error on Windows. (#114009)
lateralusX Apr 1, 2025
65f0718
remove the switch to fallback to old EH (#114018)
mangod9 Apr 1, 2025
35f9139
revert some unexpected code removal. (#113898)
Ruihan-Yin Apr 1, 2025
c15177a
Support Activity Events and Links trace out of proc output (#113905)
tarekgh Apr 1, 2025
492f6f7
Fix handling of empty RUNTIME_FUNCTIONs sections in R2R (#114091)
jkotas Apr 1, 2025
556f4dd
Adjust additional source under utilcode and vm to use minipal_log API…
lateralusX Apr 1, 2025
fa45aa5
Stackwalk support for interpreted frames (#113900)
janvorli Apr 1, 2025
327c262
Don't pass stack pointer in ECX on x86 funclet ABI (#113792)
filipnavara Apr 1, 2025
89c2e15
JIT: expose inline budget as a jit config option (#114103)
AndyAyersMS Apr 1, 2025
11de52a
[wasm][interp] Match more Vector intrinsics to PackedSimd intrinsics …
lewing Apr 1, 2025
7ba135a
[cDAC] Change FrameIdentifiers to be contract literals (#113953)
max-charlamb Apr 1, 2025
ce930c2
Give more detail on RyuJIT porting (#108080)
directhex Apr 1, 2025
c1ae86d
Share some CEEJitInfo methods with the CInterpreterInfo (#114110)
janvorli Apr 1, 2025
3dbeb51
Parallel change to the diagnostic update for GC Info decoder. (#113888)
VSadov Apr 1, 2025
8512b2a
TypeMap API (Dynamic implementation) (#113954)
AaronRobinsonMSFT Apr 2, 2025
45fa758
[main] Update dependencies from dotnet/roslyn (#112937)
dotnet-maestro[bot] Apr 2, 2025
ae2875a
ML-KEM: Add support for importing encrypted PKCS#8 keys
vcsjones Apr 2, 2025
62f3b4d
Delete dead code in ExceptionTracker and leftover old EH code (#114121)
filipnavara Apr 2, 2025
2c5b3ee
[mono] [hotreload] Adjust row_size and size_bitfield from the baseli…
thaystg Apr 2, 2025
edb0a06
Use managed signer for bundles (#110417)
jtschuster Apr 2, 2025
25cb386
linux-x86: Implement R2R P/Invoke helpers (#114142)
filipnavara Apr 2, 2025
4b2fe3c
[RISC-V] Optimize loading 64 bit constant with new algorithm implemen…
fuad1502 Apr 2, 2025
883f747
Add field access support to CoreCLR Interpreter (#114049)
BrzVlad Apr 2, 2025
cabacfc
Update dependencies from https://github.com/dotnet/arcade build 20250…
dotnet-maestro[bot] Apr 2, 2025
3ba8279
Fix loop condition for reading central directory headers (#114023)
carlossanlop Apr 2, 2025
a1997d4
Fix bug in hwintrinsicxarch.cpp for Shuffle methods on xarch (#114125)
hamarb123 Apr 2, 2025
e2424d0
Sign and harden pkgs (#114027)
mmitche Apr 2, 2025
ff749c3
Bring back yml necessary change types in label checkers (#114165)
carlossanlop Apr 2, 2025
8f94d2e
[SGen/Tarjan] Handle edge case with node heaviness changing due to de…
filipnavara Apr 2, 2025
4b77908
Build infrastructure for the GC Bridge feature for Java interop.
AaronRobinsonMSFT Apr 2, 2025
9431371
Add new GC Handle type.
AaronRobinsonMSFT Apr 2, 2025
461cf22
Implement the JavaMarshal API in CoreCLR.
AaronRobinsonMSFT Apr 2, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/workflows/check-no-merge-label.yml
Original file line number Diff line number Diff line change
@@ -5,7 +5,7 @@ permissions:

on:
pull_request_target:
types: [labeled, unlabeled]
types: [opened, edited, reopened, labeled, unlabeled, synchronize]
branches:
- 'main'
- 'release/**'
2 changes: 1 addition & 1 deletion .github/workflows/check-service-labels.yml
Original file line number Diff line number Diff line change
@@ -5,7 +5,7 @@ permissions:

on:
pull_request_target:
types: [labeled, unlabeled]
types: [opened, edited, reopened, labeled, unlabeled, synchronize]
branches:
- 'release/**'

19 changes: 12 additions & 7 deletions docs/design/coreclr/jit/porting-ryujit.md
Original file line number Diff line number Diff line change
@@ -23,13 +23,18 @@ The following components need to be updated, or target-specific versions created
* The basics
* target.h
* Instruction set architecture:
* registerXXX.h
* emitXXX.h, emitfmtXXX.h
* instrsXXX.h, emitXXX.cpp and targetXXX.cpp
* lowerXXX.cpp
* lsraXXX.cpp
* codegenXXX.cpp and simdcodegenXXX.cpp
* unwindXXX.cpp
* registerXXX.h - defines all registers used by the architecture and any aliases for them
* emitXXX.h - defines signatures for public instruction emission methods (e.g. "emit an instruction which takes a single integer argument") and private architecture-specific helpers
* emitXXX.cpp - implementation for emitXXX.h
* emitfmtXXX.h - optionally defines validity rules for how instructions should be formatted (e.g. RISC-V has no rules defined)
* instrsXXX.h - defines per-architecture instructions in assembly
* targetXXX.h - defines architectural constraints used elsewhere, such as "bitmask for all integer registers where callee is saved" or "size in bytes of a floating point register"
* targetXXX.cpp - implements ABI classifier for this architecture
* lowerXXX.cpp - implements [Lowering](https://github.com/dotnet/runtime/blob/main/docs/design/coreclr/jit/ryujit-overview.md#lowering) for this architecture
* lsraXXX.cpp - implements register requirement setting based on [GenTree Nodes](https://github.com/dotnet/runtime/blob/main/docs/design/coreclr/jit/ryujit-overview.md#gentree-nodes)
* codegenXXX.cpp - implements main codegen for this architecture (i.e. generating per-architecture instructions based on [GenTree Nodes](https://github.com/dotnet/runtime/blob/main/docs/design/coreclr/jit/ryujit-overview.md#gentree-nodes))
* hwintrinsic\*XXX.\* and simdashwintrinsic\*XXX.h - defines and implements hardware intrinsic features, e.g. vector instructions
* unwindXXX.cpp - implements public unwinding API and unwind info dumping for debug use
* Calling Convention and ABI: all over the place
* 32 vs. 64 bits
* Also all over the place. Some pointer size-specific data is centralized in target.h, but probably not 100%.
8 changes: 8 additions & 0 deletions docs/design/datacontracts/StackWalk.md
Original file line number Diff line number Diff line change
@@ -16,6 +16,9 @@ IEnumerable<IStackDataFrameHandle> CreateStackWalk(ThreadData threadData);
byte[] GetRawContext(IStackDataFrameHandle stackDataFrameHandle);
// Gets the Frame address at the given stack dataframe. Returns TargetPointer.Null if the current dataframe does not have a valid Frame.
TargetPointer GetFrameAddress(IStackDataFrameHandle stackDataFrameHandle);

// Gets the Frame name associated with the given Frame identifier. If no matching Frame name found returns an empty string.
string GetFrameName(TargetPointer frameIdentifier);
```

## Version 1
@@ -323,3 +326,8 @@ If the Frame is not valid, returns `TargetPointer.Null`.
TargetPointer GetFrameAddress(IStackDataFrameHandle stackDataFrameHandle);
```


`GetFrameName` gets the name associated with a FrameIdentifier (pointer sized value) from the Globals stored in the contract descriptor. If no associated Frame name is found, it returns an empty string.
```csharp
string GetFrameName(TargetPointer frameIdentifier);
```
6 changes: 3 additions & 3 deletions docs/design/features/hw-intrinsics.md
Original file line number Diff line number Diff line change
@@ -18,7 +18,7 @@ The hardware intrinsics operate on and produce both primitive types (`int`, `flo

### Platform-agnostic vector types

The vector types supported by one or more target ISAs are supported across platforms, though they extent to which operations on them are available and accelerated is dependent on the target ISA. These are:
The vector types supported by one or more target ISAs are supported across platforms, though the extent to which operations on them are available and accelerated is dependent on the target ISA. These are:

* `Vector64<T>` - A 64-bit vector of type `T`. For example, a `Vector64<int>` would hold two 32-bit integers.
* Note that `Vector64<T>` intrinsics are currently supported only on Arm64, and these are not supported for `double`. Support could be added for this, but would require additional handling.
@@ -51,7 +51,7 @@ The JIT depends on the VM and configuration settings to determine what target pl

Hardware intrinsics are built on RyuJIT's `NamedIntrinsic` mechanism to identify method calls that should be recognized as intrinsics (see https://github.com/dotnet/runtime/blob/main/src/coreclr/jit/namedintrinsiclist.h). In the incoming IL, intrinsic invocations are just method calls, so the JIT must distinguish intrinsic calls from ordinary call-sites and map them to its IR representation: the `GenTreeHWIntrinsic` node.

The [Intrinsic] attribute was added to eliminate the need to check each call-site. It [Intrinsic] attribute has a different meaning on each attribute target:
The [Intrinsic] attribute was added to eliminate the need to check each call-site. It has a different meaning on each attribute target:

* Method: call targets marked with [Intrinsic] will be checked by the JIT when importing call-sites. If the method's (namespace, class name, method name) triple matches a record in the Hardware Intrinsics Table, it will be recognized as an intrinsic call.

@@ -98,7 +98,7 @@ The register allocator has three main passes.

The `LinearScan::buildNode` method is responsible for identifying all register references in the IR, and constructing the `RefPosition`s that represent those references, for each node. For hardware intrinsics it delegates this function to `LinearScan::buildHWIntrinsic()` and the `LinearScan::getKillSetForHWIntrinsic()` method is responsible for generating kill `RefPositions` for these nodes.

The other thing to be aware of is that the calling convention for large vectors (256-bit vectors on x86, and 128-bit vectors on Arm64) does not preserve the upper half of the callee-save vector registers. As a result, this require some special modeling in the register allocator. See the places where `FEATURE_PARTIAL_SIMD_CALLEE_SAVE` appears in the code. This code, fortunately, requires little differentiation between the two platforms.
The other thing to be aware of is that the calling convention for large vectors (256-bit vectors on x86, and 128-bit vectors on Arm64) does not preserve the upper half of the callee-save vector registers. As a result, this requires some special modeling in the register allocator. See the places where `FEATURE_PARTIAL_SIMD_CALLEE_SAVE` appears in the code. This code, fortunately, requires little differentiation between the two platforms.

## Code Generation

20 changes: 20 additions & 0 deletions docs/design/specs/PortablePdb-Metadata.md
Original file line number Diff line number Diff line change
@@ -26,6 +26,7 @@ The ECMA-335-II standard is amended by an addition of the following tables to th
* [SourceLink](#source-link-c-and-vb-compilers)
* [CompilationMetadataReferences](#compilation-metadata-references-c-and-vb-compilers)
* [CompilationOptions](#compilation-options-c-and-vb-compilers)
* [TypeDefinitionDocument](#type-definition-document-c-and-vb-compilers)

Debugging metadata tables may be embedded into type system metadata (and part of a PE file), or they may be stored separately in a metadata blob contained in a .pdb file. In the latter case additional information is included that connects the debugging metadata to the type system metadata.

@@ -598,3 +599,22 @@ The order of the options in the list is insignificant.
> The purpose of this data is to allow a tool to reconstruct the compilation the module was built from.
> The source files for the compilation are expected to be recovered from the source server using [SourceLink](#source-link-c-and-vb-compilers) and/or from [sources embedded](#embedded-source-c-and-vb-compilers) in the PDB.
> The metadata references for the compilation are expected to be recovered from a file indexing service (e.g. symbol server) using information in [Compilation Metadata References](#compilation-metadata-references-c-and-vb-compilers) record.

##### Type Definition Document (C# and VB compilers)
Parent: TypeDef

Kind: {932E74BC-DBA9-4478-8D46-0F32A7BAB3D3}

Stores document information for type definitions that would otherwise not have document information stored through other means, for example in the [MethodDebugInformation](#methoddebuginformation-table-0x31) table.

The blob has the following structure:

Blob ::= (document-ordinal)*

| terminal | encoding | description |
|:-----------------|:----------------------------|:---------------------------------------|
| document-ordinal | compressed unsigned integer | row id of the Document table. |

> The purpose of this data is to allow a tool navigate to the source of a type definition where there would
> otherwise not be any data available. For example an empty class definition, or an enum, where there are
> no methods to provide the data in the `MethodDebugInformation` table.
3 changes: 2 additions & 1 deletion docs/project/list-of-diagnostics.md
Original file line number Diff line number Diff line change
@@ -115,6 +115,7 @@ The PR that reveals the implementation of the `<IncludeInternalObsoleteAttribute
| __`SYSLIB0058`__ | KeyExchangeAlgorithm, KeyExchangeStrength, CipherAlgorithm, CipherStrength, HashAlgorithm and HashStrength properties of SslStream are obsolete. Use NegotiatedCipherSuite instead. |
| __`SYSLIB0059`__ | SystemEvents.EventsThreadShutdown callbacks are not run before the process exits. Use AppDomain.ProcessExit instead. |
| __`SYSLIB0060`__ | The constructors on Rfc2898DeriveBytes are obsolete. Use the static Pbkdf2 method instead. |
| __`SYSLIB0061`__ | The Queryable MinBy and MaxBy taking an IComparer\<TSource\> are obsolete. Use the new ones that take an IComparer\<TKey\>. |

## Analyzer Warnings

@@ -185,7 +186,7 @@ The diagnostic id values reserved for .NET Libraries analyzer warnings are `SYSL
| __`SYSLIB1059`__ | Marshaller type does not support allocating constructor |
| __`SYSLIB1060`__ | Specified marshaller type is invalid |
| __`SYSLIB1061`__ | Marshaller type has incompatible method signatures |
| __`SYSLIB1062`__ | Project must be updated with '<AllowUnsafeBlocks>true</AllowUnsafeBlocks>' |
| __`SYSLIB1062`__ | Project must be updated with '\<AllowUnsafeBlocks\>true\</AllowUnsafeBlocks\>' |
| __`SYSLIB1063`__ | _`SYSLIB1063`-`SYSLIB1069` reserved for Microsoft.Interop.LibraryImportGenerator._ |
| __`SYSLIB1064`__ | _`SYSLIB1063`-`SYSLIB1069` reserved for Microsoft.Interop.LibraryImportGenerator._ |
| __`SYSLIB1065`__ | _`SYSLIB1063`-`SYSLIB1069` reserved for Microsoft.Interop.LibraryImportGenerator._ |
8 changes: 6 additions & 2 deletions eng/Signing.props
Original file line number Diff line number Diff line change
@@ -43,8 +43,12 @@
<FileSignInfo Include="mscordaccore.dll" CertificateName="None" />
<FileSignInfo Include="mscordbi.dll" CertificateName="None" />

<!-- On MacOS, we need to sign a number of our executables with the Mac developer cert with hardening enabled. -->
<FileSignInfo Condition="'$(TargetsOSX)' == 'true'" Include="dotnet;apphost;corerun;createdump" CertificateName="MacDeveloperHarden" />
<!-- On MacOS, we need to sign a number of our executables with the Mac developer cert with hardening enabled.
Avoid doing this on Linux, which has the same executable names -->
<FileSignInfo Condition="'$(TargetsOSX)' == 'true'" Include="dotnet;apphost;corerun;createdump;singlefilehost;crossgen2;ilasm;ilc;ildasm;llc;mono-aot-cross;opt;Mono" CertificateName="MacDeveloperHarden" />
<!-- Additionally, we need to notarize any .pkg files -->
<MacOSPkg Include="$(ArtifactsPackagesDir)**/dotnet-runtime*.pkg" Exclude="$(ArtifactsPackagesDir)**/dotnet-runtime-internal*.pkg" />
<FileSignInfo Include="@(MacOSPkg->'%(Filename)%(Extension)')" CertificateName="MacDeveloperWithNotarization" />

<!-- We don't need to code sign .js files because they are not used in Windows Script Host. -->
<!-- WARNING: Needs to happed outside of any target -->
13 changes: 13 additions & 0 deletions eng/SourceBuildPrebuiltBaseline.xml
Original file line number Diff line number Diff line change
@@ -36,5 +36,18 @@
<UsagePattern IdentityGlob="System.IO.Pipelines/7.0.0" />
<UsagePattern IdentityGlob="System.IO.Pipelines/8.0.*" />
<UsagePattern IdentityGlob="System.Security.Cryptography.Pkcs/5.0.0" />

<!-- Dependencies of Roslyn, replaced with live packages during full source build
https://github.com/dotnet/runtime/pull/112937#discussion_r2022951143 -->
<UsagePattern IdentityGlob="Microsoft.Bcl.AsyncInterfaces/9.0.0" />
<UsagePattern IdentityGlob="System.Collections.Immutable/9.0.0" />
<UsagePattern IdentityGlob="System.Composition/9.0.0" />
<UsagePattern IdentityGlob="System.Composition.AttributedModel/9.0.0" />
<UsagePattern IdentityGlob="System.Composition.Convention/9.0.0" />
<UsagePattern IdentityGlob="System.Composition.Hosting/9.0.0" />
<UsagePattern IdentityGlob="System.Composition.Runtime/9.0.0" />
<UsagePattern IdentityGlob="System.Composition.TypedParts/9.0.0" />
<UsagePattern IdentityGlob="System.IO.Pipelines/9.0.0" />
<UsagePattern IdentityGlob="System.Reflection.Metadata/9.0.0" />
</IgnorePatterns>
</UsageData>
Loading