我的理解是,只要优化没有观察到违反JLS的效果即为有效。例如,JIT编译器可以在内部循环中优化掉“无意义”的代码。
但我不记得有明确定义这种情况的声明。
是否有人知道Java优化(例如由本机代码编译器执行)何时有效的明确声明(即在JLS或类似文件中)?
我的理解是,只要优化没有观察到违反JLS的效果即为有效。例如,JIT编译器可以在内部循环中优化掉“无意义”的代码。
但我不记得有明确定义这种情况的声明。
是否有人知道Java优化(例如由本机代码编译器执行)何时有效的明确声明(即在JLS或类似文件中)?
只要编译器优化不会使代码的行为与标准不同,它就是有效的。这适用于所有语言。
我认为没有必要特别说明这一点,因为符合标准的编译器唯一的要求是其行为与标准描述的相同。一个不改变其表现行为的优化显然不会改变它是否符合标准。
code_statement; // “valid” optimization
。 - Margus