fast-path や slow-path 1 が失敗した場合, どの処理パスも最終的には ObjectSynchronizer::slow_exit() または ObjectSynchronizer::fast_exit() に到達する.
この ObjectSynchronizer::slow_exit()/ObjectSynchronizer::fast_exit() の処理は, インタープリタ種別/JIT 種別/CPU 等によらず共通.
なお, 実際の slow-path の処理は ObjectSynchronizer::fast_exit() の方に実装されている. ObjectSynchronizer::slow_exit() は ObjectSynchronizer::fast_exit() にフォールバックするだけ (<= 名前からすると逆の方が自然な気もするが...).
-> ObjectSynchronizer::fast_exit() -> ObjectSynchronizer::inflate() -> ObjectMonitor::exit() -> ObjectMonitor::ExitEpilog() -> os::PlatformEvent::unpark() -> (See: here for details)
-> ObjectSynchronizer::slow_exit() -> ObjectSynchronizer::fast_exit() -> (同上)
See: here for details
See: here for details
(#Under Construction)
(#Under Construction)
(#Under Construction)
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.