GCC 17でネスト関数のキャプチャが可能に:トランポリン不要の新ビルトイン関数
Using GCC's Nested Functions with Wide Pointers and No Trampolines II
GCC 16では、親関数の変数にアクセスしないネスト関数はトランポリンを必要としないことが保証された。さらにGCC 17では、キャプチャを伴うネスト関数をトランポリンなしで実現するための新しいビルトイン関数がマージされた。これにより、コールバック関数を効率的に実装でき、最適化後は単一のアセンブリ命令にまで簡略化される例も紹介されている。
トランポリンを排除すれば、GCCが内部的に行うのは、この例を上記の例に自動的に変換することだけです。
HNでの議論
47- mbeavitt
なぜ実際的な観点から、ネスト関数を使いたいと思う人がいるのでしょうか?
- mananaysiempre
タグで区別される、コードポインタかクロージャ(ディスクリプタ)ポインタのどちらかを関数ポインタが指せるようにする、というあなたの以前のパッチについてはどうですか?
- tpoacher
「トランポリン」とは何ですか?