Commit Graph
100 Commits
Author SHA1 Message Date
Ilya Rezvov d62f945b8b instuction_list parser 2021-04-04 17:30:38 -07:00
Ilya Rezvov b816e04b6d type signature parsing for loop and if blocks 2021-04-04 17:30:38 -07:00
Ilya Rezvov 2d58addefa refactor function parser 2021-04-04 17:30:38 -07:00
Ilya Rezvov 58fd11dfa8 refactor typeuse parser to accomodate raw instructions 2021-04-04 17:30:38 -07:00
Ilya Rezvov 72804d2210 get rid of some shift/reduce conflicts in grammar 2021-04-04 17:30:38 -07:00
Ilya Rezvov b64193b6a9 clean up the parser a little bit and relax arity checks on validation phase 2021-04-04 17:30:38 -07:00
Ilya Rezvov 2a49528a1f simplify grammar and parse block typeuses 2021-04-04 17:30:38 -07:00
Ilya Rezvov 2082a8557f start multivalue proposal implementation for block instruction 2021-04-04 17:30:38 -07:00
Ilya Rezvov f92754b572 change instansiating to be stateful 2021-04-04 17:30:17 -07:00
Ilya Rezvov 2451dc2ddc added line position for failed asserts and implemented mutable globals import/export proposal 2021-04-04 17:29:47 -07:00
Ilya Rezvov ea7769aa9f more grammar fixes 2021-04-04 17:28:16 -07:00
Ilya Rezvov b1874dfcea start multivalue proposal implementation for block instruction 2021-04-04 17:23:43 -07:00
Ilya Rezvov 511bae84e8 report multiple start sections in text representation as parsing error 2021-04-04 17:23:43 -07:00
Ilya Rezvov 1e7afd94fc change instansiating to be stateful 2021-04-04 17:23:43 -07:00
Ilya Rezvov 01e0ab8d44 added line position for failed asserts and implemented mutable globals import/export proposal 2021-04-04 17:23:43 -07:00
Ilya Rezvov 20c2623b1c fix align bug for I64Load32U and start mutable globals export/import proposal 2021-04-04 17:23:43 -07:00
Ilya Rezvov d61926e18a implement sign-extension operators proposal 2021-04-04 17:23:43 -07:00
Ilya Rezvov 4fb4da0f2f more grammar fixes 2021-04-04 17:23:43 -07:00
Ilya Rezvov d01691338f add parsing of canonical nan, reinterpret instructions and check for mem idents uniqueness 2021-04-04 17:23:43 -07:00
Ilya Rezvov 88a31548b8 replace hardcoded tests with submodule to the official testsuit 2021-04-04 17:23:43 -07:00
Ilya Rezvov bcb83798cb implemented fast-path for aligned addresses on memory read/write 2020-02-19 16:07:18 -08:00
Ilya Rezvov 915b705ed2 using primitive's ByteArray for memory instance's backend storage in the interpreter instead of IOVector 2020-02-19 14:36:03 -08:00
Ilya Rezvov f8d008bb04 small clean up 2020-01-14 17:00:41 -08:00
Ilya Rezvov d7e1b803f5 fix build and tests for ghc >8.6 2020-01-13 21:56:06 -08:00
Ilya Rezvov 1245707afa fix cabal file 2018-06-21 08:32:20 -07:00
Ilya Rezvov 709c8d994c bump version to 1.0 tag 2018-06-20 16:33:52 -07:00
Ilya Rezvov db18150ec9 expose label type from builder 2018-06-11 20:20:06 -07:00
Ilya Rezvov f862c74bf9 fix typos in sign suffixes 2018-06-02 11:01:01 -07:00
Ilya Rezvov 85dfac08f1 enforce type constraints for conversion operations 2018-06-02 10:57:49 -07:00
Ilya Rezvov 4dccc4279e add all instructions 2018-06-02 10:36:24 -07:00
Ilya Rezvov 2aeb960cb1 introduce declaration+implementation mechanic for mutual recursive functions definitions 2018-05-31 14:06:33 -07:00
Ilya Rezvov 1cf668408a unify name convention for signed/unsigned operations 2018-05-27 15:29:31 -07:00
Ilya Rezvov ddf89644ce make inc and dec polymorphic 2018-05-27 14:49:49 -07:00
Ilya Rezvov 3926e5b9f1 make export combinator polymorphic 2018-05-27 11:59:27 -07:00
Ilya Rezvov 330fb93f0f introduce polymorphic result types for combinators 2018-05-27 11:17:26 -07:00
Ilya Rezvov 95318c86fc wrap instruction for builder 2018-05-25 11:30:08 -07:00
Ilya Rezvov 4ec5a0fcbf two more helpers for builder 2018-05-24 16:22:05 -07:00
Ilya Rezvov 9d1ce5a630 more instructions for builder 2018-05-24 11:36:34 -07:00
Ilya Rezvov a0bdcae94a fix memarg binary parsing 2018-05-23 11:48:45 -07:00
Ilya Rezvov 705b43af34 add more operations 2018-05-23 09:38:21 -07:00
Ilya Rezvov 05ad97a30e fix binary generation 2018-05-22 18:47:10 -07:00
Ilya Rezvov ba6f26b06d add export directives 2018-05-22 15:06:39 -07:00
Ilya Rezvov 96dd6a8a40 export nop instruction 2018-05-18 11:42:02 -07:00
Ilya Rezvov d2d767d122 add partial memory instructions for builder 2018-05-17 13:28:34 -07:00
Ilya Rezvov 9ca5353b0f extend supported instructions set 2018-05-16 14:45:34 -07:00
Ilya Rezvov edf072ed2a add more generators 2018-05-13 15:12:13 -07:00
Ilya Rezvov 5986526167 implement more operations for generation 2018-05-13 10:37:09 -07:00
Ilya Rezvov 2db6b2db41 add if expression form 2018-05-13 09:41:29 -07:00
Ilya Rezvov 1330eb41f6 start builder api 2018-05-12 22:37:50 -07:00
Ilya Rezvov 8ca3319ba4 add wasm executable 2018-05-10 13:39:43 -07:00
Ilya Rezvov 4601666eab stabilize inline exports extraction algorithm 2018-04-26 20:19:19 -07:00
Ilya Rezvov 0a7b417605 reduce deep of code 2018-04-25 13:47:11 -07:00
Ilya Rezvov abc546723d reduce code duplication 2018-04-25 11:16:41 -07:00
Ilya Rezvov fc2eb97647 use ExceptT transformer to clarify interpreter code 2018-04-25 10:49:58 -07:00
Ilya Rezvov 70f207d02d extract storing code to common function 2018-04-24 21:07:12 -07:00
Ilya Rezvov a619e1b742 extract load instructions to generic function 2018-04-24 19:08:31 -07:00
Ilya Rezvov 9d14c233c5 fix parsing of multiple folded instructions in if predicate expression 2018-04-24 16:12:52 -07:00
Ilya Rezvov 081d6ded2a use single rule for all index refences 2018-04-24 15:37:43 -07:00
Ilya Rezvov 6157cbb492 update readme 2018-04-21 11:28:03 -07:00
Ilya Rezvov 5356e0b435 pass all tests 2018-04-21 11:24:05 -07:00
Ilya Rezvov d0b5535bb2 pass all assert_trap tests 2018-04-21 10:58:34 -07:00
Ilya Rezvov c073d85d74 calculate offset without uint32 overflow 2018-04-21 10:46:29 -07:00
Ilya Rezvov 56f9aea99d check if target and local type of call_indirect are the same 2018-04-21 10:39:23 -07:00
Ilya Rezvov 7726eb7505 protect memory access with traps 2018-04-21 10:11:37 -07:00
Ilya Rezvov e99c7c427b check sign-sensitive division arguments for trap conditions 2018-04-21 09:40:18 -07:00
Ilya Rezvov 49719b64cd implement assert_trap assertion 2018-04-21 08:59:31 -07:00
Ilya Rezvov 3c882a97d1 check validity of all data and elem segments before updating store on initialization 2018-04-20 19:24:39 -07:00
Ilya Rezvov 108eb0c0ee check imported values types 2018-04-20 19:11:09 -07:00
Ilya Rezvov a8459fb541 do not grow tables on initialization. again 2018-04-19 16:25:27 -07:00
Ilya Rezvov 80f61158d7 do not grow memory for data segments 2018-04-19 16:17:28 -07:00
Ilya Rezvov a7962d69c2 implemented assert_unlinkable assertion 2018-04-19 13:32:07 -07:00
Ilya Rezvov 1720730df5 pass assert_malformed tests 2018-04-18 22:42:47 -07:00
Ilya Rezvov 78e59dea8f add length constraint check for LEB128 encoded integers 2018-04-16 21:47:38 -07:00
Ilya Rezvov fbadde5c3a improve alignment parsing 2018-04-16 21:02:26 -07:00
Ilya Rezvov 7dfbe2775e fix call_inderect type use parsing 2018-04-16 20:51:04 -07:00
Ilya Rezvov b27ce14618 check if length of code section equals of length of function type section 2018-04-16 20:11:46 -07:00
Ilya Rezvov b27a89cc17 fix int literals parsing 2018-04-16 20:00:20 -07:00
Ilya Rezvov cb7fee3d45 check imports appear before any other definitions 2018-04-16 16:08:38 -07:00
Ilya Rezvov f046ab3cfa check if aux type signature match referred type 2018-04-16 15:54:10 -07:00
Ilya Rezvov 6c4183c930 check if optional labels match for block instructions 2018-04-16 15:37:28 -07:00
Ilya Rezvov 035ffe05da check if name is valid utf8 string 2018-04-16 14:35:05 -07:00
Ilya Rezvov be47aa7d43 fail on too long offset and align constants 2018-04-15 19:08:27 -07:00
Ilya Rezvov a1ae58b5f7 make parser monadic 2018-04-15 18:54:39 -07:00
Ilya Rezvov a5e16c6e7b add MIT license 2018-04-15 16:28:04 -07:00
Ilya Rezvov 09f4b15d2c implemented assert_malformed assertion and added NFData instances for all parsing types 2018-04-15 16:16:11 -07:00
Ilya Rezvov 73124a3eff pass all assert_invalid tests 2018-04-14 17:11:47 -07:00
Ilya Rezvov d7dc05b157 update tests from core repo 2018-04-14 16:35:18 -07:00
Ilya Rezvov 681e0e3eca fix br_if typing 2018-04-14 16:31:21 -07:00
Ilya Rezvov d0b1092064 simplify validation algorithm 2018-04-14 13:38:09 -07:00
Ilya Rezvov 23ed83a42e fix parsing of functions with incorrect type indexes 2018-04-13 16:56:25 -07:00
Ilya Rezvov 16bbc3d198 implement assert_invalid assertion 2018-04-13 14:25:23 -07:00
Ilya Rezvov b2a0d2c86e pass return_nan tests 2018-04-12 14:17:01 -07:00
Ilya Rezvov 2955456e26 pass all assert_return tests 2018-04-11 21:15:56 -07:00
Ilya Rezvov 7a4735bbfc fix some conversions 2018-04-11 15:29:51 -07:00
Ilya Rezvov d64854aac1 clean up labels on exit from blocks and return correct type for i64 unary operations 2018-04-11 15:24:27 -07:00
Ilya Rezvov 11b6f4fdc8 fix if instruction execution 2018-04-11 14:54:05 -07:00
Ilya Rezvov 82c0433e5d fix corner cases for float instructions 2018-04-11 11:08:41 -07:00
Ilya Rezvov e0d9eeb51f fix tee_local semantic 2018-04-10 21:59:54 -07:00
Ilya Rezvov c644578d8b fix memory growing behavior 2018-04-10 21:25:54 -07:00
Ilya Rezvov c75900a2c8 fix loading of signed ints from memory 2018-04-10 21:09:58 -07:00