mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-18 11:24:01 +00:00
Use IntrusiveRefCntPtr to manage the lifetime of BitCodeAbbrevs.
This doesn't change the interface or gives additional safety but removes a ton of retain/release boilerplate. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217778 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -18,6 +18,7 @@
|
||||
#ifndef LLVM_BITCODE_BITCODES_H
|
||||
#define LLVM_BITCODE_BITCODES_H
|
||||
|
||||
#include "llvm/ADT/IntrusiveRefCntPtr.h"
|
||||
#include "llvm/ADT/SmallVector.h"
|
||||
#include "llvm/Support/DataTypes.h"
|
||||
#include "llvm/Support/ErrorHandling.h"
|
||||
@ -161,16 +162,12 @@ template <> struct isPodLike<BitCodeAbbrevOp> { static const bool value=true; };
|
||||
/// BitCodeAbbrev - This class represents an abbreviation record. An
|
||||
/// abbreviation allows a complex record that has redundancy to be stored in a
|
||||
/// specialized format instead of the fully-general, fully-vbr, format.
|
||||
class BitCodeAbbrev {
|
||||
class BitCodeAbbrev : public RefCountedBase<BitCodeAbbrev> {
|
||||
SmallVector<BitCodeAbbrevOp, 32> OperandList;
|
||||
unsigned char RefCount; // Number of things using this.
|
||||
~BitCodeAbbrev() {}
|
||||
friend class RefCountedBase; // Only RefCountedBase is allowed to delete.
|
||||
|
||||
public:
|
||||
BitCodeAbbrev() : RefCount(1) {}
|
||||
|
||||
void addRef() { ++RefCount; }
|
||||
void dropRef() { if (--RefCount == 0) delete this; }
|
||||
|
||||
unsigned getNumOperandInfos() const {
|
||||
return static_cast<unsigned>(OperandList.size());
|
||||
}
|
||||
|
Reference in New Issue
Block a user