![]() |
1
7
HotSpot目前无法完成此操作。 如果不是内联的,方法调用对于JIT编译器通常是不透明的。很难进行交叉方法优化。其中一个原因是方法入口点是易变的,即由于JIT编译、重新编译、去优化、JVMTI调用等,它可以在运行时并发更改。当HotSpot进行显式方法调用时,它不知道目标方法是否被解释或编译,是否收集JIT统计信息,是否正在调试,内部是否有断点,或者是否启用了JVMTI方法事件。 另一方面,即使存在这种优化,也不会太有用。纯方法所能做的事情非常有限,因此它们通常很简短,并且很容易内联。在内联之后,JIT更容易在相同的编译范围内进行优化。 |
![]() |
Imran · Nim编译器优化标志 7 年前 |
![]() |
Mário Feroldi · 在运行时调用代码中未调用的函数 7 年前 |
![]() |
Artemis · 寄存器与指令之间的差异 7 年前 |
![]() |
pandascope · golang编译器是否使用常数折叠? 7 年前 |
![]() |
Marc · C优化:为什么编译器不将对象视为常量? 7 年前 |