Столкнулся тут с проблемой и задумался.
Как работают byte-code verifier'ы, если получается нужно код наполовину исполнить? Неизвестно же что будет на топе стака лежать и тд...
А компилятору доверять нельзя, вдруг юзер сам руками напишет байт-код. И тут либо проверять только базовые вещи, что константы, на которые ссылаются имена функций и подобные случаи, правильного типа и так далее, либо по-сути почти исполнять код, и останавливаться на местах, где что-либо откуда берется, но не вызывать, и, кстати придется даже считать, а следовательно брать типы возвращаемые и класть их куда-то. Получается придется какой-то стек с типами составлять или вроде того...
Или я слишком усложняю и это просто делается?