我正在使用带有 JVM 后端的 Free Pascal 编译一段 Delphi 代码。
如果参与将 Free Pascal 移植到 JVM 后端的人正在阅读这篇文章,那么这是我收到的编译错误消息:
MyFile.j:379326: JAS Error: reference from line 10039 exceed size for short.
该文件很大(>6000 行),其中的函数也很大。因此,可能有一些资源正在枯竭。有人可以提示我要简化什么来摆脱这个吗?
我正在使用带有 JVM 后端的 Free Pascal 编译一段 Delphi 代码。
如果参与将 Free Pascal 移植到 JVM 后端的人正在阅读这篇文章,那么这是我收到的编译错误消息:
MyFile.j:379326: JAS Error: reference from line 10039 exceed size for short.
该文件很大(>6000 行),其中的函数也很大。因此,可能有一些资源正在枯竭。有人可以提示我要简化什么来摆脱这个吗?
跟踪到 Jasmin 汇编程序的错误消息:http ://www.java2s.com/Open-Source/Java/Byte-Code/Jasmin-2.4/jas/InsnOperand.java.htm
goto
当字节码程序集文件中有一个命令指向一个超过 32KB 的标签时,似乎会出现错误。因此,似乎应该归咎于块大小 - FPC 中的程序集生成器假定单个 if/loop 主体的字节码适合 64K 块。我在生成的程序集中找不到任何 goto_w 命令 - 猜测 FPC 不会发出它们。
这个问题在 Jasmin 中得到了修复——它现在在适当的地方用 goto_w 替换了 goto。在ftp://ftp.freepascal.org/pub/fpc/contrib/jvm/fpcjvmutilities.zip获取一份副本