Я изучаю библиотеку ASM для генерации байт-кода. В каком-то момент я сделал какую-то ошибку с плохим локальным переменным типом и получил ошибку:Что такое таблица stackmap в байт-коде jvm?
Exception in thread "main" java.lang.VerifyError: Bad local variable type
Exception Details:
Location:
Loops.start()V @56: aload_1
Reason:
Type top (current frame, locals[1]) is not assignable to reference type
Stackmap Table:
full_frame(@24,{Object[#2],Object[#9]},{Integer})
full_frame(@25,{Object[#2],Object[#9]},{Integer,Integer})
same_locals_1_stack_item_frame(@44,Integer)
full_frame(@45,{Object[#2],Object[#9]},{Integer,Integer})
full_frame(@48,{Object[#2]},{Integer})
full_frame(@80,{Object[#2],Integer},{Integer})
full_frame(@81,{Object[#2],Integer},{Integer,Integer})
full_frame(@87,{Object[#2]},{Integer})
full_frame(@119,{Object[#2],Integer},{Integer})
full_frame(@120,{Object[#2],Integer},{Integer,Integer})
same_locals_1_stack_item_frame(@123,Integer)
Проблема не трудно было найти и исправить, но мне любопытно, что это это stackmap стол вещь?
Да, в основном это «особенность», которую добавило солнце, потому что их верификатор был болезненно медленным, и они были слишком плотными, чтобы увидеть любой другой способ ускорить его. –