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

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 

8 

9class Root: 

10 

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)