总结call_stub()中的几个重要参数

      接着上一篇日志,先回顾下Java主函数调用时必须执行的call_stub函数:

static CallStub call_stub()
{
    return (CallStub)(castable_address(_call_stub_entry);
}

      castable_address是一个函数,展开后返回的是address_word类型,其最终原型就是unsigned int,_call_stub_entry也是unsigned int类型,指向了某个内存地址。返回值最终会被类型转换为CallStub类型的函数指针,总的来说,call_stub()函数的调用逻辑就是,在JVM初始化时,便会让_call_stub_entry(unsigned int类型) 指向某一内存区域,接着类型转换成CallStub自定义的函数指针,最后返回,JVM将call_stub()的返回值函数指针作为函数调用。CallStub的结构上一篇日志有写,一个有八个参数,其中result_val_address返回值地址,result_type返回值类型和size_of_parameters入参数量,这些比较简单,而link连接器、Java方法对象method()、调用Java方法的入口函数entry_point以及方法参数集合parameters等对于JVM调用Java方法来说十分重要。

 

link连接器

      先来看看link类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值