解释器函数栈原理(一) 建栈
解释器函数栈原理(一) 建栈书接上回,generate_normal_entry用于生成普通函数的入口,其内部逻辑实现如下1 定义各参数位置hotspot使用宏汇编)定义各参数在内存中的位置constAddressconstMethod(rbx,Method::const_offset());constAddressaccess_flags(rbx,Method::access_flags_offset());constAddresssize_of_parameters(rdx,ConstMethod::size_of_parameters_offset());constAddresssize_of_locals(rdx,ConstMethod::size_of_locals_offset());以constMethod为例进行说明,该变量的声明用于是定义在rbx指向的地址上加上一段偏移,在该地址放入Method的constMethod对象地址。注意:在x86架构下,如果需要保存函数指针,则使用rbx寄存器进行保存,这个约定是写hotspot的人制定的。如果不需要保存函数指针,或者函数指针已经用完,则rbx可以给其他的过程使用。其他如r13寄存器用于保存字节码索引等类似,此处不表。关于offset的确定在hotspot中,几乎每个需要保存在内存中的类都会定义一些offset函数,用于指明当前对象的私有成员跟头指针的距离。以Method的_constMethod