|
7 | 7 | from typing import Callable, Optional, Generic, TypeVar, List, Union, Tuple, cast as cast_type, Sequence
|
8 | 8 | from ._exportable import AsExtern
|
9 | 9 | from ._store import Storelike
|
10 |
| -from ._bindings import wasmtime_val_raw_t |
| 10 | +from ._bindings import wasmtime_val_raw_t, wasm_valtype_kind |
| 11 | +from ._ffi import ( |
| 12 | + WASMTIME_I32, |
| 13 | + WASMTIME_I64, |
| 14 | + WASMTIME_F32, |
| 15 | + WASMTIME_F64, |
| 16 | + WASMTIME_V128, |
| 17 | + WASMTIME_FUNCREF, |
| 18 | + WASMTIME_EXTERNREF, |
| 19 | +) |
| 20 | + |
11 | 21 |
|
12 | 22 | T = TypeVar('T')
|
13 | 23 | FUNCTIONS: "Slab[Tuple]"
|
14 | 24 | LAST_EXCEPTION: Optional[Exception] = None
|
15 | 25 |
|
| 26 | +val_id2attr = { |
| 27 | + WASMTIME_I32.value: 'i32', |
| 28 | + WASMTIME_I64.value: 'i64', |
| 29 | + WASMTIME_F32.value: 'f32', |
| 30 | + WASMTIME_F64.value: 'f64', |
| 31 | + WASMTIME_V128.value: 'v128', |
| 32 | + WASMTIME_FUNCREF.value: 'funcref', |
| 33 | + WASMTIME_EXTERNREF.value: 'externref', |
| 34 | +} |
| 35 | + |
| 36 | +def get_valtype_attr(ty): |
| 37 | + return val_id2attr[wasm_valtype_kind(ty._ptr)] |
16 | 38 |
|
17 | 39 | class Func:
|
18 | 40 | _func: ffi.wasmtime_func_t
|
@@ -84,9 +106,9 @@ def _init_call(self, ty):
|
84 | 106 | ty_results = ty.results
|
85 | 107 | params_n = len(ty_params)
|
86 | 108 | results_n = len(ty_results)
|
87 |
| - self._params_str = (str(i) for i in ty_params) |
88 |
| - self._results_str = (str(i) for i in ty_results) |
89 |
| - self._results_str0 = str(ty_results[0]) if results_n else None |
| 109 | + self._params_str = (get_valtype_attr(i) for i in ty_params) |
| 110 | + self._results_str = (get_valtype_attr(i) for i in ty_results) |
| 111 | + self._results_str0 = get_valtype_attr(ty_results[0]) if results_n else None |
90 | 112 | self._params_n = params_n
|
91 | 113 | self._results_n = results_n
|
92 | 114 | n = max(params_n, results_n)
|
|
0 commit comments