MCPcopy Create free account
hub / github.com/WasmVM/WasmVM / parse_plaininstr

Method parse_plaininstr

src/lib/parse/instr_parse.cpp:26–56  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

24}
25
26WasmInstr ParseContext::parse_plaininstr() {
27 Token kw = tok_.expect(TokenType::Keyword, "instruction");
28 const std::string& name = kw.text;
29 if (name == "unreachable" || name == "nop" || name == "return" ||
30 name == "br" || name == "br_if" || name == "br_table" ||
31 name == "call" || name == "call_indirect" ||
32 name == "call_ref" || name == "return_call" ||
33 name == "return_call_indirect" || name == "return_call_ref" ||
34 name == "throw" || name == "throw_ref")
35 return parse_controlinstr(name);
36 if (name == "ref.null" || name == "ref.is_null" || name == "ref.func" ||
37 name == "ref.eq" || name == "ref.as_non_null" || name == "ref.i31" ||
38 name == "ref.test" || name == "ref.cast" ||
39 name == "i31.get_s" || name == "i31.get_u" ||
40 name == "any.convert_extern" || name == "extern.convert_any" ||
41 name == "br_on_null" || name == "br_on_non_null" ||
42 name == "br_on_cast" || name == "br_on_cast_fail")
43 return parse_referenceinstr(name);
44 if (name == "drop" || name == "select")
45 return parse_parametricinstr(name);
46 if (name.starts_with("local.") || name.starts_with("global."))
47 return parse_variableinstr(name);
48 if (name.starts_with("table.") || name == "elem.drop")
49 return parse_tableinstr(name);
50 if (name == "data.drop" || name.starts_with("memory.") ||
51 name.find(".load") != std::string::npos || name.find(".store") != std::string::npos)
52 return parse_memoryinstr(name);
53 if (name.starts_with("struct.") || name.starts_with("array."))
54 return parse_gcinstr(name);
55 return parse_numericinstr(name);
56}
57
58// ── Block instructions (non-folded form) ─────────────────────────────────────
59

Callers

nothing calls this directly

Calls 2

expectMethod · 0.80
starts_withMethod · 0.80

Tested by

no test coverage detected