Pull Request on 2026年07月28日

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

注意点

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


目次

  1. #131471 JIT: don't merge assertions from orphaned pred blocks
  2. #131467 [release/10.0] Fix EH - throw from catch in UnmanagedCallersOnly
  3. #131462 Update winget install instructions in windows-requirements.md
  4. #131452 Use Reflection.Emit accessors when dynamic code is supported
  5. #131446 Hide remaining managed EH helpers from the debugger stack
  6. #131444 Fix missed case of COOP to PREEMPT transition
  7. #131443 Fix EnC static field address cDAC API
  8. #131441 Define REPO_COMMIT_HASH for singlefilehost
  9. #131439 Do not allow generic inlining of ldftn requiring a fat function pointer
  10. #131425 Update SetCredentialsAttributesW to match the native C API declaration
  11. #131420 [wasm] Don't import the Mono wasm props on the CoreCLR path
  12. #131413 [browser] Remove AssetEntry from dotnet.d.ts public API
  13. #131387 Make Uri non-ASCII hex unescaping a bit faster
  14. #131384 Implement CLRDataMethodDefinition IL extent APIs in cDAC
  15. #131355 [wasm][R2R] Fix Crst level violation between NativeImageEagerFixups and PregeneratedStringThunks
  16. #131345 Handle Decimal32/64/128 ABI packing in the VM and AOT type system
  17. #131312 Improve CI scanner duplicate KBE detection
  18. #131229 Reuse per-thread MemoryStream/Utf8JsonWriter in EventSourceLogger.ToJson
  19. #131219 [mono] Fix interface call in case of reabstraction
  20. #131214 [release/8.0-staging] Reduce EncryptedXml encoded DTD test workload
  21. #131211 [release/9.0-staging] Reduce EncryptedXml encoded DTD test workload
  22. #131167 [Wasm Ryujit]: implement runtime-async codegen for R2R Wasm
  23. #130622 Preserve IL for CoreCLR interpreter fallback on Apple mobile
  24. #130502 Handle CDATA in unknown extension data (IExtensibleDataObject)
  25. #130428 Fix xsi:list round-tripping with space-separated serialization
  26. #130159 Use CodeVersioning for EnC
  27. #129492 Implement support for derived IXmlSerializable types in XmlSerializer
  28. #128148 Arm64: Initialization of TYP_SIMD/TYP_MASK locals
  29. #127520 Arm64 SVE: Support scalable constant vectors and masks

#131471 JIT: don't merge assertions from orphaned pred blocks

概要

JITのRange Check分析において、RBOのジャンプスレッド処理後に孤立したプリデセッサブロック(bbPreds == nullptr)から不正な範囲アサーション(edge assertions)がマージされることで、誤ったコード生成が発生していた問題を修正します。PHI_ARG入力時に孤立したブロックをチェックし、到達不可能なブロックからのアサーション処理をスキップします。

変更内容

  • src/coreclr/jit/rangecheck.cpp: RangeCheck::MergeAssertionメソッドにGT_PHI_ARGパス用の到達不可能ブロック判定ガード(+11行)を追加。既存のCompiler::optVisitReachingAssertionsで使用されているのと同じisUnreachableBlockチェックロジックを適用し、孤立したプリデセッサブロックからのedge assertionのマージをスキップ。

パフォーマンスへの影響

影響なし。この変更は誤ったアサーション情報のスキップであり、最適化の精度向上に寄与しますが、実行時パフォーマンスへの直接的な変化はありません。

関連Issue

#131404、#131436

その他

  • この修正はJITの正確性向上に関わる重要な修正です。孤立したブロックのPHI参照により生成されるコードが不正な範囲チェック削除につながる問題を解決します。
  • 修正は内部実装(JITコンパイラ)に限定され、公開APIへの影響はありません。

#131467 [release/10.0] Fix EH - throw from catch in UnmanagedCallersOnly

概要

Windows上でUnmanagedCallersOnly属性を持つメソッド内のcatchから例外がスローされる場合の例外ハンドリング(EH)の不具合を修正します。この問題は.NET 9で新しい例外処理がデフォルト有効化された際に発生した回帰です。catch内からの例外が正しくCallEHFuncletとして検出されず、UnmanagedCallersOnlyメソッド自体から例外が逃げると誤認識されてしまい、同じcatchに何度も再進入して無限ループとスタックオーバーフローを引き起こしていました。

変更内容

  • src/coreclr/vm/exceptionhandling.cpp: funcletからのアンワインド時、逆P/Invoke検出ロジックを修正し、親メソッドの逆P/Invoke GC情報を無視するように調整。これにより例外がUnmanagedCallersOnlyメソッドから逃げている場合とfuncletの内部でハンドルされている場合を正しく区別します。
  • src/tests/baseservices/exceptions/exceptioninterop/ExceptionInterop.cs: UnmanagedCallersOnly内のcatchからネイティブ/マネージド例外をスローするシナリオに対する回帰テストを追加(Windows限定)。

パフォーマンスへの影響

影響なし

関連Issue

#123579(顧客報告)、#131163(オリジナルPR)

その他

  • 本PRはrelease/10.0ブランチへのバックポート版です
  • 修正のリスクレベルは低く、UnmanagedCallersOnlyケースに対する不正な条件判定の修正のみです
  • Copilotのレビュアコメントで、テストメソッドに[Fact]属性が不足している可能性が指摘されていますが、提供された情報には属性の最終状態が明記されていません

#131462 Update winget install instructions in windows-requirements.md

  • 作成者: @EgorBo
  • 作成日時: 2026年07月28日 13:09:23(UTC)
  • マージ日時: 2026年07月28日 16:47:48(UTC)
  • ラベル: area-Infrastructure

概要

Windows開発環境のセットアップドキュメント(windows-requirements.md)のwingetセクションを更新し、Visual StudioとPythonのインストール手順を最新化しました。ARM64マシンで検証済みです。

変更内容

  • docs/workflow/requirements/windows-requirements.md: wingetインストール手順を更新
    • Pythonバージョンを3.11から3.14に更新
    • Visual StudioのインストールコマンドをMicrosoft.VisualStudio.Communityを使用し、リポジトリの.vsconfigファイルを指定するよう変更
    • .vsconfigの使用とArm64環境でのwingetの動作に関する説明注記を追加

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

本変更はドキュメント更新であり、コード変更は含まれません。ARM64 Windowsマシンで実機検証されています。


#131452 Use Reflection.Emit accessors when dynamic code is supported

