Pull Request on 2026年01月08日

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

注意点

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


目次

  1. #123006 Fix method signature for memmove and memset in SpanHelpers.ByteMemOps
  2. #123000 Do not ship EventSourceGenerator
  3. #122999 Include host symbols in testhost folder
  4. #122995 [release/9.0-staging] Update dependencies from dotnet/roslyn-analyzers
  5. #122994 [Wasm RyuJIT] Add some missing types to ins_Load and ins_Store
  6. #122992 [clr-interp] Fix timing of UnhandleException handlers
  7. #122961 [release/10.0] [HTTP] Stress fix for ASAN preload
  8. #122957 Add a few EntityRegistry features in managed ilasm
  9. #122949 [release/10.0] Use correct test template for Sve.GatherVectorWithByteOffsetsFirstFaulting* tests
  10. #122944 Fix integer overflow in BufferedStream.WriteToUnderlyingStreamAsync for large buffers
  11. #122941 [release/9.0] Update dependencies from dotnet/emsdk
  12. [#122920 wasm][coreclr] Disable remaining madvise calls on wasm
  13. #122919 [release/10.0] JIT: SpanHelpers.Fill may escape its last argument
  14. #122897 [RyuJIT Wasm] Disable genCreateAddrMode on Wasm
  15. [#122886 browser][coreCLR] asset loading improvements
  16. #122781 [release/9.0-staging] Update dependencies from dotnet/cecil
  17. #122670 [release/10.0] Always read from underlying stream in StreamPipeReader
  18. [#122643 wasm][coreclr] Do not try to probe .ni.dll assemblies
  19. [#122594 [release/10.0] mono][interp] Disable inlining of methods that always throw
  20. [#122588 [release/10.0] mono][interp] Add max limit to the imported IL when inlining
  21. #122511 Reduce the number of sections in R2R PE files
  22. #122467 [clr-interp] Tracing fixes.
  23. #122417 [release/8.0-staging] Add fetchTags: false to checkout steps in pipeline YAML files
  24. #122402 [release/9.0-staging] Add fetchTags: false to all checkout steps in CI pipelines
  25. #122367 [release/10.0] Add fetchTags: false to all checkout steps in Azure Pipelines
  26. #122199 [release/8.0-staging] Fix analyzer crash on C# 14 extensions
  27. #121739 [RISC-V] Enable constant CSE in RISCV64
  28. #121584 arm64: Refactor GenerateHWIntrinsicTests_Arm.cs

#123006 Fix method signature for memmove and memset in SpanHelpers.ByteMemOps

  • 作成者: @kotlarmilos
  • 作成日時: 2026年01月08日 14:47:17(UTC)
  • マージ日時: 2026年01月08日 17:48:24(UTC)
  • ラベル: area-System.Memory

概要

Mono ランタイムのビルド時に発生していた IDE0036 修飾子順序エラーを修正するPRです。SpanHelpers.ByteMemOps.cs の2つのメソッド (memmovememset) の修飾子順序を C# コーディング標準に準拠させました。修飾子の順序を private static unsafe extern から private static extern unsafe に修正しています。

変更内容

  • src/libraries/System.Private.CoreLib/src/System/SpanHelpers.ByteMemOps.cs
    • 259行目: memmove メソッドの修飾子順序を修正
    • 482行目: memset メソッドの修飾子順序を修正
    • 変更内容: unsafe extern の位置を入れ替え、正しいモダンC#修飾子順序に準拠

パフォーマンスへの影響

影響なし。修飾子の順序変更は、コード生成やランタイム動作に影響を与えません。純粋なコーディング規約の修正です。

関連Issue

PR #122791 で導入された修飾子順序エラーの修正(前のPRが原因)

その他

  • 修正は IDE0036 ルールに基づく Mono ビルドのコンパイルエラーの解決
  • .editorconfig で定義されている C# 修飾子の標準順序:public/private/protectedstaticexternunsafe → その他

#123000 Do not ship EventSourceGenerator

  • 作成者: @MichalStrehovsky
  • 作成日時: 2026年01月08日 04:57:04(UTC)
  • マージ日時: 2026年01月08日 13:34:35(UTC)
  • ラベル: needs-area-label

概要

EventSourceGeneratorは内部ツールとして位置づけられているため、.NET Core App参照パック(ref pack)から除外する変更です。Issue #121180で内部ツールとして分類されたことに伴う対応です。

変更内容

  • src/libraries/NetCoreAppLibrary.props: NetCoreAppLibraryGeneratorリストからEventSourceGeneratorを削除(1行削除)

パフォーマンスへの影響

影響なし

関連Issue

#121180

その他

  • 公開API への影響: EventSourceGeneratorは参照パックから除外されるため、外部開発者がこのジェネレータを直接参照することはできなくなります
  • 互換性: この変更は破壊的な可能性があります。既存コードがEventSourceGeneratorに依存している場合、コンパイルエラーが発生する可能性があります
  • 意図: 内部ツールであることを明確化し、公開APIとして扱わないようにするための変更です

#122999 Include host symbols in testhost folder

  • 作成者: @elinor-fung
  • 作成日時: 2026年01月08日 03:56:35(UTC)
  • マージ日時: 2026年01月08日 18:32:28(UTC)
  • ラベル: area-Infrastructure

概要

testhost フォルダ作成時に、dotnet、hostfxr、hostpolicy のホストコンポーネント用シンボルファイル(Windows では PDB、他のプラットフォームでは .pdb/.dwarf)をコピーするよう変更されました。これにより、デバッグおよびプロファイリング時により詳細な情報が利用可能になります。

変更内容

  • src/libraries/externals.csproj(+13/-7)
    • 特定のシンボルファイル参照をワイルドカード形式の ItemGroup に置き換え
    • 複数ディレクトリ(バイナリディレクトリと PDB サブディレクトリ)を検索するパターンを追加
    • ホストコンポーネント バイナリに対応するシンボル ItemGroup を Copy タスクに追加
    • Exists 条件判定を ItemGroup 全体から個別項目(%(Identity) を使用)へ変更

パフォーマンスへの影響

影響なし。本変更はテストホスト フォルダへのシンボルファイルのコピー処理が対象であり、ランタイム実行やコンパイル速度には直接的な影響を与えません。

関連Issue

なし

その他

本変更により、テスト環境でのデバッグ情報が充実し、問題発生時のトラブルシューティングやプロファイリングが効率化されます。ワイルドカード パターンを使用することで、異なるプラットフォーム構成に対応する柔軟性が向上しています。


#122995 [release/9.0-staging] Update dependencies from dotnet/roslyn-analyzers

  • 作成者: @dotnet-maestro[bot]
  • 作成日時: 2026年01月08日 02:02:04(UTC)
  • マージ日時: 2026年01月08日 18:24:45(UTC)
  • ラベル: Servicing-approved area-codeflow

概要

dotnet/roslyn-analyzersからの依存関係を更新するPRです。Microsoft.CodeAnalysis.Analyzersおよび Microsoft.CodeAnalysis.NetAnalyzersを最新のプレビュー版にアップデートしています。release/9.0-stagingブランチへの自動更新です。

変更内容

  • eng/Version.Details.xml: Microsoft.CodeAnalysis.Analyzersを3.11.0-beta1.25615.3から3.11.0-beta1.26057.1へ更新、Microsoft.CodeAnalysis.NetAnalyzersを9.0.0-preview.25615.3から9.0.0-preview.26057.1へ更新
  • eng/Versions.props: バージョン定義ファイルの対応する更新

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • このPRはdotnet-maestro[bot]による自動依存関係更新です
  • roslyn-analyzersのrelease/9.0.1xxブランチからの更新です(2026年1月8日時点)
  • コード分析ルール・アナライザーの最新版取り込みにより、コンパイル時の静的解析精度が向上する可能性があります

#122994 [Wasm RyuJIT] Add some missing types to ins_Load and ins_Store

  • 作成者: @kg
  • 作成日時: 2026年01月08日 01:34:51(UTC)
  • マージ日時: 2026年01月08日 23:39:19(UTC)
  • ラベル: arch-wasm area-CodeGen-coreclr

概要

Wasm RyuJITコンパイラにおいて、命令選択関数ins_Loadins_StoreでTYP_REFおよびTYP_BYREFの型ケースが欠落しており、superpmi replayの際にアサーション失敗が発生していました。本PRでは、これらの型ケースを追加し、WASM32の4バイトポインタに対応するi32命令にマッピングすることで解決しています。

変更内容

  • src/coreclr/jit/instr.cpp
    • ins_Load関数にTYP_REFおよびTYP_BYREFケースを追加(TYP_INTにフォールスルー)
    • ins_Store関数にTYP_REFおよびTYP_BYREFケースを追加(TYP_INTにフォールスルー)
    • 64ビット対応の必要性に関するTODOコメントを追加

パフォーマンスへの影響

影響なし。本変更は命令選択ロジックの正確性を修正するものであり、既存の処理フロー変更やアルゴリズム改善は含まれていません。

関連Issue

なし

その他

  • 本修正により、superpmi replayにおけるWasm RyuJITのアサーション失敗が解決されます
  • WASM64対応時には、ポインタサイズに応じた命令マッピングの見直しが必要となることを想定した設計となっています
  • 変更量は最小限(+6行)に抑えられており、影響範囲が限定的です

#122992 [clr-interp] Fix timing of UnhandleException handlers

  • 作成者: @davidwrighton
  • 作成日時: 2026年01月07日 23:21:15(UTC)
  • マージ日時: 2026年01月08日 17:35:25(UTC)
  • ラベル: area-CodeGen-Interpreter-coreclr

概要

CoreCLR インタプリタの UnhandledException ハンドラの実行タイミングを修正しました。従来は finally ブロック実行後に実行されていましたが、本変更により最初のパス例外処理(first pass EH)中に例外が検出された時点で実行されるようになります。これにより baseservices/exceptions/UnhandledExceptionHandler/NoEffectInMainThread テストの失敗が解決されます。

変更内容

  • src/coreclr/vm/exceptionhandling.cpp (+12 行)
    • InterpreterFrame がネイティブ遷移境界を表すかどうかを追跡するフラグを導入
    • 未処理例外をチェックする際に、このフラグを使用して InterpreterFrame を正しくスキップ
    • 例外処理フロー内の正しいポイントで未処理例外検出が発生するよう修正

パフォーマンスへの影響

影響なし

本変更は例外処理のタイミング修正であり、パフォーマンスクリティカルなコードパスではありません。例外ハンドラの実行順序が改善されることで、セマンティクスは正確になりますが、通常の実行フローへの影響はありません。

関連Issue

なし

その他

  • 本変更は CoreCLR インタプリタの例外処理ロジックに関する修正です
  • ネイティブ相互運用時の例外処理の正確性が向上します
  • 最初のパス例外処理の semantics に関わる修正のため、例外処理が絡む複雑なシナリオでの動作検証が重要です

#122961 [release/10.0] [HTTP] Stress fix for ASAN preload

  • 作成者: @github-actions[bot]
  • 作成日時: 2026年01月07日 07:49:56(UTC)
  • マージ日時: 2026年01月08日 19:05:52(UTC)
  • ラベル: Servicing-approved

概要

HTTP Stress テストの ASAN(Address Sanitizer)プリロード機能に関する修正です。Dockerfile の設定変更により、メモリ安全性チェックが適切に動作するようにしています。

変更内容

  • src/libraries/System.Net.Http/tests/StressTests/HttpStress/Dockerfile
    • ASAN プリロード関連の設定を 3 行修正(+3/-3)
    • テストコンテナの環境設定を調整

パフォーマンスへの影響

影響なし。テストのみの変更であり、本体コードへの影響はありません。

関連Issue

  • #122926 からのバックポート

その他

  • リスク評価:Low(テストのみの変更)
  • リグレッション:なし
  • CI でテスト済み
  • 内部で発見された問題の修正です

#122957 Add a few EntityRegistry features in managed ilasm

  • 作成者: @am11
  • 作成日時: 2026年01月07日 02:11:12(UTC)
  • マージ日時: 2026年01月08日 03:23:24(UTC)
  • ラベル: area-ILTools-coreclr community-contribution

概要

C# 製 ilasm ツールの EntityRegistry で複数の機能を実装しました。ClassLayout、FieldLayout、FieldRVA テーブルのエミット対応、pinned 型署名のサポート、アセンブリ修飾名の完全構築、コア アセンブリ解決ロジックの改善などが含まれます。これにより native ilasm との互換性が向上します。

変更内容

  • EntityRegistry.cs (+65/-23): ClassLayout/FieldLayout/FieldRVA テーブルのエミット実装、GetPinnedType の実装、float32/float64 のVisitSimpleType への追加、アセンブリ修飾名構築(Version/Culture/PublicKeyToken 対応)
  • GrammarVisitor.cs (+52/-8): .pack/.size ディレクティブ解析、[offset] 構文解析、.data 宣言と 'at' 構文の連携
  • DocumentCompilerTests.cs (+375): ClassLayout/FieldLayout/FieldRVA および コア アセンブリ解決機能の包括的なテスト追加

パフォーマンスへの影響

影響なし。主に IL 生成の正確性向上のための機能追加で、ランタイム パフォーマンスに直結する変更ではありません。

関連Issue

なし

その他

コア アセンブリ解決ロジック改善: native ilasm との互換性向上のため、アセンブリ参照解決の優先順位を変更。System.Private.CoreLib → System.Runtime → mscorlib → netstandard → mscorlib 作成、の順で検索。AssemblyRef テーブルのエミット処理とディクショナリ キー比較も修正されています。


#122949 [release/10.0] Use correct test template for Sve.GatherVectorWithByteOffsetsFirstFaulting* tests

  • 作成者: @github-actions[bot]
  • 作成日時: 2026年01月06日 23:44:13(UTC)
  • マージ日時: 2026年01月08日 19:05:21(UTC)
  • ラベル: Servicing-approved

概要

SVE(Scalable Vector Extension)関連のハードウェア組み込み関数テストで、Sve.GatherVector*WithByteOffsets*FirstFaulting*テストに対して正しいテストテンプレートを使用するよう修正しました。このバックポート修正により、ARM64プラットフォーム上で破損していたテストケースを修復します。

変更内容

  • ファイル: src/tests/Common/GenerateHWIntrinsicTests/Arm/SveTests.cs
    • テストテンプレートの修正(12行追加、12行削除)
    • Sve.GatherVector*WithByteOffsets*FirstFaulting*テストの正しいテンプレート定義への変更

パフォーマンスへの影響

影響なし(テストコードのみの変更のため、ランタイムパフォーマンスへの影響はありません)

関連Issue

#120291(元のPull Request、release/mainブランチへのマージ)

その他

  • このPRはrelease/10.0ブランチへのバックポート修正です
  • ARM64プラットフォーム上で実行するテストを対象とした修正です
  • リスク評価が「Low」とされており、テスト定義の修正のみで機能変更はありません
  • 内部で検出された問題で、顧客報告ではありません

#122944 Fix integer overflow in BufferedStream.WriteToUnderlyingStreamAsync for large buffers

  • 作成者: @Copilot
  • 作成日時: 2026年01月06日 22:32:39(UTC)
  • マージ日時: 2026年01月08日 00:43:29(UTC)
  • ラベル: area-System.IO

概要

BufferedStream.WriteToUnderlyingStreamAsyncで~1GB以上のバッファ書き込み時にOverflowExceptionが発生する符号付き整数オーバーフロー問題を修正。同期メソッドのWriteでは既に(uint)キャスティングで対応済みだったが、非同期パスに対応漏れがあったため修正。

// 修正前(OverflowException発生)
useBuffer = (totalUserBytes + buffer.Length < (_bufferSize + _bufferSize));

// 修正後(int.MaxValueまで対応)
useBuffer = ((uint)totalUserBytes + buffer.Length < (_bufferSize + _bufferSize));

変更内容

ファイル 変更内容
BufferedStream.cs WriteToUnderlyingStreamAsyncの行1082でtotalUserBytes + buffer.Lengthの比較に(uint)キャストを追加。符号なし算術に昇格させてオーバーフロー防止
BufferedStreamTests.cs 新テストWriteAsyncFromMemory_InputSizeLargerThanHalfOfMaxInt_ShouldSuccessを追加。int.MaxValue/2+1サイズのバッファの非同期書き込みが正常に完了することを検証

パフォーマンスへの影響

影響なし。単一行の算術演算修正で、パフォーマンスオーバーヘッドはない。むしろ大容量バッファ処理時の例外発生を防止することで、アプリケーションの安定性が向上。

関連Issue

Issue #117789:MemoryStream.CopyToAsyncで大容量データをBufferedStreamに書き込む際のOverflowException問題

その他

  • 全474個の既存BufferedStreamテストがパス
  • OuterLoopテストで同期/非同期パスの大容量バッファ対応を検証
  • リスク評価:低リスク。同期メソッドで既に実証済みのパターンを適用
  • 破壊的変更なし。既存コード動作に影響を与えない単純な修正

#122941 [release/9.0] Update dependencies from dotnet/emsdk

  • 作成者: @dotnet-maestro[bot]
  • 作成日時: 2026年01月06日 21:53:10(UTC)
  • マージ日時: 2026年01月08日 18:22:37(UTC)
  • ラベル: Servicing-approved area-codeflow

概要

dotnet/emsdk リポジトリの依存関係を更新するPRです。Emscripten WebAssembly ツールチェーン関連のNuGetパッケージを 9.0.12 から 9.0.13 にアップデートしています。これにより、WebAssembly 開発環境の最新機能やバグ修正が利用可能になります。

変更内容

  • eng/Version.Details.xml: Microsoft.SourceBuild.Intermediate.emsdk、Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport、Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100 のバージョン情報を更新(9.0.12系から9.0.13系へ)
  • eng/Versions.props: 各依存パッケージのバージョンを 9.0.12 から 9.0.13 に更新
  • NuGet.config: NuGetフィードの設定を軽微に調整

パフォーマンスへの影響

影響なし(依存関係の更新であり、ランタイムやコンパイラロジックの変更ではありません)

関連Issue

なし(自動依存関係更新PRのため)

その他

  • このPRは dotnet-maestro[bot] により自動生成されたものです
  • dotnet/emsdk の release/9.0 ブランチ(コミット: 8f9e359ad95f422aec3c31c21ab188166f655842)からの更新です
  • .NET 9.0 の Emscripten ワークロード関連パッケージが最新化されるため、WebAssembly 開発における安定性や互換性が向上します

#122920 [wasm][coreclr] Disable remaining madvise calls on wasm

  • 作成者: @radekdoulik
  • 作成日時: 2026年01月06日 15:36:36(UTC)
  • マージ日時: 2026年01月08日 10:32:42(UTC)
  • ラベル: area-PAL-coreclr

概要

WebAssemblyターゲットがサポートしていないmadviseシステムコールを、CoreCLRおよびネイティブライブラリ全体で無効化するPull Requestです。TARGET_WASMガード条件を追加することで、WASM環境でのランタイム問題を防止します。

変更内容

  • src/native/libs/System.Native/pal_io.c: MADV_DONTFORKに対する条件付きコンパイルにTARGET_WASM除外条件を追加
  • src/coreclr/pal/src/map/map.cpp: MAPMarkSectionAsNotNeededでAndroidと同様にWASMターゲットをスキップするよう拡張
  • src/coreclr/gc/unix/gcenv.unix.cpp: VirtualDecommitおよびVirtualResetの複数のmadvise呼び出しにWASMガードを追加。VirtualResetではWASMターゲット向けの早期return最適化を実装

パフォーマンスへの影響

影響なし。本変更はプラットフォーム互換性の修正であり、パフォーマンス特性の変更はありません。

関連Issue

なし

その他

本変更は破壊的変更ではなく、互換性維持の修正です。WASM環境でのメモリ管理ロジックをサポート対象外のmadvise呼び出しから保護することで、未定義動作やランタイムエラーの発生を防止します。条件付きコンパイルによるガード追加のため、既存のx86/ARM等のプラットフォームへの影響はありません。


#122919 [release/10.0] JIT: SpanHelpers.Fill may escape its last argument

  • 作成者: @github-actions[bot]
  • 作成日時: 2026年01月06日 15:34:50(UTC)
  • マージ日時: 2026年01月08日 19:04:57(UTC)
  • ラベル: Servicing-approved

概要

.NET 10の新しい最適化におけるバグ修正です。SpanHelpers.Fill呼び出し時に、ローカルに割り当てられたオブジェクトからGC参照が渡される場合、JITが不正なコード生成を行っていました。修正により、SpanHelpers.Fillの第2・第3引数がエスケープする可能性がある場合、スタック割り当ての最適化を無効化するようになります。

// 例:問題が発生していたケース
Span<T> span = stackalloc T[size];
T fillValue = new T(); // ローカルオブジェクト
SpanHelpers.Fill(ref span[0], fillValue, span.Length); // 不正なコード生成

変更内容

  • src/coreclr/jit/objectalloc.cpp: SpanHelpers.Fillの引数エスケープ解析を修正。第1引数(ref)はエスケープしないが、第2・第3引数はエスケープする可能性があることを正しく判定するロジックを追加
  • src/tests/JIT/opt/ObjectStackAllocation/Runtime_122879.cs: 顧客報告のケースを回帰テストとして追加(39行)
  • src/tests/JIT/opt/ObjectStackAllocation/Runtime_122879.csproj: テストプロジェクト設定ファイル追加

パフォーマンスへの影響

改善点: セキュリティ上の正確性が向上。不正なスタック割り当ては回避されます。

懸念点: SpanHelpers.Fill使用時にスタック割り当て最適化が無効化されるため、わずかなメモリ割り当てオーバーヘッドが生じる可能性があります。ただし顧客報告ケースではサイレント悪化(不正な動作)の回避が最優先。

関連Issue

  • #122902(元のPR)
  • #122879(顧客報告)

その他

  • .NET 10の新機能における回帰バグであり、リスク評価は低い
  • バックポート対象:release/10.0ブランチ
  • テスト追加により将来の同類バグを防止

#122897 [RyuJIT Wasm] Disable genCreateAddrMode on Wasm

  • 作成者: @kg
  • 作成日時: 2026年01月05日 20:44:18(UTC)
  • マージ日時: 2026年01月08日 16:56:22(UTC)
  • ラベル: arch-wasm area-CodeGen-coreclr

概要

WebAssembly (Wasm) ターゲットにおいて、genCreateAddrMode 関数を無効化しました。これにより SuperPMI の失敗カテゴリに対応しています。Wasm では従来のアドレスモード最適化が適切に機能しないため、この機能を制限することで JIT コンパイルの安定性を向上させます。

変更内容

ファイル 変更内容
src/coreclr/jit/codegencommon.cpp Wasm ターゲットに対する genCreateAddrMode の無効化ロジックを追加(+5/-0)

パフォーマンスへの影響

懸念点: Wasm ターゲットでアドレスモード最適化が無効化されるため、コード生成時のアドレス計算がやや冗長になる可能性があります。ただし、この変更は SuperPMI の失敗を解決し、JIT コンパイルの信頼性向上を優先したものです。

改善点: 不安定な最適化パスを排除することで、Wasm コンパイルの堅牢性が向上します。

関連Issue

SuperPMI 失敗カテゴリの対応

その他

本変更は Wasm 特有の制限事項です。Copilot の概要と異なり、本 PR は実装追加ではなく機能の無効化であることに注意してください。Wasm ターゲットではアドレスモード最適化の一般的なコスト計算が適用されないため、より保守的なコード生成手法が採用されます。


#122886 [browser][coreCLR] asset loading improvements

  • 作成者: @pavelsavara
  • 作成日時: 2026年01月05日 18:25:38(UTC)
  • マージ日時: 2026年01月08日 09:26:55(UTC)
  • ラベル: arch-wasm area-Host os-browser

概要

ブラウザホストのアセット読み込み機能を大幅に改善するPRです。ダウンロード時の並列数制限とリトライロジック、PDBファイル対応、モジュールライフサイクルフック(onRuntimeConfigLoadedonRuntimeReady)、ダウンロード進捗コールバック(Module.onDownloadResourceProgress)を追加し、信頼性と拡張性を向上させました。また、Emscripten APIを簡潔化し、remoteSourcesサポートを削除しました。

変更内容

  • assets.ts: アセット読み込みロジックを大幅リファクタリング(+198行)。ダウンロード並列数制限(maxParallelDownloads)、リトライ機構、PDBファイルサポート、進捗追跡、オプショナルアセット処理を実装
  • run.ts: モジュールライフサイクルフックをサポートするよう初期化フロー改編
  • config.ts: maxParallelDownloadsデフォルト設定追加
  • type定義: remoteSources削除、registerPdbBytes追加、Emscriptenプロパティを内部型に整理
  • host.ts/host/index.ts: registerPdbBytesスタブ実装追加(未実装状態)
  • polyfills.ts/icu.ts等: グローバルconfigの使用に統一、エラーハンドリング改善

パフォーマンスへの影響

  • 改善点: ダウンロード並列数を制限することでリソース枯渇を防止し、ネットワーク過負荷による失敗を軽減。リトライ機構により信頼性向上
  • 進捗追跡: Module.onDownloadResourceProgressで粒度の細かいダウンロード進捗が可能に
  • オプショナルアセット: 必須でないアセットの失敗がアプリケーション起動を阻害しないように改善
  • 具体的数値: 提供されていないため詳細な改善率は不明

関連Issue

#120226 - ブラウザホスト改善の追跡

その他

  • 互換性: remoteSources設定オプションを削除したため、既存でこれを使用するコードは更新が必要
  • 非推奨化: loadBootResourceCallbackは全アセット型(JavaScript以外も含む)で呼び出されるよう修正
  • API追加: asset.isOptionalasset.bufferasset.pendingDownloadをサポートし、事前フェッチアセット対応を実現
  • PDB対応: fetchPdbregisterPdbBytesにより動的なデバッグシンボル取得が可能に(registerPdbBytesはスタブ実装)

#122781 [release/9.0-staging] Update dependencies from dotnet/cecil

  • 作成者: @dotnet-maestro[bot]
  • 作成日時: 2025年12月30日 02:01:46(UTC)
  • マージ日時: 2026年01月08日 18:19:12(UTC)
  • ラベル: Servicing-approved area-codeflow

概要

dotnet/cecil ライブラリの依存関係を更新するPull Requestです。Microsoft.SourceBuild.Intermediate.cecil と Microsoft.DotNet.Cecil パッケージを 0.11.5-alpha.25621.2 から 0.11.5-alpha.25628.2 へ更新しています。このアップデートにより、Cecil ライブラリの最新の改善が .NET Runtime に取り込まれます。

変更内容

  • eng/Version.Details.xml: 依存関係の詳細バージョン情報を更新(4行追加、4行削除)
  • eng/Versions.props: プロパティファイルのバージョン定義を更新(1行追加、1行削除)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • このPRは自動生成(dotnet-maestro[bot])による依存関係更新です
  • 更新元の Cecil ライブラリのビルドID: 295690(2025年12月28日20:36 UTC時点)
  • Cecil リポジトリの release/9.0 ブランチからのアップデートです

#122670 [release/10.0] Always read from underlying stream in StreamPipeReader

  • 作成者: @github-actions[bot]
  • 作成日時: 2025年12月19日 20:54:16(UTC)
  • マージ日時: 2026年01月08日 19:04:19(UTC)
  • ラベル: Servicing-approved

概要

StreamPipeReaderがシークable streams(バッファリングされたリクエストなど)で正常に動作していなかった回帰をバグ修正します。以前の読み込み後、ストリームから常に読み込むことで、要求の(前)処理後もアプリケーションコードが完全なリクエストを読み込めるようにします。ASP.NET Core 10.0でJSON逆シリアル化にPipeReaderを採用したことでStreamPipeReaderの使用頻度が増加し、問題が顕在化しました。

// StreamPipeReader が 0 を返した後も、
// 基盤となるストリームから読み込みを継続

変更内容

  • src/libraries/System.IO.Pipelines/src/System/IO/Pipelines/StreamPipeReader.cs

    • 基盤となるストリームからの読み込みロジック修正(+5/-21行)
    • 以前の読み込みで EOF(0バイト)が返された後でも、ストリームから読み込みを続行する処理改善
  • src/libraries/System.IO.Pipelines/tests/StreamPipeReaderTests.cs

    • テスト追加・修正(+34/-48行)
    • スキップされていたテストケースが本修正で動作確認済み

パフォーマンスへの影響

影響なし。ロジック修正であり、パフォーマンス特性に変更がありません。

関連Issue

  • dotnet/aspnetcore#64323 - リクエストバッファリング使用時にアプリケーションコードが空データまたはエラーを受け取る問題
  • dotnet/aspnetcore#62895 - JSON逆シリアル化へのPipeReader対応が回帰原因

その他

  • リスク評価:低。影響を受けるのはStreamが0を返した後の読み込みを継続するまれなパターン。複数のストリーム実装を確認済み
  • バックポート:release/10.0ブランチへのバックポート(#118041より)
  • テスト実施状況:ASP.NET CoreのMVC IAsyncResourceFilterおよびMinimal IEndpointFilterでシナリオ検証済み

#122643 [wasm][coreclr] Do not try to probe .ni.dll assemblies

  • 作成者: @radekdoulik
  • 作成日時: 2025年12月18日 14:41:31(UTC)
  • マージ日時: 2026年01月08日 16:33:19(UTC)
  • ラベル: area-AssemblyLoader-coreclr

概要

このPRはWebAssembly環境において、ネイティブイメージ(.ni.dll)のプローブ処理を削除することで、アセンブリロードのパフォーマンスを最適化しています。WASM環境ではネイティブイメージが非対応となったため、不要なプローブロジックと関連する遺産コードを削除し、スタートアップパフォーマンスを改善します。

// 変更前: すべてのプラットフォームで.ni.dllをプローブ
// 変更後: WASM環境では.ni.dllプローブを除外
#ifdef TARGET_WASM
    // .ni.dllプローブをスキップ
#endif

変更内容

  • src/coreclr/binder/assemblybindercommon.cpp: .ni.dll プローブロジックをWASM環境で条件付きで除外(31行追加/-50行削除)
  • src/coreclr/binder/applicationcontext.cpp: 不要なアセンブリプローブ関連コード削除(-27行)
  • src/coreclr/binder/inc/applicationcontext.hpp, utils.hpp: 関連する宣言と定義を削除(合計-7行)
  • src/coreclr/binder/utils.cpp: ユーティリティ関数の簡素化(-14行)
  • src/coreclr/hosts/corerun/corerun.cpp, coreshim/CoreShim.cpp: 遺産的な.ni処理コード削除(-4行)
  • src/coreclr/vm/gdbjit.cpp: デバッグJIT関連の.ni処理削除(-12行)
  • テストファイル: WASM非対応のテストケース削除(合計-27行)
  • ARRAY_SIZE マクロ: ハードコード値をマクロに置き換えコード品質向上

パフォーマンスへの影響

改善: WASM環境においてアセンブリロード時に不要な.ni.dllファイルシステムプローブが削除され、スタートアップパフォーマンス向上。不要なファイルI/Oが削減されます。

範囲: WASM固有の最適化であり、他プラットフォーム(Windows、Linux等)への影響なし。

関連Issue

なし

その他

  • 遺産的な.ni(ネイティブイメージ)関連コードの大規模削除により、コードベース保守性向上
  • WASM環境の成熟に伴う仕様の明確化(.niが非対応となったため)
  • コード品質改善:ARRAY_SIZE マクロの導入でマジックナンバー削減

#122594 [release/10.0] [mono][interp] Disable inlining of methods that always throw

  • 作成者: @github-actions[bot]
  • 作成日時: 2025年12月16日 20:49:19(UTC)
  • マージ日時: 2026年01月08日 19:02:14(UTC)
  • ラベル: Servicing-approved area-Codegen-Interpreter-mono

概要

Mono インタプリタで例外を常にスローするメソッド(throw ヘルパーメソッド)のインライン化を禁止する修正です。Blazor WASM アプリがハングする問題を解決します。この修正は .NET 9 のリグレッションに対するバックポートです。

変更内容

  • src/mono/mono/mini/interp/transform.c: インライン化の中止ロジック(3行削除、3行追加)を実装
    • 常にスロー(無条件に例外をスロー)するメソッドのインライン化を防止
    • 既存のインライン中止メカニズムを再利用して実装

パフォーマンスへの影響

軽微な影響。例外を常にスローするヘルパーメソッドのインライン化が回避されるため、若干のコードサイズ増加が考えられますが、ハング問題の回避による安定性向上が優先されます。一般的なメソッドのインライン化には影響しません。

関連Issue

  • リグレッション起因:Pull Request #108731(.NET 9で導入)
  • 元のバグ修正 PR:#122587(release/main ブランチ向け)

その他

カスタマーインパクト:

  • Blazor WASM アプリのハングが報告されており、カスタマー報告済み
  • 理論的には MAUI iOS でも影響を受ける可能性あり

リスク評価: 低リスク。一般的で確立されたインライン中止メカニズムを再利用しているため、新たなリスクの追加なし。


#122588 [release/10.0] [mono][interp] Add max limit to the imported IL when inlining

  • 作成者: @github-actions[bot]
  • 作成日時: 2025年12月16日 12:25:35(UTC)
  • マージ日時: 2026年01月08日 19:03:15(UTC)
  • ラベル: Servicing-approved area-Codegen-Interpreter-mono

概要

Mono インタープリタのインライン化処理に上限を追加し、巨大なメソッドのコンパイル時のメモリ使用量とコンパイル時間の増加を抑制します。インライン化によるコード膨張を制限することで、WebAssembly と iOS ターゲットでのメモリ不足やコンパイルハング問題を防ぎます。

// インライン化の成長サイズが閾値を超えた場合、以降のインライン化を停止
if (imported_il_size > MAX_INLINED_IL_SIZE) {
    // インライン化を無効化
    can_inline = FALSE;
}

変更内容

  • transform.c: インライン化時のインポートされたILサイズの制限ロジック追加(+10行)
  • transform.h: インライン化の上限値定数(MAX_INLINED_IL_SIZE)を定義(+1行)

パフォーマンスへの影響

改善点:

  • 巨大メソッドのコンパイル時メモリ使用量を大幅削減(GB単位の削減が期待できる)
  • メソッドコンパイル時間を数秒以上短縮
  • Out of memory エラーによるクラッシュ防止

懸念点:

  • インライン化の抑制により、一部実行時パフォーマンスが低下する可能性あり(ただし、コンパイル不可に陥るよりは軽微)
  • NET9+ の高度な最適化が有効な場合に特に効果的

関連Issue

#121580(元のPull Request)

その他

  • このバックポートは release/10.0 ブランチへの適用版
  • リスク評価: - インライン化を無効化するだけの単純な修正
  • 顧客報告の問題に基づいた修正で、テスト済み
  • 従来のバグではなく、NET9+ の高度な最適化による副作用への対応

#122511 Reduce the number of sections in R2R PE files

  • 作成者: @jkoritzinsky
  • 作成日時: 2025年12月12日 23:07:44(UTC)
  • マージ日時: 2026年01月08日 21:56:51(UTC)
  • ラベル: tenet-performance area-crossgen2-coreclr

概要

R2R(ReadyToRun)PE ファイルのセクション数を削減するため、セクションフォルディング機構を導入しました。ObjectNodePhase.OrderedObjectNodeOrder を使用してPEデータディレクトリエントリに必要な"well-known"ノードを識別し、rdataセクションをtextセクションへ統合できるようにします。これにより、PE ファイルの構造がシンプル化され、セクション数が減少します。

変更内容

  • ObjectWriter.cs: GetEmitSection() 仮想メソッドと RecordWellKnownSymbol() コールバック機構を追加
  • PEObjectWriter.cs: セクションフォルディングロジック実装、PE ディレクトリエントリ追跡機構を追加
  • ReadyToRun ノードの簡素化: Win32ResourcesNode、CopiedCorHeaderNode など複数ノードで PE 固有ロジックを削除し、統一的に ReadOnlyDataSection を返すように変更
  • MethodWithGCInfo.cs、MethodColdCodeNode.cs: ManagedCodeWindowsContentSection を返すように更新(emit 時に TextSection へフォルド)
  • SortableDependencyNode.cs: DebugDirectoryNode、RuntimeFunctionsGCInfoNode、RuntimeFunctionsTableNode に新しいオーダリング情報を追加
  • ObjectNodeSection.cs: 不要なセクション定数(XDataSection、DebugDirectorySection など)を削除

パフォーマンスへの影響

PE ファイルのセクション数削減により、以下の効果が期待されます:

  • PE ファイルサイズの軽微な削減(セクションヘッダーのオーバーヘッド削減)
  • メモリレイアウト効率向上(セクション統合による連続性向上)
  • ローダーの処理複雑性低減

具体的なベンチマーク数値は提供されていませんが、セクション数削減によるメタデータオーバーヘッド削減が主な改善効果と考えられます。

関連Issue

#121416

その他

  • 互換性: 内部実装の変更であり、公開 API への影響なし
  • 実装パターン: emit 時のセクションマッピングにより、コンパイル時のノード実装をシンプル化。これにより暗黙的な依存関係も修正された
  • 設計の改善: 従来の"good" ClassCode 選択に隠れていた依存関係を明示化

#122467 [clr-interp] Tracing fixes.

  • 作成者: @davidwrighton
  • 作成日時: 2025年12月11日 21:36:32(UTC)
  • マージ日時: 2026年01月08日 00:58:04(UTC)
  • ラベル: area-Tracing-coreclr area-CodeGen-Interpreter-coreclr

概要

CLRインタープリタの生成コードをランタイムダンプとイベントパイプで正しく処理するためのトレーシング修正です。インタープリタコードヒープの走査機能を追加し、CodeHeapIteratorのムーブコンストラクタを修正し、イベントパイプがスタックフレームなしで処理できるよう改善します。これによりBinderTracingTest.ResolutionFlowrundownvalidationテストが修正されます。

変更内容

  • eventtracebase.h: イベントトレーシング基盤に新しいAPI追加(11行追加)
  • utilcode.h: ユーティリティコード内の定義調整(3行修正)
  • codeman.cpp: インタープリタコードヒープの走査ロジック追加とCodeHeapIteratorの実装修正(53行追加/6行削除)
  • codeman.h: CodeHeapIteratorのムーブコンストラクタ/ムーブ代入演算子追加(19行追加/2行削除)
  • ep-rt-coreclr.cpp: イベントパイプのスタックフレーム処理をcontrol_pcなしでも対応可能に(14行追加/1行削除)
  • eventtrace.cpp: インタープリタコードヒープの走査機能実装(41行追加/14行削除)
  • rundownvalidation.cs: テストの失敗条件出力を改善(12行追加/1行削除)

パフォーマンスへの影響

影響なし。本変更はトレーシング機能の正確性向上を目的とした修正であり、ランタイムパフォーマンスへの直接的な影響はありません。

関連Issue

なし

その他

  • 互換性: CodeHeapIteratorのムーブセマンティクス追加は内部実装の改善であり、公開APIの破壊的変更ではありません。
  • テスト改善: rundownvalidationテストの失敗メッセージを詳細化し、デバッグ効率を向上させています。
  • 技術的背景: インタープリタ生成コードはヒープ走査時に特別な処理が必要なため、既存のコード管理機構をそれに対応させたものです。

#122417 [release/8.0-staging] Add fetchTags: false to checkout steps in pipeline YAML files

  • 作成者: @Copilot
  • 作成日時: 2025年12月10日 22:42:36(UTC)
  • マージ日時: 2026年01月08日 18:55:05(UTC)
  • ラベル: Servicing-approved area-Infrastructure

概要

Azure Pipelines の checkout ステップに fetchTags: false パラメータを追加し、git タグの不要な取得をスキップして、チェックアウトパフォーマンスを最適化するCI/CD パイプライン設定の改善です。8つのパイプラインYAMLファイルにおける10の checkout ステップすべてに対して、一貫して適用されています。

- checkout: self
  clean: true
  fetchDepth: $(checkoutFetchDepth)
  fetchTags: false  # タグ取得をスキップ

変更内容

  • eng/pipelines/common/ : evaluate-paths-job.yml、global-build-job.yml に fetchTags: false を追加
  • eng/pipelines/common/templates/runtimes/ : xplat-job.yml(クロスプラットフォーム実行時ジョブテンプレート)に追加
  • eng/pipelines/installer/jobs/ : build-job.yml に追加
  • eng/pipelines/libraries/ : base-job.yml、stress/http.yml(2箇所)、stress/ssl.yml(2箇所)に追加
  • eng/pipelines/official/jobs/ : prepare-signed-artifacts.yml に追加

計8ファイル、10の checkout ステップが変更されました。既存の clean および fetchDepth パラメータは維持されます。

パフォーマンスへの影響

改善点: ネットワークオーバーヘッドの削減により、リポジトリチェックアウト時間が短縮されます。特にリモートリポジトリからの大規模なタグデータ転送を回避することで、ストレステストやビルドパイプラインの全体的なスループットが向上します。

互換性: 既存のパイプライン構成と完全に互換性があり、破壊的変更なし。

関連Issue

なし

その他

  • 本PRはリリース/8.0-staging ブランチを対象
  • eng/common/ 配下の共有インフラストラクチャテンプレートは別途管理のため、変更対象外
  • Copilot コーディングエージェントにより実装され、8ファイルすべてでレビュー完了

#122402 [release/9.0-staging] Add fetchTags: false to all checkout steps in CI pipelines

  • 作成者: @Copilot
  • 作成日時: 2025年12月10日 20:10:12(UTC)
  • マージ日時: 2026年01月08日 18:45:40(UTC)
  • ラベル: Servicing-approved area-Infrastructure

概要

CI パイプラインの全チェックアウトステップに fetchTags: false パラメータを追加し、git タグの不要な取得をスキップすることで、チェックアウト時間とネットワークオーバーヘッドを削減します。8つのパイプライン YAML ファイルの11個のチェックアウトステップが更新されました。

- checkout: self
  clean: true
  fetchDepth: $(checkoutFetchDepth)
  fetchTags: false  # 追加

変更内容

  • コアビルドパイプライン: global-build-job.ymlxplat-job.ymlrun-test-job.yml に各1つ追加
  • ストレステストパイプライン: http.ymlssl.yml に各2つ追加(Linux/Windows両方)
  • ユーティリティパイプライン: evaluate-paths-job.ymldeploy-to-onefuzz.yml に各1つ追加
  • パフォーマンステストパイプライン: perf-job.yml に1つ追加

合計 11 行の追加、ファイル数 8

パフォーマンスへの影響

改善点:

  • git タグ情報の取得を削除することで、リポジトリチェックアウト時のネットワークトラフィック削減
  • CI パイプラインの実行時間短縮(特にネットワーク遅延が大きい環境で効果的)

懸念点: なし。タグ情報は通常 CI ビルドプロセスでは不要であり、既存の fetchDepth パラメータとの組み合わせで十分なリポジトリ情報を確保

関連Issue

なし

その他

  • 変更は内部 CI インフラストラクチャのみに対するもので、ランタイムやコンパイラの動作に影響なし
  • すべての変更は Azure Pipelines の YAML スキーマに準拠した単純な構成更新
  • Copilot による自動化 PR で、すべての変更ファイルがレビュー済み

#122367 [release/10.0] Add fetchTags: false to all checkout steps in Azure Pipelines

  • 作成者: @github-actions[bot]
  • 作成日時: 2025年12月09日 23:39:29(UTC)
  • マージ日時: 2026年01月08日 18:56:12(UTC)
  • ラベル: Servicing-approved

概要

Azure Pipelinesのすべてのチェックアウトステップに fetchTags: false を追加するインフラストラクチャのみの変更です。この設定により、ビルドパイプラインのソースコード取得時間を削減し、CI全体のビルド速度を向上させます。

変更内容

9つのAzure Pipelineヤマルファイルに fetchTags: false パラメータを追加:

  • eng/pipelines/common/evaluate-paths-job.yml
  • eng/pipelines/common/global-build-job.yml
  • eng/pipelines/common/templates/runtimes/xplat-job.yml
  • eng/pipelines/diagnostics/runtime-diag-job.yml
  • eng/pipelines/libraries/deploy-networking-echo-test-servers.yml
  • eng/pipelines/libraries/fuzzing/deploy-to-onefuzz.yml
  • eng/pipelines/libraries/run-test-job.yml
  • eng/pipelines/libraries/stress/http.yml
  • eng/pipelines/libraries/stress/ssl.yml

パフォーマンスへの影響

改善あり - Gitタグの取得をスキップすることで、すべてのビルドレッグにおけるソースコードチェックアウト時間を削減します。タグが不要なビルドパイプラインにおいて、ネットワークI/O削減による効果が期待できます。

関連Issue

#122250(元のPull Request)

その他

  • 本変更はインフラストラクチャのみの変更で、ランタイムコード自体への影響なし
  • 内部で発見された最適化案を実装
  • リスク評価:低
  • テスト:CI環境で検証済み
  • release/10.0ブランチへのバックポート

#122199 [release/8.0-staging] Fix analyzer crash on C# 14 extensions

  • 作成者: @Copilot
  • 作成日時: 2025年12月04日 22:01:38(UTC)
  • マージ日時: 2026年01月08日 21:36:44(UTC)
  • ラベル: Servicing-approved linkable-framework

概要

ILLink Roslyn アナライザーがC# 14の拡張メンバーを解析する際にクラッシュする問題を修正するバックポートです。問題の原因は、パラメータのContainingSymbolが常にIMethodSymbolであると仮定していたことで、拡張メンバーの場合は拡張型が入るためInvalidCastExceptionが発生していました。修正により、拡張メンバーの解析をスキップし、安全なキャスト処理に変更しています。

変更内容

  • MethodParameterValue.cs: 危険なキャスト処理を行うコンストラクタを削除
  • ParameterProxy.cs: コンストラクタで明示的なIMethodSymbolパラメータを要求するよう変更(内部キャスト廃止)
  • TrimAnalysisVisitor.cs: パラメータのContainingSymbolがメソッドかどうかをチェックするガード条件を追加、拡張メンバーの場合はTopValueを返す
  • ExtensionsDataFlow.cs: 新規テストケース(拡張メソッド向け、C# 14拡張メンバーではない)
  • DataFlowTests.cs: 新規テストケースを実行するメソッド追加

パフォーマンスへの影響

影響なし。今回の変更は、.NET 8.0リリース後に導入されたC# 14言語機能との互換性対応のため、既存の.NET 8.0プロジェクトのパフォーマンスには影響しません。

関連Issue

その他

  • リスク: 低。アナライザーのみの修正で、拡張メンバー処理に限定されたスコープ
  • テスト: ローカルでテスト済み。自動テストは既存リポジトリのRoslyn バージョンが古いため追加不可
  • 互換性: 既存機能(IMethodSymbolを持つパラメータ)は変更なし。新言語機能への対応のみ
  • 回帰: なし。C# 14後の新機能対応であり、.NET 8.0からの回帰ではない

#121739 [RISC-V] Enable constant CSE in RISCV64

  • 作成者: @namu-lee
  • 作成日時: 2025年11月18日 11:17:52(UTC)
  • マージ日時: 2026年01月08日 13:03:17(UTC)
  • ラベル: area-CodeGen-coreclr community-contribution arch-riscv

概要

RISC-V64アーキテクチャでConstant CSE(共通部分式排除)最適化を有効化するPRです。大きな定数の読み込みに複数命令が必要なRISC-Vにおいて、繰り返し使用される定数のロード命令をホイストして共有することで、冗長な命令シーケンスを削減します。これにより、ARM/ARM64と同等の最適化レベルに到達します。

// 例:3つの大きな定数を使用する場合
// 最適化前:各使用箇所で独立してロード命令を発行(合計9命令)
// 最適化後:定数ロード命令を1度だけ実行し、複数箇所で共有

変更内容

  • optcse.cpp: 条件付きコンパイルブロックを更新し、RISCV64でConstant CSEを有効化
  • jitconfigvalues.h: ARM特有の設定定数をARM_RISCV64に変更し、プラットフォーム対応範囲を拡張
  • gentree.cpp: RISC-V64の定数ロードコスト推定ロジック追加(emitter::emitLoadImmediateから複製)
  • emitriscv64.cpp/h: RISC-V64命令発行機能の整備とコメント修正
  • codegenriscv64.cpp: コード生成ロジック調整
  • lowerriscv64.cpp: IR低レベル化処理追加

パフォーマンスへの影響

改善点: RISC-V64で大定数を複数回使用する場合、命令キャッシュ圧力とメモリ帯域幅の削減が期待されます。RISC-Vでは大定数生成に最低3命令必要なため、CSE有効化による命令削減効果は顕著です。具体的なベンチマーク値は提供されていませんが、コード密度向上による実行時間短縮を見込めます。

関連Issue

#84834 Samsung関連の最適化イニシアチブの一部

その他

このPRはARM/ARM64との機能的パリティを実現し、RISC-V64ポートの最適化成熟度向上に寄与します。


#121584 arm64: Refactor GenerateHWIntrinsicTests_Arm.cs

  • 作成者: @jonathandavies-arm
  • 作成日時: 2025年11月13日 14:51:19(UTC)
  • マージ日時: 2026年01月08日 23:24:22(UTC)
  • ラベル: arch-arm64 area-CodeGen-coreclr Priority:2 community-contribution

概要

ARM64ハードウェアイントリンシックテスト生成コードのリファクタリング。テストグループと テンプレート用の構造体を導入し、ISA(Instruction Set Architecture)と LoadIsa 値をテストグループレベルで一元管理。コード生成処理関数(Process* 関数)を整理してテストコード生成の保守性と可読性を向上。

変更内容

  • GenerateHWIntrinsicTests_Arm.cs: テストグループ用の構造体追加、Process* 関数の簡潔化(+87/-39)
  • Templates.cs: テンプレート定義の拡張(+128/-65)
  • AdvSimdTests.cs, SveTests.cs, Sve2Tests.cs: テスト定義の大規模リファクタリング(行の置き換え)
  • BaseTests.cs: 基本テスト構成の整理(+32/-32)
  • テンプレートファイル群: ARM共有テンプレート74ファイルの軽微な更新(各+1/-1)

パフォーマンスへの影響

影響なし。本変更はテストコード生成ロジックの構造化であり、ランタイムパフォーマンスおよびテスト実行パフォーマンスへの直接的な影響はありません。

関連Issue

なし

その他

  • 本変更は内部テストフレームワーク(Common/GenerateHWIntrinsicTests)の非推奨化されていない公開APIではない部分への変更です
  • テストコード生成ロジックの理解を容易にし、将来の ARM ハードウェアイントリンシックの追加時の保守性を向上させます
  • AdvSimd、SVE、SVE2 など複数の ARM ISA セットに跨る統一的な構造化により、重複コードの削減と一貫性向上を実現