注意点
このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。
目次
- #122794 Rename AsyncSafeThreadMap to SignalSafeThreadMap
- #122791 Consolidate runtime helpers (X86Base, Interlocked, Buffer) across CoreCLR and NativeAOT
- #122688 Split GetInterpThreadContext into allocating and non-allocating variants
- #122589 [RISC-V] Comment and formatting cleanup in
codegenriscv64 - #121745 Move RBM_SAVED_LOCALLOC_SP reservation from compCompile to setFrameType in LSRA
- #121158 Refactor NativeAOT helpers to align with CoreCLR patterns
#122794 Rename AsyncSafeThreadMap to SignalSafeThreadMap
- 作成者: @Copilot
- 作成日時: 2025年12月31日 04:48:12(UTC)
- マージ日時: 2026年01月02日 14:08:13(UTC)
- ラベル: area-VM-coreclr
概要
AsyncSafeThreadMapクラスをSignalSafeThreadMapにリネームするリファクタリング。.NETのasync/awaitパターンとの混同を避けるため、シグナルハンドラー内での安全な使用を目的とした本クラスの実際の用途に合わせた命名に統一しました。命名の一貫性向上により、コード意図の明確化を実現します。
変更内容
- SignalSafeThreadMap.cpp (+11/-11): クラス名およびそれに関連する参照を
AsyncSafeThreadMapからSignalSafeThreadMapに変更 - SignalSafeThreadMap.h (+9/-9): ヘッダーファイル内のクラス定義およびコメント内の名前を更新
- threadstore.cpp (+5/-5): NativeAoT ランタイムの実装内での使用箇所を更新
- threads.cpp (+5/-5): VM層のスレッド管理コード内での参照を更新
- CMakeLists.txt (複数): ビルド設定ファイルのターゲット名を更新(CMakeLists.txtで2箇所、vm/CMakeLists.txtで2箇所)
パフォーマンスへの影響
影響なし。純粋なリネーミング変更のため、実行時の動作やパフォーマンス特性に変更はありません。
関連Issue
なし
その他
このリネーミングにより、シグナルハンドラー内での安全な実装であることが命名から直感的に理解でき、開発者にとってコード可読性が向上します。async/awaitとの概念的な混同を回避し、マルチスレッド処理における安全性の意図がより明確に表現されました。
#122791 Consolidate runtime helpers (X86Base, Interlocked, Buffer) across CoreCLR and NativeAOT
- 作成者: @Copilot
- 作成日時: 2025年12月31日 03:38:52(UTC)
- マージ日時: 2026年01月02日 14:57:25(UTC)
- ラベル: area-NativeAOT-coreclr
概要
CoreCLR、NativeAOT、Monoの3つのランタイム間で重複するネイティブヘルパー実装(X86Base、Interlocked、Buffer)を統合し、共有コードを最大化するリファクタリング。新しい共有実装をsrc/coreclr/runtime/MiscNativeHelpers.cpp/hに集約し、すべてのランタイムが同一のマネージドコードファイルを使用するよう統一しました。プラットフォーム固有の部分クラス(*.CoreCLR.cs、*.NativeAot.cs、*.Mono.cs)をすべて削除。
変更内容
主な追加・削除ファイル:
- 追加:
src/coreclr/runtime/MiscNativeHelpers.cpp/h(共有QCall実装) - 追加:
src/coreclr/nativeaot/Runtime/common.h(QCALLTYPE定義) - 削除:すべてのランタイム固有の部分クラス(X86Base.CoreCLR.cs、X86Base.NativeAot.cs、X86Base.Mono.cs、Buffer.CoreCLR.cs、Buffer.NativeAot.cs等)
- 削除:
Range.h、不要なAllocHeap::Containsメソッド
実装の統合:
- X86Base_CpuId:CPUID命令のラッパーをQCall化。Monoのネイティブ実装もメソッド名を
__cpuidexからCpuIdに統一 - Interlocked_MemoryBarrierProcessWide:プロセス全体のメモリバリア実装を共有化
- Buffer操作:
Buffer_ClearとBuffer_MemMoveをQCallから削除し、SpanHelpers.ByteMemOps.csで直接memset/memmoveを呼び出すよう変更
マネージドコード統合:
// 共有実装例(#if MONO条件付き)
#if MONO
[DllImport("__Internal", EntryPoint = "ves_icall_System_SpanHelpers_memmove")]
private static extern void memmove(void* dest, void* src, nuint len);
#else
[LibraryImport("QCall", EntryPoint = "SpanHelpers_MemMove")]
private static extern void memmove(void* dest, void* src, nuint len);
#endif
インフラ整備:
- CMakeLists.txtを両方のランタイムで更新し共有ファイルをインクルード
- メモリアライメント最適化:
Unsafe.WriteUnalignedとBlock16を使用 - 型安全性強化:
size_tからint/uint32_tへの明示的キャスト追加 - Mono icall定義の整列:
System.SpanHelpersをアルファベット順の正しい位置に移動
パフォーマンスへの影響
改善点:
- BufferのMemMoveはQCallオーバーヘッドを削除し、直接
memmove呼び出しに変更してパフォーマンス向上 - メモリゼロ操作を
Unsafe.WriteUnalignedで最適化し、より良いコード生成を実現 THUNKS_MAP_SIZEマクロをローカル変数にキャッシュして冗長な評価を防止
懸念点: 影響なし。同じプラットフォームAPI(minipal/CRT)を
#122688 Split GetInterpThreadContext into allocating and non-allocating variants
- 作成者: @jkotas
- 作成日時: 2025年12月21日 16:05:03(UTC)
- マージ日時: 2026年01月02日 14:03:55(UTC)
- ラベル: area-CodeGen-Interpreter-coreclr
概要
GetInterpThreadContextを割り当て型と非割り当て型の2つのバリアントに分割し、インタープリタが実際に使用される場合のみInterpThreadContextを確保するように改善したPull Requestです。従来はTryEnsureSufficientExecutionStackなどの処理でインタープリタを使用していない場合でも不要なメモリ割り当てが発生していました。
変更内容
- threads.cpp/threads.h: GetInterpThreadContextを2つの関数に分割(割り当て版と非割り当て版)、約22行の追加と12行の削除
- interpexec.cpp: インタープリタ実行時の呼び出し調整、3行追加7行削除
- prestub.cpp: プリスタブ処理の最適化、1行追加8行削除
- eetwain.cpp: 4行削除による不要な呼び出しの除去
パフォーマンスへの影響
改善: インタープリタを使用していないシナリオ(例:TryEnsureSufficientExecutionStack)で不要なメモリ割り当てが削除され、メモリ効率が向上します。特にスレッド作成やコンテキスト処理が多い場合に効果的です。
関連Issue
https://github.com/dotnet/runtime/issues/122404
その他
このPRはインタープリタコンテキスト管理の最適化に関連するもので、.NET Runtimeのメモリ管理効率向上を目指しています。VM層での細かいメモリ割り当て削減により、全体的なシステムリソース効率が改善されます。
#122589 [RISC-V] Comment and formatting cleanup in codegenriscv64
- 作成者: @credo-quia-absurdum
- 作成日時: 2025年12月16日 13:00:58(UTC)
- マージ日時: 2026年01月02日 09:57:40(UTC)
- ラベル: area-CodeGen-coreclr community-contribution arch-riscv
概要
RISC-V 64ビット向けコード生成部分(codegenriscv64.cpp)のコメントと書式をクリーンアップするマイナー更新です。機能的な変更は含まれておらず、コードの可読性と保守性の向上を目的としています。
変更内容
- ファイル:
src/coreclr/jit/codegenriscv64.cpp- コメントの追加・改善(関数ヘッダーコメントの整備)
- 英文表現の明確化と可読性向上
- 書式とスタイルの軽微な修正
- 変更行数: +39/-12(合計51行)
パフォーマンスへの影響
影響なし。本PR は機能変更を含まないため、実行時のパフォーマンスに影響を与えません。
関連Issue
#84834(Samsung チーム関連のクリーンアップイシュー)
その他
- Samsung チーム主導のコード品質改善プロジェクトの一部です
- レビュワーに JIT コンパイラ関連の専門家が含まれており、品質管理が適切に行われています
- RISC-V バックエンド対応の継続的な改善活動の一環です
#121745 Move RBM_SAVED_LOCALLOC_SP reservation from compCompile to setFrameType in LSRA
- 作成者: @Copilot
- 作成日時: 2025年11月18日 14:31:43(UTC)
- マージ日時: 2026年01月02日 10:52:17(UTC)
- ラベル: area-CodeGen-coreclr
概要
ARM向けのレジスタ予約ロジック(RBM_SAVED_LOCALLOC_SP)をコンパイラのcompCompile関数から、LSRA(Linear Scan Register Allocator)のsetFrameType関数へ移動するリファクタリング。コード機能の変更なし。
変更内容
- src/coreclr/jit/compiler.cpp:
compCompile関数内のARM向け条件付きコンパイルブロックを削除(8行削除) - src/coreclr/jit/lsra.cpp:
setFrameType関数内に同じロジックを追加し、既存のrsMaskResvd設定の後に配置(10行追加) - デバッグ出力用のJITDUMP文を追加して、レジスタ予約時にログを出力
パフォーマンスへの影響
影響なし。既存の機能を別の場所に移動しただけで、動作や処理時間は変わらない。
関連Issue
なし
その他
- CoreCLRビルド成功確認済み
- CodeQL セキュリティスキャン実施済み(脆弱性なし)
- コード移動により、関連する
rsMaskResvd設定処理が一箇所に集約され、保守性が向上
#121158 Refactor NativeAOT helpers to align with CoreCLR patterns
- 作成者: @Copilot
- 作成日時: 2025年10月29日 03:15:58(UTC)
- マージ日時: 2026年01月02日 14:48:51(UTC)
- ラベル: needs-area-label
概要
NativeAOT(ネイティブAOT)のヘルパーメソッドをCoreClrのパターンに合わせてリファクタリングするPR。ArrayHelpers.csとTypedReferenceHelpers.csから適切なターゲット型にメソッドを移動し、NativeAOTと非NativeAOTの構造をより類似させることが目的。これにより、コード保守性が向上し、プラットフォーム間の一貫性が改善される。
変更内容
- ArrayHelpers.cs削除:
src/coreclr/nativeaot/System.Private.CoreLib/src/Internal/Runtime/CompilerHelpers/ArrayHelpers.csを削除(98行削減) - TypedReferenceHelpers.cs削除:
src/coreclr/nativeaot/System.Private.CoreLib/src/Internal/Runtime/CompilerHelpers/TypedReferenceHelpers.csを削除(35行削減) - Array.NativeAot.cs拡張: ヘルパーメソッドをこのファイルに統合(186行に拡張)
- TypedReference.cs更新: TypedReferenceのヘルパー機能を統合(20行に拡張)
- SharedCodeHelpers.cs追加: 共有ヘルパー機能を新規追加(10行)
- jithelpers.h更新:
METHOD__ARRAY__CREATEINSTANCEMDARRAYをMETHOD__ARRAY__CTORANYに変更 - プロジェクトファイル更新: csprojから削除されたファイルのリファレンスを削除
パフォーマンスへの影響
影響なし。このリファクタリングは構造の統一を目的としたもので、実行時動作への変更はない。メソッドの移動により若干のコンパイル効率向上が期待される。
関連Issue
なし
その他
- 複数のビルドエラーを段階的に修正しており、最終的には全ての依存関係が正しく解決されている
using System;とusing Internal.Runtime.Augments;ディレクティブの追加が必要だった- CopilotがAIアシスタントとして自動修正を繰り返し行い、jkotasがレビューを担当した
- ドラフト状態で30日間のInactivityにより自動的にクローズされていたが、再度アクティベートされている