Bayt kodu oluşturmak için ASM kitaplığını öğreniyorum. Bir noktada ben kötü yerel değişken türü ile bazı hata yaptı ve bir hata var:JVM bayt kodunda stackmap tablosu nedir?
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)
sorun bulmak ve gidermek için zor değildi ama bu stackmap masa şey nedir merak ediyorum? Java 6 veya üstü ile derlenen sınıflardaki bir öznitelik
Evet, temelde Sun'ın eklediği bir "özellik", çünkü doğrulayıcıları ağrılı bir şekilde yavaştı ve hızlandırmak için başka bir yol görmek için çok yoğundu. –