Make BitCodeAbbrev ownership explicit using shared_ptr rather than IntrusiveRefCntPtr
If this is a problem for anyone (shared_ptr is two pointers in size, whereas IntrusiveRefCntPtr is 1 - and the ref count control block that make_shared adds is probably larger than the one int in RefCountedBase) I'd prefer to address this by adding a lower-overhead version of shared_ptr (possibly refactoring IntrusiveRefCntPtr into such a thing) to avoid the intrusiveness - this allows memory ownership to remain orthogonal to types and at least to me, seems to make code easier to understand (since no implicit ownership acquisition can happen). llvm-svn: 291006
This commit is contained in:
@@ -101,10 +101,10 @@ TEST(BitstreamReaderTest, readRecordWithBlobWhileStreaming) {
|
||||
Stream.Emit(Magic, 32);
|
||||
Stream.EnterSubblock(BlockID, 3);
|
||||
|
||||
BitCodeAbbrev *Abbrev = new BitCodeAbbrev();
|
||||
auto Abbrev = std::make_shared<BitCodeAbbrev>();
|
||||
Abbrev->Add(BitCodeAbbrevOp(RecordID));
|
||||
Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob));
|
||||
AbbrevID = Stream.EmitAbbrev(Abbrev);
|
||||
AbbrevID = Stream.EmitAbbrev(std::move(Abbrev));
|
||||
unsigned Record[] = {RecordID};
|
||||
Stream.EmitRecordWithBlob(AbbrevID, makeArrayRef(Record), BlobIn);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user