Lines Matching +full:write +full:- +full:1
1 //===-- APINotesWriter.cpp - API Notes Writer -------------------*- C++ -*-===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
27 llvm::SmallVector<std::pair<llvm::VersionTuple, T>, 1>;
38 /// Information about contexts (Objective-C classes or protocols or C++
56 /// Information about Objective-C properties.
62 llvm::SmallVector<std::pair<VersionTuple, ObjCPropertyInfo>, 1>>
65 /// Information about Objective-C methods.
70 llvm::SmallVector<std::pair<VersionTuple, ObjCMethodInfo>, 1>>
77 llvm::SmallVector<std::pair<VersionTuple, CXXMethodInfo>, 1>>
88 llvm::SmallVector<std::pair<VersionTuple, GlobalVariableInfo>, 1>>
96 llvm::SmallVector<std::pair<VersionTuple, GlobalFunctionInfo>, 1>>
103 unsigned, llvm::SmallVector<std::pair<VersionTuple, EnumConstantInfo>, 1>>
110 llvm::SmallVector<std::pair<VersionTuple, TagInfo>, 1>>
117 llvm::SmallVector<std::pair<VersionTuple, TypedefInfo>, 1>>
127 return Known->second; in getIdentifier()
130 Known = IdentifierIDs.insert({Identifier, IdentifierIDs.size() + 1}).first; in getIdentifier()
131 return Known->second; in getIdentifier()
146 return Known->second; in getSelector()
150 return Known->second; in getSelector()
201 OS.write(Buffer.data(), Buffer.size()); in writeToStream()
229 Buffer.resize(Name.size() + 1); in emitRecordID()
231 memcpy(Buffer.data() + 1, Name.data(), Name.size()); in emitRecordID()
280 ModuleName.emit(Scratch, this->ModuleName); in writeControlBlock()
284 SourceFile.emit(Scratch, this->SourceFile->getSize(), in writeControlBlock()
285 this->SourceFile->getModificationTime()); in writeControlBlock()
290 /// Used to serialize the on-disk identifier table.
308 writer.write<uint16_t>(KeyLength); in EmitKeyDataLength()
309 writer.write<uint16_t>(DataLength); in EmitKeyDataLength()
317 writer.write<uint32_t>(Data); in EmitData()
338 llvm::support::endian::write<uint32_t>(BlobStream, 0, in writeIdentifierBlock()
348 /// Used to serialize the on-disk Objective-C context table.
368 writer.write<uint16_t>(KeyLength); in EmitKeyDataLength()
369 writer.write<uint16_t>(DataLength); in EmitKeyDataLength()
375 writer.write<uint32_t>(Key.parentContextID); in EmitKey()
376 writer.write<uint8_t>(Key.contextKind); in EmitKey()
377 writer.write<uint32_t>(Key.contextID); in EmitKey()
382 writer.write<uint32_t>(Data); in EmitData()
391 /// on-disk hash tables.
428 descriptor = 1; in emitVersionTuple()
431 writer.write<uint8_t>(descriptor); in emitVersionTuple()
433 // Write the components. in emitVersionTuple()
434 writer.write<uint32_t>(VT.getMajor()); in emitVersionTuple()
436 writer.write<uint32_t>(*minor); in emitVersionTuple()
438 writer.write<uint32_t>(*subminor); in emitVersionTuple()
440 writer.write<uint32_t>(*build); in emitVersionTuple()
452 const std::pair<VersionTuple, T> &RHS) -> bool { in emitVersionedInfo()
459 writer.write<uint16_t>(VI.size()); in emitVersionedInfo()
466 /// On-disk hash table info key base for handling versioned data.
479 llvm::SmallVector<std::pair<llvm::VersionTuple, UnversionedDataType>, 1>;
493 writer.write<uint16_t>(KeyLength); in EmitKeyDataLength()
494 writer.write<uint16_t>(DataLength); in EmitKeyDataLength()
516 payload <<= 1; in emitCommonEntityInfo()
518 payload <<= 1; in emitCommonEntityInfo()
521 writer.write<uint8_t>(payload); in emitCommonEntityInfo()
523 writer.write<uint16_t>(CEI.UnavailableMsg.size()); in emitCommonEntityInfo()
524 OS.write(CEI.UnavailableMsg.c_str(), CEI.UnavailableMsg.size()); in emitCommonEntityInfo()
526 writer.write<uint16_t>(CEI.SwiftName.size()); in emitCommonEntityInfo()
527 OS.write(CEI.SwiftName.c_str(), CEI.SwiftName.size()); in emitCommonEntityInfo()
531 /// on-disk hash tables.
537 // in on-disk hash tables.
539 return 2 + (CTI.getSwiftBridge() ? CTI.getSwiftBridge()->size() : 0) + 2 + in getCommonTypeInfoSize()
540 (CTI.getNSErrorDomain() ? CTI.getNSErrorDomain()->size() : 0) + in getCommonTypeInfoSize()
550 writer.write<uint16_t>(swiftBridge->size() + 1); in emitCommonTypeInfo()
551 OS.write(swiftBridge->c_str(), swiftBridge->size()); in emitCommonTypeInfo()
553 writer.write<uint16_t>(0); in emitCommonTypeInfo()
556 writer.write<uint16_t>(nsErrorDomain->size() + 1); in emitCommonTypeInfo()
557 OS.write(nsErrorDomain->c_str(), CTI.getNSErrorDomain()->size()); in emitCommonTypeInfo()
559 writer.write<uint16_t>(0); in emitCommonTypeInfo()
563 /// Used to serialize the on-disk Objective-C property table.
571 writer.write<uint32_t>(Key); in EmitKey()
579 return getCommonTypeInfoSize(OCI) + 1; in getUnversionedInfoSize()
587 payload |= (0x01 << 1) | (uint8_t)swiftImportAsNonGeneric.value(); in emitUnversionedInfo()
590 payload |= (0x01 << 1) | (uint8_t)swiftObjCMembers.value(); in emitUnversionedInfo()
594 payload = (payload << 1) | (OCI.hasDesignatedInits() ? 1 : 0); in emitUnversionedInfo()
618 llvm::support::endian::write<uint32_t>(BlobStream, 0, in writeContextBlock()
637 llvm::support::endian::write<uint32_t>(BlobStream, 0, in writeContextBlock()
649 /// on-disk hash tables.
660 bytes[0] = 1; in emitVariableInfo()
661 bytes[1] = static_cast<uint8_t>(*nullable); in emitVariableInfo()
666 OS.write(reinterpret_cast<const char *>(bytes), 2); in emitVariableInfo()
669 writer.write<uint16_t>(VI.getType().size()); in emitVariableInfo()
670 OS.write(VI.getType().data(), VI.getType().size()); in emitVariableInfo()
673 /// Used to serialize the on-disk Objective-C property table.
685 writer.write<uint32_t>(std::get<0>(Key)); in EmitKey()
686 writer.write<uint32_t>(std::get<1>(Key)); in EmitKey()
687 writer.write<uint8_t>(std::get<2>(Key)); in EmitKey()
695 return getVariableInfoSize(OPI) + 1; in getUnversionedInfoSize()
703 flags |= 1 << 0; in emitUnversionedInfo()
704 flags |= value.value() << 1; in emitUnversionedInfo()
728 llvm::support::endian::write<uint32_t>(BlobStream, 0, in writeObjCPropertyBlock()
742 /// Used to serialize the on-disk Objective-C method table.
754 writer.write<uint32_t>(std::get<0>(Key)); in EmitKey()
755 writer.write<uint32_t>(std::get<1>(Key)); in EmitKey()
756 writer.write<uint8_t>(std::get<2>(Key)); in EmitKey()
764 return getFunctionInfoSize(OMI) + 1; in getUnversionedInfoSize()
770 flags = (flags << 1) | OMI.DesignatedInit; in emitUnversionedInfo()
771 flags = (flags << 1) | OMI.RequiredInit; in emitUnversionedInfo()
772 writer.write<uint8_t>(flags); in emitUnversionedInfo()
778 /// Used to serialize the on-disk C++ method table.
789 writer.write<uint32_t>(Key.parentContextID); in EmitKey()
790 writer.write<uint32_t>(Key.nameID); in EmitKey()
824 llvm::support::endian::write<uint32_t>(BlobStream, 0, in writeObjCMethodBlock()
851 llvm::support::endian::write<uint32_t>(BlobStream, 0, in writeCXXMethodBlock()
862 /// Used to serialize the on-disk Objective-C selector table.
883 writer.write<uint16_t>(KeyLength); in EmitKeyDataLength()
884 writer.write<uint16_t>(DataLength); in EmitKeyDataLength()
890 writer.write<uint16_t>(Key.NumArgs); in EmitKey()
892 writer.write<uint32_t>(Identifier); in EmitKey()
897 writer.write<uint32_t>(Data); in EmitData()
919 llvm::support::endian::write<uint32_t>(BlobStream, 0, in writeObjCSelectorBlock()
930 /// Used to serialize the on-disk global variable table.
941 writer.write<uint32_t>(Key.parentContextID); in EmitKey()
942 writer.write<uint32_t>(Key.nameID); in EmitKey()
976 llvm::support::endian::write<uint32_t>(BlobStream, 0, in writeGlobalVariableBlock()
988 return getVariableInfoSize(PI) + 1; in getParamInfoSize()
1002 flags |= static_cast<uint8_t>(RCC.value()) + 1; in emitParamInfo()
1005 writer.write<uint8_t>(flags); in emitParamInfo()
1008 /// Retrieve the serialized size of the given FunctionInfo, for use in on-disk
1027 flags |= static_cast<uint8_t>(RCC.value()) + 1; in emitFunctionInfo()
1031 writer.write<uint8_t>(flags); in emitFunctionInfo()
1032 writer.write<uint8_t>(FI.NumAdjustedNullable); in emitFunctionInfo()
1033 writer.write<uint64_t>(FI.NullabilityPayload); in emitFunctionInfo()
1035 writer.write<uint16_t>(FI.Params.size()); in emitFunctionInfo()
1039 writer.write<uint16_t>(FI.ResultType.size()); in emitFunctionInfo()
1040 writer.write(ArrayRef<char>{FI.ResultType.data(), FI.ResultType.size()}); in emitFunctionInfo()
1043 /// Used to serialize the on-disk global function table.
1054 writer.write<uint32_t>(Key.parentContextID); in EmitKey()
1055 writer.write<uint32_t>(Key.nameID); in EmitKey()
1089 llvm::support::endian::write<uint32_t>(BlobStream, 0, in writeGlobalFunctionBlock()
1100 /// Used to serialize the on-disk global enum constant.
1109 writer.write<uint32_t>(Key); in EmitKey()
1143 llvm::support::endian::write<uint32_t>(BlobStream, 0, in writeEnumConstantBlock()
1168 writer.write<uint32_t>(Key.parentContextID); in EmitKey()
1169 writer.write<IdentifierID>(Key.nameID); in EmitKey()
1185 /// Used to serialize the on-disk tag table.
1189 return 2 + (TI.SwiftImportAs ? TI.SwiftImportAs->size() : 0) + in getUnversionedInfoSize()
1190 2 + (TI.SwiftRetainOp ? TI.SwiftRetainOp->size() : 0) + in getUnversionedInfoSize()
1191 2 + (TI.SwiftReleaseOp ? TI.SwiftReleaseOp->size() : 0) + in getUnversionedInfoSize()
1200 Flags |= static_cast<uint8_t>(extensibility.value()) + 1; in emitUnversionedInfo()
1201 assert((Flags < (1 << 2)) && "must fit in two bits"); in emitUnversionedInfo()
1206 Flags |= (value.value() << 1 | 1 << 0); in emitUnversionedInfo()
1208 writer.write<uint8_t>(Flags); in emitUnversionedInfo()
1211 writer.write<uint8_t>(*Copyable ? kSwiftCopyable : kSwiftNonCopyable); in emitUnversionedInfo()
1213 writer.write<uint8_t>(0); in emitUnversionedInfo()
1216 writer.write<uint16_t>(ImportAs->size() + 1); in emitUnversionedInfo()
1217 OS.write(ImportAs->c_str(), ImportAs->size()); in emitUnversionedInfo()
1219 writer.write<uint16_t>(0); in emitUnversionedInfo()
1222 writer.write<uint16_t>(RetainOp->size() + 1); in emitUnversionedInfo()
1223 OS.write(RetainOp->c_str(), RetainOp->size()); in emitUnversionedInfo()
1225 writer.write<uint16_t>(0); in emitUnversionedInfo()
1228 writer.write<uint16_t>(ReleaseOp->size() + 1); in emitUnversionedInfo()
1229 OS.write(ReleaseOp->c_str(), ReleaseOp->size()); in emitUnversionedInfo()
1231 writer.write<uint16_t>(0); in emitUnversionedInfo()
1256 llvm::support::endian::write<uint32_t>(BlobStream, 0, in writeTagBlock()
1267 /// Used to serialize the on-disk typedef table.
1272 return 1 + getCommonTypeInfoSize(TI); in getUnversionedInfoSize()
1280 Flags |= static_cast<uint8_t>(*swiftWrapper) + 1; in emitUnversionedInfo()
1282 writer.write<uint8_t>(Flags); in emitUnversionedInfo()
1306 llvm::support::endian::write<uint32_t>(BlobStream, 0, in writeTypedefBlock()
1324 Implementation->writeToStream(OS); in writeToStream()
1331 IdentifierID NameID = Implementation->getIdentifier(Name); in addContext()
1333 uint32_t RawParentCtxID = ParentCtxID ? ParentCtxID->Value : -1; in addContext()
1335 auto Known = Implementation->Contexts.find(Key); in addContext()
1336 if (Known == Implementation->Contexts.end()) { in addContext()
1337 unsigned NextID = Implementation->Contexts.size() + 1; in addContext()
1340 Known = Implementation->Contexts in addContext()
1345 Implementation->ContextNames[NextID] = NameID; in addContext()
1346 Implementation->ParentContexts[NextID] = RawParentCtxID; in addContext()
1350 auto &VersionedVec = Known->second.second; in addContext()
1363 return ContextID(Known->second.first); in addContext()
1370 IdentifierID NameID = Implementation->getIdentifier(Name); in addObjCProperty()
1372 ->ObjCProperties[std::make_tuple(CtxID.Value, NameID, IsInstanceProperty)] in addObjCProperty()
1380 SelectorID SelID = Implementation->getSelector(Selector); in addObjCMethod()
1383 Implementation->ObjCMethods[Key].push_back({SwiftVersion, Info}); in addObjCMethod()
1388 assert(Implementation->ParentContexts.contains(CtxID.Value)); in addObjCMethod()
1389 uint32_t ParentCtxID = Implementation->ParentContexts[CtxID.Value]; in addObjCMethod()
1392 Implementation->ContextNames[CtxID.Value]); in addObjCMethod()
1393 assert(Implementation->Contexts.contains(CtxKey)); in addObjCMethod()
1394 auto &VersionedVec = Implementation->Contexts[CtxKey].second; in addObjCMethod()
1414 IdentifierID NameID = Implementation->getIdentifier(Name); in addCXXMethod()
1416 Implementation->CXXMethods[Key].push_back({SwiftVersion, Info}); in addCXXMethod()
1423 IdentifierID VariableID = Implementation->getIdentifier(Name); in addGlobalVariable()
1425 Implementation->GlobalVariables[Key].push_back({SwiftVersion, Info}); in addGlobalVariable()
1432 IdentifierID NameID = Implementation->getIdentifier(Name); in addGlobalFunction()
1434 Implementation->GlobalFunctions[Key].push_back({SwiftVersion, Info}); in addGlobalFunction()
1440 IdentifierID EnumConstantID = Implementation->getIdentifier(Name); in addEnumConstant()
1441 Implementation->EnumConstants[EnumConstantID].push_back({SwiftVersion, Info}); in addEnumConstant()
1446 IdentifierID TagID = Implementation->getIdentifier(Name); in addTag()
1448 Implementation->Tags[Key].push_back({SwiftVersion, Info}); in addTag()
1454 IdentifierID TypedefID = Implementation->getIdentifier(Name); in addTypedef()
1456 Implementation->Typedefs[Key].push_back({SwiftVersion, Info}); in addTypedef()