binaryen
binaryen copied to clipboard
Add validations for imports during instantiation
- At instantiation time, check the types of exports against their corresponding imports, and trap if they don't match.
- Exported memories and tables must be a subtype of the corresponding import.
- Function types aren't checked yet because we don't have a way to check the exact type of function re-exports; i.e. exact-func-imports.wast would fail to instantiate on line 85.
- Copy
exact-func-import.wastfrom the testsuite repo, which now passes. - Fix
ref_func.wastandtags.wastwhich also otherwise fail with the new validations. - Fix getMemoryInstanceInfo to follow import chains rather than just one import.
- Also fix getMemorySize to read the runtime page size from imports when applicable. This is necessary to keep track of page sizes correctly when we import a memory that's later grown e.g. in test/spec/imports.wast.
- Fixes
imports0,imports2,linking0,linking3and partially fixesimports,imports3andmemory64.
As followups, we should improve the handling of the "spectest" module by implementing the implicit definition described by the spec, and we should add tracking for exact types of function re-exports so that we can enable import-time type checking for function types.