私はcassandraドライバを計測しようとしています。特に、いくつかの情報に掛かるようにResultSetクラスを変更する必要があります。これを行うには、インスタンスが割り当てられているコードを変更する必要があります。これは別のクラスの静的メソッドです。このコードには次のスニペットが含まれています。AdviceAdapter onMethodExitはまだ呼び出されていません
return r.metadata.pagingState == null
? new SinglePage(columnDefs, tokenFactory, protocolVersion, columnDefs.codecRegistry, r.data, info)
: new MultiPage(columnDefs, tokenFactory, protocolVersion, columnDefs.codecRegistry, r.data, info, r.metadata.pagingState, session);
また、メソッド内に他の戻り値があります。だから、私の考えは、このメソッドでAdviceAdapterを使い、onMethodExit()を使うことでした。しかし、私の方法は決して呼び出されませんでした。それ以来、方法は戻ってきています。ちょっとデバッグした後、私はAdviceAdapterクラスのvisitInsn()がIALOADのオペコード(配列からintをロードする)で一度だけ呼び出されていることがわかりました。
私の質問は、おそらく何が起こっているのでしょうか?こんにちは。申し訳ありませんが、私の机の上で私の頭を今日何度も何度も骨折りました。
EDIT:私のクラスを単純なMethodVisitorに変更して、さらに多くのオペコードが表示されるかどうかを確認しました。私はそれをすべて見ます!私はもはやdup()にアクセスできなくなりました。私は私のプロジェクトの一つに(のjavax /メール/交通用)EmailAdviceAdaptorを使用していた
'dup()'だけが必要な場合は、単純な 'visitInsn(Opcodes.DUP)'の短縮形についてはあまり気にしませんが、 'GeneratorAdapter'だけが必要です。あなたのカスタム訪問者が 'GeneratorAdapter'または' AdviceAdapter'をラップするようにします。あなたの訪問者が 'AdviceAdapter'のサブタイプであるASMにはこのタイプに関する特別なケースはありません。たぶんあなたはそれを妨害する方法でいくつかの他のメソッドをオーバーライドしましたか? – Holger
こんにちは。私はGeneratorAdapterを試してみましたが、最初のOpCodeだけを見ました。私はこの時点で他の方法をオーバーライドしておらず、他の訪問者をこのクラスにも適用していません。それはすべてかなり奇妙です。多分日食がどうにかして起こっているのだろうか?コマンドラインからテストを実行して、何かがうまく動作するかどうかを確認します。 – ticktock