"调用"在编译期间制作?

时间:2018-01-26 12:36:07

标签: java bytecode instrumentation java-bytecode-asm jvm-crash

# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (javaCalls.cpp:64), pid=3560, tid=140207058839296
#  guarantee(!thread->is_Compiler_thread()) failed: cannot make java calls from the compiler
#
# JRE version: Java(TM) SE Runtime Environment (7.0_65-b17) (build 1.7.0_65-b17)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (24.65-b04 mixed mode linux-amd64 compressed oops)

错误最终证明我在抛出异常之前忘记了一条pop指令。 (抛出Exception之前的最后一条指令是checkcast已成功,而Java并不喜欢它的结果仍在堆栈中。)

[另外(应该是显而易见的,但我意识到我的话可能令人困惑):在执行错误代码期间没有抛出异常(因为代码仍然被编译而没有被执行),但是在{之后的下一条指令{1}}等于抛出异常。]

但是,我很好奇,这会导致此错误消息,

checkcast

什么样的"电话"编译器是否会认为它会尝试制作?

0 个答案:

没有答案