2013-04-23 1 views
0

바이트 코드의 호출 명령어에있는 메소드가 기본 메소드인지 여부를 알 수있는 방법이 있습니까? 나는 ASM 특정 솔루션을 찾고있다.ASM/java 바이트 코드에서 호출 명령의 메소드가 네이티브인지 아닌지를 감지합니다.

visitMethodInsn(int opcode, String owner, String name, String desc))은이 정보를 제공하지 않습니다. 만약 그렇다면, 나는 무엇을 놓치고 있습니까? 또는 실행되는 메소드가 네이티브인지 아닌지를 확인하는 다른 방법이 있습니까?

int access 매개 변수를 사용하여 이 ClassVisitor 클래스에있는 메소드를 방문하면이 작업을 수행 할 수 있음을 알고 있습니다. 하지만이 메서드의 호출 사이트에서이 정보를 얻는 데 관심이 있습니다.

저는 ASM Core API를 사용하고 있습니다.

이것은 ASM을 사용하여 작성한 Java 프로그램 용 instrumenter 용입니다.

답변

3

통화 사이트에서 정보를 알 수 없기 때문에 통화 사이트에서 정보를 가져올 수 없습니다. 호출 사이트는 실제로 호출 할 메서드의 재정의를 알지 못합니다. 그것은 런타임에 해결됩니다.

+1

실제로 다이나믹 및 사용자 정의 클래스 로더와 같이 런타임까지는 호출하는 메소드가 존재하지 않을 수도 있습니다. – Antimony

관련 문제