のねのBlog

パソコンの問題や、ソフトウェアの開発で起きた問題など書いていきます。よろしくお願いします^^。

WTF::AtomicString::remove

Dump of assembler code for function WTF::AtomicString::remove(WTF::StringImpl*):
=> 0x72598f0e <+0>:     push    {r4, r5, lr}
   0x72598f10 <+2>:     mov     r1, r0
   0x72598f12 <+4>:     ldrb    r3, [r0, #11]
   0x72598f14 <+6>:     sub     sp, #28
   0x72598f16 <+8>:     and.w   r0, r3, #2
   0x72598f1a <+12>:    mov     r4, sp
   0x72598f1c <+14>:    uxtb    r2, r0
   0x72598f1e <+16>:    mov     r0, sp
   0x72598f20 <+18>:    cbz     r2, 0x72598f28 <WTF::AtomicString::remove(WTF::StringImpl*)+26>
   0x72598f22 <+20>:    bl      0x725989e2 <WTF::findString<unsigned char>(WTF::StringImpl const*)>
   0x72598f26 <+24>:    b.n     0x72598f2c <WTF::AtomicString::remove(WTF::StringImpl*)+30>
   0x72598f28 <+26>:    bl      0x72598a7c <WTF::findString<unsigned short>(WTF::StringImpl const*)>
   0x72598f2c <+30>:    bl      0x725988c4 <WTF::stringTable()>
   0x72598f30 <+34>:    add     r5, sp, #16
   0x72598f32 <+36>:    mov     r1, r0
   0x72598f34 <+38>:    mov     r0, r5
   0x72598f36 <+40>:    bl      0x72598c24 <WTF::HashSet<WTF::StringImpl*,
                                                         WTF::StringHash,
                                                         WTF::HashTraits<WTF::StringImpl*
                                                        > >::end() const>
   0x72598f3a <+44>:    ldr     r1, [sp, #16]
   0x72598f3c <+46>:    ldr     r3, [sp, #0]
   0x72598f3e <+48>:    cmp     r3, r1
   0x72598f40 <+50>:    bne.n   0x72598f46 <WTF::AtomicString::remove(WTF::StringImpl*)+56>
   0x72598f42 <+52>:    blx     0x723ef478 <============================================これはどこへ?
   0x72598f46 <+56>:    bl      0x725988c4 <WTF::stringTable()>
   0x72598f4a <+60>:    add.w   r12, sp, #8
   0x72598f4e <+64>:    mov     r3, r0
   0x72598f50 <+66>:    ldmia.w r4, {r0, r1}
   0x72598f54 <+70>:    stmia.w r5, {r0, r1}
   0x72598f58 <+74>:    stmia.w r12, {r0, r1}
   0x72598f5c <+78>:    ldr     r0, [r3, #4]
   0x72598f5e <+80>:    ldr     r1, [r3, #0]
   0x72598f60 <+82>:    ldr     r2, [sp, #16]
   0x72598f62 <+84>:    add.w   r0, r1, r0, lsl #2
   0x72598f66 <+88>:    cmp     r2, r0
   0x72598f68 <+90>:    beq.n   0x72598f98 <WTF::AtomicString::remove(WTF::StringImpl*)+138>
   0x72598f6a <+92>:    mov.w   r1, #4294967295 ; 0xffffffff
   0x72598f6e <+96>:    str     r1, [r2, #0]
   0x72598f70 <+98>:    ldr     r2, [r3, #16]
   0x72598f72 <+100>:   adds    r0, r2, #1
   0x72598f74 <+102>:   ldr     r2, [r3, #12]
   0x72598f76 <+104>:   str     r0, [r3, #16]
   0x72598f78 <+106>:   movs    r0, #6
   0x72598f7a <+108>:   adds    r2, r2, r1
   0x72598f7c <+110>:   ldr     r1, [r3, #4]
   0x72598f7e <+112>:   str     r2, [r3, #12]
   0x72598f80 <+114>:   muls    r2, r0
   0x72598f82 <+116>:   cmp     r2, r1
   0x72598f84 <+118>:   bge.n   0x72598f98 <WTF::AtomicString::remove(WTF::StringImpl*)+138>
   0x72598f86 <+120>:   cmp     r1, #8
   0x72598f88 <+122>:   ble.n   0x72598f98 <WTF::AtomicString::remove(WTF::StringImpl*)+138>
   0x72598f8a <+124>:   mov     r0, r3
   0x72598f8c <+126>:   asrs    r1, r1, #1
   0x72598f8e <+128>:   add     sp, #28
   0x72598f90 <+130>:   ldmia.w sp!, {r4, r5, lr}
   0x72598f94 <+134>:   b.w     0x72598e2c <WTF::HashTable<WTF::StringImpl*,
                                                           WTF::StringImpl*,
                                                           WTF::IdentityExtractor,
                                                           WTF::StringHash,
                                                           WTF::HashTraits<WTF::StringImpl*>,
                                                           WTF::HashTraits<WTF::StringImpl*> 
                                                           >::rehash(int)>
   0x72598f98 <+138>:   add     sp, #28
   0x72598f9a <+140>:   pop     {r4, r5, pc}
End of assembler dump.
   B.N     label   :ラベルが 16 ビット命令の範囲外の場合はエラーが発生する

   0x723ef478:  stmia   r6!, {r0, r4}
   0x723ef47a:  b.n     0x723ef99c <==
   0x723ef47c:  ldmia   r2, {r0, r2, r3, r5}
   0x723ef47e:  b.n     0x723ef99a
   0x723ef480:  ldr??.w lr, [r4, #1468] ; 0x5bc
   0x723ef484:  stmia   r6!, {r0, r4}
   0x723ef486:  b.n     0x723ef9a8
   0x723ef488:  ldmia   r2, {r0, r2, r3, r5}
   0x723ef48a:  b.n     0x723ef9a6
   0x723ef48c:  vld2.16 {d30[2],d32[2]}, [r12 :32], r12
   0x723ef99c:  blx     0x71e7c518 <==
   0x723ef9a0:  stmia   r6!, {r0, r4}
   0x723ef9a2:  b.n     0x723efec4
   0x723ef9a4:  ldmia   r2, {r0, r2, r3, r5}
   0x723ef9a6:  b.n     0x723efec2
   0x723ef9a8:  blx     0x71e74524