如何为openJDK11构建hsdis-amd64.dll?

时间:2019-03-24 11:11:47

标签: java jit

我正在上一门有关Java性能优化的课程,并且试图下载所有必需的文件,以便可以构建此DLL hsdis-amd64.dll。本来应该允许我使用JITWatch并学习有关JIT的知识。

无论如何,说明here说要为您的确切JDK下载热点。 我的JDK是11版本11 + 28。

这是openJDK repository,其中

  1. 我应该看下openJDK / MYVERSION / hotspot
  2. 点击代码,选择我的确切版本
  3. 点击bz2下载
  4. 之后,我应该修补刚刚下载的热点hsdiss库,然后
  5. 重新制作。
  6. 将输出DLL放入我的java / bin /

我看到由于许可证问题,无法预先构建DLL。知道人们如何在openJDK11中使用JITWatch吗?

1 个答案:

答案 0 :(得分:0)

我最近根据这里的帖子构建了它:https://dropzone.nfshost.com/hsdis/

  1. 安装Cygwin。在“选择软件包”屏幕上,添加以下软件包(展开“所有/开发”类别,搜索软件包的名称,然后将其“新状态”从“跳过”更改为最新的非测试版本):

    gcc核心 使 mingw64-i686-gcc-core(仅适用于hsdis-i386.dll) mingw64-x86_64-gcc-core(仅适用于hsdis-amd64.dll)

  2. 在终端外壳中运行Cygwin

  3. 将GNU binutils 2.32下载到您的Cygwin主目录中,并用tar xvf binutils-2.32.tar.xz将其解压缩到可以从cygwin路径轻松访问的位置。

  4. 更改为JDK / src / utils / hsdis目录

  5. 像这样构建64位Windows:

    make OS = Linux MINGW = x86_64-w64-mingw32 BINUTILS = / cygdrive / c / cygwin / binutils-2.32

  6. 如果上述命令失败(某些未修补的JDK构建可能会失败),则带有:

    compress.c :(。text + 0x5b):对'inflateInit_'的未定义引用

编辑Makefile,查找libiberty.a,然后将库列表更改为包含libz.a,如下所示:

   LIBRARIES =  $(TARGET_DIR)/bfd/libbfd.a \
        $(TARGET_DIR)/opcodes/libopcodes.a \
        $(TARGET_DIR)/libiberty/libiberty.a \
        $(TARGET_DIR)/zlib/libz.a