0

私はソースコードを持っています:

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行にコンパイルできるソースコード行を知りたいですか?

4

1 に答える 1

2

私はそれが本質的であると信じていownerElement->rendererます。

142312 が最後if(!object)( return 0143424-143426 でダウン)、143414-14341a が関数呼び出しの準備中ownerElement->renderer():

143414 は ownerElement を r0 に取得しています

143416 は renderer() のオフセットを r3 に取得しています

14341a は、基本的に、renderer() (つまり、ownerElement) 内で使用するために this ptr を設定しています。

14341c は実際には renderer() にジャンプします

于 2013-05-24T04:14:12.620 に答える