考虑以下代码:
void methodWithOSR() {
Foo foo = new Foo(); // this object doesn't escape
for (int i = 0; i < 1_000_000; i++) {
// some code that uses `foo`
}
}
当C2 OSR编译启动时,热点JVM能否将foo
在栈上标量化?我认为这可能会有问题,因为堆中已经存在一个活动对象,所以不可能将对象从堆移到栈和寄存器中。