mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
Privatize the PointerType factory.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78130 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
e55fef36a9
commit
84e99f3c25
@ -130,6 +130,7 @@ struct LLVMContextImpl {
|
|||||||
|
|
||||||
TypeMap<ArrayValType, ArrayType> ArrayTypes;
|
TypeMap<ArrayValType, ArrayType> ArrayTypes;
|
||||||
TypeMap<VectorValType, VectorType> VectorTypes;
|
TypeMap<VectorValType, VectorType> VectorTypes;
|
||||||
|
TypeMap<PointerValType, PointerType> PointerTypes;
|
||||||
|
|
||||||
LLVMContextImpl() : TheTrueVal(0), TheFalseVal(0) { }
|
LLVMContextImpl() : TheTrueVal(0), TheFalseVal(0) { }
|
||||||
};
|
};
|
||||||
|
@ -901,8 +901,6 @@ bool StructType::isValidElementType(const Type *ElemTy) {
|
|||||||
// Pointer Type Factory...
|
// Pointer Type Factory...
|
||||||
//
|
//
|
||||||
|
|
||||||
static ManagedStatic<TypeMap<PointerValType, PointerType> > PointerTypes;
|
|
||||||
|
|
||||||
PointerType *PointerType::get(const Type *ValueType, unsigned AddressSpace) {
|
PointerType *PointerType::get(const Type *ValueType, unsigned AddressSpace) {
|
||||||
assert(ValueType && "Can't get a pointer to <null> type!");
|
assert(ValueType && "Can't get a pointer to <null> type!");
|
||||||
assert(ValueType != Type::VoidTy &&
|
assert(ValueType != Type::VoidTy &&
|
||||||
@ -912,12 +910,14 @@ PointerType *PointerType::get(const Type *ValueType, unsigned AddressSpace) {
|
|||||||
|
|
||||||
PointerType *PT = 0;
|
PointerType *PT = 0;
|
||||||
|
|
||||||
|
LLVMContextImpl *pImpl = ValueType->getContext().pImpl;
|
||||||
|
|
||||||
sys::SmartScopedLock<true> L(*TypeMapLock);
|
sys::SmartScopedLock<true> L(*TypeMapLock);
|
||||||
PT = PointerTypes->get(PVT);
|
PT = pImpl->PointerTypes.get(PVT);
|
||||||
|
|
||||||
if (!PT) {
|
if (!PT) {
|
||||||
// Value not found. Derive a new type!
|
// Value not found. Derive a new type!
|
||||||
PointerTypes->add(PVT, PT = new PointerType(ValueType, AddressSpace));
|
pImpl->PointerTypes.add(PVT, PT = new PointerType(ValueType, AddressSpace));
|
||||||
}
|
}
|
||||||
#ifdef DEBUG_MERGE_TYPES
|
#ifdef DEBUG_MERGE_TYPES
|
||||||
DOUT << "Derived new type: " << *PT << "\n";
|
DOUT << "Derived new type: " << *PT << "\n";
|
||||||
@ -1158,11 +1158,13 @@ void StructType::typeBecameConcrete(const DerivedType *AbsTy) {
|
|||||||
//
|
//
|
||||||
void PointerType::refineAbstractType(const DerivedType *OldType,
|
void PointerType::refineAbstractType(const DerivedType *OldType,
|
||||||
const Type *NewType) {
|
const Type *NewType) {
|
||||||
PointerTypes->RefineAbstractType(this, OldType, NewType);
|
LLVMContextImpl *pImpl = OldType->getContext().pImpl;
|
||||||
|
pImpl->PointerTypes.RefineAbstractType(this, OldType, NewType);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PointerType::typeBecameConcrete(const DerivedType *AbsTy) {
|
void PointerType::typeBecameConcrete(const DerivedType *AbsTy) {
|
||||||
PointerTypes->TypeBecameConcrete(this, AbsTy);
|
LLVMContextImpl *pImpl = AbsTy->getContext().pImpl;
|
||||||
|
pImpl->PointerTypes.TypeBecameConcrete(this, AbsTy);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SequentialType::indexValid(const Value *V) const {
|
bool SequentialType::indexValid(const Value *V) const {
|
||||||
|
Loading…
Reference in New Issue
Block a user