diff options
| author | nsfisis <nsfisis@gmail.com> | 2024-07-12 22:39:20 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2024-07-13 08:23:06 +0900 |
| commit | e94a046a548795b8675bc109c87413de6bca53e7 (patch) | |
| tree | 9958efead32039de87f3564c77a7b09f978a13ef /src/WebAssembly/Execution/Runtime.php | |
| parent | d1c268b76f65e69ea708096d5023c4d731cff594 (diff) | |
| download | php-waddiwasi-e94a046a548795b8675bc109c87413de6bca53e7.tar.gz php-waddiwasi-e94a046a548795b8675bc109c87413de6bca53e7.tar.zst php-waddiwasi-e94a046a548795b8675bc109c87413de6bca53e7.zip | |
feat: add Linker class
Diffstat (limited to 'src/WebAssembly/Execution/Runtime.php')
| -rw-r--r-- | src/WebAssembly/Execution/Runtime.php | 28 |
1 files changed, 7 insertions, 21 deletions
diff --git a/src/WebAssembly/Execution/Runtime.php b/src/WebAssembly/Execution/Runtime.php index 07dc0d0..c4a78c8 100644 --- a/src/WebAssembly/Execution/Runtime.php +++ b/src/WebAssembly/Execution/Runtime.php @@ -39,7 +39,7 @@ use function sqrt; use function unpack; use const PHP_INT_MIN; -final class Runtime +final class Runtime implements ExporterInterface { /** * @var array<string, array{int, int}> @@ -54,28 +54,9 @@ final class Runtime } /** - * @param array<string, array<string, Extern>> $imports - */ - public static function instantiate( - Store $store, - Module $module, - array $imports, - ): self { - $externVals = []; - foreach ($module->imports as $import) { - $extern = $imports[$import->module][$import->name] ?? null; - if ($extern === null) { - throw new RuntimeException("instantiate: import not found: {$import->module}::{$import->name}"); - } - $externVals[] = $store->register($extern); - } - return self::doInstantiate($store, $module, $externVals); - } - - /** * @param list<ExternVal> $externVals */ - private static function doInstantiate( + public static function instantiate( Store $store, Module $module, array $externVals, @@ -159,6 +140,11 @@ final class Runtime return new self($store, $stack, $moduleInst); } + public function exports(): array + { + return $this->module->exports; + } + public function getExport(string $name): ?ExternVal { foreach ($this->module->exports as $export) { |
