为什么JSR / RET不推荐使用Java字节码?

有谁知道为什么在Java 6中不推荐使用JSR / RET字节码对?

我在网上发现的唯一有意义的解释是,他们通过运行时进行代码分析更难以执行。 有谁知道另一个原因?

由于一些正常的字节码约束(例如在进入JSR时具有一致的堆栈形状),JSR和RET使得字节码validation比原本要困难得多。 好处很小(在某些情况下可能会稍微小一点的方法),并且validation程序在处理奇怪的JSR / RET模式(以及潜在的安全漏洞以及完整validation的相关运行时成本)方面的持续困难使其成为一个无用的function继续拥有。

堆栈映射和由于数据而启用的轻量级validation器在类加载期间是一个巨大的性能胜利,不会牺牲安全性。