From 908613c0e63f47e8bb8721097d93a6efb41490e8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?=
<1175054+carlossanlop@users.noreply.github.com>
Date: Thu, 15 Aug 2024 12:15:35 -0700
Subject: [PATCH 001/748] Bump the release/9.0 branch to RC2 (#106429)
---
eng/Versions.props | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/eng/Versions.props b/eng/Versions.props
index 825852f98342ac..c3885223cc5946 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -11,7 +11,7 @@
7.0.206.0.$([MSBuild]::Add($([System.Version]::Parse('$(PackageVersionNet8)').Build),25))rc
- 1
+ 2falserelease
From f91cf24e9d239b2604d863d321c2492652203c36 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Thu, 15 Aug 2024 12:26:38 -0700
Subject: [PATCH 002/748] Change OneLocBuild mirror branch to release/9.0
temporarily (#106434)
Co-authored-by: carlossanlop <1175054+carlossanlop@users.noreply.github.com>
---
eng/pipelines/runtime-official.yml | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/eng/pipelines/runtime-official.yml b/eng/pipelines/runtime-official.yml
index a899d2d1991e33..55021be6e29ed4 100644
--- a/eng/pipelines/runtime-official.yml
+++ b/eng/pipelines/runtime-official.yml
@@ -41,12 +41,13 @@ extends:
# Localization build
#
- - template: /eng/common/templates-official/job/onelocbuild.yml
- parameters:
- MirrorRepo: runtime
- MirrorBranch: main
- LclSource: lclFilesfromPackage
- LclPackageId: 'LCL-JUNO-PROD-RUNTIME'
+ - ${{ if eq(variables['Build.SourceBranch'], 'refs/heads/release/9.0') }}:
+ - template: /eng/common/templates-official/job/onelocbuild.yml
+ parameters:
+ MirrorRepo: runtime
+ MirrorBranch: release/9.0
+ LclSource: lclFilesfromPackage
+ LclPackageId: 'LCL-JUNO-PROD-RUNTIME'
#
# Source Index Build
From 5694fe08646c64f2cf2435108981b32d0d3f4056 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Thu, 15 Aug 2024 15:45:08 -0700
Subject: [PATCH 003/748] =?UTF-8?q?Revert=20"Use=20`Unsafe.BitCast`=20for?=
=?UTF-8?q?=20`Int128`=20=E2=86=94`UInt128`=20operators=20(#104506)"=20(#1?=
=?UTF-8?q?06431)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This reverts commit 01dbf511d03f17bff6ac3effc4c5aabaa597cf74.
Co-authored-by: Stephen Toub
---
src/libraries/System.Private.CoreLib/src/System/Int128.cs | 4 ++--
src/libraries/System.Private.CoreLib/src/System/UInt128.cs | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/libraries/System.Private.CoreLib/src/System/Int128.cs b/src/libraries/System.Private.CoreLib/src/System/Int128.cs
index 7a69db71674f47..241c1c39e71d55 100644
--- a/src/libraries/System.Private.CoreLib/src/System/Int128.cs
+++ b/src/libraries/System.Private.CoreLib/src/System/Int128.cs
@@ -425,7 +425,7 @@ public static explicit operator checked ulong(Int128 value)
/// The value to convert.
/// converted to a .
[CLSCompliant(false)]
- public static explicit operator UInt128(Int128 value) => Unsafe.BitCast(value);
+ public static explicit operator UInt128(Int128 value) => new UInt128(value._upper, value._lower);
/// Explicitly converts a 128-bit signed integer to a value, throwing an overflow exception for any values that fall outside the representable range.
/// The value to convert.
@@ -438,7 +438,7 @@ public static explicit operator checked UInt128(Int128 value)
{
ThrowHelper.ThrowOverflowException();
}
- return Unsafe.BitCast(value);
+ return new UInt128(value._upper, value._lower);
}
/// Explicitly converts a 128-bit signed integer to a value.
diff --git a/src/libraries/System.Private.CoreLib/src/System/UInt128.cs b/src/libraries/System.Private.CoreLib/src/System/UInt128.cs
index 7318f77480d0de..a37ec00c1b2809 100644
--- a/src/libraries/System.Private.CoreLib/src/System/UInt128.cs
+++ b/src/libraries/System.Private.CoreLib/src/System/UInt128.cs
@@ -344,7 +344,7 @@ public static explicit operator checked long(UInt128 value)
/// The value to convert.
/// converted to a .
[CLSCompliant(false)]
- public static explicit operator Int128(UInt128 value) => Unsafe.BitCast(value);
+ public static explicit operator Int128(UInt128 value) => new Int128(value._upper, value._lower);
/// Explicitly converts a 128-bit unsigned integer to a value, throwing an overflow exception for any values that fall outside the representable range.
/// The value to convert.
@@ -357,7 +357,7 @@ public static explicit operator checked Int128(UInt128 value)
{
ThrowHelper.ThrowOverflowException();
}
- return Unsafe.BitCast(value);
+ return new Int128(value._upper, value._lower);
}
/// Explicitly converts a 128-bit unsigned integer to a value.
From 83bac9500ebe3e48357a3989f6764bac276716e1 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
<42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Thu, 15 Aug 2024 15:45:36 -0700
Subject: [PATCH 004/748] Update dependencies from
https://github.com/dotnet/emsdk build 20240815.2 (#106481)
Microsoft.SourceBuild.Intermediate.emsdk , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport
From Version 9.0.0-rc.1.24402.2 -> To Version 9.0.0-rc.1.24415.2
Co-authored-by: dotnet-maestro[bot]
---
eng/Version.Details.xml | 8 ++++----
eng/Versions.props | 2 +-
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 404afcb93bc191..64f4eae05adbe1 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -64,14 +64,14 @@
ed276e79e30bffc3e6405afa8a9323ec7e67c700
-
+ https://github.com/dotnet/emsdk
- edf3e90fa25b1fc4f7f63ceb45ef70f49c6b121a
+ 39cd6c01fd85bcf4a51b834fb430d05aaa57f955
-
+ https://github.com/dotnet/emsdk
- edf3e90fa25b1fc4f7f63ceb45ef70f49c6b121a
+ 39cd6c01fd85bcf4a51b834fb430d05aaa57f955
diff --git a/eng/Versions.props b/eng/Versions.props
index 825852f98342ac..bc476f4c8148b8 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -239,7 +239,7 @@
Note: when the name is updated, make sure to update dependency name in eng/pipelines/common/xplat-setup.yml
like - DarcDependenciesChanged.Microsoft_NET_Workload_Emscripten_Current_Manifest-9_0_100_Transport
-->
- 9.0.0-rc.1.24402.2
+ 9.0.0-rc.1.24415.2$(MicrosoftNETWorkloadEmscriptenCurrentManifest90100TransportVersion)1.1.87-gba258badda
From 0784f3e4e5ce40da2df38406806d00cd47a11178 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
<42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Thu, 15 Aug 2024 16:54:19 -0700
Subject: [PATCH 005/748] Update dependencies from
https://github.com/dotnet/roslyn-analyzers build 20240815.1 (#106499)
Microsoft.CodeAnalysis.Analyzers , Microsoft.CodeAnalysis.NetAnalyzers
From Version 3.11.0-beta1.24405.1 -> To Version 3.11.0-beta1.24415.1
Co-authored-by: dotnet-maestro[bot]
---
eng/Version.Details.xml | 8 ++++----
eng/Versions.props | 4 ++--
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 64f4eae05adbe1..369c6f9aed7c9b 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -368,13 +368,13 @@
https://github.com/dotnet/roslynbba7ceac50f68468ec9733a6a66f2314227101d4
-
+ https://github.com/dotnet/roslyn-analyzers
- 3211f48253bc18560156d90dc5e710d35f7d03fa
+ fdb9965ce68c1f4e1c0ff301488adf9caa958615
-
+ https://github.com/dotnet/roslyn-analyzers
- 3211f48253bc18560156d90dc5e710d35f7d03fa
+ fdb9965ce68c1f4e1c0ff301488adf9caa958615
diff --git a/eng/Versions.props b/eng/Versions.props
index bc476f4c8148b8..393b03da78babe 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -34,8 +34,8 @@
- 3.11.0-beta1.24405.1
- 9.0.0-preview.24405.1
+ 3.11.0-beta1.24415.1
+ 9.0.0-preview.24415.1
diff --git a/eng/Versions.props b/eng/Versions.props
index c3885223cc5946..daffdb49e922aa 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -34,8 +34,8 @@
- 3.11.0-beta1.24405.1
- 9.0.0-preview.24405.1
+ 3.11.0-beta1.24415.1
+ 9.0.0-preview.24415.1
-
Date: Fri, 16 Aug 2024 11:02:21 -0700
Subject: [PATCH 009/748] Remove assert (#106542)
Co-authored-by: Aman Khalid (from Dev Box)
---
src/coreclr/jit/optimizebools.cpp | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/coreclr/jit/optimizebools.cpp b/src/coreclr/jit/optimizebools.cpp
index 0362fdc2c91f8b..2346ef7e9e278f 100644
--- a/src/coreclr/jit/optimizebools.cpp
+++ b/src/coreclr/jit/optimizebools.cpp
@@ -1327,7 +1327,6 @@ void OptBoolsDsc::optOptimizeBoolsUpdateTrees()
assert(m_b2->KindIs(BBJ_COND));
assert(m_b1->TrueTargetIs(m_b2->GetTrueTarget()));
assert(m_b1->FalseTargetIs(m_b2));
- assert(!m_b2->IsLast());
// We now reach B2's false target via B1 false.
//
From 30f18f6205608cf4f367ef32bac4b8c954c0cc88 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
<42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Fri, 16 Aug 2024 11:07:23 -0700
Subject: [PATCH 010/748] Update dependencies from
https://github.com/dotnet/emsdk build 20240815.4 (#106533)
Microsoft.SourceBuild.Intermediate.emsdk , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport
From Version 9.0.0-rc.1.24402.2 -> To Version 10.0.0-alpha.1.24415.4
Co-authored-by: dotnet-maestro[bot]
---
eng/Version.Details.xml | 8 ++++----
eng/Versions.props | 2 +-
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index bbe99d493b6c0b..b3b4bed5b9f4ad 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -64,14 +64,14 @@
ed276e79e30bffc3e6405afa8a9323ec7e67c700
-
+ https://github.com/dotnet/emsdk
- edf3e90fa25b1fc4f7f63ceb45ef70f49c6b121a
+ 6c91507683fd47c500956743cc93750aba4da54d
-
+ https://github.com/dotnet/emsdk
- edf3e90fa25b1fc4f7f63ceb45ef70f49c6b121a
+ 6c91507683fd47c500956743cc93750aba4da54d
diff --git a/eng/Versions.props b/eng/Versions.props
index daffdb49e922aa..57124b541d8474 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -239,7 +239,7 @@
Note: when the name is updated, make sure to update dependency name in eng/pipelines/common/xplat-setup.yml
like - DarcDependenciesChanged.Microsoft_NET_Workload_Emscripten_Current_Manifest-9_0_100_Transport
-->
- 9.0.0-rc.1.24402.2
+ 10.0.0-alpha.1.24415.4$(MicrosoftNETWorkloadEmscriptenCurrentManifest90100TransportVersion)1.1.87-gba258badda
From 61b7231dd61da3f4870dee24311e56a45c4e0554 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
<42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Fri, 16 Aug 2024 11:08:08 -0700
Subject: [PATCH 011/748] [release/9.0] Update dependencies from dotnet/icu,
dotnet/source-build-externals (#106532)
* Update dependencies from https://github.com/dotnet/source-build-externals build 20240815.1
Microsoft.SourceBuild.Intermediate.source-build-externals
From Version 9.0.0-alpha.1.24412.1 -> To Version 10.0.0-alpha.1.24415.1
* Update dependencies from https://github.com/dotnet/icu build 20240814.3
Microsoft.NETCore.Runtime.ICU.Transport
From Version 9.0.0-rc.1.24373.1 -> To Version 10.0.0-alpha.1.24414.3
---------
Co-authored-by: dotnet-maestro[bot]
---
eng/Version.Details.xml | 8 ++++----
eng/Versions.props | 2 +-
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index b3b4bed5b9f4ad..ca5424509ef8c2 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -1,8 +1,8 @@
-
+ https://github.com/dotnet/icu
- 99e6c98ad1faf55e6335ab768dab5917b456a87f
+ 5e8042fc4234e09540448c06a3da434492dfc91chttps://github.com/dotnet/msquic
@@ -81,9 +81,9 @@
-
+ https://github.com/dotnet/source-build-externals
- ee22054b44ec9615dc3481c4decc1b007a83a2b0
+ 2cef086137a68586fdd69848261e2a8cf8c48b73
diff --git a/eng/Versions.props b/eng/Versions.props
index 57124b541d8474..a36cb4e69c75a9 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -216,7 +216,7 @@
9.0.0-rc.1.24410.5
- 9.0.0-rc.1.24373.1
+ 10.0.0-alpha.1.24414.32.4.39.0.0-alpha.1.24167.3
From e64da6057074ce15e00991b5cdc294ce2147967e Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Fri, 16 Aug 2024 11:50:20 -0700
Subject: [PATCH 012/748] [release/9.0] Fix Enum field type bug found when
underlying type is set from assembly loaded with MLC (#106513)
* Fix EnumBuilder.UnderlyingSystemType property
* Remove validation that failing when setting constants with core assembly type
---------
Co-authored-by: Buyaa Namnan
---
.../src/Resources/Strings.resx | 3 +
.../System/Reflection/Emit/EnumBuilderImpl.cs | 2 +-
.../Reflection/Emit/FieldBuilderImpl.cs | 68 -------------------
.../System/Reflection/Emit/ILGeneratorImpl.cs | 14 ++--
.../Reflection/Emit/ParameterBuilderImpl.cs | 2 -
.../Reflection/Emit/PropertyBuilderImpl.cs | 1 -
.../System/Reflection/Emit/TypeBuilderImpl.cs | 26 ++++---
.../AssemblySaveEnumBuilderTests.cs | 6 +-
.../AssemblySavePropertyBuilderTests.cs | 32 +++++----
9 files changed, 44 insertions(+), 110 deletions(-)
diff --git a/src/libraries/System.Reflection.Emit/src/Resources/Strings.resx b/src/libraries/System.Reflection.Emit/src/Resources/Strings.resx
index 6103dbef1f159d..8ec0577d1f8ea8 100644
--- a/src/libraries/System.Reflection.Emit/src/Resources/Strings.resx
+++ b/src/libraries/System.Reflection.Emit/src/Resources/Strings.resx
@@ -303,4 +303,7 @@
Unmatching symbol scope.
+
+ Type provided must be an Enum.
+
\ No newline at end of file
diff --git a/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/EnumBuilderImpl.cs b/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/EnumBuilderImpl.cs
index 1d8854bb43d9ad..5ca6e6c957749a 100644
--- a/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/EnumBuilderImpl.cs
+++ b/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/EnumBuilderImpl.cs
@@ -71,7 +71,7 @@ protected override void SetCustomAttributeCore(ConstructorInfo con, ReadOnlySpan
public override Type? ReflectedType => _typeBuilder.ReflectedType;
- public override Type UnderlyingSystemType => GetEnumUnderlyingType();
+ public override Type UnderlyingSystemType => this;
public override Type GetEnumUnderlyingType() => _underlyingField.FieldType;
diff --git a/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/FieldBuilderImpl.cs b/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/FieldBuilderImpl.cs
index f9f85f90b2aa57..8d0561d15be47b 100644
--- a/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/FieldBuilderImpl.cs
+++ b/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/FieldBuilderImpl.cs
@@ -40,78 +40,10 @@ internal FieldBuilderImpl(TypeBuilderImpl typeBuilder, string fieldName, Type ty
protected override void SetConstantCore(object? defaultValue)
{
_typeBuilder.ThrowIfCreated();
- ValidateDefaultValueType(defaultValue, _fieldType);
_defaultValue = defaultValue;
_attributes |= FieldAttributes.HasDefault;
}
- internal static void ValidateDefaultValueType(object? defaultValue, Type destinationType)
- {
- if (defaultValue == null)
- {
- // nullable value types can hold null value.
- if (destinationType.IsValueType && !(destinationType.IsGenericType && destinationType.GetGenericTypeDefinition() == typeof(Nullable<>)))
- {
- throw new ArgumentException(SR.Argument_ConstantNull);
- }
- }
- else
- {
- Type sourceType = defaultValue.GetType();
- // We should allow setting a constant value on a ByRef parameter
- if (destinationType.IsByRef)
- {
- destinationType = destinationType.GetElementType()!;
- }
-
- // Convert nullable types to their underlying type.
- destinationType = Nullable.GetUnderlyingType(destinationType) ?? destinationType;
-
- if (destinationType.IsEnum)
- {
- Type underlyingType;
- if (destinationType is EnumBuilderImpl enumBldr)
- {
- underlyingType = enumBldr.GetEnumUnderlyingType();
-
- if (sourceType != enumBldr._typeBuilder.UnderlyingSystemType &&
- sourceType != underlyingType &&
- // If the source type is an enum, should not throw when the underlying types match
- sourceType.IsEnum &&
- sourceType.GetEnumUnderlyingType() != underlyingType)
- {
- throw new ArgumentException(SR.Argument_ConstantDoesntMatch);
- }
- }
- else if (destinationType is TypeBuilderImpl typeBldr)
- {
- underlyingType = typeBldr.UnderlyingSystemType;
-
- if (underlyingType == null || (sourceType != typeBldr.UnderlyingSystemType && sourceType != underlyingType))
- {
- throw new ArgumentException(SR.Argument_ConstantDoesntMatch);
- }
- }
- else
- {
- underlyingType = Enum.GetUnderlyingType(destinationType);
-
- if (sourceType != destinationType && sourceType != underlyingType)
- {
- throw new ArgumentException(SR.Argument_ConstantDoesntMatch);
- }
- }
- }
- else
- {
- if (!destinationType.IsAssignableFrom(sourceType))
- {
- throw new ArgumentException(SR.Argument_ConstantDoesntMatch);
- }
- }
- }
- }
-
internal void SetData(byte[] data)
{
_rvaData = data;
diff --git a/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/ILGeneratorImpl.cs b/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/ILGeneratorImpl.cs
index d4b40387e30e20..ef186a685a397c 100644
--- a/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/ILGeneratorImpl.cs
+++ b/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/ILGeneratorImpl.cs
@@ -601,7 +601,7 @@ public override void EmitCall(OpCode opcode, MethodInfo methodInfo, Type[]? opti
}
EmitOpcode(opcode);
- UpdateStackSize(GetStackChange(opcode, methodInfo, optionalParameterTypes));
+ UpdateStackSize(GetStackChange(opcode, methodInfo, _moduleBuilder.GetTypeFromCoreAssembly(CoreTypeId.Void), optionalParameterTypes));
if (optionalParameterTypes == null || optionalParameterTypes.Length == 0)
{
WriteOrReserveToken(_moduleBuilder.TryGetMethodHandle(methodInfo), methodInfo);
@@ -613,12 +613,12 @@ public override void EmitCall(OpCode opcode, MethodInfo methodInfo, Type[]? opti
}
}
- private static int GetStackChange(OpCode opcode, MethodInfo methodInfo, Type[]? optionalParameterTypes)
+ private static int GetStackChange(OpCode opcode, MethodInfo methodInfo, Type voidType, Type[]? optionalParameterTypes)
{
int stackChange = 0;
// Push the return value if there is one.
- if (methodInfo.ReturnType != typeof(void))
+ if (methodInfo.ReturnType != voidType)
{
stackChange++;
}
@@ -665,7 +665,7 @@ public override void EmitCalli(OpCode opcode, CallingConventions callingConventi
}
}
- int stackChange = GetStackChange(returnType, parameterTypes);
+ int stackChange = GetStackChange(returnType, _moduleBuilder.GetTypeFromCoreAssembly(CoreTypeId.Void), parameterTypes);
// Pop off VarArg arguments.
if (optionalParameterTypes != null)
@@ -685,17 +685,17 @@ public override void EmitCalli(OpCode opcode, CallingConventions callingConventi
public override void EmitCalli(OpCode opcode, CallingConvention unmanagedCallConv, Type? returnType, Type[]? parameterTypes)
{
- int stackChange = GetStackChange(returnType, parameterTypes);
+ int stackChange = GetStackChange(returnType, _moduleBuilder.GetTypeFromCoreAssembly(CoreTypeId.Void), parameterTypes);
UpdateStackSize(stackChange);
Emit(OpCodes.Calli);
_il.Token(_moduleBuilder.GetSignatureToken(unmanagedCallConv, returnType, parameterTypes));
}
- private static int GetStackChange(Type? returnType, Type[]? parameterTypes)
+ private static int GetStackChange(Type? returnType, Type voidType, Type[]? parameterTypes)
{
int stackChange = 0;
// If there is a non-void return type, push one.
- if (returnType != typeof(void))
+ if (returnType != voidType)
{
stackChange++;
}
diff --git a/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/ParameterBuilderImpl.cs b/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/ParameterBuilderImpl.cs
index 93040c155f2074..f1b6446be8e0f8 100644
--- a/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/ParameterBuilderImpl.cs
+++ b/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/ParameterBuilderImpl.cs
@@ -32,8 +32,6 @@ public ParameterBuilderImpl(MethodBuilderImpl methodBuilder, int sequence, Param
public override void SetConstant(object? defaultValue)
{
- Type parameterType = _position == 0 ? _methodBuilder.ReturnType : _methodBuilder.ParameterTypes![_position - 1];
- FieldBuilderImpl.ValidateDefaultValueType(defaultValue, parameterType);
_defaultValue = defaultValue;
_attributes |= ParameterAttributes.HasDefault;
}
diff --git a/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/PropertyBuilderImpl.cs b/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/PropertyBuilderImpl.cs
index 68cc5a813451d3..faf1538a1a8e84 100644
--- a/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/PropertyBuilderImpl.cs
+++ b/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/PropertyBuilderImpl.cs
@@ -57,7 +57,6 @@ protected override void AddOtherMethodCore(MethodBuilder mdBuilder)
protected override void SetConstantCore(object? defaultValue)
{
_containingType.ThrowIfCreated();
- FieldBuilderImpl.ValidateDefaultValueType(defaultValue, _propertyType);
_defaultValue = defaultValue;
}
diff --git a/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/TypeBuilderImpl.cs b/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/TypeBuilderImpl.cs
index c4480d7cee5538..4a48349359e71e 100644
--- a/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/TypeBuilderImpl.cs
+++ b/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/TypeBuilderImpl.cs
@@ -305,7 +305,6 @@ protected override MethodBuilder DefineMethodCore(string name, MethodAttributes
{
ThrowIfCreated();
-
MethodBuilderImpl methodBuilder = new(name, attributes, callingConvention, returnType, returnTypeRequiredCustomModifiers,
returnTypeOptionalCustomModifiers, parameterTypes, parameterTypeRequiredCustomModifiers, parameterTypeOptionalCustomModifiers, _module, this);
_methodDefinitions.Add(methodBuilder);
@@ -616,23 +615,22 @@ public override Type GetGenericTypeDefinition()
public override string? Namespace => _namespace;
public override Assembly Assembly => _module.Assembly;
public override Module Module => _module;
- public override Type UnderlyingSystemType
+ public override Type UnderlyingSystemType => this;
+
+ public override Type GetEnumUnderlyingType()
{
- get
+ if (IsEnum)
{
- if (IsEnum)
- {
- if (_enumUnderlyingType == null)
- {
- throw new InvalidOperationException(SR.InvalidOperation_NoUnderlyingTypeOnEnum);
- }
-
- return _enumUnderlyingType;
- }
- else
+ if (_enumUnderlyingType == null)
{
- return this;
+ throw new InvalidOperationException(SR.InvalidOperation_NoUnderlyingTypeOnEnum);
}
+
+ return _enumUnderlyingType;
+ }
+ else
+ {
+ throw new ArgumentException(SR.Argument_MustBeEnum);
}
}
public override bool IsSZArray => false;
diff --git a/src/libraries/System.Reflection.Emit/tests/PersistedAssemblyBuilder/AssemblySaveEnumBuilderTests.cs b/src/libraries/System.Reflection.Emit/tests/PersistedAssemblyBuilder/AssemblySaveEnumBuilderTests.cs
index 3c569b815da639..b10126675568e3 100644
--- a/src/libraries/System.Reflection.Emit/tests/PersistedAssemblyBuilder/AssemblySaveEnumBuilderTests.cs
+++ b/src/libraries/System.Reflection.Emit/tests/PersistedAssemblyBuilder/AssemblySaveEnumBuilderTests.cs
@@ -37,7 +37,7 @@ public static IEnumerable
-
+ https://github.com/dotnet/emsdk
- 39cd6c01fd85bcf4a51b834fb430d05aaa57f955
+ 459c92904b224d125a350a3f3e431fe90152a95e
-
+ https://github.com/dotnet/emsdk
- 39cd6c01fd85bcf4a51b834fb430d05aaa57f955
+ 459c92904b224d125a350a3f3e431fe90152a95e
diff --git a/eng/Versions.props b/eng/Versions.props
index 590d5e32390f4e..a018ef2195731e 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -239,7 +239,7 @@
Note: when the name is updated, make sure to update dependency name in eng/pipelines/common/xplat-setup.yml
like - DarcDependenciesChanged.Microsoft_NET_Workload_Emscripten_Current_Manifest-9_0_100_Transport
-->
- 9.0.0-rc.1.24415.2
+ 9.0.0-rc.1.24416.2$(MicrosoftNETWorkloadEmscriptenCurrentManifest90100TransportVersion)1.1.87-gba258badda
From a73a65b1e9c8b05846ff4105c720806ae82cb3f8 Mon Sep 17 00:00:00 2001
From: Farhad Alizada <104755925+f-alizada@users.noreply.github.com>
Date: Mon, 19 Aug 2024 19:37:01 +0200
Subject: [PATCH 018/748] [release/9.0-rc1] Add workflow file for interbranch
merging (#106614)
Co-authored-by: Farhad Alizada
---
.github/workflows/inter-branch-merge-flow.yml | 13 +++++++++++++
1 file changed, 13 insertions(+)
create mode 100644 .github/workflows/inter-branch-merge-flow.yml
diff --git a/.github/workflows/inter-branch-merge-flow.yml b/.github/workflows/inter-branch-merge-flow.yml
new file mode 100644
index 00000000000000..20246c14fc5851
--- /dev/null
+++ b/.github/workflows/inter-branch-merge-flow.yml
@@ -0,0 +1,13 @@
+name: Inter-branch merge workflow
+on:
+ push:
+ branches:
+ - release/**
+
+permissions:
+ contents: write
+ pull-requests: write
+
+jobs:
+ Merge:
+ uses: dotnet/arcade/.github/workflows/inter-branch-merge-base.yml@main
\ No newline at end of file
From 2a9d9bc6274412cec94d561c999d060df0e53457 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Mon, 19 Aug 2024 10:37:47 -0700
Subject: [PATCH 019/748] [release/9.0-rc1] Fix condition for adding package
readmes (#106592)
* Fix condition for adding package readmes
Fixes https://github.com/dotnet/runtime/issues/106585
The EnableDefualtPackageReadmeFile property needs to be defined before packaging.targets is imported.
* Update workloads.csproj
---------
Co-authored-by: Viktor Hofer
---
eng/packaging.targets | 1 +
.../pkg/sfx/Microsoft.NETCore.App/Directory.Build.props | 1 -
src/libraries/Directory.Build.targets | 3 ---
.../Microsoft.NET.Runtime.WebAssembly.Templates.csproj | 2 ++
.../Microsoft.Diagnostics.NETCore.Client.csproj | 2 ++
src/tools/illink/src/ILLink.Tasks/ILLink.Tasks.csproj | 2 ++
src/workloads/workloads.csproj | 5 +++--
7 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/eng/packaging.targets b/eng/packaging.targets
index 6ad92552c25611..bc52dce0d14e53 100644
--- a/eng/packaging.targets
+++ b/eng/packaging.targets
@@ -22,6 +22,7 @@
$(MSBuildThisFileDirectory)useSharedDesignerContext.txt
+ truePACKAGE.mdPACKAGE.md$(BeforePack);ValidatePackageReadmeExists
diff --git a/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props b/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props
index d6af2ef9b786c8..f2379fc9ff34da 100644
--- a/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props
+++ b/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props
@@ -6,7 +6,6 @@
$(MicrosoftNetCoreAppFrameworkName)false.NET Runtime
- true
- true
diff --git a/src/mono/wasm/templates/Microsoft.NET.Runtime.WebAssembly.Templates.csproj b/src/mono/wasm/templates/Microsoft.NET.Runtime.WebAssembly.Templates.csproj
index 0a4927e350fe7a..bc6ac6d8a84747 100644
--- a/src/mono/wasm/templates/Microsoft.NET.Runtime.WebAssembly.Templates.csproj
+++ b/src/mono/wasm/templates/Microsoft.NET.Runtime.WebAssembly.Templates.csproj
@@ -16,6 +16,8 @@
$(NoWarn);NU5128truefalse
+
+ false
diff --git a/src/tests/tracing/eventpipe/common/Microsoft.Diagnostics.NETCore.Client/Microsoft.Diagnostics.NETCore.Client.csproj b/src/tests/tracing/eventpipe/common/Microsoft.Diagnostics.NETCore.Client/Microsoft.Diagnostics.NETCore.Client.csproj
index 49503b15eedcda..8acc555e78d55b 100644
--- a/src/tests/tracing/eventpipe/common/Microsoft.Diagnostics.NETCore.Client/Microsoft.Diagnostics.NETCore.Client.csproj
+++ b/src/tests/tracing/eventpipe/common/Microsoft.Diagnostics.NETCore.Client/Microsoft.Diagnostics.NETCore.Client.csproj
@@ -13,6 +13,8 @@
truefalsetrue
+
+ false
diff --git a/src/tools/illink/src/ILLink.Tasks/ILLink.Tasks.csproj b/src/tools/illink/src/ILLink.Tasks/ILLink.Tasks.csproj
index c7bda095b5b2ba..ea27178d3faabe 100644
--- a/src/tools/illink/src/ILLink.Tasks/ILLink.Tasks.csproj
+++ b/src/tools/illink/src/ILLink.Tasks/ILLink.Tasks.csproj
@@ -18,6 +18,8 @@
falsefalse$(TargetsForTfmSpecificContentInPackage);AddBuildOutputToToolsPackage
+
+ false
-
+
+
From f028127b6c99596783a7ccb5596cdccc5330bebf Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Mon, 19 Aug 2024 10:54:29 -0700
Subject: [PATCH 020/748] [release/9.0-rc1] JIT: fix unused operand marking in
LowerHWIntrinsicTernaryLogic (#106574)
* JIT: fix unused operand marking in LowerHWIntrinsicTernaryLogic
In `LowerHWIntrinsicTernaryLogic` we do some operand swapping and replacing,
and were not accounting for this when marking operands as unused.
Fixes #106480.
* review feedback
---------
Co-authored-by: Andy Ayers
---
src/coreclr/jit/lowerxarch.cpp | 7 +++++
.../JitBlue/Runtime_106480/Runtime_106480.cs | 31 +++++++++++++++++++
.../Runtime_106480/Runtime_106480.csproj | 8 +++++
3 files changed, 46 insertions(+)
create mode 100644 src/tests/JIT/Regression/JitBlue/Runtime_106480/Runtime_106480.cs
create mode 100644 src/tests/JIT/Regression/JitBlue/Runtime_106480/Runtime_106480.csproj
diff --git a/src/coreclr/jit/lowerxarch.cpp b/src/coreclr/jit/lowerxarch.cpp
index 0a1c884f3848cd..e2c4671974773b 100644
--- a/src/coreclr/jit/lowerxarch.cpp
+++ b/src/coreclr/jit/lowerxarch.cpp
@@ -3927,6 +3927,13 @@ GenTree* Lowering::LowerHWIntrinsicTernaryLogic(GenTreeHWIntrinsic* node)
}
}
+ // Update the locals to reflect any operand swaps we did above.
+
+ op1 = node->Op(1);
+ op2 = node->Op(2);
+ op3 = node->Op(3);
+ assert(op4 == node->Op(4));
+
GenTree* replacementNode = nullptr;
switch (useFlags)
diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_106480/Runtime_106480.cs b/src/tests/JIT/Regression/JitBlue/Runtime_106480/Runtime_106480.cs
new file mode 100644
index 00000000000000..620d7c6be52638
--- /dev/null
+++ b/src/tests/JIT/Regression/JitBlue/Runtime_106480/Runtime_106480.cs
@@ -0,0 +1,31 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+// Found by Antigen
+// Reduced from 121.36 KB to 3.38
+// Further redued by hand
+
+using System;
+using System.Runtime.Intrinsics;
+using System.Runtime.Intrinsics.X86;
+using Xunit;
+
+public class Runtime_106480
+{
+ Vector512 v512_ushort_102 = Vector512.AllBitsSet;
+
+ void Problem()
+ {
+ if (Avx512F.IsSupported)
+ {
+ byte byte_126 = 5;
+ Avx512F.TernaryLogic(v512_ushort_102, v512_ushort_102, v512_ushort_102, byte_126);
+ }
+ }
+
+ [Fact]
+ public static void Test()
+ {
+ new Runtime_106480().Problem();
+ }
+}
\ No newline at end of file
diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_106480/Runtime_106480.csproj b/src/tests/JIT/Regression/JitBlue/Runtime_106480/Runtime_106480.csproj
new file mode 100644
index 00000000000000..de6d5e08882e86
--- /dev/null
+++ b/src/tests/JIT/Regression/JitBlue/Runtime_106480/Runtime_106480.csproj
@@ -0,0 +1,8 @@
+
+
+ True
+
+
+
+
+
From 075bbef3585b43bfb00783c16045f55f147fa9b4 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
<42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Mon, 19 Aug 2024 11:42:30 -0700
Subject: [PATCH 021/748] [release/9.0] Update dependencies from dotnet/roslyn
(#106573)
* Update dependencies from https://github.com/dotnet/roslyn build 20240816.5
Microsoft.SourceBuild.Intermediate.roslyn , Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.CSharp , Microsoft.Net.Compilers.Toolset
From Version 4.12.0-2.24414.1 -> To Version 4.12.0-2.24416.5
* Update dependencies from https://github.com/dotnet/roslyn build 20240817.1
Microsoft.SourceBuild.Intermediate.roslyn , Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.CSharp , Microsoft.Net.Compilers.Toolset
From Version 4.12.0-2.24416.5 -> To Version 4.12.0-2.24417.1
---------
Co-authored-by: dotnet-maestro[bot]
---
eng/Version.Details.xml | 16 ++++++++--------
eng/Versions.props | 6 +++---
2 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index ca5424509ef8c2..2c5bab895c4b31 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -356,17 +356,17 @@
https://github.com/dotnet/runtime-assets3ed40d4f2335532ee7b04f8449468c52b4e2a643
-
+ https://github.com/dotnet/roslyn
- bba7ceac50f68468ec9733a6a66f2314227101d4
+ 75b26a2088e76855528483674a1fbeea0137241b
-
+ https://github.com/dotnet/roslyn
- bba7ceac50f68468ec9733a6a66f2314227101d4
+ 75b26a2088e76855528483674a1fbeea0137241b
-
+ https://github.com/dotnet/roslyn
- bba7ceac50f68468ec9733a6a66f2314227101d4
+ 75b26a2088e76855528483674a1fbeea0137241bhttps://github.com/dotnet/roslyn-analyzers
@@ -377,9 +377,9 @@
fdb9965ce68c1f4e1c0ff301488adf9caa958615
-
+ https://github.com/dotnet/roslyn
- bba7ceac50f68468ec9733a6a66f2314227101d4
+ 75b26a2088e76855528483674a1fbeea0137241b
diff --git a/eng/Versions.props b/eng/Versions.props
index a36cb4e69c75a9..d753a363149f40 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -42,9 +42,9 @@
Any tools that contribute to the design-time experience should use the MicrosoftCodeAnalysisVersion_LatestVS property above to ensure
they do not break the local dev experience.
-->
- 4.12.0-2.24414.1
- 4.12.0-2.24414.1
- 4.12.0-2.24414.1
+ 4.12.0-2.24417.1
+ 4.12.0-2.24417.1
+ 4.12.0-2.24417.1
-
+ https://github.com/dotnet/runtime
- 7cb32e193a55a95c74fc3bd56501b951b48b700f
+ 418c3b9e2753715fa017ace6b3f1f5ec4d4d6aae
-
+ https://github.com/dotnet/runtime
- 7cb32e193a55a95c74fc3bd56501b951b48b700f
+ 418c3b9e2753715fa017ace6b3f1f5ec4d4d6aae
-
+ https://github.com/dotnet/runtime
- 7cb32e193a55a95c74fc3bd56501b951b48b700f
+ 418c3b9e2753715fa017ace6b3f1f5ec4d4d6aae
-
+ https://github.com/dotnet/runtime
- 7cb32e193a55a95c74fc3bd56501b951b48b700f
+ 418c3b9e2753715fa017ace6b3f1f5ec4d4d6aaehttps://github.com/dotnet/xharness
@@ -352,9 +352,9 @@
https://github.com/dotnet/hotreload-utils90b2ffe6186a5fa3782a65f61ef396b0463d29b2
-
+ https://github.com/dotnet/runtime-assets
- 3ed40d4f2335532ee7b04f8449468c52b4e2a643
+ 6d82d2732e240983f23ebe53d3cfb8fcd3b3ec0dhttps://github.com/dotnet/roslyn
diff --git a/eng/Versions.props b/eng/Versions.props
index d753a363149f40..db6595fff9419f 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -104,10 +104,10 @@
6.0.0-preview.1.102
- 9.0.0-rc.1.24410.5
+ 9.0.0-rc.1.24419.26.0.0
- 9.0.0-rc.1.24410.5
+ 9.0.0-rc.1.24419.26.0.01.1.1
@@ -119,39 +119,39 @@
8.0.05.0.04.5.5
- 9.0.0-rc.1.24410.5
- 9.0.0-rc.1.24410.5
+ 9.0.0-rc.1.24419.2
+ 9.0.0-rc.1.24419.26.0.05.0.05.0.05.0.07.0.0
- 9.0.0-rc.1.24410.5
+ 9.0.0-rc.1.24419.26.0.07.0.04.5.44.5.0
- 9.0.0-rc.1.24410.5
+ 9.0.0-rc.1.24419.28.0.08.0.08.0.08.0.0
- 9.0.0-beta.24407.1
- 9.0.0-beta.24407.1
- 9.0.0-beta.24407.1
- 9.0.0-beta.24407.1
- 9.0.0-beta.24407.1
- 9.0.0-beta.24407.1
- 9.0.0-beta.24407.1
- 9.0.0-beta.24407.1
- 9.0.0-beta.24407.1
- 9.0.0-beta.24407.1
- 9.0.0-beta.24407.1
- 9.0.0-beta.24407.1
- 9.0.0-beta.24407.1
- 9.0.0-beta.24407.1
+ 9.0.0-beta.24419.1
+ 9.0.0-beta.24419.1
+ 9.0.0-beta.24419.1
+ 9.0.0-beta.24419.1
+ 9.0.0-beta.24419.1
+ 9.0.0-beta.24419.1
+ 9.0.0-beta.24419.1
+ 9.0.0-beta.24419.1
+ 9.0.0-beta.24419.1
+ 9.0.0-beta.24419.1
+ 9.0.0-beta.24419.1
+ 9.0.0-beta.24419.1
+ 9.0.0-beta.24419.1
+ 9.0.0-beta.24419.11.0.0-prerelease.24376.41.0.0-prerelease.24376.4
@@ -214,7 +214,7 @@
0.11.5-alpha.24413.1
- 9.0.0-rc.1.24410.5
+ 9.0.0-rc.1.24419.210.0.0-alpha.1.24414.3
diff --git a/global.json b/global.json
index ec8a8797b90408..9c5a350b0f574e 100644
--- a/global.json
+++ b/global.json
@@ -13,6 +13,6 @@
"Microsoft.DotNet.SharedFramework.Sdk": "9.0.0-beta.24408.2",
"Microsoft.Build.NoTargets": "3.7.0",
"Microsoft.Build.Traversal": "3.4.0",
- "Microsoft.NET.Sdk.IL": "9.0.0-rc.1.24410.5"
+ "Microsoft.NET.Sdk.IL": "9.0.0-rc.1.24419.2"
}
}
From 623b40260c5e99ff5999ef30a8e35c7d90bd8699 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
<42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Mon, 19 Aug 2024 11:43:06 -0700
Subject: [PATCH 023/748] Update dependencies from
https://dev.azure.com/dnceng/internal/_git/dotnet-optimization build
20240809.2 (#106630)
optimization.linux-arm64.MIBC.Runtime , optimization.linux-x64.MIBC.Runtime , optimization.windows_nt-arm64.MIBC.Runtime , optimization.windows_nt-x64.MIBC.Runtime , optimization.windows_nt-x86.MIBC.Runtime , optimization.PGO.CoreCLR
From Version 1.0.0-prerelease.24376.4 -> To Version 1.0.0-prerelease.24409.2
Co-authored-by: dotnet-maestro[bot]
---
eng/Version.Details.xml | 24 ++++++++++++------------
eng/Versions.props | 12 ++++++------
2 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 0f86aebbf1c649..13bd727b33a79b 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -332,21 +332,21 @@
https://github.com/dotnet/arcade60ae233c3d77f11c5fdb53e570b64d503b13ba59
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-optimization
- 1b39aa819a38d504f7f828c28ff173acca7f99e2
+ 8674aaa459d33551d419fece377f5512a1d93689
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-optimization
- 1b39aa819a38d504f7f828c28ff173acca7f99e2
+ 8674aaa459d33551d419fece377f5512a1d93689
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-optimization
- 1b39aa819a38d504f7f828c28ff173acca7f99e2
+ 8674aaa459d33551d419fece377f5512a1d93689
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-optimization
- 1b39aa819a38d504f7f828c28ff173acca7f99e2
+ 8674aaa459d33551d419fece377f5512a1d93689https://github.com/dotnet/hotreload-utils
@@ -392,13 +392,13 @@
43360291a50c9c7c471551f8f8363919d38014ea
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-optimization
- 1b39aa819a38d504f7f828c28ff173acca7f99e2
+ 8674aaa459d33551d419fece377f5512a1d93689
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-optimization
- 1b39aa819a38d504f7f828c28ff173acca7f99e2
+ 8674aaa459d33551d419fece377f5512a1d93689
diff --git a/eng/Versions.props b/eng/Versions.props
index db6595fff9419f..cd93abaf34136a 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -153,12 +153,12 @@
9.0.0-beta.24419.19.0.0-beta.24419.1
- 1.0.0-prerelease.24376.4
- 1.0.0-prerelease.24376.4
- 1.0.0-prerelease.24376.4
- 1.0.0-prerelease.24376.4
- 1.0.0-prerelease.24376.4
- 1.0.0-prerelease.24376.4
+ 1.0.0-prerelease.24409.2
+ 1.0.0-prerelease.24409.2
+ 1.0.0-prerelease.24409.2
+ 1.0.0-prerelease.24409.2
+ 1.0.0-prerelease.24409.2
+ 1.0.0-prerelease.24409.22.0.017.10.0-beta1.24272.1
From 0bf8d1e16158c2f8fb4e7039fee1be11d216a0ec Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Tue, 20 Aug 2024 08:41:10 -0700
Subject: [PATCH 024/748] Include libz.a in native aot packages (#106673)
Fixes #106566
Co-authored-by: Jan Kotas
---
.../Microsoft.NETCore.Native.Unix.targets | 8 ++++++--
.../libs/System.IO.Compression.Native/CMakeLists.txt | 7 +------
2 files changed, 7 insertions(+), 8 deletions(-)
diff --git a/src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Unix.targets b/src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Unix.targets
index 19c6ce7a4b376a..d2696ffbcad6dc 100644
--- a/src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Unix.targets
+++ b/src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Unix.targets
@@ -24,7 +24,7 @@ The .NET Foundation licenses this file to you under the MIT license.
lldbfd1572864
- true
+ true
@@ -136,7 +136,6 @@ The .NET Foundation licenses this file to you under the MIT license.
-
@@ -151,6 +150,11 @@ The .NET Foundation licenses this file to you under the MIT license.
+
+
+
+
+
diff --git a/src/native/libs/System.IO.Compression.Native/CMakeLists.txt b/src/native/libs/System.IO.Compression.Native/CMakeLists.txt
index 7fa92062d8e5b0..69d333ae53f9c5 100644
--- a/src/native/libs/System.IO.Compression.Native/CMakeLists.txt
+++ b/src/native/libs/System.IO.Compression.Native/CMakeLists.txt
@@ -184,12 +184,7 @@ else ()
endif ()
if((NOT CLR_CMAKE_USE_SYSTEM_ZLIB) AND STATIC_LIBS_ONLY)
- if (CLR_CMAKE_TARGET_UNIX)
- # zlib on Unix needs to be installed in the same location as System.IO.Compression.Native so that we can then treat is as a 'z' native library.
- install_static_library(zlib ${STATIC_LIB_DESTINATION} nativeaot)
- else()
- install_static_library(zlib aotsdk nativeaot)
- endif()
+ install_static_library(zlib aotsdk nativeaot)
endif()
install (TARGETS System.IO.Compression.Native-Static DESTINATION ${STATIC_LIB_DESTINATION} COMPONENT libs)
From fe0cfd55339cc2a0d745f742a48d5e880c112ec2 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Tue, 20 Aug 2024 10:34:49 -0700
Subject: [PATCH 025/748] Fix IOCP count config var test (#106669)
The TcpListener was being disposed too early.
Co-authored-by: Koundinya Veluri
---
.../tests/ThreadPoolTests.cs | 23 ++++++++++++-------
1 file changed, 15 insertions(+), 8 deletions(-)
diff --git a/src/libraries/System.Threading.ThreadPool/tests/ThreadPoolTests.cs b/src/libraries/System.Threading.ThreadPool/tests/ThreadPoolTests.cs
index 4d2638c11c8003..7c3c215c5ee6c5 100644
--- a/src/libraries/System.Threading.ThreadPool/tests/ThreadPoolTests.cs
+++ b/src/libraries/System.Threading.ThreadPool/tests/ThreadPoolTests.cs
@@ -1394,22 +1394,26 @@ static async Task RunAsyncIOTest()
var done = new AutoResetEvent(false);
// Receiver
+ bool stop = false;
var receiveBuffer = new byte[1];
- using var listener = new TcpListener(IPAddress.Loopback, 0);
+ var listener = new TcpListener(IPAddress.Loopback, 0);
listener.Start();
var t = ThreadTestHelpers.CreateGuardedThread(
out Action checkForThreadErrors,
out Action waitForThread,
async () =>
{
- while (true)
+ using (listener)
{
- // Accept a connection, receive a byte
- using var socket = await listener.AcceptSocketAsync();
- int bytesRead =
- await socket.ReceiveAsync(new ArraySegment(receiveBuffer), SocketFlags.None);
- Assert.Equal(1, bytesRead);
- done.Set(); // indicate byte received
+ while (!stop)
+ {
+ // Accept a connection, receive a byte
+ using var socket = await listener.AcceptSocketAsync();
+ int bytesRead =
+ await socket.ReceiveAsync(new ArraySegment(receiveBuffer), SocketFlags.None);
+ Assert.Equal(1, bytesRead);
+ done.Set(); // indicate byte received
+ }
}
});
t.IsBackground = true;
@@ -1427,6 +1431,9 @@ static async Task RunAsyncIOTest()
Assert.Equal(1, bytesSent);
done.CheckedWait(); // wait for byte to the received
}
+
+ stop = true;
+ waitForThread();
}
}).Dispose();
}, ioCompletionPortCount.ToString()).Dispose();
From 34649600b82d23edb65c772523aafe4cb04682ed Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Tue, 20 Aug 2024 15:01:27 -0700
Subject: [PATCH 026/748] [release/9.0] Update `MethodTable::IsDynamicStatics`
and `DacpMethodTableData::bIsDynamic` to return 0/1 instead of flag value
(#106643)
* Update assert in GetMethodTableData for cDAC/DAC bIsDynamic values
* Make DAC return TRUE/FALSE instead of flag value for DacpMethodTableData::bIsDynamic
* Make MethodTable::IsDynamicStatics return 0/1 instead of flag value
---------
Co-authored-by: Elinor Fung
---
src/coreclr/debug/daccess/request.cpp | 2 +-
src/coreclr/vm/methodtable.h | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/coreclr/debug/daccess/request.cpp b/src/coreclr/debug/daccess/request.cpp
index 71c9df21dfa763..2f9636c67021a2 100644
--- a/src/coreclr/debug/daccess/request.cpp
+++ b/src/coreclr/debug/daccess/request.cpp
@@ -2160,7 +2160,7 @@ ClrDataAccess::GetMethodTableDataImpl(CLRDATA_ADDRESS mt, struct DacpMethodTable
MTData->dwAttrClass = pMT->GetAttrClass();
MTData->bContainsPointers = pMT->ContainsGCPointers();
MTData->bIsShared = FALSE;
- MTData->bIsDynamic = pMT->IsDynamicStatics();
+ MTData->bIsDynamic = pMT->IsDynamicStatics() ? TRUE : FALSE;
}
return S_OK;
}
diff --git a/src/coreclr/vm/methodtable.h b/src/coreclr/vm/methodtable.h
index 751ec9d0855ddc..79334cb03201fd 100644
--- a/src/coreclr/vm/methodtable.h
+++ b/src/coreclr/vm/methodtable.h
@@ -2567,10 +2567,10 @@ class MethodTable
inline PTR_BYTE GetNonGCThreadStaticsBasePointer(PTR_Thread pThread);
inline PTR_BYTE GetGCThreadStaticsBasePointer(PTR_Thread pThread);
- inline DWORD IsDynamicStatics()
+ inline BOOL IsDynamicStatics()
{
LIMITED_METHOD_DAC_CONTRACT;
- return GetFlag(enum_flag_DynamicStatics);
+ return GetFlag(enum_flag_DynamicStatics) == enum_flag_DynamicStatics;
}
inline void SetDynamicStatics()
From 6b5d89152d7f4f71c87009dc8ee99c1f7cba8b5e Mon Sep 17 00:00:00 2001
From: Eric StJohn
Date: Tue, 20 Aug 2024 16:00:30 -0700
Subject: [PATCH 027/748] Revert Update dependencies from
https://github.com/dotnet/runtime build 20240819.2 (#106729)
This introduced a dependency on a newer runtime from build tools
---
eng/Version.Details.xml | 36 ++++++++++++++++++------------------
eng/Versions.props | 14 +++++++-------
global.json | 2 +-
3 files changed, 26 insertions(+), 26 deletions(-)
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 2820c2b35e8193..dde7f403b99dbd 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -278,43 +278,43 @@
https://github.com/dotnet/llvm-projectb9b4464b3b10c1961ed0ff39b5f33b3b3bbf62d1
-
+ https://github.com/dotnet/runtime
- 418c3b9e2753715fa017ace6b3f1f5ec4d4d6aae
+ 7cb32e193a55a95c74fc3bd56501b951b48b700f
-
+ https://github.com/dotnet/runtime
- 418c3b9e2753715fa017ace6b3f1f5ec4d4d6aae
+ 7cb32e193a55a95c74fc3bd56501b951b48b700f
-
+ https://github.com/dotnet/runtime
- 418c3b9e2753715fa017ace6b3f1f5ec4d4d6aae
+ 7cb32e193a55a95c74fc3bd56501b951b48b700f
-
+ https://github.com/dotnet/runtime
- 418c3b9e2753715fa017ace6b3f1f5ec4d4d6aae
+ 7cb32e193a55a95c74fc3bd56501b951b48b700f
-
+ https://github.com/dotnet/runtime
- 418c3b9e2753715fa017ace6b3f1f5ec4d4d6aae
+ 7cb32e193a55a95c74fc3bd56501b951b48b700f
-
+ https://github.com/dotnet/runtime
- 418c3b9e2753715fa017ace6b3f1f5ec4d4d6aae
+ 7cb32e193a55a95c74fc3bd56501b951b48b700f
-
+ https://github.com/dotnet/runtime
- 418c3b9e2753715fa017ace6b3f1f5ec4d4d6aae
+ 7cb32e193a55a95c74fc3bd56501b951b48b700f
-
+ https://github.com/dotnet/runtime
- 418c3b9e2753715fa017ace6b3f1f5ec4d4d6aae
+ 7cb32e193a55a95c74fc3bd56501b951b48b700f
-
+ https://github.com/dotnet/runtime
- 418c3b9e2753715fa017ace6b3f1f5ec4d4d6aae
+ 7cb32e193a55a95c74fc3bd56501b951b48b700fhttps://github.com/dotnet/xharness
diff --git a/eng/Versions.props b/eng/Versions.props
index e307e599cebc66..643e1f3e923ece 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -104,10 +104,10 @@
6.0.0-preview.1.102
- 9.0.0-rc.1.24419.2
+ 9.0.0-rc.1.24410.56.0.0
- 9.0.0-rc.1.24419.2
+ 9.0.0-rc.1.24410.56.0.01.1.1
@@ -119,19 +119,19 @@
8.0.05.0.04.5.5
- 9.0.0-rc.1.24419.2
- 9.0.0-rc.1.24419.2
+ 9.0.0-rc.1.24410.5
+ 9.0.0-rc.1.24410.56.0.05.0.05.0.05.0.07.0.0
- 9.0.0-rc.1.24419.2
+ 9.0.0-rc.1.24410.56.0.07.0.04.5.44.5.0
- 9.0.0-rc.1.24419.2
+ 9.0.0-rc.1.24410.58.0.08.0.0
@@ -214,7 +214,7 @@
0.11.5-alpha.24413.1
- 9.0.0-rc.1.24419.2
+ 9.0.0-rc.1.24410.510.0.0-alpha.1.24414.3
diff --git a/global.json b/global.json
index 9c5a350b0f574e..ec8a8797b90408 100644
--- a/global.json
+++ b/global.json
@@ -13,6 +13,6 @@
"Microsoft.DotNet.SharedFramework.Sdk": "9.0.0-beta.24408.2",
"Microsoft.Build.NoTargets": "3.7.0",
"Microsoft.Build.Traversal": "3.4.0",
- "Microsoft.NET.Sdk.IL": "9.0.0-rc.1.24419.2"
+ "Microsoft.NET.Sdk.IL": "9.0.0-rc.1.24410.5"
}
}
From 705315640600de8baa9b2f09e582b8fed128a892 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
<42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Tue, 20 Aug 2024 20:36:40 -0500
Subject: [PATCH 028/748] Update dependencies from
https://github.com/dotnet/emsdk build 20240820.4 (#106739)
Microsoft.SourceBuild.Intermediate.emsdk , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport
From Version 9.0.0-rc.1.24416.2 -> To Version 9.0.0-rc.2.24420.4
Co-authored-by: dotnet-maestro[bot]
---
eng/Version.Details.xml | 8 ++++----
eng/Versions.props | 2 +-
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index dde7f403b99dbd..9e8fc78057b96f 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -64,14 +64,14 @@
ed276e79e30bffc3e6405afa8a9323ec7e67c700
-
+ https://github.com/dotnet/emsdk
- 459c92904b224d125a350a3f3e431fe90152a95e
+ 9945277ad92ce1d53d6a7a578f9f5bd2af858ddd
-
+ https://github.com/dotnet/emsdk
- 459c92904b224d125a350a3f3e431fe90152a95e
+ 9945277ad92ce1d53d6a7a578f9f5bd2af858ddd
diff --git a/eng/Versions.props b/eng/Versions.props
index 643e1f3e923ece..725f285875ba4f 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -239,7 +239,7 @@
Note: when the name is updated, make sure to update dependency name in eng/pipelines/common/xplat-setup.yml
like - DarcDependenciesChanged.Microsoft_NET_Workload_Emscripten_Current_Manifest-9_0_100_Transport
-->
- 9.0.0-rc.1.24416.2
+ 9.0.0-rc.2.24420.4$(MicrosoftNETWorkloadEmscriptenCurrentManifest90100TransportVersion)1.1.87-gba258badda
From c4a79875fcb2c76b2e92ff50940d4ea9264e2eeb Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
<42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Wed, 21 Aug 2024 00:37:49 -0700
Subject: [PATCH 029/748] Update dependencies from
https://github.com/dotnet/emsdk build 20240820.5 (#106743)
Microsoft.SourceBuild.Intermediate.emsdk , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport
From Version 9.0.0-rc.1.24416.2 -> To Version 9.0.0-rc.1.24420.5
Co-authored-by: dotnet-maestro[bot]
---
eng/Version.Details.xml | 4 ++--
eng/Versions.props | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index dbf16b28fa69f8..e46836cb31a8a2 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -64,12 +64,12 @@
ed276e79e30bffc3e6405afa8a9323ec7e67c700
-
+ https://github.com/dotnet/emsdk459c92904b224d125a350a3f3e431fe90152a95e
-
+ https://github.com/dotnet/emsdk459c92904b224d125a350a3f3e431fe90152a95e
diff --git a/eng/Versions.props b/eng/Versions.props
index a018ef2195731e..a132c4a8c44728 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -239,7 +239,7 @@
Note: when the name is updated, make sure to update dependency name in eng/pipelines/common/xplat-setup.yml
like - DarcDependenciesChanged.Microsoft_NET_Workload_Emscripten_Current_Manifest-9_0_100_Transport
-->
- 9.0.0-rc.1.24416.2
+ 9.0.0-rc.1.24420.5$(MicrosoftNETWorkloadEmscriptenCurrentManifest90100TransportVersion)1.1.87-gba258badda
From 8e6d11792a66c41c17e7481595adf096252be161 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
<42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Wed, 21 Aug 2024 10:01:18 -0700
Subject: [PATCH 030/748] Update dependencies from
https://github.com/dotnet/arcade build 20240820.6 (#106758)
Microsoft.SourceBuild.Intermediate.arcade , 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.XliffTasks , Microsoft.DotNet.XUnitAssert , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.XUnitExtensions
From Version 9.0.0-beta.24408.2 -> To Version 9.0.0-beta.24420.6
Co-authored-by: dotnet-maestro[bot]
---
eng/Version.Details.xml | 84 ++++++++++++++++++++---------------------
eng/Versions.props | 32 ++++++++--------
global.json | 6 +--
3 files changed, 61 insertions(+), 61 deletions(-)
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 9e8fc78057b96f..3270605e058e7a 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -88,87 +88,87 @@
-
+ https://github.com/dotnet/arcade
- 60ae233c3d77f11c5fdb53e570b64d503b13ba59
+ b435d26f349d3960d12281321972ed323c35319d
-
+ https://github.com/dotnet/arcade
- 60ae233c3d77f11c5fdb53e570b64d503b13ba59
+ b435d26f349d3960d12281321972ed323c35319d
-
+ https://github.com/dotnet/arcade
- 60ae233c3d77f11c5fdb53e570b64d503b13ba59
+ b435d26f349d3960d12281321972ed323c35319d
-
+ https://github.com/dotnet/arcade
- 60ae233c3d77f11c5fdb53e570b64d503b13ba59
+ b435d26f349d3960d12281321972ed323c35319d
-
+ https://github.com/dotnet/arcade
- 60ae233c3d77f11c5fdb53e570b64d503b13ba59
+ b435d26f349d3960d12281321972ed323c35319d
-
+ https://github.com/dotnet/arcade
- 60ae233c3d77f11c5fdb53e570b64d503b13ba59
+ b435d26f349d3960d12281321972ed323c35319d
-
+ https://github.com/dotnet/arcade
- 60ae233c3d77f11c5fdb53e570b64d503b13ba59
+ b435d26f349d3960d12281321972ed323c35319d
-
+ https://github.com/dotnet/arcade
- 60ae233c3d77f11c5fdb53e570b64d503b13ba59
+ b435d26f349d3960d12281321972ed323c35319d
-
+ https://github.com/dotnet/arcade
- 60ae233c3d77f11c5fdb53e570b64d503b13ba59
+ b435d26f349d3960d12281321972ed323c35319d
-
+ https://github.com/dotnet/arcade
- 60ae233c3d77f11c5fdb53e570b64d503b13ba59
+ b435d26f349d3960d12281321972ed323c35319d
-
+ https://github.com/dotnet/arcade
- 60ae233c3d77f11c5fdb53e570b64d503b13ba59
+ b435d26f349d3960d12281321972ed323c35319d
-
+ https://github.com/dotnet/arcade
- 60ae233c3d77f11c5fdb53e570b64d503b13ba59
+ b435d26f349d3960d12281321972ed323c35319d
-
+ https://github.com/dotnet/arcade
- 60ae233c3d77f11c5fdb53e570b64d503b13ba59
+ b435d26f349d3960d12281321972ed323c35319d
-
+ https://github.com/dotnet/arcade
- 60ae233c3d77f11c5fdb53e570b64d503b13ba59
+ b435d26f349d3960d12281321972ed323c35319d
-
+ https://github.com/dotnet/arcade
- 60ae233c3d77f11c5fdb53e570b64d503b13ba59
+ b435d26f349d3960d12281321972ed323c35319d
-
+ https://github.com/dotnet/arcade
- 60ae233c3d77f11c5fdb53e570b64d503b13ba59
+ b435d26f349d3960d12281321972ed323c35319d
-
+ https://github.com/dotnet/arcade
- 60ae233c3d77f11c5fdb53e570b64d503b13ba59
+ b435d26f349d3960d12281321972ed323c35319d
-
+ https://github.com/dotnet/arcade
- 60ae233c3d77f11c5fdb53e570b64d503b13ba59
+ b435d26f349d3960d12281321972ed323c35319d
-
+ https://github.com/dotnet/arcade
- 60ae233c3d77f11c5fdb53e570b64d503b13ba59
+ b435d26f349d3960d12281321972ed323c35319d
-
+ https://github.com/dotnet/arcade
- 60ae233c3d77f11c5fdb53e570b64d503b13ba59
+ b435d26f349d3960d12281321972ed323c35319dhttps://github.com/dotnet/runtime-assets
@@ -328,9 +328,9 @@
https://github.com/dotnet/xharness9794254fa909ff5adc46326e9b54009793f61dcd
-
+ https://github.com/dotnet/arcade
- 60ae233c3d77f11c5fdb53e570b64d503b13ba59
+ b435d26f349d3960d12281321972ed323c35319dhttps://dev.azure.com/dnceng/internal/_git/dotnet-optimization
diff --git a/eng/Versions.props b/eng/Versions.props
index 725f285875ba4f..fb575375db50cf 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -83,22 +83,22 @@
9.0.100-rc.1.24409.1
- 9.0.0-beta.24408.2
- 9.0.0-beta.24408.2
- 9.0.0-beta.24408.2
- 9.0.0-beta.24408.2
- 2.9.0-beta.24408.2
- 9.0.0-beta.24408.2
- 2.9.0-beta.24408.2
- 9.0.0-beta.24408.2
- 9.0.0-beta.24408.2
- 9.0.0-beta.24408.2
- 9.0.0-beta.24408.2
- 9.0.0-beta.24408.2
- 9.0.0-beta.24408.2
- 9.0.0-beta.24408.2
- 9.0.0-beta.24408.2
- 9.0.0-beta.24408.2
+ 9.0.0-beta.24420.6
+ 9.0.0-beta.24420.6
+ 9.0.0-beta.24420.6
+ 9.0.0-beta.24420.6
+ 2.9.0-beta.24420.6
+ 9.0.0-beta.24420.6
+ 2.9.0-beta.24420.6
+ 9.0.0-beta.24420.6
+ 9.0.0-beta.24420.6
+ 9.0.0-beta.24420.6
+ 9.0.0-beta.24420.6
+ 9.0.0-beta.24420.6
+ 9.0.0-beta.24420.6
+ 9.0.0-beta.24420.6
+ 9.0.0-beta.24420.6
+ 9.0.0-beta.24420.61.4.0
diff --git a/global.json b/global.json
index ec8a8797b90408..c4a1f222a0aaae 100644
--- a/global.json
+++ b/global.json
@@ -8,9 +8,9 @@
"dotnet": "9.0.100-preview.7.24407.12"
},
"msbuild-sdks": {
- "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.24408.2",
- "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.24408.2",
- "Microsoft.DotNet.SharedFramework.Sdk": "9.0.0-beta.24408.2",
+ "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.24420.6",
+ "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.24420.6",
+ "Microsoft.DotNet.SharedFramework.Sdk": "9.0.0-beta.24420.6",
"Microsoft.Build.NoTargets": "3.7.0",
"Microsoft.Build.Traversal": "3.4.0",
"Microsoft.NET.Sdk.IL": "9.0.0-rc.1.24410.5"
From 06269ca6a34b24cffe28d3fb3045a86ec07a4a9e Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Wed, 21 Aug 2024 10:07:02 -0700
Subject: [PATCH 031/748] [release/9.0] JIT: Cast UInt64 to Single directly
during const folding (#106720)
* Fix cast folding on ARM64
* Add test
* Fix weird comment spacing
* Fix test
* Fix test
* Flip params
* Run test on CoreCLR only
* Add RequiresProcessIsolation
* Do single-step conversion on all platforms
* Expand test coverage
* Update test
* Try running test on all CoreCLR platforms
* Fix condition
---------
Co-authored-by: Aman Khalid (from Dev Box)
---
src/coreclr/jit/gentree.cpp | 2 +-
src/coreclr/jit/utils.cpp | 3 +-
.../JitBlue/Runtime_106338/Runtime_106338.cs | 36 +++++++++++++++++++
.../Runtime_106338/Runtime_106338.csproj | 8 +++++
4 files changed, 46 insertions(+), 3 deletions(-)
create mode 100644 src/tests/JIT/Regression/JitBlue/Runtime_106338/Runtime_106338.cs
create mode 100644 src/tests/JIT/Regression/JitBlue/Runtime_106338/Runtime_106338.csproj
diff --git a/src/coreclr/jit/gentree.cpp b/src/coreclr/jit/gentree.cpp
index f687f9139f5981..50adf99687d371 100644
--- a/src/coreclr/jit/gentree.cpp
+++ b/src/coreclr/jit/gentree.cpp
@@ -15607,7 +15607,7 @@ GenTree* Compiler::gtFoldExprConst(GenTree* tree)
case TYP_FLOAT:
{
-#if defined(TARGET_64BIT)
+#ifdef TARGET_64BIT
if (tree->IsUnsigned() && (lval1 < 0))
{
f1 = FloatingPointUtils::convertUInt64ToFloat((uint64_t)lval1);
diff --git a/src/coreclr/jit/utils.cpp b/src/coreclr/jit/utils.cpp
index 209b23ac6f46a0..cbee0be0158183 100644
--- a/src/coreclr/jit/utils.cpp
+++ b/src/coreclr/jit/utils.cpp
@@ -2272,8 +2272,7 @@ double FloatingPointUtils::convertUInt64ToDouble(uint64_t uIntVal)
float FloatingPointUtils::convertUInt64ToFloat(uint64_t u64)
{
- double d = convertUInt64ToDouble(u64);
- return (float)d;
+ return (float)u64;
}
uint64_t FloatingPointUtils::convertDoubleToUInt64(double d)
diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_106338/Runtime_106338.cs b/src/tests/JIT/Regression/JitBlue/Runtime_106338/Runtime_106338.cs
new file mode 100644
index 00000000000000..5cc1b75d42fda1
--- /dev/null
+++ b/src/tests/JIT/Regression/JitBlue/Runtime_106338/Runtime_106338.cs
@@ -0,0 +1,36 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+// Generated by Fuzzlyn v2.2 on 2024-08-13 00:04:04
+// Run on Arm64 MacOS
+// Seed: 13207615092246842583-vectort,vector64,vector128,armadvsimd,armadvsimdarm64,armaes,armarmbase,armarmbasearm64,armcrc32,armcrc32arm64,armdp,armrdm,armrdmarm64,armsha1,armsha256
+// Reduced from 226.8 KiB to 0.4 KiB in 00:02:12
+// Debug: Outputs 1600094603
+// Release: Outputs 1600094604
+using System;
+using System.Runtime.InteropServices;
+using System.Runtime.Intrinsics.X86;
+using Xunit;
+
+public class Runtime_106338
+{
+ [Fact]
+ [SkipOnMono("https://github.com/dotnet/runtime/issues/100368", TestPlatforms.Any)]
+ public static void TestEntryPoint()
+ {
+ ulong vr10 = 16105307123914158031UL;
+ float vr11 = 4294967295U | vr10;
+ uint result = BitConverter.SingleToUInt32Bits(vr11);
+
+ if ((RuntimeInformation.ProcessArchitecture == Architecture.Arm64) || ((RuntimeInformation.ProcessArchitecture == Architecture.X64) && Avx512F.IsSupported))
+ {
+ // Expected to cast ulong -> float directly
+ Assert.Equal(1600094603U, result);
+ }
+ else
+ {
+ // Expected to cast ulong -> double -> float
+ Assert.Equal(1600094604U, result);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_106338/Runtime_106338.csproj b/src/tests/JIT/Regression/JitBlue/Runtime_106338/Runtime_106338.csproj
new file mode 100644
index 00000000000000..de6d5e08882e86
--- /dev/null
+++ b/src/tests/JIT/Regression/JitBlue/Runtime_106338/Runtime_106338.csproj
@@ -0,0 +1,8 @@
+
+
+ True
+
+
+
+
+
From 03a1d52b9aa13cbdc4a04a166262535ed8c899fc Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
<42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Wed, 21 Aug 2024 10:28:14 -0700
Subject: [PATCH 032/748] [release/9.0] Update dependencies from dotnet/roslyn
(#106688)
* Update dependencies from https://github.com/dotnet/roslyn build 20240819.4
Microsoft.SourceBuild.Intermediate.roslyn , Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.CSharp , Microsoft.Net.Compilers.Toolset
From Version 4.12.0-2.24417.1 -> To Version 4.12.0-2.24419.4
* Update dependencies from https://github.com/dotnet/roslyn build 20240820.10
Microsoft.SourceBuild.Intermediate.roslyn , Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.CSharp , Microsoft.Net.Compilers.Toolset
From Version 4.12.0-2.24419.4 -> To Version 4.12.0-2.24420.10
---------
Co-authored-by: dotnet-maestro[bot]
Co-authored-by: Larry Ewing
---
eng/Version.Details.xml | 16 ++++++++--------
eng/Versions.props | 6 +++---
2 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 5ba4ca94494a4c..3c6370e8c349bd 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -357,17 +357,17 @@
https://github.com/dotnet/runtime-assets6d82d2732e240983f23ebe53d3cfb8fcd3b3ec0d
-
+ https://github.com/dotnet/roslyn
- 75b26a2088e76855528483674a1fbeea0137241b
+ c63e7b69c8a24803129f63b382c0ab1558112cf6
-
+ https://github.com/dotnet/roslyn
- 75b26a2088e76855528483674a1fbeea0137241b
+ c63e7b69c8a24803129f63b382c0ab1558112cf6
-
+ https://github.com/dotnet/roslyn
- 75b26a2088e76855528483674a1fbeea0137241b
+ c63e7b69c8a24803129f63b382c0ab1558112cf6https://github.com/dotnet/roslyn-analyzers
@@ -378,9 +378,9 @@
fdb9965ce68c1f4e1c0ff301488adf9caa958615
-
+ https://github.com/dotnet/roslyn
- 75b26a2088e76855528483674a1fbeea0137241b
+ c63e7b69c8a24803129f63b382c0ab1558112cf6
diff --git a/eng/Versions.props b/eng/Versions.props
index ee707e7a3b8ba9..9e5ff83002144e 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -42,9 +42,9 @@
Any tools that contribute to the design-time experience should use the MicrosoftCodeAnalysisVersion_LatestVS property above to ensure
they do not break the local dev experience.
-->
- 4.12.0-2.24417.1
- 4.12.0-2.24417.1
- 4.12.0-2.24417.1
+ 4.12.0-2.24420.10
+ 4.12.0-2.24420.10
+ 4.12.0-2.24420.10
-
+ https://github.com/dotnet/cecil
- ed276e79e30bffc3e6405afa8a9323ec7e67c700
+ c667bfea9cdbc5b5493e49e7ddc8dd635a217891
@@ -82,9 +82,9 @@
-
+ https://github.com/dotnet/source-build-externals
- 2cef086137a68586fdd69848261e2a8cf8c48b73
+ ee22054b44ec9615dc3481c4decc1b007a83a2b0
@@ -349,9 +349,9 @@
https://dev.azure.com/dnceng/internal/_git/dotnet-optimization8674aaa459d33551d419fece377f5512a1d93689
-
+ https://github.com/dotnet/hotreload-utils
- 90b2ffe6186a5fa3782a65f61ef396b0463d29b2
+ 8392605e46c7424eba5f43591fc44d2c3b1f28dfhttps://github.com/dotnet/runtime-assets
diff --git a/eng/Versions.props b/eng/Versions.props
index 9e5ff83002144e..0663bdef3e627f 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -184,7 +184,7 @@
9.0.0-prerelease.24405.19.0.0-prerelease.24405.19.0.0-prerelease.24405.1
- 9.0.0-alpha.0.24412.1
+ 9.0.0-alpha.0.24419.13.12.04.5.06.0.0
@@ -212,7 +212,7 @@
8.0.0-preview-20230918.1
- 0.11.5-alpha.24413.1
+ 0.11.5-alpha.24419.19.0.0-rc.1.24410.5
From 02bb8c3d197b143029eb9b5389c7abee09dfcb4b Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Wed, 21 Aug 2024 11:45:58 -0700
Subject: [PATCH 034/748] [release/9.0] [NativeAOT] Introduce pointer-based
CompareExchange intrinsic and use operating with syncblock bits. (#106727)
* introduce CompareExchange(int* location1, int value, int comparand)
* Apply suggestions from code review
Co-authored-by: Jan Kotas
* fix arm32 build
---------
Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com>
Co-authored-by: Vladimir Sadov
Co-authored-by: Jan Kotas
Co-authored-by: Jeff Schwartz
---
.../src/System/Runtime/RuntimeImports.cs | 4 ++++
.../src/System/Threading/Interlocked.cs | 19 +++++++++++++++++++
.../src/System/Threading/ObjectHeader.cs | 12 ++++++------
.../src/System/Runtime/RuntimeImports.cs | 4 ++++
4 files changed, 33 insertions(+), 6 deletions(-)
diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/RuntimeImports.cs b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/RuntimeImports.cs
index 17a0bca07e13ba..7f833e613e5c4b 100644
--- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/RuntimeImports.cs
+++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/RuntimeImports.cs
@@ -649,6 +649,10 @@ internal static IntPtr RhGetModuleSection(TypeManagerHandle module, ReadyToRunSe
[RuntimeImport(RuntimeLibrary, "RhpLockCmpXchg32")]
internal static extern int InterlockedCompareExchange(ref int location1, int value, int comparand);
+ [MethodImplAttribute(MethodImplOptions.InternalCall)]
+ [RuntimeImport(RuntimeLibrary, "RhpLockCmpXchg32")]
+ internal static extern unsafe int InterlockedCompareExchange(int* location1, int value, int comparand);
+
[MethodImplAttribute(MethodImplOptions.InternalCall)]
[RuntimeImport(RuntimeLibrary, "RhpLockCmpXchg64")]
internal static extern long InterlockedCompareExchange(ref long location1, long value, long comparand);
diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Threading/Interlocked.cs b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Threading/Interlocked.cs
index 0a7fc2e65f2e30..7596f676c901e8 100644
--- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Threading/Interlocked.cs
+++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Threading/Interlocked.cs
@@ -1,6 +1,7 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Runtime;
using System.Runtime.CompilerServices;
@@ -23,6 +24,24 @@ public static int CompareExchange(ref int location1, int value, int comparand)
#endif
}
+ // This is used internally by NativeAOT runtime in cases where having a managed
+ // ref to the location is unsafe (Ex: it is the syncblock of a pinned object).
+ // The intrinsic expansion for this overload is exactly the same as for the `ref int`
+ // variant and will go on the same path since expansion is triggered by the name and
+ // return type of the method.
+ // The important part is avoiding `ref *location` in the unexpanded scenario, like
+ // in a case when compiling the Debug flavor of the app.
+ [Intrinsic]
+ internal static unsafe int CompareExchange(int* location1, int value, int comparand)
+ {
+#if TARGET_X86 || TARGET_AMD64 || TARGET_ARM64 || TARGET_RISCV64
+ return CompareExchange(location1, value, comparand); // Must expand intrinsic
+#else
+ Debug.Assert(location1 != null);
+ return RuntimeImports.InterlockedCompareExchange(location1, value, comparand);
+#endif
+ }
+
[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static long CompareExchange(ref long location1, long value, long comparand)
diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Threading/ObjectHeader.cs b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Threading/ObjectHeader.cs
index 1d0c27751521b9..b56054d9f164e0 100644
--- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Threading/ObjectHeader.cs
+++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Threading/ObjectHeader.cs
@@ -152,7 +152,7 @@ private static unsafe int AssignHashCode(object o, int* pHeader)
// there is nothing - try set hashcode inline
Debug.Assert((oldBits & BIT_SBLK_IS_HASH_OR_SYNCBLKINDEX) == 0);
int newBits = BIT_SBLK_IS_HASH_OR_SYNCBLKINDEX | BIT_SBLK_IS_HASHCODE | oldBits | newHash;
- if (Interlocked.CompareExchange(ref *pHeader, newBits, oldBits) == oldBits)
+ if (Interlocked.CompareExchange(pHeader, newBits, oldBits) == oldBits)
{
return newHash;
}
@@ -247,7 +247,7 @@ public static unsafe void SetSyncEntryIndex(int* pHeader, int syncIndex)
newBits = oldBits & ~(BIT_SBLK_IS_HASHCODE | MASK_HASHCODE_INDEX);
newBits |= syncIndex | BIT_SBLK_IS_HASH_OR_SYNCBLKINDEX;
}
- while (Interlocked.CompareExchange(ref *pHeader, newBits, oldBits) != oldBits);
+ while (Interlocked.CompareExchange(pHeader, newBits, oldBits) != oldBits);
}
//
@@ -312,7 +312,7 @@ public static unsafe int TryAcquire(object obj, int currentThreadID, bool oneSho
// N.B. hashcode, thread ID and sync index are never 0, and hashcode is largest of all
if ((oldBits & MASK_HASHCODE_INDEX) == 0)
{
- if (Interlocked.CompareExchange(ref *pHeader, oldBits | currentThreadID, oldBits) == oldBits)
+ if (Interlocked.CompareExchange(pHeader, oldBits | currentThreadID, oldBits) == oldBits)
{
return -1;
}
@@ -369,7 +369,7 @@ private static unsafe int TryAcquireUncommon(object obj, int currentThreadID, bo
if ((oldBits & MASK_HASHCODE_INDEX) == 0)
{
int newBits = oldBits | currentThreadID;
- if (Interlocked.CompareExchange(ref *pHeader, newBits, oldBits) == oldBits)
+ if (Interlocked.CompareExchange(pHeader, newBits, oldBits) == oldBits)
{
return -1;
}
@@ -398,7 +398,7 @@ private static unsafe int TryAcquireUncommon(object obj, int currentThreadID, bo
int newBits = oldBits + SBLK_LOCK_RECLEVEL_INC;
if ((newBits & SBLK_MASK_LOCK_RECLEVEL) != 0)
{
- if (Interlocked.CompareExchange(ref *pHeader, newBits, oldBits) == oldBits)
+ if (Interlocked.CompareExchange(pHeader, newBits, oldBits) == oldBits)
{
return -1;
}
@@ -458,7 +458,7 @@ public static unsafe void Release(object obj)
oldBits - SBLK_LOCK_RECLEVEL_INC :
oldBits & ~SBLK_MASK_LOCK_THREADID;
- if (Interlocked.CompareExchange(ref *pHeader, newBits, oldBits) == oldBits)
+ if (Interlocked.CompareExchange(pHeader, newBits, oldBits) == oldBits)
{
return;
}
diff --git a/src/coreclr/nativeaot/Test.CoreLib/src/System/Runtime/RuntimeImports.cs b/src/coreclr/nativeaot/Test.CoreLib/src/System/Runtime/RuntimeImports.cs
index 70b0cda4d2f6ac..52d1277f0bd0c5 100644
--- a/src/coreclr/nativeaot/Test.CoreLib/src/System/Runtime/RuntimeImports.cs
+++ b/src/coreclr/nativeaot/Test.CoreLib/src/System/Runtime/RuntimeImports.cs
@@ -94,6 +94,10 @@ internal static IntPtr RhGetModuleSection(TypeManagerHandle module, ReadyToRunSe
[RuntimeImport(RuntimeLibrary, "RhpLockCmpXchg32")]
internal static extern int InterlockedCompareExchange(ref int location1, int value, int comparand);
+ [MethodImplAttribute(MethodImplOptions.InternalCall)]
+ [RuntimeImport(RuntimeLibrary, "RhpLockCmpXchg32")]
+ internal static extern unsafe int InterlockedCompareExchange(int* location1, int value, int comparand);
+
[MethodImplAttribute(MethodImplOptions.InternalCall)]
[RuntimeImport(RuntimeLibrary, "RhpLockCmpXchg64")]
internal static extern long InterlockedCompareExchange(ref long location1, long value, long comparand);
From 84e8aa4ce964530cba20f01ce9dae629f7db17d9 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Wed, 21 Aug 2024 11:58:07 -0700
Subject: [PATCH 035/748] [release/9.0] JIT: Avoid removing CSE candidates in
fgMorphExpandCast (#106746)
* JIT: Avoid removing CSE candidates in fgMorphExpandCast
Fix #106609
* Fix test
---------
Co-authored-by: Jakob Botsch Nielsen
Co-authored-by: Jeff Schwartz
---
src/coreclr/jit/morph.cpp | 3 +-
.../JitBlue/Runtime_106609/Runtime_106609.cs | 45 +++++++++++++++++++
.../Runtime_106609/Runtime_106609.csproj | 8 ++++
3 files changed, 55 insertions(+), 1 deletion(-)
create mode 100644 src/tests/JIT/Regression/JitBlue/Runtime_106609/Runtime_106609.cs
create mode 100644 src/tests/JIT/Regression/JitBlue/Runtime_106609/Runtime_106609.csproj
diff --git a/src/coreclr/jit/morph.cpp b/src/coreclr/jit/morph.cpp
index d037282e447ab5..f8989a40f405ff 100644
--- a/src/coreclr/jit/morph.cpp
+++ b/src/coreclr/jit/morph.cpp
@@ -451,7 +451,8 @@ GenTree* Compiler::fgMorphExpandCast(GenTreeCast* tree)
// Because there is no IL instruction conv.r4.un, uint/ulong -> float
// casts are always imported as CAST(float <- CAST(double <- uint/ulong)).
// We can eliminate the redundant intermediate cast as an optimization.
- else if ((dstType == TYP_FLOAT) && (srcType == TYP_DOUBLE) && oper->OperIs(GT_CAST)
+ else if ((dstType == TYP_FLOAT) && (srcType == TYP_DOUBLE) && oper->OperIs(GT_CAST) &&
+ !gtIsActiveCSE_Candidate(tree)
#ifdef TARGET_ARM
&& !varTypeIsLong(oper->AsCast()->CastOp())
#endif
diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_106609/Runtime_106609.cs b/src/tests/JIT/Regression/JitBlue/Runtime_106609/Runtime_106609.cs
new file mode 100644
index 00000000000000..e640f91d86c669
--- /dev/null
+++ b/src/tests/JIT/Regression/JitBlue/Runtime_106609/Runtime_106609.cs
@@ -0,0 +1,45 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+// Generated by Fuzzlyn v2.2 on 2024-08-17 17:16:59
+// Run on Arm64 Windows
+// Seed: 18124298882625099135-vectort,vector64,vector128,armadvsimd,armadvsimdarm64,armaes,armarmbase,armarmbasearm64,armcrc32,armcrc32arm64,armdp,armsha1,armsha256
+// Reduced from 129.5 KiB to 0.4 KiB in 00:04:55
+// Hits JIT assert in Release:
+// Assertion failed 'link' in 'Program:Main(Fuzzlyn.ExecutionServer.IRuntime)' during 'Optimize Valnum CSEs' (IL size 39; hash 0xade6b36b; FullOpts)
+//
+// File: D:\a\_work\1\s\src\coreclr\jit\optcse.cpp Line: 5295
+//
+using System.Runtime.CompilerServices;
+using System.Runtime.Intrinsics;
+using System.Runtime.Intrinsics.Arm;
+using Xunit;
+
+public class Runtime_106609
+{
+ [Fact]
+ public static void TestEntrypoint()
+ {
+ if (AdvSimd.IsSupported)
+ {
+ try
+ {
+ Test();
+ }
+ catch
+ {
+ }
+ }
+ }
+
+ public static float[] s_2;
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ private static void Test()
+ {
+ for (int vr8 = 0; vr8 < 2; vr8++)
+ {
+ var vr9 = Vector64.Create(0);
+ s_2[0] = (float)(-(-(double)AdvSimd.Extract(vr9, 0)));
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_106609/Runtime_106609.csproj b/src/tests/JIT/Regression/JitBlue/Runtime_106609/Runtime_106609.csproj
new file mode 100644
index 00000000000000..de6d5e08882e86
--- /dev/null
+++ b/src/tests/JIT/Regression/JitBlue/Runtime_106609/Runtime_106609.csproj
@@ -0,0 +1,8 @@
+
+
+ True
+
+
+
+
+
From a80d1c1615eeed8e82d9a9c5474bfdbf34e346da Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Wed, 21 Aug 2024 13:08:27 -0700
Subject: [PATCH 036/748] [release/9.0] Fix Issue #105820 (#106656)
* Check for writing sign flag for skipping test condition in compare to zero
* Only skip test instruction in case Writes_PF, Writes ZF, WritesSF, ResetsCF and ResetsOF are true
---------
Co-authored-by: Khushal Modi
Co-authored-by: Jeff Schwartz
---
src/coreclr/jit/emitxarch.cpp | 19 ++++++++++++++++++-
src/coreclr/jit/emitxarch.h | 1 +
2 files changed, 19 insertions(+), 1 deletion(-)
diff --git a/src/coreclr/jit/emitxarch.cpp b/src/coreclr/jit/emitxarch.cpp
index e3561bbff37978..2b98d14183abab 100644
--- a/src/coreclr/jit/emitxarch.cpp
+++ b/src/coreclr/jit/emitxarch.cpp
@@ -355,6 +355,22 @@ bool emitter::DoesWriteZeroFlag(instruction ins)
return (flags & Writes_ZF) != 0;
}
+//------------------------------------------------------------------------
+// DoesWriteParityFlag: check if the instruction write the
+// PF flag.
+//
+// Arguments:
+// ins - instruction to test
+//
+// Return Value:
+// true if instruction writes the PF flag, false otherwise.
+//
+bool emitter::DoesWriteParityFlag(instruction ins)
+{
+ insFlags flags = CodeGenInterface::instInfo[ins];
+ return (flags & Writes_PF) != 0;
+}
+
//------------------------------------------------------------------------
// DoesWriteSignFlag: check if the instruction writes the
// SF flag.
@@ -979,7 +995,8 @@ bool emitter::AreFlagsSetToZeroCmp(regNumber reg, emitAttr opSize, GenCondition
// Certain instruction like and, or and xor modifies exactly same flags
// as "test" instruction.
// They reset OF and CF to 0 and modifies SF, ZF and PF.
- if (DoesResetOverflowAndCarryFlags(lastIns))
+ if (DoesResetOverflowAndCarryFlags(lastIns) && DoesWriteSignFlag(lastIns) && DoesWriteZeroFlag(lastIns) &&
+ DoesWriteParityFlag(lastIns))
{
return id->idOpSize() == opSize;
}
diff --git a/src/coreclr/jit/emitxarch.h b/src/coreclr/jit/emitxarch.h
index d24a697d93c727..7ff6902613d59c 100644
--- a/src/coreclr/jit/emitxarch.h
+++ b/src/coreclr/jit/emitxarch.h
@@ -484,6 +484,7 @@ bool IsThreeOperandAVXInstruction(instruction ins) const;
static bool HasRegularWideForm(instruction ins);
static bool HasRegularWideImmediateForm(instruction ins);
static bool DoesWriteZeroFlag(instruction ins);
+static bool DoesWriteParityFlag(instruction ins);
static bool DoesWriteSignFlag(instruction ins);
static bool DoesResetOverflowAndCarryFlags(instruction ins);
bool IsFlagsAlwaysModified(instrDesc* id);
From c689e35216bf63c9652dcbca1b20875a1f29e4a3 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Wed, 21 Aug 2024 15:58:51 -0600
Subject: [PATCH 037/748] [release/9.0] Fix Type System Equivalence Checks
(#106723)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* Initial fix for the type not being read bug.
* Addressed initial feedback to fully fix the bug.
---------
Co-authored-by: Ivan Diaz
Co-authored-by: Carlos Sánchez López <1175054+carlossanlop@users.noreply.github.com>
---
.../Ecma/EcmaType.TypeEquivalence.cs | 42 ++++++++++++-------
1 file changed, 28 insertions(+), 14 deletions(-)
diff --git a/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.TypeEquivalence.cs b/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.TypeEquivalence.cs
index 94d7722c28485f..b7fb3327a2655d 100644
--- a/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.TypeEquivalence.cs
+++ b/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.TypeEquivalence.cs
@@ -14,6 +14,7 @@ public partial class EcmaType
private TypeIdentifierData ComputeTypeIdentifierFromGuids()
{
CustomAttributeValue? guidAttribute;
+
if (IsInterface && _typeDefinition.Attributes.HasFlag(TypeAttributes.Import))
{
// ComImport interfaces get scope from their GUID
@@ -23,6 +24,7 @@ private TypeIdentifierData ComputeTypeIdentifierFromGuids()
{
// other equivalent types get it from the declaring assembly
var attributeHandle = this.MetadataReader.GetCustomAttributeHandle(MetadataReader.GetAssemblyDefinition().GetCustomAttributes(), "System.Runtime.InteropServices", "GuidAttribute");
+
if (attributeHandle.IsNil)
return null;
@@ -40,6 +42,7 @@ private TypeIdentifierData ComputeTypeIdentifierFromGuids()
string scope = (string)guidAttribute.Value.FixedArguments[0].Value;
string name = this.Name;
+
if (this.Namespace != null)
name = this.Namespace + "." + name;
@@ -53,6 +56,7 @@ private TypeIdentifierData ComputeTypeIdentifierData()
// Check for type identifier attribute
var typeIdentifierAttribute = this.GetDecodedCustomAttribute("System.Runtime.InteropServices", "TypeIdentifierAttribute");
+
if (typeIdentifierAttribute.HasValue)
{
// If the type has a type identifier attribute it is always considered to be type equivalent
@@ -68,28 +72,38 @@ private TypeIdentifierData ComputeTypeIdentifierData()
if (typeIdentifierAttribute.Value.FixedArguments[1].Type != Context.GetWellKnownType(WellKnownType.String))
return null;
- _data = new TypeIdentifierData((string)typeIdentifierAttribute.Value.FixedArguments[0].Value, (string)typeIdentifierAttribute.Value.FixedArguments[1].Value);
- return _data;
+ return new TypeIdentifierData((string)typeIdentifierAttribute.Value.FixedArguments[0].Value, (string)typeIdentifierAttribute.Value.FixedArguments[1].Value);
}
- else
+
+ // In addition to the TypeIdentifierAttribute certain other types may also be opted in to type equivalence
+ if (Context.SupportsCOMInterop)
{
- // In addition to the TypeIdentifierAttribute certain other types may also be opted in to type equivalence
- if (Context.SupportsCOMInterop)
+ // 1. The assembly is marked with ImportedFromTypeLibAttribute or PrimaryInteropAssemblyAttribute
+ // We will verify this by checking for their attribute handles using the Metadata Reader.
+
+ CustomAttributeHandle importedFromTypeLibHdl = this.MetadataReader.GetCustomAttributeHandle(
+ MetadataReader.GetAssemblyDefinition().GetCustomAttributes(),
+ "System.Runtime.InteropServices",
+ "ImportedFromTypeLibAttribute"
+ );
+
+ CustomAttributeHandle primaryInteropAssemblyHdl = this.MetadataReader.GetCustomAttributeHandle(
+ MetadataReader.GetAssemblyDefinition().GetCustomAttributes(),
+ "System.Runtime.InteropServices",
+ "PrimaryInteropAssemblyAttribute"
+ );
+
+ if (!importedFromTypeLibHdl.IsNil || !primaryInteropAssemblyHdl.IsNil)
{
- // 1. Type is within assembly marked with ImportedFromTypeLibAttribute or PrimaryInteropAssemblyAttribute
- if (this.HasCustomAttribute("System.Runtime.InteropServices", "ImportedFromTypeLibAttribute") || this.HasCustomAttribute("System.Runtime.InteropServices", "PrimaryInteropAssemblyAttribute"))
- {
- // This type has a TypeIdentifier attribute if it has an appropriate shape to be considered type equivalent
- }
-
+ // This type has a TypeIdentifier attribute if it has an appropriate shape to be considered type equivalent
if (!TypeHasCharacteristicsRequiredToBeTypeEquivalent)
return null;
- _data = ComputeTypeIdentifierFromGuids();
+ return ComputeTypeIdentifierFromGuids();
}
-
- return null;
}
+
+ return null;
}
public override TypeIdentifierData TypeIdentifierData
From 2f15b15de162ea03bcb8515907bc0eed24fc9ea4 Mon Sep 17 00:00:00 2001
From: dotnet bot
Date: Wed, 21 Aug 2024 15:00:46 -0700
Subject: [PATCH 038/748] Localized file check-in by OneLocBuild Task: Build
definition ID 679: Build ID 2519905 (#106714)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: Carlos Sánchez López <1175054+carlossanlop@users.noreply.github.com>
---
.../gen/Common/Resources/xlf/Strings.pl.xlf | 518 +++++++++---------
1 file changed, 259 insertions(+), 259 deletions(-)
diff --git a/src/libraries/System.Runtime.InteropServices/gen/Common/Resources/xlf/Strings.pl.xlf b/src/libraries/System.Runtime.InteropServices/gen/Common/Resources/xlf/Strings.pl.xlf
index e2f7643bf88883..2405d7a821b9a9 100644
--- a/src/libraries/System.Runtime.InteropServices/gen/Common/Resources/xlf/Strings.pl.xlf
+++ b/src/libraries/System.Runtime.InteropServices/gen/Common/Resources/xlf/Strings.pl.xlf
@@ -4,7 +4,7 @@
Add 'GeneratedComClassAttribute' to enable passing objects of this type to COM and allow unsafe code
- Add 'GeneratedComClassAttribute' to enable passing objects of this type to COM and allow unsafe code
+ Dodaj atrybut „GeneratedComClassAttributeâ€, aby umożliwić przekazywanie obiektów tego typu do modelu COM i zezwalać na niebezpieczny kod
@@ -14,57 +14,57 @@
Add the 'GeneratedComClassAttribute' to '{0}' to enable passing objects of type '{0}' to COM
- Add the 'GeneratedComClassAttribute' to '{0}' to enable passing objects of type '{0}' to COM
+ Dodaj atrybut „GeneratedComClassAttribute†do „{0}â€, aby umożliwić przekazywanie obiektów typu „{0}†do modelu COMAdd 'GeneratedComClassAttribute' to enable passing objects of this type to COM
- Add 'GeneratedComClassAttribute' to enable passing objects of this type to COM
+ Dodaj atrybut „GeneratedComClassAttributeâ€, aby umożliwić przekazywanie obiektów tego typu do modelu COMAdd missing custom type marshaller members
- Add missing custom type marshaller members
+ Dodaj brakujące składowe elementu przeprowadzającego marshalling typu niestandardowegoThe analysis required to generate code for this interface or method has failed due to an unexpected code pattern. If you are using new or unconventional syntax, consider using other syntax.
- The analysis required to generate code for this interface or method has failed due to an unexpected code pattern. If you are using new or unconventional syntax, consider using other syntax.
+ Analiza wymagana do wygenerowania kodu dla tego interfejsu lub metody nie powiodła się z powodu nieoczekiwanego wzorca kodu. Jeśli używasz nowej składni lub nieszablonowej składni, rozważ użycie innej składni.Analysis of interface '{0}' has failed. ComInterfaceGenerator will not generate code for this interface.
- Analysis of interface '{0}' has failed. ComInterfaceGenerator will not generate code for this interface.
+ Analiza interfejsu „{0}†nie powiodła się. Element ComInterfaceGenerator nie wygeneruje kodu dla tego interfejsu.Analysis of method '{0}' has failed. ComInterfaceGenerator will not generate code for this method.
- Analysis of method '{0}' has failed. ComInterfaceGenerator will not generate code for this method.
+ Analiza metody „{0}†nie powiodła się. Element ComInterfaceGenerator nie wygeneruje kodu dla tej metody.Analysis for COM interface generation has failed.
- Analysis for COM interface generation has failed.
+ Analiza generowania interfejsu COM nie powiodła się.Marshalling an array from unmanaged to managed requires either the 'SizeParamIndex' or 'SizeConst' fields to be set on a 'MarshalAsAttribute' or the 'ConstantElementCount' or 'CountElementName' properties to be set on a 'MarshalUsingAttribute'.
- Marshalling an array from unmanaged to managed requires either the 'SizeParamIndex' or 'SizeConst' fields to be set on a 'MarshalAsAttribute' or the 'ConstantElementCount' or 'CountElementName' properties to be set on a 'MarshalUsingAttribute'.
+ Skierowanie tablicy z niezarzÄ…dzanej do zarzÄ…dzanej wymaga ustawienia pól „SizeParamIndex†lub „SizeConst†we wÅ‚aÅ›ciwoÅ›ciach dla atrybutu„MarshalAsAttribute†lub wartoÅ›ci „ConstantElementCount†lub elementu „CountElementName†we wÅ‚aÅ›ciwoÅ›ciach dla atrybutu „MarshalUsingAttributeâ€.COM interface source generation requires all base COM interfaces to be valid interfaces. Fix any issues on the base interface to resolve this diagnostic.
- COM interface source generation requires all base COM interfaces to be valid interfaces. Fix any issues on the base interface to resolve this diagnostic.
+ Generowanie źródła interfejsu COM wymaga, aby wszystkie podstawowe interfejsy COM były prawidłowymi interfejsami. Rozwiąż wszelkie problemy z interfejsem podstawowym, aby rozwiązać ten problem diagnostyczny.COM interface {0} inherits from {1}, which has errors. ComInterfaceGenerator will not generate source for {0}.
- COM interface {0} inherits from {1}, which has errors. ComInterfaceGenerator will not generate source for {0}.
+ Interfejs COM {0} dziedziczy po {1}, który zawiera błędy. Program ComInterfaceGenerator nie wygeneruje źródła dla {0}.The base COM interface failed to generate source. Code will not be generated for this interface.
- The base COM interface failed to generate source. Code will not be generated for this interface.
+ Podstawowy interfejs COM nie może wygenerować źródła. Kod nie zostanie wygenerowany dla tego interfejsu.
@@ -79,427 +79,427 @@
A 'GeneratedComInterface' cannot specify 'ComInterfaceOptions.ManagedObjectWrapper' or 'ComInterfaceOptions.ComObjectWrapper' unless the base interface type did not specify options or specified at least the same options.
- A 'GeneratedComInterface' cannot specify 'ComInterfaceOptions.ManagedObjectWrapper' or 'ComInterfaceOptions.ComObjectWrapper' unless the base interface type did not specify options or specified at least the same options.
+ Element „GeneratedComInterface†nie może okreÅ›lać elementu „ComInterfaceOptions.ManagedObjectWrapper†lub „ComInterfaceOptions.ComObjectWrapperâ€, chyba że podstawowy typ interfejsu nie okreÅ›liÅ‚ opcji lub okreÅ›liÅ‚ co najmniej te same opcje.The specified parameter needs to be marshalled from managed to unmanaged and unmanaged to managed, but the marshaller type '{0}' does not support it.
- The specified parameter needs to be marshalled from managed to unmanaged and unmanaged to managed, but the marshaller type '{0}' does not support it.
+ Określony parametr musi być kierowany z zarządzanego do niezarządzanego i niezarządzanego do zarządzanego, ale typ marszałka „{0}†go nie obsługuje.When the 'Managed to Unmanaged with Caller-Allocated Buffer' shape is used by providing a 'FromManaged' method that takes a 'Span<T>' on the marshaller type, the type must provide a static 'BufferSize' property to provide the number of elements in the caller-allocated buffer.
- When the 'Managed to Unmanaged with Caller-Allocated Buffer' shape is used by providing a 'FromManaged' method that takes a 'Span<T>' on the marshaller type, the type must provide a static 'BufferSize' property to provide the number of elements in the caller-allocated buffer.
+ Gdy ksztaÅ‚t „ZarzÄ…dzane do niezarzÄ…dzanego za pomocÄ… buforu przydzielonego przez wywoÅ‚ujÄ…cego†jest używany przez podanie metody „FromManagedâ€, która przyjmuje element „Span< T>†w typie marshallera, typ musi udostÄ™pniać statycznÄ… wÅ‚aÅ›ciwość „BufferSizeâ€, aby podać liczbÄ™ elementów w buforze przydzielonym przez wywoÅ‚ujÄ…cego.The marshaller type '{0}' must have a static read-only 'int' 'BufferSize' property to specify the size of the caller-allocated buffer because it has a FromManaged method that takes a caller-allocated 'Span<{1}>'
- The marshaller type '{0}' must have a static read-only 'int' 'BufferSize' property to specify the size of the caller-allocated buffer because it has a FromManaged method that takes a caller-allocated 'Span<{1}>'
+ Typ marshallera „{0}†musi mieć statycznÄ… wÅ‚aÅ›ciwość „int†„BufferSize†tylko do odczytu, aby okreÅ›lić rozmiar buforu przydzielonego przez wywoÅ‚ujÄ…cego, ponieważ ma metodÄ™ FromManaged, która przyjmuje przydzielony przez wywoÅ‚ujÄ…cego element „Span<{1}>â€The generated 'DllImportAttribute' will not have a value corresponding to '{0}'.
- The generated 'DllImportAttribute' will not have a value corresponding to '{0}'.
+ Wygenerowany atrybut „DllImportAttribute†nie bÄ™dzie miaÅ‚ wartoÅ›ci odpowiadajÄ…cej elementowi „{0}â€.'{0}' has no equivalent in 'DllImportAttribute' and will not be forwarded
- '{0}' has no equivalent in 'DllImportAttribute' and will not be forwarded
+ Element „{0}†nie ma odpowiednika w atrybucie „DllImportAtttribute†i nie zostanie przekazanySpecified 'LibraryImportAttribute' arguments cannot be forwarded to 'DllImportAttribute'
- Specified 'LibraryImportAttribute' arguments cannot be forwarded to 'DllImportAttribute'
+ OkreÅ›lonych argumentów „LibraryImportAttribute†nie można przekazać do elementu „DllImportAttributeâ€Casting between a 'ComImport' type and a source-generated COM type is not supported and will fail at runtime
- Casting between a 'ComImport' type and a source-generated COM type is not supported and will fail at runtime
+ Rzutowanie między typem „ComImport†i wygenerowanym przez źródło typem COM nie jest obsługiwane i zakończy się niepowodzeniem w czasie wykonywaniaCasting between a 'ComImport' type and a source-generated COM type is not supported
- Casting between a 'ComImport' type and a source-generated COM type is not supported
+ Rzutowanie między typem „ComImport†i wygenerowanym przez źródło typem COM nie jest obsługiwaneCasting between a 'ComImport' type and a source-generated COM type is not supported
- Casting between a 'ComImport' type and a source-generated COM type is not supported
+ Rzutowanie między typem „ComImport†i wygenerowanym przez źródło typem COM nie jest obsługiwaneA class with 'GeneratedComClassAttribute' must implement at least one interface with 'GeneratedComInterfaceAttribute' or else the generated code with not have an effect.
- A class with 'GeneratedComClassAttribute' must implement at least one interface with 'GeneratedComInterfaceAttribute' or else the generated code with not have an effect.
+ Klasa z atrybutem „GeneratedComClassAttribute†musi implementować co najmniej jeden interfejs z atrybutem „GeneratedComInterfaceAttributeâ€. W przeciwnym wypadku wygenerowany kod nie bÄ™dzie miaÅ‚ efektu.Class '{0}' with 'GeneratedComClassAttribute' does not implement any interfaces with 'GeneratedComInterfaceAttribute'. Source will not be generated for '{0}'.
- Class '{0}' with 'GeneratedComClassAttribute' does not implement any interfaces with 'GeneratedComInterfaceAttribute'. Source will not be generated for '{0}'.
+ Klasa „{0}†z atrybutem „GeneratedComClassAttribute†nie implementuje żadnych interfejsów z atrybutem „GeneratedComInterfaceAttributeâ€. ŹródÅ‚o nie zostanie wygenerowane dla „{0}â€.The specified collection size parameter for an collection must be an integer type. If the size information is applied to a nested collection, the size parameter must be a collection of one less level of nesting with an integral element.
- The specified collection size parameter for an collection must be an integer type. If the size information is applied to a nested collection, the size parameter must be a collection of one less level of nesting with an integral element.
+ Określony parametr rozmiaru kolekcji dla kolekcji musi być liczbą całkowitą. Jeśli informacje o rozmiarze są stosowane do kolekcji zagnieżdżonej, parametr rozmiaru musi być kolekcją o jednym poziomie zagnieżdżenia mniej, o liczbie całkowitej..NET COM hosting with 'EnableComHosting' only supports built-in COM interop. It does not support source-generated COM interop with 'GeneratedComInterfaceAttribute'.
- .NET COM hosting with 'EnableComHosting' only supports built-in COM interop. It does not support source-generated COM interop with 'GeneratedComInterfaceAttribute'.
+ Hosting modelu COM platformy .NET z elementem „EnableComHosting†obsÅ‚uguje tylko wbudowanÄ… usÅ‚ugÄ™ miÄ™dzyoperacyjnÄ… modelu COM. Nie obsÅ‚uguje usÅ‚ugi miÄ™dzyoperacyjnej modelu COM wygenerowanej przez źródÅ‚o przy użyciu atrybutu „GeneratedComInterfaceAttributeâ€..NET COM hosting with 'EnableComHosting' does not support interfaces with the 'GeneratedComInterfaceAttribute'. Change any COM exposed interfaces implemented by '{0}' to use the 'System.Runtime.InteropServices.ComVisibleAttribute' instead
- .NET COM hosting with 'EnableComHosting' does not support interfaces with the 'GeneratedComInterfaceAttribute'. Change any COM exposed interfaces implemented by '{0}' to use the 'System.Runtime.InteropServices.ComVisibleAttribute' instead
+ Hosting modelu COM platformy .NET z elementem „EnableComHosting†nie obsÅ‚uguje interfejsów z atrybutem „GeneratedComInterfaceAttributeâ€. ZmieÅ„ wszystkie interfejsy ujawnione przez model COM zaimplementowane przez „{0}â€, aby zamiast tego użyć atrybutu „System.Runtime.InteropServices.ComVisibleAttributeâ€.NET COM hosting with 'EnableComHosting' does not support interfaces with the 'GeneratedComInterfaceAttribute'
- .NET COM hosting with 'EnableComHosting' does not support interfaces with the 'GeneratedComInterfaceAttribute'
+ Hosting modelu COM platformy .NET z elementem „EnableComHosting†nie obsÅ‚uguje interfejsów z atrybutem „GeneratedComInterfaceAttributeâ€The usage of 'GeneratedComInterfaceAttribute' does not follow recommendations. {0}
- The usage of 'GeneratedComInterfaceAttribute' does not follow recommendations. {0}
+ Użycie atrybutu „GeneratedComInterfaceAttribute†nie jest zgodne z zaleceniami. {0}The usage of 'GeneratedComInterfaceAttribute' does not follow recommendations.
- The usage of 'GeneratedComInterfaceAttribute' does not follow recommendations.
+ Użycie atrybutu „GeneratedComInterfaceAttribute†nie jest zgodne z zaleceniami.The return value in the managed definition will be converted to an 'out' parameter when calling the unmanaged COM method. If the return value is intended to be the HRESULT code returned by the unmanaged COM method, use '[PreserveSig]' on the method.
- The return value in the managed definition will be converted to an 'out' parameter when calling the unmanaged COM method. If the return value is intended to be the HRESULT code returned by the unmanaged COM method, use '[PreserveSig]' on the method.
+ Wartość zwracana w definicji zarządzanej zostanie przekonwertowana na parametr „out†podczas wywoływania niezarządzanej metody COM. Jeśli wartość zwracana ma być kodem HRESULT zwracanym przez niezarządzaną metodę COM, należy użyć „[PreserveSig]†w metodzie.The return value in the managed definition will be converted to an additional 'out' parameter at the end of the parameter list when calling the unmanaged COM method.
- The return value in the managed definition will be converted to an additional 'out' parameter at the end of the parameter list when calling the unmanaged COM method.
+ Wartość zwracana w definicji zarządzanej zostanie przekonwertowana na dodatkowy parametr „out†na końcu listy parametrów podczas wywoływania niezarządzanej metody COM.Source-generated COM will ignore any configuration that is not supported.
- Source-generated COM will ignore any configuration that is not supported.
+ COM wygenerowany przez źródło zignoruje każdą konfigurację, która nie jest obsługiwana.Source-generated P/Invokes will ignore any configuration that is not supported.
- Source-generated P/Invokes will ignore any configuration that is not supported.
+ Funkcja P/Invokes generowana przez źródło zignoruje każdą nieobsługiwaną konfigurację.The '{0}' configuration is not supported by source-generated COM. If the specified configuration is required, use `ComImport` instead.
- The '{0}' configuration is not supported by source-generated COM. If the specified configuration is required, use `ComImport` instead.
+ Konfiguracja „{0}†nie jest obsługiwana przez COM generowany przez źródło. Jeśli określona konfiguracja jest wymagana, użyj zamiast niej `ComImport`.The '{0}' configuration is not supported by source-generated P/Invokes. If the specified configuration is required, use a regular 'DllImport' instead.
- The '{0}' configuration is not supported by source-generated P/Invokes. If the specified configuration is required, use a regular 'DllImport' instead.
+ Konfiguracja „{0}†nie jest obsÅ‚ugiwana przez funkcjÄ™ P/Invokes generowanÄ… przez źródÅ‚o. JeÅ›li okreÅ›lona konfiguracja jest wymagana, użyj zamiast tego zwykÅ‚ego elementu „DllImportâ€.The specified marshalling configuration is not supported by source-generated COM. {0}.
- The specified marshalling configuration is not supported by source-generated COM. {0}.
+ Określona konfiguracja skierowania nie jest obsługiwana przez COM generowany źródłowo. {0}.The specified marshalling configuration is not supported by source-generated P/Invokes. {0}.
- The specified marshalling configuration is not supported by source-generated P/Invokes. {0}.
+ Określona konfiguracja skierowania nie jest obsługiwana przez funkcję P/Invokes generowaną przez źródło. {0}.The specified '{0}' configuration for parameter '{1}' is not supported by source-generated COM. If the specified configuration is required, use `ComImport` instead.
- The specified '{0}' configuration for parameter '{1}' is not supported by source-generated COM. If the specified configuration is required, use `ComImport` instead.
+ Określona konfiguracja „{0}†dla parametru „{1}†nie jest obsługiwana przez COM generowany przez źródło. Jeśli określona konfiguracja jest wymagana, użyj zamiast niej `ComImport`.The specified '{0}' configuration for parameter '{1}' is not supported by source-generated P/Invokes. If the specified configuration is required, use a regular 'DllImport' instead.
- The specified '{0}' configuration for parameter '{1}' is not supported by source-generated P/Invokes. If the specified configuration is required, use a regular 'DllImport' instead.
+ OkreÅ›lona konfiguracja „{0}†dla parametru „{1}†nie jest obsÅ‚ugiwana przez funkcjÄ™ P/Invokes generowanÄ… przez źródÅ‚o. JeÅ›li okreÅ›lona konfiguracja jest wymagana, użyj zamiast tego zwykÅ‚ego elementu „DllImportâ€.The specified '{0}' configuration for the return value of method '{1}' is not supported by source-generated COM. If the specified configuration is required, use `ComImport` instead.
- The specified '{0}' configuration for the return value of method '{1}' is not supported by source-generated COM. If the specified configuration is required, use `ComImport` instead.
+ Określona konfiguracja „{0}†dla wartości zwracanej metody „{1}†nie jest obsługiwana przez COM generowany przez źródło. Jeśli określona konfiguracja jest wymagana, użyj zamiast niej `ComImport`.The specified '{0}' configuration for the return value of method '{1}' is not supported by source-generated P/Invokes. If the specified configuration is required, use a regular 'DllImport' instead.
- The specified '{0}' configuration for the return value of method '{1}' is not supported by source-generated P/Invokes. If the specified configuration is required, use a regular 'DllImport' instead.
+ OkreÅ›lona konfiguracja „{0}†dla wartoÅ›ci zwracanej metody „{1}†nie jest obsÅ‚ugiwana przez funkcjÄ™ P/Invokes generowanÄ… przez źródÅ‚o. JeÅ›li okreÅ›lona konfiguracja jest wymagana, użyj zamiast tego zwykÅ‚ego elementu „DllImportâ€.The specified value '{0}' for '{1}' is not supported by source-generated COM. If the specified configuration is required, use `ComImport` instead.
- The specified value '{0}' for '{1}' is not supported by source-generated COM. If the specified configuration is required, use `ComImport` instead.
+ Określona wartość „{0}†dla „{1}†nie jest obsługiwana przez COM generowany przez źródło. Jeśli określona konfiguracja jest wymagana, użyj zamiast niej `ComImport`.The specified value '{0}' for '{1}' is not supported by source-generated P/Invokes. If the specified value is required, use a regular 'DllImport' instead.
- The specified value '{0}' for '{1}' is not supported by source-generated P/Invokes. If the specified value is required, use a regular 'DllImport' instead.
+ OkreÅ›lona wartość „{0}†dla parametru „{1}†nie jest obsÅ‚ugiwana przez funkcjÄ™ P/Invokes generowanÄ… przez źródÅ‚o. JeÅ›li okreÅ›lona konfiguracja jest wymagana, użyj zamiast tego zwykÅ‚ego elementu „DllImportâ€.Specified configuration is not supported by source-generated COM.
- Specified configuration is not supported by source-generated COM.
+ Określona konfiguracja nie jest obsługiwana przez COM wygenerowany przez źródło.Specified configuration is not supported by source-generated P/Invokes.
- Specified configuration is not supported by source-generated P/Invokes.
+ Określona konfiguracja nie jest obsługiwana przez funkcję P/Invokes generowaną przez źródło.Only one of 'ConstantElementCount' or 'ElementCountInfo' may be used in a 'MarshalUsingAttribute' for a given 'ElementIndirectionDepth'
- Only one of 'ConstantElementCount' or 'ElementCountInfo' may be used in a 'MarshalUsingAttribute' for a given 'ElementIndirectionDepth'
+ Tylko jedna z wartoÅ›ci „ConstantElementCount†lub element „ElementCountInfo†może być użyty w atrybucie „MarshalUsingAttribute†dla danego elementu „ElementIndirectionDepthâ€Containing type '{0}' has accessibility '{1}'.
- Containing type '{0}' has accessibility '{1}'.
+ ZawierajÄ…cy typ „{0}†ma uÅ‚atwienia dostÄ™pu „{1}â€.Converting this interface to use 'GeneratedComInterfaceAttribute' may produce invalid code and may require additional work
- Converting this interface to use 'GeneratedComInterfaceAttribute' may produce invalid code and may require additional work
+ Przekonwertowanie tego interfejsu w celu użycia atrybutu „GeneratedComInterfaceAttribute†może spowodować wygenerowanie nieprawidłowego kodu i może wymagać dodatkowej pracyAutomatically converting a P/Invoke with 'PreserveSig' set to 'false' to a source-generated P/Invoke may produce invalid code
- Automatically converting a P/Invoke with 'PreserveSig' set to 'false' to a source-generated P/Invoke may produce invalid code
+ Automatyczne konwertowanie funkcji P/Invoke z parametrem „PreserveSig†ustawionym na wartość „false†na wygenerowaną przez źródło funkcję P/Invoke może spowodować utworzenie nieprawidłowego koduConvert to 'GeneratedComInterface' and allow unsafe code
- Convert to 'GeneratedComInterface' and allow unsafe code
+ Konwertuj na element „GeneratedComInterface†i zezwalaj na niebezpieczny kodUse 'GeneratedComInterfaceAttribute' instead of 'ComImportAttribute' to generate COM marshalling code at compile time
- Use 'GeneratedComInterfaceAttribute' instead of 'ComImportAttribute' to generate COM marshalling code at compile time
+ Użyj atrybutu „GeneratedComInterfaceAttribute†zamiast „ComImportAttributeâ€, aby wygenerować kod marshallingu modelu COM w czasie kompilacjiConverting this API to 'GeneratedComInterfaceAttribute' will require additional code to provide custom marshallers for some parameters.
- Converting this API to 'GeneratedComInterfaceAttribute' will require additional code to provide custom marshallers for some parameters.
+ Przekonwertowanie tego interfejsu API na atrybut „GeneratedComInterfaceAttribute†będzie wymagać dodatkowego kodu w celu udostępnienia niestandardowych organizatorów dla niektórych parametrów.Mark the type '{0}' with 'GeneratedComInterfaceAttribute' instead of 'ComImportAttribute' to generate COM marshalling code at compile time
- Mark the type '{0}' with 'GeneratedComInterfaceAttribute' instead of 'ComImportAttribute' to generate COM marshalling code at compile time
+ Oznacz typ „{0}†atrybutem „GeneratedComInterfaceAttribute†zamiast „ComImportAttributeâ€, aby wygenerować kod marshallingu modelu COM w czasie kompilacjiConvert to 'GeneratedComInterface'
- Convert to 'GeneratedComInterface'
+ Konwertowanie na element „GeneratedComInterfaceâ€Convert to 'LibraryImport'
- Convert to 'LibraryImport'
+ Konwertuj na element „LibraryImportâ€Convert to 'LibraryImport' and enable unsafe code
- Convert to 'LibraryImport' and enable unsafe code
+ Konwertuj na element „LibraryImport†i włącz niebezpieczny kodUse 'LibraryImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time
- Use 'LibraryImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time
+ Użyj elementu „LibraryImportAttribute†zamiast elementu „DllImportAttributeâ€, aby wygenerować kod skierowania funkcji P/Invoke w czasie kompilacjiConverting this API to 'LibraryImport' will require additional code to provide custom marshallers for some parameters.
- Converting this API to 'LibraryImport' will require additional code to provide custom marshallers for some parameters.
+ Przekonwertowanie tego interfejsu API na element „LibraryImport†będzie wymagać dodatkowego kodu w celu udostępnienia niestandardowych poleceń dla niektórych parametrów.Mark the method '{0}' with 'LibraryImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time
- Mark the method '{0}' with 'LibraryImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time
+ Oznacz metodÄ™ „{0}†za pomocÄ… elementu „LibraryImportAttribute†zamiast elementu „DllImportAttributeâ€, aby wygenerować kod skierowania funkcji P/Invoke w czasie kompilacjiUse 'LibraryImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time
- Use 'LibraryImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time
+ Użyj elementu „LibraryImportAttribute†zamiast elementu „DllImportAttributeâ€, aby wygenerować kod skierowania funkcji P/Invoke w czasie kompilacjiConvert to 'LibraryImport' with '{0}' suffix
- Convert to 'LibraryImport' with '{0}' suffix
+ Konwertuj na element „LibraryImport†z sufiksem „{0}â€Convert to 'LibraryImport' with '{0}' suffix and enable unsafe code
- Convert to 'LibraryImport' with '{0}' suffix and enable unsafe code
+ Konwertuj na element „LibraryImport†z sufiksem „{0}†i włącz niebezpieczny kodMarshaller type does not have the required shape
- Marshaller type does not have the required shape
+ Typ marshallera nie ma wymaganego kształtuThis element cannot depend on '{0}' for collection size information without creating a dependency cycle
- This element cannot depend on '{0}' for collection size information without creating a dependency cycle
+ Ten element nie może zależeć od elementu „{0}†dla informacji o rozmiarze kolekcji bez tworzenia cyklu zależnościCount information for a given element at a given indirection level can only be specified once
- Count information for a given element at a given indirection level can only be specified once
+ Informacje o liczbie dla danego elementu na danym poziomie pośrednim można podać tylko razMultiple marshalling attributes per element per indirection level is unsupported, but duplicate information was provided for indirection level {0}
- Multiple marshalling attributes per element per indirection level is unsupported, but duplicate information was provided for indirection level {0}
+ Wiele atrybutów skierowania na element na poziomie pośrednim nie jest obsługiwanych, ale podano zduplikowane informacje dla poziomu pośredniego {0}A marshaller for an element scenario cannot be stateful.
- A marshaller for an element scenario cannot be stateful.
+ Marshaller dla scenariusza elementu nie może być stanowy.The specified marshaller type '{0}' is a stateful marshaller, but stateful marshallers are not allowed in the provided marshal mode '{1}'
- The specified marshaller type '{0}' is a stateful marshaller, but stateful marshallers are not allowed in the provided marshal mode '{1}'
+ OkreÅ›lony typ marshallera „{0}†jest stanowym marshallerem, ale stanowe marshallery nie sÄ… dozwolone w podanym trybie marshalingu „{1}â€The element type of the span returned by the first method must be the same type as the element type of the span returned by the second method.
- The element type of the span returned by the first method must be the same type as the element type of the span returned by the second method.
+ Typ elementu zakresu zwracanego przez pierwszą metodę musi być tego samego typu co typ elementu zakresu zwracanego przez drugą metodę.The element type of the span returned by '{0}' must be the same type as the element type of the span returned by '{1}'.
- The element type of the span returned by '{0}' must be the same type as the element type of the span returned by '{1}'.
+ Typ elementu zakresu zwracanego przez „{0}†musi być tego samego typu co typ elementu zakresu zwracanego przez „{1}â€.An entry-point type for marshalling a given type must not be 'null'.
- An entry-point type for marshalling a given type must not be 'null'.
+ Typ punktu wejÅ›cia do przeprowadzenia marshalingu danego typu nie może mieć wartoÅ›ci „nullâ€.The entry-point marshaller type for the type '{0}' must be not 'null'
- The entry-point marshaller type for the type '{0}' must be not 'null'
+ Typ marshallera punktu wejÅ›cia dla typu „{0}†nie może mieć wartoÅ›ci „nullâ€An entry-point type for marshalling a given type must have a 'System.Runtime.InteropServices.CustomMarshallerAttribute' that specifies this type as the managed type.
- An entry-point type for marshalling a given type must have a 'System.Runtime.InteropServices.CustomMarshallerAttribute' that specifies this type as the managed type.
+ Typ punktu wejÅ›cia do przeprowadzenia marshalingu danego typu musi mieć atrybut „System.Runtime.InteropServices.CustomMarshaellerAttributeâ€, który okreÅ›la ten typ jako typ zarzÄ…dzany.The entry-point marshaller type '{0}' for the type '{1}' must be a type with at least one 'System.Runtime.InteropServices.CustomMarshallerAttribute' that specifies this type as the managed type
- The entry-point marshaller type '{0}' for the type '{1}' must be a type with at least one 'System.Runtime.InteropServices.CustomMarshallerAttribute' that specifies this type as the managed type
+ Typ marshallera punktu wejÅ›cia „{0}†dla typu „{1}†musi być typem z co najmniej jednym atrybutem „System.Runtime.InteropServices.CustomMarshaellerAttributeâ€, który okreÅ›la ten typ jako typ zarzÄ…dzanyMarshalling info was specified for 'ElementIndirectionDepth' {0}, but marshalling info was only needed for {1} level(s) of indirection
- Marshalling info was specified for 'ElementIndirectionDepth' {0}, but marshalling info was only needed for {1} level(s) of indirection
+ Informacje dotyczące skierowania zostały określone dla elementu „ElementIndirectionDepth†{0}, ale informacje dotyczące skierowania były potrzebne tylko dla poziomów pośrednich w liczbie {1}The first parameter of the first method must be the same type as the return types of the second method.
- The first parameter of the first method must be the same type as the return types of the second method.
+ Pierwszy parametr pierwszej metody musi być tego samego typu co zwracane typy drugiej metody.The first parameter of '{0}' must be the same type as the return type of '{1}'
- The first parameter of '{0}' must be the same type as the return type of '{1}'
+ Pierwszy parametr „{0}†musi być tego samego typu co zwracany typ „{1}â€The first parameters of the two methods must be the same type.
- The first parameters of the two methods must be the same type.
+ Pierwsze parametry obu tych metod muszą być tego samego typu.The first parameter of '{0}' and '{1}' must be the same type
- The first parameter of '{0}' and '{1}' must be the same type
+ Pierwszy parametr „{0}†i „{1}†musi być tego samego typuOverloading the 'FromUnmanaged' method is unuspported as some shapes are unable to distinguish between overloads.
- Overloading the 'FromUnmanaged' method is unuspported as some shapes are unable to distinguish between overloads.
+ Przeciążenie metody „FromUnmanaged†nie jest obsługiwane, ponieważ niektóre kształty nie mogą rozróżnić przeciążeń.The type '{0}' overloads the 'FromUnmanaged' method, which is not supported in custom marshallers
- The type '{0}' overloads the 'FromUnmanaged' method, which is not supported in custom marshallers
+ Typ „{0}†przeciąża metodÄ™ „ZNiezarzÄ…dzaneâ€, która nie jest obsÅ‚ugiwana w niestandardowych marshalerachThe configuration of 'StringMarshalling' and 'StringMarshallingCustomType' must match the base COM interface.
- The configuration of 'StringMarshalling' and 'StringMarshallingCustomType' must match the base COM interface.
+ Konfiguracja elementów „StringMarssourceing†i „StringMarsxtingCustomType†musi być zgodna z podstawowym interfejsem COM.The marshaller type must be a closed generic or have the same number of generic parameters as the managed type so the emitted code can use a specific instantiation.
- The marshaller type must be a closed generic or have the same number of generic parameters as the managed type so the emitted code can use a specific instantiation.
+ Typ marshallera musi być zamkniętym typem ogólnym lub mieć taką samą liczbę parametrów ogólnych jak typ zarządzany, aby emitowany kod mógł używać określonego wystąpienia.The marshaller type '{0}' for managed type '{1}' must be a closed generic type, have the same arity as the managed type if it is a value marshaller, or have one additional generic parameter if it is a collection marshaller.
- The marshaller type '{0}' for managed type '{1}' must be a closed generic type, have the same arity as the managed type if it is a value marshaller, or have one additional generic parameter if it is a collection marshaller.
+ Typ marshallera „{0}†dla typu zarządzanego „{1}†musi być zamkniętym typem ogólnym, mieć taką samą argumentację jak typ zarządzany, jeśli jest to marshaller wartości lub mieć jeden dodatkowy parametr ogólny, jeśli jest to marshaller kolekcji.The return type of 'GetPinnableReference' (after accounting for 'ref') must be blittable.
- The return type of 'GetPinnableReference' (after accounting for 'ref') must be blittable.
+ Zwracany typ elementu „GetPinnableReference†(po uwzglÄ™dnieniu wartoÅ›ci „refâ€) musi być kopiowalny.The dereferenced type of the return type of the 'GetPinnableReference' method must be blittable
- The dereferenced type of the return type of the 'GetPinnableReference' method must be blittable
+ Typ, do którego nie można usunąć odwołania, zwracanego typu metody „GetPinnableReference†musi być kopiowalnyThe provided graph has cycles and cannot be topologically sorted.
- The provided graph has cycles and cannot be topologically sorted.
+ Podany wykres zawiera cykle i nie można go posortować topologicznie.The type '{0}' will be treated as a struct in the native signature, not as a native HRESULT. To treat this as an HRESULT, add '[return:MarshalAs(UnmanagedType.Error)]' to the method.
- The type '{0}' will be treated as a struct in the native signature, not as a native HRESULT. To treat this as an HRESULT, add '[return:MarshalAs(UnmanagedType.Error)]' to the method.
+ Typ „{0}†będzie traktowany jako struktura w podpisie natywnym, a nie jako natywny wynik HRESULT. Aby traktować to jako HRESULT, dodaj element „[return:MarshalAs(UnmanagedType.Error)]†do metody.This type will be treated as a struct in the native signature, not as a native HRESULT
- This type will be treated as a struct in the native signature, not as a native HRESULT
+ Ten typ będzie traktowany jako struktura w podpisie natywnym, a nie jako natywny wynik HRESULTThe '[In]' attribute is only supported on array parameters. By-value parameters are considered read-only by default.
- The '[In]' attribute is only supported on array parameters. By-value parameters are considered read-only by default.
+ Atrybut „[In]†jest obsługiwany tylko w przypadku parametrów tablicy. Parametry według wartości są domyślnie uznawane za tylko do odczytu.The '[In]' attribute is not supported unless the '[Out]' attribute is also used. Blittable arrays cannot be marshalled as '[In]' only.
- The '[In]' attribute is not supported unless the '[Out]' attribute is also used. Blittable arrays cannot be marshalled as '[In]' only.
+ Atrybut „[In]†nie jest obsÅ‚ugiwany, chyba że używany jest również atrybut „[Out]â€. Tablice kopiowalne nie mogÄ… być kierowane tylko jako „[In]â€.The '[In]' attribute is not necessary unless the '[Out]' attribute is also used. The behavior of the '[In]' attribute without the '[Out]' attribute is the same as the default behavior.
- The '[In]' attribute is not necessary unless the '[Out]' attribute is also used. The behavior of the '[In]' attribute without the '[Out]' attribute is the same as the default behavior.
+ Atrybut „[In]†nie jest potrzebny, chyba że używany jest również atrybut „[Out]â€. Zachowanie atrybutu „[In]†bez atrybutu „[Out]†jest takie samo jak zachowanie domyÅ›lne.The '[In]' and '[Out]' attributes are unsupported on parameters passed by reference. Use the 'in', 'ref', or 'out' keywords instead.
- The '[In]' and '[Out]' attributes are unsupported on parameters passed by reference. Use the 'in', 'ref', or 'out' keywords instead.
+ Atrybuty „[In]†i „[Out]†nie sÄ… obsÅ‚ugiwane w parametrach przekazywanych przez odwoÅ‚anie. Zamiast tego użyj słów kluczowych „inâ€, „ref†lub „outâ€.The provided '[In]' and '[Out]' attributes on this parameter are unsupported on this parameter.
- The provided '[In]' and '[Out]' attributes on this parameter are unsupported on this parameter.
+ Podane atrybuty „[In]†i „[Out]†w tym parametrze nie są obsługiwane w tym parametrze.The '[In]' and '[Out]' attributes are only supported on array parameters. Consider using the 'ref' keyword to make the parameter mutable.
- The '[In]' and '[Out]' attributes are only supported on array parameters. Consider using the 'ref' keyword to make the parameter mutable.
+ Atrybuty „[In]†i „[Out]†sÄ… obsÅ‚ugiwane tylko w przypadku parametrów tablicy. Rozważ użycie sÅ‚owa kluczowego „refâ€, aby umożliwić modyfikowanie parametru.[In] and [Out] attributes
- [In] and [Out] attributes
+ Atrybuty [In] i [Out]
@@ -509,814 +509,814 @@
Events are not a concept in COM, so no interop code will be source generated for instance events on source-generated COM interfaces.
- Events are not a concept in COM, so no interop code will be source generated for instance events on source-generated COM interfaces.
+ Zdarzenia nie są koncepcją w modelu COM, więc żaden kod międzyoperacyjny nie będzie generowany dla zdarzeń wystąpień w interfejsach COM generowanych źródłowo.The instance event '{0}' is declared in the interface '{1}', which has the 'GeneratedComInterfaceAttribute' applied
- The instance event '{0}' is declared in the interface '{1}', which has the 'GeneratedComInterfaceAttribute' applied
+ Zdarzenie wystÄ…pienia „{0}†jest zadeklarowane w interfejsie „{1}â€, w którym zastosowano atrybut „GeneratedComInterfaceAttributeâ€Declaring an instance event in a type with the 'GeneratedComInterfaceAttribute' is not supported
- Declaring an instance event in a type with the 'GeneratedComInterfaceAttribute' is not supported
+ Deklarowanie zdarzenia wystąpienia w typie z atrybutem „GeneratedComInterfaceAttribute†nie jest obsługiwaneProperties are not a concept in COM, so no interop code will be source generated for instance properties on source-generated COM interfaces.
- Properties are not a concept in COM, so no interop code will be source generated for instance properties on source-generated COM interfaces.
+ Te właściwości nie są koncepcją w modelu COM, dlatego nie zostanie wygenerowany kod międzyoperacyjny dla właściwości wystąpienia w interfejsach COM generowanych źródłowo.The instance property '{0}' is declared in the interface '{1}', which has the 'GeneratedComInterfaceAttribute' applied
- The instance property '{0}' is declared in the interface '{1}', which has the 'GeneratedComInterfaceAttribute' applied
+ WÅ‚aÅ›ciwość wystÄ…pienia „{0}†jest zadeklarowana w interfejsie „{1}â€, do którego zastosowano atrybut „GeneratedComInterfaceAttributeâ€Declaring an instance property in a type with the 'GeneratedComInterfaceAttribute' is not supported
- Declaring an instance property in a type with the 'GeneratedComInterfaceAttribute' is not supported
+ Deklarowanie właściwości wystąpienia w typie z atrybutem „GeneratedComInterfaceAttribute†nie jest obsługiwaneUsing 'GeneratedComInterfaceAttribute' and 'InterfaceTypeAttribute' is not supported with 'ComInterfaceType' value '{0}'.
- Using 'GeneratedComInterfaceAttribute' and 'InterfaceTypeAttribute' is not supported with 'ComInterfaceType' value '{0}'.
+ Użycie atrybutów „GeneratedComInterfaceAttribute†i „InterfaceTypeAttribute†nie jest obsÅ‚ugiwane w przypadku wartoÅ›ci „ComInterfaceType†„{0}â€.'GeneratedComInterfaceType' does not support the 'ComInterfaceType' value supplied to 'InterfaceTypeAttribute' on the same type.
- 'GeneratedComInterfaceType' does not support the 'ComInterfaceType' value supplied to 'InterfaceTypeAttribute' on the same type.
+ Typ „GeneratedComInterfaceType†nie obsługuje wartości „ComInterfaceType†dostarczonej do atrybutu „InterfaceTypeAttribute†w tym samym typie.Method '{0}' is contained in a type '{1}' that is not marked 'partial'. COM source generation will ignore method '{0}'.
- Method '{0}' is contained in a type '{1}' that is not marked 'partial'. COM source generation will ignore method '{0}'.
+ Metoda „{0}†jest zawarta w typie „{1}â€, który nie jest oznaczony jako „częściowyâ€. Generowanie źródÅ‚a COM zignoruje metodÄ™ „{0}â€.Method '{0}' is contained in a type '{1}' that is not marked 'partial'. P/Invoke source generation will ignore method '{0}'.
- Method '{0}' is contained in a type '{1}' that is not marked 'partial'. P/Invoke source generation will ignore method '{0}'.
+ Metoda „{0}†jest zawarta w typie „{1}â€, który nie jest oznaczony jako „częściowyâ€. Generowanie źródÅ‚a funkcji P/Invoke zignoruje metodÄ™ „{0}â€.Containing type of method with VirtualMethodIndexAttribute does not have a UnmanagedObjectUnwrapperAttribute.
- Containing type of method with VirtualMethodIndexAttribute does not have a UnmanagedObjectUnwrapperAttribute.
+ Zawieranie typu metody z atrybutem VirtualMethodIndexAttribute nie ma atrybutu UnmanagedObjectUnwrapperAttribute. Methods on interfaces marked with 'GeneratedComInterfaceAttribute' should be non-generic. COM source generation will ignore methods that are generic.
- Methods on interfaces marked with 'GeneratedComInterfaceAttribute' should be non-generic. COM source generation will ignore methods that are generic.
+ Metody w interfejsach oznaczone atrybutem „GeneratedComInterfaceAttribute†powinny być nie-ogólne. Generowanie źródła COM zignoruje metody, które są ogólne.Methods marked with 'LibraryImportAttribute' should be 'static', 'partial', and non-generic. P/Invoke source generation will ignore methods that are non-'static', non-'partial', or generic.
- Methods marked with 'LibraryImportAttribute' should be 'static', 'partial', and non-generic. P/Invoke source generation will ignore methods that are non-'static', non-'partial', or generic.
+ Metody oznaczone jako atrybut „LibraryImportAttribute†powinny być „statyczneâ€, „częściowe†i nieogólne. Generowanie źródÅ‚a funkcji P/Invoke zignoruje metody, które nie sÄ… „statyczneâ€, nie sÄ… „częściowe†lub ogólne.Method '{0}' should be non-generic when on interfaces marked with the 'GeneratedComInterfaceAttribute'. COM source generation will ignore method '{0}'.
- Method '{0}' should be non-generic when on interfaces marked with the 'GeneratedComInterfaceAttribute'. COM source generation will ignore method '{0}'.
+ Metoda „{0}†powinna być nie-ogólna w interfejsach oznaczonych atrybutem „GeneratedComInterfaceAttributeâ€. Generowanie źródÅ‚a COM zignoruje metodÄ™ „{0}â€.Method '{0}' should be 'static', 'partial', and non-generic when marked with 'LibraryImportAttribute'. P/Invoke source generation will ignore method '{0}'.
- Method '{0}' should be 'static', 'partial', and non-generic when marked with 'LibraryImportAttribute'. P/Invoke source generation will ignore method '{0}'.
+ Metoda „{0}†powinna być „statycznaâ€, „częściowa†i nieogólna, gdy jest oznaczona za pomocÄ… atrybutu „LibraryImportAttributeâ€. Generowanie źródÅ‚a funkcji P/Invoke zignoruje metodÄ™ „{0}â€.Invalid 'CustomMarshallerAttribute' usage
- Invalid 'CustomMarshallerAttribute' usage
+ NieprawidÅ‚owe użycie atrybutu „CustomMarshallerAttributeâ€The configuration of 'ExceptionMarshalling' and 'ExceptionMarshallingCustomType' is invalid.
- The configuration of 'ExceptionMarshalling' and 'ExceptionMarshallingCustomType' is invalid.
+ Konfiguracja elementów „ExceptionMarshalling†i „ExceptionMarshallingCustomType†jest nieprawidłowa.The configuration of 'ExceptionMarshalling' and 'ExceptionMarshallingCustomType' on method '{0}' is invalid. {1}
- The configuration of 'ExceptionMarshalling' and 'ExceptionMarshallingCustomType' on method '{0}' is invalid. {1}
+ Konfiguracja elementów „ExceptionMarshalling†i „ExceptionMarshallingCustomType†w metodzie „{0}†jest nieprawidłowa. {1}{1} is a message containing additional details about what is not valid'ExceptionMarshallingCustomType' must be specified when 'ExceptionMarshalling' is set to 'ExceptionMarshalling.Custom'.
- 'ExceptionMarshallingCustomType' must be specified when 'ExceptionMarshalling' is set to 'ExceptionMarshalling.Custom'.
+ Element „ExceptionMarshallingCustomType†musi być okreÅ›lony kiedy „ExceptionMarshalling†jest ustawiony na „ExceptionMarshalling.Customâ€.'ExceptionMarshalling' should be set to 'ExceptionMarshalling.Custom' when 'ExceptionMarshallingCustomType' is specified.
- 'ExceptionMarshalling' should be set to 'ExceptionMarshalling.Custom' when 'ExceptionMarshallingCustomType' is specified.
+ Element „ExceptionMarshalling†powinien być ustawiony na „ExceptionMarshalling.Custom†kiedy typ „ExceptionMarshallingCustomType†jest określony.The provided value is not a known flag of the 'ExceptionMarshalling' enum.
- The provided value is not a known flag of the 'ExceptionMarshalling' enum.
+ Podana wartość nie jest znanÄ… flagÄ… wyliczenia „'ExceptionMarshallingâ€.Classes with 'GeneratedComClassAttribute' must implement one or more interfaces with 'GeneratedComInterfaceAttribute', be marked partial, and be non-generic.
- Classes with 'GeneratedComClassAttribute' must implement one or more interfaces with 'GeneratedComInterfaceAttribute', be marked partial, and be non-generic.
+ Klasy z atrybutem „GeneratedComClassAttribute†muszÄ… implementować co najmniej jeden interfejs z atrybutem „GeneratedComInterfaceAttributeâ€, być oznaczone jako częściowe i nie być ogólne.Class '{0}' with 'GeneratedComClassAttribute' or one of its containing types is not marked 'partial'.
- Class '{0}' with 'GeneratedComClassAttribute' or one of its containing types is not marked 'partial'.
+ Klasa „{0}†z atrybutem „GeneratedComClassAttribute†lub jeden z jej typów zawierajÄ…cych nie jest oznaczony jako „częściowyâ€.Invalid 'GeneratedComClassAttribute' usage
- Invalid 'GeneratedComClassAttribute' usage
+ NieprawidÅ‚owe użycie elementu „GeneratedComClassAttributeâ€Interfaces attributed with 'GeneratedComInterfaceAttribute' must have 'public' or 'internal' accessibility and be partial, non-generic, and must specify a GUID with 'System.Runtime.InteropServices.GuidAttribute'.
- Interfaces attributed with 'GeneratedComInterfaceAttribute' must have 'public' or 'internal' accessibility and be partial, non-generic, and must specify a GUID with 'System.Runtime.InteropServices.GuidAttribute'.
+ Interfejsy z atrybutem „GeneratedComInterfaceAttribute†muszÄ… mieć uÅ‚atwienia dostÄ™pu „publiczny†lub „wewnÄ™trznyâ€, muszÄ… być częściowe, nie być ogóle, i muszÄ… okreÅ›lać identyfikator GUID z atrybutem „System.Runtime.InteropServices.GuidAttributeâ€.Interface '{0}' is attributed with 'GeneratedComInterfaceAttribute' but is generic.
- Interface '{0}' is attributed with 'GeneratedComInterfaceAttribute' but is generic.
+ Interfejs „{0}†ma atrybut „GeneratedComInterfaceAttributeâ€, ale jest ogólny.Interface '{0}' is attributed with 'GeneratedComInterfaceAttribute' but is not accessible by generated code. The interface and all containing types must have accessibility 'internal' or 'public' for generated code to access it. {1}
- Interface '{0}' is attributed with 'GeneratedComInterfaceAttribute' but is not accessible by generated code. The interface and all containing types must have accessibility 'internal' or 'public' for generated code to access it. {1}
+ Interfejs „{0}†ma atrybut „GeneratedComInterfaceAttributeâ€, ale nie jest dostÄ™pny za pomocÄ… wygenerowanego kodu. Interfejs i wszystkie zawierajÄ…ce go typy muszÄ… mieć uÅ‚atwienia dostÄ™pu „wewnÄ™trzny†lub „publicznyâ€, aby wygenerowany kod mógÅ‚ uzyskać do niego dostÄ™p. {1}{1} is details about which type/containing type is not accessibleInterface '{0}' is attributed with 'GeneratedComInterfaceAttribute' but is missing 'System.Runtime.InteropServices.GuidAttribute'.
- Interface '{0}' is attributed with 'GeneratedComInterfaceAttribute' but is missing 'System.Runtime.InteropServices.GuidAttribute'.
+ Interfejs „{0}†ma atrybut „GeneratedComInterfaceAttributeâ€, ale brakuje atrybutu „System.Runtime.InteropServices.GuidAttributeâ€.Invalid 'GeneratedComInterfaceAttribute' usage.
- Invalid 'GeneratedComInterfaceAttribute' usage.
+ NieprawidÅ‚owe użycie atrybutu „GeneratedComInterfaceAttributeâ€.The interface '{0}' or one of its containing types is missing the 'partial' keyword. Code will not be generated for '{0}'.
- The interface '{0}' or one of its containing types is missing the 'partial' keyword. Code will not be generated for '{0}'.
+ W interfejsie „{0}†lub jednym z jego typów zawierajÄ…cych brakuje sÅ‚owa kluczowego „partialâ€. Kod nie zostanie wygenerowany dla „{0}â€.Invalid 'LibraryImportAttribute' usage
- Invalid 'LibraryImportAttribute' usage
+ NieprawidÅ‚owe użycie atrybutu „LibraryImportAttributeâ€Specified managed type is invalid
- Specified managed type is invalid
+ Określony typ zarządzany jest nieprawidłowyInvalid 'MarshalMode' value.
- Invalid 'MarshalMode' value.
+ NieprawidÅ‚owa wartość „MarshalModeâ€.Specified marshaller type is invalid
- Specified marshaller type is invalid
+ Określony typ marshallera jest nieprawidłowyInvalid 'NativeMarshallingAttribute' usage
- Invalid 'NativeMarshallingAttribute' usage
+ NieprawidÅ‚owe użycie atrybutu „NativeMarshallingAttributeâ€The specified 'ComInterfaceOptions' are invalid.
- The specified 'ComInterfaceOptions' are invalid.
+ Określone opcje „ComInterfaceOptions†są nieprawidłowe.The specified 'ComInterfaceOptions' on '{0}' are invalid. {1}
- The specified 'ComInterfaceOptions' on '{0}' are invalid. {1}
+ Określone opcje „ComInterfaceOptions†w „{0}†są nieprawidłowe. {1}Marshaller type has incompatible method signatures
- Marshaller type has incompatible method signatures
+ Typ marshallera ma niezgodne sygnatury metodyThe configuration of 'StringMarshalling' and 'StringMarshallingCustomType' is invalid.
- The configuration of 'StringMarshalling' and 'StringMarshallingCustomType' is invalid.
+ Konfiguracja elementów „StringMarshalling†i „StringMarshallingCustomType†jest nieprawidłowa.The configuration of 'StringMarshalling' and 'StringMarshallingCustomType' on interface '{0}' is invalid. {1}
- The configuration of 'StringMarshalling' and 'StringMarshallingCustomType' on interface '{0}' is invalid. {1}
+ Konfiguracja elementów „StringMarshalling†i „StringMarshallingCustomType†w interfejsie „{0}†jest nieprawidłowa. {1}{1} is a message containing additional details about what is not validThe configuration of 'StringMarshalling' and 'StringMarshallingCustomType' on method '{0}' is invalid. {1}
- The configuration of 'StringMarshalling' and 'StringMarshallingCustomType' on method '{0}' is invalid. {1}
+ Konfiguracja elementów „StringMarshalling†i „StringMarshallingCustomType†w metodzie „{0}†jest nieprawidłowa. {1}{1} is a message containing additional details about what is not valid'StringMarshallingCustomType' must be specified when 'StringMarshalling' is set to 'StringMarshalling.Custom'.
- 'StringMarshallingCustomType' must be specified when 'StringMarshalling' is set to 'StringMarshalling.Custom'.
+ Element „StringMarshallingCustomType†należy okreÅ›lić, gdy element „StringMarshalling†ma wartość „StringMarshalling.Customâ€.'StringMarshalling' should be set to 'StringMarshalling.Custom' when 'StringMarshallingCustomType' is specified.
- 'StringMarshalling' should be set to 'StringMarshalling.Custom' when 'StringMarshallingCustomType' is specified.
+ Element „StringMarshalling†należy ustawić na wartość „StringMarshalling.Customâ€, gdy okreÅ›lono element „StringMarshallingCustomTypeâ€.The configuration of 'StringMarshalling' and 'StringMarshallingCustomType' on interface '{0}' is invalid. {1}
- The configuration of 'StringMarshalling' and 'StringMarshallingCustomType' on interface '{0}' is invalid. {1}
+ Konfiguracja elementów „StringMarshalling†i „StringMarshallingCustomType†w interfejsie „{0}†jest nieprawidłowa. {1}The configuration of 'StringMarshalling' and 'StringMarshallingCustomType' on method '{0}' is invalid. {1}
- The configuration of 'StringMarshalling' and 'StringMarshallingCustomType' on method '{0}' is invalid. {1}
+ Konfiguracja elementów „StringMarshalling†i „StringMarshallingCustomType†w metodzie „{0}†jest nieprawidłowa. {1}{1} is a message containing additional details about what is not validInvalid 'VirtualMethodIndexAttribute' usage
- Invalid 'VirtualMethodIndexAttribute' usage
+ NieprawidÅ‚owe użycie atrybutu „VirtualMethodIndexAttributeâ€The usage of 'LibraryImportAttribute' does not follow recommendations. {0}
- The usage of 'LibraryImportAttribute' does not follow recommendations. {0}
+ Użycie atrybutu „LibraryImportAttribute†nie jest zgodne z zaleceniami. {0}The usage of 'LibraryImportAttribute' does not follow recommendations.
- The usage of 'LibraryImportAttribute' does not follow recommendations.
+ Użycie atrybutu „LibraryImportAttribute†nie jest zgodne z zaleceniami.The element type of the 'ReadOnlySpan' returned by 'GetManagedValuesSource' must be the same as the element type returned by 'GetManagedValuesDestination'.
- The element type of the 'ReadOnlySpan' returned by 'GetManagedValuesSource' must be the same as the element type returned by 'GetManagedValuesDestination'.
+ Typ elementu „ReadOnlySpan†zwracany przez element „GetManagedValuesSource†musi być taki sam jak typ elementu zwracany przez element „GetManagedValuesDestinationâ€.The element type of the 'ReadOnlySpan' returned by 'GetManagedValuesSource' must be the same as the element type returned by 'GetManagedValuesDestination'
- The element type of the 'ReadOnlySpan' returned by 'GetManagedValuesSource' must be the same as the element type returned by 'GetManagedValuesDestination'
+ Typ elementu „ReadOnlySpan†zwracany przez element „GetManagedValuesSource†musi być taki sam jak typ elementu zwracany przez element „GetManagedValuesDestinationâ€A 'LinearCollection'-kind native type that supports the 'CallerAllocatedBuffer' feature must provide a three-parameter constructor taking the managed type as the first parameter, a 'Span<byte>' as the second parameter, and the native size of the element as the third parameter
- A 'LinearCollection'-kind native type that supports the 'CallerAllocatedBuffer' feature must provide a three-parameter constructor taking the managed type as the first parameter, a 'Span<byte>' as the second parameter, and the native size of the element as the third parameter
+ Typ natywny rodzaju „LinearCollectionâ€, który obsÅ‚uguje funkcjÄ™ „CallerAllocatedBufferâ€, musi zapewniać konstruktora z trzema parametrami, przyjmujÄ…cego typ zarzÄ…dzany jako pierwszy parametr, wartość „Span<byte>†jako drugi parametr i natywny rozmiar elementu jako trzeci parametrThe type '{0}' specifies that it supports 'In' marshalling with the 'CallerAllocatedBuffer' feature for '{1}' but does not provide a three-parameter constructor that takes a '{1}' , a 'Span<byte>', and an 'int'
- The type '{0}' specifies that it supports 'In' marshalling with the 'CallerAllocatedBuffer' feature for '{1}' but does not provide a three-parameter constructor that takes a '{1}' , a 'Span<byte>', and an 'int'
+ Typ „{0}†okreÅ›la, że obsÅ‚uguje funkcjÄ™ skierowania „In†z funkcjÄ… „CallerAllocatedBuffer†dla elementu „{1}â€, ale nie udostÄ™pnia konstruktora z trzema parametrami, który przyjmuje wartość „{1}â€, \"Span<byte>\" i „intâ€A contiguous collection marshaller that supports marshalling from managed to unmanaged must provide a 'GetManagedValuesSource' that returns a 'ReadOnlySpan<>' and a 'GetUnmanagedValuesDestination' method that returns a 'Span<>'.
- A contiguous collection marshaller that supports marshalling from managed to unmanaged must provide a 'GetManagedValuesSource' that returns a 'ReadOnlySpan<>' and a 'GetUnmanagedValuesDestination' method that returns a 'Span<>'.
+ Organizator zwartej kolekcji, który obsÅ‚uguje przeprowadzanie marshalingu z zarzÄ…dzanych do niezarzÄ…dzanych, musi zapewniać metodÄ™ „GetManagedValuesSourceâ€, która zwraca wartość „ReadOnlySpan<>†oraz metodÄ™ „GetUnmanagedValuesDestinationâ€, która zwraca wartość „Span<>â€.The type '{0}' specifies that it supports the '{1}' marshal mode, but it does not provide a 'GetManagedValuesSource' that returns a 'ReadOnlySpan<>' and a 'GetUnmanagedValuesDestination' method that returns a 'Span<>'
- The type '{0}' specifies that it supports the '{1}' marshal mode, but it does not provide a 'GetManagedValuesSource' that returns a 'ReadOnlySpan<>' and a 'GetUnmanagedValuesDestination' method that returns a 'Span<>'
+ Typ „{0}†okreÅ›la, że obsÅ‚uguje tryb przeprowadzenia marshalingu „{1}â€, ale nie zapewnia metody „GetManagedValuesSourceâ€, która zwraca wartość „ReadOnlySpan<>†ani metody „GetNativeValuesDestinationâ€, która zwraca wartość „Span<>â€A contiguous collection marshaller that supports marshalling from unmanaged to managed must provide a 'GetManagedValuesDestination' that takes an 'int' and returns a 'Span<>' and a 'GetUnmanagedValuesSource' method that takes an 'int' and returns a 'ReadOnlySpan<>'.
- A contiguous collection marshaller that supports marshalling from unmanaged to managed must provide a 'GetManagedValuesDestination' that takes an 'int' and returns a 'Span<>' and a 'GetUnmanagedValuesSource' method that takes an 'int' and returns a 'ReadOnlySpan<>'.
+ Organizator zwartej kolekcji, który obsÅ‚uguje przeprowadzanie marshalingu z niezarzÄ…dzanych do zarzÄ…dzanych, musi zapewniać metodÄ™ „GetManagedValuesDestinationâ€, która przyjmuje wartość „int†i zwraca wartość „Span<>â€, oraz metodÄ™ „GetUnmanagedValuesSourceâ€, która przyjmuje wartość „int†i zwraca wartość „ReadOnlySpan<>â€.The type '{0}' specifies that it supports the '{1}' marshal mode, but it does not provide a 'GetManagedValuesDestination' that takes an 'int' and returns a 'Span<>' and a 'GetUnmanagedValuesSource' method that takes an 'int' and returns a 'ReadOnlySpan<>'
- The type '{0}' specifies that it supports the '{1}' marshal mode, but it does not provide a 'GetManagedValuesDestination' that takes an 'int' and returns a 'Span<>' and a 'GetUnmanagedValuesSource' method that takes an 'int' and returns a 'ReadOnlySpan<>'
+ Typ „{0}†okreÅ›la, że obsÅ‚uguje tryb przeprowadzania marshalingu „{1}â€, ale nie zapewnia metody „GetManagedValuesDestinationâ€, która przyjmuje wartość „int†i zwraca wartość „Span<>â€, oraz metodÄ™ „GetUnmanagedValuesSourceâ€, która przyjmuje wartość „int†i zwraca wartość „ReadOnlySpan<>â€The specified parameter needs to be marshalled from managed to unmanaged, but the marshaller type '{0}' does not support it.
- The specified parameter needs to be marshalled from managed to unmanaged, but the marshaller type '{0}' does not support it.
+ Określony parametr musi być kierowany z zarządzanego do niezarządzanego, ale typ marszałka „{0}†go nie obsługuje.The marshaller type must be a closed generic or have the same number of generic parameters as the managed type so the generator can determine which methods are available on the specific marshaller types.
- The marshaller type must be a closed generic or have the same number of generic parameters as the managed type so the generator can determine which methods are available on the specific marshaller types.
+ Typ marshallera musi być zamkniętym typem ogólnym lub mieć taką samą liczbę parametrów ogólnych jak typ zarządzany, aby generator mógł określić, które metody są dostępne na określonych typach marshallerów.The managed type '{0}' for entry-point marshaller type '{1}' must be a closed generic type, have the same arity as the managed type if it is a value marshaller, or have one additional generic parameter if it is a collection marshaller.
- The managed type '{0}' for entry-point marshaller type '{1}' must be a closed generic type, have the same arity as the managed type if it is a value marshaller, or have one additional generic parameter if it is a collection marshaller.
+ Typ zarządzany „{0}†dla typu marshaller punktu wejścia „{1}†musi być zamkniętym typem ogólnym, mieć taką samą argumentację jak typ zarządzany, jeśli jest to marshaller wartości lub mieć jeden dodatkowy parametr ogólny, jeśli jest to marshaller kolekcji.The managed type for a custom marshaller must be non-null.
- The managed type for a custom marshaller must be non-null.
+ Typ zarządzany dla niestandardowego marshallera musi mieć wartość inną niż null.The managed type for the entry-point marshaller type '{0}' must not be 'null'
- The managed type for the entry-point marshaller type '{0}' must not be 'null'
+ Typ zarzÄ…dzany dla typu marshaller punktu wejÅ›cia „{0}†nie może mieć wartoÅ›ci „nullâ€The specified 'MarshalAsAttribute' configuration for parameter '{1}' is not supported by source-generated COM. If the specified configuration is required, use `ComImport` instead.
- The specified 'MarshalAsAttribute' configuration for parameter '{1}' is not supported by source-generated COM. If the specified configuration is required, use `ComImport` instead.
+ Określona konfiguracja atrybutu „MarshalAsAttribute†dla parametru „{1}†nie jest obsługiwana przez COM generowany przez źródło. Jeśli określona konfiguracja jest wymagana, użyj zamiast niej polecenia `ComImport`.The specified 'MarshalAsAttribute' configuration for parameter '{1}' is not supported by source-generated P/Invokes. If the specified configuration is required, use a regular 'DllImport' instead.
- The specified 'MarshalAsAttribute' configuration for parameter '{1}' is not supported by source-generated P/Invokes. If the specified configuration is required, use a regular 'DllImport' instead.
+ OkreÅ›lona konfiguracja atrybutu „MarshalAsAttribute†dla parametru „{1}†nie jest obsÅ‚ugiwana przez generowane źródÅ‚owo P/Invokes. JeÅ›li okreÅ›lona konfiguracja jest wymagana, należy zamiast niej użyć zwykÅ‚ego elementu „DllImportâ€.The specified 'MarshalAsAttribute' configuration for the return value of method '{1}' is not supported by source-generated COM. If the specified configuration is required, use `ComImport` instead.
- The specified 'MarshalAsAttribute' configuration for the return value of method '{1}' is not supported by source-generated COM. If the specified configuration is required, use `ComImport` instead.
+ Określona konfiguracja atrybutu „MarshalAsAttribute†dla wartości zwracanej metody „{1}†nie jest obsługiwana przez COM generowany przez źródło. Jeśli określona konfiguracja jest wymagana, użyj zamiast niej polecenia `ComImport`.The specified 'MarshalAsAttribute' configuration for the return value of method '{1}' is not supported by source-generated P/Invokes. If the specified configuration is required, use a regular 'DllImport' instead.
- The specified 'MarshalAsAttribute' configuration for the return value of method '{1}' is not supported by source-generated P/Invokes. If the specified configuration is required, use a regular 'DllImport' instead.
+ OkreÅ›lona konfiguracja atrybutu „MarshalAsAttribute†dla wartoÅ›ci zwracanej metody „{1}†nie jest obsÅ‚ugiwana przez generowane źródÅ‚owo P/Invokes. JeÅ›li okreÅ›lona konfiguracja jest wymagana, należy zamiast niej użyć zwykÅ‚ego elementu „DllImportâ€.The 'marshalMode' argument of 'CustomMarshallerAttribute' must be a valid enum value of 'MarshalMode'.
- The 'marshalMode' argument of 'CustomMarshallerAttribute' must be a valid enum value of 'MarshalMode'.
+ Argument „marshalMode†atrybutu „CustomMarshaellerAttribute†musi być prawidÅ‚owÄ… wartoÅ›ciÄ… wyliczenia argumentu „MarshalModeâ€.The marshaller entry point type '{0}' for managed type '{1}' must have an arity of one greater than the managed type.
- The marshaller entry point type '{0}' for managed type '{1}' must have an arity of one greater than the managed type.
+ Typ punktu wejścia marshallera „{0}†dla typu zarządzanego „{1}†musi mieć liczbę argumentów o jeden większą niż typ zarządzany.All marshallers for values that are passed as the unmanaged return value must have the same unmanaged type.
- All marshallers for values that are passed as the unmanaged return value must have the same unmanaged type.
+ Wszystkie elementy organizujące dla wartości przekazywanych jako niezarządzana wartość zwracana muszą mieć ten sam typ niezarządzany.The marshaller type must be a closed generic or have the same number of generic parameters as the managed type so the emitted code can use a specific instantiation.
- The marshaller type must be a closed generic or have the same number of generic parameters as the managed type so the emitted code can use a specific instantiation.
+ Typ marshallera musi być zamkniętym typem ogólnym lub mieć taką samą liczbę parametrów ogólnych jak typ zarządzany, aby emitowany kod mógł używać określonego wystąpienia.The marshaller type '{0}' pointed to by the entry-point marshaller type '{1}' must be a closed generic type or have the same arity as the managed type
- The marshaller type '{0}' pointed to by the entry-point marshaller type '{1}' must be a closed generic type or have the same arity as the managed type
+ Typ marshallera „{0}†wskazywanego przez typ marshallera punktu wejścia „{1}†musi być zamkniętym typem ogólnym lub mieć taką samą argumentację jak typ zarządzanyThe 'marshallerType' parameter in the 'System.Runtime.InteropServices.Marshalling.CustomMarshallerAttribute' cannot be 'null'.
- The 'marshallerType' parameter in the 'System.Runtime.InteropServices.Marshalling.CustomMarshallerAttribute' cannot be 'null'.
+ Parametr „marshallerType†w atrybucie „System.Runtime.InteropServices.Marshalling.CustomMarshaellerAttribute†nie może mieć wartoÅ›ci „nullâ€.The 'marshallerType' parameter in the 'System.Runtime.InteropServices.Marshalling.CustomMarshallerAttribute' cannot be 'null'
- The 'marshallerType' parameter in the 'System.Runtime.InteropServices.Marshalling.CustomMarshallerAttribute' cannot be 'null'
+ Parametr „marshallerType†w atrybucie „System.Runtime.InteropServices.Marshalling.CustomMarshaellerAttribute†nie może mieć wartoÅ›ci „nullâ€The marshaller type '{0}' for managed type '{1}' must be a static class or a struct.
- The marshaller type '{0}' for managed type '{1}' must be a static class or a struct.
+ Typ marshallera „{0}†dla typu zarządzanego „{1}†musi być statyczny.A marshaller type must either be a stateless static class or a stateful value type. A non-static class is not allowed.
- A marshaller type must either be a stateless static class or a stateful value type. A non-static class is not allowed.
+ Typ organizatora musi być bezstanową klasą statyczną lub stanowym typem wartości. Klasa niestatyczna jest niedozwolona.The type '{0}' must be a static class or a value type
- The type '{0}' must be a static class or a value type
+ Typ „{0}†musi być klasą statyczną lub typem wartościA type with a 'System.Runtime.InteropServices.CustomMarshallerAttribute' must specify a non-'null' managed type
- A type with a 'System.Runtime.InteropServices.CustomMarshallerAttribute' must specify a non-'null' managed type
+ Typ z atrybutem „System.Runtime.InteropServices.CustomMarshaellerAttribute†musi okreÅ›lać typ zarzÄ…dzany inny niż „nullâ€The type '{0}' does not specify a managed type in the 'System.Runtime.InteropServices.CustomMarshallerAttribute' applied to the type
- The type '{0}' does not specify a managed type in the 'System.Runtime.InteropServices.CustomMarshallerAttribute' applied to the type
+ Typ „{0}†nie określa typu zarządzanego w atrybucie „System.Runtime.InteropServices.CustomTypeMarshallerAttribute†zastosowanym do typuMarshalling bool without explicit marshalling information is not supported. Specify either 'MarshalUsingAttribute' or 'MarshalAsAttribute'.
- Marshalling bool without explicit marshalling information is not supported. Specify either 'MarshalUsingAttribute' or 'MarshalAsAttribute'.
+ Skierowanie wartoÅ›ci logicznej bez wyraźnych informacji o skierowaniu nie jest obsÅ‚ugiwane. OkreÅ›l atrybut „MarshalUsingAttribute†lub atrybut „MarshalAsAttributeâ€.Marshalling char with 'StringMarshalling.{0}' is not supported. Instead, manually convert the char type to the desired byte representation and pass to the source-generated P/Invoke.
- Marshalling char with 'StringMarshalling.{0}' is not supported. Instead, manually convert the char type to the desired byte representation and pass to the source-generated P/Invoke.
+ Znak marshallingu o wartości „StringMarshalling.{0}†nie jest obsługiwany. Zamiast tego ręcznie przekonwertuj typ znaków na żądaną reprezentację bajtów i przekaż do wygenerowanego źródła funkcji P/Invoke.Marshalling char with 'StringMarshalling.Custom' is not supported. To use a custom type marshaller, specify 'MarshalUsingAttribute'.
- Marshalling char with 'StringMarshalling.Custom' is not supported. To use a custom type marshaller, specify 'MarshalUsingAttribute'.
+ Znak marshallingu o wartoÅ›ci „StringMarshalling.Custom†nie jest obsÅ‚ugiwany. Aby użyć marshallera typu niestandardowego, okreÅ›l atrybut „MarshalUsingAttributeâ€.Marshalling string or char without explicit marshalling information is not supported. Specify '{0}.StringMarshalling', '{0}.StringMarshallingCustomType', 'MarshalUsingAttribute' or 'MarshalAsAttribute'.
- Marshalling string or char without explicit marshalling information is not supported. Specify '{0}.StringMarshalling', '{0}.StringMarshallingCustomType', 'MarshalUsingAttribute' or 'MarshalAsAttribute'.
+ Kierowanie ciÄ…gu lub znaku bez jawnych informacji o kierowaniu nie jest obsÅ‚ugiwane. OkreÅ›l „{0}.StringMarshallingâ€, „{0}.StringMarshallingCustomTypeâ€, „MarshalUsingAttribute†lub „MarshalAsAttributeâ€.All methods must be declared in the same partial definition of a 'GeneratedComInterface'-attributed interface type to ensure reliable calculation for virtual method table offsets.
- All methods must be declared in the same partial definition of a 'GeneratedComInterface'-attributed interface type to ensure reliable calculation for virtual method table offsets.
+ Wszystkie metody muszą być zadeklarowane w tej samej częściowej definicji przypisanego typu interfejsu „GeneratedComInterface†w celu zapewnienia niezawodnego obliczania przesunięć tabeli metod wirtualnych.The method '{0}' is declared on a different partial definition of the interface '{1}' than the definition that has the 'GeneratedComInterface' attribute
- The method '{0}' is declared on a different partial definition of the interface '{1}' than the definition that has the 'GeneratedComInterface' attribute
+ Metoda „{0}†jest zadeklarowana w innej częściowej definicji interfejsu „{1}†niż definicja, która ma atrybut „GeneratedComInterfaceâ€Method is declared in different partial declaration than the 'GeneratedComInterface' attribute.
- Method is declared in different partial declaration than the 'GeneratedComInterface' attribute.
+ Metoda jest zadeklarowana w innej deklaracji częściowej niż atrybut „GeneratedComInterfaceâ€.A 'GeneratedComInterfaceAttribute'-attributed interface can only derive from at most one other 'GeneratedComInterfaceAttribute'-attributed interface.
- A 'GeneratedComInterfaceAttribute'-attributed interface can only derive from at most one other 'GeneratedComInterfaceAttribute'-attributed interface.
+ Interfejs z atrybutem „GeneratedComInterfaceAttribute†może pochodzić tylko z co najwyżej jednego interfejsu z atrybutem „GeneratedComInterfaceAttributeâ€.Interface '{0}' is derived from two or more interfaces attributed with 'GeneratedComInterfaceAttribute'.
- Interface '{0}' is derived from two or more interfaces attributed with 'GeneratedComInterfaceAttribute'.
+ Interfejs „{0}†pochodzi z co najmniej dwóch interfejsów z atrybutem „GeneratedComInterfaceAttributeâ€.Specified interface derives from two or more 'GeneratedComInterfaceAttribute'-attributed interfaces.
- Specified interface derives from two or more 'GeneratedComInterfaceAttribute'-attributed interfaces.
+ OkreÅ›lony interfejs pochodzi z co najmniej dwóch interfejsów z atrybutem „GeneratedComInterfaceAttributeâ€.Either 'ComInterfaceOptions.ManagedObjectWrapper' or 'ComInterfaceOptions.ComObjectWrapper' must be specified.
- Either 'ComInterfaceOptions.ManagedObjectWrapper' or 'ComInterfaceOptions.ComObjectWrapper' must be specified.
+ Należy okreÅ›lić element „ComInterfaceOptions.ManagedObjectWrapper†lub „ComInterfaceOptions.ComObjectWrapperâ€.The '[Out]' attribute is only supported on array parameters. Consider using 'out' or 'ref' keywords to make the parameter mutable.
- The '[Out]' attribute is only supported on array parameters. Consider using 'out' or 'ref' keywords to make the parameter mutable.
+ Atrybut „[Out]†jest obsÅ‚ugiwany tylko w przypadku parametrów tablicy. Rozważ użycie słów kluczowych „out†lub „refâ€, aby umożliwić modyfikowanie parametru.A 'Value' or 'LinearCollection'-kind native type that supports marshalling in the 'Out' direction must provide a 'ToManaged' method that returns the managed type.
- A 'Value' or 'LinearCollection'-kind native type that supports marshalling in the 'Out' direction must provide a 'ToManaged' method that returns the managed type.
+ Typ natywny rodzaju „Value†lub „LinearCollectionâ€, który obsÅ‚uguje skierowanie w kierunku „Outâ€, musi zapewniać metodÄ™ „ToManagedâ€, która zwraca typ zarzÄ…dzany.The type '{0}' specifies it supports marshalling in the 'Out' direction, but it does not provide a 'ToManaged' method that returns the managed type
- The type '{0}' specifies it supports marshalling in the 'Out' direction, but it does not provide a 'ToManaged' method that returns the managed type
+ Typ „{0}†okreÅ›la, że obsÅ‚uguje skierowanie w kierunku „Outâ€, ale nie zapewnia metody „ToManagedâ€, która zwraca typ zarzÄ…dzanyIt is recommended to use explicit '[In]' and '[Out]' attributes on array parameters.
- It is recommended to use explicit '[In]' and '[Out]' attributes on array parameters.
+ Zaleca się używanie jawnych atrybutów „[In]†i „[Out]†w parametrach tablicy.'GeneratedComInterfaceAttribute' and 'GeneratedComClassAttribute' require unsafe code. Project must be updated with '<AllowUnsafeBlocks>true</AllowUnsafeBlocks>'.
- 'GeneratedComInterfaceAttribute' and 'GeneratedComClassAttribute' require unsafe code. Project must be updated with '<AllowUnsafeBlocks>true</AllowUnsafeBlocks>'.
+ Atrybut „GeneratedComInterfaceAttribute†i „GeneratedComClassAttribute†wymagajÄ… niebezpiecznego kodu. Projekt musi zostać zaktualizowany za pomocÄ… polecenia „<AllowUnsafeBlocks>true</AllowUnsafeBlocks>â€.LibraryImportAttribute requires unsafe code. Project must be updated with '<AllowUnsafeBlocks>true</AllowUnsafeBlocks>'.
- LibraryImportAttribute requires unsafe code. Project must be updated with '<AllowUnsafeBlocks>true</AllowUnsafeBlocks>'.
+ Element LibraryImportAttribute wymaga niebezpiecznego kodu. Projekt musi zostać zaktualizowany za pomocÄ… „<AllowUnsafeBlocks>true</AllowUnsafeBlocks>â€.'GeneratedComInterfaceAttribute' and 'GeneratedComClassAttribute' require unsafe code. Project must be updated with '<AllowUnsafeBlocks>true</AllowUnsafeBlocks>'.
- 'GeneratedComInterfaceAttribute' and 'GeneratedComClassAttribute' require unsafe code. Project must be updated with '<AllowUnsafeBlocks>true</AllowUnsafeBlocks>'.
+ Atrybut „GeneratedComInterfaceAttribute†i „GeneratedComClassAttribute†wymagajÄ… niebezpiecznego kodu. Projekt musi zostać zaktualizowany za pomocÄ… polecenia „<AllowUnsafeBlocks>true</AllowUnsafeBlocks>â€.LibraryImportAttribute requires unsafe code. Project must be updated with '<AllowUnsafeBlocks>true</AllowUnsafeBlocks>'.
- LibraryImportAttribute requires unsafe code. Project must be updated with '<AllowUnsafeBlocks>true</AllowUnsafeBlocks>'.
+ Element LibraryImportAttribute wymaga niebezpiecznego kodu. Projekt musi zostać zaktualizowany za pomocÄ… „<AllowUnsafeBlocks>true</AllowUnsafeBlocks>â€.'GeneratedComInterfaceAttribute' and 'GeneratedComClassAttribute' require unsafe code.
- 'GeneratedComInterfaceAttribute' and 'GeneratedComClassAttribute' require unsafe code.
+ Atrybuty „GeneratedComInterfaceAttribute†i „GeneratedComClassAttribute†wymagają niebezpiecznego kodu.LibraryImportAttribute requires unsafe code.
- LibraryImportAttribute requires unsafe code.
+ Element LibraryImportAttribute wymaga niebezpiecznego kodu.The return type the two method must be the expected type.
- The return type the two method must be the expected type.
+ Zwracany typ obu tych metod musi być oczekiwanym typem.The return type of '{0}' must be '{1}'
- The return type of '{0}' must be '{1}'
+ Zwracany typ „{0}†musi być „{1}â€The return types of the two methods must be the same type.
- The return types of the two methods must be the same type.
+ Zwracane typy obu tych metod muszą być tego samego typu.The return type of '{0}' must be the same type as the return type of '{1}'
- The return type of '{0}' must be the same type as the return type of '{1}'
+ Zwracany typ „{0}†musi być tego samego typu co zwracany typ „{1}â€COM Interop APIs on 'System.Runtime.InteropServices.Marshal' do not support source-generated COM and will fail at runtime
- COM Interop APIs on 'System.Runtime.InteropServices.Marshal' do not support source-generated COM and will fail at runtime
+ Interfejsy API usługi międzyoperacyjnej modelu COM w elemencie „System.Runtime.InteropServices.Marshal†nie obsługują generowanego przez źródło modelu COM i nie będą działać w środowisku uruchomieniowymThe method '{0}' only supports runtime-based COM interop and will not work with type '{1}'
- The method '{0}' only supports runtime-based COM interop and will not work with type '{1}'
+ Metoda „{0}†obsÅ‚uguje tylko usÅ‚ugÄ™ miÄ™dzyoperacyjnÄ… modelu COM opartÄ… na Å›rodowisku uruchomieniowym i nie bÄ™dzie dziaÅ‚ać z typem „{1}â€COM Interop APIs on 'System.Runtime.InteropServices.Marshal' do not support source-generated COM
- COM Interop APIs on 'System.Runtime.InteropServices.Marshal' do not support source-generated COM
+ Interfejsy API usługi międzyoperacyjnej modelu COM w elemencie „System.Runtime.InteropServices.Marshal†nie obsługują generowanego przez źródło modelu COMRuntime marshalling must be disabled in this project by applying the 'System.Runtime.CompilerServices.DisableRuntimeMarshallingAttribute' to the assembly to enable marshalling this type.
- Runtime marshalling must be disabled in this project by applying the 'System.Runtime.CompilerServices.DisableRuntimeMarshallingAttribute' to the assembly to enable marshalling this type.
+ Marshalling Å›rodowiska uruchomieniowego musi być wyłączony w tym projekcie przez zastosowanie do zestawu atrybutu „System.Runtime.InteropServices.DisableRuntimeMarshallingAttributeâ€, aby umożliwić marshalling tego typu.The size of parameter '{0}' that is marshalled to the callee must be defined when the method is called, but count parameter '{1}' is an 'out' parameter.
- The size of parameter '{0}' that is marshalled to the callee must be defined when the method is called, but count parameter '{1}' is an 'out' parameter.
+ Rozmiar parametru „{0}â€, który jest kierowany do obiektu wywoÅ‚ujÄ…cego, musi być zdefiniowany podczas wywoÅ‚ywania metody, ale parametr ILE.LICZB „{1}†jest parametrem „outâ€.The size of parameter '{0}' that is marshalled to the callee must be defined when the method is called, but the return value is used as the size of the collection.
- The size of parameter '{0}' that is marshalled to the callee must be defined when the method is called, but the return value is used as the size of the collection.
+ Rozmiar parametru „{0}â€, który jest kierowany do obiektu wywoÅ‚ujÄ…cego, musi być zdefiniowany podczas wywoÅ‚ywania metody, ale wartość zwracana jest używana jako rozmiar kolekcji.The size of a collection that is marshalled to the callee must be defined when the method is called.
- The size of a collection that is marshalled to the callee must be defined when the method is called.
+ Rozmiar kolekcji kierowanej do obiektu wywołującego musi być zdefiniowany podczas wywoływania metody.A stateful marshaller must have a zero-parameter void-returning instance method named 'Free'.
- A stateful marshaller must have a zero-parameter void-returning instance method named 'Free'.
+ Stanowy marshaller musi mieć metodÄ™ wystÄ…pienia zwracajÄ…cÄ… wartość nieważnÄ… o parametrze 0 o nazwie „Freeâ€.The type '{0}' is a stateful marshaller and does not have a zero-parameter void-returning instance method named 'Free'
- The type '{0}' is a stateful marshaller and does not have a zero-parameter void-returning instance method named 'Free'
+ Typ „{0}†jest stanowym marshallerem i nie ma metody wystÄ…pienia zwracajÄ…cego wartość nieważnÄ… o parametrze 0 o nazwie „Freeâ€A stateful marshaller that supports marshalling from managed to unmanaged must provide a 'FromManaged' instance method that takes the managed value as a parameter and returns 'void'.
- A stateful marshaller that supports marshalling from managed to unmanaged must provide a 'FromManaged' instance method that takes the managed value as a parameter and returns 'void'.
+ Stanowu marshaller obsÅ‚ugujÄ…cy kierowanie z zarzÄ…dzanego do niezarzÄ…dzanego musi udostÄ™pniać metodÄ™ wystÄ…pienia „ZNiezarzÄ…dzaneâ€, która przyjmuje wartość zarzÄ…dzanÄ… jako parametr i zwraca wartość „nieważneâ€The type '{0}' specifies that it supports the '{1}' marshal mode for '{2}' but it does not provide a one-parameter instance method named 'FromManaged' that takes a '{2}' as a parameter and returns 'void'
- The type '{0}' specifies that it supports the '{1}' marshal mode for '{2}' but it does not provide a one-parameter instance method named 'FromManaged' that takes a '{2}' as a parameter and returns 'void'
+ Typ „{0}†okreÅ›la, że obsÅ‚uguje tryb marshalingu „{1}†dla „{2}â€, ale nie udostÄ™pnia metody wystÄ…pienia z jednym parametrem o nazwie „ZNiezarzÄ…dzaneâ€, która przyjmuje jako parametr „{2}†i zwraca wartość „nieważneâ€A stateful marshaller that supports marshalling from unmanaged to managed must provide a 'FromUnmanaged' instance method that takes the unmanaged value as a parameter and returns 'void'.
- A stateful marshaller that supports marshalling from unmanaged to managed must provide a 'FromUnmanaged' instance method that takes the unmanaged value as a parameter and returns 'void'.
+ Stanowy marshaller obsÅ‚ugujÄ…cy kierowanie z niezarzÄ…dzanego do zarzÄ…dzanego musi udostÄ™pniać metodÄ™ wystÄ…pienia „ZNiezarzÄ…dzaneâ€, która przyjmuje wartość niezarzÄ…dzanÄ… jako parametr i zwraca wartość „nieważneâ€.The type '{0}' specifies that it supports the '{1}' marshal mode for '{2}' but it does not provide a one-parameter instance method named 'FromUnmanaged' that takes the 'unmanaged' value as a parameter and returns 'void'
- The type '{0}' specifies that it supports the '{1}' marshal mode for '{2}' but it does not provide a one-parameter instance method named 'FromUnmanaged' that takes the 'unmanaged' value as a parameter and returns 'void'
+ Typ „{0}†okreÅ›la, że obsÅ‚uguje tryb marshalingu „{1}†dla elementu „{2}â€, ale nie udostÄ™pnia metody wystÄ…pienia jednego parametru o nazwie „ZNiezarzÄ…dzaneâ€, która przyjmuje wartość „niezarzÄ…dzane†jako parametr i zwraca wartość „nieważneâ€A stateful marshaller that supports marshalling from unmanaged to managed must provide a 'ToManaged' instance method that takes no parameters and returns the managed type.
- A stateful marshaller that supports marshalling from unmanaged to managed must provide a 'ToManaged' instance method that takes no parameters and returns the managed type.
+ Marshaller stanu obsÅ‚ugujÄ…cy kierowanie z niezarzÄ…dzanego do zarzÄ…dzanego musi udostÄ™pniać metodÄ™ wystÄ…pienia „DoZarzÄ…dzaneâ€, która nie przyjmuje parametrów i zwraca typ zarzÄ…dzany.The type '{0}' specifies that it supports the '{1}' marshal mode for '{2}' but it does not provide a zero-parameter instance method named 'ToManaged' that returns '{2}'
- The type '{0}' specifies that it supports the '{1}' marshal mode for '{2}' but it does not provide a zero-parameter instance method named 'ToManaged' that returns '{2}'
+ Typ „{0}†okreÅ›la, że obsÅ‚uguje tryb marshalingu „{1}†dla elementu „{2}â€, ale nie udostÄ™pnia metody wystÄ…pienia o wartoÅ›ci zero parametrów o nazwie „DoZarzÄ…dzaneâ€, która zwraca wartość „{2}â€A stateful marshaller that supports marshalling from managed to unmanaged must provide a 'ToUnmanaged' instance method that takes no parameters and returns the 'unmanaged' type.
- A stateful marshaller that supports marshalling from managed to unmanaged must provide a 'ToUnmanaged' instance method that takes no parameters and returns the 'unmanaged' type.
+ Stanowy marshaller obsÅ‚ugujÄ…cy kierowanie z zarzÄ…dzanego do niezarzÄ…dzanego musi udostÄ™pniać metodÄ™ wystÄ…pienia „DoNiezarzÄ…dzaneâ€, która nie przyjmuje parametrów i zwraca typ „niezarzÄ…dzaneâ€.The type '{0}' specifies that it supports the '{1}' marshal mode for '{2}' but it does not provide a zero-parameter instance method named 'ToUnmanaged' that returns the 'unmanaged' type for the marshaller
- The type '{0}' specifies that it supports the '{1}' marshal mode for '{2}' but it does not provide a zero-parameter instance method named 'ToUnmanaged' that returns the 'unmanaged' type for the marshaller
+ Typ „{0}†okreÅ›la, że obsÅ‚uguje tryb marshalingu „{1}†dla elementu „{2}â€, ale nie udostÄ™pnia metody wystÄ…pienia o wartoÅ›ci zero parametrów o nazwie „DoNiezarzÄ…dzaneâ€, która zwraca typ „niezarzÄ…dzane†dla marshaleraWhen the 'Managed to Unmanaged with Caller-Allocated Buffer' shape is used by providing an 'AllocateContainerForUnmanagedElements' method that takes a 'Span<T>' on the marshaller type, the type must provide a static 'BufferSize' property to provide the number of elements in the caller-allocated buffer.
- When the 'Managed to Unmanaged with Caller-Allocated Buffer' shape is used by providing an 'AllocateContainerForUnmanagedElements' method that takes a 'Span<T>' on the marshaller type, the type must provide a static 'BufferSize' property to provide the number of elements in the caller-allocated buffer.
+ Gdy ksztaÅ‚t „ZarzÄ…dzane do niezarzÄ…dzanych za pomocÄ… buforu przydzielonego przez wywoÅ‚ujÄ…cego†jest używany poprzez zapewnienie metody „AllocateContainerForUnmanagedElementsâ€, która przyjmuje wartość „Span< T>†w przypadku typu organizatora, typ musi zapewniać statycznÄ… wÅ‚aÅ›ciwość „BufferSizeâ€, aby okreÅ›lić liczbÄ™ elementów w buforze przydzielonym przez wywoÅ‚ujÄ…cego.The marshaller type '{0}' must have a static read-only 'int' 'BufferSize' property to specify the size of the caller-allocated buffer because it has an 'AllocateContainerForUnmanagedElements' method that takes a caller-allocated 'Span<{1}>'
- The marshaller type '{0}' must have a static read-only 'int' 'BufferSize' property to specify the size of the caller-allocated buffer because it has an 'AllocateContainerForUnmanagedElements' method that takes a caller-allocated 'Span<{1}>'
+ Typ organizatora „{0}†musi mieć statycznÄ… wÅ‚aÅ›ciwość „BufferSize†„int†tylko do odczytu, aby okreÅ›lić rozmiar buforu przydzielonego przez wywoÅ‚ujÄ…cego, ponieważ ma metodÄ™ „AllocateContainerForUnmanagedElementsâ€, która przyjmuje przydzielonÄ… przez wywoÅ‚ujÄ…cego wartość „Span<{1}>â€A contiguous collection marshaller that supports marshalling from managed to unmanaged must provide a 'GetManagedValuesSource' that takes the managed value as a parameter and returns a 'ReadOnlySpan<>' and a 'GetUnmanagedValuesDestination' method that takes the unmanaged value as a parameter and returns a 'Span<>'
- A contiguous collection marshaller that supports marshalling from managed to unmanaged must provide a 'GetManagedValuesSource' that takes the managed value as a parameter and returns a 'ReadOnlySpan<>' and a 'GetUnmanagedValuesDestination' method that takes the unmanaged value as a parameter and returns a 'Span<>'
+ Organizator zwartej kolekcji, który obsÅ‚uguje przeprowadzanie marshalingu z niezarzÄ…dzanych do zarzÄ…dzanych, musi zapewniać metodÄ™ „GetManagedValuesSourceâ€, która przyjmuje zarzÄ…dzanÄ… wartość jako parametr i zwraca wartość „ReadOnlySpan<>â€, oraz metodÄ™ „GetUnmanagedValuesDestinationâ€, która przyjmuje niezarzÄ…dzanÄ… wartość jako parametr i zwraca wartość „Span<>â€.The type '{0}' specifies that it supports the '{1}' marshal mode, but it does not provide a 'GetManagedValuesSource' that takes '{2}' as a parameter and returns a 'ReadOnlySpan<>' and a 'GetUnmanagedValuesDestination' method that takes the unmanaged value as a parameter and returns a 'Span<>'
- The type '{0}' specifies that it supports the '{1}' marshal mode, but it does not provide a 'GetManagedValuesSource' that takes '{2}' as a parameter and returns a 'ReadOnlySpan<>' and a 'GetUnmanagedValuesDestination' method that takes the unmanaged value as a parameter and returns a 'Span<>'
+ Typ „{0}†okreÅ›la, że obsÅ‚uguje tryb przeprowadzania marshalingu „{1}â€, ale nie zapewnia metody „GetManagedValuesSourceâ€, która przyjmuje wartość „{2}†jako parametr i zwraca wartość „ReadOnlySpan<>â€, oraz metodÄ™ „GetUnmanagedValuesDestinationâ€, która przyjmuje niezarzÄ…dzanÄ… wartość jako parametr i zwraca wartość „Span<>â€A contiguous collection marshaller that supports marshalling from unmanaged to managed must provide a 'GetManagedValuesDestination' that takes the managed value and returns a 'Span<>' and a 'GetUnmanagedValuesSource' method that takes the unmanaged value and an 'int' and returns a 'ReadOnlySpan<>'.
- A contiguous collection marshaller that supports marshalling from unmanaged to managed must provide a 'GetManagedValuesDestination' that takes the managed value and returns a 'Span<>' and a 'GetUnmanagedValuesSource' method that takes the unmanaged value and an 'int' and returns a 'ReadOnlySpan<>'.
+ Organizator zwartej kolekcji, który obsÅ‚uguje przeprowadzanie marshalingu z niezarzÄ…dzanych do zarzÄ…dzanych, musi zapewniać metodÄ™ „GetManagedValuesDestinationâ€, która przyjmuje zarzÄ…dzanÄ… wartość i zwraca wartość „Span<>â€, oraz metodÄ™ „GetUnmanagedValuesSourceâ€, która przyjmuje niezarzÄ…dzanÄ… wartość i wartość „int†oraz zwraca wartość „ReadOnlySpan<>â€.The type '{0}' specifies that it supports the '{1}' marshal mode, but it does not provide a 'GetManagedValuesDestination' that takes '{2}' and returns a 'Span<>' and a 'GetUnmanagedValuesSource' method that takes the unmanaged value and an 'int' and returns a 'ReadOnlySpan<>'
- The type '{0}' specifies that it supports the '{1}' marshal mode, but it does not provide a 'GetManagedValuesDestination' that takes '{2}' and returns a 'Span<>' and a 'GetUnmanagedValuesSource' method that takes the unmanaged value and an 'int' and returns a 'ReadOnlySpan<>'
+ Typ „{0}†okreÅ›la, że obsÅ‚uguje tryb przeprowadzania marshalingu „{1}â€, ale nie zapewnia metody „GetManagedValuesDestinationâ€, która przyjmuje wartość „{2}†i zwraca wartość „Span<>â€, oraz metodÄ™ „GetUnmanagedValuesSourceâ€, która przyjmuje wartość niezarzÄ…dzanÄ… i „int†oraz zwraca wartość „ReadOnlySpan<>â€A stateless contiguous collection marshaller that supports marshalling from managed to unmanaged must provide an 'AllocateContainerForManagedElements' method taking the unmanaged type as the first parameter and the number of elements as an 'int' parameter
- A stateless contiguous collection marshaller that supports marshalling from managed to unmanaged must provide an 'AllocateContainerForManagedElements' method taking the unmanaged type as the first parameter and the number of elements as an 'int' parameter
+ Bezstanowy organizator zwartej kolekcji, który obsÅ‚uguje przeprowadzanie marshalingu z zarzÄ…dzanych do niezarzÄ…dzanych, musi zapewniać metodÄ™ „AllocateContainerForManagedElementsâ€, przyjmujÄ…c typ niezarzÄ…dzany jako pierwszy parametr oraz liczbÄ™ elementów jako parametr „intâ€The type '{0}' specifies that it supports the '{1}' marshal mode for '{2}' but does not provide a two-parameter 'AllocateContainerForManagedElements' method that takes the unmanaged type as the first parameter and an 'int' as the second parameter
- The type '{0}' specifies that it supports the '{1}' marshal mode for '{2}' but does not provide a two-parameter 'AllocateContainerForManagedElements' method that takes the unmanaged type as the first parameter and an 'int' as the second parameter
+ Typ „{0}†okreÅ›la, że obsÅ‚uguje tryb przeprowadzania marshalingu „{1}†dla „{2}â€, ale nie zapewnia metody „AllocateContainerForManagedElements†z dwoma parametrami, która przyjmuje typ niezarzÄ…dzany jako pierwszy parametr i wartość „int†jako drugi parametrA stateless contiguous collection marshaller that supports marshalling from managed to unmanaged must provide an 'AllocateContainerForUnmanagedElements' method taking the managed type as the first parameter and providing the number of elements as an 'out int' parameter
- A stateless contiguous collection marshaller that supports marshalling from managed to unmanaged must provide an 'AllocateContainerForUnmanagedElements' method taking the managed type as the first parameter and providing the number of elements as an 'out int' parameter
+ Bezstanowy organizator zwartej kolekcji, który obsÅ‚uguje przeprowadzanie marshalingu z zarzÄ…dzanych do niezarzÄ…dzanych, musi zapewniać metodÄ™ „AllocateContainerForUnmanagedElementsâ€, przyjmujÄ…c typ zarzÄ…dzany jako pierwszy parametr oraz okreÅ›lajÄ…c liczbÄ™ elementów jako parametr „out intâ€The type '{0}' specifies that it supports the '{1}' marshal mode for '{2}' but does not provide a two-parameter 'AllocateContainerForUnmanagedElements' method that takes a '{2}' as the first parameter and an 'out int' as the second parameter
- The type '{0}' specifies that it supports the '{1}' marshal mode for '{2}' but does not provide a two-parameter 'AllocateContainerForUnmanagedElements' method that takes a '{2}' as the first parameter and an 'out int' as the second parameter
+ Typ „{0}†okreÅ›la, że obsÅ‚uguje tryb przeprowadzania marshalingu „{1}†dla „{2}â€, ale nie zapewnia metody „AllocateContainerForUnmanagedElements†z dwoma parametrami, która przyjmuje wartość „{2}†jako pierwszy parametr i wartość „out int†jako drugi parametrA stateless value marshaller that supports marshalling from unmanaged to managed must provide a 'ConvertToManaged' method that takes the unmanaged type as a parameter and returns the the managed type.
- A stateless value marshaller that supports marshalling from unmanaged to managed must provide a 'ConvertToManaged' method that takes the unmanaged type as a parameter and returns the the managed type.
+ Bezstanowy organizator wartoÅ›ci, który obsÅ‚uguje przeprowadzanie marshalingu z zarzÄ…dzanych do niezarzÄ…dzanych, musi zapewniać metodÄ™ „ConvertToManagedâ€, która przyjmuje typ niezarzÄ…dzany jako parametr i zwraca typ zarzÄ…dzany.The type '{0}' specifies it supports the '{1}' marshal mode, but it does not provide a 'ConvertToManaged' method that takes the unmanaged type as a parameter and returns '{2}'
- The type '{0}' specifies it supports the '{1}' marshal mode, but it does not provide a 'ConvertToManaged' method that takes the unmanaged type as a parameter and returns '{2}'
+ Typ „{0}†okreÅ›la, że obsÅ‚uguje tryb przeprowadzania marshalingu „{1}â€, ale nie zapewnia metody „ConvertToManagedâ€, która przyjmuje typ niezarzÄ…dzany jako parametr i zwraca wartość „{2}â€A stateless value marshaller that supports marshalling from managed to unmanaged must provide a one-parameter 'ConvertToUnmanaged' method that takes the managed value as the parameter and returns a value of the 'unmanaged' type.
- A stateless value marshaller that supports marshalling from managed to unmanaged must provide a one-parameter 'ConvertToUnmanaged' method that takes the managed value as the parameter and returns a value of the 'unmanaged' type.
+ Bezstanowy organizator wartoÅ›ci, który obsÅ‚uguje przeprowadzanie marshalingu z zarzÄ…dzanych do niezarzÄ…dzanych, musi zapewniać metodÄ™ „ConvertToUnmanaged†z jednym parametrem, która przyjmuje wartość zarzÄ…dzanÄ… jako parametr i zwraca wartość typu „niezarzÄ…dzanyâ€.The type '{0}' specifies that it supports the '{1}' marshal mode for '{2}' but does not provide a one-parameter 'ConvertToUnmanaged' method that takes a '{2}' as a parameter and returns a value of an 'unmanaged' type
- The type '{0}' specifies that it supports the '{1}' marshal mode for '{2}' but does not provide a one-parameter 'ConvertToUnmanaged' method that takes a '{2}' as a parameter and returns a value of an 'unmanaged' type
+ Typ „{0}†okreÅ›la, że obsÅ‚uguje tryb przeprowadzania marshalingu „{1}†dla „{2}â€, ale nie zapewnia metody „ConvertToUnmanaged†z jednym parametrem, która przyjmuje wartość „{2}†jako parametr i zwraca wartość typu „niezarzÄ…dzanyâ€The type '{0}' specified as 'GeneratedComInterfaceAttribute.StringMarshallingCustomType' is not accessible by generated code. The type must have at least 'internal' accessibility. {1}
- The type '{0}' specified as 'GeneratedComInterfaceAttribute.StringMarshallingCustomType' is not accessible by generated code. The type must have at least 'internal' accessibility. {1}
+ Typ „{0}†okreÅ›lony jako „GeneratedComInterfaceAttribute.StringMarshallingCustomType†jest niedostÄ™pny za pomocÄ… wygenerowanego kodu. Typ musi mieć co najmniej uÅ‚atwienia dostÄ™pu „wewnÄ™trznyâ€. {1}{1} is details about which type/containing type is not accessibleThe return type of 'ToUnmanaged' and the parameter type of 'FromUnmanaged' must be the same.
- The return type of 'ToUnmanaged' and the parameter type of 'FromUnmanaged' must be the same.
+ Zwracany typ elementu „ToUnmanaged†i typ parametru elementu „FromUnmanaged†muszą być takie same.The return type of 'ToUnmanaged' and the parameter type of 'FromUnmanaged' must be the same
- The return type of 'ToUnmanaged' and the parameter type of 'FromUnmanaged' must be the same
+ Zwracany typ elementu „ToUnmanaged†i typ parametru elementu „FromUnmanaged†muszą być takie sameThe return type of 'ConvertToUnmanaged' and the parameter type of 'ConvertToManaged' must be the same.
- The return type of 'ConvertToUnmanaged' and the parameter type of 'ConvertToManaged' must be the same.
+ Zwracany typ elementu „ConvertToUnmanaged†i typ parametru elementu „ConvertToManaged†muszą być takie same.The return type of 'ConvertToUnmanaged' and the parameter type of 'ConvertToManaged' must be the same
- The return type of 'ConvertToUnmanaged' and the parameter type of 'ConvertToManaged' must be the same
+ Zwracany typ elementu „ConvertToUnmanaged†i typ parametru elementu „ConvertToManaged†muszą być takie same'{0}' has accessibility '{1}'.
- '{0}' has accessibility '{1}'.
+ „{0}†ma uÅ‚atwienia dostÄ™pu „{1}â€.The unmanaged type for a custom marshaller must be a C# unmanaged type.
- The unmanaged type for a custom marshaller must be a C# unmanaged type.
+ Typ niezarządzany dla niestandardowego organizatora musi być niezarządzanym typem języka C#.The return type of '{0}' must be unmanaged
- The return type of '{0}' must be unmanaged
+ Zwracany typ „{0}†musi być niezarządzany'void*' must be castable to the type so the pinned result of the static 'GetPinnableReference' method can be passed to the native context after being pinned.
- 'void*' must be castable to the type so the pinned result of the static 'GetPinnableReference' method can be passed to the native context after being pinned.
+ Element „void*†musi być rzutowany na typ, aby przypięty wynik statycznej metody „GetPinnableReference†mógł zostać przekazany do kontekstu macierzystego po przypięciu.'void*' must be castable to the type '{0}' because the managed type '{1}' has a static 'GetPinnableReference' method
- 'void*' must be castable to the type '{0}' because the managed type '{1}' has a static 'GetPinnableReference' method
+ Element „void*†musi być rzutowany na typ „{0}â€, ponieważ typ zarzÄ…dzany „{1}†ma statycznÄ… metodÄ™ „GetPinnableReferenceâ€For types that are not supported by source-generated COM, the resulting function pointer will rely on the underlying runtime to marshal the specified type.
- For types that are not supported by source-generated COM, the resulting function pointer will rely on the underlying runtime to marshal the specified type.
+ W przypadku typów, które nie są obsługiwane przez COM wygenerowany przez źródło, wynikowy wskaźnik funkcji będzie polegał na bazowym środowisku uruchomieniowym w celu skierowania określonego typu.For types that are not supported by source-generated P/Invokes, the resulting P/Invoke will rely on the underlying runtime to marshal the specified type.
- For types that are not supported by source-generated P/Invokes, the resulting P/Invoke will rely on the underlying runtime to marshal the specified type.
+ W przypadku typów, które nie są obsługiwane przez funkcję P/Invokes generowaną przez źródło, wynikowa funkcja P/Invoke będzie polegać na bazowym środowisku uruchomieniowym, aby skierować określony typ.The type '{0}' is not supported by source-generated COM. The generated source will not handle marshalling of parameter '{1}'.
- The type '{0}' is not supported by source-generated COM. The generated source will not handle marshalling of parameter '{1}'.
+ Typ „{0}†nie jest obsÅ‚ugiwany przez COM generowany przez źródÅ‚o. Wygenerowane źródÅ‚o nie bÄ™dzie obsÅ‚ugiwać skierowania parametru „{1}â€.The type '{0}' is not supported by source-generated P/Invokes. The generated source will not handle marshalling of parameter '{1}'.
- The type '{0}' is not supported by source-generated P/Invokes. The generated source will not handle marshalling of parameter '{1}'.
+ Typ „{0}†nie jest obsÅ‚ugiwany przez funkcjÄ™ P/Invokes generowanÄ… przez źródÅ‚o. Wygenerowane źródÅ‚o nie obsÅ‚uguje skierowania parametru „{1}â€.{0} The generated source will not handle marshalling of parameter '{1}'.
- {0} The generated source will not handle marshalling of parameter '{1}'.
+ {0} Wygenerowane źródÅ‚o nie obsÅ‚uguje skierowania parametru „{1}â€.{0} is a message containing additional details about what is not supported
{1} is the name of the parameterThe type '{0}' is not supported by source-generated COM. The generated source will not handle marshalling of the return value of method '{1}'.
- The type '{0}' is not supported by source-generated COM. The generated source will not handle marshalling of the return value of method '{1}'.
+ Typ „{0}†nie jest obsÅ‚ugiwany przez COM generowany przez źródÅ‚o. Wygenerowane źródÅ‚o nie bÄ™dzie obsÅ‚ugiwać skierowania wartoÅ›ci zwracanej przez metodÄ™ „{1}â€.The type '{0}' is not supported by source-generated P/Invokes. The generated source will not handle marshalling of the return value of method '{1}'.
- The type '{0}' is not supported by source-generated P/Invokes. The generated source will not handle marshalling of the return value of method '{1}'.
+ Typ „{0}†nie jest obsÅ‚ugiwany przez funkcjÄ™ P/Invokes generowanÄ… przez źródÅ‚o. Wygenerowane źródÅ‚o nie obsÅ‚uguje skierowania wartoÅ›ci zwracanej przez metodÄ™ „{1}â€.{0} The generated source will not handle marshalling of the return value of method '{1}'.
- {0} The generated source will not handle marshalling of the return value of method '{1}'.
+ {0}Wygenerowane źródÅ‚o nie obsÅ‚uguje skierowania wartoÅ›ci zwracanej przez metodÄ™ „{1}â€.{0} is a message containing additional details about what is not supported
{1} is the name of the methodSpecified type is not supported by source-generated P/Invokes
- Specified type is not supported by source-generated P/Invokes
+ Określony typ nie jest obsługiwany przez funkcję P/Invokes generowaną przez źródłoSpecified type is not supported by source-generated COM
- Specified type is not supported by source-generated COM
+ Określony typ nie jest obsługiwany przez źródłowy COMThe specified parameter needs to be marshalled from unmanaged to managed, but the marshaller type '{0}' does not support it.
- The specified parameter needs to be marshalled from unmanaged to managed, but the marshaller type '{0}' does not support it.
+ Określony parametr musi być kierowany z niezarządzanego do zarządzanego, ale typ marszałka „{0}†go nie obsługuje.Unnecesssary marshalling info was provided. This marshalling information can be removed without any change in behavior to the application.
- Unnecesssary marshalling info was provided. This marshalling information can be removed without any change in behavior to the application.
+ Niepotrzebne informacje o marshallingu zostały przekazane. Te informacje o marshallingu można usunąć bez żadnych zmian w zachowaniu aplikacji.Unnecessary marshalling info was provided and can be removed.
- Unnecessary marshalling info was provided and can be removed.
+ Niepotrzebne informacje o marshallingu zostały przekazane i można je usunąć.Unnecessary marshalling info '{0}' was provided for parameter '{1}'. {2}
- Unnecessary marshalling info '{0}' was provided for parameter '{1}'. {2}
+ Niepotrzebne informacje o marshallingu „{0}†zostaÅ‚y przekazane dla parametru „{1}â€. {2}Unnecessary marshalling info '{0}' was provided for the return type of method '{1}'. {2}
- Unnecessary marshalling info '{0}' was provided for the return type of method '{1}'. {2}
+ Niepotrzebne informacje o marshallingu „{0}†zostaÅ‚y przekazane dla zwracanego typu metody „{1}â€. {2}A 'Value'-kind native type that supports the 'CallerAllocatedBuffer' feature must provide a two-parameter constructor taking the managed type and a 'Span' of an 'unmanaged' type as parameters
- A 'Value'-kind native type that supports the 'CallerAllocatedBuffer' feature must provide a two-parameter constructor taking the managed type and a 'Span' of an 'unmanaged' type as parameters
+ Typ natywny rodzaju „Valueâ€, który obsÅ‚uguje funkcjÄ™ „CallerAllocatedBuffer†musi zapewniać konstruktora z dwoma parametrami przyjmujÄ…cego typ zarzÄ…dzany i wartość „Span†typu „unmanaged†jako parametryThe type '{0}' specifies that it supports 'In' marshalling with the 'CallerAllocatedBuffer' feature for '{1}' but does not provide a two-parameter constructor that takes a '{1}' and 'Span' of an 'unmanaged' type as parameters
- The type '{0}' specifies that it supports 'In' marshalling with the 'CallerAllocatedBuffer' feature for '{1}' but does not provide a two-parameter constructor that takes a '{1}' and 'Span' of an 'unmanaged' type as parameters
+ Typ „{0}†okreÅ›la, że obsÅ‚uguje marshalling „In†z funkcjÄ… „CallerAllocatedBuffer†dla elementu „{1}â€, ale nie zapewnia konstruktora z dwoma parametrami, który przyjmuje wartośći „{1}â€â€Span†typu „unmanaged†jako parametryA 'Value'-kind native type must provide a one-parameter constructor taking the managed type as a parameter
- A 'Value'-kind native type must provide a one-parameter constructor taking the managed type as a parameter
+ Typ natywny rodzaju „Value†musi zapewniać konstruktora z jednym parametrem przyjmującego typ zarządzany jako parametrThe type '{0}' specifies that it supports 'In' marshalling of '{1}' but does not provide a one-parameter constructor that takes a '{1}' as a parameter
- The type '{0}' specifies that it supports 'In' marshalling of '{1}' but does not provide a one-parameter constructor that takes a '{1}' as a parameter
+ Typ „{0}†okreÅ›la, że obsÅ‚uguje skierowanie „In†z elementu „{1}â€, ale nie zapewnia konstruktora z jednym parametrem, który przyjmuje element „{1}†jako parametr
From 81af315e31b4113b5a6db886a4216ac4d806a3ab Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Wed, 21 Aug 2024 18:44:46 -0700
Subject: [PATCH 039/748] [release/9.0] Add NativeRuntimeEventSource metadata
to NativeAot CoreLib (#106713)
* Add NativeRuntimeEventSource metadata to NativeAot CoreLib
This is necessary to allow consumers to parse the payload.
Delete unnecessary runtimeflavor argument of genRuntimeEventSources.py script.
Fixes #105556
* Exclude unused keywords and events
---
.../System.Private.CoreLib.csproj | 11 +--
.../src/System.Private.CoreLib.csproj | 31 ++++++-
src/coreclr/scripts/genRuntimeEventSources.py | 92 ++++++++++++++-----
...ntSource.Threading.NativeSinks.Internal.cs | 11 ---
.../System.Private.CoreLib.csproj | 8 +-
src/tests/issues.targets | 3 -
6 files changed, 104 insertions(+), 52 deletions(-)
diff --git a/src/coreclr/System.Private.CoreLib/System.Private.CoreLib.csproj b/src/coreclr/System.Private.CoreLib/System.Private.CoreLib.csproj
index 5ac4d2d78b58ec..e77a87c6665714 100644
--- a/src/coreclr/System.Private.CoreLib/System.Private.CoreLib.csproj
+++ b/src/coreclr/System.Private.CoreLib/System.Private.CoreLib.csproj
@@ -302,11 +302,6 @@
-
-
-
-
-
@@ -317,15 +312,15 @@
-
- src\System\Diagnostics\Eventing\Generated\NativeRuntimeEventSource.CoreCLR.cs
+
+ src\System\Diagnostics\Eventing\NativeRuntimeEventSource.Generated.cs
-
+
<_PythonWarningParameter>-Wall
<_PythonWarningParameter Condition="'$(MSBuildTreatWarningsAsErrors)' == 'true'">$(_PythonWarningParameter) -Werror
diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj b/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj
index 8cb3c82645e695..fc97632716fd2a 100644
--- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj
+++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj
@@ -571,8 +571,35 @@
+
-
-
+
+
+
+
+ src\System\Diagnostics\Eventing\NativeRuntimeEventSource.Generated.cs
+
+
+
+
+
+
+
+ <_PythonWarningParameter>-Wall
+ <_PythonWarningParameter Condition="'$(MSBuildTreatWarningsAsErrors)' == 'true'">$(_PythonWarningParameter) -Werror
+ <_EventingSourceFileDirectory>%(EventingSourceFile.RootDir)%(EventingSourceFile.Directory)
+ <_EventingSourceFileDirectory Condition="HasTrailingSlash('$(_EventingSourceFileDirectory)')">$(_EventingSourceFileDirectory.TrimEnd('\'))
+
+
+
+
+
+
+
+
diff --git a/src/coreclr/scripts/genRuntimeEventSources.py b/src/coreclr/scripts/genRuntimeEventSources.py
index 5fcfbc0476f119..ed13eeec7238ea 100644
--- a/src/coreclr/scripts/genRuntimeEventSources.py
+++ b/src/coreclr/scripts/genRuntimeEventSources.py
@@ -5,8 +5,7 @@
import os
import xml.dom.minidom as DOM
-from utilities import open_for_update
-from genEventing import RuntimeFlavor
+from utilities import open_for_update, parseInclusionList
import argparse
import sys
@@ -24,12 +23,8 @@
########################################################################
# START CONFIGURATION
########################################################################
-coreCLRManifestsToGenerate = {
- "Microsoft-Windows-DotNETRuntime" : "NativeRuntimeEventSource.CoreCLR.cs"
-}
-
-monoManifestsToGenerate = {
- "Microsoft-Windows-DotNETRuntime" : "NativeRuntimeEventSource.Mono.cs"
+manifestsToGenerate = {
+ "Microsoft-Windows-DotNETRuntime" : "NativeRuntimeEventSource.Generated.cs"
}
providerNameToClassNameMap = {
@@ -77,11 +72,22 @@ def writeOutput(outputFile, str):
def getCSharpTypeFromManifestType(manifestType):
return manifestTypeToCSharpTypeMap[manifestType]
-def getManifestsToGenerate(runtimeFlavor):
- if runtimeFlavor.coreclr:
- return coreCLRManifestsToGenerate
- elif runtimeFlavor.mono:
- return monoManifestsToGenerate
+def getManifestsToGenerate():
+ return manifestsToGenerate
+
+def includeEvent(inclusionList, providerName, eventName):
+ if len(inclusionList) == 0:
+ return True
+ if providerName in inclusionList and eventName in inclusionList[providerName]:
+ return True
+ elif providerName in inclusionList and "*" in inclusionList[providerName]:
+ return True
+ elif "*" in inclusionList and eventName in inclusionList["*"]:
+ return True
+ elif "*" in inclusionList and "*" in inclusionList["*"]:
+ return True
+ else:
+ return False
def generateEvent(eventNode, providerNode, outputFile, stringTable):
@@ -174,7 +180,9 @@ def generateEvent(eventNode, providerNode, outputFile, stringTable):
writeOutput(outputFile, "}\n\n")
-def generateEvents(providerNode, outputFile, stringTable):
+def generateEvents(providerNode, outputFile, stringTable, inclusion_list):
+
+ providerName = providerNode.getAttribute("name")
# Get the events element.
for node in providerNode.getElementsByTagName("events"):
@@ -188,6 +196,10 @@ def generateEvents(providerNode, outputFile, stringTable):
# key = eventID, value = version
eventList = dict()
for eventNode in eventNodes:
+ eventName = eventNode.getAttribute('symbol')
+ if not includeEvent(inclusion_list, providerName, eventName):
+ continue
+
eventID = eventNode.getAttribute("value")
eventVersion = eventNode.getAttribute("version")
eventList[eventID] = eventVersion
@@ -195,6 +207,10 @@ def generateEvents(providerNode, outputFile, stringTable):
# Iterate over each event node and process it.
# Only emit events for the latest version of the event, otherwise EventSource initialization will fail.
for eventNode in eventNodes:
+ eventName = eventNode.getAttribute('symbol')
+ if not includeEvent(inclusion_list, providerName, eventName):
+ continue
+
eventID = eventNode.getAttribute("value")
eventVersion = eventNode.getAttribute("version")
if eventID in eventList and eventList[eventID] == eventVersion:
@@ -305,7 +321,29 @@ def generateEnumTypeMap(providerNode):
return typeMap
-def generateKeywordsClass(providerNode, outputFile):
+def generateKeywordsClass(providerNode, outputFile, inclusion_list):
+
+ providerName = providerNode.getAttribute("name")
+
+ # Get the events element.
+ for node in providerNode.getElementsByTagName("events"):
+ eventsNode = node
+ break
+
+ # Get the list of event nodes.
+ eventNodes = eventsNode.getElementsByTagName("event")
+
+ # Build the list of used keywords
+ keywordSet = set()
+ for eventNode in eventNodes:
+ eventName = eventNode.getAttribute('symbol')
+ if not includeEvent(inclusion_list, providerName, eventName):
+ continue
+
+ # Not all events have keywords specified, and some have multiple keywords specified.
+ keywords = eventNode.getAttribute("keywords")
+ if keywords:
+ keywordSet = keywordSet.union(keywords.split())
# Find the keywords element.
for node in providerNode.getElementsByTagName("keywords"):
@@ -317,7 +355,11 @@ def generateKeywordsClass(providerNode, outputFile):
increaseTabLevel()
for keywordNode in keywordsNode.getElementsByTagName("keyword"):
- writeOutput(outputFile, "public const EventKeywords " + keywordNode.getAttribute("name") + " = (EventKeywords)" + keywordNode.getAttribute("mask") + ";\n")
+ keywordName = keywordNode.getAttribute("name")
+ if keywordName not in keywordSet:
+ continue;
+
+ writeOutput(outputFile, "public const EventKeywords " + keywordName + " = (EventKeywords)" + keywordNode.getAttribute("mask") + ";\n")
decreaseTabLevel()
writeOutput(outputFile, "}\n\n")
@@ -338,7 +380,7 @@ def loadStringTable(manifest):
return stringTable
-def generateEventSources(manifestFullPath, intermediatesDirFullPath, runtimeFlavor):
+def generateEventSources(manifestFullPath, intermediatesDirFullPath, inclusion_list):
# Open the manifest for reading.
manifest = DOM.parse(manifestFullPath)
@@ -347,7 +389,7 @@ def generateEventSources(manifestFullPath, intermediatesDirFullPath, runtimeFlav
stringTable = loadStringTable(manifest)
# Iterate over each provider that we want to generate an EventSource for.
- for providerName, outputFileName in getManifestsToGenerate(runtimeFlavor).items():
+ for providerName, outputFileName in getManifestsToGenerate().items():
for node in manifest.getElementsByTagName("provider"):
if node.getAttribute("name") == providerName:
providerNode = node
@@ -379,7 +421,7 @@ def generateEventSources(manifestFullPath, intermediatesDirFullPath, runtimeFlav
increaseTabLevel()
# Write the keywords class.
- generateKeywordsClass(providerNode, outputFile)
+ generateKeywordsClass(providerNode, outputFile, inclusion_list)
#### Disable enums until they are needed ####
# Generate the enum type map.
@@ -394,7 +436,7 @@ def generateEventSources(manifestFullPath, intermediatesDirFullPath, runtimeFlav
#### Disable enums until they are needed ####
# Generate events.
- generateEvents(providerNode, outputFile, stringTable)
+ generateEvents(providerNode, outputFile, stringTable, inclusion_list)
# Write the class footer.
decreaseTabLevel()
@@ -413,8 +455,8 @@ def main(argv):
help='full path to manifest containing the description of events')
required.add_argument('--intermediate', type=str, required=True,
help='full path to eventprovider intermediate directory')
- required.add_argument('--runtimeflavor', type=str,default="CoreCLR",
- help='runtime flavor')
+ required.add_argument('--inc', type=str,default="",
+ help='full path to inclusion list')
args, unknown = parser.parse_known_args(argv)
if unknown:
print('Unknown argument(s): ', ', '.join(unknown))
@@ -422,7 +464,7 @@ def main(argv):
manifestFullPath = args.man
intermediatesDirFullPath = args.intermediate
- runtimeFlavor = RuntimeFlavor(args.runtimeflavor)
+ inclusion_filename = args.inc
# Ensure the intermediates directory exists.
try:
@@ -431,8 +473,10 @@ def main(argv):
if not os.path.isdir(intermediatesDirFullPath):
raise
+ inclusion_list = parseInclusionList(inclusion_filename)
+
# Generate event sources.
- generateEventSources(manifestFullPath, intermediatesDirFullPath, runtimeFlavor)
+ generateEventSources(manifestFullPath, intermediatesDirFullPath, inclusion_list)
return 0
if __name__ == '__main__':
diff --git a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/NativeRuntimeEventSource.Threading.NativeSinks.Internal.cs b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/NativeRuntimeEventSource.Threading.NativeSinks.Internal.cs
index 7e9368dd3e929d..660d65b367e86a 100644
--- a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/NativeRuntimeEventSource.Threading.NativeSinks.Internal.cs
+++ b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/NativeRuntimeEventSource.Threading.NativeSinks.Internal.cs
@@ -10,17 +10,6 @@ namespace System.Diagnostics.Tracing
// It contains the runtime specific interop to native event sinks.
internal sealed partial class NativeRuntimeEventSource : EventSource
{
-#if NATIVEAOT
- // We don't have these keywords defined from the genRuntimeEventSources.py, so we need to manually define them here.
- public static partial class Keywords
- {
- public const EventKeywords ContentionKeyword = (EventKeywords)0x4000;
- public const EventKeywords ThreadingKeyword = (EventKeywords)0x10000;
- public const EventKeywords ThreadTransferKeyword = (EventKeywords)0x80000000;
- public const EventKeywords WaitHandleKeyword = (EventKeywords)0x40000000000;
- }
-#endif
-
[NonEvent]
[LibraryImport(RuntimeHelpers.QCall, EntryPoint = "NativeRuntimeEventSource_LogContentionLockCreated")]
private static partial void LogContentionLockCreated(nint LockID, nint AssociatedObjectID, ushort ClrInstanceID);
diff --git a/src/mono/System.Private.CoreLib/System.Private.CoreLib.csproj b/src/mono/System.Private.CoreLib/System.Private.CoreLib.csproj
index 20fa27df32e89c..d7983bef487860 100644
--- a/src/mono/System.Private.CoreLib/System.Private.CoreLib.csproj
+++ b/src/mono/System.Private.CoreLib/System.Private.CoreLib.csproj
@@ -315,8 +315,8 @@
-
- src\System\Diagnostics\Eventing\Generated\NativeRuntimeEventSource.Mono.cs
+
+ src\System\Diagnostics\Eventing\NativeRuntimeEventSource.Generated.cs
@@ -327,7 +327,7 @@
DependsOnTargets="FindPython"
BeforeTargets="BeforeCompile">
-
+
<_PythonWarningParameter>-Wall
<_PythonWarningParameter Condition="'$(MSBuildTreatWarningsAsErrors)' == 'true'">$(_PythonWarningParameter) -Werror
@@ -335,7 +335,7 @@
<_EventingSourceFileDirectory Condition="HasTrailingSlash('$(_EventingSourceFileDirectory)')">$(_EventingSourceFileDirectory.TrimEnd('\'))
-
+
diff --git a/src/tests/issues.targets b/src/tests/issues.targets
index 078ca36547d116..0440ee51964ac0 100644
--- a/src/tests/issues.targets
+++ b/src/tests/issues.targets
@@ -686,9 +686,6 @@
-
- https://github.com/dotnet/runtime/issues/105556
- https://github.com/dotnet/runtime/issues/102544
From 562efd6824762dd0c1826cc99e006ad34a7e9e85 Mon Sep 17 00:00:00 2001
From: Filip Navara
Date: Thu, 22 Aug 2024 16:41:30 +0200
Subject: [PATCH 040/748] [release/9.0] Fix compilation of runtime with Xcode
16 (#106800)
* Add missing .alt_entry to CoreCLR *_FakeProlog methods
* Use .alt_entry on Apple platforms
---
.../nativeaot/Runtime/unix/unixasmmacrosamd64.inc | 5 +++++
.../nativeaot/Runtime/unix/unixasmmacrosarm64.inc | 5 ++++-
src/coreclr/pal/inc/unixasmmacrosarm64.inc | 5 +++++
src/coreclr/vm/arm64/asmhelpers.S | 14 ++++++++++----
4 files changed, 24 insertions(+), 5 deletions(-)
diff --git a/src/coreclr/nativeaot/Runtime/unix/unixasmmacrosamd64.inc b/src/coreclr/nativeaot/Runtime/unix/unixasmmacrosamd64.inc
index e37614b660c32f..b1a437d8b57ead 100644
--- a/src/coreclr/nativeaot/Runtime/unix/unixasmmacrosamd64.inc
+++ b/src/coreclr/nativeaot/Runtime/unix/unixasmmacrosamd64.inc
@@ -33,7 +33,12 @@ C_FUNC(\Name):
.endm
.macro ALTERNATE_ENTRY Name
+#if defined(__APPLE__)
+ .alt_entry C_FUNC(\Name)
+ .private_extern C_FUNC(\Name)
+#else
.global C_FUNC(\Name)
+#endif
C_FUNC(\Name):
.endm
diff --git a/src/coreclr/nativeaot/Runtime/unix/unixasmmacrosarm64.inc b/src/coreclr/nativeaot/Runtime/unix/unixasmmacrosarm64.inc
index fc19d451640f43..a02a770aa3b0af 100644
--- a/src/coreclr/nativeaot/Runtime/unix/unixasmmacrosarm64.inc
+++ b/src/coreclr/nativeaot/Runtime/unix/unixasmmacrosarm64.inc
@@ -24,8 +24,11 @@ C_FUNC(\Name):
.endm
.macro ALTERNATE_ENTRY Name
+#if defined(__APPLE__)
+ .alt_entry C_FUNC(\Name)
+ .private_extern C_FUNC(\Name)
+#else
.global C_FUNC(\Name)
-#if !defined(__APPLE__)
.hidden C_FUNC(\Name)
#endif
C_FUNC(\Name):
diff --git a/src/coreclr/pal/inc/unixasmmacrosarm64.inc b/src/coreclr/pal/inc/unixasmmacrosarm64.inc
index 976cc825f2eb40..4997e18b39858a 100644
--- a/src/coreclr/pal/inc/unixasmmacrosarm64.inc
+++ b/src/coreclr/pal/inc/unixasmmacrosarm64.inc
@@ -17,7 +17,12 @@
.endm
.macro PATCH_LABEL Name
+#if defined(__APPLE__)
+ .alt_entry C_FUNC(\Name)
+ .private_extern C_FUNC(\Name)
+#else
.global C_FUNC(\Name)
+#endif
C_FUNC(\Name):
.endm
diff --git a/src/coreclr/vm/arm64/asmhelpers.S b/src/coreclr/vm/arm64/asmhelpers.S
index ebfefd693f0744..48c91e65a098de 100644
--- a/src/coreclr/vm/arm64/asmhelpers.S
+++ b/src/coreclr/vm/arm64/asmhelpers.S
@@ -176,8 +176,7 @@ NESTED_END ThePreStub, _TEXT
LEAF_ENTRY ThePreStubPatch, _TEXT
nop
-.globl C_FUNC(ThePreStubPatchLabel)
-C_FUNC(ThePreStubPatchLabel):
+PATCH_LABEL ThePreStubPatchLabel
ret lr
LEAF_END ThePreStubPatch, _TEXT
@@ -607,8 +606,12 @@ NESTED_END ResolveWorkerAsmStub, _TEXT
#ifdef FEATURE_READYTORUN
NESTED_ENTRY DelayLoad_MethodCall_FakeProlog, _TEXT, NoHandler
-C_FUNC(DelayLoad_MethodCall):
+#if defined(__APPLE__)
+ .alt_entry C_FUNC(DelayLoad_MethodCall)
+#endif
.global C_FUNC(DelayLoad_MethodCall)
+C_FUNC(DelayLoad_MethodCall):
+
PROLOG_WITH_TRANSITION_BLOCK
add x0, sp, #__PWTB_TransitionBlock // pTransitionBlock
@@ -627,8 +630,11 @@ NESTED_END DelayLoad_MethodCall_FakeProlog, _TEXT
.macro DynamicHelper frameFlags, suffix
NESTED_ENTRY DelayLoad_Helper\suffix\()_FakeProlog, _TEXT, NoHandler
-C_FUNC(DelayLoad_Helper\suffix):
+#if defined(__APPLE__)
+ .alt_entry C_FUNC(DelayLoad_Helper\suffix)
+#endif
.global C_FUNC(DelayLoad_Helper\suffix)
+C_FUNC(DelayLoad_Helper\suffix):
PROLOG_WITH_TRANSITION_BLOCK
From f284a3135be257e3afc4bcbd66173e9734753361 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Thu, 22 Aug 2024 10:54:53 -0700
Subject: [PATCH 041/748] [release/9.0] Fix embedded broadcasts for MaybeIMM
instructions (#106802)
* Fix embedded broadcasts for MaybeIMM instructions
* Update gentree.cpp
* Update Runtime_106355.cs
---------
Co-authored-by: EgorBo
Co-authored-by: Jeff Schwartz
---
src/coreclr/jit/gentree.cpp | 7 ++++
.../JitBlue/Runtime_106355/Runtime_106355.cs | 33 +++++++++++++++++++
.../Runtime_106355/Runtime_106355.csproj | 8 +++++
3 files changed, 48 insertions(+)
create mode 100644 src/tests/JIT/Regression/JitBlue/Runtime_106355/Runtime_106355.cs
create mode 100644 src/tests/JIT/Regression/JitBlue/Runtime_106355/Runtime_106355.csproj
diff --git a/src/coreclr/jit/gentree.cpp b/src/coreclr/jit/gentree.cpp
index 50adf99687d371..fe3f01aba62b21 100644
--- a/src/coreclr/jit/gentree.cpp
+++ b/src/coreclr/jit/gentree.cpp
@@ -27008,6 +27008,13 @@ bool GenTreeHWIntrinsic::OperIsEmbBroadcastCompatible() const
NamedIntrinsic intrinsicId = GetHWIntrinsicId();
var_types simdBaseType = GetSimdBaseType();
+ // MaybeImm intrinsics support embedded broadcasts only for their IMM variants (e.g. PSLLQ)
+ if (HWIntrinsicInfo::MaybeImm(intrinsicId) &&
+ !HWIntrinsicInfo::isImmOp(intrinsicId, GetOperandArray()[GetOperandCount() - 1]))
+ {
+ return false;
+ }
+
switch (intrinsicId)
{
case NI_AVX512F_ConvertToVector256Int32:
diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_106355/Runtime_106355.cs b/src/tests/JIT/Regression/JitBlue/Runtime_106355/Runtime_106355.cs
new file mode 100644
index 00000000000000..f6febf776b9683
--- /dev/null
+++ b/src/tests/JIT/Regression/JitBlue/Runtime_106355/Runtime_106355.cs
@@ -0,0 +1,33 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+// Generated by Fuzzlyn v2.2 on 2024-08-13 16:48:33
+// Run on X64 Windows
+// Seed: 4942966914089696094-vectort,vector128,vector256,x86aes,x86avx,x86avx2,x86avx512bw,x86avx512bwvl,x86avx512cd,x86avx512cdvl,x86avx512dq,x86avx512dqvl,x86avx512f,x86avx512fvl,x86avx512fx64,x86bmi1,x86bmi1x64,x86bmi2,x86bmi2x64,x86fma,x86lzcnt,x86lzcntx64,x86pclmulqdq,x86popcnt,x86popcntx64,x86sse,x86ssex64,x86sse2,x86sse2x64,x86sse3,x86sse41,x86sse41x64,x86sse42,x86sse42x64,x86ssse3,x86x86base
+// Reduced from 83.3 KiB to 0.4 KiB in 00:12:10
+// Exits with error:
+// Fatal error. System.Runtime.InteropServices.SEHException (0x80004005): External component has thrown an exception.
+// at Program.Main(Fuzzlyn.ExecutionServer.IRuntime)
+// at Fuzzlyn.ExecutionServer.Program.g__RunAndGetResultAsync|1_0(Byte[], <>c__DisplayClass1_0 ByRef)
+// at Fuzzlyn.ExecutionServer.Program.RunPairAsync(System.Runtime.Loader.AssemblyLoadContext, Fuzzlyn.ExecutionServer.ProgramPair)
+// at Fuzzlyn.ExecutionServer.Program+<>c__DisplayClass0_0.b__0()
+//
+using System.Runtime.CompilerServices;
+using System.Runtime.Intrinsics;
+using System.Runtime.Intrinsics.X86;
+using Xunit;
+
+public class Runtime_106355
+{
+ private static ulong s_3;
+ private static Vector128 s_5;
+
+ [Fact]
+ public static void TestEntrypoint()
+ {
+ if (Sse2.IsSupported)
+ {
+ s_5 = Sse2.ShiftLeftLogical(s_5, Vector128.Create(s_3));
+ }
+ }
+}
diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_106355/Runtime_106355.csproj b/src/tests/JIT/Regression/JitBlue/Runtime_106355/Runtime_106355.csproj
new file mode 100644
index 00000000000000..de6d5e08882e86
--- /dev/null
+++ b/src/tests/JIT/Regression/JitBlue/Runtime_106355/Runtime_106355.csproj
@@ -0,0 +1,8 @@
+
+
+ True
+
+
+
+
+
From 0423237e0ad8ce51b73fc7f603b0364424b06b56 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
<42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Thu, 22 Aug 2024 13:16:47 -0500
Subject: [PATCH 042/748] Update dependencies from
https://github.com/dotnet/emsdk build 20240821.3 (#106813)
Microsoft.SourceBuild.Intermediate.emsdk , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport
From Version 9.0.0-rc.1.24420.5 -> To Version 9.0.0-rc.2.24421.3
Co-authored-by: dotnet-maestro[bot]
---
eng/Version.Details.xml | 9 ++++-----
eng/Versions.props | 2 +-
2 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 32b54b804e3e0a..6a52b449b19bc4 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -64,15 +64,14 @@
c667bfea9cdbc5b5493e49e7ddc8dd635a217891
-
+ https://github.com/dotnet/emsdk
- 9945277ad92ce1d53d6a7a578f9f5bd2af858ddd
+ 099439b38815c2f6a7821d54dfdc4a3fa16537d1
-
-
+ https://github.com/dotnet/emsdk
- 9945277ad92ce1d53d6a7a578f9f5bd2af858ddd
+ 099439b38815c2f6a7821d54dfdc4a3fa16537d1
diff --git a/eng/Versions.props b/eng/Versions.props
index 0663bdef3e627f..61dfb0e5ab4617 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -239,7 +239,7 @@
Note: when the name is updated, make sure to update dependency name in eng/pipelines/common/xplat-setup.yml
like - DarcDependenciesChanged.Microsoft_NET_Workload_Emscripten_Current_Manifest-9_0_100_Transport
-->
- 9.0.0-rc.1.24420.5
+ 9.0.0-rc.2.24421.3$(MicrosoftNETWorkloadEmscriptenCurrentManifest90100TransportVersion)1.1.87-gba258badda
From 92707ee15e13e8dc9a7864592ceb67f05b3edc5d Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
<42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Thu, 22 Aug 2024 13:18:28 -0500
Subject: [PATCH 043/748] Update dependencies from
https://github.com/dotnet/roslyn build 20240821.9 (#106814)
Microsoft.SourceBuild.Intermediate.roslyn , Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.CSharp , Microsoft.Net.Compilers.Toolset
From Version 4.12.0-2.24420.10 -> To Version 4.12.0-2.24421.9
Co-authored-by: dotnet-maestro[bot]
Co-authored-by: Larry Ewing
---
eng/Version.Details.xml | 16 ++++++++--------
eng/Versions.props | 6 +++---
2 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 6a52b449b19bc4..03ac7dd8ed2da5 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -356,17 +356,17 @@
https://github.com/dotnet/runtime-assets6d82d2732e240983f23ebe53d3cfb8fcd3b3ec0d
-
+ https://github.com/dotnet/roslyn
- c63e7b69c8a24803129f63b382c0ab1558112cf6
+ 08a167c19e5e04742b0922bdb1ea8046e9364f4b
-
+ https://github.com/dotnet/roslyn
- c63e7b69c8a24803129f63b382c0ab1558112cf6
+ 08a167c19e5e04742b0922bdb1ea8046e9364f4b
-
+ https://github.com/dotnet/roslyn
- c63e7b69c8a24803129f63b382c0ab1558112cf6
+ 08a167c19e5e04742b0922bdb1ea8046e9364f4bhttps://github.com/dotnet/roslyn-analyzers
@@ -377,9 +377,9 @@
fdb9965ce68c1f4e1c0ff301488adf9caa958615
-
+ https://github.com/dotnet/roslyn
- c63e7b69c8a24803129f63b382c0ab1558112cf6
+ 08a167c19e5e04742b0922bdb1ea8046e9364f4b
diff --git a/eng/Versions.props b/eng/Versions.props
index 61dfb0e5ab4617..e2122edebcc7a1 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -42,9 +42,9 @@
Any tools that contribute to the design-time experience should use the MicrosoftCodeAnalysisVersion_LatestVS property above to ensure
they do not break the local dev experience.
-->
- 4.12.0-2.24420.10
- 4.12.0-2.24420.10
- 4.12.0-2.24420.10
+ 4.12.0-2.24421.9
+ 4.12.0-2.24421.9
+ 4.12.0-2.24421.9
-
+ https://github.com/dotnet/emsdk099439b38815c2f6a7821d54dfdc4a3fa16537d1
@@ -88,87 +88,87 @@
-
+ https://github.com/dotnet/arcade
- b435d26f349d3960d12281321972ed323c35319d
+ c28c6307d0600513219bcd9ab028c0fedbe591ec
-
+ https://github.com/dotnet/arcade
- b435d26f349d3960d12281321972ed323c35319d
+ c28c6307d0600513219bcd9ab028c0fedbe591ec
-
+ https://github.com/dotnet/arcade
- b435d26f349d3960d12281321972ed323c35319d
+ c28c6307d0600513219bcd9ab028c0fedbe591ec
-
+ https://github.com/dotnet/arcade
- b435d26f349d3960d12281321972ed323c35319d
+ c28c6307d0600513219bcd9ab028c0fedbe591ec
-
+ https://github.com/dotnet/arcade
- b435d26f349d3960d12281321972ed323c35319d
+ c28c6307d0600513219bcd9ab028c0fedbe591ec
-
+ https://github.com/dotnet/arcade
- b435d26f349d3960d12281321972ed323c35319d
+ c28c6307d0600513219bcd9ab028c0fedbe591ec
-
+ https://github.com/dotnet/arcade
- b435d26f349d3960d12281321972ed323c35319d
+ c28c6307d0600513219bcd9ab028c0fedbe591ec
-
+ https://github.com/dotnet/arcade
- b435d26f349d3960d12281321972ed323c35319d
+ c28c6307d0600513219bcd9ab028c0fedbe591ec
-
+ https://github.com/dotnet/arcade
- b435d26f349d3960d12281321972ed323c35319d
+ c28c6307d0600513219bcd9ab028c0fedbe591ec
-
+ https://github.com/dotnet/arcade
- b435d26f349d3960d12281321972ed323c35319d
+ c28c6307d0600513219bcd9ab028c0fedbe591ec
-
+ https://github.com/dotnet/arcade
- b435d26f349d3960d12281321972ed323c35319d
+ c28c6307d0600513219bcd9ab028c0fedbe591ec
-
+ https://github.com/dotnet/arcade
- b435d26f349d3960d12281321972ed323c35319d
+ c28c6307d0600513219bcd9ab028c0fedbe591ec
-
+ https://github.com/dotnet/arcade
- b435d26f349d3960d12281321972ed323c35319d
+ c28c6307d0600513219bcd9ab028c0fedbe591ec
-
+ https://github.com/dotnet/arcade
- b435d26f349d3960d12281321972ed323c35319d
+ c28c6307d0600513219bcd9ab028c0fedbe591ec
-
+ https://github.com/dotnet/arcade
- b435d26f349d3960d12281321972ed323c35319d
+ c28c6307d0600513219bcd9ab028c0fedbe591ec
-
+ https://github.com/dotnet/arcade
- b435d26f349d3960d12281321972ed323c35319d
+ c28c6307d0600513219bcd9ab028c0fedbe591ec
-
+ https://github.com/dotnet/arcade
- b435d26f349d3960d12281321972ed323c35319d
+ c28c6307d0600513219bcd9ab028c0fedbe591ec
-
+ https://github.com/dotnet/arcade
- b435d26f349d3960d12281321972ed323c35319d
+ c28c6307d0600513219bcd9ab028c0fedbe591ec
-
+ https://github.com/dotnet/arcade
- b435d26f349d3960d12281321972ed323c35319d
+ c28c6307d0600513219bcd9ab028c0fedbe591ec
-
+ https://github.com/dotnet/arcade
- b435d26f349d3960d12281321972ed323c35319d
+ c28c6307d0600513219bcd9ab028c0fedbe591echttps://github.com/dotnet/runtime-assets
@@ -328,9 +328,9 @@
https://github.com/dotnet/xharness9794254fa909ff5adc46326e9b54009793f61dcd
-
+ https://github.com/dotnet/arcade
- b435d26f349d3960d12281321972ed323c35319d
+ c28c6307d0600513219bcd9ab028c0fedbe591echttps://dev.azure.com/dnceng/internal/_git/dotnet-optimization
diff --git a/eng/Versions.props b/eng/Versions.props
index e2122edebcc7a1..91a91c7f539e23 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -83,22 +83,22 @@
9.0.100-rc.1.24409.1
- 9.0.0-beta.24420.6
- 9.0.0-beta.24420.6
- 9.0.0-beta.24420.6
- 9.0.0-beta.24420.6
- 2.9.0-beta.24420.6
- 9.0.0-beta.24420.6
- 2.9.0-beta.24420.6
- 9.0.0-beta.24420.6
- 9.0.0-beta.24420.6
- 9.0.0-beta.24420.6
- 9.0.0-beta.24420.6
- 9.0.0-beta.24420.6
- 9.0.0-beta.24420.6
- 9.0.0-beta.24420.6
- 9.0.0-beta.24420.6
- 9.0.0-beta.24420.6
+ 9.0.0-beta.24421.7
+ 9.0.0-beta.24421.7
+ 9.0.0-beta.24421.7
+ 9.0.0-beta.24421.7
+ 2.9.0-beta.24421.7
+ 9.0.0-beta.24421.7
+ 2.9.0-beta.24421.7
+ 9.0.0-beta.24421.7
+ 9.0.0-beta.24421.7
+ 9.0.0-beta.24421.7
+ 9.0.0-beta.24421.7
+ 9.0.0-beta.24421.7
+ 9.0.0-beta.24421.7
+ 9.0.0-beta.24421.7
+ 9.0.0-beta.24421.7
+ 9.0.0-beta.24421.71.4.0
diff --git a/eng/common/SetupNugetSources.ps1 b/eng/common/SetupNugetSources.ps1
index 2b0a5c9e6655e6..5db4ad71ee2f3e 100644
--- a/eng/common/SetupNugetSources.ps1
+++ b/eng/common/SetupNugetSources.ps1
@@ -157,7 +157,7 @@ if ($dotnet31Source -ne $null) {
AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal-transport/nuget/v2" -Creds $creds -Username $userName -pwd $Password
}
-$dotnetVersions = @('5','6','7','8')
+$dotnetVersions = @('5','6','7','8','9')
foreach ($dotnetVersion in $dotnetVersions) {
$feedPrefix = "dotnet" + $dotnetVersion;
diff --git a/eng/common/SetupNugetSources.sh b/eng/common/SetupNugetSources.sh
index b493479a1daf03..4604b61b0323ae 100644
--- a/eng/common/SetupNugetSources.sh
+++ b/eng/common/SetupNugetSources.sh
@@ -99,7 +99,7 @@ if [ "$?" == "0" ]; then
PackageSources+=('dotnet3.1-internal-transport')
fi
-DotNetVersions=('5' '6' '7' '8')
+DotNetVersions=('5' '6' '7' '8' '9')
for DotNetVersion in ${DotNetVersions[@]} ; do
FeedPrefix="dotnet${DotNetVersion}";
diff --git a/global.json b/global.json
index c4a1f222a0aaae..8a60777bc71358 100644
--- a/global.json
+++ b/global.json
@@ -8,9 +8,9 @@
"dotnet": "9.0.100-preview.7.24407.12"
},
"msbuild-sdks": {
- "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.24420.6",
- "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.24420.6",
- "Microsoft.DotNet.SharedFramework.Sdk": "9.0.0-beta.24420.6",
+ "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.24421.7",
+ "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.24421.7",
+ "Microsoft.DotNet.SharedFramework.Sdk": "9.0.0-beta.24421.7",
"Microsoft.Build.NoTargets": "3.7.0",
"Microsoft.Build.Traversal": "3.4.0",
"Microsoft.NET.Sdk.IL": "9.0.0-rc.1.24410.5"
From 0e5e90a62e7a7c67251f173a09f8d39a11bceff5 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Thu, 22 Aug 2024 15:29:15 -0700
Subject: [PATCH 048/748] pal init: InitializeFlushProcessWriteBuffers() before
first thread to improve start time (#106836)
InitializeFlushProcessWriteBuffers() initializes expedited membarrier()
syscall on Linux, which is much slower when called in a multi-thread
process. Move this init earlier to improve dotnet process start time.
A detailed explanation can be found in issue 106722.
Fixes https://github.com/dotnet/runtime/issues/106722
Co-authored-by: Haris Okanovic
---
src/coreclr/pal/inc/pal.h | 4 +++-
src/coreclr/pal/src/init/pal.cpp | 15 ++++++++++-----
2 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/src/coreclr/pal/inc/pal.h b/src/coreclr/pal/inc/pal.h
index 77b641a5059232..e4a520c1dcf5c9 100644
--- a/src/coreclr/pal/inc/pal.h
+++ b/src/coreclr/pal/inc/pal.h
@@ -191,6 +191,7 @@ PAL_IsDebuggerPresent();
#define PAL_INITIALIZE_ENSURE_STACK_SIZE 0x20
#define PAL_INITIALIZE_REGISTER_SIGNALS 0x40
#define PAL_INITIALIZE_REGISTER_ACTIVATION_SIGNAL 0x80
+#define PAL_INITIALIZE_FLUSH_PROCESS_WRITE_BUFFERS 0x100
// PAL_Initialize() flags
#define PAL_INITIALIZE (PAL_INITIALIZE_SYNC_THREAD | \
@@ -206,7 +207,8 @@ PAL_IsDebuggerPresent();
PAL_INITIALIZE_DEBUGGER_EXCEPTIONS | \
PAL_INITIALIZE_ENSURE_STACK_SIZE | \
PAL_INITIALIZE_REGISTER_SIGNALS | \
- PAL_INITIALIZE_REGISTER_ACTIVATION_SIGNAL)
+ PAL_INITIALIZE_REGISTER_ACTIVATION_SIGNAL | \
+ PAL_INITIALIZE_FLUSH_PROCESS_WRITE_BUFFERS)
typedef DWORD (PALAPI_NOEXPORT *PTHREAD_START_ROUTINE)(LPVOID lpThreadParameter);
typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE;
diff --git a/src/coreclr/pal/src/init/pal.cpp b/src/coreclr/pal/src/init/pal.cpp
index 7a8fc556724c1f..a51feb390b44ca 100644
--- a/src/coreclr/pal/src/init/pal.cpp
+++ b/src/coreclr/pal/src/init/pal.cpp
@@ -382,6 +382,16 @@ Initialize(
goto CLEANUP0a;
}
+ if (flags & PAL_INITIALIZE_FLUSH_PROCESS_WRITE_BUFFERS)
+ {
+ // Initialize before first thread is created for faster load on Linux
+ if (!InitializeFlushProcessWriteBuffers())
+ {
+ palError = ERROR_PALINIT_INITIALIZE_FLUSH_PROCESS_WRITE_BUFFERS;
+ goto CLEANUP0a;
+ }
+ }
+
// The gSharedFilesPath is allocated dynamically so its destructor does not get
// called unexpectedly during cleanup
gSharedFilesPath = InternalNew();
@@ -787,11 +797,6 @@ PAL_InitializeCoreCLR(const char *szExePath, BOOL runningInExe)
return ERROR_PALINIT_PROCABORT_INITIALIZE;
}
- if (!InitializeFlushProcessWriteBuffers())
- {
- return ERROR_PALINIT_INITIALIZE_FLUSH_PROCESS_WRITE_BUFFERS;
- }
-
return ERROR_SUCCESS;
}
From e90526faa3cb109bbc011c6fefa81b94cd36e6b6 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Thu, 22 Aug 2024 15:29:43 -0700
Subject: [PATCH 049/748] Avoid signed overflow in DBG_FlushInstructionCache
(#106823)
On ARM32 Linux we can have an infinite loop because of integer overflow.
For example, if DBG_FlushInstructionCache is called with
the following parameters & locals:
dwSize = 28
pageSize = 4096
begin = lpBaseAddress = 0x7ffff000
end = begin + dwSize = 0x7ffff01c
ALIGN_UP(0x7ffff000, 4096) returns 0x80000000 which is actually a
negative number because INT_PTR is just int32_t (on ARM32). And here we
are getting an infinite loop because "begin" will never be greater or
equal than "end".
So, this issue is related to all addresses between INT32_MAX - PAGE_SIZE and
INT32_MAX because ALIGN_UP returns the address of the next page which
will be greater or equal to INT32_MAX
Signed-off-by: Andrei Lalaev
Co-authored-by: Andrei Lalaev
---
src/coreclr/pal/src/thread/context.cpp | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/coreclr/pal/src/thread/context.cpp b/src/coreclr/pal/src/thread/context.cpp
index 2abec3970f1e02..5154ee3c8800f3 100644
--- a/src/coreclr/pal/src/thread/context.cpp
+++ b/src/coreclr/pal/src/thread/context.cpp
@@ -2068,12 +2068,12 @@ DBG_FlushInstructionCache(
// As a workaround, we call __builtin___clear_cache on each page separately.
const SIZE_T pageSize = GetVirtualPageSize();
- INT_PTR begin = (INT_PTR)lpBaseAddress;
- const INT_PTR end = begin + dwSize;
+ UINT_PTR begin = (UINT_PTR)lpBaseAddress;
+ const UINT_PTR end = begin + dwSize;
while (begin < end)
{
- INT_PTR endOrNextPageBegin = ALIGN_UP(begin + 1, pageSize);
+ UINT_PTR endOrNextPageBegin = ALIGN_UP(begin + 1, pageSize);
if (endOrNextPageBegin > end)
endOrNextPageBegin = end;
From f7b94caddeb75f42a4a670f7505f72588f7e9f41 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
<42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Thu, 22 Aug 2024 19:44:15 -0500
Subject: [PATCH 050/748] Update dependencies from
https://github.com/dotnet/source-build-externals build 20240821.1 (#106812)
Microsoft.SourceBuild.Intermediate.source-build-externals
From Version 9.0.0-alpha.1.24420.1 -> To Version 9.0.0-alpha.1.24421.1
Co-authored-by: dotnet-maestro[bot]
Co-authored-by: Larry Ewing
---
eng/Version.Details.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index d32f35df171c58..ba3644db0e0012 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -81,9 +81,9 @@
-
+ https://github.com/dotnet/source-build-externals
- ee22054b44ec9615dc3481c4decc1b007a83a2b0
+ 457ff6ef4705a0aa8de628a1f2a15474a05b7150
From 4bd35a1fae90abe9894e8f22802c94a84bd8b21e Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Fri, 23 Aug 2024 08:37:47 -0700
Subject: [PATCH 051/748] [release/9.0] Fix trimming for DiagnosticSource
(#106842)
* Fix trimming for DiagnosticSource
Recent changes to EventSource startup caused the IL trimmer to include portions of the DiagnosticSource assembly. Adding the IsMeterSupported feature check wasn't sufficient because EventSource also roots all of its methods via a DynamicallyAccessedMembers attribute. To ensure that the new methods can be removed when needed I refactored them into a separate EventSourceInitHelper class that won't be rooted by the existing DAM attribute.
When EventSouce.IsSupported is false I'd expect the entire EventSourceInitHelper class to be unreachable. If only EventSource.IsMeterSupported is false then I'd expect PreregisterEventProviders and GetMetricsEventSource() to be unreachable but the rest of the class will remain.
Hopefully this really fixes #106265 this time.
* PR feedback
---------
Co-authored-by: Noah Falk
Co-authored-by: Jeff Schwartz
---
.../System/Diagnostics/Tracing/EventSource.cs | 167 +++++++++---------
1 file changed, 86 insertions(+), 81 deletions(-)
diff --git a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/EventSource.cs b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/EventSource.cs
index e765a1df9209f5..48ad57547327c2 100644
--- a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/EventSource.cs
+++ b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/EventSource.cs
@@ -224,6 +224,65 @@ internal sealed class EventSourceAutoGenerateAttribute : Attribute
[DynamicallyAccessedMembers(ManifestMemberTypes)]
public partial class EventSource : IDisposable
{
+ // private instance state
+ private string m_name = null!; // My friendly name (privided in ctor)
+ internal int m_id; // A small integer that is unique to this instance.
+ private Guid m_guid; // GUID representing the ETW eventSource to the OS.
+ internal volatile EventMetadata[]? m_eventData; // None per-event data
+ private volatile byte[]? m_rawManifest; // Bytes to send out representing the event schema
+
+ private EventHandler? m_eventCommandExecuted;
+
+ private readonly EventSourceSettings m_config; // configuration information
+
+ private bool m_eventSourceDisposed; // has Dispose been called.
+
+ // Enabling bits
+ private bool m_eventSourceEnabled; // am I enabled (any of my events are enabled for any dispatcher)
+ internal EventLevel m_level; // highest level enabled by any output dispatcher
+ internal EventKeywords m_matchAnyKeyword; // the logical OR of all levels enabled by any output dispatcher (zero is a special case) meaning 'all keywords'
+
+ // Dispatching state
+ internal volatile EventDispatcher? m_Dispatchers; // Linked list of code:EventDispatchers we write the data to (we also do ETW specially)
+ private volatile OverrideEventProvider m_etwProvider = null!; // This hooks up ETW commands to our 'OnEventCommand' callback
+#if FEATURE_PERFTRACING
+ private object? m_createEventLock;
+ private IntPtr m_writeEventStringEventHandle = IntPtr.Zero;
+ private volatile OverrideEventProvider m_eventPipeProvider = null!;
+#endif
+ private bool m_completelyInited; // The EventSource constructor has returned without exception.
+ private Exception? m_constructionException; // If there was an exception construction, this is it
+ private byte m_outOfBandMessageCount; // The number of out of band messages sent (we throttle them
+ private EventCommandEventArgs? m_deferredCommands; // If we get commands before we are fully we store them here and run the when we are fully inited.
+
+ private string[]? m_traits; // Used to implement GetTraits
+
+ [ThreadStatic]
+ private static byte m_EventSourceExceptionRecurenceCount; // current recursion count inside ThrowEventSourceException
+
+ internal volatile ulong[]? m_channelData;
+
+ // We use a single instance of ActivityTracker for all EventSources instances to allow correlation between multiple event providers.
+ // We have m_activityTracker field simply because instance field is more efficient than static field fetch.
+ private ActivityTracker m_activityTracker = null!;
+ internal const string ActivityStartSuffix = "Start";
+ internal const string ActivityStopSuffix = "Stop";
+
+ // This switch controls an opt-in, off-by-default mechanism for allowing multiple EventSources to have the same
+ // name and by extension GUID. This is not considered a mainline scenario and is explicitly intended as a release
+ // valve for users that make heavy use of AssemblyLoadContext and experience exceptions from EventSource.
+ // This does not solve any issues that might arise from this configuration. For instance:
+ //
+ // * If multiple manifest-mode EventSources have the same name/GUID, it is ambiguous which manifest should be used by an ETW parser.
+ // This can result in events being incorrectly parse. The data will still be there, but EventTrace (or other libraries) won't
+ // know how to parse it.
+ // * Potential issues in parsing self-describing EventSources that use the same name/GUID, event name, and payload type from the same AssemblyLoadContext
+ // but have different event IDs set.
+ //
+ // Most users should not turn this on.
+ internal const string DuplicateSourceNamesSwitch = "System.Diagnostics.Tracing.EventSource.AllowDuplicateSourceNames";
+ private static readonly bool AllowDuplicateSourceNames = AppContext.TryGetSwitch(DuplicateSourceNamesSwitch, out bool isEnabled) ? isEnabled : false;
+
internal static bool IsSupported { get; } = InitializeIsSupported();
@@ -1608,7 +1667,7 @@ private unsafe void Initialize(Guid eventSourceGuid, string eventSourceName, str
// Register the provider with ETW
Func eventSourceFactory = () => this;
- OverrideEventProvider? etwProvider = TryGetPreregisteredEtwProvider(eventSourceGuid);
+ OverrideEventProvider? etwProvider = EventSourceInitHelper.TryGetPreregisteredEtwProvider(eventSourceGuid);
if(etwProvider == null)
{
etwProvider = new OverrideEventProvider(eventSourceFactory, EventProviderType.ETW);
@@ -1632,7 +1691,7 @@ private unsafe void Initialize(Guid eventSourceGuid, string eventSourceName, str
#if FEATURE_PERFTRACING
// Register the provider with EventPipe
- OverrideEventProvider? eventPipeProvider = TryGetPreregisteredEventPipeProvider(eventSourceName);
+ OverrideEventProvider? eventPipeProvider = EventSourceInitHelper.TryGetPreregisteredEventPipeProvider(eventSourceName);
if (eventPipeProvider == null)
{
eventPipeProvider = new OverrideEventProvider(eventSourceFactory, EventProviderType.EventPipe);
@@ -2407,7 +2466,7 @@ internal static EventOpcode GetOpcodeWithDefault(EventOpcode opcode, string? eve
///
/// This class lets us hook the 'OnEventCommand' from the eventSource.
///
- private sealed class OverrideEventProvider : EventProvider
+ internal sealed class OverrideEventProvider : EventProvider
{
public OverrideEventProvider(Func eventSourceFactory, EventProviderType providerType)
: base(providerType)
@@ -3840,11 +3899,24 @@ internal static void InitializeDefaultEventSources()
{
const string name = "System.Diagnostics.Metrics";
Guid id = new Guid("20752bc4-c151-50f5-f27b-df92d8af5a61");
- PreregisterEventProviders(id, name, GetMetricsEventSource);
+ EventSourceInitHelper.PreregisterEventProviders(id, name, EventSourceInitHelper.GetMetricsEventSource);
}
}
+#endregion
+ }
+
+ // This type is logically just more static EventSource functionality but it needs to be a separate class
+ // to ensure that the IL linker can remove unused methods in it. Methods defined within the EventSource type
+ // are never removed because EventSource has the potential to reflect over its own members.
+ internal static class EventSourceInitHelper
+ {
+ private static List> s_preregisteredEventSourceFactories = new List>();
+ private static readonly Dictionary s_preregisteredEtwProviders = new Dictionary();
+#if FEATURE_PERFTRACING
+ private static readonly Dictionary s_preregisteredEventPipeProviders = new Dictionary();
+#endif
- private static EventSource? GetMetricsEventSource()
+ internal static EventSource? GetMetricsEventSource()
{
Type? metricsEventSourceType = Type.GetType(
"System.Diagnostics.Metrics.MetricsEventSource, System.Diagnostics.DiagnosticSource",
@@ -3864,7 +3936,7 @@ internal static void InitializeDefaultEventSources()
// Pre-registration creates and registers an EventProvider prior to the EventSource being constructed.
// If a tracing session is started using the provider then the EventSource will be constructed on demand.
- private static unsafe void PreregisterEventProviders(Guid id, string name, Func eventSourceFactory)
+ internal static unsafe void PreregisterEventProviders(Guid id, string name, Func eventSourceFactory)
{
// NOTE: Pre-registration has some minor limitations and variations to normal EventSource behavior:
// 1. Instead of delivering OnEventCommand callbacks during the EventSource constructor it may deliver them after
@@ -3882,7 +3954,7 @@ private static unsafe void PreregisterEventProviders(Guid id, string name, Func<
{
s_preregisteredEventSourceFactories.Add(eventSourceFactory);
- OverrideEventProvider etwProvider = new OverrideEventProvider(eventSourceFactory, EventProviderType.ETW);
+ EventSource.OverrideEventProvider etwProvider = new EventSource.OverrideEventProvider(eventSourceFactory, EventProviderType.ETW);
etwProvider.Register(id, name);
#if TARGET_WINDOWS
byte[] providerMetadata = Statics.MetadataForString(name, 0, 0, 0);
@@ -3900,7 +3972,7 @@ private static unsafe void PreregisterEventProviders(Guid id, string name, Func<
}
#if FEATURE_PERFTRACING
- OverrideEventProvider eventPipeProvider = new OverrideEventProvider(eventSourceFactory, EventProviderType.EventPipe);
+ EventSource.OverrideEventProvider eventPipeProvider = new EventSource.OverrideEventProvider(eventSourceFactory, EventProviderType.EventPipe);
eventPipeProvider.Register(id, name);
lock (s_preregisteredEventPipeProviders)
{
@@ -3928,7 +4000,7 @@ internal static void EnsurePreregisteredEventSourcesExist()
// the list as long as we still guarantee they get initialized in the near future and reported to the
// same EventListener.OnEventSourceCreated() callback.
Func[] factories;
- lock(s_preregisteredEventSourceFactories)
+ lock (s_preregisteredEventSourceFactories)
{
factories = s_preregisteredEventSourceFactories.ToArray();
s_preregisteredEventSourceFactories.Clear();
@@ -3939,92 +4011,25 @@ internal static void EnsurePreregisteredEventSourcesExist()
}
}
- private static List> s_preregisteredEventSourceFactories = new List>();
-
- private static OverrideEventProvider? TryGetPreregisteredEtwProvider(Guid id)
+ internal static EventSource.OverrideEventProvider? TryGetPreregisteredEtwProvider(Guid id)
{
lock (s_preregisteredEtwProviders)
{
- s_preregisteredEtwProviders.Remove(id, out OverrideEventProvider? provider);
+ s_preregisteredEtwProviders.Remove(id, out EventSource.OverrideEventProvider? provider);
return provider;
}
}
- private static readonly Dictionary s_preregisteredEtwProviders = new Dictionary();
-
#if FEATURE_PERFTRACING
- private static OverrideEventProvider? TryGetPreregisteredEventPipeProvider(string name)
+ internal static EventSource.OverrideEventProvider? TryGetPreregisteredEventPipeProvider(string name)
{
lock (s_preregisteredEventPipeProviders)
{
- s_preregisteredEventPipeProviders.Remove(name, out OverrideEventProvider? provider);
+ s_preregisteredEventPipeProviders.Remove(name, out EventSource.OverrideEventProvider? provider);
return provider;
}
}
-
- private static readonly Dictionary s_preregisteredEventPipeProviders = new Dictionary();
#endif
-
- // private instance state
- private string m_name = null!; // My friendly name (privided in ctor)
- internal int m_id; // A small integer that is unique to this instance.
- private Guid m_guid; // GUID representing the ETW eventSource to the OS.
- internal volatile EventMetadata[]? m_eventData; // None per-event data
- private volatile byte[]? m_rawManifest; // Bytes to send out representing the event schema
-
- private EventHandler? m_eventCommandExecuted;
-
- private readonly EventSourceSettings m_config; // configuration information
-
- private bool m_eventSourceDisposed; // has Dispose been called.
-
- // Enabling bits
- private bool m_eventSourceEnabled; // am I enabled (any of my events are enabled for any dispatcher)
- internal EventLevel m_level; // highest level enabled by any output dispatcher
- internal EventKeywords m_matchAnyKeyword; // the logical OR of all levels enabled by any output dispatcher (zero is a special case) meaning 'all keywords'
-
- // Dispatching state
- internal volatile EventDispatcher? m_Dispatchers; // Linked list of code:EventDispatchers we write the data to (we also do ETW specially)
- private volatile OverrideEventProvider m_etwProvider = null!; // This hooks up ETW commands to our 'OnEventCommand' callback
-#if FEATURE_PERFTRACING
- private object? m_createEventLock;
- private IntPtr m_writeEventStringEventHandle = IntPtr.Zero;
- private volatile OverrideEventProvider m_eventPipeProvider = null!;
-#endif
- private bool m_completelyInited; // The EventSource constructor has returned without exception.
- private Exception? m_constructionException; // If there was an exception construction, this is it
- private byte m_outOfBandMessageCount; // The number of out of band messages sent (we throttle them
- private EventCommandEventArgs? m_deferredCommands; // If we get commands before we are fully we store them here and run the when we are fully inited.
-
- private string[]? m_traits; // Used to implement GetTraits
-
- [ThreadStatic]
- private static byte m_EventSourceExceptionRecurenceCount; // current recursion count inside ThrowEventSourceException
-
- internal volatile ulong[]? m_channelData;
-
- // We use a single instance of ActivityTracker for all EventSources instances to allow correlation between multiple event providers.
- // We have m_activityTracker field simply because instance field is more efficient than static field fetch.
- private ActivityTracker m_activityTracker = null!;
- internal const string ActivityStartSuffix = "Start";
- internal const string ActivityStopSuffix = "Stop";
-
- // This switch controls an opt-in, off-by-default mechanism for allowing multiple EventSources to have the same
- // name and by extension GUID. This is not considered a mainline scenario and is explicitly intended as a release
- // valve for users that make heavy use of AssemblyLoadContext and experience exceptions from EventSource.
- // This does not solve any issues that might arise from this configuration. For instance:
- //
- // * If multiple manifest-mode EventSources have the same name/GUID, it is ambiguous which manifest should be used by an ETW parser.
- // This can result in events being incorrectly parse. The data will still be there, but EventTrace (or other libraries) won't
- // know how to parse it.
- // * Potential issues in parsing self-describing EventSources that use the same name/GUID, event name, and payload type from the same AssemblyLoadContext
- // but have different event IDs set.
- //
- // Most users should not turn this on.
- internal const string DuplicateSourceNamesSwitch = "System.Diagnostics.Tracing.EventSource.AllowDuplicateSourceNames";
- private static readonly bool AllowDuplicateSourceNames = AppContext.TryGetSwitch(DuplicateSourceNamesSwitch, out bool isEnabled) ? isEnabled : false;
-
-#endregion
}
///
@@ -4585,7 +4590,7 @@ private void CallBackForExistingEventSources(bool addToListenersList, EventHandl
{
// Pre-registered EventSources may not have been constructed yet but we need to do so now to ensure they are
// reported to the EventListener.
- EventSource.EnsurePreregisteredEventSourcesExist();
+ EventSourceInitHelper.EnsurePreregisteredEventSourcesExist();
lock (EventListenersLock)
{
From 5ec43e0996c6d8882d5cba4dd6beeb698dd3e791 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Fri, 23 Aug 2024 11:53:35 -0700
Subject: [PATCH 052/748] [release/9.0] Fix stack overflow in the configuration
source gen (#106668)
* Fix StackOverFlow in the Logging source gen
* Address the feedback
* Avoid static field
---------
Co-authored-by: Tarek Mahmoud Sayed
Co-authored-by: Larry Ewing
---
.../ConfigurationBindingGenerator.Parser.cs | 56 ++++++++++---
.../gen/Specs/BindingHelperInfo.cs | 9 ++-
.../ConfigurationBinderTests.TestClasses.cs | 9 +++
.../tests/Common/ConfigurationBinderTests.cs | 81 +++++++++++++++++++
4 files changed, 141 insertions(+), 14 deletions(-)
diff --git a/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/ConfigurationBindingGenerator.Parser.cs b/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/ConfigurationBindingGenerator.Parser.cs
index 0982628197ea65..dc940d2cb07875 100644
--- a/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/ConfigurationBindingGenerator.Parser.cs
+++ b/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/ConfigurationBindingGenerator.Parser.cs
@@ -552,7 +552,9 @@ private bool IsAssignableTo(ITypeSymbol source, ITypeSymbol dest)
return conversion.IsReference && conversion.IsImplicit;
}
- private bool IsUnsupportedType(ITypeSymbol type)
+ private HashSet? _visitedTypes = new(SymbolEqualityComparer.Default);
+
+ private bool IsUnsupportedType(ITypeSymbol type, HashSet? visitedTypes = null)
{
if (type.OriginalDefinition.SpecialType == SpecialType.System_Nullable_T)
{
@@ -569,25 +571,55 @@ private bool IsUnsupportedType(ITypeSymbol type)
return true;
}
- if (type is IArrayTypeSymbol arrayTypeSymbol)
+ if (visitedTypes?.Contains(type) is true)
{
- return arrayTypeSymbol.Rank > 1 || IsUnsupportedType(arrayTypeSymbol.ElementType);
+ // avoid infinite recursion in nested types like
+ // public record RecursiveType
+ // {
+ // public TreeElement? Tree { get; set; }
+ // }
+ // public sealed class TreeElement : Dictionary;
+ //
+ // return false for the second call. The type will continue be checked in the first call anyway.
+ return false;
}
- if (IsCollection(type))
+ IArrayTypeSymbol? arrayTypeSymbol = type as IArrayTypeSymbol;
+ if (arrayTypeSymbol is null)
{
- INamedTypeSymbol collectionType = (INamedTypeSymbol)type;
-
- if (IsCandidateDictionary(collectionType, out ITypeSymbol? keyType, out ITypeSymbol? elementType))
- {
- return IsUnsupportedType(keyType) || IsUnsupportedType(elementType);
- }
- else if (TryGetElementType(collectionType, out elementType))
+ if (!IsCollection(type))
{
- return IsUnsupportedType(elementType);
+ return false;
}
}
+ if (visitedTypes is null)
+ {
+ visitedTypes = _visitedTypes;
+ visitedTypes.Clear();
+ }
+
+ visitedTypes.Add(type);
+
+ if (arrayTypeSymbol is not null)
+ {
+ return arrayTypeSymbol.Rank > 1 || IsUnsupportedType(arrayTypeSymbol.ElementType, visitedTypes);
+ }
+
+ Debug.Assert(IsCollection(type));
+
+ INamedTypeSymbol collectionType = (INamedTypeSymbol)type;
+
+ if (IsCandidateDictionary(collectionType, out ITypeSymbol? keyType, out ITypeSymbol? elementType))
+ {
+ return IsUnsupportedType(keyType, visitedTypes) || IsUnsupportedType(elementType, visitedTypes);
+ }
+
+ if (TryGetElementType(collectionType, out elementType))
+ {
+ return IsUnsupportedType(elementType, visitedTypes);
+ }
+
return false;
}
diff --git a/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Specs/BindingHelperInfo.cs b/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Specs/BindingHelperInfo.cs
index dfa3c5f1690487..5cdc40e011517d 100644
--- a/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Specs/BindingHelperInfo.cs
+++ b/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Specs/BindingHelperInfo.cs
@@ -131,6 +131,9 @@ bool TryRegisterCore()
}
case DictionarySpec dictionarySpec:
{
+ // Base case to avoid stack overflow for recursive object graphs.
+ _seenTransitiveTypes.Add(typeRef, true);
+
bool shouldRegister = _typeIndex.CanBindTo(typeRef) &&
TryRegisterTransitiveTypesForMethodGen(dictionarySpec.KeyTypeRef) &&
TryRegisterTransitiveTypesForMethodGen(dictionarySpec.ElementTypeRef) &&
@@ -145,6 +148,9 @@ bool TryRegisterCore()
}
case CollectionSpec collectionSpec:
{
+ // Base case to avoid stack overflow for recursive object graphs.
+ _seenTransitiveTypes.Add(typeRef, true);
+
if (_typeIndex.GetTypeSpec(collectionSpec.ElementTypeRef) is ComplexTypeSpec)
{
_namespaces.Add("System.Linq");
@@ -157,8 +163,7 @@ bool TryRegisterCore()
{
// Base case to avoid stack overflow for recursive object graphs.
// Register all object types for gen; we need to throw runtime exceptions in some cases.
- bool shouldRegister = true;
- _seenTransitiveTypes.Add(typeRef, shouldRegister);
+ _seenTransitiveTypes.Add(typeRef, true);
// List is used in generated code as a temp holder for formatting
// an error for config properties that don't map to object properties.
diff --git a/src/libraries/Microsoft.Extensions.Configuration.Binder/tests/Common/ConfigurationBinderTests.TestClasses.cs b/src/libraries/Microsoft.Extensions.Configuration.Binder/tests/Common/ConfigurationBinderTests.TestClasses.cs
index 28209c1c5deb7b..74de2804741042 100644
--- a/src/libraries/Microsoft.Extensions.Configuration.Binder/tests/Common/ConfigurationBinderTests.TestClasses.cs
+++ b/src/libraries/Microsoft.Extensions.Configuration.Binder/tests/Common/ConfigurationBinderTests.TestClasses.cs
@@ -189,6 +189,15 @@ public string Color
}
}
+ public sealed class TreeElement : Dictionary;
+
+ public record TypeWithRecursionThroughCollections
+ {
+ public TreeElement? Tree { get; set; }
+ public TreeElement?[]? Flat { get; set; }
+ public List? List { get; set; }
+ }
+
public record RecordWithArrayParameter(string[] Array);
public readonly record struct ReadonlyRecordStructTypeOptions(string Color, int Length);
diff --git a/src/libraries/Microsoft.Extensions.Configuration.Binder/tests/Common/ConfigurationBinderTests.cs b/src/libraries/Microsoft.Extensions.Configuration.Binder/tests/Common/ConfigurationBinderTests.cs
index 6ce085d5ec9cde..9e95c80643ed20 100644
--- a/src/libraries/Microsoft.Extensions.Configuration.Binder/tests/Common/ConfigurationBinderTests.cs
+++ b/src/libraries/Microsoft.Extensions.Configuration.Binder/tests/Common/ConfigurationBinderTests.cs
@@ -1544,6 +1544,87 @@ public void CanBindOnParametersAndProperties_RecordWithArrayConstructorParameter
Assert.Equal(new string[] { "a", "b", "c" }, options.Array);
}
+ ///
+ /// Test binding to recursive types using Dictionary or Collections.
+ /// This ensure no stack overflow will occur during the compilation through the source gen or at runtime.
+ ///
+ [Fact]
+ public void BindToRecursiveTypesTest()
+ {
+ string jsonConfig = @"{
+ ""Tree"": {
+ ""Branch1"": {
+ ""Leaf1"": {},
+ ""Leaf2"": {}
+ },
+ ""Branch2"": {
+ ""Leaf3"": {}
+ }
+ },
+ ""Flat"": [
+ {
+ ""Element1"": {
+ ""SubElement1"": {}
+ }
+ },
+ {
+ ""Element2"": {
+ ""SubElement2"": {}
+ }
+ },
+ {
+ ""Element3"": {}
+ }
+ ],
+ ""List"": [
+ {
+ ""Item1"": {
+ ""NestedItem1"": {}
+ }
+ },
+ {
+ ""Item2"": {}
+ },
+ ]
+ }";
+
+ var configuration = new ConfigurationBuilder()
+ .AddJsonStream(new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(jsonConfig)))
+ .Build();
+
+ var instance = new TypeWithRecursionThroughCollections();
+ configuration.Bind(instance);
+
+ // Validate the dictionary
+ Assert.NotNull(instance.Tree);
+ Assert.Equal(2, instance.Tree.Count);
+ Assert.NotNull(instance.Tree["Branch1"]);
+ Assert.Equal(2, instance.Tree["Branch1"].Count);
+ Assert.Equal(["Leaf1", "Leaf2"], instance.Tree["Branch1"].Keys);
+ Assert.Equal(["Leaf3"], instance.Tree["Branch2"].Keys);
+
+ // Validate the array
+ Assert.NotNull(instance.Flat);
+ Assert.Equal(3, instance.Flat.Length);
+ Assert.Equal(["Element1"], instance.Flat[0].Keys);
+ Assert.Equal(["Element2"], instance.Flat[1].Keys);
+ Assert.Equal(["Element3"], instance.Flat[2].Keys);
+ Assert.Equal(1, instance.Flat[0].Values.Count);
+ Assert.Equal(["SubElement1"], instance.Flat[0].Values.ToArray()[0].Keys);
+ Assert.Equal(1, instance.Flat[1].Values.Count);
+ Assert.Equal(["SubElement2"], instance.Flat[1].Values.ToArray()[0].Keys);
+ Assert.Equal(1, instance.Flat[2].Values.Count);
+
+ // Validate the List
+ Assert.NotNull(instance.Flat);
+ Assert.Equal(2, instance.List.Count);
+ Assert.Equal(["Item1"], instance.List[0].Keys);
+ Assert.Equal(["Item2"], instance.List[1].Keys);
+ Assert.Equal(1, instance.List[0].Values.Count);
+ Assert.Equal(["NestedItem1"], instance.List[0].Values.ToArray()[0].Keys);
+ Assert.Equal(1, instance.List[1].Values.Count);
+ }
+
[Fact]
public void CanBindReadonlyRecordStructOptions()
{
From 0ee150e25e32f2b0ec64350211c7298bcf4d9338 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Fri, 23 Aug 2024 12:36:29 -0700
Subject: [PATCH 053/748] [release/9.0] Ensure that constant folding of bitwise
operations for float/double are bitwise (#106830)
* Ensure that constant folding of bitwise operations for float/double are bitwise
* Ensure that the new header only methods are marked `inline` to avoid duplicate definitions
* Apply formatting patch
---------
Co-authored-by: Tanner Gooding
Co-authored-by: Jeff Schwartz
---
src/coreclr/jit/simd.h | 111 ++++++++++++++----
.../JitBlue/Runtime_106610/Runtime_106610.cs | 43 +++++++
.../Runtime_106610/Runtime_106610.csproj | 8 ++
3 files changed, 136 insertions(+), 26 deletions(-)
create mode 100644 src/tests/JIT/Regression/JitBlue/Runtime_106610/Runtime_106610.cs
create mode 100644 src/tests/JIT/Regression/JitBlue/Runtime_106610/Runtime_106610.csproj
diff --git a/src/coreclr/jit/simd.h b/src/coreclr/jit/simd.h
index 9aa1a36f682500..1a0748667b3a58 100644
--- a/src/coreclr/jit/simd.h
+++ b/src/coreclr/jit/simd.h
@@ -363,6 +363,11 @@ typedef simd64_t simd_t;
typedef simd16_t simd_t;
#endif
+inline bool IsUnaryBitwiseOperation(genTreeOps oper)
+{
+ return (oper == GT_LZCNT) || (oper == GT_NOT);
+}
+
template
TBase EvaluateUnaryScalarSpecialized(genTreeOps oper, TBase arg0)
{
@@ -404,27 +409,35 @@ TBase EvaluateUnaryScalarSpecialized(genTreeOps oper, TBase arg0)
template <>
inline float EvaluateUnaryScalarSpecialized(genTreeOps oper, float arg0)
{
- if (oper == GT_NEG)
+ switch (oper)
{
- return -arg0;
- }
+ case GT_NEG:
+ {
+ return -arg0;
+ }
- uint32_t arg0Bits = BitOperations::SingleToUInt32Bits(arg0);
- uint32_t resultBits = EvaluateUnaryScalarSpecialized(oper, arg0Bits);
- return BitOperations::UInt32BitsToSingle(resultBits);
+ default:
+ {
+ unreached();
+ }
+ }
}
template <>
inline double EvaluateUnaryScalarSpecialized(genTreeOps oper, double arg0)
{
- if (oper == GT_NEG)
+ switch (oper)
{
- return -arg0;
- }
+ case GT_NEG:
+ {
+ return -arg0;
+ }
- uint64_t arg0Bits = BitOperations::DoubleToUInt64Bits(arg0);
- uint64_t resultBits = EvaluateUnaryScalarSpecialized(oper, arg0Bits);
- return BitOperations::UInt64BitsToDouble(resultBits);
+ default:
+ {
+ unreached();
+ }
+ }
}
template
@@ -600,13 +613,37 @@ void EvaluateUnarySimd(genTreeOps oper, bool scalar, var_types baseType, TSimd*
{
case TYP_FLOAT:
{
- EvaluateUnarySimd(oper, scalar, result, arg0);
+ // Some operations are bitwise and we want to ensure inputs like
+ // sNaN are preserved rather than being converted to a qNaN when
+ // the CPU encounters them. So we check for and handle that early
+ // prior to extracting the element out of the vector value.
+
+ if (IsUnaryBitwiseOperation(oper))
+ {
+ EvaluateUnarySimd(oper, scalar, result, arg0);
+ }
+ else
+ {
+ EvaluateUnarySimd(oper, scalar, result, arg0);
+ }
break;
}
case TYP_DOUBLE:
{
- EvaluateUnarySimd(oper, scalar, result, arg0);
+ // Some operations are bitwise and we want to ensure inputs like
+ // sNaN are preserved rather than being converted to a qNaN when
+ // the CPU encounters them. So we check for and handle that early
+ // prior to extracting the element out of the vector value.
+
+ if (IsUnaryBitwiseOperation(oper))
+ {
+ EvaluateUnarySimd(oper, scalar, result, arg0);
+ }
+ else
+ {
+ EvaluateUnarySimd(oper, scalar, result, arg0);
+ }
break;
}
@@ -665,6 +702,12 @@ void EvaluateUnarySimd(genTreeOps oper, bool scalar, var_types baseType, TSimd*
}
}
+inline bool IsBinaryBitwiseOperation(genTreeOps oper)
+{
+ return (oper == GT_AND) || (oper == GT_AND_NOT) || (oper == GT_LSH) || (oper == GT_OR) || (oper == GT_ROL) ||
+ (oper == GT_ROR) || (oper == GT_RSH) || (oper == GT_RSZ) || (oper == GT_XOR);
+}
+
template
TBase EvaluateBinaryScalarRSZ(TBase arg0, TBase arg1)
{
@@ -902,11 +945,7 @@ inline float EvaluateBinaryScalarSpecialized(genTreeOps oper, float arg0,
default:
{
- uint32_t arg0Bits = BitOperations::SingleToUInt32Bits(arg0);
- uint32_t arg1Bits = BitOperations::SingleToUInt32Bits(arg1);
-
- uint32_t resultBits = EvaluateBinaryScalarSpecialized(oper, arg0Bits, arg1Bits);
- return BitOperations::UInt32BitsToSingle(resultBits);
+ unreached();
}
}
}
@@ -948,11 +987,7 @@ inline double EvaluateBinaryScalarSpecialized(genTreeOps oper, double ar
default:
{
- uint64_t arg0Bits = BitOperations::DoubleToUInt64Bits(arg0);
- uint64_t arg1Bits = BitOperations::DoubleToUInt64Bits(arg1);
-
- uint64_t resultBits = EvaluateBinaryScalarSpecialized(oper, arg0Bits, arg1Bits);
- return BitOperations::UInt64BitsToDouble(resultBits);
+ unreached();
}
}
}
@@ -1188,13 +1223,37 @@ void EvaluateBinarySimd(
{
case TYP_FLOAT:
{
- EvaluateBinarySimd(oper, scalar, result, arg0, arg1);
+ // Some operations are bitwise and we want to ensure inputs like
+ // sNaN are preserved rather than being converted to a qNaN when
+ // the CPU encounters them. So we check for and handle that early
+ // prior to extracting the element out of the vector value.
+
+ if (IsBinaryBitwiseOperation(oper))
+ {
+ EvaluateBinarySimd(oper, scalar, result, arg0, arg1);
+ }
+ else
+ {
+ EvaluateBinarySimd(oper, scalar, result, arg0, arg1);
+ }
break;
}
case TYP_DOUBLE:
{
- EvaluateBinarySimd(oper, scalar, result, arg0, arg1);
+ // Some operations are bitwise and we want to ensure inputs like
+ // sNaN are preserved rather than being converted to a qNaN when
+ // the CPU encounters them. So we check for and handle that early
+ // prior to extracting the element out of the vector value.
+
+ if (IsBinaryBitwiseOperation(oper))
+ {
+ EvaluateBinarySimd(oper, scalar, result, arg0, arg1);
+ }
+ else
+ {
+ EvaluateBinarySimd(oper, scalar, result, arg0, arg1);
+ }
break;
}
diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_106610/Runtime_106610.cs b/src/tests/JIT/Regression/JitBlue/Runtime_106610/Runtime_106610.cs
new file mode 100644
index 00000000000000..506451c29e6400
--- /dev/null
+++ b/src/tests/JIT/Regression/JitBlue/Runtime_106610/Runtime_106610.cs
@@ -0,0 +1,43 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+using System;
+using System.Runtime.CompilerServices;
+using System.Numerics;
+using System.Runtime.Intrinsics;
+using System.Runtime.Intrinsics.X86;
+using Xunit;
+
+// Generated by Fuzzlyn v2.2 on 2024-08-17 17:40:06
+// Run on X86 Windows
+// Seed: 1343518557351353159-vectort,vector128,vector256,vector512,x86aes,x86avx,x86avx2,x86avx512bw,x86avx512bwvl,x86avx512cd,x86avx512cdvl,x86avx512dq,x86avx512dqvl,x86avx512f,x86avx512fvl,x86avx512vbmi,x86avx512vbmivl,x86bmi1,x86bmi2,x86fma,x86lzcnt,x86pclmulqdq,x86popcnt,x86sse,x86sse2,x86sse3,x86sse41,x86sse42,x86ssse3,x86x86base
+// Reduced from 171.2 KiB to 0.6 KiB in 00:06:37
+// Debug: Outputs <4292870144, 0, 0, 0, 0, 0, 0, 0>
+// Release: Outputs <0, 0, 0, 0, 0, 0, 0, 0>
+
+public class C1
+{
+ public Vector256 F5;
+
+ public C1(Vector256 f5)
+ {
+ F5 = f5;
+ }
+}
+
+public class Runtime_106610
+{
+ [Fact]
+ public static void TestEntryPoint()
+ {
+ if (Avx512DQ.VL.IsSupported)
+ {
+ var vr4 = Vector256.Create(0);
+ var vr5 = Vector256.CreateScalar(1f);
+ var vr6 = Vector256.CreateScalar(-10f);
+ var vr7 = Avx.Or(vr5, vr6);
+ C1 vr8 = new C1(Avx512DQ.VL.Range(vr4, vr7, 0));
+ Assert.Equal(Vector256.CreateScalar(4292870144), vr8.F5.AsUInt32());
+ }
+ }
+}
diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_106610/Runtime_106610.csproj b/src/tests/JIT/Regression/JitBlue/Runtime_106610/Runtime_106610.csproj
new file mode 100644
index 00000000000000..de6d5e08882e86
--- /dev/null
+++ b/src/tests/JIT/Regression/JitBlue/Runtime_106610/Runtime_106610.csproj
@@ -0,0 +1,8 @@
+
+
+ True
+
+
+
+
+
From 37aa317a331f0b1aaf3cf9b4346f3a05e95a3454 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
<42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Fri, 23 Aug 2024 14:13:34 -0700
Subject: [PATCH 054/748] Update dependencies from
https://github.com/dotnet/emsdk build 20240822.4 (#106878)
Microsoft.SourceBuild.Intermediate.emsdk , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport
From Version 9.0.0-rc.1.24420.5 -> To Version 9.0.0-rc.2.24422.4
Co-authored-by: dotnet-maestro[bot]
---
eng/Version.Details.xml | 8 ++++----
eng/Versions.props | 2 +-
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index ba3644db0e0012..eb120c881924e0 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -64,14 +64,14 @@
c667bfea9cdbc5b5493e49e7ddc8dd635a217891
-
+ https://github.com/dotnet/emsdk
- 099439b38815c2f6a7821d54dfdc4a3fa16537d1
+ 84d642485896a97e0e443be75345c6bb1469a338
-
+ https://github.com/dotnet/emsdk
- 099439b38815c2f6a7821d54dfdc4a3fa16537d1
+ 84d642485896a97e0e443be75345c6bb1469a338
diff --git a/eng/Versions.props b/eng/Versions.props
index 91a91c7f539e23..6740feb993b6bd 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -239,7 +239,7 @@
Note: when the name is updated, make sure to update dependency name in eng/pipelines/common/xplat-setup.yml
like - DarcDependenciesChanged.Microsoft_NET_Workload_Emscripten_Current_Manifest-9_0_100_Transport
-->
- 9.0.0-rc.2.24421.3
+ 9.0.0-rc.2.24422.4$(MicrosoftNETWorkloadEmscriptenCurrentManifest90100TransportVersion)1.1.87-gba258badda
From 6e017babbef5af31bcca79e05d1a553374f0c45f Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
<42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Fri, 23 Aug 2024 14:13:48 -0700
Subject: [PATCH 055/748] Update dependencies from
https://github.com/dotnet/roslyn build 20240822.8 (#106879)
Microsoft.SourceBuild.Intermediate.roslyn , Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.CSharp , Microsoft.Net.Compilers.Toolset
From Version 4.12.0-2.24421.9 -> To Version 4.12.0-2.24422.8
Co-authored-by: dotnet-maestro[bot]
---
eng/Version.Details.xml | 16 ++++++++--------
eng/Versions.props | 6 +++---
2 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index eb120c881924e0..763aca271d8f7c 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -356,17 +356,17 @@
https://github.com/dotnet/runtime-assets6d82d2732e240983f23ebe53d3cfb8fcd3b3ec0d
-
+ https://github.com/dotnet/roslyn
- 08a167c19e5e04742b0922bdb1ea8046e9364f4b
+ d30a570bb6c9b2f204db9e6ee65fc5316449fd4e
-
+ https://github.com/dotnet/roslyn
- 08a167c19e5e04742b0922bdb1ea8046e9364f4b
+ d30a570bb6c9b2f204db9e6ee65fc5316449fd4e
-
+ https://github.com/dotnet/roslyn
- 08a167c19e5e04742b0922bdb1ea8046e9364f4b
+ d30a570bb6c9b2f204db9e6ee65fc5316449fd4ehttps://github.com/dotnet/roslyn-analyzers
@@ -377,9 +377,9 @@
fdb9965ce68c1f4e1c0ff301488adf9caa958615
-
+ https://github.com/dotnet/roslyn
- 08a167c19e5e04742b0922bdb1ea8046e9364f4b
+ d30a570bb6c9b2f204db9e6ee65fc5316449fd4e
diff --git a/eng/Versions.props b/eng/Versions.props
index 6740feb993b6bd..2ba171e2f03a38 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -42,9 +42,9 @@
Any tools that contribute to the design-time experience should use the MicrosoftCodeAnalysisVersion_LatestVS property above to ensure
they do not break the local dev experience.
-->
- 4.12.0-2.24421.9
- 4.12.0-2.24421.9
- 4.12.0-2.24421.9
+ 4.12.0-2.24422.8
+ 4.12.0-2.24422.8
+ 4.12.0-2.24422.8
- <_ComponentResources Include="microsoft-net-runtime-mono-tooling" Title=".NET 8.0 Shared Mobile Build Tools"
+ <_ComponentResources Include="microsoft-net-runtime-mono-tooling" Title=".NET 9.0 Shared Mobile Build Tools"
Description="Shared build tasks for mobile platform development."/>
- <_ComponentResources Include="wasm-tools" Title=".NET 8.0 WebAssembly Build Tools"
+ <_ComponentResources Include="wasm-tools" Title=".NET 9.0 WebAssembly Build Tools"
Description="Build tools for WebAssembly ahead-of-time (AoT) compilation and native linking."/>
- <_ComponentResources Include="wasm-experimental" Title=".NET 8.0 WebAssembly Experimental Tools"
+ <_ComponentResources Include="wasm-experimental" Title=".NET 9.0 WebAssembly Experimental Tools"
Description=".NET 8.0 WebAssembly experimental tooling"/>
- <_ComponentResources Include="wasi-experimental" Title=".NET 8.0 Wasi Experimental"
+ <_ComponentResources Include="wasi-experimental" Title=".NET 9.0 Wasi Experimental"
+ Description=".NET 9.0 Experimental SDK and tooling for WASI"/>
+ <_ComponentResources Include="microsoft-net-runtime-android" Title=".NET 9.0 Android Build Tools"
+ Description="Build tools for Android compilation and native linking."/>
+ <_ComponentResources Include="microsoft-net-runtime-android-aot" Title=".NET 9.0 Android Build Tools (AoT)"
+ Description="Build tools for Android ahead-of-time (AoT) compilation and native linking."/>
+ <_ComponentResources Include="microsoft-net-runtime-ios" Title=".NET 9.0 iOS Build Tools"
+ Description="Build tools for iOS compilation and native linking."/>
+ <_ComponentResources Include="microsoft-net-runtime-tvos" Title=".NET 9.0 tvOS Build Tools"
+ Description="Build tools for tvOS compilation and native linking."/>
+ <_ComponentResources Include="microsoft-net-runtime-maccatalyst" Title=".NET 9.0 Mac Catalyst Build Tools"
+ Description="Build tools for Mac Catalyst compilation and native linking."/>
+ <_ComponentResources Include="runtimes-ios" Title=".NET 9.0 iOS Runtimes"
+ Description=".NET 9.0 runtime components for iOS execution."/>
+ <_ComponentResources Include="runtimes-tvos" Title=".NET 9.0 tvOS Build Tools"
+ Description=".NET 9.0 runtime components for tvOS execution."/>
+ <_ComponentResources Include="runtimes-maccatalyst" Title=".NET 9.0 Mac Catalyst Build Tools"
+ Description=".NET 9.0 runtime components for Mac Catalyst execution."/>
+ <_ComponentResources Include="runtimes-windows" Title=".NET 9.0 Windows Runtimes"
+ Description=".NET 9.0 runtime components for Windows execution."/>
+
+ <_ComponentResources Include="microsoft-net-runtime-mono-tooling-net8" Title=".NET 8.0 Shared Mobile Build Tools"
+ Description="Shared build tasks for mobile platform development."/>
+ <_ComponentResources Include="wasm-tools-net8" Title=".NET 8.0 WebAssembly Build Tools"
+ Description="Build tools for WebAssembly ahead-of-time (AoT) compilation and native linking."/>
+ <_ComponentResources Include="wasm-experimental-net8" Title=".NET 8.0 WebAssembly Experimental Tools"
+ Description=".NET 8.0 WebAssembly experimental tooling"/>
+ <_ComponentResources Include="wasi-experimental-net8" Title=".NET 8.0 Wasi Experimental"
Description=".NET 8.0 Experimental SDK and tooling for WASI"/>
- <_ComponentResources Include="microsoft-net-runtime-android" Title=".NET 8.0 Android Build Tools"
+ <_ComponentResources Include="microsoft-net-runtime-android-net8" Title=".NET 8.0 Android Build Tools"
Description="Build tools for Android compilation and native linking."/>
- <_ComponentResources Include="microsoft-net-runtime-android-aot" Title=".NET 8.0 Android Build Tools (AoT)"
+ <_ComponentResources Include="microsoft-net-runtime-android-aot-net8" Title=".NET 8.0 Android Build Tools (AoT)"
Description="Build tools for Android ahead-of-time (AoT) compilation and native linking."/>
- <_ComponentResources Include="microsoft-net-runtime-ios" Title=".NET 8.0 iOS Build Tools"
+ <_ComponentResources Include="microsoft-net-runtime-ios-net8" Title=".NET 8.0 iOS Build Tools"
Description="Build tools for iOS compilation and native linking."/>
- <_ComponentResources Include="microsoft-net-runtime-tvos" Title=".NET 8.0 tvOS Build Tools"
+ <_ComponentResources Include="microsoft-net-runtime-tvos-net8" Title=".NET 8.0 tvOS Build Tools"
Description="Build tools for tvOS compilation and native linking."/>
- <_ComponentResources Include="microsoft-net-runtime-maccatalyst" Title=".NET 8.0 Mac Catalyst Build Tools"
+ <_ComponentResources Include="microsoft-net-runtime-maccatalyst-net8" Title=".NET 8.0 Mac Catalyst Build Tools"
Description="Build tools for Mac Catalyst compilation and native linking."/>
- <_ComponentResources Include="runtimes-ios" Title=".NET 8.0 iOS Runtimes"
+ <_ComponentResources Include="runtimes-ios-net8" Title=".NET 8.0 iOS Runtimes"
Description=".NET 8.0 runtime components for iOS execution."/>
- <_ComponentResources Include="runtimes-tvos" Title=".NET 8.0 tvOS Build Tools"
+ <_ComponentResources Include="runtimes-tvos-net8" Title=".NET 8.0 tvOS Build Tools"
Description=".NET 8.0 runtime components for tvOS execution."/>
- <_ComponentResources Include="runtimes-maccatalyst" Title=".NET 8.0 Mac Catalyst Build Tools"
+ <_ComponentResources Include="runtimes-maccatalyst-net8" Title=".NET 8.0 Mac Catalyst Build Tools"
Description=".NET 8.0 runtime components for Mac Catalyst execution."/>
- <_ComponentResources Include="runtimes-windows" Title=".NET 8.0 Windows Runtimes"
+ <_ComponentResources Include="runtimes-windows-net8" Title=".NET 8.0 Windows Runtimes"
Description=".NET 8.0 runtime components for Windows execution."/>
<_ComponentResources Include="microsoft-net-runtime-mono-tooling-net7" Title=".NET 7.0 Shared Mobile Build Tools"
From f5456c7804dfd2153cd5cda4054bcde50b153a66 Mon Sep 17 00:00:00 2001
From: Eric StJohn
Date: Mon, 26 Aug 2024 16:08:03 -0700
Subject: [PATCH 064/748] Port fix for GetParts from .NETFramework
Improve performance when getting parts from a package
---
.../src/System/IO/Packaging/Package.cs | 62 ++++++++++++++++---
1 file changed, 55 insertions(+), 7 deletions(-)
diff --git a/src/libraries/System.IO.Packaging/src/System/IO/Packaging/Package.cs b/src/libraries/System.IO.Packaging/src/System/IO/Packaging/Package.cs
index f2f92345d3f7e9..f05e360c17c652 100644
--- a/src/libraries/System.IO.Packaging/src/System/IO/Packaging/Package.cs
+++ b/src/libraries/System.IO.Packaging/src/System/IO/Packaging/Package.cs
@@ -401,32 +401,63 @@ public PackagePartCollection GetParts()
PackUriHelper.ValidatedPartUri partUri;
+ var uriComparer = Comparer.Default;
+
+ //Sorting the parts array which takes O(n log n) time.
+ Array.Sort(parts, Comparer.Create((partA, partB) => uriComparer.Compare((PackUriHelper.ValidatedPartUri)partA.Uri, (PackUriHelper.ValidatedPartUri)partB.Uri)));
+
//We need this dictionary to detect any collisions that might be present in the
//list of parts that was given to us from the underlying physical layer, as more than one
//partnames can be mapped to the same normalized part.
//Note: We cannot use the _partList member variable, as that gets updated incrementally and so its
//not possible to find the collisions using that list.
//PackUriHelper.ValidatedPartUri implements the IComparable interface.
- Dictionary seenPartUris = new Dictionary(parts.Length);
+ Dictionary> partDictionary = new Dictionary>(parts.Length);
+ List partIndex = new List(parts.Length);
for (int i = 0; i < parts.Length; i++)
{
partUri = (PackUriHelper.ValidatedPartUri)parts[i].Uri;
- if (seenPartUris.ContainsKey(partUri))
+ string normalizedPartName = partUri.NormalizedPartUriString;
+
+ if (partDictionary.ContainsKey(normalizedPartName))
+ {
throw new FileFormatException(SR.BadPackageFormat);
+ }
else
{
- // Add the part to the list of URIs that we have already seen
- seenPartUris.Add(partUri, parts[i]);
+ //since we will arive to this line of code after the parts are already sorted
+ string? precedingPartName = null;
+
+ if (partIndex.Count > 0)
+ {
+ precedingPartName = (partIndex[partIndex.Count - 1]);
+ }
+
+ // Add the part to the dictionary
+ partDictionary.Add(normalizedPartName, new KeyValuePair(partUri, parts[i]));
- if (!_partList.ContainsKey(partUri))
+ if (precedingPartName != null
+ && normalizedPartName.StartsWith(precedingPartName, StringComparison.Ordinal)
+ && normalizedPartName.Length > precedingPartName.Length
+ && normalizedPartName[precedingPartName.Length] == PackUriHelper.ForwardSlashChar)
{
- // Add the part to the _partList if there is no prefix collision
- AddIfNoPrefixCollisionDetected(partUri, parts[i]);
+ //Removing the invalid entry from the _partList.
+ partDictionary.Remove(normalizedPartName);
+
+ throw new InvalidOperationException(SR.PartNamePrefixExists);
}
+
+ //adding entry to partIndex to keep track of last element being added.
+ //since parts are already sorted, last element in partIndex list will point to preceeding element to the current.
+ partIndex.Add(partUri.NormalizedPartUriString);
}
}
+
+ //copying parts from partdictionary to partlist
+ CopyPartDicitonaryToPartList(partDictionary, partIndex);
+
_partCollection = new PackagePartCollection(_partList);
}
return _partCollection;
@@ -1173,6 +1204,23 @@ private PackageRelationshipCollection GetRelationshipsHelper(string? filterStrin
return new PackageRelationshipCollection(_relationships, filterString);
}
+ private void CopyPartDicitonaryToPartList(Dictionary> partDictionary, List partIndex)
+ {
+ //Clearing _partList before copying in new data. Reassigning the variable, assuming the previous object to be garbage collected.
+ //ideally addition to sortedlist takes O(n) but since we have sorted data and also we defined the size, it will take O(log n) per addition
+ //total time complexity for this function will be O(n log n)
+ _partList = new SortedList(partDictionary.Count);
+
+ //Since partIndex is created from a sorted parts array we are sure that partIndex
+ //will have items in same order
+ foreach (var id in partIndex)
+ {
+ //retrieving object from partDictionary hashtable
+ var keyValue = partDictionary[id];
+ _partList.Add(keyValue.Key, keyValue.Value);
+ }
+ }
+
#endregion Private Methods
#region Private Members
From a92301b89d02bd4474829126c8e4bd2c63280fd6 Mon Sep 17 00:00:00 2001
From: Aman Khalid
Date: Tue, 27 Aug 2024 15:30:58 +0000
Subject: [PATCH 065/748] Merge #106765 (#107006)
---
src/coreclr/jit/compiler.h | 3 +-
src/coreclr/jit/hwintrinsic.cpp | 115 +++++++++++-----
src/coreclr/jit/hwintrinsic.h | 10 ++
src/coreclr/jit/hwintrinsicarm64.cpp | 14 +-
src/coreclr/jit/hwintrinsiclistarm64.h | 2 +-
src/coreclr/jit/hwintrinsicxarch.cpp | 2 +-
.../JitBlue/Runtime_106546/Runtime_106546.cs | 127 ++++++++++++++++++
.../Runtime_106546/Runtime_106546.csproj | 9 ++
8 files changed, 241 insertions(+), 41 deletions(-)
create mode 100644 src/tests/JIT/Regression/JitBlue/Runtime_106546/Runtime_106546.cs
create mode 100644 src/tests/JIT/Regression/JitBlue/Runtime_106546/Runtime_106546.csproj
diff --git a/src/coreclr/jit/compiler.h b/src/coreclr/jit/compiler.h
index b748f3b81138a3..3343ab23273298 100644
--- a/src/coreclr/jit/compiler.h
+++ b/src/coreclr/jit/compiler.h
@@ -3446,7 +3446,6 @@ class Compiler
GenTreeHWIntrinsic* gtNewScalarHWIntrinsicNode(
var_types type, GenTree* op1, GenTree* op2, GenTree* op3, NamedIntrinsic hwIntrinsicID);
CorInfoType getBaseJitTypeFromArgIfNeeded(NamedIntrinsic intrinsic,
- CORINFO_CLASS_HANDLE clsHnd,
CORINFO_SIG_INFO* sig,
CorInfoType simdBaseJitType);
@@ -4718,7 +4717,7 @@ class Compiler
GenTree* getArgForHWIntrinsic(var_types argType, CORINFO_CLASS_HANDLE argClass);
GenTree* impNonConstFallback(NamedIntrinsic intrinsic, var_types simdType, CorInfoType simdBaseJitType);
GenTree* addRangeCheckIfNeeded(
- NamedIntrinsic intrinsic, GenTree* immOp, bool mustExpand, int immLowerBound, int immUpperBound);
+ NamedIntrinsic intrinsic, GenTree* immOp, int immLowerBound, int immUpperBound);
GenTree* addRangeCheckForHWIntrinsic(GenTree* immOp, int immLowerBound, int immUpperBound);
void getHWIntrinsicImmOps(NamedIntrinsic intrinsic,
diff --git a/src/coreclr/jit/hwintrinsic.cpp b/src/coreclr/jit/hwintrinsic.cpp
index 9d3db42ec4c097..ca045d8bb7acfc 100644
--- a/src/coreclr/jit/hwintrinsic.cpp
+++ b/src/coreclr/jit/hwintrinsic.cpp
@@ -718,7 +718,6 @@ uint8_t TernaryLogicInfo::GetTernaryControlByte(const TernaryLogicInfo& info, ui
//
// Arguments:
// intrinsic -- id of the intrinsic function.
-// clsHnd -- class handle containing the intrinsic function.
// method -- method handle of the intrinsic function.
// sig -- signature of the intrinsic call.
// simdBaseJitType -- Predetermined simdBaseJitType, could be CORINFO_TYPE_UNDEF
@@ -726,10 +725,9 @@ uint8_t TernaryLogicInfo::GetTernaryControlByte(const TernaryLogicInfo& info, ui
// Return Value:
// The basetype of intrinsic of it can be fetched from 1st or 2nd argument, else return baseType unmodified.
//
-CorInfoType Compiler::getBaseJitTypeFromArgIfNeeded(NamedIntrinsic intrinsic,
- CORINFO_CLASS_HANDLE clsHnd,
- CORINFO_SIG_INFO* sig,
- CorInfoType simdBaseJitType)
+CorInfoType Compiler::getBaseJitTypeFromArgIfNeeded(NamedIntrinsic intrinsic,
+ CORINFO_SIG_INFO* sig,
+ CorInfoType simdBaseJitType)
{
if (HWIntrinsicInfo::BaseTypeFromSecondArg(intrinsic) || HWIntrinsicInfo::BaseTypeFromFirstArg(intrinsic))
{
@@ -1332,7 +1330,6 @@ GenTree* Compiler::getArgForHWIntrinsic(var_types argType, CORINFO_CLASS_HANDLE
// Arguments:
// intrinsic -- intrinsic ID
// immOp -- the immediate operand of the intrinsic
-// mustExpand -- true if the compiler is compiling the fallback(GT_CALL) of this intrinsics
// immLowerBound -- lower incl. bound for a value of the immediate operand (for a non-full-range imm-intrinsic)
// immUpperBound -- upper incl. bound for a value of the immediate operand (for a non-full-range imm-intrinsic)
//
@@ -1340,21 +1337,19 @@ GenTree* Compiler::getArgForHWIntrinsic(var_types argType, CORINFO_CLASS_HANDLE
// add a GT_BOUNDS_CHECK node for non-full-range imm-intrinsic, which would throw ArgumentOutOfRangeException
// when the imm-argument is not in the valid range
//
-GenTree* Compiler::addRangeCheckIfNeeded(
- NamedIntrinsic intrinsic, GenTree* immOp, bool mustExpand, int immLowerBound, int immUpperBound)
+GenTree* Compiler::addRangeCheckIfNeeded(NamedIntrinsic intrinsic, GenTree* immOp, int immLowerBound, int immUpperBound)
{
assert(immOp != nullptr);
// Full-range imm-intrinsics do not need the range-check
// because the imm-parameter of the intrinsic method is a byte.
// AVX2 Gather intrinsics no not need the range-check
// because their imm-parameter have discrete valid values that are handle by managed code
- if (mustExpand && HWIntrinsicInfo::isImmOp(intrinsic, immOp)
+ if (!immOp->IsCnsIntOrI() && HWIntrinsicInfo::isImmOp(intrinsic, immOp)
#ifdef TARGET_XARCH
&& !HWIntrinsicInfo::isAVX2GatherIntrinsic(intrinsic) && !HWIntrinsicInfo::HasFullRangeImm(intrinsic)
#endif
)
{
- assert(!immOp->IsCnsIntOrI());
assert(varTypeIsIntegral(immOp));
return addRangeCheckForHWIntrinsic(immOp, immLowerBound, immUpperBound);
@@ -1596,7 +1591,6 @@ bool Compiler::CheckHWIntrinsicImmRange(NamedIntrinsic intrinsic,
if (immOutOfRange)
{
- assert(!mustExpand);
// The imm-HWintrinsics that do not accept all imm8 values may throw
// ArgumentOutOfRangeException when the imm argument is not in the valid range,
// unless the intrinsic can be transformed into one that does accept all imm8 values
@@ -1764,7 +1758,8 @@ GenTree* Compiler::impHWIntrinsic(NamedIntrinsic intrinsic,
}
}
- simdBaseJitType = getBaseJitTypeFromArgIfNeeded(intrinsic, clsHnd, sig, simdBaseJitType);
+ simdBaseJitType = getBaseJitTypeFromArgIfNeeded(intrinsic, sig, simdBaseJitType);
+ unsigned simdSize = 0;
if (simdBaseJitType == CORINFO_TYPE_UNDEF)
{
@@ -1783,7 +1778,7 @@ GenTree* Compiler::impHWIntrinsic(NamedIntrinsic intrinsic,
simdBaseJitType = getBaseJitTypeAndSizeOfSIMDType(clsHnd, &sizeBytes);
-#if defined(TARGET_ARM64)
+#ifdef TARGET_ARM64
if (simdBaseJitType == CORINFO_TYPE_UNDEF && HWIntrinsicInfo::HasScalarInputVariant(intrinsic))
{
// Did not find a valid vector type. The intrinsic has alternate scalar version. Switch to that.
@@ -1799,12 +1794,40 @@ GenTree* Compiler::impHWIntrinsic(NamedIntrinsic intrinsic,
assert(simdBaseJitType != CORINFO_TYPE_VALUECLASS);
}
else
-#endif
+#endif // TARGET_ARM64
{
assert((category == HW_Category_Special) || (category == HW_Category_Helper) || (sizeBytes != 0));
}
}
}
+#ifdef TARGET_ARM64
+ else if ((simdBaseJitType == CORINFO_TYPE_VALUECLASS) && (HWIntrinsicInfo::BaseTypeFromValueTupleArg(intrinsic)))
+ {
+ // If HW_Flag_BaseTypeFromValueTupleArg is set, one of the base type position flags must be set.
+ // There is no point to using this flag if the SIMD size is known at compile-time.
+ assert(HWIntrinsicInfo::BaseTypeFromFirstArg(intrinsic) || HWIntrinsicInfo::BaseTypeFromSecondArg(intrinsic));
+ assert(!HWIntrinsicInfo::tryLookupSimdSize(intrinsic, &simdSize));
+
+ CORINFO_ARG_LIST_HANDLE arg = sig->args;
+
+ if (HWIntrinsicInfo::BaseTypeFromSecondArg(intrinsic))
+ {
+ arg = info.compCompHnd->getArgNext(arg);
+ }
+
+ CORINFO_CLASS_HANDLE argClass = info.compCompHnd->getArgClass(sig, arg);
+ INDEBUG(unsigned fieldCount = info.compCompHnd->getClassNumInstanceFields(argClass));
+ assert(fieldCount > 1);
+
+ CORINFO_CLASS_HANDLE classHnd;
+ CORINFO_FIELD_HANDLE fieldHandle = info.compCompHnd->getFieldInClass(argClass, 0);
+ CorInfoType fieldType = info.compCompHnd->getFieldType(fieldHandle, &classHnd);
+ assert(isIntrinsicType(classHnd));
+
+ simdBaseJitType = getBaseJitTypeAndSizeOfSIMDType(classHnd, &simdSize);
+ assert(simdSize > 0);
+ }
+#endif // TARGET_ARM64
// Immediately return if the category is other than scalar/special and this is not a supported base type.
if ((category != HW_Category_Special) && (category != HW_Category_Scalar) && !HWIntrinsicInfo::isScalarIsa(isa) &&
@@ -1827,7 +1850,9 @@ GenTree* Compiler::impHWIntrinsic(NamedIntrinsic intrinsic,
#endif // TARGET_XARCH
}
- const unsigned simdSize = HWIntrinsicInfo::lookupSimdSize(this, intrinsic, sig);
+ // We may have already determined simdSize for intrinsics that require special handling.
+ // If so, skip the lookup.
+ simdSize = (simdSize == 0) ? HWIntrinsicInfo::lookupSimdSize(this, intrinsic, sig) : simdSize;
HWIntrinsicSignatureReader sigReader;
sigReader.Read(info.compCompHnd, sig);
@@ -1859,15 +1884,30 @@ GenTree* Compiler::impHWIntrinsic(NamedIntrinsic intrinsic,
{
return impNonConstFallback(intrinsic, retType, simdBaseJitType);
}
- else if (!opts.OptimizationEnabled())
+ else if (immOp2->IsCnsIntOrI())
{
- // Only enable late stage rewriting if optimizations are enabled
- // as we won't otherwise encounter a constant at the later point
- return nullptr;
+ // If we know the immediate is out-of-range,
+ // convert the intrinsic into a user call (or throw if we must expand)
+ return impUnsupportedNamedIntrinsic(CORINFO_HELP_THROW_ARGUMENTOUTOFRANGEEXCEPTION, method, sig,
+ mustExpand);
}
else
{
- setMethodHandle = true;
+ // The immediate is unknown, and we aren't using a fallback intrinsic.
+ // In this case, CheckHWIntrinsicImmRange should not return false for intrinsics that must expand.
+ assert(!mustExpand);
+
+ if (opts.OptimizationEnabled())
+ {
+ // Only enable late stage rewriting if optimizations are enabled
+ // as we won't otherwise encounter a constant at the later point
+ setMethodHandle = true;
+ }
+ else
+ {
+ // Just convert to a user call
+ return nullptr;
+ }
}
}
}
@@ -1896,15 +1936,30 @@ GenTree* Compiler::impHWIntrinsic(NamedIntrinsic intrinsic,
{
return impNonConstFallback(intrinsic, retType, simdBaseJitType);
}
- else if (!opts.OptimizationEnabled())
+ else if (immOp1->IsCnsIntOrI())
{
- // Only enable late stage rewriting if optimizations are enabled
- // as we won't otherwise encounter a constant at the later point
- return nullptr;
+ // If we know the immediate is out-of-range,
+ // convert the intrinsic into a user call (or throw if we must expand)
+ return impUnsupportedNamedIntrinsic(CORINFO_HELP_THROW_ARGUMENTOUTOFRANGEEXCEPTION, method, sig,
+ mustExpand);
}
else
{
- setMethodHandle = true;
+ // The immediate is unknown, and we aren't using a fallback intrinsic.
+ // In this case, CheckHWIntrinsicImmRange should not return false for intrinsics that must expand.
+ assert(!mustExpand);
+
+ if (opts.OptimizationEnabled())
+ {
+ // Only enable late stage rewriting if optimizations are enabled
+ // as we won't otherwise encounter a constant at the later point
+ setMethodHandle = true;
+ }
+ else
+ {
+ // Just convert to a user call
+ return nullptr;
+ }
}
}
}
@@ -1960,7 +2015,7 @@ GenTree* Compiler::impHWIntrinsic(NamedIntrinsic intrinsic,
{
case 4:
op4 = getArgForHWIntrinsic(sigReader.GetOp4Type(), sigReader.op4ClsHnd);
- op4 = addRangeCheckIfNeeded(intrinsic, op4, mustExpand, immLowerBound, immUpperBound);
+ op4 = addRangeCheckIfNeeded(intrinsic, op4, immLowerBound, immUpperBound);
op3 = getArgForHWIntrinsic(sigReader.GetOp3Type(), sigReader.op3ClsHnd);
op2 = getArgForHWIntrinsic(sigReader.GetOp2Type(), sigReader.op2ClsHnd);
op1 = getArgForHWIntrinsic(sigReader.GetOp1Type(), sigReader.op1ClsHnd);
@@ -1974,7 +2029,7 @@ GenTree* Compiler::impHWIntrinsic(NamedIntrinsic intrinsic,
case 2:
op2 = getArgForHWIntrinsic(sigReader.GetOp2Type(), sigReader.op2ClsHnd);
- op2 = addRangeCheckIfNeeded(intrinsic, op2, mustExpand, immLowerBound, immUpperBound);
+ op2 = addRangeCheckIfNeeded(intrinsic, op2, immLowerBound, immUpperBound);
op1 = getArgForHWIntrinsic(sigReader.GetOp1Type(), sigReader.op1ClsHnd);
break;
@@ -2144,7 +2199,7 @@ GenTree* Compiler::impHWIntrinsic(NamedIntrinsic intrinsic,
#ifdef TARGET_ARM64
if (intrinsic == NI_AdvSimd_LoadAndInsertScalar)
{
- op2 = addRangeCheckIfNeeded(intrinsic, op2, mustExpand, immLowerBound, immUpperBound);
+ op2 = addRangeCheckIfNeeded(intrinsic, op2, immLowerBound, immUpperBound);
if (op1->OperIs(GT_CAST))
{
@@ -2158,12 +2213,12 @@ GenTree* Compiler::impHWIntrinsic(NamedIntrinsic intrinsic,
}
else if ((intrinsic == NI_AdvSimd_Insert) || (intrinsic == NI_AdvSimd_InsertScalar))
{
- op2 = addRangeCheckIfNeeded(intrinsic, op2, mustExpand, immLowerBound, immUpperBound);
+ op2 = addRangeCheckIfNeeded(intrinsic, op2, immLowerBound, immUpperBound);
}
else
#endif
{
- op3 = addRangeCheckIfNeeded(intrinsic, op3, mustExpand, immLowerBound, immUpperBound);
+ op3 = addRangeCheckIfNeeded(intrinsic, op3, immLowerBound, immUpperBound);
}
retNode = isScalar ? gtNewScalarHWIntrinsicNode(nodeRetType, op1, op2, op3, intrinsic)
diff --git a/src/coreclr/jit/hwintrinsic.h b/src/coreclr/jit/hwintrinsic.h
index 15e942a4157089..8ee5b656e9d20f 100644
--- a/src/coreclr/jit/hwintrinsic.h
+++ b/src/coreclr/jit/hwintrinsic.h
@@ -246,6 +246,10 @@ enum HWIntrinsicFlag : unsigned int
// (instead of merging).
HW_Flag_ZeroingMaskedOperation = 0x8000000,
+ // The intrinsic has an overload where the base type is extracted from a ValueTuple of SIMD types
+ // (HW_Flag_BaseTypeFrom{First, Second}Arg must also be set to denote the position of the ValueTuple)
+ HW_Flag_BaseTypeFromValueTupleArg = 0x10000000,
+
#endif // TARGET_XARCH
// The intrinsic is a FusedMultiplyAdd intrinsic
@@ -1001,6 +1005,12 @@ struct HWIntrinsicInfo
return (flags & HW_Flag_ZeroingMaskedOperation) != 0;
}
+ static bool BaseTypeFromValueTupleArg(NamedIntrinsic id)
+ {
+ const HWIntrinsicFlag flags = lookupFlags(id);
+ return (flags & HW_Flag_BaseTypeFromValueTupleArg) != 0;
+ }
+
static NamedIntrinsic GetScalarInputVariant(NamedIntrinsic id)
{
assert(HasScalarInputVariant(id));
diff --git a/src/coreclr/jit/hwintrinsicarm64.cpp b/src/coreclr/jit/hwintrinsicarm64.cpp
index b159e767a3d774..afe933da87c3fc 100644
--- a/src/coreclr/jit/hwintrinsicarm64.cpp
+++ b/src/coreclr/jit/hwintrinsicarm64.cpp
@@ -2466,7 +2466,7 @@ GenTree* Compiler::impSpecialIntrinsic(NamedIntrinsic intrinsic,
assert(HWIntrinsicInfo::isImmOp(intrinsic, op3));
HWIntrinsicInfo::lookupImmBounds(intrinsic, simdSize, simdBaseType, 1, &immLowerBound, &immUpperBound);
- op3 = addRangeCheckIfNeeded(intrinsic, op3, (!op3->IsCnsIntOrI()), immLowerBound, immUpperBound);
+ op3 = addRangeCheckIfNeeded(intrinsic, op3, immLowerBound, immUpperBound);
argType = JITtype2varType(strip(info.compCompHnd->getArgType(sig, arg1, &argClass)));
op1 = getArgForHWIntrinsic(argType, argClass);
@@ -2939,11 +2939,11 @@ GenTree* Compiler::impSpecialIntrinsic(NamedIntrinsic intrinsic,
assert(HWIntrinsicInfo::isImmOp(intrinsic, op2));
HWIntrinsicInfo::lookupImmBounds(intrinsic, simdSize, simdBaseType, 1, &immLowerBound, &immUpperBound);
- op2 = addRangeCheckIfNeeded(intrinsic, op2, (!op2->IsCnsIntOrI()), immLowerBound, immUpperBound);
+ op2 = addRangeCheckIfNeeded(intrinsic, op2, immLowerBound, immUpperBound);
assert(HWIntrinsicInfo::isImmOp(intrinsic, op3));
HWIntrinsicInfo::lookupImmBounds(intrinsic, simdSize, simdBaseType, 2, &immLowerBound, &immUpperBound);
- op3 = addRangeCheckIfNeeded(intrinsic, op3, (!op3->IsCnsIntOrI()), immLowerBound, immUpperBound);
+ op3 = addRangeCheckIfNeeded(intrinsic, op3, immLowerBound, immUpperBound);
retNode = isScalar ? gtNewScalarHWIntrinsicNode(retType, op1, op2, op3, intrinsic)
: gtNewSimdHWIntrinsicNode(retType, op1, op2, op3, intrinsic, simdBaseJitType, simdSize);
@@ -3010,7 +3010,7 @@ GenTree* Compiler::impSpecialIntrinsic(NamedIntrinsic intrinsic,
op3 = getArgForHWIntrinsic(argType, argClass);
assert(HWIntrinsicInfo::isImmOp(intrinsic, op3));
- op3 = addRangeCheckIfNeeded(intrinsic, op3, mustExpand, immLowerBound, immUpperBound);
+ op3 = addRangeCheckIfNeeded(intrinsic, op3, immLowerBound, immUpperBound);
argType = JITtype2varType(strip(info.compCompHnd->getArgType(sig, arg2, &argClass)));
op2 = getArgForHWIntrinsic(argType, argClass);
@@ -3040,7 +3040,7 @@ GenTree* Compiler::impSpecialIntrinsic(NamedIntrinsic intrinsic,
op4 = getArgForHWIntrinsic(argType, argClass);
assert(HWIntrinsicInfo::isImmOp(intrinsic, op4));
- op4 = addRangeCheckIfNeeded(intrinsic, op4, mustExpand, immLowerBound, immUpperBound);
+ op4 = addRangeCheckIfNeeded(intrinsic, op4, immLowerBound, immUpperBound);
argType = JITtype2varType(strip(info.compCompHnd->getArgType(sig, arg3, &argClass)));
op3 = getArgForHWIntrinsic(argType, argClass);
@@ -3108,12 +3108,12 @@ GenTree* Compiler::impSpecialIntrinsic(NamedIntrinsic intrinsic,
argType = JITtype2varType(strip(info.compCompHnd->getArgType(sig, arg5, &argClass)));
GenTree* op5 = getArgForHWIntrinsic(argType, argClass);
assert(HWIntrinsicInfo::isImmOp(intrinsic, op5));
- op5 = addRangeCheckIfNeeded(intrinsic, op5, mustExpand, imm1LowerBound, imm1UpperBound);
+ op5 = addRangeCheckIfNeeded(intrinsic, op5, imm1LowerBound, imm1UpperBound);
argType = JITtype2varType(strip(info.compCompHnd->getArgType(sig, arg4, &argClass)));
op4 = getArgForHWIntrinsic(argType, argClass);
assert(HWIntrinsicInfo::isImmOp(intrinsic, op4));
- op4 = addRangeCheckIfNeeded(intrinsic, op4, mustExpand, imm2LowerBound, imm2UpperBound);
+ op4 = addRangeCheckIfNeeded(intrinsic, op4, imm2LowerBound, imm2UpperBound);
argType = JITtype2varType(strip(info.compCompHnd->getArgType(sig, arg3, &argClass)));
op3 = getArgForHWIntrinsic(argType, argClass);
diff --git a/src/coreclr/jit/hwintrinsiclistarm64.h b/src/coreclr/jit/hwintrinsiclistarm64.h
index c3649cb64beb55..5f25e123086f38 100644
--- a/src/coreclr/jit/hwintrinsiclistarm64.h
+++ b/src/coreclr/jit/hwintrinsiclistarm64.h
@@ -487,7 +487,7 @@ HARDWARE_INTRINSIC(AdvSimd, SignExtendWideningLower,
HARDWARE_INTRINSIC(AdvSimd, SignExtendWideningUpper, 16, 1, {INS_sxtl2, INS_invalid, INS_sxtl2, INS_invalid, INS_sxtl2, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_SIMD, HW_Flag_BaseTypeFromFirstArg)
HARDWARE_INTRINSIC(AdvSimd, SqrtScalar, 8, 1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_fsqrt, INS_fsqrt}, HW_Category_SIMD, HW_Flag_SIMDScalar)
HARDWARE_INTRINSIC(AdvSimd, Store, 8, 2, {INS_st1_2regs, INS_st1_2regs, INS_st1_2regs, INS_st1_2regs, INS_st1_2regs, INS_st1_2regs, INS_invalid, INS_invalid, INS_st1_2regs, INS_invalid}, HW_Category_MemoryStore, HW_Flag_BaseTypeFromFirstArg|HW_Flag_SpecialImport|HW_Flag_SpecialCodeGen|HW_Flag_NeedsConsecutiveRegisters)
-HARDWARE_INTRINSIC(AdvSimd, StoreSelectedScalar, 8, 3, {INS_st1, INS_st1, INS_st1, INS_st1, INS_st1, INS_st1, INS_st1, INS_st1, INS_st1, INS_st1}, HW_Category_MemoryStore, HW_Flag_BaseTypeFromFirstArg|HW_Flag_HasImmediateOperand|HW_Flag_SIMDScalar|HW_Flag_SpecialCodeGen|HW_Flag_SpecialImport|HW_Flag_NeedsConsecutiveRegisters)
+HARDWARE_INTRINSIC(AdvSimd, StoreSelectedScalar, -1, 3, {INS_st1, INS_st1, INS_st1, INS_st1, INS_st1, INS_st1, INS_st1, INS_st1, INS_st1, INS_st1}, HW_Category_MemoryStore, HW_Flag_BaseTypeFromSecondArg|HW_Flag_BaseTypeFromValueTupleArg|HW_Flag_HasImmediateOperand|HW_Flag_SIMDScalar|HW_Flag_SpecialCodeGen|HW_Flag_SpecialImport|HW_Flag_NeedsConsecutiveRegisters)
HARDWARE_INTRINSIC(AdvSimd, StoreVectorAndZip, 8, 2, {INS_st2, INS_st2, INS_st2, INS_st2, INS_st2, INS_st2, INS_st2, INS_st2, INS_st2, INS_st2}, HW_Category_MemoryStore, HW_Flag_BaseTypeFromFirstArg|HW_Flag_SpecialImport|HW_Flag_SpecialCodeGen|HW_Flag_NeedsConsecutiveRegisters)
HARDWARE_INTRINSIC(AdvSimd, Subtract, -1, 2, {INS_sub, INS_sub, INS_sub, INS_sub, INS_sub, INS_sub, INS_sub, INS_sub, INS_fsub, INS_invalid}, HW_Category_SIMD, HW_Flag_NoFlag)
HARDWARE_INTRINSIC(AdvSimd, SubtractHighNarrowingLower, 8, 2, {INS_subhn, INS_subhn, INS_subhn, INS_subhn, INS_subhn, INS_subhn, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_SIMD, HW_Flag_NoFlag)
diff --git a/src/coreclr/jit/hwintrinsicxarch.cpp b/src/coreclr/jit/hwintrinsicxarch.cpp
index 1a016f60fbe990..afc27d12fb7675 100644
--- a/src/coreclr/jit/hwintrinsicxarch.cpp
+++ b/src/coreclr/jit/hwintrinsicxarch.cpp
@@ -4800,7 +4800,7 @@ GenTree* Compiler::impSpecialIntrinsic(NamedIntrinsic intrinsic,
int immUpperBound = HWIntrinsicInfo::lookupImmUpperBound(intrinsic);
op3 = impPopStack().val;
- op3 = addRangeCheckIfNeeded(intrinsic, op3, mustExpand, immLowerBound, immUpperBound);
+ op3 = addRangeCheckIfNeeded(intrinsic, op3, immLowerBound, immUpperBound);
op2 = impSIMDPopStack();
op1 = impSIMDPopStack();
diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_106546/Runtime_106546.cs b/src/tests/JIT/Regression/JitBlue/Runtime_106546/Runtime_106546.cs
new file mode 100644
index 00000000000000..a92d32daed0c61
--- /dev/null
+++ b/src/tests/JIT/Regression/JitBlue/Runtime_106546/Runtime_106546.cs
@@ -0,0 +1,127 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+using System;
+using System.Numerics;
+using System.Runtime.Intrinsics;
+using System.Runtime.Intrinsics.Arm;
+using System.Runtime.Intrinsics.X86;
+using Xunit;
+
+public class Runtime_106546
+{
+ [Fact]
+ public static void TestDotProductThrows()
+ {
+ if (Dp.IsSupported)
+ {
+ Assert.Throws(() => new Runtime_106546().DotProduct());
+ }
+ }
+
+ [Fact]
+ public static void TestShiftRightThrows()
+ {
+ if (AdvSimd.IsSupported)
+ {
+ Assert.Throws(() => new Runtime_106546().ShiftRight());
+ }
+ }
+
+ [Fact]
+ public static void TestAvxGatherThrows()
+ {
+ if (Avx2.IsSupported)
+ {
+ Assert.Throws(() => new Runtime_106546().GatherVector128());
+ Assert.Throws(() => new Runtime_106546().GatherVector256());
+ Assert.Throws(() => new Runtime_106546().GatherMaskVector128());
+ Assert.Throws(() => new Runtime_106546().GatherMaskVector256());
+ }
+ }
+
+ // Generated by Fuzzlyn v2.2 on 2024-08-17 15:13:27
+ // Run on Arm64 MacOS
+ // Seed: 17566447992392941035-vectort,vector64,vector128,armadvsimd,armadvsimdarm64,armaes,armarmbase,armarmbasearm64,armcrc32,armcrc32arm64,armdp,armrdm,armrdmarm64,armsha1,armsha256
+ // Reduced from 52.5 KiB to 0.7 KiB in 00:00:21
+ // Debug: Throws 'System.ArgumentOutOfRangeException'
+ // Release: Runs successfully
+ private void DotProduct()
+ {
+ var vr4 = Vector64.Create(0);
+ var vr5 = Vector64.Create(0);
+ var vr6 = Vector64.Create(0);
+ var vr3 = Dp.DotProductBySelectedQuadruplet(vr4, vr5, vr6, 7);
+ Console.WriteLine(vr3);
+ }
+
+ private struct S1
+ {
+ public byte byte_1;
+ }
+
+ // Found by Antigen
+ private void ShiftRight()
+ {
+ Vector64 floatVec = Vector64.Create(1f);
+ Vector64 doubleVec = Vector64.CreateScalar((double)82);
+ Vector64 intVec = Vector64.Create(1, 1);
+ Vector128 longVec = Vector128.AllBitsSet;
+ S1 s1 = new S1();
+
+ for (int i = 0; i < 3; i++)
+ {
+ Vector64.Shuffle(floatVec += Vector64.AsSingle(doubleVec), AdvSimd.ShiftRightLogicalNarrowingLower(longVec, s1.byte_1) & (intVec - intVec)* 15*4);
+ }
+
+ Console.WriteLine(floatVec);
+ }
+
+ private unsafe void GatherVector128()
+ {
+ Vector128 indices = Vector128.Create(0, 1, 2, 3);
+ int[] data = new int[]{1, 2, 3, 4};
+
+ fixed (int* ptr = data)
+ {
+ Console.WriteLine(Avx2.GatherVector128(ptr, indices, 0));
+ }
+ }
+
+ private unsafe void GatherVector256()
+ {
+ Vector256 indices = Vector256.Create(0L, 1L, 2L, 3L);
+ long[] data = new long[]{1L, 2L, 3L, 4L};
+
+ fixed (long* ptr = data)
+ {
+ Console.WriteLine(Avx2.GatherVector256(ptr, indices, 3));
+ }
+ }
+
+ private unsafe void GatherMaskVector128()
+ {
+ Vector128 source = Vector128.Zero;
+ Vector128 indices = Vector128.Create(0, 1, 2, 3);
+ Vector128 mask = Vector128.AllBitsSet;
+ int[] data = new int[]{1, 2, 3, 4};
+
+ fixed (int* ptr = data)
+ {
+ Console.WriteLine(Avx2.GatherMaskVector128(source, ptr, indices, mask, 5));
+ }
+ }
+
+ private unsafe void GatherMaskVector256()
+ {
+ Vector256 source = Vector256.Zero;
+ Vector256 indices = Vector256.Create(0L, 1L, 2L, 3L);
+ Vector256 mask = Vector256.AllBitsSet;
+ long[] data = new long[]{1L, 2L, 3L, 4L};
+
+ fixed (long* ptr = data)
+ {
+ Console.WriteLine(Avx2.GatherMaskVector256(source, ptr, indices, mask, 7));
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_106546/Runtime_106546.csproj b/src/tests/JIT/Regression/JitBlue/Runtime_106546/Runtime_106546.csproj
new file mode 100644
index 00000000000000..6bb210527e0797
--- /dev/null
+++ b/src/tests/JIT/Regression/JitBlue/Runtime_106546/Runtime_106546.csproj
@@ -0,0 +1,9 @@
+
+
+ True
+ True
+
+
+
+
+
\ No newline at end of file
From 980daff68044fbc93e09a64856fa92391f6060c6 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Tue, 27 Aug 2024 10:02:59 -0700
Subject: [PATCH 066/748] [release/9.0] Make GetPropertyCount public and fix
its return value (#106576)
* Make GetPropertyCount public and fix its return value
* Change order of assignments to match array counterpart
* Reuse local variable
* Show that GetPropertyCount() and EnumerateObject().Count() are the same at every object node
* Fix test to also check objects inside arrays
Also added checks for `GetArrayLength`
---------
Co-authored-by: etemi <40637181+etemi@users.noreply.github.com>
---
.../System.Text.Json/ref/System.Text.Json.cs | 1 +
.../Json/Document/JsonDocument.MetadataDb.cs | 2 +-
.../System/Text/Json/Document/JsonDocument.cs | 27 +++++----
.../System/Text/Json/Document/JsonElement.cs | 2 +-
.../JsonDocumentTests.cs | 56 +++++++++++++++++++
.../Serialization/Stream.ReadTests.cs | 3 +
6 files changed, 77 insertions(+), 14 deletions(-)
diff --git a/src/libraries/System.Text.Json/ref/System.Text.Json.cs b/src/libraries/System.Text.Json/ref/System.Text.Json.cs
index d1394f939f1a1d..a75a8bb9dd264d 100644
--- a/src/libraries/System.Text.Json/ref/System.Text.Json.cs
+++ b/src/libraries/System.Text.Json/ref/System.Text.Json.cs
@@ -66,6 +66,7 @@ public readonly partial struct JsonElement
public System.Text.Json.JsonElement GetProperty(System.ReadOnlySpan utf8PropertyName) { throw null; }
public System.Text.Json.JsonElement GetProperty(System.ReadOnlySpan propertyName) { throw null; }
public System.Text.Json.JsonElement GetProperty(string propertyName) { throw null; }
+ public int GetPropertyCount() { throw null; }
public string GetRawText() { throw null; }
[System.CLSCompliantAttribute(false)]
public sbyte GetSByte() { throw null; }
diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonDocument.MetadataDb.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonDocument.MetadataDb.cs
index a53df982c12eb4..dca61c889c89d8 100644
--- a/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonDocument.MetadataDb.cs
+++ b/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonDocument.MetadataDb.cs
@@ -68,7 +68,7 @@ public sealed partial class JsonDocument
// * 31 bits for token offset
// * Second int
// * Top bit is unassigned / always clear
- // * 31 bits for the token length (always 1, effectively unassigned)
+ // * 31 bits for the number of properties in this object
// * Third int
// * 4 bits JsonTokenType
// * 28 bits for the number of rows until the next value (never 0)
diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonDocument.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonDocument.cs
index ccf524fc40f3a4..7b3ffa246a90ca 100644
--- a/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonDocument.cs
+++ b/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonDocument.cs
@@ -950,7 +950,7 @@ private static void Parse(
ref StackRowStack stack)
{
bool inArray = false;
- int arrayItemsCount = 0;
+ int arrayItemsOrPropertyCount = 0;
int numberOfRowsForMembers = 0;
int numberOfRowsForValues = 0;
@@ -972,13 +972,14 @@ private static void Parse(
{
if (inArray)
{
- arrayItemsCount++;
+ arrayItemsOrPropertyCount++;
}
numberOfRowsForValues++;
database.Append(tokenType, tokenStart, DbRow.UnknownSize);
- var row = new StackRow(numberOfRowsForMembers + 1);
+ var row = new StackRow(arrayItemsOrPropertyCount, numberOfRowsForMembers + 1);
stack.Push(row);
+ arrayItemsOrPropertyCount = 0;
numberOfRowsForMembers = 0;
}
else if (tokenType == JsonTokenType.EndObject)
@@ -987,7 +988,7 @@ private static void Parse(
numberOfRowsForValues++;
numberOfRowsForMembers++;
- database.SetLength(rowIndex, numberOfRowsForMembers);
+ database.SetLength(rowIndex, arrayItemsOrPropertyCount);
int newRowIndex = database.Length;
database.Append(tokenType, tokenStart, reader.ValueSpan.Length);
@@ -995,20 +996,21 @@ private static void Parse(
database.SetNumberOfRows(newRowIndex, numberOfRowsForMembers);
StackRow row = stack.Pop();
- numberOfRowsForMembers += row.SizeOrLength;
+ arrayItemsOrPropertyCount = row.SizeOrLength;
+ numberOfRowsForMembers += row.NumberOfRows;
}
else if (tokenType == JsonTokenType.StartArray)
{
if (inArray)
{
- arrayItemsCount++;
+ arrayItemsOrPropertyCount++;
}
numberOfRowsForMembers++;
database.Append(tokenType, tokenStart, DbRow.UnknownSize);
- var row = new StackRow(arrayItemsCount, numberOfRowsForValues + 1);
+ var row = new StackRow(arrayItemsOrPropertyCount, numberOfRowsForValues + 1);
stack.Push(row);
- arrayItemsCount = 0;
+ arrayItemsOrPropertyCount = 0;
numberOfRowsForValues = 0;
}
else if (tokenType == JsonTokenType.EndArray)
@@ -1017,7 +1019,7 @@ private static void Parse(
numberOfRowsForValues++;
numberOfRowsForMembers++;
- database.SetLength(rowIndex, arrayItemsCount);
+ database.SetLength(rowIndex, arrayItemsOrPropertyCount);
database.SetNumberOfRows(rowIndex, numberOfRowsForValues);
// If the array item count is (e.g.) 12 and the number of rows is (e.g.) 13
@@ -1030,7 +1032,7 @@ private static void Parse(
// This check is similar to tracking the start array and painting it when
// StartObject or StartArray is encountered, but avoids the mixed state
// where "UnknownSize" implies "has complex children".
- if (arrayItemsCount + 1 != numberOfRowsForValues)
+ if (arrayItemsOrPropertyCount + 1 != numberOfRowsForValues)
{
database.SetHasComplexChildren(rowIndex);
}
@@ -1040,13 +1042,14 @@ private static void Parse(
database.SetNumberOfRows(newRowIndex, numberOfRowsForValues);
StackRow row = stack.Pop();
- arrayItemsCount = row.SizeOrLength;
+ arrayItemsOrPropertyCount = row.SizeOrLength;
numberOfRowsForValues += row.NumberOfRows;
}
else if (tokenType == JsonTokenType.PropertyName)
{
numberOfRowsForValues++;
numberOfRowsForMembers++;
+ arrayItemsOrPropertyCount++;
// Adding 1 to skip the start quote will never overflow
Debug.Assert(tokenStart < int.MaxValue);
@@ -1068,7 +1071,7 @@ private static void Parse(
if (inArray)
{
- arrayItemsCount++;
+ arrayItemsOrPropertyCount++;
}
if (tokenType == JsonTokenType.String)
diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonElement.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonElement.cs
index da72d147abd350..e71c9ae3aa9fe9 100644
--- a/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonElement.cs
+++ b/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonElement.cs
@@ -96,7 +96,7 @@ public int GetArrayLength()
///
/// The parent has been disposed.
///
- internal int GetPropertyCount()
+ public int GetPropertyCount()
{
CheckValidInstance();
diff --git a/src/libraries/System.Text.Json/tests/System.Text.Json.Tests/JsonDocumentTests.cs b/src/libraries/System.Text.Json/tests/System.Text.Json.Tests/JsonDocumentTests.cs
index 518ab0f46e3cf5..8be93677470ec5 100644
--- a/src/libraries/System.Text.Json/tests/System.Text.Json.Tests/JsonDocumentTests.cs
+++ b/src/libraries/System.Text.Json/tests/System.Text.Json.Tests/JsonDocumentTests.cs
@@ -681,6 +681,7 @@ public static void ParseSimpleObject()
string city = parsedObject.GetProperty("city").GetString();
int zip = parsedObject.GetProperty("zip").GetInt32();
+ Assert.Equal(7, parsedObject.GetPropertyCount());
Assert.True(parsedObject.TryGetProperty("age", out JsonElement age2));
Assert.Equal(30, age2.GetInt32());
@@ -704,6 +705,7 @@ public static void ParseNestedJson()
Assert.Equal(1, parsedObject.GetArrayLength());
JsonElement person = parsedObject[0];
+ Assert.Equal(5, person.GetPropertyCount());
double age = person.GetProperty("age").GetDouble();
string first = person.GetProperty("first").GetString();
string last = person.GetProperty("last").GetString();
@@ -902,6 +904,7 @@ public static void ReadNumber_1Byte(sbyte value)
Assert.Throws(() => root.GetDateTimeOffset());
Assert.Throws(() => root.GetGuid());
Assert.Throws(() => root.GetArrayLength());
+ Assert.Throws(() => root.GetPropertyCount());
Assert.Throws(() => root.EnumerateArray());
Assert.Throws(() => root.EnumerateObject());
Assert.Throws(() => root.GetBoolean());
@@ -999,6 +1002,7 @@ public static void ReadNumber_2Bytes(short value)
Assert.Throws(() => root.GetDateTimeOffset());
Assert.Throws(() => root.GetGuid());
Assert.Throws(() => root.GetArrayLength());
+ Assert.Throws(() => root.GetPropertyCount());
Assert.Throws(() => root.EnumerateArray());
Assert.Throws(() => root.EnumerateObject());
Assert.Throws(() => root.GetBoolean());
@@ -1091,6 +1095,7 @@ public static void ReadSmallInteger(int value)
Assert.Throws(() => root.GetDateTimeOffset());
Assert.Throws(() => root.GetGuid());
Assert.Throws(() => root.GetArrayLength());
+ Assert.Throws(() => root.GetPropertyCount());
Assert.Throws(() => root.EnumerateArray());
Assert.Throws(() => root.EnumerateObject());
Assert.Throws(() => root.GetBoolean());
@@ -1194,6 +1199,7 @@ public static void ReadMediumInteger(long value)
Assert.Throws(() => root.GetDateTimeOffset());
Assert.Throws(() => root.GetGuid());
Assert.Throws(() => root.GetArrayLength());
+ Assert.Throws(() => root.GetPropertyCount());
Assert.Throws(() => root.EnumerateArray());
Assert.Throws(() => root.EnumerateObject());
Assert.Throws(() => root.GetBoolean());
@@ -1267,6 +1273,7 @@ public static void ReadLargeInteger(ulong value)
Assert.Throws(() => root.GetDateTimeOffset());
Assert.Throws(() => root.GetGuid());
Assert.Throws(() => root.GetArrayLength());
+ Assert.Throws(() => root.GetPropertyCount());
Assert.Throws(() => root.EnumerateArray());
Assert.Throws(() => root.EnumerateObject());
Assert.Throws(() => root.GetBoolean());
@@ -1340,6 +1347,7 @@ public static void ReadTooLargeInteger()
Assert.Throws(() => root.GetDateTimeOffset());
Assert.Throws(() => root.GetGuid());
Assert.Throws(() => root.GetArrayLength());
+ Assert.Throws(() => root.GetPropertyCount());
Assert.Throws(() => root.EnumerateArray());
Assert.Throws(() => root.EnumerateObject());
Assert.Throws(() => root.GetBoolean());
@@ -1379,6 +1387,7 @@ public static void ReadDateTimeAndDateTimeOffset(string jsonString, string expec
Assert.Throws(() => root.GetInt64());
Assert.Throws(() => root.GetUInt64());
Assert.Throws(() => root.GetArrayLength());
+ Assert.Throws(() => root.GetPropertyCount());
Assert.Throws(() => root.EnumerateArray());
Assert.Throws(() => root.EnumerateObject());
Assert.Throws(() => root.GetBoolean());
@@ -1462,6 +1471,7 @@ public static void ReadGuid(string jsonString, string expectedStr)
Assert.Throws(() => root.GetInt64());
Assert.Throws(() => root.GetUInt64());
Assert.Throws(() => root.GetArrayLength());
+ Assert.Throws(() => root.GetPropertyCount());
Assert.Throws(() => root.EnumerateArray());
Assert.Throws(() => root.EnumerateObject());
Assert.Throws(() => root.GetBoolean());
@@ -1564,6 +1574,7 @@ public static void ReadNonInteger(string str, double expectedDouble, float expec
Assert.Throws(() => root.GetDateTimeOffset());
Assert.Throws(() => root.GetGuid());
Assert.Throws(() => root.GetArrayLength());
+ Assert.Throws(() => root.GetPropertyCount());
Assert.Throws(() => root.EnumerateArray());
Assert.Throws(() => root.EnumerateObject());
Assert.Throws(() => root.GetBoolean());
@@ -1654,6 +1665,7 @@ public static void ReadTooPreciseDouble()
Assert.Throws(() => root.GetDateTimeOffset());
Assert.Throws(() => root.GetGuid());
Assert.Throws(() => root.GetArrayLength());
+ Assert.Throws(() => root.GetPropertyCount());
Assert.Throws(() => root.EnumerateArray());
Assert.Throws(() => root.EnumerateObject());
Assert.Throws(() => root.GetBoolean());
@@ -1735,6 +1747,7 @@ public static void CheckUseAfterDispose()
Assert.Throws(() => root.ValueKind);
Assert.Throws(() => root.GetArrayLength());
+ Assert.Throws(() => root.GetPropertyCount());
Assert.Throws(() => root.EnumerateArray());
Assert.Throws(() => root.EnumerateObject());
Assert.Throws(() => root.GetDouble());
@@ -1793,6 +1806,7 @@ public static void CheckUseDefault()
Assert.Equal(JsonValueKind.Undefined, root.ValueKind);
Assert.Throws(() => root.GetArrayLength());
+ Assert.Throws(() => root.GetPropertyCount());
Assert.Throws(() => root.EnumerateArray());
Assert.Throws(() => root.EnumerateObject());
Assert.Throws(() => root.GetDouble());
@@ -2442,6 +2456,7 @@ public static void GetRawText()
using (JsonDocument doc = JsonDocument.Parse(json))
{
+ Assert.Equal(6, doc.RootElement.GetPropertyCount());
JsonElement.ObjectEnumerator enumerator = doc.RootElement.EnumerateObject();
Assert.True(enumerator.MoveNext(), "Move to first property");
JsonProperty property = enumerator.Current;
@@ -2449,6 +2464,7 @@ public static void GetRawText()
Assert.Equal(" weird property name", property.Name);
string rawText = property.ToString();
int crCount = rawText.Count(c => c == '\r');
+ Assert.Equal(2, property.Value.GetPropertyCount());
Assert.Equal(128 + crCount, rawText.Length);
Assert.Equal('\"', rawText[0]);
Assert.Equal(' ', rawText[1]);
@@ -3437,6 +3453,46 @@ public static void ParseValue_AllowMultipleValues_TrailingContent()
JsonTestHelper.AssertThrows(ref reader, (ref Utf8JsonReader reader) => reader.Read());
}
+ [Theory]
+ [InlineData("""{ "foo" : [1], "test": false, "bar" : { "nested": 3 } }""", 3)]
+ [InlineData("""{ "foo" : [1,2,3,4] }""", 1)]
+ [InlineData("""{}""", 0)]
+ [InlineData("""{ "foo" : {"nested:" : {"nested": 1, "bla": [1, 2, {"bla": 3}] } }, "test": true, "foo2" : {"nested:" : {"nested": 1, "bla": [1, 2, {"bla": 3}] } }}""", 3)]
+ public static void TestGetPropertyCount(string json, int expectedCount)
+ {
+ JsonElement element = JsonSerializer.Deserialize(json);
+ Assert.Equal(expectedCount, element.GetPropertyCount());
+ }
+
+ [Fact]
+ public static void VerifyGetPropertyCountAndArrayLengthUsingEnumerateMethods()
+ {
+ using (JsonDocument doc = JsonDocument.Parse(SR.ProjectLockJson))
+ {
+ CheckPropertyCountAndArrayLengthAgainstEnumerateMethods(doc.RootElement);
+ }
+
+ void CheckPropertyCountAndArrayLengthAgainstEnumerateMethods(JsonElement elem)
+ {
+ if (elem.ValueKind == JsonValueKind.Object)
+ {
+ Assert.Equal(elem.EnumerateObject().Count(), elem.GetPropertyCount());
+ foreach (JsonProperty prop in elem.EnumerateObject())
+ {
+ CheckPropertyCountAndArrayLengthAgainstEnumerateMethods(prop.Value);
+ }
+ }
+ else if (elem.ValueKind == JsonValueKind.Array)
+ {
+ Assert.Equal(elem.EnumerateArray().Count(), elem.GetArrayLength());
+ foreach (JsonElement item in elem.EnumerateArray())
+ {
+ CheckPropertyCountAndArrayLengthAgainstEnumerateMethods(item);
+ }
+ }
+ }
+ }
+
[Fact]
public static void EnsureResizeSucceeds()
{
diff --git a/src/libraries/System.Text.Json/tests/System.Text.Json.Tests/Serialization/Stream.ReadTests.cs b/src/libraries/System.Text.Json/tests/System.Text.Json.Tests/Serialization/Stream.ReadTests.cs
index f689cf296ead17..e296ee97c8d068 100644
--- a/src/libraries/System.Text.Json/tests/System.Text.Json.Tests/Serialization/Stream.ReadTests.cs
+++ b/src/libraries/System.Text.Json/tests/System.Text.Json.Tests/Serialization/Stream.ReadTests.cs
@@ -220,11 +220,14 @@ public async Task TestBOMWithShortAndLongBuffers(Stream stream, int count, int e
void VerifyElement(int index)
{
Assert.Equal(JsonValueKind.Object, value[index].GetProperty("Test").ValueKind);
+ Assert.Equal(0, value[index].GetProperty("Test").GetPropertyCount());
Assert.False(value[index].GetProperty("Test").EnumerateObject().MoveNext());
Assert.Equal(JsonValueKind.Array, value[index].GetProperty("Test2").ValueKind);
Assert.Equal(0, value[index].GetProperty("Test2").GetArrayLength());
Assert.Equal(JsonValueKind.Object, value[index].GetProperty("Test3").ValueKind);
Assert.Equal(JsonValueKind.Object, value[index].GetProperty("Test3").GetProperty("Value").ValueKind);
+ Assert.Equal(1, value[index].GetProperty("Test3").GetPropertyCount());
+ Assert.Equal(0, value[index].GetProperty("Test3").GetProperty("Value").GetPropertyCount());
Assert.False(value[index].GetProperty("Test3").GetProperty("Value").EnumerateObject().MoveNext());
Assert.Equal(0, value[index].GetProperty("PersonType").GetInt32());
Assert.Equal(2, value[index].GetProperty("Id").GetInt32());
From 8626a1ba47afa640e5c871e20e3bdc0722957f1b Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Tue, 27 Aug 2024 11:50:29 -0700
Subject: [PATCH 067/748] JIT: Fix `CndSel(AllTrue, op2, op3) -> op2` "next"
node return (#106971)
When lowering makes this transformation it should proceed lowering from
the original next node of the `CndSel`, not from `op2`. If we proceed
lowering from `op2` we will relower some nodes.
Fix #106876
Co-authored-by: Jakob Botsch Nielsen
Co-authored-by: Jeff Schwartz
---
src/coreclr/jit/lowerarmarch.cpp | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/coreclr/jit/lowerarmarch.cpp b/src/coreclr/jit/lowerarmarch.cpp
index 5b944ff9d5f5ac..e0bf56e0eeb3fc 100644
--- a/src/coreclr/jit/lowerarmarch.cpp
+++ b/src/coreclr/jit/lowerarmarch.cpp
@@ -4042,6 +4042,9 @@ void Lowering::ContainCheckHWIntrinsic(GenTreeHWIntrinsic* node)
// node - The hardware intrinsic node of the form
// ConditionalSelect(mask, trueValue, falseValue)
//
+// Returns:
+// Next node to lower.
+//
GenTree* Lowering::LowerHWIntrinsicCndSel(GenTreeHWIntrinsic* cndSelNode)
{
assert(cndSelNode->OperIsHWIntrinsic(NI_Sve_ConditionalSelect));
@@ -4134,13 +4137,15 @@ GenTree* Lowering::LowerHWIntrinsicCndSel(GenTreeHWIntrinsic* cndSelNode)
op3->SetUnusedValue();
}
op1->SetUnusedValue();
+
+ GenTree* next = cndSelNode->gtNext;
BlockRange().Remove(cndSelNode);
JITDUMP("lowering ConditionalSelect HWIntrinisic (after):\n");
DISPTREERANGE(BlockRange(), op2);
JITDUMP("\n");
- return op2;
+ return next;
}
}
From 5c35d1a5f999edade608d9a7c0d18edde34f36c7 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Tue, 27 Aug 2024 11:51:33 -0700
Subject: [PATCH 068/748] Ensure that Arm64 correctly handles multiplication of
simd by a 64-bit scalar (#106972)
Co-authored-by: Tanner Gooding
Co-authored-by: Jeff Schwartz
---
src/coreclr/jit/gentree.cpp | 42 +++++++++----------
.../JitBlue/Runtime_106838/Runtime_106838.cs | 20 +++++++++
.../Runtime_106838/Runtime_106838.csproj | 8 ++++
3 files changed, 48 insertions(+), 22 deletions(-)
create mode 100644 src/tests/JIT/Regression/JitBlue/Runtime_106838/Runtime_106838.cs
create mode 100644 src/tests/JIT/Regression/JitBlue/Runtime_106838/Runtime_106838.csproj
diff --git a/src/coreclr/jit/gentree.cpp b/src/coreclr/jit/gentree.cpp
index 17497fa3742e3d..adb85ddda13a73 100644
--- a/src/coreclr/jit/gentree.cpp
+++ b/src/coreclr/jit/gentree.cpp
@@ -20842,13 +20842,6 @@ GenTree* Compiler::gtNewSimdBinOpNode(
{
GenTree** broadcastOp = nullptr;
-#if defined(TARGET_ARM64)
- if (varTypeIsLong(simdBaseType))
- {
- break;
- }
-#endif // TARGET_ARM64
-
if (varTypeIsArithmetic(op1))
{
broadcastOp = &op1;
@@ -20856,7 +20849,7 @@ GenTree* Compiler::gtNewSimdBinOpNode(
#if defined(TARGET_ARM64)
if (!varTypeIsByte(simdBaseType))
{
- // MultiplyByScalar requires the scalar op to be op2fGetHWIntrinsicIdForBinOp
+ // MultiplyByScalar requires the scalar op to be op2 for GetHWIntrinsicIdForBinOp
needsReverseOps = true;
}
#endif // TARGET_ARM64
@@ -20869,7 +20862,12 @@ GenTree* Compiler::gtNewSimdBinOpNode(
if (broadcastOp != nullptr)
{
#if defined(TARGET_ARM64)
- if (!varTypeIsByte(simdBaseType))
+ if (varTypeIsLong(simdBaseType))
+ {
+ // This is handled via emulation and the scalar is consumed directly
+ break;
+ }
+ else if (!varTypeIsByte(simdBaseType))
{
op2ForLookup = *broadcastOp;
*broadcastOp = gtNewSimdCreateScalarUnsafeNode(TYP_SIMD8, *broadcastOp, simdBaseJitType, 8);
@@ -21273,16 +21271,13 @@ GenTree* Compiler::gtNewSimdBinOpNode(
#elif defined(TARGET_ARM64)
if (varTypeIsLong(simdBaseType))
{
- GenTree** op1ToDup = &op1;
- GenTree** op2ToDup = &op2;
+ GenTree** op2ToDup = nullptr;
- if (!varTypeIsArithmetic(op1))
- {
- op1 = gtNewSimdToScalarNode(TYP_LONG, op1, simdBaseJitType, simdSize);
- op1ToDup = &op1->AsHWIntrinsic()->Op(1);
- }
+ assert(varTypeIsSIMD(op1));
+ op1 = gtNewSimdToScalarNode(TYP_LONG, op1, simdBaseJitType, simdSize);
+ GenTree** op1ToDup = &op1->AsHWIntrinsic()->Op(1);
- if (!varTypeIsArithmetic(op2))
+ if (varTypeIsSIMD(op2))
{
op2 = gtNewSimdToScalarNode(TYP_LONG, op2, simdBaseJitType, simdSize);
op2ToDup = &op2->AsHWIntrinsic()->Op(1);
@@ -21290,7 +21285,12 @@ GenTree* Compiler::gtNewSimdBinOpNode(
// lower = op1.GetElement(0) * op2.GetElement(0)
GenTree* lower = gtNewOperNode(GT_MUL, TYP_LONG, op1, op2);
- lower = gtNewSimdCreateScalarUnsafeNode(type, lower, simdBaseJitType, simdSize);
+
+ if (op2ToDup == nullptr)
+ {
+ op2ToDup = &lower->AsOp()->gtOp2;
+ }
+ lower = gtNewSimdCreateScalarUnsafeNode(type, lower, simdBaseJitType, simdSize);
if (simdSize == 8)
{
@@ -21302,10 +21302,8 @@ GenTree* Compiler::gtNewSimdBinOpNode(
GenTree* op1Dup = fgMakeMultiUse(op1ToDup);
GenTree* op2Dup = fgMakeMultiUse(op2ToDup);
- if (!varTypeIsArithmetic(op1Dup))
- {
- op1Dup = gtNewSimdGetElementNode(TYP_LONG, op1Dup, gtNewIconNode(1), simdBaseJitType, simdSize);
- }
+ assert(!varTypeIsArithmetic(op1Dup));
+ op1Dup = gtNewSimdGetElementNode(TYP_LONG, op1Dup, gtNewIconNode(1), simdBaseJitType, simdSize);
if (!varTypeIsArithmetic(op2Dup))
{
diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_106838/Runtime_106838.cs b/src/tests/JIT/Regression/JitBlue/Runtime_106838/Runtime_106838.cs
new file mode 100644
index 00000000000000..9c3f024398d8e3
--- /dev/null
+++ b/src/tests/JIT/Regression/JitBlue/Runtime_106838/Runtime_106838.cs
@@ -0,0 +1,20 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+using System;
+using System.Runtime.CompilerServices;
+using System.Runtime.Intrinsics;
+using Xunit;
+
+public class Runtime_106838
+{
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ private static Vector128 Problem(Vector128 vector) => vector * 5UL;
+
+ [Fact]
+ public static void TestEntryPoint()
+ {
+ Vector128 result = Problem(Vector128.Create(5));
+ Assert.Equal(Vector128.Create(25), result);
+ }
+}
diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_106838/Runtime_106838.csproj b/src/tests/JIT/Regression/JitBlue/Runtime_106838/Runtime_106838.csproj
new file mode 100644
index 00000000000000..de6d5e08882e86
--- /dev/null
+++ b/src/tests/JIT/Regression/JitBlue/Runtime_106838/Runtime_106838.csproj
@@ -0,0 +1,8 @@
+
+
+ True
+
+
+
+
+
From 87a5855e015a611ad1d678f46451157644d3b732 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Tue, 27 Aug 2024 11:52:06 -0700
Subject: [PATCH 069/748] Set GC metrics to zero prior to first GC (#107004)
Fixes #106733
Co-authored-by: Noah Falk
Co-authored-by: Jeff Schwartz
---
.../System/Diagnostics/Metrics/RuntimeMetrics.cs | 15 +--------------
.../tests/RuntimeMetricsTests.cs | 7 -------
2 files changed, 1 insertion(+), 21 deletions(-)
diff --git a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/RuntimeMetrics.cs b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/RuntimeMetrics.cs
index fc746ff1f3545d..287af3127d7ad1 100644
--- a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/RuntimeMetrics.cs
+++ b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/RuntimeMetrics.cs
@@ -49,14 +49,7 @@ static RuntimeMetrics()
s_meter.CreateObservableUpDownCounter(
"dotnet.gc.last_collection.memory.committed_size",
- () =>
- {
- GCMemoryInfo gcInfo = GC.GetGCMemoryInfo();
-
- return gcInfo.Index == 0
- ? Array.Empty>()
- : [new(gcInfo.TotalCommittedBytes)];
- },
+ () => GC.GetGCMemoryInfo().TotalCommittedBytes,
unit: "By",
description: "The amount of committed virtual memory in use by the .NET GC, as observed during the latest garbage collection.");
@@ -193,9 +186,6 @@ private static IEnumerable> GetHeapSizes()
{
GCMemoryInfo gcInfo = GC.GetGCMemoryInfo();
- if (gcInfo.Index == 0)
- yield break;
-
for (int i = 0; i < s_maxGenerations; ++i)
{
yield return new(gcInfo.GenerationInfo[i].SizeAfterBytes, new KeyValuePair("gc.heap.generation", s_genNames[i]));
@@ -206,9 +196,6 @@ private static IEnumerable> GetHeapFragmentation()
{
GCMemoryInfo gcInfo = GC.GetGCMemoryInfo();
- if (gcInfo.Index == 0)
- yield break;
-
for (int i = 0; i < s_maxGenerations; ++i)
{
yield return new(gcInfo.GenerationInfo[i].FragmentationAfterBytes, new KeyValuePair("gc.heap.generation", s_genNames[i]));
diff --git a/src/libraries/System.Diagnostics.DiagnosticSource/tests/RuntimeMetricsTests.cs b/src/libraries/System.Diagnostics.DiagnosticSource/tests/RuntimeMetricsTests.cs
index 8049d1b5e25d26..2963533ac7cdc0 100644
--- a/src/libraries/System.Diagnostics.DiagnosticSource/tests/RuntimeMetricsTests.cs
+++ b/src/libraries/System.Diagnostics.DiagnosticSource/tests/RuntimeMetricsTests.cs
@@ -288,13 +288,6 @@ private void EnsureAllHeapTags(string metricName)
instrumentRecorder.RecordObservableInstruments();
var measurements = instrumentRecorder.GetMeasurements();
- if (GC.GetGCMemoryInfo().Index == 0)
- {
- // No GC has occurred which can be the case on some platforms.
- Assert.Empty(measurements);
- return;
- }
-
bool[] foundGenerations = new bool[s_genNames.Length];
for (int i = 0; i < 5; i++)
{
From 7019cc2586b54c4f05018510b88680f45ff4b98b Mon Sep 17 00:00:00 2001
From: Eric StJohn
Date: Tue, 27 Aug 2024 14:55:17 -0700
Subject: [PATCH 070/748] Fix regression in ExtensionEqualityComparer
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Previously this comparison was Ordinal after calling ToUpperInvariant
This was changed to InvariantIgnoreCase which breaks because it will
treat things like ß and ss as equal where they were not before.
---
.../System.IO.Packaging/src/System/IO/Packaging/ZipPackage.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/libraries/System.IO.Packaging/src/System/IO/Packaging/ZipPackage.cs b/src/libraries/System.IO.Packaging/src/System/IO/Packaging/ZipPackage.cs
index 677364d0d55b9b..5088d0e3f20c2b 100644
--- a/src/libraries/System.IO.Packaging/src/System/IO/Packaging/ZipPackage.cs
+++ b/src/libraries/System.IO.Packaging/src/System/IO/Packaging/ZipPackage.cs
@@ -739,7 +739,7 @@ bool IEqualityComparer.Equals(string? extensionA, string? extensionB)
//with the rules for comparing/normalizing partnames.
//Refer to PackUriHelper.ValidatedPartUri.GetNormalizedPartUri method.
//Currently normalization just involves upper-casing ASCII and hence the simplification.
- return extensionA.Equals(extensionB, StringComparison.InvariantCultureIgnoreCase);
+ return extensionA.Equals(extensionB, StringComparison.OrdinalCultureIgnoreCase);
}
int IEqualityComparer.GetHashCode(string extension)
From 5c9d1fa2f1459e74ae9cf5ed26b2377cbb803d6b Mon Sep 17 00:00:00 2001
From: Kevin Jones
Date: Tue, 27 Aug 2024 21:18:02 -0400
Subject: [PATCH 071/748] [release/9.0] Backport Azure Linux test changes
(#106980)
* Disable MD5 tests on Azure Linux
* Handle disabled algorithms on Azure Linux
* Fix MD5 failures on Azure Linux in System.Security.Cryptography.Pkcs
* Fix KMAC tests on Azure Linux
---
.../AlgorithmImplementations/EC/ECKeyFileTests.cs | 4 +++-
.../ECDiffieHellman/ECDiffieHellmanFactory.cs | 3 +++
.../ECDiffieHellmanTests.ImportExport.cs | 2 +-
.../AlgorithmImplementations/ECDsa/ECDsaFactory.cs | 2 ++
.../AlgorithmImplementations/RSA/KeyGeneration.cs | 4 ++--
.../AlgorithmImplementations/RSA/RSAFactory.cs | 2 ++
.../AlgorithmImplementations/RSA/SignVerify.cs | 12 ++++++++++--
.../System/Security/Cryptography/SignatureSupport.cs | 11 +++++++----
.../TestUtilities/System/PlatformDetection.Unix.cs | 2 ++
.../tests/RSACngProvider.cs | 2 ++
.../tests/RSACryptoServiceProviderBackCompat.cs | 9 ++++++---
.../tests/RSACryptoServiceProviderProvider.cs | 2 ++
.../tests/EcDsaOpenSslProvider.cs | 2 +-
.../tests/RSAOpenSslProvider.cs | 2 ++
.../tests/Pkcs12/ShroudedKeyBagTests.cs | 8 ++++----
.../tests/SignatureSupport.cs | 3 +++
.../tests/SignedCms/SignerInfoTests.cs | 2 +-
.../tests/ChaCha20Poly1305Tests.cs | 5 +++++
.../tests/DefaultECDiffieHellmanProvider.Unix.cs | 2 +-
.../tests/DefaultECDsaProvider.Unix.cs | 2 +-
.../tests/DefaultRSAProvider.cs | 2 ++
.../System.Security.Cryptography/tests/HKDFTests.cs | 7 ++++---
.../tests/HmacMD5Tests.cs | 4 ++--
.../tests/KmacTestDriver.cs | 2 +-
24 files changed, 69 insertions(+), 27 deletions(-)
diff --git a/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/EC/ECKeyFileTests.cs b/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/EC/ECKeyFileTests.cs
index 492c9d451329c8..1a6686c4326db3 100644
--- a/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/EC/ECKeyFileTests.cs
+++ b/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/EC/ECKeyFileTests.cs
@@ -18,7 +18,9 @@ public abstract partial class ECKeyFileTests where T : ECAlgorithm
// This would need to be virtualized if there was ever a platform that
// allowed explicit in ECDH or ECDSA but not the other.
- public static bool SupportsExplicitCurves { get; } = EcDiffieHellman.Tests.ECDiffieHellmanFactory.ExplicitCurvesSupported;
+ public static bool SupportsExplicitCurves { get; } =
+ EcDiffieHellman.Tests.ECDiffieHellmanFactory.ExplicitCurvesSupported ||
+ EcDiffieHellman.Tests.ECDiffieHellmanFactory.ExplicitCurvesSupportFailOnUseOnly;
public static bool CanDeriveNewPublicKey { get; } = EcDiffieHellman.Tests.ECDiffieHellmanFactory.CanDeriveNewPublicKey;
diff --git a/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/ECDiffieHellman/ECDiffieHellmanFactory.cs b/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/ECDiffieHellman/ECDiffieHellmanFactory.cs
index 9a2de091ab3b42..d3d00c754d584e 100644
--- a/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/ECDiffieHellman/ECDiffieHellmanFactory.cs
+++ b/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/ECDiffieHellman/ECDiffieHellmanFactory.cs
@@ -12,6 +12,7 @@ public interface IECDiffieHellmanProvider
#endif
bool IsCurveValid(Oid oid);
bool ExplicitCurvesSupported { get; }
+ bool ExplicitCurvesSupportFailOnUseOnly => PlatformDetection.IsAzureLinux;
bool CanDeriveNewPublicKey { get; }
bool SupportsRawDerivation { get; }
bool SupportsSha3 { get; }
@@ -48,5 +49,7 @@ public static bool IsCurveValid(Oid oid)
public static bool SupportsRawDerivation => s_provider.SupportsRawDerivation;
public static bool SupportsSha3 => s_provider.SupportsSha3;
+
+ public static bool ExplicitCurvesSupportFailOnUseOnly => s_provider.ExplicitCurvesSupportFailOnUseOnly;
}
}
diff --git a/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/ECDiffieHellman/ECDiffieHellmanTests.ImportExport.cs b/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/ECDiffieHellman/ECDiffieHellmanTests.ImportExport.cs
index 1c507beee0d8d7..2651a538a8019f 100644
--- a/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/ECDiffieHellman/ECDiffieHellmanTests.ImportExport.cs
+++ b/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/ECDiffieHellman/ECDiffieHellmanTests.ImportExport.cs
@@ -319,7 +319,7 @@ public static void TestGeneralExportWithExplicitParameters()
[Fact]
public static void TestExplicitCurveImportOnUnsupportedPlatform()
{
- if (ECDiffieHellmanFactory.ExplicitCurvesSupported)
+ if (ECDiffieHellmanFactory.ExplicitCurvesSupported || ECDiffieHellmanFactory.ExplicitCurvesSupportFailOnUseOnly)
{
return;
}
diff --git a/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/ECDsa/ECDsaFactory.cs b/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/ECDsa/ECDsaFactory.cs
index 01e5dfe6701f48..7571ec641fb718 100644
--- a/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/ECDsa/ECDsaFactory.cs
+++ b/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/ECDsa/ECDsaFactory.cs
@@ -12,6 +12,7 @@ public interface IECDsaProvider
#endif
bool IsCurveValid(Oid oid);
bool ExplicitCurvesSupported { get; }
+ bool ExplicitCurvesSupportFailOnUseOnly => PlatformDetection.IsAzureLinux;
}
public static partial class ECDsaFactory
@@ -39,5 +40,6 @@ public static bool IsCurveValid(Oid oid)
}
public static bool ExplicitCurvesSupported => s_provider.ExplicitCurvesSupported;
+ public static bool ExplicitCurvesSupportFailOnUseOnly => s_provider.ExplicitCurvesSupportFailOnUseOnly;
}
}
diff --git a/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/RSA/KeyGeneration.cs b/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/RSA/KeyGeneration.cs
index ea13e350b977f9..601118c17bd01c 100644
--- a/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/RSA/KeyGeneration.cs
+++ b/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/RSA/KeyGeneration.cs
@@ -8,13 +8,13 @@ namespace System.Security.Cryptography.Rsa.Tests
[SkipOnPlatform(TestPlatforms.Browser, "Not supported on Browser")]
public class KeyGeneration
{
- [Fact]
+ [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotAzureLinux))]
public static void GenerateMinKey()
{
GenerateKey(rsa => GetMin(rsa.LegalKeySizes));
}
- [Fact]
+ [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotAzureLinux))]
public static void GenerateSecondMinKey()
{
GenerateKey(rsa => GetSecondMin(rsa.LegalKeySizes));
diff --git a/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/RSA/RSAFactory.cs b/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/RSA/RSAFactory.cs
index b13a6ee01d8e41..a01390dec6c982 100644
--- a/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/RSA/RSAFactory.cs
+++ b/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/RSA/RSAFactory.cs
@@ -12,6 +12,7 @@ public interface IRSAProvider
bool SupportsSha2Oaep { get; }
bool SupportsPss { get; }
bool SupportsSha1Signatures { get; }
+ bool SupportsMd5Signatures { get; }
bool SupportsSha3 { get; }
}
@@ -43,6 +44,7 @@ public static RSA Create(RSAParameters rsaParameters)
public static bool SupportsPss => s_provider.SupportsPss;
public static bool SupportsSha1Signatures => s_provider.SupportsSha1Signatures;
+ public static bool SupportsMd5Signatures => s_provider.SupportsMd5Signatures;
public static bool SupportsSha3 => s_provider.SupportsSha3;
public static bool NoSupportsSha3 => !SupportsSha3;
diff --git a/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/RSA/SignVerify.cs b/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/RSA/SignVerify.cs
index 84c8f76d2b3eec..cc4d396d01ffb7 100644
--- a/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/RSA/SignVerify.cs
+++ b/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/RSA/SignVerify.cs
@@ -600,7 +600,11 @@ public static IEnumerable