Pull Request on 2026年01月17日

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

注意点

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


目次

  1. #123270 [RyuJit/WASM] Establish SP & FP and home register arguments
  2. #123250 [LoongArch64] Fix the failed for Fp32x2StructFunc in the profiler test slowpatheltleave.sh catched on 2K3000.
  3. #123211 Adding C#, F#, VB to StringSyntaxAttribute
  4. #122789 Cleanup __builtin_available where platform is now guaranteed on Apple platforms
  5. #122758 Remove nonExpansive parameter from Dictionary::PopulateEntry

#123270 [RyuJit/WASM] Establish SP & FP and home register arguments

  • 作成者: @SingleAccretion
  • 作成日時: 2026年01月16日 18:34:41(UTC)
  • マージ日時: 2026年01月17日 17:31:06(UTC)
  • ラベル: arch-wasm area-CodeGen-coreclr community-contribution

概要

WebAssembly向けJITコンパイラの関数プロローグ生成ロジックを改善したPRです。WASM固有の実装を追加し、スタックポインタ(SP)とフレームポインタ(FP)、ホームレジスタ引数の確立を実現しました。add(x, y)関数の機能化に向けた重要なステップで、残作業としてSP引数の処理が別PRで進行中です。

変更内容

  • codegenwasm.cpp: WASM固有のプロローグ生成ロジック実装(128行追加)
    • レジスタ割り当て制約(RA)の配置による新しいアプローチ
    • 従来のレジスタマスクコードの移植ではなく、WASM向けにカスタマイズした実装
  • codegencommon.cpp: プロローグ生成の共通処理微調整(9行追加、7行削除)

パフォーマンスへの影響

現時点では具体的なベンチマーク情報なし。ただし、潜在的な懸念点として、プロローグ内に無制限の命令数が生成される可能性があり、単一IG(Instruction Group)制限との不整合が存在します。この制限は別Issue #121865で指摘済みで、今後の改善対象です。

関連Issue

  • #121865: 単一IG制限の改善検討
  • #123262: SP引数処理の別PR(関連作業)

その他

実装上の注意:本実装は完全に健全ではなく、プロローグ内の命令数制限に関する設計課題があります。WASM環境でのプロローグ生成にはアーキテクチャ固有の制約があり、汎用的なレジスタマスクコードの再利用よりも専用実装の方が適切と判断されています。


#123250 [LoongArch64] Fix the failed for Fp32x2StructFunc in the profiler test slowpatheltleave.sh catched on 2K3000.

  • 作成者: @LuckyXu-HF
  • 作成日時: 2026年01月16日 07:53:31(UTC)
  • マージ日時: 2026年01月17日 05:48:41(UTC)
  • ラベル: area-Diagnostics-coreclr community-contribution arch-loongarch64

概要

LoongArch64プラットフォーム上のProfileArgIterator::GetReturnBufferAddr()メソッドを修正し、struct{single, single}型の戻り値をプロファイラテストで正しく処理できるようにしました。PR#122714と同様のアプローチで、pData->bufferを使用して戻り値を返すように改善されています。

変更内容

  • src/coreclr/vm/loongarch64/profiler.cpp:
    • ProfileArgIterator::GetReturnBufferAddr()メソッドの実装を修正
    • pData->bufferを使用した戻り値バッファの処理を追加
    • 変更量: +13行/-6行

パフォーマンスへの影響

影響なし。本変更は正確性に関する修正であり、パフォーマンスへの影響はありません。

関連Issue