概要

System.Text.JsonのMemberAccessor選択ロジックを変更し、動的コード生成がサポートされている場合にReflection.Emitベースのアクセサを優先するように復元します。これにより、インタープリタベースのランタイムでリフレクションベースのシリアライゼーションパフォーマンスを改善します。

変更内容

src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/MemberAccessor.cs

  • アクセサ選択条件をRuntimeFeature.IsDynamicCodeCompiledからRuntimeFeature.IsDynamicCodeSupportedに変更
  • 関連するコメント(条件判定の根拠説明)を更新・簡潔化

パフォーマンスへの影響

大幅な改善(特にインタープリタベースランタイムで)

  • Ubuntu 22.04 x64での計測結果:
    • リフレクションベースシリアライザ:14.115 us → 6.788 us(2.08倍高速化)
    • メモリ割り当て:128 B → 48 B
    • ソース生成での動作は変化なし(3.8 us程度で安定)
  • JavaScriptCoreおよびV8では、解釈されたDynamicMethodアクセサが従来の方法より3~41倍高速化
  • トレードオフ:インタープリタデプロイメントでReflection.Emit スタック保持による約50 KBのサイズ増加、アクセサ生成コスト増加(ただしSystem.Text.Jsonはアクセサをキャッシュし、この初期コストを償却)

関連Issue

#130503、#38693、dotnet/perf-autofiling-issues#76620

その他

  • 検証済み:dotnet buildおよびSystem.Text.Json.Testsで53,409個の.NETテストと53,163個の.NETFrameworkテストがすべて成功
  • 本変更により#130503での意図的なトリミング決定(#38693から)が意図的に取り消される

#131446 Hide remaining managed EH helpers from the debugger stack

概要

マネージド例外処理ヘルパーメソッドをデバッガスタックから隠すため、3つのメソッドに[StackTraceHidden]および[DebuggerHidden]属性を追加する変更です。前回のPR #130646で属性ベースの隠蔽に移行した際に見落とされたメソッドを補完し、arm64/インタプリタ構成でのデバッガのコールスタック表示(mdbg where、現在位置、ステップ実行)を正規化します。

変更内容

  • ExceptionHandling.cs: System.Runtime.EH.AppendExceptionStackFrameViaClasslibおよびSystem.Runtime.EH.UpdateStackTraceに属性を追加(+4行)
  • StackFrameIterator.cs: System.Runtime.StackFrameIterator.Nextの3つのオーバーロードに属性を追加(+6行)

これらのメソッドに対して、既に同じコード内の8つのEH.*ヘルパーおよびStackFrameIterator.Initで使用されている[StackTraceHidden]と[DebuggerHidden]の両属性を付与しています。

パフォーマンスへの影響

影響なし

関連Issue

#130646

その他

  • x64およびarm64環境で検証済み
  • StackWalking.ExceptionStack/BigStackTestおよびExceptions suite(DivZeroTest、FirstChanceSuppressTest、ReflectionTest、TooManyTest)がすべてパス確認済み

#131444 Fix missed case of COOP to PREEMPT transition

概要

CoreCLR インタープリタのデリゲート呼び出し低速パスにおいて、COOP→PREEMPT トランジションのタイミングを修正しました。GetMultiCallableAddrOfCode → MethodDesc::GetTemporaryEntryPoint を経由するAPI呼び出しが必要な場合、トランジションを事前に実行するよう調整しています。

変更内容

  • src/coreclr/vm/interpexec.cpp
    • 新たに InvokeDelegateInvokeMethodHelper を導入し、GetMultiCallableAddrOfCode(...) とスタブ更新を GCX_PREEMP() でラップ
    • キャッシュされたコールスタブテンプレートが不足する場合、InvokeDelegateInvokeMethod がヘルパーを使用するよう更新

パフォーマンスへの影響

影響なし

関連Issue

#131435

その他

このPRはランタイム内部実装(ガベージコレクション協調モード)の修正であり、公開APIレベルでの変更はありません。COOP/PREEMPT トランジション管理は、マルチスレッド環境でのガベージコレクション安全性に関わる重要な機構です。


#131443 Fix EnC static field address cDAC API

  • 作成者: @rcj1
  • 作成日時: 2026年07月27日 22:46:11(UTC)
  • マージ日時: 2026年07月28日 01:03:26(UTC)
  • ラベル: area-Diagnostics-cdac

概要

Edit and Continue (EnC) で追加された静的フィールドのアドレス取得処理を修正し、CoreCLR の EnCAddedStaticField::GetFieldData() の動作に合わせました。プリミティブ型はインラインストレージのアドレスを、マネージド型(Class/ValueType)は間接参照を通じてGC追跡対象のストレージアドレスを返すように修正されました。

変更内容

  • RuntimeMutableTypeSystem_1.cs: GetEnCStaticFieldDataAddress メソッドを更新し、プリミティブ型ではインラインストレージアドレスを、Class/ValueType では FieldData スロットに格納されたポインタを読み込んで間接アドレスを返すように修正
  • RuntimeMutableTypeSystemTests.cs: プリミティブ型とマネージド型(class/valuetype)の両方の EnC 静的フィールドストレージ動作を検証するテストに拡張(56行追加)
  • RuntimeMutableTypeSystem.md: 更新されたアルゴリズムとセマンティクスをドキュメント化
  • data-descriptor-meanings.json: EnCAddedStaticField.FieldData の記述子の意味を明確化

パフォーマンスへの影響

影響なし

関連Issue

#131443

その他

この変更は cDAC(CoreClr Data Access Contract)の内部実装に関するもので、Edit and Continue 機能でのデバッグシナリオの正確性向上を目的としています。公開APIには影響しません。


#131441 Define REPO_COMMIT_HASH for singlefilehost

  • 作成者: @elinor-fung
  • 作成日時: 2026年07月27日 21:43:08(UTC)
  • マージ日時: 2026年07月28日 18:10:57(UTC)
  • ラベル: area-Host

概要

singlefilehostが静的にリンクされたホスティングコンポーネントに対して、実際のリポジトリコミットハッシュを含めるようにします。これまではCoreClrのビルドプロセスでコミットハッシュが渡されなかったため、常に"static"と報告されていました。本変更により、corehost.projと同じ方式でSourceRevisionId経由でコミットハッシュをCoreCLR nativeビルドに配信し、dotnet/hostfxr/apphostと同様に実際のバージョン情報を含めるようにします。

