注意点
このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。
目次
- #125462 [release/9.0] fix xharness
- #125443 Fix a regression to collection asserting in
AssemblyChecker - #125442 Add html.escape to func_name in superpmi diffs report
- #125430 [wasm][coreclr] Enable async v2 in tests
- #125424 [release/10.0] Fix TOCTOU race in AppDomain::LoadAssembly fast-path
- #125414 Update copilot-instructions with git confirmation and code-review skip rules
- #125408 Fix TOCTOU race in AppDomain::LoadAssembly fast-path
- #125402 Merging internal commits for release/9.0
- #125400 Merging internal commits for release/8.0
- #125387 Add Antlr license in THIRD-PARTY-NOTICES.TXT
- #125382 [LoongArch64] Fix the risk of boundary overflow for Unsigned GT_LE in CodeGen::genCodeForCompare().
- #125377 Implement async handle support on Unix for FileStream
- #125376 [wasm][coreclr] Fix vtable issue and interpreter I4/I8 arithmetic
- #125354 Fix running native aot testing locally
- #125348 Fix Directory_Delete_MountVolume test: guard Unmount calls with Directory.Exists check
- #125297 [wasm] Bump chrome for testing - linux: 145.0.7632.159, windows: 146.0.7680.66
- #125290 Replace AsnValueReader with ValueAsnReader and remove internal type
- #125249 Mark Runtime_76219 GC regression test as CLRTestTargetUnsupported
- #125212 [release/9.0-staging] [mono][sgen] Fix card scanning in LOS non-array objects
- #125114 [LoongArch64] Enable Runtime Async. (issue#124935)
- #125090 [RyuJit Wasm] Fix Signature Generation Bug with Un-called methods
- #125072 JIT: Fix invalid IR and weights in if-conversion
- #125064 [cDAC] Implement GetContext and GetAppDomain on ClrDataFrame
- #124994 Fix source generator diagnostics to support #pragma warning disable
- #124984 Align final section to file alignment, not to virtual image size
- #124939 [cDAC] Implement SOSDacImpl.GetRCWInterfaces
- #124756 [release/8.0] Update dependencies from dotnet/emsdk
- #124584 [release/10.0] Fix certificate disposal in RemoteCertificateValidationCallback causing NRE on reuse
- #124516 Support for variable sized locals in morph and lclmorph
- #124464 [release/9.0] Update dependencies from dotnet/emsdk
- #124213 [LoongArch64] Place async resumption info in read-write section which reference #123433
- #124164 [main] Update dependencies from dotnet/xharness
- #124033 Remove duplicated SVE GatherVector APIs
- #123546 arm64: Remove widening casts before truncating
#125462 [release/9.0] fix xharness
- 作成者: @github-actions[bot]
- 作成日時: 2026年03月11日 22:26:35(UTC)
- マージ日時: 2026年03月11日 23:00:52(UTC)
- ラベル: Servicing-approved area-codeflow
概要
CI パイプラインの xharness テストランナーで発生した問題を修正するテストのみの変更です。PR #123122 で導入された問題を解決するため、release/9.0 ブランチへ #114746 をバックポートしています。
変更内容
- src/tests/Common/XHarnessRunnerLibrary/GeneratedTestRunner.cs
- xharness テストランナーライブラリの生成されたテストランナーコードを修正
- 4行追加、3行削除(合計7行の変更)
パフォーマンスへの影響
影響なし(テストのみの変更)
関連Issue
その他
- CI パイプラインのアンブロック目的の変更
- 自動化ボット(github-actions[bot])による backport PR
#125443 Fix a regression to collection asserting in AssemblyChecker
- 作成者: @mrvoorhe
- 作成日時: 2026年03月11日 14:06:48(UTC)
- マージ日時: 2026年03月11日 20:53:07(UTC)
- ラベル: linkable-framework community-contribution area-Tools-ILLink
概要
PR #97605で導入されたToHashSet()とSetEquals()の使用により、ILLinkテストフレームワークのテストカバレッジが低下していた問題を修正します。これらのメソッドはコレクションの重複排除と順序の無視により、命令列の並び替えやメソッド本体の変更を検出できなくなっていました。本PRでは順序を考慮した比較に戻し、さらにKeptAttributeAttributeを拡張してコンストラクタ引数マッチングに対応させ、属性の重複排除による問題を解決します。
変更内容
- AssemblyChecker.cs:
ToHashSet()/SetEquals()の使用を削除し、シーケンスベースの比較に変更。属性引数を考慮したマッチングロジックを追加。 - KeptAttributeAttribute.cs: コンストラクタパラメータ指定に対応した新しいコンストラクタを追加。特定の属性インスタンスをパラメータで識別可能に。
- TypeMap.cs: アセンブリレベルの
KeptAttributeAttributeアサーションにコンストラクタ引数を含めるように更新。Roslyn による属性の重複排除に対応。 - VerifyLocalsAreChanged.cs/xml: メソッド本体とローカル変数の変更をアサートする新規テストケース追加。
- VerifyKeptAttributeAttributeWorks.cs: パラメータ化された
KeptAttributeAttributeマッチング(重複や引数を含む)の検証テスト追加。 - TestFrameworkTests.g.cs: 新規テストケースを生成テスト一覧に追加。
パフォーマンスへの影響
影響なし
関連Issue
#97605(PR、回帰原因) #116355(PR、TypeMapテストの依存関係)
その他
本変更はテストインフラストラクチャの修正であり、ランタイムやコンパイラの動作には直接影響しません。ILLinkテストフレームワークのアサーション精度向上により、今後のリンカー最適化に関連する回帰をより確実に検出できるようになります。KeptAttributeAttributeの拡張は、Roslinによるコンパイル時の属性重複排除に対応する必要性から生まれた設計変更です。
#125442 Add html.escape to func_name in superpmi diffs report
- 作成者: @Copilot
- 作成日時: 2026年03月11日 14:01:32(UTC)
- マージ日時: 2026年03月11日 22:24:33(UTC)
- ラベル: area-CodeGen-coreclr
概要
SuperPMI asm diffs マークダウンレポートにおいて、ジェネリック型パラメータなど <、>、& などの文字を含むメソッド名が HTML として誤解釈されるのを防ぐため、func_name を HTML エスケープする機能を追加しました。
変更内容
src/coreclr/scripts/superpmi.py: Python のhtmlモジュールをインポートし、DetailsSectionヘッダー内のfunc_nameをhtml.escape()でエスケープするよう修正
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
この変更はランタイムの SuperPMI (Super Performance Micro Infrastructure) ツールにおけるレポート生成ロジックの修正であり、開発・デバッグ用のツール機能改善です。メソッド名に含まれる HTML 特殊文字が <summary> 要素内で正しく処理されることで、レポートの可読性と正確性が向上します。
#125430 [wasm][coreclr] Enable async v2 in tests
- 作成者: @radekdoulik
- 作成日時: 2026年03月11日 09:07:06(UTC)
- マージ日時: 2026年03月11日 16:09:13(UTC)
- ラベル: arch-wasm area-Infrastructure-coreclr os-browser
概要
WASM/CoreCLR上のテスト実行でasync v2機能を有効にするため、テスト用MSBuildロジックを更新しました。ブラウザターゲットを除外する条件を削除し、WASMプラットフォームでも"runtime async"機能フラグが有効になるようにします。
変更内容
- eng/testing/tests.targets:
TargetOS != browserの除外条件を削除し、runtime-async=on機能有効化の条件を緩和
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
このPRはWASM/CoreCLRテスト環境でのasync v2機能試験を目的とした、テスト基盤の準備変更です。実装的には単一ファイルへの小規模な条件削除となっています。
#125424 [release/10.0] Fix TOCTOU race in AppDomain::LoadAssembly fast-path
- 作成者: @github-actions[bot]
- 作成日時: 2026年03月11日 03:17:56(UTC)
- マージ日時: 2026年03月11日 22:14:54(UTC)
- ラベル: Servicing-approved area-VM-coreclr
概要
AppDomain::LoadAssemblyの高速パス(fast-path)におけるTOCTOU(Time-of-Check-Time-of-Use)レース条件を修正します。PR #120515で導入された回帰を解決するもので、ローカル変数のスコープをロック内により局所化することで競合状態を回避します。
変更内容
- src/coreclr/vm/appdomain.cpp: ローカル変数の初期化タイミングをロック内に移動し、TOCTOU脆弱性を排除(+3/-3行)
パフォーマンスへの影響
影響なし
関連Issue
#125408(元のPR)、#120515(回帰を導入したPR)
その他
- 重要度: 中程度。実環境での再現率は非常に低い(< 1/100,000)ですが、エンタープライズ顧客に影響を与えた信頼性の問題です
- 前提条件: 標準出力/標準エラーの同時EOF、アンロードされたターゲットアセンブリ、正確なOSスレッドプリエンプションの組み合わせ
- リスク: 低い。変更は明らかなTOCTOU問題を修正し、より良いエンジニアリング慣行に沿った局所的なロック使用パターンです
- 対象: release/10.0ブランチへのバックポート
#125414 Update copilot-instructions with git confirmation and code-review skip rules
- 作成者: @AaronRobinsonMSFT
- 作成日時: 2026年03月10日 21:31:27(UTC)
- マージ日時: 2026年03月11日 03:17:28(UTC)
- ラベル: area-Infrastructure
概要
Copilot指示ファイルを更新し、2つの新しいルールを追加しました:
- Git確認ゲート:
git commit --amendまたはgit push実行時に常にユーザー確認を求める(不可逆的なGit操作の無許可実行を防止) - コードレビュースキップ:ユーザーが自分でレビューすると明示した場合、
code-reviewスキルの呼び出しをスキップ(不要な自動レビュー実行を防止)
変更内容
.github/copilot-instructions.md:Git操作確認とコードレビュー条件付き実行のルール追加(+10/-1)
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
このPRは開発プロセスの自動化ツール設定変更であり、リポジトリ成果物やランタイム動作には直接的な影響がありません。Copilotエージェントの指示書更新のみです。
#125408 Fix TOCTOU race in AppDomain::LoadAssembly fast-path
- 作成者: @AaronRobinsonMSFT
- 作成日時: 2026年03月10日 21:04:26(UTC)
- マージ日時: 2026年03月11日 19:13:58(UTC)
- ラベル: area-AssemblyLoader-coreclr
概要
PR #120515でFileLoadLock::m_pAssemblyの遅延初期化が導入された際、AppDomain::LoadAssemblyの高速パスが更新されず、TOCTOU(Time-of-Check to Time-of-Use)競合状態が発生していました。別スレッドが読み取り間にアセンブリをロードすると、キャッシュされたnullptrがのちに参照され、0xC0000005アクセスバイオレーションでクラッシュしていました。本修正は、ロードレベルチェック後にアセンブリポインタを読み取るよう順序を修正し、スレッド間での安全な読み取りを保証します。
変更内容
- src/coreclr/vm/appdomain.cpp:
AppDomain::LoadAssemblyの高速パスでpLock->GetAssembly()の読み取りをpLock->GetLoadLevel() >= targetLevelチェックの後に移動 - 遅延初期化されたアセンブリポインタへのアクセスを、ロードレベル確認後に行うことで競合を排除
- 遅延パスの末尾(行2619)で既に使用されていた「読み取り後使用」パターンと一貫性を持たせた
パフォーマンスへの影響
影響なし (この修正は正確性の問題を解決するもので、パフォーマンス特性には変化がありません)
関連Issue
その他
- 本バグはヘビーCPU負荷下での並行スレッドプール読み込み時に非常に稀(< 1/100,000)な致命的クラッシュとして報告されていました
System.Threading.ThreadPoolなどの遅延ロードアセンブリが複数スレッドで並行解決される際に顕在化
#125402 Merging internal commits for release/9.0
- 作成者: @vseanreesermsft
- 作成日時: 2026年03月10日 20:18:20(UTC)
- マージ日時: 2026年03月11日 18:25:42(UTC)
- ラベル: Servicing-approved area-codeflow
概要
release/9.0ブランチの内部コミットをマージするPull Requestです。Base64Url関連の機能に対する修正が含まれています。
変更内容
- src/libraries/System.Memory/tests/Base64Url/Base64UrlUnicodeAPIsUnitTests.cs: テストコードの修正(3行追加、2行削除)
- src/libraries/System.Private.CoreLib/src/System/Buffers/Text/Base64Helper/Base64DecoderHelper.cs: Base64デコーダーヘルパーの修正(5行追加)
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
なし
#125400 Merging internal commits for release/8.0
- 作成者: @vseanreesermsft
- 作成日時: 2026年03月10日 20:03:06(UTC)
- マージ日時: 2026年03月11日 18:26:40(UTC)
- ラベル: Servicing-approved area-codeflow
概要
このPull Requestは、release/8.0ブランチ向けの内部コミットをマージするものです。詳細な変更内容については、提供されたファイル情報が不足しているため確認できません。
変更内容
変更ファイルの情報が提供されていないため、詳細な変更内容は不明です。
パフォーマンスへの影響
不明
関連Issue
なし
その他
- 本PRは内部コミットのマージであり、公開APIへの影響の有無は確認できません
- Copilotによるコード審査が実施されていない状態です
#125387 Add Antlr license in THIRD-PARTY-NOTICES.TXT
- 作成者: @am11
- 作成日時: 2026年03月10日 14:18:23(UTC)
- マージ日時: 2026年03月11日 04:19:03(UTC)
- ラベル: area-Setup community-contribution
概要
ANTLR(Another Tool for Language Recognition)のライセンス情報をTHIRD-PARTY-NOTICES.TXTに追加するPull Requestです。dotnet/runtimeリポジトリで使用されているサードパーティライブラリのライセンス表記を更新しています。
変更内容
- THIRD-PARTY-NOTICES.TXT: ANTLRのライセンス情報を33行追加(+33/-0)
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
このPull Requestは、dotnet/dotnetリポジトリのPR #5262に関連しています。ライセンス表記の更新であるため、機能的な変更やコード変更は含まれていません。
#125382 [LoongArch64] Fix the risk of boundary overflow for Unsigned GT_LE in CodeGen::genCodeForCompare().
- 作成者: @LuckyXu-HF
- 作成日時: 2026年03月10日 12:55:37(UTC)
- マージ日時: 2026年03月11日 09:35:33(UTC)
- ラベル: area-CodeGen-coreclr community-contribution arch-loongarch64
概要
LoongArch64のコード生成において、符号なし整数のGT_LE比較演算で境界値オーバーフローのリスクを修正しました。SpanHelpers.ByteMemOps.cs:172でのアサーション失敗を解決する変更です。
変更内容
- src/coreclr/jit/codegenloongarch64.cpp: LoongArch64コード生成器の
genCodeForCompare()メソッドで、符号なし整数のGT_LE比較における境界チェックロジックを修正。条件判定処理に11行追加、既存の2行を置き換え(+11/-2)
パフォーマンスへの影響
影響なし
関連Issue
その他
- LoongArch64アーキテクチャ固有の修正
- JIT(Just-In-Time)コンパイラのコード生成ロジック改善
#125377 Implement async handle support on Unix for FileStream
- 作成者: @Copilot
- 作成日時: 2026年03月10日 12:03:28(UTC)
- マージ日時: 2026年03月11日 13:29:41(UTC)
- ラベル: area-System.IO
概要
UnixプラットフォームでFileStreamが非ブロッキング(O_NONBLOCK)ハンドルをサポートするようになりました。ネイティブ層にポーリング機能を追加し、パイプやソケットなどの非同期ハンドルをFileStreamでラップできるようになります。これまではUnixで非ブロッキングハンドルを使用するとArgumentExceptionが発生していました。
変更内容
ネイティブ層(pal_io.c, pal_io.h, entrypoints.c)
SystemNative_ReadFromNonblockingとSystemNative_WriteToNonblockingを追加EAGAIN/EWOULDBLOCK発生時にCommon_Pollでスレッドプール上でポーリングし、データ/スペース利用可能またはパイプクローズまで待機後にI/Oを再試行- 読み込みのEOFは0を返却、書き込みのパイプクローズは-1とEPIPEを返却
Interop層
Interop.Read.csとInterop.Write.csに P/Invoke宣言を追加
RandomAccess.Unix.cs
ReadAtOffset/WriteAtOffsetでhandle.IsAsyncをチェックし、非ブロッキング処理へディスパッチ- 同期ハンドルの既存の
SupportsRandomAccess/pread/pwriteパスは変更なし
FileStream/テスト
- Unixで非ブロッキングハンドルに対してArgumentExceptionを発生させていた
ValidateHandleガードを削除 AsyncHandleOnUnix_FileStream_ctor_ThrowsテストをSafeFileHandle_CreateAnonymousPipe_FileStream_SetsIsAsyncAndTransfersDataに置き換え(4つのasyncRead/asyncWrite組み合わせが機能することを検証)
パフォーマンスへの影響
非ブロッキングハンドルでのI/O操作は、必要に応じてスレッドプール上でポーリングするため、スループット向上が期待できます。ただし、EAGAIN/EWOULDBLOCKが頻繁に発生する場合はポーリングオーバーヘッドが生じる可能性があります。具体的なベンチマーク結果は提供されていません。
関連Issue
その他
- 破壊的変更なし(既存のBlocking API互換性維持)
- Unixプラットフォームのみへの変更(Windows は
OverlappedIOで既にサポート) AnonymousPipeClientStreamなど他のストリームAPIも間接的にこの機能を活用可能
#125376 [wasm][coreclr] Fix vtable issue and interpreter I4/I8 arithmetic
- 作成者: @radekdoulik
- 作成日時: 2026年03月10日 12:00:39(UTC)
- マージ日時: 2026年03月11日 07:19:45(UTC)
- ラベル: arch-wasm area-VM-coreclr
概要
WASM環境で発生していた2つの問題を修正:
- スタブベースメソッドのプリスタブ処理時にスタブのエントリポイントではなくメソッド自身のPortableEntryPointを使用し、MethodDesc-to-entrypointの1:1マッピングを保証
- 32ビットターゲットでI4/I8混合算術の拡張を有効化(conv.i8の結果をI4として扱う問題に対応)
変更内容
- src/coreclr/vm/prestub.cpp: スタブベースメソッド(delegateやarray ops)がプリスタブされる際、スタブではなくメソッド自身のPortableEntryPointを使用するように修正(5行追加)
- src/coreclr/interpreter/compiler.cpp: I4/I8混合算術の拡張に関するTARGET_64BITガードを削除し、32ビットWASMでも動作するように修正(2行削除)
- テストファイル削除: sin3double.il、moduleHandleCache.cs、switch6.ilが削除(これらのテストが問題により不安定だった可能性)
パフォーマンスへの影響
影響なし
関連Issue
その他
このPRはWASM(32ビット)環境での内部実装修正です。GetMethodDescForSlot_NoThrow関数が正しく機能するために必要なメンテナンスです。
#125354 Fix running native aot testing locally
- 作成者: @MichalStrehovsky
- 作成日時: 2026年03月09日 23:44:31(UTC)
- マージ日時: 2026年03月11日 21:16:32(UTC)
- ラベル: area-NativeAOT-coreclr
概要
NativeAOT テスト実行時にローカル環境で *.testResults.xml アーティファクトが生成されない問題を修正します。各テストプロジェクトを個別のマージドランナーとして扱う従来の方式から、単一の統合テストラッパープロジェクト(nativeaot.csproj)による統一的な管理に変更し、テスト結果の適切な生成を実現します。
変更内容
- src/tests/nativeaot/nativeaot.csproj: NativeAOT テストプロジェクトを参照する新規マージドテストランナーラッパープロジェクトを追加
- src/tests/nativeaot/Directory.Build.props: サブツリー全体の
HasMergedInTestsプロパティ定義を削除(6行) - src/tests/nativeaot/Directory.Build.targets: サブツリー全体に適用されていたマージドランナー動作を定義していたインポートを削除(13行)
- src/tests/nativeaot/StartupHook/StartupHook.csproj:
HasMergedInTestsプロパティを削除 - src/tests/nativeaot/MobileSmokeTest/: モバイルプラットフォーム向け新規テストプロジェクトを追加
- eng/pipelines/extra-platforms/: iOS・iOS Simulator・Mac Catalyst パイプライン設定を更新
パフォーマンスへの影響
影響なし
関連Issue
その他
- テストビルドシステムの内部実装変更で、公開APIへの影響はありません
- ローカルでのテスト実行時の成果物生成ロジックの改善です
#125348 Fix Directory_Delete_MountVolume test: guard Unmount calls with Directory.Exists check
- 作成者: @Copilot
- 作成日時: 2026年03月09日 20:38:43(UTC)
- マージ日時: 2026年03月11日 04:13:48(UTC)
- ラベル: area-VM-coreclr
概要
Windows NTFS ボリュームマウントポイント削除テストの間欠的な失敗を修正します。Directory.Delete がマウントポイントディレクトリを削除後、finally ブロック内の MountHelper.Unmount() 呼び出しが Win32 エラー 4390/3 をスローし、テスト失敗につながっていた問題を解決します。Scenarios 1, 2, 3.1, 3.2 の finally ブロックで、アンマウント前にディレクトリの存在確認を追加し、既に Scenarios 3.3–3.5 で使用されているパターンに統一します。
// Before
finally
{
MountHelper.Unmount(mountedDirName);
DeleteDir(mountedDirName, true);
}
// After
finally
{
if (Directory.Exists(mountedDirName))
{
MountHelper.Unmount(mountedDirName);
DeleteDir(mountedDirName, true);
}
}
変更内容
- Delete_MountVolume.cs: Scenarios 1, 2, 3.1, 3.2 の 4 つの
finallyブロックで、MountHelper.Unmount()とDeleteDir()の呼び出しをDirectory.Exists(mountedDirName)でガード
パフォーマンスへの影響
影響なし
関連Issue
#14378(テスト全体が [ActiveIssue] 属性でマークされている関連イシュー)
その他
- テスト専用の修正(System.Runtime テストスイート内)
- 内部実装の変更なし、公開API への影響なし
- ファイルシステム操作の信頼性向上を目的としたテスト堅牢化
#125297 [wasm] Bump chrome for testing - linux: 145.0.7632.159, windows: 146.0.7680.66
- 作成者: @github-actions[bot]
- 作成日時: 2026年03月08日 00:10:12(UTC)
- マージ日時: 2026年03月11日 14:52:10(UTC)
- ラベル: arch-wasm area-Infrastructure-mono
概要
WebAssemblyテスト環境で使用するChromeバージョンをアップデートしました。Linux環境を145.0.7632.159に、Windows環境を146.0.7680.66に更新しています。
変更内容
- eng/testing/BrowserVersions.props: ブラウザバージョン設定ファイルの更新(Linux: 145.0.7632.159、Windows: 146.0.7680.66)
- src/mono/wasm/testassets/BlazorBasicTestApp/App/Layout/NavMenu.razor: Blazor基本テストアプリケーションのナビゲーションメニューコンポーネントの軽微な修正
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
このPRはbot自動化によるメンテナンス更新です。
#125290 Replace AsnValueReader with ValueAsnReader and remove internal type
- 作成者: @Copilot
- 作成日時: 2026年03月07日 14:36:37(UTC)
- マージ日時: 2026年03月11日 02:43:46(UTC)
- ラベル: area-System.Security
概要
内部型 AsnValueReader の全使用箇所を、#125254で導入された公開型 ValueAsnReader(System.Formats.Asn1)に置き換え、内部型を削除するリファクタリング。ASN.1解析機能を内部実装から公開APIへ統合することで、コード重複を排除し、公開APIの活用を推進します。
変更内容
- 型置き換え:
NegotiateAuthenticationPal.ManagedSpnego.cs(6箇所)とCompositeMLDsaTestHelpers.cs(2箇所)のAsnValueReaderをValueAsnReaderに変更 - ファイル削除:
AsnValueReader.cs(258行)を削除 - ファイル再構成:
AsnWriterExtensionsを新規ファイル(AsnWriter/AsnWriterExtensions.cs)に抽出し、Asn1Readerディレクトリを削除 - projitems更新:
Asn1Reader.Shared.projitemsをAsnWriter.Shared.projitemsに置き換え、5つのcsprojファイルのパスを更新 - 依存関係削除:
System.Net.Security.csprojから不要な projitems インポートを削除(同プロジェクトはAsnWriterExtensionsを使用しないため) - RSAOpenSsl.cs: 関連する変更(35行削除、12行追加)
パフォーマンスへの影響
影響なし(リファクタリングのため機能的な変更なし)
関連Issue
その他
- 全プロジェクト(
System.Net.Security、System.Security.Cryptography、System.Security.Cryptography.Pkcs、Microsoft.Bcl.Cryptography)のビルド成功を確認 - 暗号テストスイート合格(X509チェーン・ネットワーク関連の既知不具合4件は本変更と無関係)
AsnValueReaderへの残存参照なし
#125249 Mark Runtime_76219 GC regression test as CLRTestTargetUnsupported
- 作成者: @Copilot
- 作成日時: 2026年03月05日 23:01:49(UTC)
- マージ日時: 2026年03月11日 20:49:52(UTC)
- ラベル: area-System.Runtime
概要
macOS arm64上のGCストレステストでホストレベルのクラッシュ(SIGTRAP、終了コード133)が発生しているRuntime_76219テストを、プロジェクトレベルで無効化します。GCストレス設定(DOTNET_GCStress=0x3など)がxUnitの[ActiveIssue]スキップ判定前に適用されるため、<CLRTestTargetUnsupported>true</CLRTestTargetUnsupported>を追加して、テストの構築・実行そのものを防ぎます。
変更内容
- Runtime_76219.csproj:
<CLRTestTargetUnsupported>true</CLRTestTargetUnsupported>を追加し、参照する追跡Issue(#78899)をコメントで明記。これにより_WillCLRTestProjectBuildがfalseに設定され、テスト構築が回避される。
パフォーマンスへの影響
影響なし
関連Issue
その他
- テスト本体は既に
[ActiveIssue("...#78899", TestRuntimes.CoreCLR)]で無効化されていましたが、カスタムGCストレス環境変数がテストホスト起動時に無条件で適用されるため、xUnitのスキップロジックが評価される前にクラッシュが発生していました - 本対応は一時的な回避策であり、根本的な修正は#78899で実施される予定です
#125212 [release/9.0-staging] [mono][sgen] Fix card scanning in LOS non-array objects
- 作成者: @github-actions[bot]
- 作成日時: 2026年03月05日 11:22:25(UTC)
- マージ日時: 2026年03月11日 23:43:27(UTC)
- ラベル: Servicing-approved area-VM-meta-mono
概要
Mono/SGen ガベージコレクタにおいて、8KB以上のLOS(Large Object Space)非配列オブジェクトのカード走査時にアドレスアライメント処理が不足していた問題を修正します。この問題により、大きなオブジェクト内に格納されたオブジェクト参照がGCに検出されず、GCクラッシュまたは未定義動作を引き起こす可能性がありました。
変更内容
- src/mono/mono/sgen/sgen-cardtable.c: カード走査時のアドレスアライメント処理を追加(+1行)
パフォーマンスへの影響
影響なし。修正はアドレスアライメント処理の追加のみで、パフォーマンスへの負の影響はありません。
関連Issue
#125116(オリジナルのPull Request)
その他
- 顧客報告: 有。この問題は顧客により報告・調査済みです
- リスク評価: 低。修正はアドレスアライメント処理の追加に限定されます
- テスト: コンソールアプリでバグ再現を確認し、修正を検証済み
- 対象: Monoワークロード全般に影響する可能性がある問題
- 関連クラッシュ: 他の未診断GCクラッシュも同じ原因で修正される可能性があります
#125114 [LoongArch64] Enable Runtime Async. (issue#124935)
- 作成者: @LuckyXu-HF
- 作成日時: 2026年03月03日 13:13:00(UTC)
- マージ日時: 2026年03月11日 09:13:43(UTC)
- ラベル: area-VM-coreclr community-contribution arch-loongarch64 runtime-async
概要
LoongArch64アーキテクチャで非同期ランタイム機能を有効化するための実装です。ヒジャッキング処理で非同期継続レジスタを保持し、非同期再開時の情報をリードライトセクションに配置する変更が含まれます。FEATURE_REMAP_FUNCTIONがLoongArch64で有効化されていないため、関連する前の変更(PR #121672)をリバートしています。
変更内容
- codegenloongarch64.cpp: ヒジャッキング関連のコード削減(64行→6行追加に圧縮)、不要な処理をリバート
- lclvars.cpp: ローカル変数処理の微調整
- GcProbe.S: NativeAOT向けガベージコレクションプローブの非同期継続レジスタ保持処理を追加
- unixasmmacrosloongarch64.inc: asm補助マクロを追加
- Relocation.cs: リロケーション処理にLoongArch64向けの対応を追加
- util.cpp: ユーティリティコードを拡張
- asmhelpers.S, cgencpu.h, stubs.cpp: LoongArch64 VM層のアセンブリ補助とスタブ処理を更新
パフォーマンスへの影響
影響なし
関連Issue
#124935(本PR対応のメインIssue) #124213(非同期再開情報のリードライトセクション配置) #121672(リバート対象のPR)
その他
本変更はLoongArch64アーキテクチャにおけるランタイム非同期機能の完全なサポートを実現するもので、複数のPRに分割されています。内部実装の変更であり、公開APIへの影響なし。
#125090 [RyuJit Wasm] Fix Signature Generation Bug with Un-called methods
- 作成者: @adamperlin
- 作成日時: 2026年03月03日 00:36:26(UTC)
- マージ日時: 2026年03月11日 16:47:20(UTC)
- ラベル: arch-wasm area-crossgen2-coreclr
概要
WebAssembly (WASM) コンパイルにおけるシグネチャ生成ロジックのバグを修正。PR #124685で導入されたWasmTypeNodeを使用したシグネチャ記録ロジックに対応するため、MethodWithGCInfoの静的依存性としてWasmTypeNodeを追加し、コンパイルされたすべてのメソッドに対して確実にシグネチャノードが生成されるようにしました。
変更内容
- DependencyAnalysis:
WasmTypeNodeを静的依存性として追加し、すべてのコンパイルメソッドに対してシグネチャノードが生成されることを保証 - INodeWithTypeSignature.cs: 新規インターフェース追加(タイプシグネチャを持つノードの契約を定義)
- ObjectNode.cs:
INodeWithTypeSignatureインターフェース実装の基盤を追加 - ObjectWriter.cs: WASM出力時のシグネチャ処理ロジックを改善(メモリ効率化と正確性向上)
- WasmObjectWriter.cs: シグネチャ生成プロセスの最適化
- NodeFactory.cs: ReadyToRun向けのWasmTypeNode生成ロジック追加
- MethodCodeNode.cs/DelayLoadHelperMethodImport.cs等: WasmTypeNode依存性の統合
パフォーマンスへの影響
影響なし(この変更は正確性を重視し、パフォーマンス指標の変更は報告されていません)
関連Issue
その他
- WASM コンパイラの内部実装(RyuJit/AOT コンパイラ)に対する変更
- 依存性グラフの処理ロジック改善により、署名されていないメソッドの呼び出し時に発生していたバグを解決
- ReadyToRun と標準的な WASM コンパイルパイプラインの両方に対応
#125072 JIT: Fix invalid IR and weights in if-conversion
- 作成者: @BoyBaykiller
- 作成日時: 2026年03月02日 20:27:02(UTC)
- マージ日時: 2026年03月11日 09:16:54(UTC)
- ラベル: area-CodeGen-coreclr community-contribution
概要
JIT if-conversion機能の無効なIR生成とブロック重みの計算を修正するパッチです。return文を含むif/else パターンにおいて、CFG(制御フロー グラフ)の正確性を改善し、変換後のIRが無効な状態(RETURNブロックが後続ブロックを持つ)にならないようにしました。これにより、if-conversion が認識できるケースが増え、不要なjmp命令が削除されるようになります。
変更内容
- src/coreclr/jit/ifconversion.cpp: if-conversion処理の修正(+50/-50行)
- DEBUG出力の改善:if-conversion変換前後のフロー情報をより詳細にダンプ
- CFG書き直し処理:return ベースの分岐を
BBJ_RETURNに正しく変換し、then/elseブロックをスタートブロックから切り離し - ブロック重み調整:then/elseブロックの入来フロー削除後の重みを適切に再計算
パフォーマンスへの影響
- 不要なjmp命令の削除により、コード生成品質が向上
- ブロック重みの修正により、プロファイルガイド最適化(PGO)など重み情報に依存する最適化の精度向上が期待される
- 具体的なベンチマーク数値は記載なし
関連Issue
その他
ブロック重みの変更例:
static int InvalidIR(bool cond)
{
if (cond)
{
return 2;
}
// else なし
return 4;
}
修正前は bbWeight = 0.5、修正後は bbWeight = 1.0 に改善
#125064 [cDAC] Implement GetContext and GetAppDomain on ClrDataFrame
- 作成者: @max-charlamb
- 作成日時: 2026年03月02日 18:00:49(UTC)
- マージ日時: 2026年03月11日 17:24:50(UTC)
- ラベル: area-Diagnostics-coreclr
概要
cDAC(Contracts-based Debugging And Code Analysis)のClrDataFrameにGetContextとGetAppDomainメソッドの実装を追加します。従来のネイティブ実装のみへの委譲から、マネージドのネイティブコントラクトベースの実装に移行し、ネイティブstack.cppの動作に統一します。新たにIXCLRDataAppDomainの実装ClrDataAppDomainをマネージドレイヤーに導入しています。
変更内容
新規追加:
ClrDataAppDomain.cs:IXCLRDataAppDomainを実装する[GeneratedComClass]。GetName(Loader契約経由)、GetUniqueID(CoreCLRの単一AppDomainで常に1)、GetFlags(0 =CLRDATA_DOMAIN_DEFAULT)を提供ClrDataFrameDumpTests.csおよびIXCLRDataAppDomainDumpTests.cs: メソッド別に整理されたダンプベースの統合テスト。各テストが独自のデバッギー選択可能
変更内容:
ClrDataFrame.cs:GetContext:StackWalk.GetRawContext()を用いてコンテキストバイトを取得。DEBUG時は従来のDAC実装との検証を実施(ClrDataStackWalk.GetContextと同パターン)GetAppDomain: グローバルAppDomainポインタを読み取り、StrategyBasedComWrappersパターンでClrDataAppDomainをCOM ラップして返却
DumpTestBase.cs: 新たにInitializeDumpTest(config, debuggeeName, dumpType)オーバーロードを追加。テスト単位でのデバッギー選択が可能に- Loader契約の仕様書(
Loader.md)及びLoaderコントラクト実装を軽微に更新
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- テスト結果: 新規5つのテストはすべて合格(ローカル構成)、5つは正しくスキップ(net10.0環境でのInlinedCallFrame.Datum依存の理由)。既存テストに回帰なし
- 内部実装の変更であり、破壊的変更なし
IXCLRDataFrameは診断・デバッグツール向けのCOMインタフェースであり、公開APIとしてマネージド開発者に直接公開されるものではありません
#124994 Fix source generator diagnostics to support #pragma warning disable
- 作成者: @eiriktsarpalis
- 作成日時: 2026年02月27日 23:59:18(UTC)
- マージ日時: 2026年03月11日 09:41:40(UTC)
- ラベル: area-System.Text.Json source-generator
概要
インクリメンタルソースジェネレータが発行する診断メッセージを #pragma warning disable で抑制できるようにします。従来、ExternalFileLocation を使用していたため Roslyn のプラグマ抑制チェックがスキップされていた問題を修正しました。
変更内容
複数のジェネレータ(Json、ロギング、Regex、Configuration Binder)のパイプラインを以下のように分割:
- ソース生成パイプライン — インクリメンタル性を維持。equatable なモデルのみ抽出・キャッシュ
- 診断パイプライン —
CompilationコンテキストでSourceLocation(LocationKind.SourceFile)を再構築。Roslyn がSyntaxTreeのプラグマディレクティブテーブルをチェック可能に
主な変更箇所:
DiagnosticInfo.cs: 不要な wrapper クラスを削除JsonSourceGenerator.Roslyn4.0.cs: パイプライン分割、新しい診断生成ロジックLoggerMessageGenerator.Roslyn4.0.cs: パイプライン分割、診断の重複排除を維持RegexGenerator.cs: パイプライン分割、Diagnostic.Create()で直接診断生成ConfigurationBindingGenerator.cs: パイプライン分割- 各テストファイル: プラグマ抑制機能の検証テスト追加
パフォーマンスへの影響
診断パイプラインは ImmutableArray<Diagnostic> による値の等値性がないため、構造的な変更時に毎回発火します。ただし診断報告は軽量な処理(反復とレポートのみ)のため、実際のパフォーマンス低下は最小限です。ソース生成パイプラインは完全なインクリメンタル性を維持しています。
関連Issue
その他
- 根本原因は dotnet/roslyn#68291
- 実装パターンは eiriktsarpalis/PolyType#401 に基づく
- 複数のライブラリ(System.Text.Json、System.Text.RegularExpressions、Microsoft.Extensions.Logging.Abstractions、Microsoft.Extensions.Configuration.Binder)が対象
#124984 Align final section to file alignment, not to virtual image size
- 作成者: @jkoritzinsky
- 作成日時: 2026年02月27日 19:11:23(UTC)
- マージ日時: 2026年03月11日 20:43:42(UTC)
- ラベル: area-NativeAOT-coreclr
概要
PE ファイルの最終的なディスク上のサイズ計算を修正するプルリクエストです。出力ファイルを仮想イメージサイズ(SizeOfImage)ではなく、ファイルアラインメント(_peFileAlignment)に合わせてパディングするよう変更しており、自己完結型アプリケーションのサイズ回帰に対応しています。
変更内容
- src/coreclr/tools/Common/Compiler/ObjectWriter/PEObjectWriter.cs
- 出力ストリームの長さを
sizeOfImageにパディングする処理を削除 - 最終ファイル長を
_peFileAlignmentにパディングするよう変更(+4/-3行)
- 出力ストリームの長さを
パフォーマンスへの影響
ファイルサイズ削減: 自己完結型アプリケーション(self-contained app)の出力ファイルサイズが削減されます。仮想イメージサイズへのパディングが不要になることで、不要なディスク領域の使用が回避されます。
関連Issue
その他
なし
#124939 [cDAC] Implement SOSDacImpl.GetRCWInterfaces
- 作成者: @Copilot
- 作成日時: 2026年02月27日 03:19:59(UTC)
- マージ日時: 2026年03月11日 03:54:25(UTC)
- ラベル: area-Diagnostics-coreclr
概要
cDAC(Core Dump Access Component)で Runtime Callable Wrapper(RCW)のキャッシュされたCOMインターフェースおよびCOMコンテキストクッキーを列挙するサポートを追加し、レガシISOSDacInterface.GetRCWInterfaces実装に統合しました。BuiltInCOMコントラクトAPIを使用してRCWインターフェースエントリキャッシュを処理し、HRESULT動作を例外経由で保持しています。
変更内容
- SOSDacImpl.cs:
GetRCWInterfacesを実装し、cDACのBuiltInCOMコントラクトAPIを使用してRCW情報を取得 - BuiltInCOM_1.cs: RCWインターフェースエントリの列挙と コンテキストクッキー取得用のコントラクトAPI(
GetRCWInterfaces/GetRCWContext)を追加 - データモデル拡張:
InterfaceEntry.cs:RCWインターフェースキャッシュエントリ用の新規データ型RCW.cs:インラインインターフェースエントリキャッシュをマネージドRCWデータモデルに読み込みISOSDacInterface.cs:DacpCOMInterfacePointerDataを追加しGetRCWInterfacesシグネチャを厳密化
- データディスクリプタ更新: RCW
InterfaceEntriesフィールド、InterfaceEntry型、RCWInterfaceCacheSizeグローバルを追加 - テスト追加: ユニットテスト(モック対象メモリ使用)およびダンプベース統合テスト、RCW生成用デバッギーを追加
- ドキュメント: BuiltInCOMコントラクト仕様を更新
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
この変更は内部実装(cDAC診断コンポーネント)の強化であり、公開APIの変更はありません。RCW診断機能の cDAC対応が完了し、レガシDAC経由の委譲が不要になります。
#124756 [release/8.0] Update dependencies from dotnet/emsdk
- 作成者: @dotnet-maestro[bot]
- 作成日時: 2026年02月23日 15:23:17(UTC)
- マージ日時: 2026年03月11日 16:27:00(UTC)
- ラベル: Servicing-approved area-codeflow
概要
dotnet/emsdkリポジトリの依存関係を更新するPR。Emscripten WebAssembly ツールチェーン関連のNuGetパッケージを8.0.25/8.0.25-servicing.26102.2から8.0.26/8.0.26-servicing.26160.3にバージョンアップします。
変更内容
eng/Version.Details.xml: Microsoft.SourceBuild.Intermediate.emsdk および Microsoft.NET.Workload.Emscripten.Current.Manifest-8.0.100 の参照バージョンを更新eng/Versions.props: バージョン定義の更新NuGet.config: NuGetフィード設定の軽微な変更
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- これは自動依存関係更新PR(dotnet-maestro[bot]による)
- release/8.0 ブランチへの変更
- Emscripten 8.0.26 のサービシングアップデートを含む
- dotnet/emsdk リポジトリのコミット050048d77141e904449880ff47a38da3a7f515b6に対応
#124584 [release/10.0] Fix certificate disposal in RemoteCertificateValidationCallback causing NRE on reuse
- 作成者: @github-actions[bot]
- 作成日時: 2026年02月19日 08:22:19(UTC)
- マージ日時: 2026年03月11日 20:46:03(UTC)
- ラベル: Servicing-approved area-System.Net.Security
概要
RemoteCertificateValidationCallback内でX509Chain.ExtraStoreに追加された証明書が、SslStreamによって不正に破棄され、複数接続での再利用ができなくなる問題を修正します。この問題は.NET 10で導入されたリグレッションで、修正せずに放置するとアプリケーション/サーバーが新しいTLS接続を確立できなくなります。
変更内容
- src/libraries/System.Net.Security/src/System/Net/Security/SslStream.Protocol.cs: 証明書破棄ロジックを修正し、RemoteCertificateValidationCallback内で追加された証明書が不正に破棄されないようになりました(+14行/-8行)
- src/libraries/System.Net.Security/tests/FunctionalTests/CertificateValidationClientServer.cs: カスタムコールバック内で追加された証明書の再利用を検証する単体テストを追加(+88行)
パフォーマンスへの影響
影響なし
関連Issue
その他
- リグレッション: .NET 10のPR #117667で導入(リソースの決定的なクリーンアップを改善しようとした変更の副作用)
- リスク評価:低(問題が明確に把握されており、修正が単純)
- release/10.0ブランチへのバックポート
#124516 Support for variable sized locals in morph and lclmorph
- 作成者: @snickolls-arm
- 作成日時: 2026年02月17日 15:40:19(UTC)
- マージ日時: 2026年03月11日 22:45:25(UTC)
- ラベル: area-CodeGen-coreclr community-contribution
概要
可変サイズのローカル変数(コンパイル時にサイズが不明なもの)に対応するため、morph/lclmorphにおける間接参照とアドレッシング処理を改善。特にTYP_SIMD/TYP_MASKなどの未知のサイズを持つローカル変数のアドレス取得やフィールドアクセス時の安全性を強化。
変更内容
- compiler.h/hpp: ローカル変数の未知サイズ処理に関するヘルパーメソッドを追加
- morph.cpp:
ADD(LCL_ADDR, OFFSET)の最適化ルールを修正。未知サイズのローカル変数ではベースとオフセットが両方ゼロの場合のみ削減を許可 - lclmorph.cpp:
STOREIND/INDからSTORE_LCL_FLD/LCL_FLDへの変換処理を制限。未知サイズの変数ではoffsetがゼロかつValueSizesが一致する場合のみ処理
パフォーマンスへの影響
影響なし(安全性の向上が主目的で、パフォーマンスへの負の影響は最小化)
関連Issue
その他
破壊的変更なし。未知サイズのローカル変数アクセス時の境界チェック強化により、メモリ安全性が向上。ARM関連の最適化改善。
#124464 [release/9.0] Update dependencies from dotnet/emsdk
- 作成者: @dotnet-maestro[bot]
- 作成日時: 2026年02月16日 12:16:09(UTC)
- マージ日時: 2026年03月11日 16:30:22(UTC)
- ラベル: Servicing-approved area-codeflow
概要
dotnet/emsdk リポジトリからの依存関係を更新するautomated dependency update PR。Emscripten Workloadマニフェストおよび関連するJIT Tools・LLVM Sdkの複数プラットフォーム向けパッケージを、9.0.14から9.0.16にアップグレード。
変更内容
- NuGet.config: NuGetソース設定を1行更新
- eng/Version.Details.xml: 主な更新対象パッケージ
Microsoft.SourceBuild.Intermediate.emsdk: 9.0.14-servicing.26110.3 → 9.0.16-servicing.26160.4Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport: 9.0.14-servicing.26110.3 → 9.0.16-servicing.26160.4Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100: 9.0.14 → 9.0.16
- eng/Versions.props: 上記パッケージのバージョンプロパティを同期更新
- Coherency Updates: 親パッケージ(Emscripten Manifest Transport)に対応する以下パッケージの整合性更新:
Microsoft.NETCore.Runtime.JIT.Tools(全8プラットフォーム)Microsoft.NETCore.Runtime.Mono.LLVM.Sdk/Tools(全8プラットフォーム)- バージョン: 19.1.0-alpha.1.26104.3 → 19.1.0-alpha.1.26152.4
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
このPRは自動化されたdependency updateツール(dotnet-maestro[bot])により作成されたもので、release/9.0ブランチの依存関係を最新の状態に保つためのルーチン更新です。
#124213 [LoongArch64] Place async resumption info in read-write section which reference #123433
- 作成者: @shushanhf
- 作成日時: 2026年02月10日 11:24:45(UTC)
- マージ日時: 2026年03月11日 09:10:18(UTC)
- ラベル: area-CodeGen-coreclr community-contribution arch-loongarch64
概要
LoongArch64アーキテクチャにおいて、非同期再開情報(async resumption info)を読み取り専用セクション(read-only section)から読み取り・書き込みセクション(read-write section)に移動する変更です。これにより、#123433および#124213で報告された問題に対応します。
変更内容
- src/coreclr/jit/codegenloongarch64.cpp: 非同期再開情報の配置に関するコード生成ロジックを変更(+11行/-2行)
- src/coreclr/jit/emitloongarch64.cpp: LoongArch64エミッター内で非同期再開情報セクションの取り扱いを変更(+24行/-7行)
これらの変更はJITコンパイラのLoongArch64バックエンド実装に対する内部的な変更です。
パフォーマンスへの影響
影響なし
関連Issue
その他
なし
#124164 [main] Update dependencies from dotnet/xharness
- 作成者: @dotnet-maestro[bot]
- 作成日時: 2026年02月09日 05:01:20(UTC)
- マージ日時: 2026年03月11日 00:07:39(UTC)
- ラベル: area-codeflow
概要
dotnet/xharnessへの依存関係を更新するPull Requestです。Microsoft.DotNet.XHarness関連の3つのNuGetパッケージを11.0.0-prerelease.26064.3から11.0.0-prerelease.26160.2にアップデートしています。
変更内容
- .config/dotnet-tools.json: dotnetツール設定の更新(+1/-1行)
- eng/Version.Details.props: バージョン詳細プロパティファイルの更新(+3/-3行)
- eng/Version.Details.xml: バージョン詳細XMLファイルの更新(+6/-6行)
更新対象パッケージ:
- Microsoft.DotNet.XHarness.CLI
- Microsoft.DotNet.XHarness.TestRunners.Common
- Microsoft.DotNet.XHarness.TestRunners.Xunit
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
このPull Requestは自動依存関係更新(dotnet-maestroボット)によるものです。xharnessビルド20260310.2(2026年3月10日)に基づいています。
#124033 Remove duplicated SVE GatherVector APIs
- 作成者: @ylpoonlg
- 作成日時: 2026年02月05日 09:29:33(UTC)
- マージ日時: 2026年03月11日 17:41:47(UTC)
- ラベル: area-System.Runtime.Intrinsics community-contribution
概要
SVE(Scalable Vector Extension)の GatherVector APIから重複したメソッドを削除しています。32ビット値は32ビットへの拡張が不要なため、UInt32 拡張メソッドが通常の GatherVector メソッドと重複していました。#103370 で Int32 拡張を削除済みでしたが、UInt32 拡張が残っていたため、今回その削除を完了します。
変更内容
- Sve.cs / Sve.PlatformNotSupported.cs: 重複した
GatherVectorのUInt32拡張メソッド(124行)を削除 - System.Runtime.Intrinsics.cs: パブリック API定義から重複したメソッドシグネチャ(20行)を削除
- hwintrinsiclistarm64sve.h: JIT HWIntrinsic定義の対応する記述を削除
- SveTests.cs: 削除されたメソッドに関連するテスト(18行)を削除
- ApiCompatBaseline.NetCoreAppLatestStable.xml: API互換性ベースラインを更新(削除したメソッドを記録)
パフォーマンスへの影響
影響なし(既に機能的に重複していたため、削除による動作への影響はありません)
関連Issue
その他
破壊的変更: 削除されたメソッドは公開APIであるため、これらのメソッドを利用していたコードはコンパイルエラーが発生します。代わりに通常の GatherVector メソッドを使用してください。
#123546 arm64: Remove widening casts before truncating
- 作成者: @jonathandavies-arm
- 作成日時: 2026年01月23日 13:46:57(UTC)
- マージ日時: 2026年03月11日 19:34:32(UTC)
- ラベル: area-CodeGen-coreclr community-contribution
概要
ARM64アーキテクチャにおいて、不要なキャスト命令を削除する最適化を実装しました。拡大キャスト(widening cast)の後に縮小キャスト(truncating cast)が続く場合、中間の拡大キャスト命令を削除し、最終的な縮小キャスト命令のみを生成するようにしています。
例: (sbyte)(long)x は sxtb のみで済み、その前の sxtw が削除されます。
変更内容
- src/coreclr/jit/morph.cpp: JITモルフィング処理にキャスト最適化ロジックを追加(13行追加)
- 拡大キャスト後に続く縮小キャストパターンを検出し、不要な中間命令を削除
- src/tests/JIT/opt/InstructionCombining/Casts.cs: 新規テストファイル追加(694行)
- int→long→sbyte、ulong→ushort→ulong→ushortなど複数のキャストパターンをテストケース化
- src/tests/JIT/opt/InstructionCombining/Casts.csproj: テストプロジェクト設定ファイル追加
パフォーマンスへの影響
- コードサイズ削減:不要なキャスト命令が削除され、生成されるアセンブリサイズが減少
- ARM64での最適化:例1で
sxtw命令が削除、例2でmovとuxthの冗長な命令が削除 - x64での波及効果:同様のキャスト最適化がx64でも観測されている(
movsxd→movsxの削減など) - メモリ・実行速度への直接的な改善の数値報告なし
関連Issue
その他
- JITコンパイラの内部実装(morph.cpp)への変更であり、公開APIへの影響なし
- アーキテクチャ固有の最適化がx86-64にも効果を与えるクロスアーキテクチャの改善