私はバイトコード計測プロジェクトに取り組んでいます。現在、オブジェクトを処理するとき、ベリファイアはほとんどの場合エラーをスローします。したがって、オブジェクトを使用したルールに関することを明確にしたいと思います(JVMを読みましたが、探していた答えが見つかりませんでした)。
私は新しい命令を計測しています:
元のバイトコード
NEW <MyClass>
DUP
INVOKESPECIAL <MyClass.<init>>
計装後
NEW <MyClass>
DUP
INVOKESTATIC <Profiler.handleNEW>
DUP
INVOKESPECIAL <MyClass.<init>>
プロファイル参照(新しく作成されたオブジェクト)を引数として取るProfiler.handleNEW()への呼び出しを追加したことに注意してください。
上記のコードの一部は、VerificationErrorをスローします。INVOKESTATIC(DUPのみを残す)を追加しない場合は追加されません。それで、私が違反している規則は何ですか?初期化されていない参照を複製することはできますが、パラメーターとして渡すことはできませんか?助けていただければ幸いです。ありがとうございました