なし(PR#122714と同様のパターンの修正)

その他

  • LoongArch64(龍芯3000など)でのslowpatheltleave.shプロファイラテストの失敗を解決するための修正です
  • PR#122714で実装されたLoongArch64向けの修正パターンを参考にした継続的な改善となります

#123211 Adding C#, F#, VB to StringSyntaxAttribute

  • 作成者: @HakamFostok
  • 作成日時: 2026年01月15日 11:32:52(UTC)
  • マージ日時: 2026年01月17日 16:14:26(UTC)
  • ラベル: area-System.Diagnostics community-contribution

概要

StringSyntaxAttributeに、C#、F#、Visual Basicの3つのプログラミング言語構文識別子を表す定数を追加しました。これにより、文字列がどの言語のコードを含むかをアナライザーに明示的に伝えられるようになります。

public static class StringSyntaxAttribute
{
    public const string CSharp = nameof(CSharp);
    public const string FSharp = nameof(FSharp);
    public const string VisualBasic = nameof(VisualBasic);
}

変更内容

  • StringSyntaxAttribute.cs: C#、F#、Visual Basicの3つの言語構文定数を追加(9行追加)
  • System.Runtime.cs: 公開APIリファレンスに3つの定数を追加(3行追加)
  • StringSyntaxAttributeTests.cs: 新しい定数をカバーするテストケース追加(3行追加)

パフォーマンスへの影響

影響なし。定数の追加であり、ランタイムパフォーマンスには無関係です。

関連Issue

#122604

その他

この変更は既存のRegexJsonなどの構文識別子と同じパターンで、開発者が埋め込みコード文字列に対してIDE/アナライザーの適切なシンタックスハイライトやインテリセンスサポートを受けられるようになります。


#122789 Cleanup __builtin_available where platform is now guaranteed on Apple platforms

  • 作成者: @vcsjones
  • 作成日時: 2025年12月30日 17:43:43(UTC)
  • マージ日時: 2026年01月17日 14:53:08(UTC)
  • ラベル: area-System.Security os-ios

概要

Apple プラットフォームの最小サポートバージョン(macOS 12、iOS/tvOS 13)引き上げに伴い、不要になった __builtin_available による旧バージョン対応コードを削除するクリーンアップです。メモリバリア、セキュリティ暗号化、JIT コード生成など、複数のネイティブ実装ファイルで条件分岐を簡素化し、新しい API を無条件で使用するようになります。

変更内容

  • memorybarrierprocesswide.c: macOS 10.14/iOS 12 以前の チェック削除、thread_get_register_pointer_values を無条件使用
  • pal_sec.c: iOS 11.3/tvOS 11.3 チェック削除、SecCopyErrorMessageString を常に使用
  • pal_rsa.c: macOS 10.15/iOS 13 チェック削除、kSecUseDataProtectionKeychain を RSA キー属性に常に追加
  • pal_ecc.c: macOS 10.15/iOS 13 チェック削除、kSecUseDataProtectionKeychain を ECC キー属性に常に追加
  • mono-mmap.c: macOS 11 チェック削除、ARM64 で MAP_JIT フラグを無条件設定
  • mono-codeman.c: macOS 11 チェック削除、JIT 書き込み保護を無条件管理

パフォーマンスへの影響

影響なし。本変更は条件分岐の削除によりコード複雑性を低下させ、保守性を向上させるものです。実行時のパフォーマンスには直接的な影響はありません。

関連Issue

なし

その他

本変更は破壊的変更ではなく、サポート対象外の旧 OS バージョン向けの フォールバック実装を削除するもであるため、macOS 12 以上、iOS/tvOS 13 以上で動作する環境では影響ありません。コード行数も大幅に削減(計 45 行削除)されており、保守性向上が期待できます。


#122758 Remove nonExpansive parameter from Dictionary::PopulateEntry

  • 作成者: @Copilot
  • 作成日時: 2025年12月28日 06:50:00(UTC)
  • マージ日時: 2026年01月17日 23:08:46(UTC)
  • ラベル: area-VM-coreclr

概要

Dictionary::PopulateEntryの未使用パラメータnonExpansiveを削除し、到達不可能なコードパスを排除するコード整理です。このパラメータは唯一の呼び出し元であるjithelpers.cppから常にFALSEで渡されていたため、条件分岐は実行されない死んだコードでした。37行の不要なコードを削除し、実行時の動作には一切影響を与えません。

変更内容

  • src/coreclr/vm/genericdict.h: 関数署名からBOOL nonExpansiveパラメータを削除
  • src/coreclr/vm/genericdict.cpp: 実装からパラメータを削除し、条件式(nonExpansive ? ClassLoader::DontLoadTypes : ClassLoader::LoadTypes)ClassLoader::LoadTypesに統一。_ASSERTE(nonExpansive)で保護されていた到達不可能なnullチェックと早期リターンを削除
  • src/coreclr/vm/jithelpers.cpp: 唯一の呼び出し元からFALSE引数を削除

パフォーマンスへの影響

影響なし。削除されたコードはすべて到達不可能なパスであり、実行パスには変更がありません。むしろコード整理により保守性が向上します。

関連Issue

なし

その他

  • このプルリクエストはCopilotにより生成されました
  • CoreCLRビルドは正常に完了し、削除されたコードは完全に死んだコードであることが証明されています
  • 機能変更がないため新たなテストは不要です
  • リスクレベルは非常に低く、パラメータが常にFALSEであることが証明されているため、削除されたすべての分岐は実行されていません