我有源代码:
RenderPart* Frame::ownerRenderer() const
{
HTMLFrameOwnerElement* ownerElement = m_ownerElement;
if (!ownerElement)
return 0;
RenderObject* object = ownerElement->renderer();
if (!object)
return 0;
// FIXME: If <object> is ever fixed to disassociate itself from frames
// that it has started but canceled, then this can turn into an ASSERT
// since m_ownerElement would be 0 when the load is canceled.
// https://bugs.webkit.org/show_bug.cgi?id=18585
if (!object->isRenderPart())
return 0;
return toRenderPart(object);
}和objdump:
00143408 <_ZNK7WebCore5Frame13ownerRendererEv>:
143408: b510 push {r4, lr}
14340a: f8d0 32f0 ldr.w r3, [r0, #752]
14340e: b14b cbz r3, 143424 <_ZNK7WebCore5Frame13ownerRendererEv+0x1c>
143410: 6a1c ldr r4, [r3, #32]
143412: b13c cbz r4, 143424 <_ZNK7WebCore5Frame13ownerRendererEv+0x1c>
143414: 6820 ldr r0, [r4, #0]
143416: f8d0 30b0 ldr.w r3, [r0, #176]
14341a: 4620 mov r0, r4
14341c: 4798 blx r3
14341e: b108 cbz r0, 143424 <_ZNK7WebCore5Frame13ownerRendererEv+0x1c>
143420: 4620 mov r0, r4
143422: e000 b.n 143426 <_ZNK7WebCore5Frame13ownerRendererEv+0x1e>
143424: 2000 movs r0, #0
143426: bd10 pop {r4, pc} 现在我想知道哪一行源码可以编译到143416行?
发布于 2013-05-24 12:14:13
我相信它本质上就是ownerElement->renderer。
142312是最后一个if(!object) (return 0在143424-143426处下降),然后143414-14341a正在准备函数调用ownerElement->renderer()
143414正在将ownerElement引入r0
143416将渲染器()的偏移量获取到r3中
14341a本质上是设置此ptr用于渲染器()(即ownerElement)中。
14341c实际上跳转到渲染器()
https://stackoverflow.com/questions/16727361
复制相似问题