24
24
#include " llvm/Support/MathExtras.h"
25
25
#include " MetadataCache.h"
26
26
#include " Private.h"
27
+ #include " RuntimeInvocationsTracking.h"
27
28
#include " WeakReference.h"
28
29
#include " swift/Runtime/Debug.h"
29
30
#include < algorithm>
@@ -297,6 +298,7 @@ void swift::swift_nonatomic_retain(HeapObject *object) {
297
298
SWIFT_RT_ENTRY_IMPL_VISIBILITY
298
299
extern " C"
299
300
void SWIFT_RT_ENTRY_IMPL (swift_nonatomic_retain)(HeapObject *object) {
301
+ SWIFT_RT_TRACK_INVOCATION (object, swift_nonatomic_retain);
300
302
if (isValidPointerForNativeRetain (object))
301
303
object->refCounts .incrementNonAtomic (1 );
302
304
}
@@ -308,6 +310,7 @@ void swift::swift_nonatomic_release(HeapObject *object) {
308
310
SWIFT_RT_ENTRY_IMPL_VISIBILITY
309
311
extern " C"
310
312
void SWIFT_RT_ENTRY_IMPL (swift_nonatomic_release)(HeapObject *object) {
313
+ SWIFT_RT_TRACK_INVOCATION (object, swift_nonatomic_release);
311
314
if (isValidPointerForNativeRetain (object))
312
315
object->refCounts .decrementAndMaybeDeinitNonAtomic (1 );
313
316
}
@@ -316,6 +319,7 @@ SWIFT_RT_ENTRY_IMPL_VISIBILITY
316
319
extern " C"
317
320
void SWIFT_RT_ENTRY_IMPL (swift_retain)(HeapObject *object)
318
321
SWIFT_CC(RegisterPreservingCC_IMPL) {
322
+ SWIFT_RT_TRACK_INVOCATION (object, swift_retain);
319
323
if (isValidPointerForNativeRetain (object))
320
324
object->refCounts .increment (1 );
321
325
}
@@ -329,6 +333,7 @@ SWIFT_RT_ENTRY_IMPL_VISIBILITY
329
333
extern " C"
330
334
void SWIFT_RT_ENTRY_IMPL (swift_retain_n)(HeapObject *object, uint32_t n)
331
335
SWIFT_CC(RegisterPreservingCC_IMPL) {
336
+ SWIFT_RT_TRACK_INVOCATION (object, swift_retain_n);
332
337
if (isValidPointerForNativeRetain (object))
333
338
object->refCounts .increment (n);
334
339
}
@@ -342,6 +347,7 @@ SWIFT_RT_ENTRY_IMPL_VISIBILITY
342
347
extern " C"
343
348
void SWIFT_RT_ENTRY_IMPL (swift_nonatomic_retain_n)(HeapObject *object, uint32_t n)
344
349
SWIFT_CC(RegisterPreservingCC_IMPL) {
350
+ SWIFT_RT_TRACK_INVOCATION (object, swift_nonatomic_retain_n);
345
351
if (isValidPointerForNativeRetain (object))
346
352
object->refCounts .incrementNonAtomic (n);
347
353
}
@@ -355,6 +361,7 @@ SWIFT_RT_ENTRY_IMPL_VISIBILITY
355
361
extern " C"
356
362
void SWIFT_RT_ENTRY_IMPL (swift_release)(HeapObject *object)
357
363
SWIFT_CC(RegisterPreservingCC_IMPL) {
364
+ SWIFT_RT_TRACK_INVOCATION (object, swift_release);
358
365
if (isValidPointerForNativeRetain (object))
359
366
object->refCounts .decrementAndMaybeDeinit (1 );
360
367
}
@@ -368,11 +375,13 @@ SWIFT_RT_ENTRY_IMPL_VISIBILITY
368
375
extern " C"
369
376
void SWIFT_RT_ENTRY_IMPL (swift_release_n)(HeapObject *object, uint32_t n)
370
377
SWIFT_CC(RegisterPreservingCC_IMPL) {
378
+ SWIFT_RT_TRACK_INVOCATION (object, swift_release_n);
371
379
if (isValidPointerForNativeRetain (object))
372
380
object->refCounts .decrementAndMaybeDeinit (n);
373
381
}
374
382
375
383
void swift::swift_setDeallocating (HeapObject *object) {
384
+ SWIFT_RT_TRACK_INVOCATION (object, swift_setDeallocating);
376
385
object->refCounts .decrementFromOneNonAtomic ();
377
386
}
378
387
@@ -385,6 +394,7 @@ SWIFT_RT_ENTRY_IMPL_VISIBILITY
385
394
extern " C"
386
395
void SWIFT_RT_ENTRY_IMPL (swift_nonatomic_release_n)(HeapObject *object, uint32_t n)
387
396
SWIFT_CC(RegisterPreservingCC_IMPL) {
397
+ SWIFT_RT_TRACK_INVOCATION (object, swift_nonatomic_release_n);
388
398
if (isValidPointerForNativeRetain (object))
389
399
object->refCounts .decrementAndMaybeDeinitNonAtomic (n);
390
400
}
@@ -399,6 +409,7 @@ size_t swift::swift_unownedRetainCount(HeapObject *object) {
399
409
400
410
void swift::swift_unownedRetain (HeapObject *object)
401
411
SWIFT_CC(RegisterPreservingCC_IMPL) {
412
+ SWIFT_RT_TRACK_INVOCATION (object, swift_unownedRetain);
402
413
if (!isValidPointerForNativeRetain (object))
403
414
return ;
404
415
@@ -407,6 +418,7 @@ void swift::swift_unownedRetain(HeapObject *object)
407
418
408
419
void swift::swift_unownedRelease (HeapObject *object)
409
420
SWIFT_CC(RegisterPreservingCC_IMPL) {
421
+ SWIFT_RT_TRACK_INVOCATION (object, swift_unownedRelease);
410
422
if (!isValidPointerForNativeRetain (object))
411
423
return ;
412
424
@@ -425,6 +437,7 @@ void swift::swift_unownedRelease(HeapObject *object)
425
437
426
438
void swift::swift_nonatomic_unownedRetain (HeapObject *object)
427
439
SWIFT_CC(RegisterPreservingCC_IMPL) {
440
+ SWIFT_RT_TRACK_INVOCATION (object, swift_nonatomic_unownedRetain);
428
441
if (!isValidPointerForNativeRetain (object))
429
442
return ;
430
443
@@ -433,6 +446,7 @@ void swift::swift_nonatomic_unownedRetain(HeapObject *object)
433
446
434
447
void swift::swift_nonatomic_unownedRelease (HeapObject *object)
435
448
SWIFT_CC(RegisterPreservingCC_IMPL) {
449
+ SWIFT_RT_TRACK_INVOCATION (object, swift_nonatomic_unownedRelease);
436
450
if (!isValidPointerForNativeRetain (object))
437
451
return ;
438
452
@@ -451,6 +465,7 @@ void swift::swift_nonatomic_unownedRelease(HeapObject *object)
451
465
452
466
void swift::swift_unownedRetain_n (HeapObject *object, int n)
453
467
SWIFT_CC(RegisterPreservingCC_IMPL) {
468
+ SWIFT_RT_TRACK_INVOCATION (object, swift_unownedRetain_n);
454
469
if (!isValidPointerForNativeRetain (object))
455
470
return ;
456
471
@@ -459,6 +474,7 @@ void swift::swift_unownedRetain_n(HeapObject *object, int n)
459
474
460
475
void swift::swift_unownedRelease_n (HeapObject *object, int n)
461
476
SWIFT_CC(RegisterPreservingCC_IMPL) {
477
+ SWIFT_RT_TRACK_INVOCATION (object, swift_unownedRelease_n);
462
478
if (!isValidPointerForNativeRetain (object))
463
479
return ;
464
480
@@ -476,6 +492,7 @@ void swift::swift_unownedRelease_n(HeapObject *object, int n)
476
492
477
493
void swift::swift_nonatomic_unownedRetain_n (HeapObject *object, int n)
478
494
SWIFT_CC(RegisterPreservingCC_IMPL) {
495
+ SWIFT_RT_TRACK_INVOCATION (object, swift_nonatomic_unownedRetain_n);
479
496
if (!isValidPointerForNativeRetain (object))
480
497
return ;
481
498
@@ -484,6 +501,7 @@ void swift::swift_nonatomic_unownedRetain_n(HeapObject *object, int n)
484
501
485
502
void swift::swift_nonatomic_unownedRelease_n (HeapObject *object, int n)
486
503
SWIFT_CC(RegisterPreservingCC_IMPL) {
504
+ SWIFT_RT_TRACK_INVOCATION (object, swift_unownedRelease_n);
487
505
if (!isValidPointerForNativeRetain (object))
488
506
return ;
489
507
@@ -501,6 +519,7 @@ void swift::swift_nonatomic_unownedRelease_n(HeapObject *object, int n)
501
519
502
520
HeapObject *swift::swift_tryPin (HeapObject *object)
503
521
SWIFT_CC(RegisterPreservingCC_IMPL) {
522
+ SWIFT_RT_TRACK_INVOCATION (object, swift_tryPin);
504
523
assert (isValidPointerForNativeRetain (object));
505
524
506
525
// Try to set the flag. If this succeeds, the caller will be
@@ -515,6 +534,7 @@ HeapObject *swift::swift_tryPin(HeapObject *object)
515
534
516
535
void swift::swift_unpin (HeapObject *object)
517
536
SWIFT_CC(RegisterPreservingCC_IMPL) {
537
+ SWIFT_RT_TRACK_INVOCATION (object, swift_unpin);
518
538
if (isValidPointerForNativeRetain (object))
519
539
object->refCounts .decrementAndUnpinAndMaybeDeinit ();
520
540
}
@@ -526,6 +546,7 @@ HeapObject *swift::swift_tryRetain(HeapObject *object)
526
546
527
547
HeapObject *swift::swift_nonatomic_tryPin (HeapObject *object)
528
548
SWIFT_CC(RegisterPreservingCC_IMPL) {
549
+ SWIFT_RT_TRACK_INVOCATION (object, swift_nonatomic_tryPin);
529
550
assert (object);
530
551
531
552
// Try to set the flag. If this succeeds, the caller will be
@@ -540,6 +561,7 @@ HeapObject *swift::swift_nonatomic_tryPin(HeapObject *object)
540
561
541
562
void swift::swift_nonatomic_unpin (HeapObject *object)
542
563
SWIFT_CC(RegisterPreservingCC_IMPL) {
564
+ SWIFT_RT_TRACK_INVOCATION (object, swift_nonatomic_unpin);
543
565
if (isValidPointerForNativeRetain (object))
544
566
object->refCounts .decrementAndUnpinAndMaybeDeinitNonAtomic ();
545
567
}
@@ -548,6 +570,7 @@ SWIFT_RT_ENTRY_IMPL_VISIBILITY
548
570
extern " C"
549
571
HeapObject *SWIFT_RT_ENTRY_IMPL (swift_tryRetain)(HeapObject *object)
550
572
SWIFT_CC(RegisterPreservingCC_IMPL) {
573
+ SWIFT_RT_TRACK_INVOCATION (object, swift_tryRetain);
551
574
if (!isValidPointerForNativeRetain (object))
552
575
return nullptr ;
553
576
@@ -570,6 +593,7 @@ bool SWIFT_RT_ENTRY_IMPL(swift_isDeallocating)(HeapObject *object) {
570
593
571
594
void swift::swift_unownedRetainStrong (HeapObject *object)
572
595
SWIFT_CC(RegisterPreservingCC_IMPL) {
596
+ SWIFT_RT_TRACK_INVOCATION (object, swift_unownedRetainStrong);
573
597
if (!isValidPointerForNativeRetain (object))
574
598
return ;
575
599
assert (object->refCounts .getUnownedCount () &&
@@ -581,6 +605,7 @@ void swift::swift_unownedRetainStrong(HeapObject *object)
581
605
582
606
void swift::swift_nonatomic_unownedRetainStrong (HeapObject *object)
583
607
SWIFT_CC(RegisterPreservingCC_IMPL) {
608
+ SWIFT_RT_TRACK_INVOCATION (object, swift_nonatomic_unownedRetainStrong);
584
609
if (!isValidPointerForNativeRetain (object))
585
610
return ;
586
611
assert (object->refCounts .getUnownedCount () &&
@@ -592,6 +617,7 @@ void swift::swift_nonatomic_unownedRetainStrong(HeapObject *object)
592
617
593
618
void swift::swift_unownedRetainStrongAndRelease (HeapObject *object)
594
619
SWIFT_CC(RegisterPreservingCC_IMPL) {
620
+ SWIFT_RT_TRACK_INVOCATION (object, swift_unownedRetainStrongAndRelease);
595
621
if (!isValidPointerForNativeRetain (object))
596
622
return ;
597
623
assert (object->refCounts .getUnownedCount () &&
@@ -608,6 +634,7 @@ void swift::swift_unownedRetainStrongAndRelease(HeapObject *object)
608
634
609
635
void swift::swift_nonatomic_unownedRetainStrongAndRelease (HeapObject *object)
610
636
SWIFT_CC(RegisterPreservingCC_IMPL) {
637
+ SWIFT_RT_TRACK_INVOCATION (object, swift_nonatomic_unownedRetainStrongAndRelease);
611
638
if (!isValidPointerForNativeRetain (object))
612
639
return ;
613
640
assert (object->refCounts .getUnownedCount () &&
0 commit comments