MCPcopy Create free account
hub / github.com/WasmEdge/WasmEdge / serializeHeapType

Method serializeHeapType

lib/loader/serialize/serial_type.cpp:10–60  ·  view source on GitHub ↗

Serialize heap type. See "include/loader/serialize.h".

Source from the content-addressed store, hash-verified

8
9// Serialize heap type. See "include/loader/serialize.h".
10Expect<void>
11Serializer::serializeHeapType(const ValType &Type, ASTNodeAttr From,
12 std::vector<uint8_t> &OutVec) const noexcept {
13 TypeCode Code = Type.getHeapTypeCode();
14 switch (Code) {
15 case TypeCode::ExternRef:
16 if (unlikely(!Conf.hasProposal(Proposal::ReferenceTypes))) {
17 return logNeedProposal(ErrCode::Value::MalformedElemType,
18 Proposal::ReferenceTypes, From);
19 }
20 [[fallthrough]];
21 case TypeCode::FuncRef:
22 OutVec.push_back(static_cast<uint8_t>(Code));
23 return {};
24 case TypeCode::NullFuncRef:
25 case TypeCode::NullExternRef:
26 case TypeCode::NullRef:
27 case TypeCode::AnyRef:
28 case TypeCode::EqRef:
29 case TypeCode::I31Ref:
30 case TypeCode::StructRef:
31 case TypeCode::ArrayRef:
32 if (!Conf.hasProposal(Proposal::GC)) {
33 return logNeedProposal(ErrCode::Value::MalformedRefType, Proposal::GC,
34 From);
35 }
36 OutVec.push_back(static_cast<uint8_t>(Code));
37 return {};
38 case TypeCode::TypeIndex:
39 if (unlikely(!Conf.hasProposal(Proposal::FunctionReferences))) {
40 return logNeedProposal(ErrCode::Value::MalformedRefType,
41 Proposal::FunctionReferences, From);
42 }
43 serializeS33(static_cast<int64_t>(Type.getTypeIndex()), OutVec);
44 return {};
45 case TypeCode::NullExnRef:
46 case TypeCode::ExnRef:
47 if (unlikely(!Conf.hasProposal(Proposal::ExceptionHandling))) {
48 return logNeedProposal(ErrCode::Value::MalformedRefType,
49 Proposal::ExceptionHandling, From);
50 }
51 OutVec.push_back(static_cast<uint8_t>(Code));
52 return {};
53 default:
54 if (likely(Conf.hasProposal(Proposal::ReferenceTypes))) {
55 return logSerializeError(ErrCode::Value::MalformedRefType, From);
56 } else {
57 return logSerializeError(ErrCode::Value::MalformedElemType, From);
58 }
59 }
60}
61
62// Serialize reference type. See "include/loader/serialize.h".
63Expect<void>

Callers

nothing calls this directly

Calls 5

unlikelyFunction · 0.85
getHeapTypeCodeMethod · 0.80
hasProposalMethod · 0.80
likelyFunction · 0.50
getTypeIndexMethod · 0.45

Tested by

no test coverage detected