Skip to content

Commit 057bbb3

Browse files
committed
[IRGen] Adopt reference storage type meta-programming macros
This commit also fixes reference storage extra inhabitant bugs.
1 parent b91bde4 commit 057bbb3

26 files changed

+2048
-2341
lines changed

include/swift/Runtime/RuntimeFunctions.def

Lines changed: 82 additions & 242 deletions
Original file line numberDiff line numberDiff line change
@@ -361,248 +361,88 @@ FUNCTION(ErrorStrongRelease, swift_errorRelease, C_CC,
361361
ARGS(ErrorPtrTy),
362362
ATTRS(NoUnwind))
363363

364-
// void *swift_unownedRetain(void *ptr);
365-
FUNCTION(NativeUnownedRetain, swift_unownedRetain, C_CC,
366-
RETURNS(RefCountedPtrTy),
367-
ARGS(RefCountedPtrTy),
368-
ATTRS(NoUnwind, FirstParamReturned))
369-
370-
// void swift_unownedRelease(void *ptr);
371-
FUNCTION(NativeUnownedRelease, swift_unownedRelease, C_CC,
372-
RETURNS(VoidTy),
373-
ARGS(RefCountedPtrTy),
374-
ATTRS(NoUnwind))
375-
376-
// void *swift_nonatomic_unownedRetain(void *ptr);
377-
FUNCTION(NonAtomicNativeUnownedRetain, swift_nonatomic_unownedRetain,
378-
C_CC,
379-
RETURNS(RefCountedPtrTy),
380-
ARGS(RefCountedPtrTy),
381-
ATTRS(NoUnwind, FirstParamReturned))
382-
383-
// void swift_nonatomic_unownedRelease(void *ptr);
384-
FUNCTION(NonAtomicNativeUnownedRelease, swift_nonatomic_unownedRelease,
385-
C_CC,
386-
RETURNS(VoidTy),
387-
ARGS(RefCountedPtrTy),
388-
ATTRS(NoUnwind))
389-
390-
// void *swift_unownedRetain_n(void *ptr, int32_t n);
391-
FUNCTION(UnownedRetainN, swift_unownedRetain_n,
392-
C_CC,
393-
RETURNS(RefCountedPtrTy),
394-
ARGS(RefCountedPtrTy, Int32Ty),
395-
ATTRS(NoUnwind, FirstParamReturned))
396-
397-
// void swift_unownedRelease_n(void *ptr, int32_t n);
398-
FUNCTION(UnownedReleaseN, swift_unownedRelease_n,
399-
C_CC,
400-
RETURNS(VoidTy),
401-
ARGS(RefCountedPtrTy, Int32Ty),
402-
ATTRS(NoUnwind))
403-
404-
// void *swift_nonatomic_unownedRetain_n(void *ptr, int32_t n);
405-
FUNCTION(NonAtomicUnownedRetainN, swift_nonatomic_unownedRetain_n,
406-
C_CC,
407-
RETURNS(RefCountedPtrTy),
408-
ARGS(RefCountedPtrTy, Int32Ty),
409-
ATTRS(NoUnwind, FirstParamReturned))
410-
411-
// void swift_nonatomic_unownedRelease_n(void *ptr, int32_t n);
412-
FUNCTION(NonAtomicUnownedReleaseN, swift_nonatomic_unownedRelease_n,
413-
C_CC,
414-
RETURNS(VoidTy),
415-
ARGS(RefCountedPtrTy, Int32Ty),
416-
ATTRS(NoUnwind))
417-
418-
// void *swift_unownedRetainStrong(void *ptr);
419-
FUNCTION(NativeStrongRetainUnowned, swift_unownedRetainStrong, C_CC,
420-
RETURNS(RefCountedPtrTy),
421-
ARGS(RefCountedPtrTy),
422-
ATTRS(NoUnwind, FirstParamReturned))
423-
424-
// void *swift_nonatomic_unownedRetainStrong(void *ptr);
425-
FUNCTION(NonAtomicNativeStrongRetainUnowned, swift_nonatomic_unownedRetainStrong,
426-
C_CC,
427-
RETURNS(RefCountedPtrTy),
428-
ARGS(RefCountedPtrTy),
429-
ATTRS(NoUnwind, FirstParamReturned))
430-
431-
// void swift_unownedRetainStrongAndRelease(void *ptr);
432-
FUNCTION(NativeStrongRetainAndUnownedRelease,
433-
swift_unownedRetainStrongAndRelease, C_CC,
434-
RETURNS(VoidTy),
435-
ARGS(RefCountedPtrTy),
436-
ATTRS(NoUnwind))
437-
438-
// void swift_nonatomic_unownedRetainStrongAndRelease(void *ptr);
439-
FUNCTION(NonAtomicNativeStrongRetainAndUnownedRelease,
440-
swift_nonatomic_unownedRetainStrongAndRelease, C_CC,
441-
RETURNS(VoidTy),
442-
ARGS(RefCountedPtrTy),
443-
ATTRS(NoUnwind))
444-
445-
// void swift_weakDestroy(WeakReference *object);
446-
FUNCTION(NativeWeakDestroy, swift_weakDestroy, C_CC,
447-
RETURNS(VoidTy),
448-
ARGS(WeakReferencePtrTy),
449-
ATTRS(NoUnwind))
450-
451-
// WeakReference *swift_weakInit(WeakReference *object, void *value);
452-
FUNCTION(NativeWeakInit, swift_weakInit, C_CC,
453-
RETURNS(WeakReferencePtrTy),
454-
ARGS(WeakReferencePtrTy, RefCountedPtrTy),
455-
ATTRS(NoUnwind, FirstParamReturned))
456-
457-
// WeakReference *swift_weakAssign(WeakReference *object, void *value);
458-
FUNCTION(NativeWeakAssign, swift_weakAssign, C_CC,
459-
RETURNS(WeakReferencePtrTy),
460-
ARGS(WeakReferencePtrTy, RefCountedPtrTy),
461-
ATTRS(NoUnwind, FirstParamReturned))
462-
463-
// void *swift_weakLoadStrong(WeakReference *object);
464-
FUNCTION(NativeWeakLoadStrong, swift_weakLoadStrong,C_CC,
465-
RETURNS(RefCountedPtrTy),
466-
ARGS(WeakReferencePtrTy),
467-
ATTRS(NoUnwind))
468-
469-
// void *swift_weakTakeStrong(WeakReference *object);
470-
FUNCTION(NativeWeakTakeStrong, swift_weakTakeStrong,C_CC,
471-
RETURNS(RefCountedPtrTy),
472-
ARGS(WeakReferencePtrTy),
473-
ATTRS(NoUnwind))
474-
475-
// WeakReference *swift_weakCopyInit(WeakReference *dest, WeakReference *src);
476-
FUNCTION(NativeWeakCopyInit, swift_weakCopyInit, C_CC,
477-
RETURNS(WeakReferencePtrTy),
478-
ARGS(WeakReferencePtrTy, WeakReferencePtrTy),
479-
ATTRS(NoUnwind, FirstParamReturned))
480-
481-
// WeakReference *swift_weakTakeInit(WeakReference *dest, WeakReference *src);
482-
FUNCTION(NativeWeakTakeInit, swift_weakTakeInit, C_CC,
483-
RETURNS(WeakReferencePtrTy),
484-
ARGS(WeakReferencePtrTy, WeakReferencePtrTy),
485-
ATTRS(NoUnwind, FirstParamReturned))
486-
487-
// WeakReference *swift_weakCopyAssign(WeakReference *dest, WeakReference *src);
488-
FUNCTION(NativeWeakCopyAssign, swift_weakCopyAssign, C_CC,
489-
RETURNS(WeakReferencePtrTy),
490-
ARGS(WeakReferencePtrTy, WeakReferencePtrTy),
491-
ATTRS(NoUnwind, FirstParamReturned))
492-
493-
// WeakReference *swift_weakTakeAssign(WeakReference *dest, WeakReference *src);
494-
FUNCTION(NativeWeakTakeAssign, swift_weakTakeAssign, C_CC,
495-
RETURNS(WeakReferencePtrTy),
496-
ARGS(WeakReferencePtrTy, WeakReferencePtrTy),
497-
ATTRS(NoUnwind, FirstParamReturned))
498-
499-
// void swift_unknownWeakDestroy(WeakReference *object);
500-
FUNCTION(UnknownWeakDestroy, swift_unknownWeakDestroy, C_CC,
501-
RETURNS(VoidTy),
502-
ARGS(WeakReferencePtrTy),
503-
ATTRS(NoUnwind))
504-
505-
// void swift_unknownWeakInit(WeakReference *object, void *value);
506-
FUNCTION(UnknownWeakInit, swift_unknownWeakInit, C_CC,
507-
RETURNS(WeakReferencePtrTy),
508-
ARGS(WeakReferencePtrTy, UnknownRefCountedPtrTy),
509-
ATTRS(NoUnwind, FirstParamReturned))
510-
511-
// WeakReference *swift_unknownWeakAssign(WeakReference *object, void *value);
512-
FUNCTION(UnknownWeakAssign, swift_unknownWeakAssign, C_CC,
513-
RETURNS(WeakReferencePtrTy),
514-
ARGS(WeakReferencePtrTy, UnknownRefCountedPtrTy),
515-
ATTRS(NoUnwind, FirstParamReturned))
516-
517-
// void *swift_unknownWeakLoad(WeakReference *object);
518-
FUNCTION(UnknownWeakLoadStrong, swift_unknownWeakLoadStrong,C_CC,
519-
RETURNS(UnknownRefCountedPtrTy),
520-
ARGS(WeakReferencePtrTy),
521-
ATTRS(NoUnwind))
522-
523-
// void *swift_unknownWeakTake(WeakReference *object);
524-
FUNCTION(UnknownWeakTakeStrong, swift_unknownWeakTakeStrong,C_CC,
525-
RETURNS(UnknownRefCountedPtrTy),
526-
ARGS(WeakReferencePtrTy),
527-
ATTRS(NoUnwind))
528-
529-
// WeakReference *swift_unknownWeakCopyInit(WeakReference *dest, WeakReference *src);
530-
FUNCTION(UnknownWeakCopyInit, swift_unknownWeakCopyInit, C_CC,
531-
RETURNS(WeakReferencePtrTy),
532-
ARGS(WeakReferencePtrTy, WeakReferencePtrTy),
533-
ATTRS(NoUnwind, FirstParamReturned))
534-
535-
// void *swift_unknownWeakTakeInit(WeakReference *dest, WeakReference *src);
536-
FUNCTION(UnknownWeakTakeInit, swift_unknownWeakTakeInit, C_CC,
537-
RETURNS(WeakReferencePtrTy),
538-
ARGS(WeakReferencePtrTy, WeakReferencePtrTy),
539-
ATTRS(NoUnwind, FirstParamReturned))
540-
541-
// WeakReference *swift_unknownWeakCopyAssign(WeakReference *dest, WeakReference *src);
542-
FUNCTION(UnknownWeakCopyAssign, swift_unknownWeakCopyAssign, C_CC,
543-
RETURNS(WeakReferencePtrTy),
544-
ARGS(WeakReferencePtrTy, WeakReferencePtrTy),
545-
ATTRS(NoUnwind, FirstParamReturned))
546-
547-
// WeakReference *swift_unknownWeakTakeAssign(WeakReference *dest, WeakReference *src);
548-
FUNCTION(UnknownWeakTakeAssign, swift_unknownWeakTakeAssign, C_CC,
549-
RETURNS(WeakReferencePtrTy),
550-
ARGS(WeakReferencePtrTy, WeakReferencePtrTy),
551-
ATTRS(NoUnwind, FirstParamReturned))
552-
553-
// void swift_unknownUnownedDestroy(UnownedReference *object);
554-
FUNCTION(UnknownUnownedDestroy, swift_unknownUnownedDestroy, C_CC,
555-
RETURNS(VoidTy),
556-
ARGS(UnownedReferencePtrTy),
557-
ATTRS(NoUnwind))
558-
559-
// UnownedReference *swift_unknownUnownedInit(UnownedReference *object, void *value);
560-
FUNCTION(UnknownUnownedInit, swift_unknownUnownedInit, C_CC,
561-
RETURNS(UnownedReferencePtrTy),
562-
ARGS(UnownedReferencePtrTy, UnknownRefCountedPtrTy),
563-
ATTRS(NoUnwind, FirstParamReturned))
564-
565-
// UnownedReference *swift_unknownUnownedAssign(UnownedReference *object, void *value);
566-
FUNCTION(UnknownUnownedAssign, swift_unknownUnownedAssign, C_CC,
567-
RETURNS(UnownedReferencePtrTy),
568-
ARGS(UnownedReferencePtrTy, UnknownRefCountedPtrTy),
569-
ATTRS(NoUnwind, FirstParamReturned))
570-
571-
// void *swift_unknownUnownedLoad(UnownedReference *object);
572-
FUNCTION(UnknownUnownedLoadStrong, swift_unknownUnownedLoadStrong, C_CC,
573-
RETURNS(UnknownRefCountedPtrTy),
574-
ARGS(UnownedReferencePtrTy),
575-
ATTRS(NoUnwind))
576-
577-
// void *swift_unknownUnownedTake(UnownedReference *object);
578-
FUNCTION(UnknownUnownedTakeStrong, swift_unknownUnownedTakeStrong, C_CC,
579-
RETURNS(UnknownRefCountedPtrTy),
580-
ARGS(UnownedReferencePtrTy),
581-
ATTRS(NoUnwind))
582-
583-
// UnownedReference *swift_unknownUnownedCopyInit(UnownedReference *dest, UnownedReference *src);
584-
FUNCTION(UnknownUnownedCopyInit, swift_unknownUnownedCopyInit, C_CC,
585-
RETURNS(UnownedReferencePtrTy),
586-
ARGS(UnownedReferencePtrTy, UnownedReferencePtrTy),
587-
ATTRS(NoUnwind, FirstParamReturned))
588-
589-
// UnownedReference *swift_unknownUnownedTakeInit(UnownedReference *dest, UnownedReference *src);
590-
FUNCTION(UnknownUnownedTakeInit, swift_unknownUnownedTakeInit, C_CC,
591-
RETURNS(UnownedReferencePtrTy),
592-
ARGS(UnownedReferencePtrTy, UnownedReferencePtrTy),
593-
ATTRS(NoUnwind, FirstParamReturned))
594-
595-
// UnownedReference *swift_unknownUnownedCopyAssign(UnownedReference *dest, UnownedReference *src);
596-
FUNCTION(UnknownUnownedCopyAssign, swift_unknownUnownedCopyAssign, C_CC,
597-
RETURNS(UnownedReferencePtrTy),
598-
ARGS(UnownedReferencePtrTy, UnownedReferencePtrTy),
599-
ATTRS(NoUnwind, FirstParamReturned))
600-
601-
// UnownedReference *swift_unknownUnownedTakeAssign(UnownedReference *dest, UnownedReference *src);
602-
FUNCTION(UnknownUnownedTakeAssign, swift_unknownUnownedTakeAssign, C_CC,
603-
RETURNS(UnownedReferencePtrTy),
604-
ARGS(UnownedReferencePtrTy, UnownedReferencePtrTy),
605-
ATTRS(NoUnwind, FirstParamReturned))
364+
#define NEVER_LOADABLE_CHECKED_REF_STORAGE_HELPER(Name, Nativeness, SymName, UnknownPrefix) \
365+
/* void swift_##SymName##Destroy(Name##Reference *object); */ \
366+
FUNCTION(Nativeness##Name##Destroy, swift_##SymName##Destroy, C_CC, \
367+
RETURNS(VoidTy), \
368+
ARGS(Name##ReferencePtrTy), \
369+
ATTRS(NoUnwind)) \
370+
/* void swift_##SymName##Init(Name##Reference *object, void *value); */ \
371+
FUNCTION(Nativeness##Name##Init, swift_##SymName##Init, C_CC, \
372+
RETURNS(Name##ReferencePtrTy), \
373+
ARGS(Name##ReferencePtrTy, UnknownPrefix##RefCountedPtrTy), \
374+
ATTRS(NoUnwind, FirstParamReturned)) \
375+
/* Name##Reference *swift_##SymName##Assign(Name##Reference *object, void *value); */ \
376+
FUNCTION(Nativeness##Name##Assign, swift_##SymName##Assign, C_CC, \
377+
RETURNS(Name##ReferencePtrTy), \
378+
ARGS(Name##ReferencePtrTy, UnknownPrefix##RefCountedPtrTy), \
379+
ATTRS(NoUnwind, FirstParamReturned)) \
380+
/* void *swift_##SymName##Load(Name##Reference *object); */ \
381+
FUNCTION(Nativeness##Name##LoadStrong, swift_##SymName##LoadStrong,C_CC, \
382+
RETURNS(UnknownPrefix##RefCountedPtrTy), \
383+
ARGS(Name##ReferencePtrTy), \
384+
ATTRS(NoUnwind)) \
385+
/* void *swift_##SymName##Take(Name##Reference *object); */ \
386+
FUNCTION(Nativeness##Name##TakeStrong, swift_##SymName##TakeStrong,C_CC, \
387+
RETURNS(UnknownPrefix##RefCountedPtrTy), \
388+
ARGS(Name##ReferencePtrTy), \
389+
ATTRS(NoUnwind)) \
390+
/* Name##Reference *swift_##SymName##CopyInit(Name##Reference *dest, Name##Reference *src); */ \
391+
FUNCTION(Nativeness##Name##CopyInit, swift_##SymName##CopyInit, C_CC, \
392+
RETURNS(Name##ReferencePtrTy), \
393+
ARGS(Name##ReferencePtrTy, Name##ReferencePtrTy), \
394+
ATTRS(NoUnwind, FirstParamReturned)) \
395+
/* void *swift_##SymName##TakeInit(Name##Reference *dest, Name##Reference *src); */ \
396+
FUNCTION(Nativeness##Name##TakeInit, swift_##SymName##TakeInit, C_CC, \
397+
RETURNS(Name##ReferencePtrTy), \
398+
ARGS(Name##ReferencePtrTy, Name##ReferencePtrTy), \
399+
ATTRS(NoUnwind, FirstParamReturned)) \
400+
/* Name##Reference *swift_##SymName##CopyAssign(Name##Reference *dest, Name##Reference *src); */ \
401+
FUNCTION(Nativeness##Name##CopyAssign, swift_##SymName##CopyAssign, C_CC, \
402+
RETURNS(Name##ReferencePtrTy), \
403+
ARGS(Name##ReferencePtrTy, Name##ReferencePtrTy), \
404+
ATTRS(NoUnwind, FirstParamReturned)) \
405+
/* Name##Reference *swift_##SymName##TakeAssign(Name##Reference *dest, Name##Reference *src); */ \
406+
FUNCTION(Nativeness##Name##TakeAssign, swift_##SymName##TakeAssign, C_CC, \
407+
RETURNS(Name##ReferencePtrTy), \
408+
ARGS(Name##ReferencePtrTy, Name##ReferencePtrTy), \
409+
ATTRS(NoUnwind, FirstParamReturned))
410+
#define NEVER_LOADABLE_CHECKED_REF_STORAGE(Name, name, ...) \
411+
NEVER_LOADABLE_CHECKED_REF_STORAGE_HELPER(Name, Native, name, ) \
412+
NEVER_LOADABLE_CHECKED_REF_STORAGE_HELPER(Name, Unknown, unknown##Name, Unknown)
413+
#define LOADABLE_CHECKED_REF_STORAGE_HELPER(Name, name, Prefix, prefix) \
414+
/* void *swift_##prefix##name##Retain(void *ptr); */ \
415+
FUNCTION(Prefix##Name##Retain, swift_##prefix##name##Retain, C_CC, \
416+
RETURNS(RefCountedPtrTy), \
417+
ARGS(RefCountedPtrTy), \
418+
ATTRS(NoUnwind, FirstParamReturned)) \
419+
/* void swift_##prefix##name##Release(void *ptr); */ \
420+
FUNCTION(Prefix##Name##Release, swift_##prefix##name##Release, C_CC, \
421+
RETURNS(VoidTy), \
422+
ARGS(RefCountedPtrTy), \
423+
ATTRS(NoUnwind)) \
424+
/* void *swift_##prefix##name##RetainStrong(void *ptr); */ \
425+
FUNCTION(Prefix##StrongRetain##Name, swift_##prefix##name##RetainStrong, \
426+
C_CC, \
427+
RETURNS(RefCountedPtrTy), \
428+
ARGS(RefCountedPtrTy), \
429+
ATTRS(NoUnwind, FirstParamReturned)) \
430+
/* void swift_##prefix##name##RetainStrongAndRelease(void *ptr); */ \
431+
FUNCTION(Prefix##StrongRetainAnd##Name##Release, \
432+
swift_##prefix##name##RetainStrongAndRelease, C_CC, \
433+
RETURNS(VoidTy), \
434+
ARGS(RefCountedPtrTy), \
435+
ATTRS(NoUnwind))
436+
#define SOMETIMES_LOADABLE_CHECKED_REF_STORAGE(Name, name, ...) \
437+
NEVER_LOADABLE_CHECKED_REF_STORAGE_HELPER(Name, Unknown, unknown##Name, Unknown) \
438+
LOADABLE_CHECKED_REF_STORAGE_HELPER(Name, name, Native, ) \
439+
LOADABLE_CHECKED_REF_STORAGE_HELPER(Name, name, NonAtomicNative, nonatomic_)
440+
#define ALWAYS_LOADABLE_CHECKED_REF_STORAGE(Name, name, ...) \
441+
LOADABLE_CHECKED_REF_STORAGE_HELPER(Name, name, Native, ) \
442+
LOADABLE_CHECKED_REF_STORAGE_HELPER(Name, name, NonAtomicNative, nonatomic_)
443+
#include "swift/AST/ReferenceStorage.def"
444+
#undef NEVER_LOADABLE_CHECKED_REF_STORAGE_HELPER
445+
#undef LOADABLE_CHECKED_REF_STORAGE_HELPER
606446

607447
// bool swift_isUniquelyReferencedNonObjC(const void *);
608448
FUNCTION(IsUniquelyReferencedNonObjC, swift_isUniquelyReferencedNonObjC,

lib/IRGen/ExtraInhabitants.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
using namespace swift;
2424
using namespace irgen;
2525

26-
static unsigned getNumLowObjCReservedBits(IRGenModule &IGM) {
26+
static unsigned getNumLowObjCReservedBits(const IRGenModule &IGM) {
2727
if (!IGM.ObjCInterop)
2828
return 0;
2929

@@ -37,7 +37,7 @@ static unsigned getNumLowObjCReservedBits(IRGenModule &IGM) {
3737

3838
/// Return the number of extra inhabitants for a pointer that reserves
3939
/// the given number of low bits.
40-
static unsigned getPointerExtraInhabitantCount(IRGenModule &IGM,
40+
static unsigned getPointerExtraInhabitantCount(const IRGenModule &IGM,
4141
unsigned numReservedLowBits) {
4242
// FIXME: We could also make extra inhabitants using spare bits, but we
4343
// probably don't need to.
@@ -48,7 +48,7 @@ static unsigned getPointerExtraInhabitantCount(IRGenModule &IGM,
4848
return std::min((uint64_t)INT_MAX, rawCount);
4949
}
5050

51-
unsigned irgen::getHeapObjectExtraInhabitantCount(IRGenModule &IGM) {
51+
unsigned irgen::getHeapObjectExtraInhabitantCount(const IRGenModule &IGM) {
5252
// This must be consistent with the extra inhabitant count produced
5353
// by the runtime's getHeapObjectExtraInhabitantCount function in
5454
// KnownMetadata.cpp.
@@ -62,7 +62,7 @@ unsigned irgen::getFunctionPointerExtraInhabitantCount(IRGenModule &IGM) {
6262
/*****************************************************************************/
6363

6464
static APInt
65-
getPointerFixedExtraInhabitantValue(IRGenModule &IGM, unsigned bits,
65+
getPointerFixedExtraInhabitantValue(const IRGenModule &IGM, unsigned bits,
6666
unsigned index, unsigned offset,
6767
unsigned numReservedLowBits) {
6868
assert(index < getPointerExtraInhabitantCount(IGM, numReservedLowBits) &&
@@ -75,7 +75,7 @@ getPointerFixedExtraInhabitantValue(IRGenModule &IGM, unsigned bits,
7575
return apValue;
7676
}
7777

78-
APInt irgen::getHeapObjectFixedExtraInhabitantValue(IRGenModule &IGM,
78+
APInt irgen::getHeapObjectFixedExtraInhabitantValue(const IRGenModule &IGM,
7979
unsigned bits,
8080
unsigned index,
8181
unsigned offset) {

lib/IRGen/ExtraInhabitants.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,14 @@ class IRGenModule;
3737
/// Return the number of extra inhabitant representations for heap objects,
3838
/// that is, the number of invalid heap object pointer values that can be used
3939
/// to represent enum tags for enums involving a reference type as a payload.
40-
unsigned getHeapObjectExtraInhabitantCount(IRGenModule &IGM);
40+
unsigned getHeapObjectExtraInhabitantCount(const IRGenModule &IGM);
4141

4242
/// Return an indexed extra inhabitant constant for a heap object pointer.
4343
///
4444
/// If the pointer appears within a larger aggregate, the 'bits' and 'offset'
4545
/// arguments can be used to position the inhabitant within the larger integer
4646
/// constant.
47-
llvm::APInt getHeapObjectFixedExtraInhabitantValue(IRGenModule &IGM,
47+
llvm::APInt getHeapObjectFixedExtraInhabitantValue(const IRGenModule &IGM,
4848
unsigned bits,
4949
unsigned index,
5050
unsigned offset);

0 commit comments

Comments
 (0)