JVM 中的 at ReturnAddress 是什么意思?
What does `at ReturnAddress` mean in JVM?
我正在阅读 JVMS, §2 The Structure of The Java Virtual Machine。
2.3.3. The returnAddress Type and Values
我有一些问题。 returnAddress
是什么?
returnAddress是上一帧的地址吗?
谁能简单解释一下?
The returnAddress type is used by the Java Virtual Machine's jsr, ret, and jsr_w instructions (§jsr, §ret, §jsr_w)
我看到returnAddress
被指示jsr,jsr_w,ret
使用(最后声明为Java),从JDK7开始虚拟机不允许出现这几个指令(jsr..) ,那么它还有存在的意义吗?
Is returnAddress the address of the previous frame?
不,returnAddress
是当前字节码中包含 jsr
或 jsr_w
和 ret
指令的位置。
如the documentation of these instructions所述,它用于表示紧跟在jsr
或jsr_w
指令之后的字节码位置,以允许ret
在该位置恢复。
I saw that returnAddress
was instructed jsr,jsr_w,ret
using (finally statement for Java), starting from JDK7 virtual machine is not allowed to appear these several instructions …, so does he still have a point of existence?
在 Java classes 51 或更高版本中,这些指令可能不会出现,因此,代码可能永远不会处理 returnAddress
类型的值。与此相关,StackMapTable
attributes 无法表示类型 returnAddress
.
不过,只要 JVM 向后兼容旧的 class 文件,returnAddress
就是一回事。
我正在阅读 JVMS, §2 The Structure of The Java Virtual Machine。
2.3.3. The returnAddress Type and Values
我有一些问题。 returnAddress
是什么?
returnAddress是上一帧的地址吗?
谁能简单解释一下?
The returnAddress type is used by the Java Virtual Machine's jsr, ret, and jsr_w instructions (§jsr, §ret, §jsr_w)
我看到returnAddress
被指示jsr,jsr_w,ret
使用(最后声明为Java),从JDK7开始虚拟机不允许出现这几个指令(jsr..) ,那么它还有存在的意义吗?
Is returnAddress the address of the previous frame?
不,returnAddress
是当前字节码中包含 jsr
或 jsr_w
和 ret
指令的位置。
如the documentation of these instructions所述,它用于表示紧跟在jsr
或jsr_w
指令之后的字节码位置,以允许ret
在该位置恢复。
I saw that
returnAddress
was instructedjsr,jsr_w,ret
using (finally statement for Java), starting from JDK7 virtual machine is not allowed to appear these several instructions …, so does he still have a point of existence?
在 Java classes 51 或更高版本中,这些指令可能不会出现,因此,代码可能永远不会处理 returnAddress
类型的值。与此相关,StackMapTable
attributes 无法表示类型 returnAddress
.
不过,只要 JVM 向后兼容旧的 class 文件,returnAddress
就是一回事。