MCPcopy Create free account
hub / github.com/MegEngine/MegEngine / versioned_add

Method versioned_add

src/serialization/impl/opr_registry.cpp:184–223  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

182}
183
184void OprRegistryV2::versioned_add(
185 const OprRegistryV2& record, uint8_t min_version, uint8_t max_version,
186 bool dynamic) {
187 mgb_assert(max_version >= min_version);
188
189 auto&& sd = static_data();
190 auto id = record.type_id;
191 uint64_t type_id = id;
192 //! record.type->name is nullptr when MGB_VERBOSE_TYPEINFO_NAME==0
193#if MGB_VERBOSE_TYPEINFO_NAME
194 if (dynamic && record.type && record.type->name) {
195 type_id = MGB_HASH_RUNTIME(std::string(record.type->name));
196 }
197#endif
198 for (uint8_t version = min_version; version <= max_version; version++) {
199 auto&& registry_map = sd.version_id_reg_map[version];
200 auto versioned_record = record;
201 versioned_record.version = version;
202 mgb_assert(
203 registry_map.find(id) == registry_map.end() ||
204 id == dynamic_registry_v2()->type_id,
205 "dduplicated OprRegistryV2 of %s\n", record.name.c_str());
206 auto registry_ins = registry_map.emplace(id, versioned_record);
207 if (!registry_ins.second) {
208 //! the registry is dynamic
209 mgb_assert(!record.converter);
210 registry_map[id] = versioned_record;
211 }
212 //! sometimes the register id and the hash typeinfo is not same, just as
213 //! dynamic Operator
214 if (id != type_id) {
215 mgb_assert(
216 registry_map.find(type_id) == registry_map.end(),
217 "duplicated OprRegistryV2 of %s\n", record.name.c_str());
218 registry_map.emplace(type_id, versioned_record);
219 }
220 auto&& registry_type_map = sd.version_type_reg_map[version];
221 registry_type_map.emplace(record.type, &registry_map[id]);
222 }
223}
224
225void OprRegistry::add_using_dynamic_loader(
226 Typeinfo* type, const std::string& name, const OprDumper& dumper) {

Callers

nothing calls this directly

Calls 4

dynamic_registry_v2Function · 0.85
findMethod · 0.45
endMethod · 0.45
emplaceMethod · 0.45

Tested by

no test coverage detected