/ / Détecter si la méthode dans une instruction d'invocation est native ou non en bytecode ASM / java

Détecter si la méthode dans une instruction d'invocation est native ou non en bytecode ASM / java - java, bytecode, java-bytecode-asm

Existe-t-il un moyen de savoir si la méthode dans une instruction invoke en bytecode est une méthode native ou non? Je recherche une solution spécifique à l'ASM.

le visitMethodInsn(int opcode, String owner, String name, String desc)) ne semble pas fournir cette information. Si c'est le cas, que me manque-t-il? OU existe-t-il un moyen différent de confirmer si la méthode à exécuter est native ou non?

Je sais que vous pouvez le faire lorsque vous visitez une méthode avec le visitMethod(int access, String name, String desc, String signature, String[] exceptions) dans le ClassVisitor classe en utilisant le int access paramètre. Mais je suis intéressé à obtenir cette information sur les sites d’appel de la méthode.

J'utilise l'API ASM Core.

Ceci est pour un instrumenteur pour les programmes Java que j'écris en utilisant ASM.

Réponses:

3 pour la réponse № 1

Vous ne pouvez pas obtenir les informations sur les sites d’appel, car elles ne sont pas connues des sites d’appel. Les sites d’appel ne savent pas quelle substitution de la méthode sera appelée. Elle est résolue au moment de l’exécution.