私は、バイトコードを生成するためのASMライブラリを学んでいます。私が悪いのローカル変数の型と、いくつかのミスを犯し、エラーを得たいくつかの点で: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)
問題が見つけて修正することは困難ではなかったが、私は、このスタックマップテーブルの事は何か興味が?
基本的には、検証者が痛いほど遅く、スピードを上げるには他の方法も見えないため、Sunが追加した「機能」です。 –