⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 288700 in webkit


Ignore:
Timestamp:
Jan 27, 2022, 1:37:28 PM (5 years ago)
Author:
Antti Koivisto
Message:

Default to 32 bit refcount for CanMakeCheckedPtr
​https://bugs.webkit.org/show_bug.cgi?id=235723
rdar://86602114

Reviewed by Darin Adler.

Source/WTF:

It is currently uint16_t for no good reason. It is no unreasonable to have an object being referenced
by a large number of other objects.

We just hit the first bug caused by overrunning it (in IFC).

  • wtf/CheckedRef.h:

uint16_t -> uint32_t

Tools:

  • TestWebKitAPI/Tests/WTF/CheckedPtr.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WTF/CheckedRef.cpp:
Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WTF/ChangeLog

    r288689 r288700  
     12022-01-27  Antti Koivisto  <antti@apple.com>
     2
     3        Default to 32 bit refcount for CanMakeCheckedPtr
     4        https://bugs.webkit.org/show_bug.cgi?id=235723
     5        rdar://86602114
     6
     7        Reviewed by Darin Adler.
     8
     9        It is currently uint16_t for no good reason. It is no unreasonable to have an object being referenced
     10        by a large number of other objects.
     11
     12        We just hit the first bug caused by overrunning it (in IFC).
     13
     14        * wtf/CheckedRef.h:
     15
     16        uint16_t -> uint32_t
     17
    1182022-01-27  Ada Chan  <ada.chan@apple.com>
    219
  • trunk/Source/WTF/wtf/CheckedRef.h

    r283158 r288700  
    299299}
    300300
    301 using CanMakeCheckedPtr = CanMakeCheckedPtrBase<SingleThreadIntegralWrapper<uint16_t>, uint16_t>;
    302 using CanMakeThreadSafeCheckedPtr = CanMakeCheckedPtrBase<std::atomic<uint16_t>, uint16_t>;
     301using CanMakeCheckedPtr = CanMakeCheckedPtrBase<SingleThreadIntegralWrapper<uint32_t>, uint32_t>;
     302using CanMakeThreadSafeCheckedPtr = CanMakeCheckedPtrBase<std::atomic<uint32_t>, uint32_t>;
    303303
    304304} // namespace WTF
  • trunk/Tools/ChangeLog

    r288696 r288700  
     12022-01-27  Antti Koivisto  <antti@apple.com>
     2
     3        Default to 32 bit refcount for CanMakeCheckedPtr
     4        https://bugs.webkit.org/show_bug.cgi?id=235723
     5        rdar://86602114
     6
     7        Reviewed by Darin Adler.
     8
     9        * TestWebKitAPI/Tests/WTF/CheckedPtr.cpp:
     10        (TestWebKitAPI::TEST):
     11        * TestWebKitAPI/Tests/WTF/CheckedRef.cpp:
     12
    1132022-01-27  Elliott Williams  <emw@apple.com>
    214
  • trunk/Tools/TestWebKitAPI/Tests/WTF/CheckedPtr.cpp

    r281105 r288700  
    4848    {
    4949        CheckedObject checkedObject;
    50         EXPECT_EQ(checkedObject.ptrCount(), 0);
    51     }
    52 
    53     {
    54         CheckedObject checkedObject;
    55         EXPECT_EQ(checkedObject.ptrCount(), 0);
     50        EXPECT_EQ(checkedObject.ptrCount(), 0u);
     51    }
     52
     53    {
     54        CheckedObject checkedObject;
     55        EXPECT_EQ(checkedObject.ptrCount(), 0u);
    5656        {
    5757            CheckedPtr ptr { &checkedObject };
    … …  
    5959            EXPECT_EQ(ptr.get(), &checkedObject);
    6060            EXPECT_EQ(ptr->someFunction(), -7);
    61             EXPECT_EQ(checkedObject.ptrCount(), 1);
    62         }
    63         EXPECT_EQ(checkedObject.ptrCount(), 0);
    64     }
    65 
    66     {
    67         CheckedObject checkedObject;
    68         EXPECT_EQ(checkedObject.ptrCount(), 0);
     61            EXPECT_EQ(checkedObject.ptrCount(), 1u);
     62        }
     63        EXPECT_EQ(checkedObject.ptrCount(), 0u);
     64    }
     65
     66    {
     67        CheckedObject checkedObject;
     68        EXPECT_EQ(checkedObject.ptrCount(), 0u);
    6969
    7070        CheckedPtr ptr = { &checkedObject };
    … …  
    7272        EXPECT_EQ(ptr.get(), &checkedObject);
    7373        EXPECT_EQ(ptr->someFunction(), -7);
    74         EXPECT_EQ(checkedObject.ptrCount(), 1);
     74        EXPECT_EQ(checkedObject.ptrCount(), 1u);
    7575        ptr = nullptr;
    7676
    7777        EXPECT_FALSE(!!ptr);
    7878        EXPECT_EQ(ptr.get(), nullptr);
    79         EXPECT_EQ(checkedObject.ptrCount(), 0);
    80     }
    81 
    82     {
    83         CheckedObject checkedObject;
    84         EXPECT_EQ(checkedObject.ptrCount(), 0);
     79        EXPECT_EQ(checkedObject.ptrCount(), 0u);
     80    }
     81
     82    {
     83        CheckedObject checkedObject;
     84        EXPECT_EQ(checkedObject.ptrCount(), 0u);
    8585
    8686        CheckedPtr ptr1 { &checkedObject };
    … …  
    8888        EXPECT_EQ(ptr1.get(), &checkedObject);
    8989        EXPECT_EQ(ptr1->someFunction(), -7);
    90         EXPECT_EQ(checkedObject.ptrCount(), 1);
     90        EXPECT_EQ(checkedObject.ptrCount(), 1u);
    9191
    9292        const CheckedPtr ptr2 { &checkedObject };
    … …  
    9494        EXPECT_EQ(ptr2.get(), &checkedObject);
    9595        EXPECT_EQ(ptr2->someFunction(), -7);
    96         EXPECT_EQ(checkedObject.ptrCount(), 2);
     96        EXPECT_EQ(checkedObject.ptrCount(), 2u);
    9797
    9898        CheckedPtr ptr3 = ptr2;
    9999        EXPECT_TRUE(!!ptr3);
    100100        EXPECT_EQ(ptr3.get(), &checkedObject);
    101         EXPECT_EQ(checkedObject.ptrCount(), 3);
     101        EXPECT_EQ(checkedObject.ptrCount(), 3u);
    102102
    103103        ptr1 = nullptr;
    104         EXPECT_EQ(checkedObject.ptrCount(), 2);
     104        EXPECT_EQ(checkedObject.ptrCount(), 2u);
    105105        EXPECT_EQ(ptr1.get(), nullptr);
    106106        EXPECT_EQ(ptr2.get(), &checkedObject);
    … …  
    108108
    109109        ptr1 = WTFMove(ptr3);
    110         EXPECT_EQ(checkedObject.ptrCount(), 2);
     110        EXPECT_EQ(checkedObject.ptrCount(), 2u);
    111111        EXPECT_EQ(ptr1.get(), &checkedObject);
    112112        EXPECT_EQ(ptr2.get(), &checkedObject);
    … …  
    119119    {
    120120        CheckedObject checkedObject;
    121         EXPECT_EQ(checkedObject.ptrCount(), 0);
     121        EXPECT_EQ(checkedObject.ptrCount(), 0u);
    122122        {
    123123            CheckedRef ref { checkedObject };
    124124            EXPECT_EQ(ref.ptr(), &checkedObject);
    125125            EXPECT_EQ(ref->someFunction(), -7);
    126             EXPECT_EQ(checkedObject.ptrCount(), 1);
     126            EXPECT_EQ(checkedObject.ptrCount(), 1u);
    127127            CheckedPtr ptr { ref };
    128128            EXPECT_EQ(ref.ptr(), &checkedObject);
    … …  
    130130            EXPECT_EQ(ptr.get(), &checkedObject);
    131131            EXPECT_EQ(ptr->someFunction(), -7);
    132             EXPECT_EQ(checkedObject.ptrCount(), 2);
    133         }
    134         EXPECT_EQ(checkedObject.ptrCount(), 0);
    135     }
    136 
    137     {
    138         DerivedCheckedObject checkedObject;
    139         EXPECT_EQ(checkedObject.ptrCount(), 0);
     132            EXPECT_EQ(checkedObject.ptrCount(), 2u);
     133        }
     134        EXPECT_EQ(checkedObject.ptrCount(), 0u);
     135    }
     136
     137    {
     138        DerivedCheckedObject checkedObject;
     139        EXPECT_EQ(checkedObject.ptrCount(), 0u);
    140140        {
    141141            CheckedRef<DerivedCheckedObject> ref { checkedObject };
    142142            EXPECT_EQ(ref.ptr(), &checkedObject);
    143143            EXPECT_EQ(ref->someFunction(), -7);
    144             EXPECT_EQ(checkedObject.ptrCount(), 1);
     144            EXPECT_EQ(checkedObject.ptrCount(), 1u);
    145145            CheckedPtr<CheckedObject> ptr { ref };
    146146            EXPECT_EQ(ref.ptr(), &checkedObject);
    … …  
    148148            EXPECT_EQ(ptr.get(), &checkedObject);
    149149            EXPECT_EQ(ptr->someFunction(), -7);
    150             EXPECT_EQ(checkedObject.ptrCount(), 2);
    151         }
    152         EXPECT_EQ(checkedObject.ptrCount(), 0);
    153     }
    154 
    155     {
    156         CheckedObject checkedObject;
    157         EXPECT_EQ(checkedObject.ptrCount(), 0);
     150            EXPECT_EQ(checkedObject.ptrCount(), 2u);
     151        }
     152        EXPECT_EQ(checkedObject.ptrCount(), 0u);
     153    }
     154
     155    {
     156        CheckedObject checkedObject;
     157        EXPECT_EQ(checkedObject.ptrCount(), 0u);
    158158        {
    159159            CheckedRef ref { checkedObject };
    160160            EXPECT_EQ(ref.ptr(), &checkedObject);
    161161            EXPECT_EQ(ref->someFunction(), -7);
    162             EXPECT_EQ(checkedObject.ptrCount(), 1);
     162            EXPECT_EQ(checkedObject.ptrCount(), 1u);
    163163            CheckedPtr ptr { WTFMove(ref) };
    164164            EXPECT_EQ(ref.ptr(), nullptr);
    165165            EXPECT_EQ(ptr.get(), &checkedObject);
    166166            EXPECT_EQ(ptr->someFunction(), -7);
    167             EXPECT_EQ(checkedObject.ptrCount(), 1);
    168         }
    169         EXPECT_EQ(checkedObject.ptrCount(), 0);
    170     }
    171 
    172     {
    173         DerivedCheckedObject checkedObject;
    174         EXPECT_EQ(checkedObject.ptrCount(), 0);
     167            EXPECT_EQ(checkedObject.ptrCount(), 1u);
     168        }
     169        EXPECT_EQ(checkedObject.ptrCount(), 0u);
     170    }
     171
     172    {
     173        DerivedCheckedObject checkedObject;
     174        EXPECT_EQ(checkedObject.ptrCount(), 0u);
    175175        {
    176176            CheckedRef<DerivedCheckedObject> ref { checkedObject };
    177177            EXPECT_EQ(ref.ptr(), &checkedObject);
    178178            EXPECT_EQ(ref->someFunction(), -7);
    179             EXPECT_EQ(checkedObject.ptrCount(), 1);
     179            EXPECT_EQ(checkedObject.ptrCount(), 1u);
    180180            CheckedPtr<CheckedObject> ptr { WTFMove(ref) };
    181181            EXPECT_EQ(ref.ptr(), nullptr);
    182182            EXPECT_EQ(ptr.get(), &checkedObject);
    183183            EXPECT_EQ(ptr->someFunction(), -7);
    184             EXPECT_EQ(checkedObject.ptrCount(), 1);
    185         }
    186         EXPECT_EQ(checkedObject.ptrCount(), 0);
     184            EXPECT_EQ(checkedObject.ptrCount(), 1u);
     185        }
     186        EXPECT_EQ(checkedObject.ptrCount(), 0u);
    187187    }
    188188}
    … …  
    192192    {
    193193        DerivedCheckedObject checkedObject;
    194         EXPECT_EQ(checkedObject.ptrCount(), 0);
    195     }
    196 
    197     {
    198         DerivedCheckedObject checkedObject;
    199         EXPECT_EQ(checkedObject.ptrCount(), 0);
     194        EXPECT_EQ(checkedObject.ptrCount(), 0u);
     195    }
     196
     197    {
     198        DerivedCheckedObject checkedObject;
     199        EXPECT_EQ(checkedObject.ptrCount(), 0u);
    200200        {
    201201            CheckedPtr ptr = { &checkedObject };
    … …  
    203203            EXPECT_EQ(ptr.get(), &checkedObject);
    204204            EXPECT_EQ(ptr->someFunction(), -7);
    205             EXPECT_EQ(checkedObject.ptrCount(), 1);
    206         }
    207         EXPECT_EQ(checkedObject.ptrCount(), 0);
    208     }
    209 
    210     {
    211         CheckedObject checkedObject;
    212         EXPECT_EQ(checkedObject.ptrCount(), 0);
     205            EXPECT_EQ(checkedObject.ptrCount(), 1u);
     206        }
     207        EXPECT_EQ(checkedObject.ptrCount(), 0u);
     208    }
     209
     210    {
     211        CheckedObject checkedObject;
     212        EXPECT_EQ(checkedObject.ptrCount(), 0u);
    213213
    214214        CheckedPtr<CheckedObject> ptr { &checkedObject };
    … …  
    216216        EXPECT_EQ(ptr.get(), &checkedObject);
    217217        EXPECT_EQ(ptr->someFunction(), -7);
    218         EXPECT_EQ(checkedObject.ptrCount(), 1);
     218        EXPECT_EQ(checkedObject.ptrCount(), 1u);
    219219        ptr = nullptr;
    220220
    221221        EXPECT_FALSE(!!ptr);
    222222        EXPECT_EQ(ptr.get(), nullptr);
    223         EXPECT_EQ(checkedObject.ptrCount(), 0);
    224     }
    225 
    226     {
    227         DerivedCheckedObject checkedObject;
    228         EXPECT_EQ(checkedObject.ptrCount(), 0);
     223        EXPECT_EQ(checkedObject.ptrCount(), 0u);
     224    }
     225
     226    {
     227        DerivedCheckedObject checkedObject;
     228        EXPECT_EQ(checkedObject.ptrCount(), 0u);
    229229
    230230        CheckedPtr<DerivedCheckedObject> ptr1 { &checkedObject };
    … …  
    232232        EXPECT_EQ(ptr1.get(), &checkedObject);
    233233        EXPECT_EQ(ptr1->someFunction(), -7);
    234         EXPECT_EQ(checkedObject.ptrCount(), 1);
     234        EXPECT_EQ(checkedObject.ptrCount(), 1u);
    235235
    236236        const CheckedPtr<CheckedObject> ptr2 = ptr1;
    … …  
    238238        EXPECT_EQ(ptr2.get(), &checkedObject);
    239239        EXPECT_EQ(ptr2->someFunction(), -7);
    240         EXPECT_EQ(checkedObject.ptrCount(), 2);
     240        EXPECT_EQ(checkedObject.ptrCount(), 2u);
    241241
    242242        CheckedPtr<CheckedObject> ptr3 = ptr1;
    243243        EXPECT_TRUE(!!ptr3);
    244244        EXPECT_EQ(ptr3.get(), &checkedObject);
    245         EXPECT_EQ(checkedObject.ptrCount(), 3);
     245        EXPECT_EQ(checkedObject.ptrCount(), 3u);
    246246
    247247        ptr1 = nullptr;
    248         EXPECT_EQ(checkedObject.ptrCount(), 2);
     248        EXPECT_EQ(checkedObject.ptrCount(), 2u);
    249249        EXPECT_EQ(ptr1.get(), nullptr);
    250250        EXPECT_EQ(ptr2.get(), &checkedObject);
    … …  
    252252
    253253        CheckedPtr<CheckedObject> ptr4 = WTFMove(ptr3);
    254         EXPECT_EQ(checkedObject.ptrCount(), 2);
     254        EXPECT_EQ(checkedObject.ptrCount(), 2u);
    255255        EXPECT_EQ(ptr1.get(), nullptr);
    256256        EXPECT_EQ(ptr2.get(), &checkedObject);
    … …  
    264264    {
    265265        CheckedObject checkedObject;
    266         EXPECT_EQ(checkedObject.ptrCount(), 0);
     266        EXPECT_EQ(checkedObject.ptrCount(), 0u);
    267267
    268268        CheckedPtr ptr = { &checkedObject };
    269269        EXPECT_EQ(ptr.get(), &checkedObject);
    270         EXPECT_EQ(checkedObject.ptrCount(), 1);
     270        EXPECT_EQ(checkedObject.ptrCount(), 1u);
    271271
    272272        HashSet<CheckedPtr<CheckedObject>> set;
    273273        set.add(ptr);
    274         EXPECT_EQ(checkedObject.ptrCount(), 2);
     274        EXPECT_EQ(checkedObject.ptrCount(), 2u);
    275275
    276276        ptr = nullptr;
    277         EXPECT_EQ(checkedObject.ptrCount(), 1);
     277        EXPECT_EQ(checkedObject.ptrCount(), 1u);
    278278    }
    279279
    … …  
    281281        CheckedObject object1;
    282282        DerivedCheckedObject object2;
    283         EXPECT_EQ(object1.ptrCount(), 0);
    284         EXPECT_EQ(object2.ptrCount(), 0);
     283        EXPECT_EQ(object1.ptrCount(), 0u);
     284        EXPECT_EQ(object2.ptrCount(), 0u);
    285285
    286286        HashSet<CheckedPtr<CheckedObject>> set;
    287287        set.add(&object1);
    288         EXPECT_EQ(object1.ptrCount(), 1);
    289         EXPECT_EQ(object2.ptrCount(), 0);
     288        EXPECT_EQ(object1.ptrCount(), 1u);
     289        EXPECT_EQ(object2.ptrCount(), 0u);
    290290
    291291        set.add(&object1);
    292         EXPECT_EQ(object1.ptrCount(), 1);
    293         EXPECT_EQ(object2.ptrCount(), 0);
     292        EXPECT_EQ(object1.ptrCount(), 1u);
     293        EXPECT_EQ(object2.ptrCount(), 0u);
    294294
    295295        CheckedPtr<DerivedCheckedObject> ptr { &object2 };
    296296        set.add(ptr);
    297         EXPECT_EQ(object1.ptrCount(), 1);
    298         EXPECT_EQ(object2.ptrCount(), 2);
     297        EXPECT_EQ(object1.ptrCount(), 1u);
     298        EXPECT_EQ(object2.ptrCount(), 2u);
    299299        ptr = nullptr;
    300300
    301         EXPECT_EQ(object1.ptrCount(), 1);
    302         EXPECT_EQ(object2.ptrCount(), 1);
     301        EXPECT_EQ(object1.ptrCount(), 1u);
     302        EXPECT_EQ(object2.ptrCount(), 1u);
    303303
    304304        set.remove(&object1);
    305         EXPECT_EQ(object1.ptrCount(), 0);
    306         EXPECT_EQ(object2.ptrCount(), 1);
     305        EXPECT_EQ(object1.ptrCount(), 0u);
     306        EXPECT_EQ(object2.ptrCount(), 1u);
    307307    }
    308308
    … …  
    310310        Vector<std::unique_ptr<CheckedObject>> objects;
    311311        objects.append(makeUniqueWithoutFastMallocCheck<CheckedObject>());
    312         EXPECT_EQ(objects[0]->ptrCount(), 0);
     312        EXPECT_EQ(objects[0]->ptrCount(), 0u);
    313313
    314314        HashSet<CheckedPtr<CheckedObject>> set;
    … …  
    325325
    326326        for (auto& object : objects)
    327             EXPECT_EQ(object->ptrCount(), 1);
     327            EXPECT_EQ(object->ptrCount(), 1u);
    328328
    329329        auto setVector = WTF::copyToVector(set);
    330330
    331331        for (auto& object : objects)
    332             EXPECT_EQ(object->ptrCount(), 2);
    333     }
     332            EXPECT_EQ(object->ptrCount(), 2u);
     333    }
     334}
     335
     336TEST(WTF_CheckedPtr, ReferenceCountLimit)
     337{
     338    CheckedObject object;
     339    constexpr unsigned count = 256 * 1024;
     340    Vector<CheckedPtr<CheckedObject>> ptrs;
     341    ptrs.fill(&object, count);
     342    EXPECT_EQ(object.ptrCount(), count);
    334343}
    335344
  • trunk/Tools/TestWebKitAPI/Tests/WTF/CheckedRef.cpp

    r280559 r288700  
    6161    {
    6262        CheckedObject checkedObject;
    63         EXPECT_EQ(checkedObject.ptrCount(), 0);
    64     }
    65 
    66     {
    67         CheckedObject checkedObject;
    68         EXPECT_EQ(checkedObject.ptrCount(), 0);
     63        EXPECT_EQ(checkedObject.ptrCount(), 0u);
     64    }
     65
     66    {
     67        CheckedObject checkedObject;
     68        EXPECT_EQ(checkedObject.ptrCount(), 0u);
    6969        {
    7070            CheckedRef ref = checkedObject;
    … …  
    7373            EXPECT_EQ(ref->someFunction(), -7);
    7474            EXPECT_EQ(static_cast<CheckedObject&>(ref).someFunction(), -7);
    75             EXPECT_EQ(checkedObject.ptrCount(), 1);
    76         }
    77         EXPECT_EQ(checkedObject.ptrCount(), 0);
     75            EXPECT_EQ(checkedObject.ptrCount(), 1u);
     76        }
     77        EXPECT_EQ(checkedObject.ptrCount(), 0u);
    7878    }
    7979
    … …  
    8181        CheckedObject checkedObject;
    8282        CheckedObject anotherObject;
    83         EXPECT_EQ(checkedObject.ptrCount(), 0);
     83        EXPECT_EQ(checkedObject.ptrCount(), 0u);
    8484
    8585        CheckedRef ref = checkedObject;
    … …  
    8787        EXPECT_EQ(ref->someFunction(), -7);
    8888        EXPECT_EQ(static_cast<CheckedObject&>(ref).someFunction(), -7);
    89         EXPECT_EQ(checkedObject.ptrCount(), 1);
     89        EXPECT_EQ(checkedObject.ptrCount(), 1u);
    9090
    9191        ref = anotherObject;
    9292        EXPECT_EQ(ref.ptr(), &anotherObject);
    93         EXPECT_EQ(checkedObject.ptrCount(), 0);
    94         EXPECT_EQ(anotherObject.ptrCount(), 1);
     93        EXPECT_EQ(checkedObject.ptrCount(), 0u);
     94        EXPECT_EQ(anotherObject.ptrCount(), 1u);
    9595    }
    9696
    … …  
    9898        CheckedObject checkedObject;
    9999        CheckedObject anotherObject;
    100         EXPECT_EQ(checkedObject.ptrCount(), 0);
     100        EXPECT_EQ(checkedObject.ptrCount(), 0u);
    101101
    102102        CheckedRef ref1 = checkedObject;
    … …  
    104104        EXPECT_EQ(ref1->someFunction(), -7);
    105105        EXPECT_EQ(static_cast<CheckedObject&>(ref1).someFunction(), -7);
    106         EXPECT_EQ(checkedObject.ptrCount(), 1);
     106        EXPECT_EQ(checkedObject.ptrCount(), 1u);
    107107
    108108        const CheckedRef ref2 = checkedObject;
    … …  
    110110        EXPECT_EQ(ref2.get().someFunction(), -7);
    111111        EXPECT_EQ(static_cast<const CheckedObject&>(ref2).someFunction(), -7);
    112         EXPECT_EQ(checkedObject.ptrCount(), 2);
     112        EXPECT_EQ(checkedObject.ptrCount(), 2u);
    113113
    114114        CheckedRef ref3 = ref2;
    115115        EXPECT_EQ(ref3.ptr(), &checkedObject);
    116         EXPECT_EQ(checkedObject.ptrCount(), 3);
     116        EXPECT_EQ(checkedObject.ptrCount(), 3u);
    117117
    118118        ref1 = anotherObject;
    119         EXPECT_EQ(checkedObject.ptrCount(), 2);
    120         EXPECT_EQ(anotherObject.ptrCount(), 1);
     119        EXPECT_EQ(checkedObject.ptrCount(), 2u);
     120        EXPECT_EQ(anotherObject.ptrCount(), 1u);
    121121        EXPECT_EQ(ref1.ptr(), &anotherObject);
    122122        EXPECT_EQ(ref2.ptr(), &checkedObject);
    … …  
    124124
    125125        ref1 = WTFMove(ref3);
    126         EXPECT_EQ(checkedObject.ptrCount(), 2);
    127         EXPECT_EQ(anotherObject.ptrCount(), 0);
     126        EXPECT_EQ(checkedObject.ptrCount(), 2u);
     127        EXPECT_EQ(anotherObject.ptrCount(), 0u);
    128128        EXPECT_EQ(ref1.ptr(), &checkedObject);
    129129        EXPECT_EQ(ref2.ptr(), &checkedObject);
    … …  
    135135    {
    136136        DerivedCheckedObject checkedObject;
    137         EXPECT_EQ(checkedObject.ptrCount(), 0);
     137        EXPECT_EQ(checkedObject.ptrCount(), 0u);
    138138        {
    139139            CheckedRef ref = checkedObject;
    … …  
    142142            EXPECT_EQ(static_cast<DerivedCheckedObject&>(ref).someFunction(), -11);
    143143            EXPECT_EQ(ref->someFunction(), -11);
    144             EXPECT_EQ(checkedObject.ptrCount(), 1);
    145         }
    146         EXPECT_EQ(checkedObject.ptrCount(), 0);
     144            EXPECT_EQ(checkedObject.ptrCount(), 1u);
     145        }
     146        EXPECT_EQ(checkedObject.ptrCount(), 0u);
    147147    }
    148148
    … …  
    150150        DerivedCheckedObject checkedObject;
    151151        DerivedCheckedObject anotherObject;
    152         EXPECT_EQ(checkedObject.ptrCount(), 0);
    153         EXPECT_EQ(anotherObject.ptrCount(), 0);
     152        EXPECT_EQ(checkedObject.ptrCount(), 0u);
     153        EXPECT_EQ(anotherObject.ptrCount(), 0u);
    154154
    155155        CheckedRef<CheckedObject> ref = checkedObject;
    … …  
    157157        EXPECT_EQ(ref->someFunction(), -11);
    158158        EXPECT_EQ(static_cast<CheckedObject&>(ref).someFunction(), -11);
    159         EXPECT_EQ(checkedObject.ptrCount(), 1);
    160         EXPECT_EQ(anotherObject.ptrCount(), 0);
     159        EXPECT_EQ(checkedObject.ptrCount(), 1u);
     160        EXPECT_EQ(anotherObject.ptrCount(), 0u);
    161161
    162162        ref = anotherObject;
    163163        EXPECT_EQ(ref.ptr(), &anotherObject);
    164         EXPECT_EQ(checkedObject.ptrCount(), 0);
    165         EXPECT_EQ(anotherObject.ptrCount(), 1);
     164        EXPECT_EQ(checkedObject.ptrCount(), 0u);
     165        EXPECT_EQ(anotherObject.ptrCount(), 1u);
    166166    }
    167167
    … …  
    169169        DerivedCheckedObject checkedObject { 10 };
    170170        DerivedCheckedObject anotherObject { 20 };
    171         EXPECT_EQ(checkedObject.ptrCount(), 0);
    172         EXPECT_EQ(anotherObject.ptrCount(), 0);
     171        EXPECT_EQ(checkedObject.ptrCount(), 0u);
     172        EXPECT_EQ(anotherObject.ptrCount(), 0u);
    173173
    174174        CheckedRef<DerivedCheckedObject> ref1 = checkedObject;
    … …  
    176176        EXPECT_EQ(ref1->someFunction(), 10);
    177177        EXPECT_EQ(static_cast<CheckedObject&>(ref1).someFunction(), 10);
    178         EXPECT_EQ(checkedObject.ptrCount(), 1);
    179         EXPECT_EQ(anotherObject.ptrCount(), 0);
     178        EXPECT_EQ(checkedObject.ptrCount(), 1u);
     179        EXPECT_EQ(anotherObject.ptrCount(), 0u);
    180180
    181181        const CheckedRef<CheckedObject> ref2 = ref1;
    … …  
    183183        EXPECT_EQ(ref2->someFunction(), 10);
    184184        EXPECT_EQ(static_cast<const CheckedObject&>(ref2).someFunction(), 10);
    185         EXPECT_EQ(checkedObject.ptrCount(), 2);
    186         EXPECT_EQ(anotherObject.ptrCount(), 0);
     185        EXPECT_EQ(checkedObject.ptrCount(), 2u);
     186        EXPECT_EQ(anotherObject.ptrCount(), 0u);
    187187
    188188        CheckedRef<CheckedObject> ref3 = ref1;
    189189        EXPECT_EQ(ref3.ptr(), &checkedObject);
    190190        EXPECT_EQ(static_cast<CheckedObject&>(ref3).someFunction(), 10);
    191         EXPECT_EQ(checkedObject.ptrCount(), 3);
    192         EXPECT_EQ(anotherObject.ptrCount(), 0);
     191        EXPECT_EQ(checkedObject.ptrCount(), 3u);
     192        EXPECT_EQ(anotherObject.ptrCount(), 0u);
    193193
    194194        ref1 = anotherObject;
    195         EXPECT_EQ(checkedObject.ptrCount(), 2);
    196         EXPECT_EQ(anotherObject.ptrCount(), 1);
     195        EXPECT_EQ(checkedObject.ptrCount(), 2u);
     196        EXPECT_EQ(anotherObject.ptrCount(), 1u);
    197197        EXPECT_EQ(ref1.ptr(), &anotherObject);
    198198        EXPECT_EQ(ref1->someFunction(), 20);
    … …  
    202202
    203203        CheckedRef<CheckedObject> ref4 = WTFMove(ref1);
    204         EXPECT_EQ(checkedObject.ptrCount(), 2);
    205         EXPECT_EQ(anotherObject.ptrCount(), 1);
     204        EXPECT_EQ(checkedObject.ptrCount(), 2u);
     205        EXPECT_EQ(anotherObject.ptrCount(), 1u);
    206206        EXPECT_EQ(ref2.ptr(), &checkedObject);
    207207        EXPECT_EQ(ref3.ptr(), &checkedObject);
    … …  
    211211
    212212        ref1 = checkedObject;
    213         EXPECT_EQ(checkedObject.ptrCount(), 3);
    214         EXPECT_EQ(anotherObject.ptrCount(), 1);
     213        EXPECT_EQ(checkedObject.ptrCount(), 3u);
     214        EXPECT_EQ(anotherObject.ptrCount(), 1u);
    215215        EXPECT_EQ(ref1.ptr(), &checkedObject);
    216216        EXPECT_EQ(ref1->someFunction(), 10);
    … …  
    224224    {
    225225        CheckedObject checkedObject;
    226         EXPECT_EQ(checkedObject.ptrCount(), 0);
     226        EXPECT_EQ(checkedObject.ptrCount(), 0u);
    227227
    228228        HashSet<CheckedRef<CheckedObject>> set;
    … …  
    230230            CheckedRef ref = checkedObject;
    231231            EXPECT_EQ(ref.ptr(), &checkedObject);
    232             EXPECT_EQ(checkedObject.ptrCount(), 1);
     232            EXPECT_EQ(checkedObject.ptrCount(), 1u);
    233233
    234234            set.add(ref);
    235             EXPECT_EQ(checkedObject.ptrCount(), 2);
    236         }
    237         EXPECT_EQ(checkedObject.ptrCount(), 1);
     235            EXPECT_EQ(checkedObject.ptrCount(), 2u);
     236        }
     237        EXPECT_EQ(checkedObject.ptrCount(), 1u);
    238238    }
    239239
    … …  
    241241        CheckedObject object1;
    242242        DerivedCheckedObject object2;
    243         EXPECT_EQ(object1.ptrCount(), 0);
    244         EXPECT_EQ(object2.ptrCount(), 0);
     243        EXPECT_EQ(object1.ptrCount(), 0u);
     244        EXPECT_EQ(object2.ptrCount(), 0u);
    245245
    246246        HashSet<CheckedRef<CheckedObject>> set;
    247247        set.add(object1);
    248         EXPECT_EQ(object1.ptrCount(), 1);
    249         EXPECT_EQ(object2.ptrCount(), 0);
     248        EXPECT_EQ(object1.ptrCount(), 1u);
     249        EXPECT_EQ(object2.ptrCount(), 0u);
    250250        EXPECT_TRUE(set.contains(object1));
    251251        EXPECT_FALSE(set.contains(object2));
    252252
    253253        set.add(object1);
    254         EXPECT_EQ(object1.ptrCount(), 1);
    255         EXPECT_EQ(object2.ptrCount(), 0);
     254        EXPECT_EQ(object1.ptrCount(), 1u);
     255        EXPECT_EQ(object2.ptrCount(), 0u);
    256256        EXPECT_TRUE(set.contains(object1));
    257257        EXPECT_FALSE(set.contains(object2));
    … …  
    260260            CheckedRef<DerivedCheckedObject> ref { object2 };
    261261            set.add(ref);
    262             EXPECT_EQ(object1.ptrCount(), 1);
    263             EXPECT_EQ(object2.ptrCount(), 2);
     262            EXPECT_EQ(object1.ptrCount(), 1u);
     263            EXPECT_EQ(object2.ptrCount(), 2u);
    264264            EXPECT_TRUE(set.contains(object1));
    265265            EXPECT_TRUE(set.contains(object2));
    266266        }
    267267
    268         EXPECT_EQ(object1.ptrCount(), 1);
    269         EXPECT_EQ(object2.ptrCount(), 1);
     268        EXPECT_EQ(object1.ptrCount(), 1u);
     269        EXPECT_EQ(object2.ptrCount(), 1u);
    270270        EXPECT_TRUE(set.contains(object1));
    271271        EXPECT_TRUE(set.contains(object2));
    272272
    273273        set.remove(object1);
    274         EXPECT_EQ(object1.ptrCount(), 0);
    275         EXPECT_EQ(object2.ptrCount(), 1);
     274        EXPECT_EQ(object1.ptrCount(), 0u);
     275        EXPECT_EQ(object2.ptrCount(), 1u);
    276276        EXPECT_FALSE(set.contains(object1));
    277277        EXPECT_TRUE(set.contains(object2));
    … …  
    281281        Vector<std::unique_ptr<CheckedObject>> objects;
    282282        objects.append(makeUniqueWithoutFastMallocCheck<CheckedObject>(0));
    283         EXPECT_EQ(objects[0]->ptrCount(), 0);
     283        EXPECT_EQ(objects[0]->ptrCount(), 0u);
    284284
    285285        HashSet<CheckedRef<CheckedObject>> set;
    … …  
    296296
    297297        for (auto& object : objects) {
    298             EXPECT_EQ(object->ptrCount(), 1);
     298            EXPECT_EQ(object->ptrCount(), 1u);
    299299            EXPECT_TRUE(set.contains(*object));
    300300        }
    … …  
    310310
    311311        for (auto& object : objects)
    312             EXPECT_EQ(object->ptrCount(), 2);
     312            EXPECT_EQ(object->ptrCount(), 2u);
    313313    }
    314314}
Note: See TracChangeset for help on using the changeset viewer.