2017-10-22 4 views
0

바이트 코드에있는 명령어의 일부 시퀀스를 대체하는 Java에 새로운 SuperInstructions을 추가해야합니다. 많은 연구 기사를 읽었지만 업데이트해야하는 파일 이름은이 기사에서 언급하지 않았습니다. 사람이 나에게 JVM의 홈페이지 통역 루프 등 X86, ARM과 같은 어떤 아키텍처의 경우 문을 가진 포함 핫스팟 파일을 확인하시기 바랍니다 수
즉 , 내가 파일의 위치를 ​​필요 여기에는 코드가이므로 수정할 수 있습니다.JVM에 SuperInstruction 추가하기

+1

기존 바이트 코드 명령어를 언급 한 파일을 찾을 것입니다. –

+0

@PeterLawrey, 기사에는 자바 바이트 코드의 각 명령어에 대한 코드가 들어있는 메인 스위치 케이스 루프가 있습니다. 나는 그것을 수정하고 그것에 새로운 지침을 추가해야합니다. 미리 지원해 주셔서 감사합니다 –

+1

이 기사가 구현 방법에 대해 이야기하고 있다고 가정합니다. JVM이 더 복잡하거나 최적화 된 것 같습니다. –

답변

1

HotSpot 소스 코드에 익숙하지 않은 경우 새로운 명령어를 추가하는 것은 쉬운 작업이 아닙니다. 이는 단지 몇 군데를 수정하는 문제가 아닙니다. 여기에는

  • Bytecode interpreter 및 상수 풀 해결 자와 같은 많은 JVM 부품이 포함됩니다.
  • Verifier;
  • OopMap generator;
  • C1C2 파서, 최적화 도구 및 코드 생성기가있는 컴파일러입니다.
  • 아마도 다른 부분은 새로운 지시 사항에 따라 다릅니다.

또한 HotSpot JVM에는 '주 인터프리터 루프'이 전혀 없습니다. 대신, 템플릿 인터프리터이 있는데 이는 JVM이 시작될 때 런타임에 생성됩니다. 각 바이트 코드에는 모든 가능한 스택 최상위 상태에서이 바이트 코드 실행을위한 인터프리터 스 니펫을 생성하는 플랫폼 종속 어셈블리 형식의 템플릿이 있습니다. 각 템플릿은 일반적으로 다음 바이트 코드로 전달되는 시퀀스로 끝납니다.

x86 템플릿 인터프리터의 모양을 보려면 src/cpu/x86/vm/templateTable_x86.cpp을 참조하십시오. 새로운 지침에는 비슷한 템플릿이 필요합니다.

+0

다른 벤치 마크에서 성능 개선 작업을해야합니다. 그러한 정보를 가지고있는 위키/문서에 대해 안내해 주실 수 있습니까? 답장을 보내 주셔서 감사합니다. –

+0

@adeeliqbal 최고의 HotSpot 문서는 [소스 코드] (http://hg.openjdk.java.net/jdk9/jdk9/hotspot/file/tip)입니다. 진지하게. – apangin

+0

인터프리터를 수정해야하는 경우 어떻게해야합니까? 나는 두 개 이상의 오래된 지침을 대체하는 코드에 superinstructions를 추가해야한다. 이 경우 어떻게해야합니까? –

관련 문제