Pull Request on 2026年04月12日

dotnet/runtimeにマージされたPull RequestをAIで日本語要約

注意点

このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。



#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ブール値に置き換え(hasAvx2DependencieshasApxDependenciesのパターンに統一)
    • 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型の場合はFreeCoreNativeMemory.Clearをスキップ、非blittable型はネストされたクリーンアップ後の二重解放防止のためNativeMemory.Clearを実行するよう改善しています。

変更内容

  • StructureMarshaler<T>.Free():静的フィールドs_isBlittableを追加(Marshal.HasLayoutで初期化)。blittable型の場合、FreeCoreNativeMemory.Clearをスキップ。非blittable型はJIT生成のFreeCore IL stubでネイティブサブ構造を解放後、NativeMemory.Clearを実行。

  • LayoutClassMarshaler<T>.Methods:既存のs_nativeSizeForBlittableTypesフィールドを用いたIsBlittableプロパティを追加。GetIsBlittable()メソッドでラップして[MethodImpl(MethodImplOptions.NoInlining)]try/catch(TypeInitializationException)パターンを適用し、TypeLoadExceptionを確実に表示。blittable参照型のFree()は無操作に変更。

パフォーマンスへの影響

影響なし。blittable型に対して不要なNativeMemory.Clear呼び出しを削除することで、実行効率が改善。

関連Issue

#126795

その他

既存テスト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です。CountIndexOfLastIndexOf の専用APIのコード生成をArm64向けに改善し、ExtractMostSignificantBits の代わりにこれらを使用するように更新しました。IndexOfAny スタイルの検索を使用するワークロードで5~50%のパフォーマンス向上が期待できます。

変更内容

  • Vector64/Vector128/Vector256/Vector512.cs: IndexOfFirstMatch メソッドを INegator インターフェースに追加し、ベクトル内の最初にマッチした位置を計算するロジックを一元化。Arm64/AdvSimd用の高速パスを実装。
  • Vector128.Numerics.cs: IndexOfAnyResultMapperVector128 コード内で新しい IndexOfFirstMatch ヘルパーを使用するように更新。
  • IndexOfAnyAsciiSearcher.cs: IndexOfFirstMatch を活用して最初マッチインデックスの計算を最適化。

パフォーマンスへの影響

  • 改善率: 5~50%のパフォーマンス向上(ワークロード依存)
  • 懸念事項: 現在の実装では追加の比較処理が残存しており、JITでの今後の改善によってさらなる最適化が可能(作成者より)
  • プラットフォーム固有: Arm64プラットフォームのみに適用される最適化

関連Issue

#126678

その他

  • 本変更は内部実装(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]等)でラップされる場合、ConditionalTestelse分岐でtestArgumentsループ変数がスコープ外になり、コンパイルエラーCS0103が発生する問題を修正します。

変更内容

src/tests/Common/XUnitWrapperGenerator/ITestInfo.cs

  • MemberDataTestコンストラクタにおいて、Method/ContainingTypeの割り当てを先に実行
  • TestNameExpressioninnerTest.TestNameExpression(ループ変数参照)から、ループ変数に依存しない静的リテラル$"\"{externAlias}::{ContainingType}.{Method}(...)\""に変更
  • if分岐内で使用されるBasicTestMethod.TestNameExpression(イテレーション毎のフィルタリング/報告用)は変更なし

パフォーマンスへの影響

影響なし

関連Issue

#126505

その他

この修正はテストコード生成時のコンパイルエラーを回避するもので、実行時の動作には影響しません。条件付きスキップを伴うMemberData理論テストでの問題に対応します。


目次