Changeset 288700 in webkit
- Timestamp:
- Jan 27, 2022, 1:37:28 PM (5 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
-
Source/WTF/ChangeLog (modified) (1 diff)
-
Source/WTF/wtf/CheckedRef.h (modified) (1 diff)
-
Tools/ChangeLog (modified) (1 diff)
-
Tools/TestWebKitAPI/Tests/WTF/CheckedPtr.cpp (modified) (19 diffs)
-
Tools/TestWebKitAPI/Tests/WTF/CheckedRef.cpp (modified) (24 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WTF/ChangeLog
r288689 r288700 1 2022-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 1 18 2022-01-27 Ada Chan <ada.chan@apple.com> 2 19 -
trunk/Source/WTF/wtf/CheckedRef.h
r283158 r288700 299 299 } 300 300 301 using CanMakeCheckedPtr = CanMakeCheckedPtrBase<SingleThreadIntegralWrapper<uint 16_t>, uint16_t>;302 using CanMakeThreadSafeCheckedPtr = CanMakeCheckedPtrBase<std::atomic<uint 16_t>, uint16_t>;301 using CanMakeCheckedPtr = CanMakeCheckedPtrBase<SingleThreadIntegralWrapper<uint32_t>, uint32_t>; 302 using CanMakeThreadSafeCheckedPtr = CanMakeCheckedPtrBase<std::atomic<uint32_t>, uint32_t>; 303 303 304 304 } // namespace WTF -
trunk/Tools/ChangeLog
r288696 r288700 1 2022-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 1 13 2022-01-27 Elliott Williams <emw@apple.com> 2 14 -
trunk/Tools/TestWebKitAPI/Tests/WTF/CheckedPtr.cpp
r281105 r288700 48 48 { 49 49 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); 56 56 { 57 57 CheckedPtr ptr { &checkedObject }; … … 59 59 EXPECT_EQ(ptr.get(), &checkedObject); 60 60 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); 69 69 70 70 CheckedPtr ptr = { &checkedObject }; … … 72 72 EXPECT_EQ(ptr.get(), &checkedObject); 73 73 EXPECT_EQ(ptr->someFunction(), -7); 74 EXPECT_EQ(checkedObject.ptrCount(), 1 );74 EXPECT_EQ(checkedObject.ptrCount(), 1u); 75 75 ptr = nullptr; 76 76 77 77 EXPECT_FALSE(!!ptr); 78 78 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); 85 85 86 86 CheckedPtr ptr1 { &checkedObject }; … … 88 88 EXPECT_EQ(ptr1.get(), &checkedObject); 89 89 EXPECT_EQ(ptr1->someFunction(), -7); 90 EXPECT_EQ(checkedObject.ptrCount(), 1 );90 EXPECT_EQ(checkedObject.ptrCount(), 1u); 91 91 92 92 const CheckedPtr ptr2 { &checkedObject }; … … 94 94 EXPECT_EQ(ptr2.get(), &checkedObject); 95 95 EXPECT_EQ(ptr2->someFunction(), -7); 96 EXPECT_EQ(checkedObject.ptrCount(), 2 );96 EXPECT_EQ(checkedObject.ptrCount(), 2u); 97 97 98 98 CheckedPtr ptr3 = ptr2; 99 99 EXPECT_TRUE(!!ptr3); 100 100 EXPECT_EQ(ptr3.get(), &checkedObject); 101 EXPECT_EQ(checkedObject.ptrCount(), 3 );101 EXPECT_EQ(checkedObject.ptrCount(), 3u); 102 102 103 103 ptr1 = nullptr; 104 EXPECT_EQ(checkedObject.ptrCount(), 2 );104 EXPECT_EQ(checkedObject.ptrCount(), 2u); 105 105 EXPECT_EQ(ptr1.get(), nullptr); 106 106 EXPECT_EQ(ptr2.get(), &checkedObject); … … 108 108 109 109 ptr1 = WTFMove(ptr3); 110 EXPECT_EQ(checkedObject.ptrCount(), 2 );110 EXPECT_EQ(checkedObject.ptrCount(), 2u); 111 111 EXPECT_EQ(ptr1.get(), &checkedObject); 112 112 EXPECT_EQ(ptr2.get(), &checkedObject); … … 119 119 { 120 120 CheckedObject checkedObject; 121 EXPECT_EQ(checkedObject.ptrCount(), 0 );121 EXPECT_EQ(checkedObject.ptrCount(), 0u); 122 122 { 123 123 CheckedRef ref { checkedObject }; 124 124 EXPECT_EQ(ref.ptr(), &checkedObject); 125 125 EXPECT_EQ(ref->someFunction(), -7); 126 EXPECT_EQ(checkedObject.ptrCount(), 1 );126 EXPECT_EQ(checkedObject.ptrCount(), 1u); 127 127 CheckedPtr ptr { ref }; 128 128 EXPECT_EQ(ref.ptr(), &checkedObject); … … 130 130 EXPECT_EQ(ptr.get(), &checkedObject); 131 131 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); 140 140 { 141 141 CheckedRef<DerivedCheckedObject> ref { checkedObject }; 142 142 EXPECT_EQ(ref.ptr(), &checkedObject); 143 143 EXPECT_EQ(ref->someFunction(), -7); 144 EXPECT_EQ(checkedObject.ptrCount(), 1 );144 EXPECT_EQ(checkedObject.ptrCount(), 1u); 145 145 CheckedPtr<CheckedObject> ptr { ref }; 146 146 EXPECT_EQ(ref.ptr(), &checkedObject); … … 148 148 EXPECT_EQ(ptr.get(), &checkedObject); 149 149 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); 158 158 { 159 159 CheckedRef ref { checkedObject }; 160 160 EXPECT_EQ(ref.ptr(), &checkedObject); 161 161 EXPECT_EQ(ref->someFunction(), -7); 162 EXPECT_EQ(checkedObject.ptrCount(), 1 );162 EXPECT_EQ(checkedObject.ptrCount(), 1u); 163 163 CheckedPtr ptr { WTFMove(ref) }; 164 164 EXPECT_EQ(ref.ptr(), nullptr); 165 165 EXPECT_EQ(ptr.get(), &checkedObject); 166 166 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); 175 175 { 176 176 CheckedRef<DerivedCheckedObject> ref { checkedObject }; 177 177 EXPECT_EQ(ref.ptr(), &checkedObject); 178 178 EXPECT_EQ(ref->someFunction(), -7); 179 EXPECT_EQ(checkedObject.ptrCount(), 1 );179 EXPECT_EQ(checkedObject.ptrCount(), 1u); 180 180 CheckedPtr<CheckedObject> ptr { WTFMove(ref) }; 181 181 EXPECT_EQ(ref.ptr(), nullptr); 182 182 EXPECT_EQ(ptr.get(), &checkedObject); 183 183 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); 187 187 } 188 188 } … … 192 192 { 193 193 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); 200 200 { 201 201 CheckedPtr ptr = { &checkedObject }; … … 203 203 EXPECT_EQ(ptr.get(), &checkedObject); 204 204 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); 213 213 214 214 CheckedPtr<CheckedObject> ptr { &checkedObject }; … … 216 216 EXPECT_EQ(ptr.get(), &checkedObject); 217 217 EXPECT_EQ(ptr->someFunction(), -7); 218 EXPECT_EQ(checkedObject.ptrCount(), 1 );218 EXPECT_EQ(checkedObject.ptrCount(), 1u); 219 219 ptr = nullptr; 220 220 221 221 EXPECT_FALSE(!!ptr); 222 222 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); 229 229 230 230 CheckedPtr<DerivedCheckedObject> ptr1 { &checkedObject }; … … 232 232 EXPECT_EQ(ptr1.get(), &checkedObject); 233 233 EXPECT_EQ(ptr1->someFunction(), -7); 234 EXPECT_EQ(checkedObject.ptrCount(), 1 );234 EXPECT_EQ(checkedObject.ptrCount(), 1u); 235 235 236 236 const CheckedPtr<CheckedObject> ptr2 = ptr1; … … 238 238 EXPECT_EQ(ptr2.get(), &checkedObject); 239 239 EXPECT_EQ(ptr2->someFunction(), -7); 240 EXPECT_EQ(checkedObject.ptrCount(), 2 );240 EXPECT_EQ(checkedObject.ptrCount(), 2u); 241 241 242 242 CheckedPtr<CheckedObject> ptr3 = ptr1; 243 243 EXPECT_TRUE(!!ptr3); 244 244 EXPECT_EQ(ptr3.get(), &checkedObject); 245 EXPECT_EQ(checkedObject.ptrCount(), 3 );245 EXPECT_EQ(checkedObject.ptrCount(), 3u); 246 246 247 247 ptr1 = nullptr; 248 EXPECT_EQ(checkedObject.ptrCount(), 2 );248 EXPECT_EQ(checkedObject.ptrCount(), 2u); 249 249 EXPECT_EQ(ptr1.get(), nullptr); 250 250 EXPECT_EQ(ptr2.get(), &checkedObject); … … 252 252 253 253 CheckedPtr<CheckedObject> ptr4 = WTFMove(ptr3); 254 EXPECT_EQ(checkedObject.ptrCount(), 2 );254 EXPECT_EQ(checkedObject.ptrCount(), 2u); 255 255 EXPECT_EQ(ptr1.get(), nullptr); 256 256 EXPECT_EQ(ptr2.get(), &checkedObject); … … 264 264 { 265 265 CheckedObject checkedObject; 266 EXPECT_EQ(checkedObject.ptrCount(), 0 );266 EXPECT_EQ(checkedObject.ptrCount(), 0u); 267 267 268 268 CheckedPtr ptr = { &checkedObject }; 269 269 EXPECT_EQ(ptr.get(), &checkedObject); 270 EXPECT_EQ(checkedObject.ptrCount(), 1 );270 EXPECT_EQ(checkedObject.ptrCount(), 1u); 271 271 272 272 HashSet<CheckedPtr<CheckedObject>> set; 273 273 set.add(ptr); 274 EXPECT_EQ(checkedObject.ptrCount(), 2 );274 EXPECT_EQ(checkedObject.ptrCount(), 2u); 275 275 276 276 ptr = nullptr; 277 EXPECT_EQ(checkedObject.ptrCount(), 1 );277 EXPECT_EQ(checkedObject.ptrCount(), 1u); 278 278 } 279 279 … … 281 281 CheckedObject object1; 282 282 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); 285 285 286 286 HashSet<CheckedPtr<CheckedObject>> set; 287 287 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); 290 290 291 291 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); 294 294 295 295 CheckedPtr<DerivedCheckedObject> ptr { &object2 }; 296 296 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); 299 299 ptr = nullptr; 300 300 301 EXPECT_EQ(object1.ptrCount(), 1 );302 EXPECT_EQ(object2.ptrCount(), 1 );301 EXPECT_EQ(object1.ptrCount(), 1u); 302 EXPECT_EQ(object2.ptrCount(), 1u); 303 303 304 304 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); 307 307 } 308 308 … … 310 310 Vector<std::unique_ptr<CheckedObject>> objects; 311 311 objects.append(makeUniqueWithoutFastMallocCheck<CheckedObject>()); 312 EXPECT_EQ(objects[0]->ptrCount(), 0 );312 EXPECT_EQ(objects[0]->ptrCount(), 0u); 313 313 314 314 HashSet<CheckedPtr<CheckedObject>> set; … … 325 325 326 326 for (auto& object : objects) 327 EXPECT_EQ(object->ptrCount(), 1 );327 EXPECT_EQ(object->ptrCount(), 1u); 328 328 329 329 auto setVector = WTF::copyToVector(set); 330 330 331 331 for (auto& object : objects) 332 EXPECT_EQ(object->ptrCount(), 2); 333 } 332 EXPECT_EQ(object->ptrCount(), 2u); 333 } 334 } 335 336 TEST(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); 334 343 } 335 344 -
trunk/Tools/TestWebKitAPI/Tests/WTF/CheckedRef.cpp
r280559 r288700 61 61 { 62 62 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); 69 69 { 70 70 CheckedRef ref = checkedObject; … … 73 73 EXPECT_EQ(ref->someFunction(), -7); 74 74 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); 78 78 } 79 79 … … 81 81 CheckedObject checkedObject; 82 82 CheckedObject anotherObject; 83 EXPECT_EQ(checkedObject.ptrCount(), 0 );83 EXPECT_EQ(checkedObject.ptrCount(), 0u); 84 84 85 85 CheckedRef ref = checkedObject; … … 87 87 EXPECT_EQ(ref->someFunction(), -7); 88 88 EXPECT_EQ(static_cast<CheckedObject&>(ref).someFunction(), -7); 89 EXPECT_EQ(checkedObject.ptrCount(), 1 );89 EXPECT_EQ(checkedObject.ptrCount(), 1u); 90 90 91 91 ref = anotherObject; 92 92 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); 95 95 } 96 96 … … 98 98 CheckedObject checkedObject; 99 99 CheckedObject anotherObject; 100 EXPECT_EQ(checkedObject.ptrCount(), 0 );100 EXPECT_EQ(checkedObject.ptrCount(), 0u); 101 101 102 102 CheckedRef ref1 = checkedObject; … … 104 104 EXPECT_EQ(ref1->someFunction(), -7); 105 105 EXPECT_EQ(static_cast<CheckedObject&>(ref1).someFunction(), -7); 106 EXPECT_EQ(checkedObject.ptrCount(), 1 );106 EXPECT_EQ(checkedObject.ptrCount(), 1u); 107 107 108 108 const CheckedRef ref2 = checkedObject; … … 110 110 EXPECT_EQ(ref2.get().someFunction(), -7); 111 111 EXPECT_EQ(static_cast<const CheckedObject&>(ref2).someFunction(), -7); 112 EXPECT_EQ(checkedObject.ptrCount(), 2 );112 EXPECT_EQ(checkedObject.ptrCount(), 2u); 113 113 114 114 CheckedRef ref3 = ref2; 115 115 EXPECT_EQ(ref3.ptr(), &checkedObject); 116 EXPECT_EQ(checkedObject.ptrCount(), 3 );116 EXPECT_EQ(checkedObject.ptrCount(), 3u); 117 117 118 118 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); 121 121 EXPECT_EQ(ref1.ptr(), &anotherObject); 122 122 EXPECT_EQ(ref2.ptr(), &checkedObject); … … 124 124 125 125 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); 128 128 EXPECT_EQ(ref1.ptr(), &checkedObject); 129 129 EXPECT_EQ(ref2.ptr(), &checkedObject); … … 135 135 { 136 136 DerivedCheckedObject checkedObject; 137 EXPECT_EQ(checkedObject.ptrCount(), 0 );137 EXPECT_EQ(checkedObject.ptrCount(), 0u); 138 138 { 139 139 CheckedRef ref = checkedObject; … … 142 142 EXPECT_EQ(static_cast<DerivedCheckedObject&>(ref).someFunction(), -11); 143 143 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); 147 147 } 148 148 … … 150 150 DerivedCheckedObject checkedObject; 151 151 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); 154 154 155 155 CheckedRef<CheckedObject> ref = checkedObject; … … 157 157 EXPECT_EQ(ref->someFunction(), -11); 158 158 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); 161 161 162 162 ref = anotherObject; 163 163 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); 166 166 } 167 167 … … 169 169 DerivedCheckedObject checkedObject { 10 }; 170 170 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); 173 173 174 174 CheckedRef<DerivedCheckedObject> ref1 = checkedObject; … … 176 176 EXPECT_EQ(ref1->someFunction(), 10); 177 177 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); 180 180 181 181 const CheckedRef<CheckedObject> ref2 = ref1; … … 183 183 EXPECT_EQ(ref2->someFunction(), 10); 184 184 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); 187 187 188 188 CheckedRef<CheckedObject> ref3 = ref1; 189 189 EXPECT_EQ(ref3.ptr(), &checkedObject); 190 190 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); 193 193 194 194 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); 197 197 EXPECT_EQ(ref1.ptr(), &anotherObject); 198 198 EXPECT_EQ(ref1->someFunction(), 20); … … 202 202 203 203 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); 206 206 EXPECT_EQ(ref2.ptr(), &checkedObject); 207 207 EXPECT_EQ(ref3.ptr(), &checkedObject); … … 211 211 212 212 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); 215 215 EXPECT_EQ(ref1.ptr(), &checkedObject); 216 216 EXPECT_EQ(ref1->someFunction(), 10); … … 224 224 { 225 225 CheckedObject checkedObject; 226 EXPECT_EQ(checkedObject.ptrCount(), 0 );226 EXPECT_EQ(checkedObject.ptrCount(), 0u); 227 227 228 228 HashSet<CheckedRef<CheckedObject>> set; … … 230 230 CheckedRef ref = checkedObject; 231 231 EXPECT_EQ(ref.ptr(), &checkedObject); 232 EXPECT_EQ(checkedObject.ptrCount(), 1 );232 EXPECT_EQ(checkedObject.ptrCount(), 1u); 233 233 234 234 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); 238 238 } 239 239 … … 241 241 CheckedObject object1; 242 242 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); 245 245 246 246 HashSet<CheckedRef<CheckedObject>> set; 247 247 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); 250 250 EXPECT_TRUE(set.contains(object1)); 251 251 EXPECT_FALSE(set.contains(object2)); 252 252 253 253 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); 256 256 EXPECT_TRUE(set.contains(object1)); 257 257 EXPECT_FALSE(set.contains(object2)); … … 260 260 CheckedRef<DerivedCheckedObject> ref { object2 }; 261 261 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); 264 264 EXPECT_TRUE(set.contains(object1)); 265 265 EXPECT_TRUE(set.contains(object2)); 266 266 } 267 267 268 EXPECT_EQ(object1.ptrCount(), 1 );269 EXPECT_EQ(object2.ptrCount(), 1 );268 EXPECT_EQ(object1.ptrCount(), 1u); 269 EXPECT_EQ(object2.ptrCount(), 1u); 270 270 EXPECT_TRUE(set.contains(object1)); 271 271 EXPECT_TRUE(set.contains(object2)); 272 272 273 273 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); 276 276 EXPECT_FALSE(set.contains(object1)); 277 277 EXPECT_TRUE(set.contains(object2)); … … 281 281 Vector<std::unique_ptr<CheckedObject>> objects; 282 282 objects.append(makeUniqueWithoutFastMallocCheck<CheckedObject>(0)); 283 EXPECT_EQ(objects[0]->ptrCount(), 0 );283 EXPECT_EQ(objects[0]->ptrCount(), 0u); 284 284 285 285 HashSet<CheckedRef<CheckedObject>> set; … … 296 296 297 297 for (auto& object : objects) { 298 EXPECT_EQ(object->ptrCount(), 1 );298 EXPECT_EQ(object->ptrCount(), 1u); 299 299 EXPECT_TRUE(set.contains(*object)); 300 300 } … … 310 310 311 311 for (auto& object : objects) 312 EXPECT_EQ(object->ptrCount(), 2 );312 EXPECT_EQ(object->ptrCount(), 2u); 313 313 } 314 314 }
Note:
See TracChangeset
for help on using the changeset viewer.