注意点
このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。
目次
- #126810 Fix Avx10 detection: cache CPUID bit before later queries overwrite cpuidInfo
- #126795 Fix NullReferenceException in DestroyStructure for blittable types
- #126678 Optimize IndexOfAnyAsciiSearcher on Arm64
- #126505 Fix XUnitWrapperGenerator:
testArgumentsout of scope in ConditionalTest else branch for MemberData theories
#126810 Fix Avx10 detection: cache CPUID bit before later queries overwrite cpuidInfo
- 作成者: @Copilot
- 作成日時: 2026年04月12日 16:50:58(UTC)
- マージ日時: 2026年04月12日 19:42:23(UTC)
- ラベル: area-Infrastructure
概要
AVX10 CPUID bit検出のバグを修正しました。CPUID leaf 7 sub-leaf 1の結果を読み込んだ後、別のCPUID問い合わせでcpuidInfoが上書きされてしまい、AVX10ビット(EDX[19])がスタックデータを読んでいました。修正により、leaf 7 sub-leaf 1が有効な間にAVX10ビットをキャッシュし、後続のleaf 0x24検出でキャッシュされた値を使用するよう変更しました。
変更内容
- src/native/minipal/cpufeatures.c:
- AVX10 CPUID bit(leaf 7 sub-leaf 1、EDX[19])をleaf 7 sub-leaf 1ブロック内でキャッシュ、AVX512-BF16依存チェックと同じ位置で実施
- leaf 0x24以上での生のCPUID読み込みを、キャッシュされた
hasAvx10v1Dependenciesブール値に置き換え(hasAvx2DependenciesやhasApxDependenciesのパターンに統一) - AVX10バージョン検出ブロック内の冗長な
hasAvx10v1Dependenciesチェックを削除
パフォーマンスへの影響
影響なし。本修正はCPUID検出ロジックの正確性を確保するもので、パフォーマンス特性への変更はありません。
関連Issue
なし
その他
このバグはAVX10対応CPU上でAVX10機能の可用性を正しく検出できないため、ランタイム機能検出の正確性に関わる重要な修正です。
#126795 Fix NullReferenceException in DestroyStructure for blittable types
- 作成者: @Copilot
- 作成日時: 2026年04月11日 19:51:06(UTC)
- マージ日時: 2026年04月12日 14:38:41(UTC)
- ラベル: area-Infrastructure-libraries
概要
BoxedLayoutTypeMarshaler<T>経由でDestroyStructureが呼ばれるblittable型で、無条件にNativeMemory.Clearを実行していたため、無効なポインタ(例:(IntPtr)1)に対してNullReferenceExceptionが発生していた問題を修正しました。blittable型の場合はFreeCoreとNativeMemory.Clearをスキップ、非blittable型はネストされたクリーンアップ後の二重解放防止のためNativeMemory.Clearを実行するよう改善しています。
変更内容
StructureMarshaler<T>.Free():静的フィールドs_isBlittableを追加(Marshal.HasLayoutで初期化)。blittable型の場合、FreeCoreとNativeMemory.Clearをスキップ。非blittable型はJIT生成のFreeCoreIL stubでネイティブサブ構造を解放後、NativeMemory.Clearを実行。LayoutClassMarshaler<T>.Methods:既存のs_nativeSizeForBlittableTypesフィールドを用いたIsBlittableプロパティを追加。GetIsBlittable()メソッドでラップして[MethodImpl(MethodImplOptions.NoInlining)]とtry/catch(TypeInitializationException)パターンを適用し、TypeLoadExceptionを確実に表示。blittable参照型のFree()は無操作に変更。
パフォーマンスへの影響
影響なし。blittable型に対して不要なNativeMemory.Clear呼び出しを削除することで、実行効率が改善。
関連Issue
その他
既存テストDestroyStructure_Blittable_Successがこの回帰をカバー。System.Runtime.InteropServices.Testsスイート全体で2549テスト成功、0失敗。
#126678 Optimize IndexOfAnyAsciiSearcher on Arm64
- 作成者: @tannergooding
- 作成日時: 2026年04月09日 00:42:03(UTC)
- マージ日時: 2026年04月12日 01:50:17(UTC)
- ラベル: area-System.Buffers
概要
Arm64プラットフォーム上の IndexOfAnyAsciiSearcher の性能を最適化するPRです。Count、IndexOf、LastIndexOf の専用APIのコード生成をArm64向けに改善し、ExtractMostSignificantBits の代わりにこれらを使用するように更新しました。IndexOfAny スタイルの検索を使用するワークロードで5~50%のパフォーマンス向上が期待できます。
変更内容
- Vector64/Vector128/Vector256/Vector512.cs:
IndexOfFirstMatchメソッドをINegatorインターフェースに追加し、ベクトル内の最初にマッチした位置を計算するロジックを一元化。Arm64/AdvSimd用の高速パスを実装。 - Vector128.Numerics.cs:
IndexOfAnyResultMapperのVector128コード内で新しいIndexOfFirstMatchヘルパーを使用するように更新。 - IndexOfAnyAsciiSearcher.cs:
IndexOfFirstMatchを活用して最初マッチインデックスの計算を最適化。
パフォーマンスへの影響
- 改善率: 5~50%のパフォーマンス向上(ワークロード依存)
- 懸念事項: 現在の実装では追加の比較処理が残存しており、JITでの今後の改善によってさらなる最適化が可能(作成者より)
- プラットフォーム固有: Arm64プラットフォームのみに適用される最適化
関連Issue
その他
- 本変更は内部実装(
System.Runtime.Intrinsics)の最適化であり、公開APIの変更はありません - Arm64/AdvSimd環境での専用コード生成パスの実装で、他のプラットフォームへの影響はありません
#126505 Fix XUnitWrapperGenerator: testArguments out of scope in ConditionalTest else branch for MemberData theories
- 作成者: @Copilot
- 作成日時: 2026年04月03日 15:00:36(UTC)
- マージ日時: 2026年04月12日 02:20:28(UTC)
- ラベル: area-VM-coreclr
概要
XUnitWrapperGeneratorで、[Theory] + [MemberData]属性を持つテストが条件付きスキップ属性([SkipOnPlatform]等)でラップされる場合、ConditionalTestのelse分岐でtestArgumentsループ変数がスコープ外になり、コンパイルエラーCS0103が発生する問題を修正します。
変更内容
src/tests/Common/XUnitWrapperGenerator/ITestInfo.cs
MemberDataTestコンストラクタにおいて、Method/ContainingTypeの割り当てを先に実行TestNameExpressionをinnerTest.TestNameExpression(ループ変数参照)から、ループ変数に依存しない静的リテラル$"\"{externAlias}::{ContainingType}.{Method}(...)\""に変更if分岐内で使用されるBasicTestMethod.TestNameExpression(イテレーション毎のフィルタリング/報告用)は変更なし
パフォーマンスへの影響
影響なし
関連Issue
その他
この修正はテストコード生成時のコンパイルエラーを回避するもので、実行時の動作には影響しません。条件付きスキップを伴うMemberData理論テストでの問題に対応します。