Pull Request on 2026年09月27日

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

注意点

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



#134752 [wasm][coreclr] Re-enable VT callconv tests on browser

概要

WebAssembly(browser-wasm)のCoreClrにおいて、TypeLoadExceptionの原因となっていた#127426の問題が解決されたため、それまで追加されていたブラウザ環境向けのテスト除外属性を削除し、5つのVT呼び出し規約テストを再度有効化します。変更は除外属性の削除のみで、テストコード本体は#127438前の状態に完全に復元されます。

変更内容

  • src/tests/JIT/Methodical/VT/callconv/ 配下のテストファイル群からActiveIssue属性を削除
    • call.cs: ブラウザ環境向けの除外属性を削除
    • aa.il, calli.il, dd.il, ee.il: ブラウザ環境向けの除外属性を削除
  • テストの機能変更なし(ファイル内容は#127438以前の状態に完全復元)

パフォーマンスへの影響

影響なし(テスト再有効化のみ)

関連Issue

#127426(元のTypeLoadException問題) #127438(除外属性追加時のPR)

その他

  • 検証状況: Node 26環境下でのブラウザ-wasm CoreCLrビルド(checked/Release)において、対象テスト(Methodical_d2/Methodical_r2)が正常にパスすることを確認済み
  • 根本的な修正は、#127438以降のR2R/portable-entrypoint thunkコード群の大幅な改善により自動的に解決された模様
  • 個別のビセクトは実施されていない

#134750 Fix NRE in dynamic multi-dim array indexing under trimming

概要

トリミング時に動的多次元配列インデックス操作で NullReferenceException が発生する問題を修正しました。C#ランタイムバインダーが動的配列インデックスを処理する際、リフレクションで Expression.ArrayIndex(Expression, Expression[]) メソッドを検索しますが、トリマーが未使用と判定して削除してしまい、検索結果が null になることが原因です。[DynamicDependency] 属性を追加してこのメソッドをトリミング時に保持させることで対応しました。

変更内容

  • ExpressionTreeRewriter.cs: VisitARRAYINDEX メソッドに [DynamicDependency] 属性を追加し、Expression.ArrayIndex(Expression, Expression[]) オーバーロードがトリミング時に削除されないようにしました。
  • Conformance.dynamic.dynamicType.basic.cs: array005/array006 テストの [ActiveIssue] 属性を削除しました(この修正により問題が解決されたため)。

パフォーマンスへの影響

影響なし

関連Issue

#134265

その他

  • Microsoft.CSharp は現在トリム互換ではない(設計上の制限)ため、この修正は既存の [RequiresUnreferencedCode] アノテーションの下で、リフレクション基盤のメソッド検索を強化するための局所的な対応です。
  • 同じパターンは既に ComInterop/VariantArray.cs で使用されています。
  • 検証済み:EnableAggressiveTrimming=true TestTrimming=true の条件下で、修正前は array005 で NRE が発生し、修正後は 2913/2913 テストが合格しました。

#134731 Fix contract violation in CachedInterfaceDispatch

  • 作成者: @jkotas
  • 作成日時: 2026年09月27日 01:27:25(UTC)
  • マージ日時: 2026年09月27日 23:16:34(UTC)
  • ラベル: area-VM-coreclr

概要

Win-x64チェックビルドでDOTNET_UseCachedInterfaceDispatch=1を設定した際に発生するコントラクト違反を修正します。GetRestoredSlotメソッドが先制モード(preemptive mode)を要求していることが原因で、これを正しく処理するように変更しました。

変更内容

  • src/coreclr/vm/prestub.cpp: CachedInterfaceDispatchの処理でコントラクト違反を修正(8行追加、4行削除)
    • GetRestoredSlot呼び出し時の実行モード管理を修正
    • 先制モード要件を満たすようコードを調整

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

チェックビルドでのみ検出される契約違反の修正のため、リリースビルドの動作への直接的な影響は限定的です。


#134719 Root Castle.Core invocation types in ReflectionInvoke test projects

  • 作成者: @lewing
  • 作成日時: 2026年09月26日 17:06:18(UTC)
  • マージ日時: 2026年09月27日 15:18:02(UTC)
  • ラベル: area-System.Reflection

概要

Browser-Wasm上でのアグレッシブトリミングにより、Moqが作成するCastle.Core動的プロキシのコンストラクタがトリミングされてIndexOutOfRangeExceptionが発生していた問題を修正。Castle型の保護のため、ILLink記述子を追加し、ReflectionInvoke両テストプロジェクトでの問題を解決。

変更内容

  • System.Runtime.ReflectionInvokeEmit.Tests.csproj: Castle.Core用ILLink記述子(eng/testing/ILLinkDescriptors/ILLink.Descriptors.Castle.xml)を含める設定を追加
  • System.Runtime.ReflectionInvokeInterpreted.Tests.csproj: Castle.Core用ILLink記述子を含める設定を追加
  • InvokeWithRefLikeArgs.cs: IsWasmReadyToRunによるActiveIssue属性を削除(#134262関連)

パフォーマンスへの影響

影響なし(トリミング対象外化による変更で、ランタイム性能への直接的な影響はない)

関連Issue

#134262

その他

  • Browser-Wasm CoreCLRのアグレッシブトリミング環境下でのテスト失敗に対する修正
  • Castle.DynamicProxy.Internal.InheritanceInvocationWithoutTarget のコンストラクタが反射でのみ到達可能なため、トリミングされていた。ILLink記述子により、このコンストラクタの保護を明示的に指定
  • 修正後、同じテストファイルを使用するEmit/Interpretedプロジェクトの両方で211/211のテストが成功することを確認
  • System.Runtime.Tests.csjprojは既に当該記述子を含んでいたため、別途対応は不要

#134699 [interpreter] Resolve open virtual delegates invoked through the shuffle thunk (wasm, Apple mobile)

概要

interpreter を使用するプラットフォーム(browser-wasm、macOS/iOS/tvOS)で、オープン仮想デリゲートをコンパイル済みコードから呼び出した際に発生するクラッシュを修正します。問題は IL shuffle thunk が CID_VirtualOpenDelegateDispatch を calli 経由で呼び出す際、隠し引数(arm64 の x11、wasm の portable entry point)が正しく渡されていないことが原因でした。

変更内容

  • src/coreclr/vm/interpexec.cpp: INTOP_CALLI 命令で CID_VirtualOpenDelegateDispatch を認識し、デリゲート(shuffle thunk の this)とターゲットの this 引数から仮想ターゲットを解決してから CALL_INTERP_METHOD で処理。INTOP_CALLDELEGATE と INTOP_CALLI で共通の ResolveOpenVirtualDelegateTarget メソッドを利用。
  • src/coreclr/vm/comdelegate.cpp: 関連するコメント更新と Issue リンク追加。
  • src/libraries/System.Runtime/tests/System.Runtime.Tests/System/DelegateTests.cs: オープン仮想デリゲート呼び出しの回帰テスト追加(クラスオーバーライド、ボックス化構造体、列挙型、インターフェース dispatch)。browser Mono AOT はインターフェース関連テストを無効化。
  • src/libraries/tests.proj: browser CoreCLR ReadyToRun レーンで System.Linq.Expressions.Tests を再有効化。

パフォーマンスへの影響

影響なし

関連Issue

#134261、#134720、#134733、#134707

その他

  • この修正は interpreter 側のワークアラウンドで、根本的な fix は shuffle thunk 側で対応予定(#134733)。
  • 検証結果:browser-wasm CoreCLR ReadyToRun で System.Linq.Expressions.Tests が 35,116 テスト実行、System.Runtime.Tests DelegateTests が 58 テスト実行、maccatalyst-arm64 で System.Runtime.Tests が 79,181 テスト実行で、すべて成功。
  • 内部実装の変更(interpreter 側のワークアラウンド)であり、公開 API への影響なし。

目次