Example #1
0
 /// Add a 32-bit relative offset to a mangled nominal type string
 /// in the typeref reflection section.
 void addNominalRef(const NominalTypeDecl *nominal) {
   if (auto proto = dyn_cast<ProtocolDecl>(nominal)) {
     IRGenMangler mangler;
     SymbolicMangling mangledStr;
     mangledStr.String = mangler.mangleBareProtocol(proto);
     auto mangledName = IGM.getAddrOfStringForTypeRef(mangledStr);
     B.addRelativeAddress(mangledName);
   } else {
     CanType type = nominal->getDeclaredType()->getCanonicalType();
     B.addRelativeAddress(IGM.getTypeRef(type));
   }
 }