2017-03-28 3 views
0

ASM 바이트 코드 조작 프레임 워크의 visitLine() 메소드는 컴파일 된 소스 코드의 각 라인을 방문합니다. 나는 라인이ASM ByteCode - visitLine() 메소드를 오버라이드

Line 45: ArrayList<Integer> test = new ArrayList< 
Line 46:         Integer>(); 

같은 소스 코드에서 분해 한 경우

은 그럼 그냥 라인 45이 실행 표시되도록 모두 45, 46가 재정의 할 수있는 방법이 있나요이다?

+1

바이트 코드에서는 단지 하나의 라인이됩니다. – esin88

+1

@ esin88 좋습니다. 내가 방문한 모든 라인을 인쇄하기 위해 visitLine 메소드를 오버라이드했습니다. 그리고 그것은 45와 46 둘 다 보여줍니다. – maddie

+1

소스 코드에서 opcode로 컴파일해야하는 두 줄에 코드가있는 줄 바꿈이있는 경우이 코드는 바이트 코드에 보관됩니다. 이것은 행 코드에 opcode의 범위를 연관시키는 테이블 속성에 행을 저장하는 바이트 코드 때문입니다. ASM은 전체 프로세스를 단순화합니다. –

답변

1

ASM은 Jaca 컴파일러가 추가 한 모든 회선 정보를 추가합니다. 한 행을 삭제하려면 해당 행을 직접 필터링해야합니다. 예를 들어 라인에 명령어가 포함되어 있지 않은지 확인할 수 있습니다. 기본 메소드 방문객에 대한 호출을 억제 할 수 있습니다.

+0

오케이. 귀하의 제안에 감사드립니다. 나는 그것을 시도 할 것이다. – maddie