Coverage for tests/codegen/generated/external_types/__init__.py: 74%
58 statements
« prev ^ index » next coverage.py v7.6.12, created at 2025-02-20 16:25 +0000
« prev ^ index » next coverage.py v7.6.12, created at 2025-02-20 16:25 +0000
1from .exports import e
2from .imports import RootImports, types
3from .intrinsics import _decode_utf8, _encode_utf8, _store
4import ctypes
5import importlib_resources
6import pathlib
7import wasmtime
9class Root:
11 def __init__(self, store: wasmtime.Store, import_object: RootImports) -> None:
12 file = importlib_resources.files() / ('root.core0.wasm')
13 if isinstance(file, pathlib.Path):
14 module = wasmtime.Module.from_file(store.engine, file)
15 else:
16 module = wasmtime.Module(store.engine, file.read_bytes())
17 instance0 = wasmtime.Instance(store, module, []).exports(store)
18 def lowering0_callee(caller: wasmtime.Caller, arg0: int, arg1: int, arg2: int, arg3: int) -> None:
19 variant: types.RuntimeValue
20 if arg0 == 0:
21 ptr = arg1
22 len0 = arg2
23 list = _decode_utf8(self._core_memory0, caller, ptr, len0)
24 variant = types.RuntimeValueId(list)
25 elif arg0 == 1:
26 ptr1 = arg1
27 len2 = arg2
28 list3 = _decode_utf8(self._core_memory0, caller, ptr1, len2)
29 variant = types.RuntimeValueId2(list3)
30 else:
31 raise TypeError("invalid variant discriminant for RuntimeValue")
32 ret = import_object.host.some_fn(variant)
33 if isinstance(ret, types.RuntimeValueId):
34 payload = ret.value
35 _store(ctypes.c_uint8, self._core_memory0, caller, arg3, 0, 0)
36 ptr4, len5 = _encode_utf8(payload, self._realloc0, self._core_memory0, caller)
37 _store(ctypes.c_uint32, self._core_memory0, caller, arg3, 8, len5)
38 _store(ctypes.c_uint32, self._core_memory0, caller, arg3, 4, ptr4)
39 elif isinstance(ret, types.RuntimeValueId2):
40 payload6 = ret.value
41 _store(ctypes.c_uint8, self._core_memory0, caller, arg3, 0, 1)
42 ptr7, len8 = _encode_utf8(payload6, self._realloc0, self._core_memory0, caller)
43 _store(ctypes.c_uint32, self._core_memory0, caller, arg3, 8, len8)
44 _store(ctypes.c_uint32, self._core_memory0, caller, arg3, 4, ptr7)
45 else:
46 raise TypeError("invalid variant specified for RuntimeValue")
47 lowering0_ty = wasmtime.FuncType([wasmtime.ValType.i32(), wasmtime.ValType.i32(), wasmtime.ValType.i32(), wasmtime.ValType.i32(), ], [])
48 trampoline0 = wasmtime.Func(store, lowering0_ty, lowering0_callee, access_caller = True)
49 core_memory0 = instance0["mem"]
50 assert(isinstance(core_memory0, wasmtime.Memory))
51 self._core_memory0 = core_memory0
52 realloc0 = instance0["realloc"]
53 assert(isinstance(realloc0, wasmtime.Func))
54 self._realloc0 = realloc0
55 file = importlib_resources.files() / ('root.core1.wasm')
56 if isinstance(file, pathlib.Path):
57 module = wasmtime.Module.from_file(store.engine, file)
58 else:
59 module = wasmtime.Module(store.engine, file.read_bytes())
60 instance1 = wasmtime.Instance(store, module, [
61 instance0["mem"],
62 trampoline0,
63 ]).exports(store)
64 lift_callee0 = instance1["core-fn"]
65 assert(isinstance(lift_callee0, wasmtime.Func))
66 self.lift_callee0 = lift_callee0
67 def e(self) -> e.E:
68 return e.E(self)