注意点
このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。
目次
- #122652 Add NoInlining and NoOptimization attributes to ClearWaitSleepJoinState method
- #122534 Fix UInt128 to double conversion for values >= 2^104
#122652 Add NoInlining and NoOptimization attributes to ClearWaitSleepJoinState method
- 作成者: @Copilot
- 作成日時: 2025年12月18日 21:28:03(UTC)
- マージ日時: 2025年12月21日 17:32:13(UTC)
- ラベル: area-CodeGen-coreclr
概要
Issue #122479のランタイム障害に対する一時的な回避策として、Thread.ClearWaitSleepJoinState()メソッドにNoInliningとNoOptimization属性を追加しました。コンパイラの最適化によって引き起こされるスレッド待機/スリープ/結合状態遷移の問題を防ぐための最小限の変更です。
[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
private static void ClearWaitSleepJoinState()
変更内容
- ファイル:
src/coreclr/System.Private.CoreLib/src/System/Threading/Thread.CoreCLR.cs - 変更内容:
ClearWaitSleepJoinState()メソッドに[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]属性を追加 - 追加: Issue #122479を参照するコメントを記述し、これが一時的な回避策であることを明記
パフォーマンスへの影響
局所的な性能低下あり
このメソッドに対してインライン化と最適化が禁止されるため、当該メソッド単体の性能が若干低下します。ただし、GC Stressテストでのノイズ軽減が期待でき、機能的な影響はありません。変更は3行のみで影響範囲は限定的です。
関連Issue
- #122479: スレッド状態遷移に関するランタイム障害
その他
本PRはCopilotコーディングエージェントにより生成されました。テスト実施済み(System.Threading.Thread.Tests: 53テスト、0失敗)。今後、根本的な修正が実装されれば、この回避策は削除予定です。
#122534 Fix UInt128 to double conversion for values >= 2^104
- 作成者: @sdcb
- 作成日時: 2025年12月14日 09:33:04(UTC)
- マージ日時: 2025年12月21日 00:03:12(UTC)
- ラベル: area-System.Numerics community-contribution
概要
UInt128からdouble への変換において、2^104以上の値で発生していた精度問題を修正しました。この問題はInt128にも同様に存在していたため、両方の型で修正が適用されています。変換ロジックの微調整により、大きな値の浮動小数点変換精度が向上します。
変更内容
- UInt128.cs: 変換ロジックを2行修正
- Int128Tests.cs: 新規テストケース29行追加(Int128の変換テスト)
- UInt128Tests.cs: 新規テストケース21行追加(UInt128の変換テスト)
修正により、2^104以上の値をdoubleに変換する際の丸め誤差が解決されました。
パフォーマンスへの影響
影響なし
関連Issue
#122203
その他
- レビュープロセス中にInt128にも同じ問題が存在することが確認され、同時に修正が行われました
- release/10.0ブランチへのバックポートが実施されています
- 複数のレビュワーによる慎重なレビューが実施されており、コア開発チームによって承認されています