forked from OSchip/llvm-project
Minor refinement of VTableBuilder.h: fix wrong indentation, rename a struct field with a more appropriate name
llvm-svn: 194202
This commit is contained in:
parent
e7af1ec97e
commit
9e7f505515
|
@ -233,23 +233,21 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
vtable_component_iterator vtable_component_begin() const {
|
vtable_component_iterator vtable_component_begin() const {
|
||||||
return VTableComponents.get();
|
return VTableComponents.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
vtable_component_iterator vtable_component_end() const {
|
vtable_component_iterator vtable_component_end() const {
|
||||||
return VTableComponents.get()+NumVTableComponents;
|
return VTableComponents.get() + NumVTableComponents;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t getNumVTableThunks() const {
|
uint64_t getNumVTableThunks() const { return NumVTableThunks; }
|
||||||
return NumVTableThunks;
|
|
||||||
}
|
|
||||||
|
|
||||||
vtable_thunk_iterator vtable_thunk_begin() const {
|
vtable_thunk_iterator vtable_thunk_begin() const {
|
||||||
return VTableThunks.get();
|
return VTableThunks.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
vtable_thunk_iterator vtable_thunk_end() const {
|
vtable_thunk_iterator vtable_thunk_end() const {
|
||||||
return VTableThunks.get()+NumVTableThunks;
|
return VTableThunks.get() + NumVTableThunks;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t getAddressPoint(BaseSubobject Base) const {
|
uint64_t getAddressPoint(BaseSubobject Base) const {
|
||||||
|
@ -414,27 +412,27 @@ public:
|
||||||
|
|
||||||
/// This is the offset of the vfptr from the start of the last vbase, or the
|
/// This is the offset of the vfptr from the start of the last vbase, or the
|
||||||
/// complete type if there are no virtual bases.
|
/// complete type if there are no virtual bases.
|
||||||
CharUnits VFTableOffset;
|
CharUnits VFPtrOffset;
|
||||||
|
|
||||||
/// Method's index in the vftable.
|
/// Method's index in the vftable.
|
||||||
uint64_t Index;
|
uint64_t Index;
|
||||||
|
|
||||||
MethodVFTableLocation()
|
MethodVFTableLocation()
|
||||||
: VBTableIndex(0), VBase(0), VFTableOffset(CharUnits::Zero()),
|
: VBTableIndex(0), VBase(0), VFPtrOffset(CharUnits::Zero()),
|
||||||
Index(0) {}
|
Index(0) {}
|
||||||
|
|
||||||
MethodVFTableLocation(uint64_t VBTableIndex, const CXXRecordDecl *VBase,
|
MethodVFTableLocation(uint64_t VBTableIndex, const CXXRecordDecl *VBase,
|
||||||
CharUnits VFTableOffset, uint64_t Index)
|
CharUnits VFPtrOffset, uint64_t Index)
|
||||||
: VBTableIndex(VBTableIndex), VBase(VBase),
|
: VBTableIndex(VBTableIndex), VBase(VBase),
|
||||||
VFTableOffset(VFTableOffset), Index(Index) {}
|
VFPtrOffset(VFPtrOffset), Index(Index) {}
|
||||||
|
|
||||||
bool operator<(const MethodVFTableLocation &other) const {
|
bool operator<(const MethodVFTableLocation &other) const {
|
||||||
if (VBTableIndex != other.VBTableIndex) {
|
if (VBTableIndex != other.VBTableIndex) {
|
||||||
assert(VBase != other.VBase);
|
assert(VBase != other.VBase);
|
||||||
return VBTableIndex < other.VBTableIndex;
|
return VBTableIndex < other.VBTableIndex;
|
||||||
}
|
}
|
||||||
if (VFTableOffset != other.VFTableOffset)
|
if (VFPtrOffset != other.VFPtrOffset)
|
||||||
return VFTableOffset < other.VFTableOffset;
|
return VFPtrOffset < other.VFPtrOffset;
|
||||||
if (Index != other.Index)
|
if (Index != other.Index)
|
||||||
return Index < other.Index;
|
return Index < other.Index;
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -3317,7 +3317,7 @@ void MicrosoftVTableContext::dumpMethodLocations(
|
||||||
IndicesMap[I->second] = MethodName;
|
IndicesMap[I->second] = MethodName;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!I->second.VFTableOffset.isZero() || I->second.VBTableIndex != 0)
|
if (!I->second.VFPtrOffset.isZero() || I->second.VBTableIndex != 0)
|
||||||
HasNonzeroOffset = true;
|
HasNonzeroOffset = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3333,7 +3333,7 @@ void MicrosoftVTableContext::dumpMethodLocations(
|
||||||
I = IndicesMap.begin(),
|
I = IndicesMap.begin(),
|
||||||
E = IndicesMap.end();
|
E = IndicesMap.end();
|
||||||
I != E; ++I) {
|
I != E; ++I) {
|
||||||
CharUnits VFPtrOffset = I->first.VFTableOffset;
|
CharUnits VFPtrOffset = I->first.VFPtrOffset;
|
||||||
uint64_t VBIndex = I->first.VBTableIndex;
|
uint64_t VBIndex = I->first.VBTableIndex;
|
||||||
if (HasNonzeroOffset &&
|
if (HasNonzeroOffset &&
|
||||||
(VFPtrOffset != LastVFPtrOffset || VBIndex != LastVBIndex)) {
|
(VFPtrOffset != LastVFPtrOffset || VBIndex != LastVBIndex)) {
|
||||||
|
|
|
@ -128,7 +128,7 @@ public:
|
||||||
// In this case, we just use a generic pointer type.
|
// In this case, we just use a generic pointer type.
|
||||||
// FIXME: might want to have a more precise type in the non-virtual
|
// FIXME: might want to have a more precise type in the non-virtual
|
||||||
// multiple inheritance case.
|
// multiple inheritance case.
|
||||||
if (ML.VBase || !ML.VFTableOffset.isZero())
|
if (ML.VBase || !ML.VFPtrOffset.isZero())
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return MD->getParent();
|
return MD->getParent();
|
||||||
|
@ -600,7 +600,7 @@ llvm::Value *MicrosoftCXXABI::adjustThisArgumentForVirtualCall(
|
||||||
|
|
||||||
unsigned AS = cast<llvm::PointerType>(This->getType())->getAddressSpace();
|
unsigned AS = cast<llvm::PointerType>(This->getType())->getAddressSpace();
|
||||||
llvm::Type *charPtrTy = CGF.Int8Ty->getPointerTo(AS);
|
llvm::Type *charPtrTy = CGF.Int8Ty->getPointerTo(AS);
|
||||||
CharUnits StaticOffset = ML.VFTableOffset;
|
CharUnits StaticOffset = ML.VFPtrOffset;
|
||||||
if (ML.VBase) {
|
if (ML.VBase) {
|
||||||
bool AvoidVirtualOffset = false;
|
bool AvoidVirtualOffset = false;
|
||||||
if (isa<CXXDestructorDecl>(MD) && GD.getDtorType() == Dtor_Base) {
|
if (isa<CXXDestructorDecl>(MD) && GD.getDtorType() == Dtor_Base) {
|
||||||
|
@ -723,7 +723,7 @@ llvm::Value *MicrosoftCXXABI::adjustThisParameterInVirtualFunctionPrologue(
|
||||||
|
|
||||||
MicrosoftVTableContext::MethodVFTableLocation ML =
|
MicrosoftVTableContext::MethodVFTableLocation ML =
|
||||||
CGM.getMicrosoftVTableContext().getMethodVFTableLocation(LookupGD);
|
CGM.getMicrosoftVTableContext().getMethodVFTableLocation(LookupGD);
|
||||||
CharUnits Adjustment = ML.VFTableOffset;
|
CharUnits Adjustment = ML.VFPtrOffset;
|
||||||
if (ML.VBase) {
|
if (ML.VBase) {
|
||||||
const ASTRecordLayout &DerivedLayout =
|
const ASTRecordLayout &DerivedLayout =
|
||||||
CGF.getContext().getASTRecordLayout(MD->getParent());
|
CGF.getContext().getASTRecordLayout(MD->getParent());
|
||||||
|
|
Loading…
Reference in New Issue