@@ -40,33 +40,6 @@ class Wasm3Engine final : public WasmEngine
4040
4141namespace
4242{
43- M3ValueType translate_valtype (char input)
44- {
45- if (input == ' i' )
46- return M3ValueType::c_m3Type_i32;
47- else if (input == ' I' )
48- return M3ValueType::c_m3Type_i64;
49- else
50- throw std::runtime_error{" invalid type" };
51- }
52-
53- std::pair<std::vector<M3ValueType>, std::vector<M3ValueType>> translate_signature (
54- std::string_view signature)
55- {
56- const auto delimiter_pos = signature.find (' :' );
57- assert (delimiter_pos != std::string_view::npos);
58- const auto inputs = signature.substr (0 , delimiter_pos);
59- const auto outputs = signature.substr (delimiter_pos + 1 );
60-
61- std::vector<M3ValueType> input_types;
62- std::vector<M3ValueType> output_types;
63- std::transform (
64- std::begin (inputs), std::end (inputs), std::back_inserter (input_types), translate_valtype);
65- std::transform (std::begin (outputs), std::end (outputs), std::back_inserter (output_types),
66- translate_valtype);
67- return {std::move (input_types), std::move (output_types)};
68- }
69-
7043const void * env_adler32 (
7144 IM3Runtime /* runtime*/ , IM3ImportContext /* context*/ , uint64_t * stack, void * mem)
7245{
@@ -152,7 +125,8 @@ std::optional<WasmEngine::FuncRef> Wasm3Engine::find_function(
152125
153126 std::vector<M3ValueType> inputs;
154127 std::vector<M3ValueType> outputs;
155- std::tie (inputs, outputs) = translate_signature (signature);
128+ std::tie (inputs, outputs) = translate_function_signature<M3ValueType, M3ValueType::c_m3Type_i32,
129+ M3ValueType::c_m3Type_i64>(signature);
156130
157131 if (inputs.size () != m3_GetArgCount (function))
158132 return std::nullopt ;
0 commit comments