【发布时间】:2014-12-05 02:17:00
【问题描述】:
例如,在这种情况下
int x;
for (...) {
... some work, y and z not changed
x = y / z;
... some code using x
}
如果 JVM(实际上是 JIT 编译器)不能证明 z 是非零,在“正确”时刻抛出ArithmeticException?
关于强制转换(可能导致ClassCastException)和拆箱(可能导致NullPointerException)的相同问题,仍然假设在某些情况下JVM / JIT编译器无法证明对象具有适当的类或拆箱值是非空。
更新。 morgano 说这个问题专门针对JVM实现。在这种情况下,我的问题是关于 Hotspot JVM/JIT 编译器的实现。
【问题讨论】:
-
使用-XX:+PrintAssembly,亲自看看 HotSpot 能做什么。
标签: java jvm compiler-optimization jit jvm-hotspot