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

Method loadAlias

lib/loader/ast/component/component_alias.cpp:29–60  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

27}
28
29Expect<void> Loader::loadAlias(AST::Component::Alias &Alias) {
30 auto ReportError = [this](auto E) {
31 return logLoadError(E, FMgr.getLastOffset(), ASTNodeAttr::Comp_Alias);
32 };
33 // alias ::= s:<sort> t:<aliastarget> => (alias t (s))
34 // aliastarget ::= 0x00 i:<instanceidx> n:<string> => export i n
35 // | 0x01 i:<core:instanceidx> n:<core:name> => core export i n
36 // | 0x02 ct:<u32> idx:<u32> => outer ct idx
37
38 EXPECTED_TRY(loadSort(Alias.getSort()).map_error(ReportError));
39 EXPECTED_TRY(uint8_t Flag, FMgr.readByte().map_error(ReportError));
40 switch (Flag) {
41 case 0x00:
42 case 0x01: {
43 EXPECTED_TRY(uint32_t Idx, FMgr.readU32().map_error(ReportError));
44 EXPECTED_TRY(std::string Name, FMgr.readName().map_error(ReportError));
45 Alias.setExport(Idx, Name);
46 break;
47 }
48 case 0x02: {
49 EXPECTED_TRY(uint32_t Ct, FMgr.readU32().map_error(ReportError));
50 EXPECTED_TRY(uint32_t Idx, FMgr.readU32().map_error(ReportError));
51 Alias.setOuter(Ct, Idx);
52 break;
53 }
54 default:
55 return logLoadError(ErrCode::Value::MalformedAliasTarget,
56 FMgr.getLastOffset(), ASTNodeAttr::Comp_Alias);
57 }
58 Alias.setTargetType(static_cast<AST::Component::Alias::TargetType>(Flag));
59 return {};
60}
61
62} // namespace Loader
63} // namespace WasmEdge

Callers

nothing calls this directly

Calls 5

getLastOffsetMethod · 0.80
setOuterMethod · 0.80
setTargetTypeMethod · 0.80
EXPECTED_TRYFunction · 0.70
setExportMethod · 0.45

Tested by

no test coverage detected