変更内容

  • src/coreclr/runtime.proj: SourceRevisionIdをCoreClrのネイティブCMakeの引数CLI_CMAKE_COMMIT_HASHとして配信し、SCM初期化をビルド依存関係に追加
  • src/native/corehost/configure.h.in: CLR_SINGLE_FILE_HOST_ONLYプリプロセッサ条件分岐を削除し、REPO_COMMIT_HASHが常にCMakeから提供されるコミットハッシュを使用するよう統一

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

本変更はGitHub Copilotによる支援で作成されました。singlefilehostのバージョン情報表示(dotnet --info、hostfxr_get_dotnet_environment_info、トレーシング等)が改善され、他のホストコンポーネントと一貫性のあるコミットハッシュを報告するようになります。


#131439 Do not allow generic inlining of ldftn requiring a fat function pointer

  • 作成者: @agocke
  • 作成日時: 2026年07月27日 20:59:20(UTC)
  • マージ日時: 2026年07月28日 12:41:32(UTC)
  • ラベル: area-NativeAOT-coreclr

概要

NativeAOT/ILCで、ldftnがジェネリックコンテキスト引数を必要とするメソッドをターゲットとする場合、インライニング中のジェネリックコンテキストから不正に参照される問題を修正。インライナーとインリーニのジェネリックパラメータの不一致によりIndexOutOfRangeExceptionが発生していた問題を解決します。

class Gen<T>
{
    [MethodImpl(MethodImplOptions.NoInlining)]
    public static Type Method() => typeof(T);
}

static unsafe nint GetPtr<U>() => (nint)(delegate*<Type>)&Gen<U>.Method;

class Caller<X>
{
    [MethodImpl(MethodImplOptions.NoInlining)]
    public static nint Run() => GetPtr<X>();
}

変更内容

  • CorInfoImpl.RyuJit.cs: getCallInfo内のfat function pointer参照で、トークンコンテキストがコンパイル対象メソッドと異なる場合(インライニング時)にCORINFO_LOOKUP_NOT_SUPPORTEDを返却。インライナーとインリーニのジェネリックパラメータ数不一致を事前に検出し、インラインを中止させJITに処理させることでクラッシュを回避。

  • Generics.cs(NativeAOT SmokeTest): Test129093Regressionテストを追加。ジェネリックメソッドの関数ポインタ取得時の複数インスタンス化でのジェネリックコンテキスト正確性を検証。

パフォーマンスへの影響

影響なし。この修正はクラッシュを回避するための条件分岐追加であり、正常系パスには影響しません。

関連Issue

#129093

