Java 了解热点中打印重新定位的输出

Java 了解热点中打印重新定位的输出,java,jvm-hotspot,Java,Jvm Hotspot,我试图理解一个方法在HotSpot VM中编译时是如何存储在CodeBuffer(分为三个不同的部分)中的。我已经打印了搬迁信息,但我不完全理解。这是我的输出: 3918 1 1 Demo::workload (2 bytes) // Relocation information in 3 sections of CodeBuffer CodeBuffer: consts.code = 0x00007fffe11f27a0 : 0x00007fffe1

我试图理解一个方法在HotSpot VM中编译时是如何存储在CodeBuffer(分为三个不同的部分)中的。我已经打印了搬迁信息,但我不完全理解。这是我的输出:

   3918    1       1       Demo::workload (2 bytes)

// Relocation information in 3 sections of CodeBuffer

CodeBuffer:
  consts.code = 0x00007fffe11f27a0 : 0x00007fffe11f27a0 : 0x00007fffe11ff470 (0 of 52432)
  consts.locs = 0x00007fffac008910 : 0x00007fffac008910 : 0x00007fffac008918 (0 of 4) point=0
         @0x00007fffac008910: 

   insts.code = 0x00007fffe11727a0 : 0x00007fffe11727f2 : 0x00007fffe11f2320 (82 of 523136)
   insts.locs = 0x00007fffac0087b0 : 0x00007fffac0087b4 : 0x00007fffac008904 (2 of 170) point=77
         @0x00007fffac0087b0: b416
relocInfo@0x00007fffac0087b0 [type=11(poll_return) addr=0x00007fffe11727b6 offset=22 format=1]
         @0x00007fffac0087b2: 6437
relocInfo@0x00007fffac0087b2 [type=6(runtime_call) addr=0x00007fffe11727ed offset=55 format=1] | [destination=0x00007fffe116f1e0]
         @0x00007fffac0087b4: 


   stubs.code = 0x00007fffe11f2340 : 0x00007fffe11f23f5 : 0x00007fffe11f2780 (181 of 1088)
   stubs.locs = 0x00007fffb4009f90 : 0x00007fffb4009faa : 0x00007fffb4009fcc (13 of 30) point=176
         @0x00007fffb4009f90: 6428
relocInfo@0x00007fffb4009f90 [type=6(runtime_call) addr=0x00007fffe11f2368 offset=40 format=1] | [destination=0x00007fffe12037e0]
         @0x00007fffb4009f92: f803f6ad80097fff705b
relocInfo@0x00007fffb4009f9a [type=7(external_word) addr=0x00007fffe11f23c3 offset=91 data={f6ad80097fff}] | [target=0x00007ffff6ad8009]
         @0x00007fffb4009f9c: f060800a
relocInfo@0x00007fffb4009f9e [type=8(internal_word) addr=0x00007fffe11f23cd offset=10 data=96] | [target=0x00007fffe11f236d]
         @0x00007fffb4009fa0: 6411
relocInfo@0x00007fffb4009fa0 [type=6(runtime_call) addr=0x00007fffe11f23de offset=17 format=1] | [destination=0x00007ffff676dc98]
         @0x00007fffb4009fa2: f801fd729006
relocInfo@0x00007fffb4009fa6 [type=9(section_word) addr=0x00007fffe11f23e4 offset=6 data=-654] | [target=0x00007fffe11f23e4]
         @0x00007fffb4009fa8: 640c
relocInfo@0x00007fffb4009fa8 [type=6(runtime_call) addr=0x00007fffe11f23f0 offset=12 format=1] | [destination=0x00007fffe110f2e0]
         @0x00007fffb4009faa: 

因此,
@
之后的这些地址是每个重新定位条目的地址。但是4位十六进制在
之后指定了什么?之后的所有信息是什么?

如果您能展示您是如何获得此输出的,那将非常有帮助。我正在使用code()->print()和code()->decode_all()在C1_Compilation.cpp中的emit_code_body函数末尾打印重新定位信息。我在RelociInfo中找到了一些详细的注释,因此我认为它现在有一定的意义。如果您有什么需要补充的话,我会很高兴听到您似乎正在使用调试jvm构建,对吗?是的,是的,我正在使用Graal-JVMCI-8的slowdebug构建。如果您能展示您是如何获得此输出的,我将使用code()->print()在C1_Compilation.cpp中的emit_code_body函数末尾打印重新定位信息,这将非常有用和code()->decode_all()我在RelocInfo中找到了一些详细的注释,所以我认为它现在是有意义的。如果您有什么需要补充的话,我还是很高兴听到您使用的是调试jvm构建,对吗?是的,我使用的是Graal-JVMCI-8的slowdebug构建