바이트 코드에있는 명령어의 일부 시퀀스를 대체하는 Java에 새로운 SuperInstructions을 추가해야합니다. 많은 연구 기사를 읽었지만 업데이트해야하는 파일 이름은이 기사에서 언급하지 않았습니다. 사람이 나에게 JVM의 홈페이지 통역 루프 등 X86, ARM과 같은 어떤 아키텍처의 경우 문을 가진 포함 핫스팟 파일을 확인하시기 바랍니다 수
즉 , 내가 파일의 위치를 필요 여기에는 코드가이므로 수정할 수 있습니다.JVM에 SuperInstruction 추가하기
답변
HotSpot 소스 코드에 익숙하지 않은 경우 새로운 명령어를 추가하는 것은 쉬운 작업이 아닙니다. 이는 단지 몇 군데를 수정하는 문제가 아닙니다. 여기에는
- Bytecode interpreter 및 상수 풀 해결 자와 같은 많은 JVM 부품이 포함됩니다.
- Verifier;
- OopMap generator;
- C1 및 C2 파서, 최적화 도구 및 코드 생성기가있는 컴파일러입니다.
- 아마도 다른 부분은 새로운 지시 사항에 따라 다릅니다.
또한 HotSpot JVM에는 '주 인터프리터 루프'이 전혀 없습니다. 대신, 템플릿 인터프리터이 있는데 이는 JVM이 시작될 때 런타임에 생성됩니다. 각 바이트 코드에는 모든 가능한 스택 최상위 상태에서이 바이트 코드 실행을위한 인터프리터 스 니펫을 생성하는 플랫폼 종속 어셈블리 형식의 템플릿이 있습니다. 각 템플릿은 일반적으로 다음 바이트 코드로 전달되는 시퀀스로 끝납니다.
x86 템플릿 인터프리터의 모양을 보려면 src/cpu/x86/vm/templateTable_x86.cpp을 참조하십시오. 새로운 지침에는 비슷한 템플릿이 필요합니다.
다른 벤치 마크에서 성능 개선 작업을해야합니다. 그러한 정보를 가지고있는 위키/문서에 대해 안내해 주실 수 있습니까? 답장을 보내 주셔서 감사합니다. –
@adeeliqbal 최고의 HotSpot 문서는 [소스 코드] (http://hg.openjdk.java.net/jdk9/jdk9/hotspot/file/tip)입니다. 진지하게. – apangin
인터프리터를 수정해야하는 경우 어떻게해야합니까? 나는 두 개 이상의 오래된 지침을 대체하는 코드에 superinstructions를 추가해야한다. 이 경우 어떻게해야합니까? –
- 1. jvm에 연결
- 2. JVM에 포함 된 기능
- 3. JVM에 의한 코드 인식
- 4. JVM에 Neo4j가 임베드되었습니다.
- 5. jvm에 자바 핫스팟 클래스로드하기
- 6. @Given 문은 =========== 오이 JVM에
- 7. 세션이 아닌 JVM에 저장
- 8. java.lang.UnknownError가 JVM에 의해 버려졌습니다
- 9. 테라코타는 JVM에 대한 안정적인 대안입니까?
- 10. 이전 JVM에 log4j를 사용하는 방법
- 11. JVM에 Java 에이전트 삽입 숨기기
- 12. 여러 JVM에 대한 트랜잭션 제어
- 13. JVM에 SIGTERM을 보내는 것이 안전합니까?
- 14. 배포 된 JVM에 메모리 추가
- 15. 이미 실행중인 JVM에 dll을 주입하려고합니까?
- 16. 얼마나 많은 코드가 JVM에 표시됩니까?
- 17. 여러 JVM에 대한 Jamon 통계 집계
- 18. 다른 JVM에 연결하고 이벤트를 수신합니까? 가능한?
- 19. JMX 클라이언트를 사용하여 WebSphere JVM에 연결
- 20. Java - Java 에이전트를 실행중인 jvm에 삽입
- 21. 요람 플러그인 jvm에 Jacoco 에이전트를 연결하는 방법
- 22. Tomcat 6에서 JVM에 heapdump 가져 오기
- 23. 어떤 Maven 아티팩트 버전이 JVM에 작동합니까?
- 24. jvm에 많은 clasloader가있는 이유는 무엇입니까? 왜 안돼?
- 25. 오이 jvm에 대한 사용자 지정 데이터 변압기
- 26. 자바 JVM에 관한 최근의 책은 없습니까?
- 27. 다른 JVM에 GC를 실행하는 RMI 프로그램
- 28. JVM에 DLL을 삽입하고 JNIEnv를 얻을 수 있습니까?
- 29. Java : 클래스를 JVM에 두 번 이상로드해야하는 경우?
- 30. Maven : 하나의 JVM에 다른 라이브러리 버전이 있습니다.
기존 바이트 코드 명령어를 언급 한 파일을 찾을 것입니다. –
@PeterLawrey, 기사에는 자바 바이트 코드의 각 명령어에 대한 코드가 들어있는 메인 스위치 케이스 루프가 있습니다. 나는 그것을 수정하고 그것에 새로운 지침을 추가해야합니다. 미리 지원해 주셔서 감사합니다 –
이 기사가 구현 방법에 대해 이야기하고 있다고 가정합니다. JVM이 더 복잡하거나 최적화 된 것 같습니다. –