* Define Instruction Set.
* WIP
* WIP 2
* Tests
* Working
* Bunch of other tests.
* WIP
* WIP
* Use Vec instead of VecDeque.
* Calibrate the limits.
* Clean
* Clean
* Another round of cleaning.
* Ignore traces.
* Optimize value stack
* Optimize a bit more.
* Cache memory index.
* Inline always instruction dispatch function.
* Comments.
* Clean
* Clean
* Use vector to keep unresolved references.
* Estimate resulting size.
* do refactoring
* Validate the locals count in the begging
* Introduce Keep and DropKeep structs in isa
* Rename/Split Validator into Reader
* Document stack layout
* Remove println!
* Fix typo.
* Use .last / .last_mut in stack
* Update docs for BrTable.
* Review fixes.
* Merge.
* Add an assert that stack is empty after the exec
Fixes#63
Fix is simple: all labels refered by the br_table instruction must have same value type (or NoResult in case if they don't have result). So we just take the default label and check other labels against it.
These limits seems to be picked arbitrary, and I just made it arbitrary larger.
We need to reconsider these limits, ideally providing to user a way to customize the limits.
FWIW, When the last time I've tried to run gcc's torture testsuite with wasmi it also bumped into this limit.
Fixes#41.
* Initial implementation
* Not use grow as it is makes debug builds very slow
* Use Pages::BYTE_SIZE for LINEAR_MEMORY_PAGE_SIZE
* Tidy docs.
* Use memory_units from git.