want to port JIT to MIPS - can anybody explain JIT::linkCall?

71 篇文章 0 订阅
42 篇文章 0 订阅

https://lists.webkit.org/pipermail/webkit-dev/2009-March/006930.html

want to port JIT to MIPS - can anybody explain JIT::linkCall?


The hot path for a call performs a check for a specific callee, with a  
fast mechanism for making JS->JS calls.  The code is generated such  
that it will initially always bail out to the slow path, and the  
second time the call is executed it will dynamically linked itself to  
that callee.  There are currently two slow paths generated for each  
callee, the initial one that calls out to relink the code, and a  
second form that does not.  hotPathBegin & hotPathOther are used  
(along with an offset) to find three things to repatch in the hot path:

(1) The JSFunction* value that is checked, to identify the callee
(2) The jump out to the slow path, so this can be relinked to the  
second form (which will not attempt to relink – this is stored in  
coldPathOther).
(3) The call instruction to be linked the callee's code.

The value callReturnLocation points to the call in the cold path to  
the relink mechanisms.  This is used by the dynamic linking mechanisms  
to lookup the CallLinkInfo record describing the call to be linked,  
and is also used in exception handling.

G.

On Mar 6, 2009, at 5:40 PM, x yz wrote:

>
> e.g, emitted asm code before/after patch? what does its four  
> pointers do?
> MacroAssembler::CodeLocationNearCall callReturnLocation;
> MacroAssembler::CodeLocationDataLabelPtr hotPathBegin;
> MacroAssembler::CodeLocationNearCall hotPathOther;
> MacroAssembler::CodeLocationLabel coldPathOther;
> CodeBlock* callee;
>
> anywhere got doc of the JIT implementations?
> thanks a lot!
> joe

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值