[AST] Move getEffectiveAccess calls into SIL.

This commit is contained in:
Huon Wilson
2017-06-19 17:46:45 -07:00
parent 3ac4cec148
commit a0bc3bd0b6
9 changed files with 63 additions and 34 deletions

View File

@@ -21,6 +21,7 @@
#include "swift/SIL/SILWitnessTable.h"
#include "swift/AST/ASTMangler.h"
#include "swift/AST/Module.h"
#include "swift/AST/ProtocolConformance.h"
#include "swift/SIL/SILModule.h"
#include "llvm/ADT/SmallString.h"
@@ -155,3 +156,18 @@ void SILWitnessTable::convertToDefinition(ArrayRef<Entry> entries,
Identifier SILWitnessTable::getIdentifier() const {
return Mod.getASTContext().getIdentifier(Name);
}
bool SILWitnessTable::conformanceIsSerialized(ProtocolConformance *conformance,
ResilienceStrategy strategy,
bool silSerializeWitnessTables) {
auto *nominal = conformance->getType()->getAnyNominal();
// Only serialize if the witness table is sufficiently static, andresilience
// is explicitly enabled for this compilation or if we serialize all eligible
// witness tables.
return (strategy == ResilienceStrategy::Resilient ||
silSerializeWitnessTables) &&
nominal->hasFixedLayout() &&
conformance->getProtocol()->getEffectiveAccess() >=
Accessibility::Public &&
nominal->getEffectiveAccess() >= Accessibility::Public;
}