その他

  • この変更はGitHub Copilotで開発されました
  • コンパイラ(ILC)の内部実装変更であり、ランタイム公開APIへの影響なし
  • 既存の同様の修正パターン(#102299のdelegate ctor関連修正など)と整合
  • テスト追加により回帰防止が実装されています

#131425 Update SetCredentialsAttributesW to match the native C API declaration

概要

Windows Native APIのSetCredentialsAttributesW P/Invoke宣言を修正し、C言語のunsigned long型(Windows上では4バイト)に対応させるために、longからuintへ型を変更しました。

変更内容

  • src/libraries/Common/src/Interop/Windows/SspiCli/Interop.SSPI.cs: SetCredentialsAttributesWのP/Invoke宣言でパラメータ型をlongからuintに変更(2行)
  • src/libraries/System.Net.Security/src/System/Net/Security/SslStreamPal.Windows.cs: 同様にuint型を使用する呼び出しに対応(2行)

パフォーマンスへの影響

影響なし

関連Issue

#131416

その他

このPull Requestは、Native APIとのP/Invoke宣言の型安全性を改善するための内部実装修正です。ただし、実際にSetCredentialsAttributesWが外部から呼び出される箇所や、型変更による実行時への影響の詳細は提供された情報には含まれていません。


#131420 [wasm] Don't import the Mono wasm props on the CoreCLR path

概要

Browser-Wasm向けCoreC LRアプリのパブリッシュ失敗を修正するPull Requestです。Sdk.targetsでMonoプロップスを無条件にインポートすることにより、CoreCLRパスがMonoのターゲット定義を継承し、実装されていないターゲット_WasmBuildAppCoreへの依存が発生していました。修正内容は、BrowserWasmApp.propsとBrowserWasmApp.targetsのインポートをUseMonoRuntime != 'false'条件に変更し、CoreCLRパスには独立したBrowserWasmApp.CoreCLR.targetsを使用するようにします。

変更内容

  • src/mono/nuget/Microsoft.NET.Runtime.WebAssembly.Sdk/Sdk/Sdk.targets.in
    • BrowserWasmApp.propsとBrowserWasmApp.targetsのインポートをMonoランタイム条件付けに変更
    • CoreCLR向けターゲット(BrowserWasmApp.CoreCLR.targets)の条件付けを明示化
    • CoreCLRパスは独立したターゲットセットとなり、Monoプロップスの継承を回避

パフォーマンスへの影響

影響なし

関連Issue

#131372

その他

  • MSBuild実行時、UseMonoRuntime=false(CoreCLR)の場合、RuntimeIdentifierはWebAssembly SDKで既に設定されており、TargetOS/TargetArchitectureはeng/OSArch.propsでRuntimeIdentifierから派生されるため、BrowserWasmApp.propsのインポートは不要
  • Monoフレーバーには変更なし、既存動作を維持
  • 検証済み:CoreCLRのネストパブリッシュ実行時にエラーが解消されることを確認
  • in-treeビルド、WASI、Helix/WBT CoreCLRレグには影響なし

#131413 [browser] Remove AssetEntry from dotnet.d.ts public API

概要

WebAssembly/Browser ランタイムの公開API(dotnet.d.ts)から未使用の AssetEntry インターフェースを削除しました。このインターフェースは公開API に含まれていながら、他の公開型から参照されていないデッドコードでした。内部実装では AssetEntryInternal が依存しているため、内部型定義は保持されています。

変更内容

  • src/mono/browser/runtime/types/export-types.ts: AssetEntry の import/export を削除
  • src/native/libs/Common/JavaScript/types/export-api.ts: AssetEntry の import/export を削除
  • src/mono/browser/runtime/dotnet.d.ts: 再生成(50行削減)
  • src/native/libs/Common/JavaScript/loader/dotnet.d.ts: 再生成(46行削減)

パフォーマンスへの影響

影響なし(型定義ファイルの削減のため、ランタイムパフォーマンスに直接的な影響なし)

関連Issue

#118561

その他

  • 内部実装の types/index.ts および types/public-api.ts には AssetEntry の定義は保持(AssetEntryInternal extends AssetEntry が依存)
  • 破壊的変更:AssetEntry を公開APIから利用していたコードは影響を受けます

#131387 Make Uri non-ASCII hex unescaping a bit faster

  • 作成者: @MihaZupan
  • 作成日時: 2026年07月26日 10:58:04(UTC)
  • マージ日時: 2026年07月28日 15:26:48(UTC)
  • ラベル: area-System.Net

概要

Uri の非ASCII十六進数アンエスケープ処理を最適化するPR。HexConverter のテーブルルックアップを使用して手動の十六進数計算を置き換え、ホットループの境界チェックを縮小することで、パフォーマンスを改善しています。

変更内容

  • src/libraries/System.Private.Uri/src/System/PercentEncodingHelper.cs
    • 手動の十六進数ニブル デコードを HexConverter.FromChar ルックアップに変更
    • % + 2個の十六進数文字を読み取るための境界チェックを調整し、JITが境界チェックを削除できるように意図
    • 無効な十六進数がASCI範囲チェックを通過するのを防ぐためのガード追加

パフォーマンスへの影響

改善あり

短い入力(%E4%BD%A0%E5%A5%BD):

  • 43.34 ns → 40.43 ns(約7%高速化)

長い入力(72文字の十六進数シーケンス):

  • 103.86 ns → 97.55 ns(約6%高速化)

関連Issue

#121413、#121016

その他

注意: レビューコメントで指摘されているように、無効な十六進数を防ぐための現在のガードが不十分であり、正確性のバグが存在する可能性があります。


#131384 Implement CLRDataMethodDefinition IL extent APIs in cDAC

  • 作成者: @Copilot
  • 作成日時: 2026年07月26日 03:05:09(UTC)
  • マージ日時: 2026年07月28日 03:48:28(UTC)
  • ラベル: area-Diagnostics-cdac

概要

CLRDataMethodDefinitionのIL範囲列挙および代表的なエントリアドレス取得APIをcDAC(コンテナデータアクセスコンポーネント)に実装します。StartEnumExtents、EnumExtent、EndEnumExtents、GetRepresentativeEntryAddressメソッドを追加し、レガシーDAC動作(tiny/fat ILヘッダーおよび単一ショット列挙)を保持します。

変更内容

  • ClrDataMethodDefinition.cs: IL範囲列挙ロジック(StartEnumExtents、EnumExtent、EndEnumExtents)とGetRepresentativeEntryAddressメソッドを追加(+195行)
  • IXCLRData.cs: 新しい公開列挙型CLRDataMethodDefinitionExtentTypeおよびClrDataMethodDefinitionExtent構造体のフィールド型をuintから列挙型に変更
  • CorDbHResults.cs: 新しいエラーコード定義を追加
  • IXCLRDataProcessTests.cs: tiny/extended-fat ILヘッダー、無効な引数、欠落ILを含む包括的な検証テスト(+75行)
  • task.cpp、ClrDataMethodInstance.cs、SOSDacImpl.cs: マイナーな修正

パフォーマンスへの影響

影響なし

関連Issue

#131384

その他

注意点:

  1. 公開API変更: CLRDataMethodDefinitionExtentType列挙型の新規追加とClrDataMethodDefinitionExtent.typeフィールド型の変更は、Legacy組立体の公開サーフェスの破壊的変更です。公開API承認プロセスの記載がない点に要注意。
  2. エンディアン処理: IL ヘッダーはECMA-335仕様により固定的にリトルエンディアンですが、テストコードではターゲットのエンディアンに基づいて書き込みを行っており、ビッグエンディアンプラットフォームでのテスト精度に懸念があります。
  3. Null チェック: StartEnumExtentsメソッドでハンドルをデリファレンス前に検証する必要がある可能性があります(ArgumentNullExceptionでE_POINTERを確実に返す)。

#131355 [wasm][R2R] Fix Crst level violation between NativeImageEagerFixups and PregeneratedStringThunks

概要

WebAssembly R2R(Read-to-Run)パスにおいて、NativeImageEagerFixupsとPregeneratedStringThunksの2つのクリティカルセクション(Crst)ロックが定義済みの取得順序なしで取得されることによるCrstレベル違反を修正します。CrstTypes.defにAcquiredBefore PregeneratedStringThunksエッジを追加し、ロック間に明確な順序付けを確立します。

変更内容

  • src/coreclr/inc/CrstTypes.def: NativeImageEagerFixupsにAcquiredBefore PregeneratedStringThunks制約を追加(+1/-1)
  • src/coreclr/inc/crsttypes_generated.h: 自動生成ファイル、CrstNativeImageEagerFixupsのレベルを7から8に変更(+1/-1)

パフォーマンスへの影響

影響なし。本修正はロック取得順序の制約定義のみで、実行時のパフォーマンスや動作に変化はありません。

関連Issue

#131355

その他

  • WebAssemblyランタイムのR2Rパス実装における内部ロック管理の修正
  • NativeImageEagerFixupsを取得する前に他のロックを取得しているコードは存在しないため、他のCrstレベルへの影響はなし
  • 本PRはGitHub Copilotの支援を受けて作成されています

#131345 Handle Decimal32/64/128 ABI packing in the VM and AOT type system

概要

System.Numerics.Decimal32/64/128 に対する ABI 特別処理を実装しました。これまで Int128/UInt128 と異なり、特別なABI処理がなかったため、Decimal128 のアラインメントが 8 バイトになっていたこと、および P/Invoke での値渡しマーシャリングで診断エラーを出さずに誤ったコード生成をしていた問題を解決します。Decimal128 は 16 バイトアラインメント、Decimal32/Decimal64 は自然なアラインメント(それぞれ 4/8 バイト)を適用し、すべての値渡しマーシャリングを MarshalDirectiveException でブロックします。

変更内容

  • 型マーキング: Decimal32/64/128 を [Intrinsic] 属性でマーク、Decimal64/128 に [StructLayout(LayoutKind.Sequential)] を追加
  • VM レイアウト処理 (methodtablebuilder.cpp/classlayoutinfo.cpp): Decimal128 の 16 バイトアラインメント設定(プラットフォーム別:x86/x64/Wasm は 16 バイト、ARM32 は 8 バイト)、および decimal 浮動小数点型の包含判定フラグを追跡
  • マーシャリング制限: mlinfo.cpp/dllimport.cpp で Decimal32/64/128 と それらを含む構造体の値渡しマーシャリングを禁止(MarshalDirectiveException でエラー表示)
  • JIT インターフェース: jitinterface.cpp で decimal 型がフィールド列挙対象外にならないよう修正(struct promotion 喪失を防止)
  • AOT コンパイラ: DecimalFieldLayoutAlgorithm 新規追加、型システムに統合(R2R/ILCompiler)
  • テスト: Interop P/Invoke テストを追加(Decimal128FieldLayout のアラインメント/参照渡し/値渡し制限、Decimal32/64 の制限検証)

パフォーマンスへの影響

影響なし。レイアウト計算時のアラインメント調整であり、実行時オーバーヘッドはありません。

関連Issue

#74209(Int128/UInt128 の by-value P/Invoke マーシャリング未実装) #131341(Decimal 型の同様の問題追跡)

その他

  • 既存 Int128/UInt128 パスは変更なし、並列に IsDecimalFloatingPointOrHasDecimalFloatingPointFields フラグを導入
  • Mono は Int128 特別処理を持たないため対応なし
  • #if BIGENDIAN によるフィールド順序の入れ替えは既に Decimal128 に実装済み
  • ネイティブ側テストは Decimal128 を alignas(16) struct { uint64_t lower, upper; } で実装、マネージド側との相互運用検証は Unsafe.As<UInt128, Decimal128> で実施
  • 検証:clr/libs.pretest ビルド成功(警告/エラー 0)、新規 Interop テスト合格、System.Runtime.Tests

#131312 Improve CI scanner duplicate KBE detection

  • 作成者: @svick
  • 作成日時: 2026年07月24日 12:04:16(UTC)
  • マージ日時: 2026年07月28日 14:39:39(UTC)
  • ラベル: area-Infrastructure

概要

CI失敗スキャナーが重複するKnown Build Error (KBE)を不正に作成する問題を修正。テスト識別子の完全な名前を優先的に検索し、存在しないAzDO attachmentではなくGitHub checkを通じてBuild Analysis情報を参照するように改善。これにより、アンダースコア区切りのメソッド名を含む短縮名検索でマッチしなかった既存KBEが正しく検出される。

変更内容

  • .github/workflows/shared/create-kbe.instructions.md: 完全なテストメソッド識別子を短縮形の前に検索するガイダンスを追加
  • .github/workflows/ci-failure-scan.md: 非存在のAzDO attachment参照をBuild Analysis GitHub checkの検索に変更
  • .github/workflows/ci-failure-scan.lock.yml: ワークフロー更新に対応したメタデータハッシュを更新

パフォーマンスへの影響

影響なし

関連Issue

#130940、#129691

その他

検証として実際のビルド1505119をドライモード再実行し、8つの対象グレーダーすべてが成功。Build Analysisチェックで#129691が省略されていても、完全なメソッド名検索で正しく既存KBEを発見し、重複作成を回避することが確認された。


#131229 Reuse per-thread MemoryStream/Utf8JsonWriter in EventSourceLogger.ToJson

概要

EventSourceLogger.ToJsonで、JSONメッセージキーワード有効時(例:dotnet-trace収集時)の毎ログイベント呼び出しにおける割り当てを削減します。[ThreadStatic]でキャッシュされたMemoryStreamとUtf8JsonWriterを再利用し、呼び出しごとにMemoryStream.SetLength(0)とUtf8JsonWriter.Reset(stream)でリセットします。返却されるJSON文字列以外の割り当てを排除しました。

変更内容

  • src/libraries/Microsoft.Extensions.Logging.EventSource/src/EventSourceLogger.cs
    • [ThreadStatic]なMemoryStreamとUtf8JsonWriterをキャッシュ化
    • ToJsonメソッド内でスレッドローカル変数をリセットして再利用
    • UTF-8デコーディング処理を簡潔化

パフォーマンスへの影響

大幅な割り当て削減と速度改善:

  • プロパティ0個:割り当て96%削減(824B→32B)、1.56倍高速化
  • プロパティ2個:割り当て87%削減(912B→120B)、1.99倍高速化
  • プロパティ6個:割り当て82%削減(960B→168B)、1.21倍高速化

残存する割り当ては返却されるJSON文字列のみです。JSONログ有効時のイベントロギング処理全体のオーバーヘッドが大幅に軽減されます。

関連Issue

なし

その他

  • 全対象フレームワーク(net462、netstandard2.0を含む)でビルド成功、警告なし
  • JsonMessageキーワードテストを含む26/26のユニットテストが合格し、出力JSON形式が変更前後で一致することを確認
  • netstandard2.0/net462を含むすべてのターゲットフレームワークで利用可能なAPIのみを使用

#131219 [mono] Fix interface call in case of reabstraction

  • 作成者: @BrzVlad
  • 作成日時: 2026年07月22日 14:35:16(UTC)
  • マージ日時: 2026年07月28日 14:40:16(UTC)
  • ラベル: area-Codegen-JIT-mono

概要

Monoランタイムにおいて、インターフェースメソッドの再抽象化(reabstraction)時にIMT(Interface Method Table)スロットが不正に計算される問題を修正しました。build_imt_slotsメソッドで再抽象化されたメソッドに対する正しいvtableスロットの対応付けが行われていなかった問題を解決しています。

変更内容

  • src/mono/mono/metadata/object.c: build_imt_slotsメソッドに再抽象化処理のロジックを追加
  • テストケース追加: 複数の再抽象化されたインターフェースメソッドを含むテストケース(ReabstractedInterfaceMethodIMT)を新規追加

パフォーマンスへの影響

影響なし

関連Issue

#129496

その他

背景: インターフェースが実装クラスのvtable内にオフセットを割り当てられるため、そのインターフェース上のメソッド呼び出しはvtableスロットを通じて実行されます。IMTスロット(vtable前に配置)の初期化時に、インターフェースメソッドと対応するvtableスロットのマッピングが行われていました。複数のインターフェースメソッドが衝突する場合はthunkが生成されますが、build_imt_slotsが再抽象化を考慮していなかったため、不正なターゲットメソッドで初期化されていました。ただし、mini_resolve_imt_methodが衝突がない場合にIMTスロットをパッチすることで、実際の問題は限定的でした。


#131214 [release/8.0-staging] Reduce EncryptedXml encoded DTD test workload

概要

.NET 8.0 のバックポート PR です。EncryptedXml の DTD エンコード関連テストの負荷軽減を目的とした変更で、テストのみの修正となります。内部で発見された回帰に対応するものです。

変更内容

  • EncryptedXmlSample5.xml: 90行の XML テストデータファイルを削除
  • EncryptedXmlTests.cs: テストロジックを修正(+4行/-3行)

パフォーマンスへの影響

テストの実行時間が短縮されます。大規模な XML テストデータ(90行)が削除されることで、関連するテストケースの実行速度が改善されます。

関連Issue

#131091(オリジナル PR)

その他

  • このPRはオリジナル PR #131091 の release/8.0-staging ブランチへのバックポートです
  • テストのみの変更のため、リスクレベルは Low に設定されています
  • 内部で発見された回帰(テスト導入による失敗)に対応しています
  • .NET 8 はサービシング リリースのため、ターゲットブランチが release/8.0-staging となっています

#131211 [release/9.0-staging] Reduce EncryptedXml encoded DTD test workload

概要

内部で発見された回帰テストの修正をrelease/9.0-stagingにバックポートするPRです。EncryptedXml関連のDTDエンコードテストの重い処理を削減することで、テスト実行時間を短縮しています。

変更内容

  • EncryptedXmlSample5.xml: 90行のテストサンプルXMLファイルを削除
  • EncryptedXmlTests.cs: テストコードの軽微な調整(4行追加、3行削除)

パフォーマンスへの影響

テスト実行時間の短縮が見込まれます(DTDエンコード処理の重い処理を削減)。

関連Issue

#131091(オリジナルPR)

その他

  • 本変更はテストコードのみの修正であり、本体コード変更はありません
  • リスク評価: Low(テストのみの変更)
  • #131091の回帰テスト失敗を修正するバックポートです

#131167 [Wasm Ryujit]: implement runtime-async codegen for R2R Wasm

概要

Wasm ReadyToRun(R2R)パイプラインに対して、runtime-async メソッド(例: async/await)のコード生成サポートを追加します。非同期継続(async continuation)を Wasm グローバル変数で管理し、シグネチャに 'a' マーカーを追加してasync呼び出しを識別。JIT、EE、ILCompiler、ツール、Wasmホスト全体で非同期resume メタデータと継続値の受け渡しに必要な再配置とサンク処理を実装します。

変更内容

JITコンパイラ側(src/coreclr/jit/)

  • codegenwasm.cpp:非同期継続グローバル処理とasync resume情報のWasm コード生成実装(120行追加)
  • async.cpp:Wasm shadow stack pointerをasync save/restore対象から除外
  • emitwasm.cpp/h:データオフセット定数(i32.const_dataoffs)の新命令フォーマット対応
  • emit.cpp:async resume ResumeフィールドをWasm table index(再配置型WASM_TABLE_INDEX_I32)としてデータセクションに格納

JIT/EE インターフェース(src/coreclr/inc/)

  • corinfo.h:CORINFO_WASM_WELLKNOWN_GLOBALSにasyncContinuationエントリ追加、新再配置型WASM_TABLE_INDEX_I32追加
  • jiteeversionguid.h:インターフェース変更のため JIT GUID更新

ランタイム側(src/coreclr/vm/)

  • wasmasynccontinuation.h新規:Wasm固有の共有async continuation グローバル読み書きアクセッサ
  • prestub.cpp/wasm/helpers.cpp:interpreter境界でのasync continuation グローバル経由の受け渡し
  • jitinterface.cpp:Wasmでのresumption stub entry point解決をfunction table index経由に調整

ILCompiler/R2R (src/coreclr/tools/aot/ILCompiler.ReadyToRun/)

  • 新規StoreMultiCallableAddrOfCodeSignature.cs(91行):新再配置タイプの対応
  • WasmInterpreterToR2RThunkNode.cs:interpreter→R2R間での非同期継続転送
  • WasmR2RToInterpreterThunkNode.cs:R2R→interpreter間での非同期継続転送
  • WasmImportThunk.cs:import thunk生成時のasync continuation値の保存/転送

シグネチャ/Wasm ローイング(src/coreclr/tools/Common/JitInterface/)

  • WasmLowering.cs:async marker 'a'のシグネチャエンコード/デコード対応(+36行)
  • CorInfoImpl.cs:新再配置型WASM_TABLE_INDEX_I32をobject writerに対応

Wasmホスト(src/coreclr/hosts/corerun/wasm/)

  • libCorerun.js:共有WebAssembly.Globalとしてasync continuation作成・管理

SuperPMI/ツール

  • methodcontext.cpp/agnostic.h:新well-known globalasyncContinuationのSuper PMI対応
  • r2rdump:Wasm global index naming一元化、disassembly時のannotation追加

パフォーマンスへの影響

影


#130622 Preserve IL for CoreCLR interpreter fallback on Apple mobile

  • 作成者: @Copilot
  • 作成日時: 2026年07月13日 13:31:05(UTC)
  • マージ日時: 2026年07月28日 14:04:40(UTC)
  • ラベル: area-Infrastructure

概要

Apple mobileプラットフォームでのComposite ReadyToRunパブリッシング時に、コンパイル済みコードが拒否または独自のLoadContextで利用不可になった場合に、CoreCLRインタープリターフォールバックに必要なILが削除されるのを防ぐ変更です。IL削除ポリシーを調整し、メソッドごとの命令セットサポート固定機能を持つメソッドのILを保持し、固定命令セットプラットフォーム(Apple mobile/ブラウザ)で互換性を確保します。

変更内容

  • IL削除ポリシーの改善:メソッドごとの命令セットサポート固定機能を持つメソッドのILを保持
  • 固定命令セットプラットフォーム分類の導入:InstructionSetHelpers.csにIsFixedInstructionSetPlatformヘルパーを追加、命令セット処理を統一化
  • テスト関連の整備
    • 複数のテストプロジェクト(Regression_o_2.csproj、System.Reflection.Metadata.Tests.csproj、System.IO.Hashing.Tests.csproj)から一時的なIL削除オプトアウト(PublishReadyToRunStripILBodies=false)を削除
    • StripILBodies.csに命令セット検証用メソッドを追加
    • ReadyToRun用テストケースにiOS対象の固定命令セット動作検証を追加
    • SignatureDecoderTests.csに新しいIL削除センチネルパターン(0xFE 0x24)の認識を追加
  • コンパイラロジック調整:CorInfoImpl.csで固定命令セットプラットフォームではISAベースの固定機能生成をスキップ、ReadyToRunCodegenCompilation.csで固定命令セット対応の基準命令セット署名を使用

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

本PRは内部実装(ReadyToRunコンパイラツール、テストインフラ)の変更であり、公開APIには影響しません。Apple mobileプラットフォーム上での実行時動作が対象となります。


#130502 Handle CDATA in unknown extension data (IExtensibleDataObject)

概要

DataContractSerializerがIExtensibleDataObjectを実装する型に対し、CDATA区間内に値を持つ不明な要素を逆シリアル化する際にSerializationExceptionをスローしていた問題を修正しました。CDATA をテキストと同様に処理することで、ラウンドトリップセマンティクスを保持しながら正常に処理できるようにしました。

変更内容

  • XmlObjectSerializerReadContext.cs: ReadExtensionDataValueとReadUnknownXmlDataメソッドでCDATA型をText型と同じく処理するよう修正。CDATA内容は文字列ノードとしてキャプチャされ、再シリアル化時にエスケープされたテキストとして復元されます。
  • DataContractSerializer.cs: CDATA区間を含む未知の要素のシリアル化・逆シリアル化テストケースを追加(33行)
  • SerializationTypes.RuntimeOnly.cs: テスト用型定義を追加(21行)

パフォーマンスへの影響

影響なし

関連Issue

#59123

その他

公開APIの変更なし(内部実装の修正)。CDATA区間を含むXML要素の逆シリアル化は、ラウンドトリップセマンティクス保持によりテキスト内容はエスケープ済みテキストとして復元されます。


#130428 Fix xsi:list round-tripping with space-separated serialization

概要

[XmlText]属性を持つ配列型メンバーのラウンドトリップ問題を修正。従来は複数要素が区切文字なしで連結されていたため、デシリアライズ時に単一値として読み込まれていました。本修正により、XML仕様に準拠した4つのXML空白文字(0x20、0x09、0x0D、0x0A)で区切られた形式でシリアライズ/デシリアライズするようになります。この動作は[XmlAttribute]リスト型の既存動作に合わせています。

変更内容

  • シリアライゼーション: 反射ベース・IL生成・事前生成の3つのシリアライザーエンジン全体で、[XmlText]配列メンバーをスペース区切りのリストとしてシリアライズ
  • デシリアライゼーション: リストテキストと属性リスト値をXML空白文字の4種類で分割。従来のchar.IsWhiteSpace(より広い文字集合)から厳密なXML空白文字セットに変更
  • AppContextスイッチ: Switch.System.Xml.Serialization.UseLegacyXmlListSeparationで従来の連結動作にオプトアウト可能
  • メタデータ: Mappings.csにTextAccessor.IsListプロパティを追加し、アクセッサー単位のリスト意味論を管理
  • テスト: [XmlText]配列・List<string>・混合要素/テキストコンテンツのラウンドトリップ、空白正規化、レガシースイッチの動作をカバー

パフォーマンスへの影響

影響なし

関連Issue

#115837

その他

  • 破壊的変更:新動作がデフォルト。従来の連結動作に依存するコードは明示的にAppContextスイッチで有効化が必要
  • null/空の中間要素は正規化時に折りたたまれ、ラウンドトリップでは失われる(XML空白を個別リスト項目内に埋め込まないことが呼び出し元の責任)
  • ランタイムのみのテスト型はSerializationTypes.RuntimeOnly.csに配置し、事前生成シリアライザーテストプロジェクトから除外

#130159 Use CodeVersioning for EnC

  • 作成者: @rcj1
  • 作成日時: 2026年07月03日 06:35:58(UTC)
  • マージ日時: 2026年07月28日 04:23:39(UTC)
  • ラベル: area-Diagnostics-coreclr

概要

Edit-and-Continue (EnC) 機能がコード バージョニング インフラストラクチャに統合されました。EnC編集は明示的なILコードバージョンとして表現され、ReJITとは区別されます。各編集は単一の新しいILCodeVersionと単一のNativeCodeVersionに対応します。EnCとReJITは相互に互換性がありません。

変更内容

コア ランタイム機能:

  • ILCodeVersionNode に CodeVersionSource 列挙型(kUnknown, kReJIT, kEnC)と EnCVersion フィールドを追加(src/coreclr/vm/codeversion.h/cpp)
  • EnC IL メソッドを CodeVersionManager を通じてバージョン管理可能に(src/coreclr/vm/method.hpp/cpp)
  • MethodDesc::GetILHeader でアクティブな EnC IL をコードバージョンマネージャーから返すように変更
  • EnC バージョン作成・アクティベーション時にソースとバージョン番号を記録(src/coreclr/vm/encee.cpp)
  • ReJIT 設定時に CodeVersionSource::kReJIT でタグ付け(src/coreclr/vm/rejit.cpp)

デバッガ・DAC統合:

  • ReJIT 列挙を ILCodeVersion::IsReJIT() でフィルタリング(EnC・デフォルトバージョンを除外)
  • DAC/cDAC ReJIT API を真の ReJIT バージョンのみに制限(src/coreclr/debug/daccess/request.cpp)
  • IL 取得パスでアクティブな EnC コードバージョンを優先(src/coreclr/debug/daccess/dacdbiimpl.cpp, ClrDataFrame.cs)
  • デバッガの ReJIT 関連チェックを EnC バージョンを無視するように更新(src/coreclr/debug/ee/debugger.cpp)
  • ローカル署名解析でアクティブな EnC IL を使用(src/coreclr/debug/ee/functioninfo.cpp)

cDAC (マネージド DAC):

  • ICodeVersions.IsReJIT API を新規追加(src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/ICodeVersions.cs)
  • CodeVersionSource を公開API として導入
  • レガシー SOS DAC 動作を IsReJIT でフィルタリング
  • DBI ヘルパーパスで CodeVersionManager を使用して EnC バージョンを解決
  • MockDescriptor と単体テストで新フィールドをサポート

ドキュメント:

  • CodeVersions.md で新しい CodeVersionSource/IsReJIT 概念を文書化

パフォーマンスへの影響

影響なし

関連Issue

#128338のフォローアップ

その他

注意点:

  • 新しい公開 API (CodeVersionSource 列挙型、ICodeVersions.GetSource/GetEnCVersion) が導入されていますが、PR説明に API 承認 Issue への参照がありません。dotnet/runtime のポリシーでは新しい公開 API には api-approved ラベル付きの Issue リンクが必要です。
  • Copilot によるレビューで複数の潜在的な問題が指摘されています:
    • `Get

#129492 Implement support for derived IXmlSerializable types in XmlSerializer

概要

反射ベースのXmlSerializerで、派生したIXmlSerializable型の逆シリアル化サポートを実装しました。xsi:type属性を正しく解析して派生型を特定し、以前はNotImplementedExceptionをスローしていた処理を適切に処理できるようになりました。長年未実装だった機能がこのPRで解決されます。

変更内容

  • ReflectionXmlSerializationReader.cs: SerializableMapping.DerivedMappingsツリーを走査して、xsi:typeに対応する派生IXmlSerializable型を正しく選択・逆シリアル化するロジックを追加。ReadDerivedSerializableヘルパーメソッドで派生マッピング検索とインスタンス化処理を統一
  • XmlSerializerTests.RuntimeOnly.cs: スキップされていたXml_DerivedIXmlSerializableテストを有効化し、派生IXmlSerializable型のシリアル化・逆シリアル化動作を検証
  • XmlSerializerTests.Internal.cs: 実装完了に伴い、スキップ対象テストを削除
  • System.Private.Xml.Tests.csproj: テスト構成の調整

パフォーマンスへの影響

影響なし

関連Issue

#1401

その他

  • これは公開APIXmlSerializerの既存機能の完成です。破壊的変更はありません
  • 派生IXmlSerializable型のシリアル化機能はすでに存在していたため、今回は逆シリアル化側の対応となります
  • XSD標準のxsi:type属性による型指定が、派生型に対して正しく機能するようになりました

#128148 Arm64: Initialization of TYP_SIMD/TYP_MASK locals

概要

ARM64アーキテクチャにおいて、TYP_SIMDおよびTYP_MASKローカル変数のゼロ初期化処理を改善しました。ベクタストア命令のループを用いてUnknownSizeFrame全体を初期化し、デバッグコードではTYP_SIMDローカルを個別にポイズン値(ブロードキャスト)で初期化します。TYP_MASKローカルはアドレス公開されないためポイズン化しません。初期化コードは関数の最初の基本ブロックで生成されます。

変更内容

  • src/coreclr/jit/codegen.h: 初期化処理関連の新規メソッド宣言を追加
  • src/coreclr/jit/codegenarm64.cpp: ARM64特有の初期化コード生成ロジックを実装(37行追加)
  • src/coreclr/jit/codegenarmarch.cpp: ARM系アーキテクチャ共通の初期化処理を実装(48行追加)
  • src/coreclr/jit/codegencommon.cpp: 共通の初期化処理フレームワークを追加(8行追加)
  • src/coreclr/jit/codegenlinear.cpp: 線形コード生成での初期化処理統合(7行追加)
  • src/coreclr/jit/emitarm64.cpp: ベクタストア命令の生成ロジックを拡張(28行追加、7行削除)
  • src/coreclr/jit/lsrabuild.cpp: ライフタイム解析における初期化変数の処理を追加(13行追加)
  • src/coreclr/jit/targetarm64.h: ターゲット固有の初期化設定を更新(3行追加、1行削除)

パフォーマンスへの影響

ベクタストアループによるバルク初期化により、複数のSIMD/MASKローカル変数を効率的に初期化できるため、初期化オーバーヘッドが削減される可能性があります。デバッグビルドではポイズン化により若干のオーバーヘッドが発生しますが、これはデバッグ時の検出能力向上のための設計です。

関連Issue

なし

その他

  • TYP_MASKローカルのポイズン化は明示的に除外されています(アドレス公開されないため)
  • ジッターコンパイラ(JIT)のARM64コードジェネレーション層での実装です
  • 公開APIではなく、内部的なコンパイル時処理の改善です

#127520 Arm64 SVE: Support scalable constant vectors and masks

概要

Arm64 SVE(Scalable Vector Extension)向けに、スケーラブルな定数ベクトルとマスクのサポートを追加します。従来の固定サイズのデータブロックの代わりに、反復値、開始値と段階値を持つシーケンス、または最初のレーンの値で残りがゼロのいずれかで表現されます。これにより、ベースタイプを持つ未知のサイズの定数がサポートされます。

サポートされる操作:

  • Sve.CreateTrueMask*()、Sve.CreateFalseMask*()
  • Vector.Create()、Vector.CreateScalar()、Vector.CreateScalarUnsafe()、Vector.CreateSequence()

変更内容

  • gentree.h/cpp: スケーラブル定数の新しいエンコーディング(simdscalable_t、simdmaskscalable_t)を導入。GenTreeVecConとGenTreeMskConを拡張し、ハッシング機能を追加
  • simd.h/cpp: スケーラブルベクタ/マスク定数のヘルパーAPI実装と変換機能
  • valuenum.h/cpp: Arm64向けのスケーラブルSIMD定数のValue Number(VN)サポート追加
  • hwintrinsicarm64.cpp: VectorT イントリンシックのインポート処理更新
  • hwintrinsiccodegenarm64.cpp: SVE命令の生成
  • lowerarmarch.cpp: マスク処理とVectorT イントリンシック処理の更新
  • lsraarm64.cpp: 直接エンコードできないスケーラブルベクトル定数用に一時変数を予約
  • codegenarm64.cpp: スケーラブルベクトル/マスク定数の生成コード追加
  • その他: コンパイラヘルパー、ビットマスク機能、emitarm64における署名付き直接値ヘルパーを拡張

パフォーマンスへの影響

simd_t型定義がsimd16からsimd32サイズへ変更されたため、新しいスケーラブル定数構造をサポートします。2つのスケーラブル定数を組み合わせて第3のスケーラブル定数を生成できない場合があり、その場合IRで2つのベクトルとして保持されます。影響はスケーラブルベクトル定数に特化しており、固定サイズベクトルの既存パスは変更されません。

関連Issue

#125057

その他

  • マスク定数のIsAllBitsSet()機能がベースタイプパラメータを追加。マスク値はベースタイプの粒度に依存(例:TYP_LONGの全ビットセットはTYP_BYTEではセットされない)
  • Arm64ではマスクはSVEのみで使用されるため、スケーラブルなマスクかどうかを判定するにはJitUseScalableVectorTをチェック
  • VectorT型の定数はTYP_SIMDの場合、スケーラブルと判定
  • Copilotレビューで複数の低信頼度コメント指摘あり:スケーラブル定数生成時の値の正規化(特に64ビット未満の基本型)、等価性とハッ

目次