@@ -580,10 +580,16 @@ static bool isNonNative_unTagged_bridgeObject(void *object) {
580
580
static_assert ((heap_object_abi::SwiftSpareBitsMask & objectPointerIsObjCBit) ==
581
581
objectPointerIsObjCBit,
582
582
" isObjC bit not within spare bits" );
583
- return (uintptr_t (object) & objectPointerIsObjCBit) != 0 && (uintptr_t (object) & heap_object_abi::BridgeObjectTagBitsMask) == 0 ;
583
+ return (uintptr_t (object) & objectPointerIsObjCBit) != 0
584
+ && (uintptr_t (object) & heap_object_abi::BridgeObjectTagBitsMask) == 0 ;
584
585
}
585
586
#endif
586
587
588
+ // / Return true iff the given BridgeObject is a tagged value.
589
+ static bool isBridgeObjectTaggedPointer (void *object) {
590
+ return (uintptr_t (object) & heap_object_abi::BridgeObjectTagBitsMask) != 0 ;
591
+ }
592
+
587
593
// Mask out the spare bits in a bridgeObject, returning the object it
588
594
// encodes.
589
595
// /
@@ -594,7 +600,7 @@ static bool isNonNative_unTagged_bridgeObject(void *object) {
594
600
595
601
void *swift::swift_bridgeObjectRetain (void *object) {
596
602
#if SWIFT_OBJC_INTEROP
597
- if (isObjCTaggedPointer (object))
603
+ if (isObjCTaggedPointer (object) || isBridgeObjectTaggedPointer (object) )
598
604
return object;
599
605
#endif
600
606
@@ -616,7 +622,7 @@ static bool isNonNative_unTagged_bridgeObject(void *object) {
616
622
SWIFT_RUNTIME_EXPORT
617
623
void *swift::swift_nonatomic_bridgeObjectRetain (void *object) {
618
624
#if SWIFT_OBJC_INTEROP
619
- if (isObjCTaggedPointer (object))
625
+ if (isObjCTaggedPointer (object) || isBridgeObjectTaggedPointer (object) )
620
626
return object;
621
627
#endif
622
628
@@ -638,7 +644,7 @@ static bool isNonNative_unTagged_bridgeObject(void *object) {
638
644
SWIFT_RUNTIME_EXPORT
639
645
void swift::swift_bridgeObjectRelease (void *object) {
640
646
#if SWIFT_OBJC_INTEROP
641
- if (isObjCTaggedPointer (object))
647
+ if (isObjCTaggedPointer (object) || isBridgeObjectTaggedPointer (object) )
642
648
return ;
643
649
#endif
644
650
@@ -655,7 +661,7 @@ static bool isNonNative_unTagged_bridgeObject(void *object) {
655
661
656
662
void swift::swift_nonatomic_bridgeObjectRelease (void *object) {
657
663
#if SWIFT_OBJC_INTEROP
658
- if (isObjCTaggedPointer (object))
664
+ if (isObjCTaggedPointer (object) || isBridgeObjectTaggedPointer (object) )
659
665
return ;
660
666
#endif
661
667
@@ -672,7 +678,7 @@ static bool isNonNative_unTagged_bridgeObject(void *object) {
672
678
673
679
void *swift::swift_bridgeObjectRetain_n (void *object, int n) {
674
680
#if SWIFT_OBJC_INTEROP
675
- if (isObjCTaggedPointer (object))
681
+ if (isObjCTaggedPointer (object) || isBridgeObjectTaggedPointer (object) )
676
682
return object;
677
683
#endif
678
684
@@ -695,7 +701,7 @@ static bool isNonNative_unTagged_bridgeObject(void *object) {
695
701
696
702
void swift::swift_bridgeObjectRelease_n (void *object, int n) {
697
703
#if SWIFT_OBJC_INTEROP
698
- if (isObjCTaggedPointer (object))
704
+ if (isObjCTaggedPointer (object) || isBridgeObjectTaggedPointer (object) )
699
705
return ;
700
706
#endif
701
707
@@ -713,7 +719,7 @@ static bool isNonNative_unTagged_bridgeObject(void *object) {
713
719
714
720
void *swift::swift_nonatomic_bridgeObjectRetain_n (void *object, int n) {
715
721
#if SWIFT_OBJC_INTEROP
716
- if (isObjCTaggedPointer (object))
722
+ if (isObjCTaggedPointer (object) || isBridgeObjectTaggedPointer (object) )
717
723
return object;
718
724
#endif
719
725
@@ -736,7 +742,7 @@ static bool isNonNative_unTagged_bridgeObject(void *object) {
736
742
737
743
void swift::swift_nonatomic_bridgeObjectRelease_n (void *object, int n) {
738
744
#if SWIFT_OBJC_INTEROP
739
- if (isObjCTaggedPointer (object))
745
+ if (isObjCTaggedPointer (object) || isBridgeObjectTaggedPointer (object) )
740
746
return ;
741
747
#endif
742
748
0 commit comments