я к стыду вообще про гц очень поверхностно знаю, не моя область.
Но сп у нас это проверка некого булевого флажка и если он выставлен - надо замерЕть, так все треды кооперативно договариваются о сборе, что дальше и какие транзишны, как сканится стек и т.п. - вообще не имею понятия :) моя задача была толкьо реализовать механизм их расстановки при помощи PlaceSafepointPass и оказалось там все просто - просто создай ф-цию с фиксированным названием и тремя бб-ками
Да, при наличии достаточной типовой информации на уровне IR (primitive vs reference vs derived ptr) построить GC map в произвольной точке кода не составляет большой проблемы.
А по поводу принудительной деоптимизации: у вас CHA есть? Если да, то как реализована поддержка в runtime? То есть «соптимизировали, запустили код, пришёл запрос на загрузку нарушающий инвариант». Что дальше?