次のコードスニペットを検討してください
synchronized (A.class) {
foo();
synchronized (B.class) {
bar();
}
}
そして、AとBが交換される別のコード。これはデッドロックを引き起こす可能性があり、ASMを使用してこれを検出しようとしています(特に、A、Bが、同期すべきでないことがわかっているクラスであるかどうかのみを検出します。たとえば、例外)。現在、SimpleVerifierを使用するアナライザーがあります。これを使用して、スタックの最上位にあるBasicValueを取得し、そのTypeを取得できますが、コード例では、内部名はjava / lang / Classになり、どのクラスであるかはわかりません。クラスが表すクラスを見つける簡単な方法を見つけることができないようです。どんな助けでも大歓迎です。ありがとう!