我正在用带有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/循环体的字节码适合64K块。我在生成的程序集中找不到任何goto_w命令——我猜FPC不会发出它们。
这个问题在Jasmin中得到了解决,现在它在适当的时候用goto_w代替了goto。在获取副本ftp://ftp.freepascal.org/pub/fpc/contrib/jvm/fpcjvmutilities.zip