diff options
-rw-r--r-- | src/prebuilt/wasm-ast-lexer-gen.c | 2426 | ||||
-rw-r--r-- | src/wasm-ast-checker.c | 139 | ||||
-rw-r--r-- | src/wasm-ast-lexer.c | 4 | ||||
-rw-r--r-- | src/wasm-binary-reader-interpreter.c | 2 | ||||
-rw-r--r-- | test/parse/module/bad-memory-segment-address-negative.txt | 9 | ||||
-rw-r--r-- | test/parse/module/bad-memory-segment-address-oob.txt | 9 | ||||
-rw-r--r-- | test/parse/module/bad-memory-segment-end-oob.txt | 9 | ||||
-rw-r--r-- | test/parse/module/bad-memory-segment-overlap.txt | 10 | ||||
-rw-r--r-- | test/parse/module/bad-table-too-many.txt | 3 | ||||
-rw-r--r-- | test/spec/block.txt | 44 | ||||
-rw-r--r-- | test/spec/br_table.txt | 30 | ||||
-rw-r--r-- | test/spec/call.txt | 16 | ||||
-rw-r--r-- | test/spec/call_indirect.txt | 24 | ||||
-rw-r--r-- | test/spec/func.txt | 16 | ||||
-rw-r--r-- | test/spec/func_ptrs.txt | 10 | ||||
-rw-r--r-- | test/spec/globals.txt | 2 | ||||
-rw-r--r-- | test/spec/memory.txt | 86 | ||||
-rw-r--r-- | test/spec/skip-stack-guard-page.txt | 5 | ||||
-rw-r--r-- | test/spec/unwind.txt | 5 | ||||
m--------- | third_party/testsuite | 0 |
20 files changed, 1459 insertions, 1390 deletions
diff --git a/src/prebuilt/wasm-ast-lexer-gen.c b/src/prebuilt/wasm-ast-lexer-gen.c index 4f4ef870..a914e454 100644 --- a/src/prebuilt/wasm-ast-lexer-gen.c +++ b/src/prebuilt/wasm-ast-lexer-gen.c @@ -2871,29 +2871,30 @@ yy371: yy372: yych = *++lexer->cursor; if (yych <= '/') goto yy50; - if (yych <= '9') goto yy521; + if (yych <= '0') goto yy521; + if (yych <= '9') goto yy523; goto yy50; yy373: yych = *++lexer->cursor; - if (yych == 'c') goto yy524; + if (yych == 'c') goto yy525; goto yy50; yy374: yych = *++lexer->cursor; - if (yych == '_') goto yy526; + if (yych == '_') goto yy527; goto yy50; yy375: yych = *++lexer->cursor; - if (yych == 'l') goto yy527; + if (yych == 'l') goto yy528; goto yy50; yy376: yych = *++lexer->cursor; if (yych <= 'l') goto yy50; - if (yych <= 'm') goto yy528; - if (yych <= 'n') goto yy529; + if (yych <= 'm') goto yy529; + if (yych <= 'n') goto yy530; goto yy50; yy377: yych = *++lexer->cursor; - if (yych == 't') goto yy530; + if (yych == 't') goto yy531; goto yy50; yy378: ++lexer->cursor; @@ -2902,31 +2903,31 @@ yy378: } #line 434 "src/wasm-ast-lexer.c" { RETURN(EXPORT); } -#line 2906 "src/prebuilt/wasm-ast-lexer-gen.c" +#line 2907 "src/prebuilt/wasm-ast-lexer-gen.c" yy380: yych = *++lexer->cursor; - if (yych == 's') goto yy531; + if (yych == 's') goto yy532; goto yy50; yy381: yych = *++lexer->cursor; - if (yych == 'd') goto yy533; + if (yych == 'd') goto yy534; goto yy50; yy382: yych = *++lexer->cursor; - if (yych == 'i') goto yy535; + if (yych == 'i') goto yy536; goto yy50; yy383: yych = *++lexer->cursor; - if (yych == 'n') goto yy536; - if (yych == 'p') goto yy537; + if (yych == 'n') goto yy537; + if (yych == 'p') goto yy538; goto yy50; yy384: yych = *++lexer->cursor; - if (yych == 'm') goto yy538; + if (yych == 'm') goto yy539; goto yy50; yy385: yych = *++lexer->cursor; - if (yych == 'v') goto yy539; + if (yych == 'v') goto yy540; goto yy50; yy386: ++lexer->cursor; @@ -2935,10 +2936,10 @@ yy386: } #line 379 "src/wasm-ast-lexer.c" { OPCODE(F32_EQ); RETURN(COMPARE); } -#line 2939 "src/prebuilt/wasm-ast-lexer-gen.c" +#line 2940 "src/prebuilt/wasm-ast-lexer-gen.c" yy388: yych = *++lexer->cursor; - if (yych == 'o') goto yy541; + if (yych == 'o') goto yy542; goto yy50; yy389: ++lexer->cursor; @@ -2947,7 +2948,7 @@ yy389: } #line 389 "src/wasm-ast-lexer.c" { OPCODE(F32_GE); RETURN(COMPARE); } -#line 2951 "src/prebuilt/wasm-ast-lexer-gen.c" +#line 2952 "src/prebuilt/wasm-ast-lexer-gen.c" yy391: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { @@ -2955,7 +2956,7 @@ yy391: } #line 387 "src/wasm-ast-lexer.c" { OPCODE(F32_GT); RETURN(COMPARE); } -#line 2959 "src/prebuilt/wasm-ast-lexer-gen.c" +#line 2960 "src/prebuilt/wasm-ast-lexer-gen.c" yy393: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { @@ -2963,10 +2964,10 @@ yy393: } #line 385 "src/wasm-ast-lexer.c" { OPCODE(F32_LE); RETURN(COMPARE); } -#line 2967 "src/prebuilt/wasm-ast-lexer-gen.c" +#line 2968 "src/prebuilt/wasm-ast-lexer-gen.c" yy395: yych = *++lexer->cursor; - if (yych == 'a') goto yy542; + if (yych == 'a') goto yy543; goto yy50; yy396: ++lexer->cursor; @@ -2975,18 +2976,18 @@ yy396: } #line 383 "src/wasm-ast-lexer.c" { OPCODE(F32_LT); RETURN(COMPARE); } -#line 2979 "src/prebuilt/wasm-ast-lexer-gen.c" +#line 2980 "src/prebuilt/wasm-ast-lexer-gen.c" yy398: yych = *++lexer->cursor; - if (yych == 'x') goto yy543; + if (yych == 'x') goto yy544; goto yy50; yy399: yych = *++lexer->cursor; - if (yych == 'n') goto yy545; + if (yych == 'n') goto yy546; goto yy50; yy400: yych = *++lexer->cursor; - if (yych == 'l') goto yy547; + if (yych == 'l') goto yy548; goto yy50; yy401: ++lexer->cursor; @@ -3011,9 +3012,9 @@ yy401: if (yych <= '`') { if (yych != ']') goto yy49; } else { - if (yych <= 'a') goto yy549; + if (yych <= 'a') goto yy550; if (yych <= 'f') goto yy49; - goto yy550; + goto yy551; } } else { if (yych <= '|') { @@ -3026,47 +3027,47 @@ yy401: yy402: #line 381 "src/wasm-ast-lexer.c" { OPCODE(F32_NE); RETURN(COMPARE); } -#line 3030 "src/prebuilt/wasm-ast-lexer-gen.c" +#line 3031 "src/prebuilt/wasm-ast-lexer-gen.c" yy403: yych = *++lexer->cursor; - if (yych == 'i') goto yy552; + if (yych == 'i') goto yy553; goto yy50; yy404: yych = *++lexer->cursor; - if (yych == 'r') goto yy553; + if (yych == 'r') goto yy554; goto yy50; yy405: yych = *++lexer->cursor; - if (yych == 'o') goto yy554; + if (yych == 'o') goto yy555; goto yy50; yy406: yych = *++lexer->cursor; - if (yych == 'b') goto yy555; + if (yych == 'b') goto yy556; goto yy50; yy407: yych = *++lexer->cursor; - if (yych == 'u') goto yy557; + if (yych == 'u') goto yy558; goto yy50; yy408: yych = *++lexer->cursor; - if (yych == 's') goto yy558; + if (yych == 's') goto yy559; goto yy50; yy409: yych = *++lexer->cursor; - if (yych == 'd') goto yy560; + if (yych == 'd') goto yy561; goto yy50; yy410: yych = *++lexer->cursor; - if (yych == 'i') goto yy562; + if (yych == 'i') goto yy563; goto yy50; yy411: yych = *++lexer->cursor; - if (yych == 'n') goto yy563; - if (yych == 'p') goto yy564; + if (yych == 'n') goto yy564; + if (yych == 'p') goto yy565; goto yy50; yy412: yych = *++lexer->cursor; - if (yych == 'v') goto yy565; + if (yych == 'v') goto yy566; goto yy50; yy413: ++lexer->cursor; @@ -3075,10 +3076,10 @@ yy413: } #line 380 "src/wasm-ast-lexer.c" { OPCODE(F64_EQ); RETURN(COMPARE); } -#line 3079 "src/prebuilt/wasm-ast-lexer-gen.c" +#line 3080 "src/prebuilt/wasm-ast-lexer-gen.c" yy415: yych = *++lexer->cursor; - if (yych == 'o') goto yy567; + if (yych == 'o') goto yy568; goto yy50; yy416: ++lexer->cursor; @@ -3087,7 +3088,7 @@ yy416: } #line 390 "src/wasm-ast-lexer.c" { OPCODE(F64_GE); RETURN(COMPARE); } -#line 3091 "src/prebuilt/wasm-ast-lexer-gen.c" +#line 3092 "src/prebuilt/wasm-ast-lexer-gen.c" yy418: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { @@ -3095,7 +3096,7 @@ yy418: } #line 388 "src/wasm-ast-lexer.c" { OPCODE(F64_GT); RETURN(COMPARE); } -#line 3099 "src/prebuilt/wasm-ast-lexer-gen.c" +#line 3100 "src/prebuilt/wasm-ast-lexer-gen.c" yy420: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { @@ -3103,10 +3104,10 @@ yy420: } #line 386 "src/wasm-ast-lexer.c" { OPCODE(F64_LE); RETURN(COMPARE); } -#line 3107 "src/prebuilt/wasm-ast-lexer-gen.c" +#line 3108 "src/prebuilt/wasm-ast-lexer-gen.c" yy422: yych = *++lexer->cursor; - if (yych == 'a') goto yy568; + if (yych == 'a') goto yy569; goto yy50; yy423: ++lexer->cursor; @@ -3115,18 +3116,18 @@ yy423: } #line 384 "src/wasm-ast-lexer.c" { OPCODE(F64_LT); RETURN(COMPARE); } -#line 3119 "src/prebuilt/wasm-ast-lexer-gen.c" +#line 3120 "src/prebuilt/wasm-ast-lexer-gen.c" yy425: yych = *++lexer->cursor; - if (yych == 'x') goto yy569; + if (yych == 'x') goto yy570; goto yy50; yy426: yych = *++lexer->cursor; - if (yych == 'n') goto yy571; + if (yych == 'n') goto yy572; goto yy50; yy427: yych = *++lexer->cursor; - if (yych == 'l') goto yy573; + if (yych == 'l') goto yy574; goto yy50; yy428: ++lexer->cursor; @@ -3151,9 +3152,9 @@ yy428: if (yych <= '`') { if (yych != ']') goto yy49; } else { - if (yych <= 'a') goto yy575; + if (yych <= 'a') goto yy576; if (yych <= 'f') goto yy49; - goto yy576; + goto yy577; } } else { if (yych <= '|') { @@ -3166,38 +3167,38 @@ yy428: yy429: #line 382 "src/wasm-ast-lexer.c" { OPCODE(F64_NE); RETURN(COMPARE); } -#line 3170 "src/prebuilt/wasm-ast-lexer-gen.c" +#line 3171 "src/prebuilt/wasm-ast-lexer-gen.c" yy430: yych = *++lexer->cursor; - if (yych == 'o') goto yy578; + if (yych == 'o') goto yy579; goto yy50; yy431: yych = *++lexer->cursor; - if (yych == 'i') goto yy579; + if (yych == 'i') goto yy580; goto yy50; yy432: yych = *++lexer->cursor; - if (yych == 'r') goto yy580; + if (yych == 'r') goto yy581; goto yy50; yy433: yych = *++lexer->cursor; - if (yych == 'o') goto yy581; + if (yych == 'o') goto yy582; goto yy50; yy434: yych = *++lexer->cursor; - if (yych == 'b') goto yy582; + if (yych == 'b') goto yy583; goto yy50; yy435: yych = *++lexer->cursor; - if (yych == 'u') goto yy584; + if (yych == 'u') goto yy585; goto yy50; yy436: yych = *++lexer->cursor; - if (yych == 'o') goto yy585; + if (yych == 'o') goto yy586; goto yy50; yy437: yych = *++lexer->cursor; - if (yych == 'c') goto yy586; + if (yych == 'c') goto yy587; goto yy50; yy438: ++lexer->cursor; @@ -3206,34 +3207,34 @@ yy438: } #line 425 "src/wasm-ast-lexer.c" { RETURN(GLOBAL); } -#line 3210 "src/prebuilt/wasm-ast-lexer-gen.c" +#line 3211 "src/prebuilt/wasm-ast-lexer-gen.c" yy440: yych = *++lexer->cursor; - if (yych == 'e') goto yy587; + if (yych == 'e') goto yy588; goto yy50; yy441: yych = *++lexer->cursor; - if (yych == 'd') goto yy588; + if (yych == 'd') goto yy589; goto yy50; yy442: yych = *++lexer->cursor; - if (yych == 'd') goto yy590; + if (yych == 'd') goto yy591; goto yy50; yy443: yych = *++lexer->cursor; - if (yych == 'z') goto yy592; + if (yych == 'z') goto yy593; goto yy50; yy444: yych = *++lexer->cursor; - if (yych == 'n') goto yy594; + if (yych == 'n') goto yy595; goto yy50; yy445: yych = *++lexer->cursor; - if (yych == 'z') goto yy595; + if (yych == 'z') goto yy596; goto yy50; yy446: yych = *++lexer->cursor; - if (yych == 'v') goto yy597; + if (yych == 'v') goto yy598; goto yy50; yy447: ++lexer->cursor; @@ -3259,7 +3260,7 @@ yy447: } else { if (yych <= ']') goto yy448; if (yych <= 'y') goto yy49; - goto yy598; + goto yy599; } } else { if (yych <= '|') { @@ -3272,30 +3273,30 @@ yy447: yy448: #line 359 "src/wasm-ast-lexer.c" { OPCODE(I32_EQ); RETURN(COMPARE); } -#line 3276 "src/prebuilt/wasm-ast-lexer-gen.c" +#line 3277 "src/prebuilt/wasm-ast-lexer-gen.c" yy449: yych = *++lexer->cursor; - if (yych == '_') goto yy600; + if (yych == '_') goto yy601; goto yy50; yy450: yych = *++lexer->cursor; - if (yych == '_') goto yy601; + if (yych == '_') goto yy602; goto yy50; yy451: yych = *++lexer->cursor; - if (yych == '_') goto yy602; + if (yych == '_') goto yy603; goto yy50; yy452: yych = *++lexer->cursor; - if (yych == 'a') goto yy603; + if (yych == 'a') goto yy604; goto yy50; yy453: yych = *++lexer->cursor; - if (yych == '_') goto yy604; + if (yych == '_') goto yy605; goto yy50; yy454: yych = *++lexer->cursor; - if (yych == 'l') goto yy605; + if (yych == 'l') goto yy606; goto yy50; yy455: ++lexer->cursor; @@ -3304,7 +3305,7 @@ yy455: } #line 361 "src/wasm-ast-lexer.c" { OPCODE(I32_NE); RETURN(COMPARE); } -#line 3308 "src/prebuilt/wasm-ast-lexer-gen.c" +#line 3309 "src/prebuilt/wasm-ast-lexer-gen.c" yy457: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { @@ -3312,68 +3313,68 @@ yy457: } #line 331 "src/wasm-ast-lexer.c" { OPCODE(I32_OR); RETURN(BINARY); } -#line 3316 "src/prebuilt/wasm-ast-lexer-gen.c" +#line 3317 "src/prebuilt/wasm-ast-lexer-gen.c" yy459: yych = *++lexer->cursor; - if (yych == 'p') goto yy607; + if (yych == 'p') goto yy608; goto yy50; yy460: yych = *++lexer->cursor; - if (yych == 'i') goto yy608; - if (yych == 'm') goto yy609; + if (yych == 'i') goto yy609; + if (yych == 'm') goto yy610; goto yy50; yy461: yych = *++lexer->cursor; - if (yych == 't') goto yy610; + if (yych == 't') goto yy611; goto yy50; yy462: yych = *++lexer->cursor; - if (yych == 'l') goto yy611; - if (yych == 'r') goto yy613; + if (yych == 'l') goto yy612; + if (yych == 'r') goto yy614; goto yy50; yy463: yych = *++lexer->cursor; - if (yych == 'o') goto yy614; + if (yych == 'o') goto yy615; goto yy50; yy464: yych = *++lexer->cursor; - if (yych == 'b') goto yy615; + if (yych == 'b') goto yy616; goto yy50; yy465: yych = *++lexer->cursor; - if (yych == 'u') goto yy617; + if (yych == 'u') goto yy618; goto yy50; yy466: yych = *++lexer->cursor; - if (yych == 'a') goto yy618; + if (yych == 'a') goto yy619; goto yy50; yy467: yych = *++lexer->cursor; - if (yych == 'r') goto yy619; + if (yych == 'r') goto yy620; goto yy50; yy468: yych = *++lexer->cursor; - if (yych == 'd') goto yy621; + if (yych == 'd') goto yy622; goto yy50; yy469: yych = *++lexer->cursor; - if (yych == 'd') goto yy623; + if (yych == 'd') goto yy624; goto yy50; yy470: yych = *++lexer->cursor; - if (yych == 'z') goto yy625; + if (yych == 'z') goto yy626; goto yy50; yy471: yych = *++lexer->cursor; - if (yych == 'n') goto yy627; + if (yych == 'n') goto yy628; goto yy50; yy472: yych = *++lexer->cursor; - if (yych == 'z') goto yy628; + if (yych == 'z') goto yy629; goto yy50; yy473: yych = *++lexer->cursor; - if (yych == 'v') goto yy630; + if (yych == 'v') goto yy631; goto yy50; yy474: ++lexer->cursor; @@ -3399,7 +3400,7 @@ yy474: } else { if (yych <= ']') goto yy475; if (yych <= 'y') goto yy49; - goto yy631; + goto yy632; } } else { if (yych <= '|') { @@ -3412,34 +3413,34 @@ yy474: yy475: #line 360 "src/wasm-ast-lexer.c" { OPCODE(I64_EQ); RETURN(COMPARE); } -#line 3416 "src/prebuilt/wasm-ast-lexer-gen.c" +#line 3417 "src/prebuilt/wasm-ast-lexer-gen.c" yy476: yych = *++lexer->cursor; - if (yych == 't') goto yy633; + if (yych == 't') goto yy634; goto yy50; yy477: yych = *++lexer->cursor; - if (yych == '_') goto yy634; + if (yych == '_') goto yy635; goto yy50; yy478: yych = *++lexer->cursor; - if (yych == '_') goto yy635; + if (yych == '_') goto yy636; goto yy50; yy479: yych = *++lexer->cursor; - if (yych == '_') goto yy636; + if (yych == '_') goto yy637; goto yy50; yy480: yych = *++lexer->cursor; - if (yych == 'a') goto yy637; + if (yych == 'a') goto yy638; goto yy50; yy481: yych = *++lexer->cursor; - if (yych == '_') goto yy638; + if (yych == '_') goto yy639; goto yy50; yy482: yych = *++lexer->cursor; - if (yych == 'l') goto yy639; + if (yych == 'l') goto yy640; goto yy50; yy483: ++lexer->cursor; @@ -3448,7 +3449,7 @@ yy483: } #line 362 "src/wasm-ast-lexer.c" { OPCODE(I64_NE); RETURN(COMPARE); } -#line 3452 "src/prebuilt/wasm-ast-lexer-gen.c" +#line 3453 "src/prebuilt/wasm-ast-lexer-gen.c" yy485: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { @@ -3456,44 +3457,44 @@ yy485: } #line 332 "src/wasm-ast-lexer.c" { OPCODE(I64_OR); RETURN(BINARY); } -#line 3460 "src/prebuilt/wasm-ast-lexer-gen.c" +#line 3461 "src/prebuilt/wasm-ast-lexer-gen.c" yy487: yych = *++lexer->cursor; - if (yych == 'p') goto yy641; + if (yych == 'p') goto yy642; goto yy50; yy488: yych = *++lexer->cursor; - if (yych == 'i') goto yy642; - if (yych == 'm') goto yy643; + if (yych == 'i') goto yy643; + if (yych == 'm') goto yy644; goto yy50; yy489: yych = *++lexer->cursor; - if (yych == 't') goto yy644; + if (yych == 't') goto yy645; goto yy50; yy490: yych = *++lexer->cursor; - if (yych == 'l') goto yy645; - if (yych == 'r') goto yy647; + if (yych == 'l') goto yy646; + if (yych == 'r') goto yy648; goto yy50; yy491: yych = *++lexer->cursor; - if (yych == 'o') goto yy648; + if (yych == 'o') goto yy649; goto yy50; yy492: yych = *++lexer->cursor; - if (yych == 'b') goto yy649; + if (yych == 'b') goto yy650; goto yy50; yy493: yych = *++lexer->cursor; - if (yych == 'u') goto yy651; + if (yych == 'u') goto yy652; goto yy50; yy494: yych = *++lexer->cursor; - if (yych == 'r') goto yy652; + if (yych == 'r') goto yy653; goto yy50; yy495: yych = *++lexer->cursor; - if (yych == 'e') goto yy654; + if (yych == 'e') goto yy655; goto yy50; yy496: ++lexer->cursor; @@ -3502,10 +3503,10 @@ yy496: } #line 433 "src/wasm-ast-lexer.c" { RETURN(IMPORT); } -#line 3506 "src/prebuilt/wasm-ast-lexer-gen.c" +#line 3507 "src/prebuilt/wasm-ast-lexer-gen.c" yy498: yych = *++lexer->cursor; - if (yych == 't') goto yy656; + if (yych == 't') goto yy657; goto yy50; yy499: ++lexer->cursor; @@ -3514,7 +3515,7 @@ yy499: } #line 436 "src/wasm-ast-lexer.c" { RETURN(INVOKE); } -#line 3518 "src/prebuilt/wasm-ast-lexer-gen.c" +#line 3519 "src/prebuilt/wasm-ast-lexer-gen.c" yy501: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { @@ -3522,7 +3523,7 @@ yy501: } #line 428 "src/wasm-ast-lexer.c" { RETURN(MEMORY); } -#line 3526 "src/prebuilt/wasm-ast-lexer-gen.c" +#line 3527 "src/prebuilt/wasm-ast-lexer-gen.c" yy503: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { @@ -3530,17 +3531,17 @@ yy503: } #line 426 "src/wasm-ast-lexer.c" { RETURN(MODULE); } -#line 3534 "src/prebuilt/wasm-ast-lexer-gen.c" +#line 3535 "src/prebuilt/wasm-ast-lexer-gen.c" yy505: yych = *++lexer->cursor; if (yych <= '@') { if (yych <= '/') goto yy50; - if (yych <= '9') goto yy657; + if (yych <= '9') goto yy658; goto yy50; } else { - if (yych <= 'F') goto yy657; + if (yych <= 'F') goto yy658; if (yych <= '`') goto yy50; - if (yych <= 'f') goto yy657; + if (yych <= 'f') goto yy658; goto yy50; } yy506: @@ -3563,7 +3564,7 @@ yy506: } else { if (yych <= ']') { if (yych <= 'Z') { - if (yych <= '=') goto yy659; + if (yych <= '=') goto yy660; goto yy49; } else { if (yych == '\\') goto yy49; @@ -3579,7 +3580,7 @@ yy506: yy507: #line 432 "src/wasm-ast-lexer.c" { RETURN(OFFSET); } -#line 3583 "src/prebuilt/wasm-ast-lexer-gen.c" +#line 3584 "src/prebuilt/wasm-ast-lexer-gen.c" yy508: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { @@ -3587,10 +3588,10 @@ yy508: } #line 445 "src/wasm-ast-lexer.c" { RETURN(OUTPUT); } -#line 3591 "src/prebuilt/wasm-ast-lexer-gen.c" +#line 3592 "src/prebuilt/wasm-ast-lexer-gen.c" yy510: yych = *++lexer->cursor; - if (yych == 'e') goto yy660; + if (yych == 'e') goto yy661; goto yy50; yy511: ++lexer->cursor; @@ -3599,7 +3600,7 @@ yy511: } #line 423 "src/wasm-ast-lexer.c" { RETURN(RESULT); } -#line 3603 "src/prebuilt/wasm-ast-lexer-gen.c" +#line 3604 "src/prebuilt/wasm-ast-lexer-gen.c" yy513: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { @@ -3607,7 +3608,7 @@ yy513: } #line 258 "src/wasm-ast-lexer.c" { RETURN(RETURN); } -#line 3611 "src/prebuilt/wasm-ast-lexer-gen.c" +#line 3612 "src/prebuilt/wasm-ast-lexer-gen.c" yy515: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { @@ -3615,614 +3616,656 @@ yy515: } #line 416 "src/wasm-ast-lexer.c" { RETURN(SELECT); } -#line 3619 "src/prebuilt/wasm-ast-lexer-gen.c" +#line 3620 "src/prebuilt/wasm-ast-lexer-gen.c" yy517: yych = *++lexer->cursor; - if (yych == 'o') goto yy661; + if (yych == 'o') goto yy662; goto yy50; yy518: yych = *++lexer->cursor; - if (yych == 'c') goto yy662; + if (yych == 'c') goto yy663; goto yy50; yy519: yych = *++lexer->cursor; - if (yych == 'c') goto yy663; + if (yych == 'c') goto yy664; goto yy50; yy520: yych = *++lexer->cursor; - if (yych == 'h') goto yy664; + if (yych == 'h') goto yy665; goto yy50; yy521: ++lexer->cursor; + if ((yych = *lexer->cursor) <= ';') { + if (yych <= ')') { + if (yych <= '!') { + if (yych >= '!') goto yy49; + } else { + if (yych <= '"') goto yy522; + if (yych <= '\'') goto yy49; + } + } else { + if (yych <= '/') { + if (yych != ',') goto yy49; + } else { + if (yych <= '9') goto yy523; + if (yych <= ':') goto yy49; + } + } + } else { + if (yych <= 'x') { + if (yych <= '\\') { + if (yych != '[') goto yy49; + } else { + if (yych <= ']') goto yy522; + if (yych <= 'w') goto yy49; + goto yy666; + } + } else { + if (yych <= '|') { + if (yych != '{') goto yy49; + } else { + if (yych == '~') goto yy49; + } + } + } +yy522: +#line 288 "src/wasm-ast-lexer.c" + { TEXT_AT(6); RETURN(ALIGN_EQ_NAT); } +#line 3675 "src/prebuilt/wasm-ast-lexer-gen.c" +yy523: + ++lexer->cursor; if (lexer->limit <= lexer->cursor) FILL(1); yych = *lexer->cursor; if (yych <= ':') { if (yych <= ')') { if (yych <= '!') { - if (yych >= '!') goto yy49; + if (yych <= ' ') goto yy522; + goto yy49; } else { - if (yych <= '"') goto yy523; + if (yych <= '"') goto yy522; if (yych <= '\'') goto yy49; + goto yy522; } } else { if (yych <= ',') { if (yych <= '+') goto yy49; + goto yy522; } else { if (yych <= '/') goto yy49; - if (yych <= '9') goto yy521; + if (yych <= '9') goto yy523; goto yy49; } } } else { if (yych <= ']') { if (yych <= 'Z') { - if (yych >= '<') goto yy49; + if (yych <= ';') goto yy522; + goto yy49; } else { if (yych == '\\') goto yy49; + goto yy522; } } else { if (yych <= '|') { - if (yych != '{') goto yy49; + if (yych == '{') goto yy522; + goto yy49; } else { if (yych == '~') goto yy49; + goto yy522; } } } -yy523: -#line 288 "src/wasm-ast-lexer.c" - { TEXT_AT(6); RETURN(ALIGN_EQ_NAT); } -#line 3675 "src/prebuilt/wasm-ast-lexer-gen.c" -yy524: +yy525: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 241 "src/wasm-ast-lexer.c" { RETURN(ANYFUNC); } -#line 3683 "src/prebuilt/wasm-ast-lexer-gen.c" -yy526: +#line 3726 "src/prebuilt/wasm-ast-lexer-gen.c" +yy527: yych = *++lexer->cursor; switch (yych) { - case 'i': goto yy665; - case 'm': goto yy666; - case 'r': goto yy667; - case 't': goto yy668; - case 'u': goto yy669; + case 'i': goto yy667; + case 'm': goto yy668; + case 'r': goto yy669; + case 't': goto yy670; + case 'u': goto yy671; default: goto yy50; } -yy527: - yych = *++lexer->cursor; - if (yych == 'e') goto yy670; - goto yy50; yy528: yych = *++lexer->cursor; - if (yych == 'p') goto yy672; + if (yych == 'e') goto yy672; goto yy50; yy529: yych = *++lexer->cursor; - if (yych == 'd') goto yy673; + if (yych == 'p') goto yy674; goto yy50; yy530: yych = *++lexer->cursor; - if (yych == '_') goto yy674; + if (yych == 'd') goto yy675; goto yy50; yy531: + yych = *++lexer->cursor; + if (yych == '_') goto yy676; + goto yy50; +yy532: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 303 "src/wasm-ast-lexer.c" { OPCODE(F32_ABS); RETURN(UNARY); } -#line 3717 "src/prebuilt/wasm-ast-lexer-gen.c" -yy533: +#line 3760 "src/prebuilt/wasm-ast-lexer-gen.c" +yy534: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 345 "src/wasm-ast-lexer.c" { OPCODE(F32_ADD); RETURN(BINARY); } -#line 3725 "src/prebuilt/wasm-ast-lexer-gen.c" -yy535: - yych = *++lexer->cursor; - if (yych == 'l') goto yy675; - goto yy50; +#line 3768 "src/prebuilt/wasm-ast-lexer-gen.c" yy536: yych = *++lexer->cursor; - if (yych == 's') goto yy677; - if (yych == 'v') goto yy678; + if (yych == 'l') goto yy677; goto yy50; yy537: yych = *++lexer->cursor; - if (yych == 'y') goto yy679; + if (yych == 's') goto yy679; + if (yych == 'v') goto yy680; goto yy50; yy538: yych = *++lexer->cursor; - if (yych == 'o') goto yy680; + if (yych == 'y') goto yy681; goto yy50; yy539: + yych = *++lexer->cursor; + if (yych == 'o') goto yy682; + goto yy50; +yy540: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 351 "src/wasm-ast-lexer.c" { OPCODE(F32_DIV); RETURN(BINARY); } -#line 3750 "src/prebuilt/wasm-ast-lexer-gen.c" -yy541: - yych = *++lexer->cursor; - if (yych == 'o') goto yy681; - goto yy50; +#line 3793 "src/prebuilt/wasm-ast-lexer-gen.c" yy542: yych = *++lexer->cursor; - if (yych == 'd') goto yy682; + if (yych == 'o') goto yy683; goto yy50; yy543: + yych = *++lexer->cursor; + if (yych == 'd') goto yy684; + goto yy50; +yy544: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 355 "src/wasm-ast-lexer.c" { OPCODE(F32_MAX); RETURN(BINARY); } -#line 3766 "src/prebuilt/wasm-ast-lexer-gen.c" -yy545: +#line 3809 "src/prebuilt/wasm-ast-lexer-gen.c" +yy546: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 353 "src/wasm-ast-lexer.c" { OPCODE(F32_MIN); RETURN(BINARY); } -#line 3774 "src/prebuilt/wasm-ast-lexer-gen.c" -yy547: +#line 3817 "src/prebuilt/wasm-ast-lexer-gen.c" +yy548: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 349 "src/wasm-ast-lexer.c" { OPCODE(F32_MUL); RETURN(BINARY); } -#line 3782 "src/prebuilt/wasm-ast-lexer-gen.c" -yy549: +#line 3825 "src/prebuilt/wasm-ast-lexer-gen.c" +yy550: yych = *++lexer->cursor; - if (yych == 'r') goto yy684; + if (yych == 'r') goto yy686; goto yy50; -yy550: +yy551: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 301 "src/wasm-ast-lexer.c" { OPCODE(F32_NEG); RETURN(UNARY); } -#line 3794 "src/prebuilt/wasm-ast-lexer-gen.c" -yy552: - yych = *++lexer->cursor; - if (yych == 'n') goto yy685; - goto yy50; +#line 3837 "src/prebuilt/wasm-ast-lexer-gen.c" yy553: yych = *++lexer->cursor; - if (yych == 't') goto yy686; + if (yych == 'n') goto yy687; goto yy50; yy554: yych = *++lexer->cursor; - if (yych == 'r') goto yy688; + if (yych == 't') goto yy688; goto yy50; yy555: + yych = *++lexer->cursor; + if (yych == 'r') goto yy690; + goto yy50; +yy556: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 347 "src/wasm-ast-lexer.c" { OPCODE(F32_SUB); RETURN(BINARY); } -#line 3814 "src/prebuilt/wasm-ast-lexer-gen.c" -yy557: +#line 3857 "src/prebuilt/wasm-ast-lexer-gen.c" +yy558: yych = *++lexer->cursor; - if (yych == 'n') goto yy689; + if (yych == 'n') goto yy691; goto yy50; -yy558: +yy559: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 304 "src/wasm-ast-lexer.c" { OPCODE(F64_ABS); RETURN(UNARY); } -#line 3826 "src/prebuilt/wasm-ast-lexer-gen.c" -yy560: +#line 3869 "src/prebuilt/wasm-ast-lexer-gen.c" +yy561: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 346 "src/wasm-ast-lexer.c" { OPCODE(F64_ADD); RETURN(BINARY); } -#line 3834 "src/prebuilt/wasm-ast-lexer-gen.c" -yy562: - yych = *++lexer->cursor; - if (yych == 'l') goto yy690; - goto yy50; +#line 3877 "src/prebuilt/wasm-ast-lexer-gen.c" yy563: yych = *++lexer->cursor; - if (yych == 's') goto yy692; - if (yych == 'v') goto yy693; + if (yych == 'l') goto yy692; goto yy50; yy564: yych = *++lexer->cursor; - if (yych == 'y') goto yy694; + if (yych == 's') goto yy694; + if (yych == 'v') goto yy695; goto yy50; yy565: + yych = *++lexer->cursor; + if (yych == 'y') goto yy696; + goto yy50; +yy566: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 352 "src/wasm-ast-lexer.c" { OPCODE(F64_DIV); RETURN(BINARY); } -#line 3855 "src/prebuilt/wasm-ast-lexer-gen.c" -yy567: - yych = *++lexer->cursor; - if (yych == 'o') goto yy695; - goto yy50; +#line 3898 "src/prebuilt/wasm-ast-lexer-gen.c" yy568: yych = *++lexer->cursor; - if (yych == 'd') goto yy696; + if (yych == 'o') goto yy697; goto yy50; yy569: + yych = *++lexer->cursor; + if (yych == 'd') goto yy698; + goto yy50; +yy570: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 356 "src/wasm-ast-lexer.c" { OPCODE(F64_MAX); RETURN(BINARY); } -#line 3871 "src/prebuilt/wasm-ast-lexer-gen.c" -yy571: +#line 3914 "src/prebuilt/wasm-ast-lexer-gen.c" +yy572: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 354 "src/wasm-ast-lexer.c" { OPCODE(F64_MIN); RETURN(BINARY); } -#line 3879 "src/prebuilt/wasm-ast-lexer-gen.c" -yy573: +#line 3922 "src/prebuilt/wasm-ast-lexer-gen.c" +yy574: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 350 "src/wasm-ast-lexer.c" { OPCODE(F64_MUL); RETURN(BINARY); } -#line 3887 "src/prebuilt/wasm-ast-lexer-gen.c" -yy575: +#line 3930 "src/prebuilt/wasm-ast-lexer-gen.c" +yy576: yych = *++lexer->cursor; - if (yych == 'r') goto yy698; + if (yych == 'r') goto yy700; goto yy50; -yy576: +yy577: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 302 "src/wasm-ast-lexer.c" { OPCODE(F64_NEG); RETURN(UNARY); } -#line 3899 "src/prebuilt/wasm-ast-lexer-gen.c" -yy578: - yych = *++lexer->cursor; - if (yych == 'm') goto yy699; - goto yy50; +#line 3942 "src/prebuilt/wasm-ast-lexer-gen.c" yy579: yych = *++lexer->cursor; - if (yych == 'n') goto yy700; + if (yych == 'm') goto yy701; goto yy50; yy580: yych = *++lexer->cursor; - if (yych == 't') goto yy701; + if (yych == 'n') goto yy702; goto yy50; yy581: yych = *++lexer->cursor; - if (yych == 'r') goto yy703; + if (yych == 't') goto yy703; goto yy50; yy582: + yych = *++lexer->cursor; + if (yych == 'r') goto yy705; + goto yy50; +yy583: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 348 "src/wasm-ast-lexer.c" { OPCODE(F64_SUB); RETURN(BINARY); } -#line 3923 "src/prebuilt/wasm-ast-lexer-gen.c" -yy584: - yych = *++lexer->cursor; - if (yych == 'n') goto yy704; - goto yy50; +#line 3966 "src/prebuilt/wasm-ast-lexer-gen.c" yy585: yych = *++lexer->cursor; - if (yych == 'b') goto yy705; + if (yych == 'n') goto yy706; goto yy50; yy586: yych = *++lexer->cursor; - if (yych == 'a') goto yy706; + if (yych == 'b') goto yy707; goto yy50; yy587: yych = *++lexer->cursor; - if (yych == 'm') goto yy707; + if (yych == 'a') goto yy708; goto yy50; yy588: + yych = *++lexer->cursor; + if (yych == 'm') goto yy709; + goto yy50; +yy589: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 315 "src/wasm-ast-lexer.c" { OPCODE(I32_ADD); RETURN(BINARY); } -#line 3947 "src/prebuilt/wasm-ast-lexer-gen.c" -yy590: +#line 3990 "src/prebuilt/wasm-ast-lexer-gen.c" +yy591: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 329 "src/wasm-ast-lexer.c" { OPCODE(I32_AND); RETURN(BINARY); } -#line 3955 "src/prebuilt/wasm-ast-lexer-gen.c" -yy592: +#line 3998 "src/prebuilt/wasm-ast-lexer-gen.c" +yy593: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 295 "src/wasm-ast-lexer.c" { OPCODE(I32_CLZ); RETURN(UNARY); } -#line 3963 "src/prebuilt/wasm-ast-lexer-gen.c" -yy594: +#line 4006 "src/prebuilt/wasm-ast-lexer-gen.c" +yy595: yych = *++lexer->cursor; - if (yych == 's') goto yy708; + if (yych == 's') goto yy710; goto yy50; -yy595: +yy596: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 297 "src/wasm-ast-lexer.c" { OPCODE(I32_CTZ); RETURN(UNARY); } -#line 3975 "src/prebuilt/wasm-ast-lexer-gen.c" -yy597: +#line 4018 "src/prebuilt/wasm-ast-lexer-gen.c" +yy598: yych = *++lexer->cursor; - if (yych == '_') goto yy709; + if (yych == '_') goto yy711; goto yy50; -yy598: +yy599: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 293 "src/wasm-ast-lexer.c" { OPCODE(I32_EQZ); RETURN(CONVERT); } -#line 3987 "src/prebuilt/wasm-ast-lexer-gen.c" -yy600: - yych = *++lexer->cursor; - if (yych == 's') goto yy710; - if (yych == 'u') goto yy712; - goto yy50; +#line 4030 "src/prebuilt/wasm-ast-lexer-gen.c" yy601: yych = *++lexer->cursor; - if (yych == 's') goto yy714; - if (yych == 'u') goto yy716; + if (yych == 's') goto yy712; + if (yych == 'u') goto yy714; goto yy50; yy602: yych = *++lexer->cursor; - if (yych == 's') goto yy718; - if (yych == 'u') goto yy720; + if (yych == 's') goto yy716; + if (yych == 'u') goto yy718; goto yy50; yy603: yych = *++lexer->cursor; - if (yych == 'd') goto yy722; + if (yych == 's') goto yy720; + if (yych == 'u') goto yy722; goto yy50; yy604: yych = *++lexer->cursor; - if (yych == 's') goto yy724; - if (yych == 'u') goto yy726; + if (yych == 'd') goto yy724; goto yy50; yy605: + yych = *++lexer->cursor; + if (yych == 's') goto yy726; + if (yych == 'u') goto yy728; + goto yy50; +yy606: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 319 "src/wasm-ast-lexer.c" { OPCODE(I32_MUL); RETURN(BINARY); } -#line 4019 "src/prebuilt/wasm-ast-lexer-gen.c" -yy607: - yych = *++lexer->cursor; - if (yych == 'c') goto yy728; - goto yy50; +#line 4062 "src/prebuilt/wasm-ast-lexer-gen.c" yy608: yych = *++lexer->cursor; - if (yych == 'n') goto yy729; + if (yych == 'c') goto yy730; goto yy50; yy609: yych = *++lexer->cursor; - if (yych == '_') goto yy730; + if (yych == 'n') goto yy731; goto yy50; yy610: yych = *++lexer->cursor; - if (yych == 'l') goto yy731; - if (yych == 'r') goto yy733; + if (yych == '_') goto yy732; goto yy50; yy611: + yych = *++lexer->cursor; + if (yych == 'l') goto yy733; + if (yych == 'r') goto yy735; + goto yy50; +yy612: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 335 "src/wasm-ast-lexer.c" { OPCODE(I32_SHL); RETURN(BINARY); } -#line 4044 "src/prebuilt/wasm-ast-lexer-gen.c" -yy613: - yych = *++lexer->cursor; - if (yych == '_') goto yy735; - goto yy50; +#line 4087 "src/prebuilt/wasm-ast-lexer-gen.c" yy614: yych = *++lexer->cursor; - if (yych == 'r') goto yy736; + if (yych == '_') goto yy737; goto yy50; yy615: + yych = *++lexer->cursor; + if (yych == 'r') goto yy738; + goto yy50; +yy616: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 317 "src/wasm-ast-lexer.c" { OPCODE(I32_SUB); RETURN(BINARY); } -#line 4060 "src/prebuilt/wasm-ast-lexer-gen.c" -yy617: - yych = *++lexer->cursor; - if (yych == 'n') goto yy737; - goto yy50; +#line 4103 "src/prebuilt/wasm-ast-lexer-gen.c" yy618: yych = *++lexer->cursor; - if (yych == 'p') goto yy738; + if (yych == 'n') goto yy739; goto yy50; yy619: + yych = *++lexer->cursor; + if (yych == 'p') goto yy740; + goto yy50; +yy620: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 333 "src/wasm-ast-lexer.c" { OPCODE(I32_XOR); RETURN(BINARY); } -#line 4076 "src/prebuilt/wasm-ast-lexer-gen.c" -yy621: +#line 4119 "src/prebuilt/wasm-ast-lexer-gen.c" +yy622: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 316 "src/wasm-ast-lexer.c" { OPCODE(I64_ADD); RETURN(BINARY); } -#line 4084 "src/prebuilt/wasm-ast-lexer-gen.c" -yy623: +#line 4127 "src/prebuilt/wasm-ast-lexer-gen.c" +yy624: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 330 "src/wasm-ast-lexer.c" { OPCODE(I64_AND); RETURN(BINARY); } -#line 4092 "src/prebuilt/wasm-ast-lexer-gen.c" -yy625: +#line 4135 "src/prebuilt/wasm-ast-lexer-gen.c" +yy626: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 296 "src/wasm-ast-lexer.c" { OPCODE(I64_CLZ); RETURN(UNARY); } -#line 4100 "src/prebuilt/wasm-ast-lexer-gen.c" -yy627: +#line 4143 "src/prebuilt/wasm-ast-lexer-gen.c" +yy628: yych = *++lexer->cursor; - if (yych == 's') goto yy739; + if (yych == 's') goto yy741; goto yy50; -yy628: +yy629: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 298 "src/wasm-ast-lexer.c" { OPCODE(I64_CTZ); RETURN(UNARY); } -#line 4112 "src/prebuilt/wasm-ast-lexer-gen.c" -yy630: +#line 4155 "src/prebuilt/wasm-ast-lexer-gen.c" +yy631: yych = *++lexer->cursor; - if (yych == '_') goto yy740; + if (yych == '_') goto yy742; goto yy50; -yy631: +yy632: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 294 "src/wasm-ast-lexer.c" { OPCODE(I64_EQZ); RETURN(CONVERT); } -#line 4124 "src/prebuilt/wasm-ast-lexer-gen.c" -yy633: - yych = *++lexer->cursor; - if (yych == 'e') goto yy741; - goto yy50; +#line 4167 "src/prebuilt/wasm-ast-lexer-gen.c" yy634: yych = *++lexer->cursor; - if (yych == 's') goto yy742; - if (yych == 'u') goto yy744; + if (yych == 'e') goto yy743; goto yy50; yy635: yych = *++lexer->cursor; - if (yych == 's') goto yy746; - if (yych == 'u') goto yy748; + if (yych == 's') goto yy744; + if (yych == 'u') goto yy746; goto yy50; yy636: yych = *++lexer->cursor; - if (yych == 's') goto yy750; - if (yych == 'u') goto yy752; + if (yych == 's') goto yy748; + if (yych == 'u') goto yy750; goto yy50; yy637: yych = *++lexer->cursor; - if (yych == 'd') goto yy754; + if (yych == 's') goto yy752; + if (yych == 'u') goto yy754; goto yy50; yy638: yych = *++lexer->cursor; - if (yych == 's') goto yy756; - if (yych == 'u') goto yy758; + if (yych == 'd') goto yy756; goto yy50; yy639: + yych = *++lexer->cursor; + if (yych == 's') goto yy758; + if (yych == 'u') goto yy760; + goto yy50; +yy640: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 320 "src/wasm-ast-lexer.c" { OPCODE(I64_MUL); RETURN(BINARY); } -#line 4160 "src/prebuilt/wasm-ast-lexer-gen.c" -yy641: - yych = *++lexer->cursor; - if (yych == 'c') goto yy760; - goto yy50; +#line 4203 "src/prebuilt/wasm-ast-lexer-gen.c" yy642: yych = *++lexer->cursor; - if (yych == 'n') goto yy761; + if (yych == 'c') goto yy762; goto yy50; yy643: yych = *++lexer->cursor; - if (yych == '_') goto yy762; + if (yych == 'n') goto yy763; goto yy50; yy644: yych = *++lexer->cursor; - if (yych == 'l') goto yy763; - if (yych == 'r') goto yy765; + if (yych == '_') goto yy764; goto yy50; yy645: + yych = *++lexer->cursor; + if (yych == 'l') goto yy765; + if (yych == 'r') goto yy767; + goto yy50; +yy646: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 336 "src/wasm-ast-lexer.c" { OPCODE(I64_SHL); RETURN(BINARY); } -#line 4185 "src/prebuilt/wasm-ast-lexer-gen.c" -yy647: - yych = *++lexer->cursor; - if (yych == '_') goto yy767; - goto yy50; +#line 4228 "src/prebuilt/wasm-ast-lexer-gen.c" yy648: yych = *++lexer->cursor; - if (yych == 'r') goto yy768; + if (yych == '_') goto yy769; goto yy50; yy649: + yych = *++lexer->cursor; + if (yych == 'r') goto yy770; + goto yy50; +yy650: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 318 "src/wasm-ast-lexer.c" { OPCODE(I64_SUB); RETURN(BINARY); } -#line 4201 "src/prebuilt/wasm-ast-lexer-gen.c" -yy651: +#line 4244 "src/prebuilt/wasm-ast-lexer-gen.c" +yy652: yych = *++lexer->cursor; - if (yych == 'n') goto yy769; + if (yych == 'n') goto yy771; goto yy50; -yy652: +yy653: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 334 "src/wasm-ast-lexer.c" { OPCODE(I64_XOR); RETURN(BINARY); } -#line 4213 "src/prebuilt/wasm-ast-lexer-gen.c" -yy654: +#line 4256 "src/prebuilt/wasm-ast-lexer-gen.c" +yy655: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 246 "src/wasm-ast-lexer.c" { RETURN(IF); } -#line 4221 "src/prebuilt/wasm-ast-lexer-gen.c" -yy656: +#line 4264 "src/prebuilt/wasm-ast-lexer-gen.c" +yy657: yych = *++lexer->cursor; - if (yych == 'y') goto yy770; + if (yych == 'y') goto yy772; goto yy50; -yy657: +yy658: ++lexer->cursor; if (lexer->limit <= lexer->cursor) FILL(1); yych = *lexer->cursor; @@ -4240,7 +4283,7 @@ yy657: if (yych <= '9') { if (yych <= ',') goto yy196; if (yych <= '/') goto yy49; - goto yy657; + goto yy658; } else { if (yych == ';') goto yy196; goto yy49; @@ -4249,7 +4292,7 @@ yy657: } else { if (yych <= '`') { if (yych <= '[') { - if (yych <= 'F') goto yy657; + if (yych <= 'F') goto yy658; if (yych <= 'Z') goto yy49; goto yy196; } else { @@ -4258,7 +4301,7 @@ yy657: } } else { if (yych <= '{') { - if (yych <= 'f') goto yy657; + if (yych <= 'f') goto yy658; if (yych <= 'z') goto yy49; goto yy196; } else { @@ -4268,277 +4311,290 @@ yy657: } } } -yy659: - yych = *++lexer->cursor; - if (yych <= '/') goto yy50; - if (yych <= '9') goto yy771; - goto yy50; yy660: yych = *++lexer->cursor; - if (yych == 'r') goto yy774; + if (yych <= '/') goto yy50; + if (yych <= '0') goto yy773; + if (yych <= '9') goto yy775; goto yy50; yy661: yych = *++lexer->cursor; - if (yych == 'b') goto yy776; + if (yych == 'r') goto yy777; goto yy50; yy662: yych = *++lexer->cursor; - if (yych == 'a') goto yy777; + if (yych == 'b') goto yy779; goto yy50; yy663: yych = *++lexer->cursor; - if (yych == 'a') goto yy778; + if (yych == 'a') goto yy780; goto yy50; yy664: yych = *++lexer->cursor; - if (yych == 'a') goto yy779; + if (yych == 'a') goto yy781; goto yy50; yy665: yych = *++lexer->cursor; - if (yych == 'n') goto yy780; + if (yych == 'a') goto yy782; goto yy50; yy666: yych = *++lexer->cursor; - if (yych == 'a') goto yy781; - goto yy50; + if (yych <= '@') { + if (yych <= '/') goto yy50; + if (yych <= '9') goto yy783; + goto yy50; + } else { + if (yych <= 'F') goto yy783; + if (yych <= '`') goto yy50; + if (yych <= 'f') goto yy783; + goto yy50; + } yy667: yych = *++lexer->cursor; - if (yych == 'e') goto yy782; + if (yych == 'n') goto yy785; goto yy50; yy668: yych = *++lexer->cursor; - if (yych == 'r') goto yy783; + if (yych == 'a') goto yy786; goto yy50; yy669: yych = *++lexer->cursor; - if (yych == 'n') goto yy784; + if (yych == 'e') goto yy787; goto yy50; yy670: + yych = *++lexer->cursor; + if (yych == 'r') goto yy788; + goto yy50; +yy671: + yych = *++lexer->cursor; + if (yych == 'n') goto yy789; + goto yy50; +yy672: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 252 "src/wasm-ast-lexer.c" { RETURN(BR_TABLE); } -#line 4324 "src/prebuilt/wasm-ast-lexer-gen.c" -yy672: +#line 4380 "src/prebuilt/wasm-ast-lexer-gen.c" +yy674: yych = *++lexer->cursor; - if (yych == 'o') goto yy785; + if (yych == 'o') goto yy790; goto yy50; -yy673: +yy675: yych = *++lexer->cursor; - if (yych == 'i') goto yy786; + if (yych == 'i') goto yy791; goto yy50; -yy674: +yy676: yych = *++lexer->cursor; - if (yych == 'm') goto yy787; + if (yych == 'm') goto yy792; goto yy50; -yy675: +yy677: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 307 "src/wasm-ast-lexer.c" { OPCODE(F32_CEIL); RETURN(UNARY); } -#line 4344 "src/prebuilt/wasm-ast-lexer-gen.c" -yy677: - yych = *++lexer->cursor; - if (yych == 't') goto yy788; - goto yy50; -yy678: - yych = *++lexer->cursor; - if (yych == 'e') goto yy790; - goto yy50; +#line 4400 "src/prebuilt/wasm-ast-lexer-gen.c" yy679: yych = *++lexer->cursor; - if (yych == 's') goto yy791; + if (yych == 't') goto yy793; goto yy50; yy680: yych = *++lexer->cursor; - if (yych == 't') goto yy792; + if (yych == 'e') goto yy795; goto yy50; yy681: yych = *++lexer->cursor; - if (yych == 'r') goto yy793; + if (yych == 's') goto yy796; goto yy50; yy682: + yych = *++lexer->cursor; + if (yych == 't') goto yy797; + goto yy50; +yy683: + yych = *++lexer->cursor; + if (yych == 'r') goto yy798; + goto yy50; +yy684: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 266 "src/wasm-ast-lexer.c" { OPCODE(F32_LOAD); RETURN(LOAD); } -#line 4372 "src/prebuilt/wasm-ast-lexer-gen.c" -yy684: +#line 4428 "src/prebuilt/wasm-ast-lexer-gen.c" +yy686: yych = *++lexer->cursor; - if (yych == 'e') goto yy795; + if (yych == 'e') goto yy800; goto yy50; -yy685: +yy687: yych = *++lexer->cursor; - if (yych == 't') goto yy796; + if (yych == 't') goto yy801; goto yy50; -yy686: +yy688: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 305 "src/wasm-ast-lexer.c" { OPCODE(F32_SQRT); RETURN(UNARY); } -#line 4388 "src/prebuilt/wasm-ast-lexer-gen.c" -yy688: +#line 4444 "src/prebuilt/wasm-ast-lexer-gen.c" +yy690: yych = *++lexer->cursor; - if (yych == 'e') goto yy797; + if (yych == 'e') goto yy802; goto yy50; -yy689: +yy691: yych = *++lexer->cursor; - if (yych == 'c') goto yy799; + if (yych == 'c') goto yy804; goto yy50; -yy690: +yy692: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 308 "src/wasm-ast-lexer.c" { OPCODE(F64_CEIL); RETURN(UNARY); } -#line 4404 "src/prebuilt/wasm-ast-lexer-gen.c" -yy692: +#line 4460 "src/prebuilt/wasm-ast-lexer-gen.c" +yy694: yych = *++lexer->cursor; - if (yych == 't') goto yy801; + if (yych == 't') goto yy806; goto yy50; -yy693: +yy695: yych = *++lexer->cursor; - if (yych == 'e') goto yy803; + if (yych == 'e') goto yy808; goto yy50; -yy694: +yy696: yych = *++lexer->cursor; - if (yych == 's') goto yy804; + if (yych == 's') goto yy809; goto yy50; -yy695: +yy697: yych = *++lexer->cursor; - if (yych == 'r') goto yy805; + if (yych == 'r') goto yy810; goto yy50; -yy696: +yy698: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 267 "src/wasm-ast-lexer.c" { OPCODE(F64_LOAD); RETURN(LOAD); } -#line 4428 "src/prebuilt/wasm-ast-lexer-gen.c" -yy698: +#line 4484 "src/prebuilt/wasm-ast-lexer-gen.c" +yy700: yych = *++lexer->cursor; - if (yych == 'e') goto yy807; + if (yych == 'e') goto yy812; goto yy50; -yy699: +yy701: yych = *++lexer->cursor; - if (yych == 'o') goto yy808; + if (yych == 'o') goto yy813; goto yy50; -yy700: +yy702: yych = *++lexer->cursor; - if (yych == 't') goto yy809; + if (yych == 't') goto yy814; goto yy50; -yy701: +yy703: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 306 "src/wasm-ast-lexer.c" { OPCODE(F64_SQRT); RETURN(UNARY); } -#line 4448 "src/prebuilt/wasm-ast-lexer-gen.c" -yy703: - yych = *++lexer->cursor; - if (yych == 'e') goto yy810; - goto yy50; -yy704: - yych = *++lexer->cursor; - if (yych == 'c') goto yy812; - goto yy50; +#line 4504 "src/prebuilt/wasm-ast-lexer-gen.c" yy705: yych = *++lexer->cursor; - if (yych == 'a') goto yy814; + if (yych == 'e') goto yy815; goto yy50; yy706: yych = *++lexer->cursor; - if (yych == 'l') goto yy815; + if (yych == 'c') goto yy817; goto yy50; yy707: yych = *++lexer->cursor; - if (yych == 'o') goto yy817; + if (yych == 'a') goto yy819; goto yy50; yy708: yych = *++lexer->cursor; - if (yych == 't') goto yy818; + if (yych == 'l') goto yy820; goto yy50; yy709: yych = *++lexer->cursor; - if (yych == 's') goto yy820; - if (yych == 'u') goto yy822; + if (yych == 'o') goto yy822; goto yy50; yy710: + yych = *++lexer->cursor; + if (yych == 't') goto yy823; + goto yy50; +yy711: + yych = *++lexer->cursor; + if (yych == 's') goto yy825; + if (yych == 'u') goto yy827; + goto yy50; +yy712: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 375 "src/wasm-ast-lexer.c" { OPCODE(I32_GE_S); RETURN(COMPARE); } -#line 4485 "src/prebuilt/wasm-ast-lexer-gen.c" -yy712: +#line 4541 "src/prebuilt/wasm-ast-lexer-gen.c" +yy714: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 377 "src/wasm-ast-lexer.c" { OPCODE(I32_GE_U); RETURN(COMPARE); } -#line 4493 "src/prebuilt/wasm-ast-lexer-gen.c" -yy714: +#line 4549 "src/prebuilt/wasm-ast-lexer-gen.c" +yy716: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 371 "src/wasm-ast-lexer.c" { OPCODE(I32_GT_S); RETURN(COMPARE); } -#line 4501 "src/prebuilt/wasm-ast-lexer-gen.c" -yy716: +#line 4557 "src/prebuilt/wasm-ast-lexer-gen.c" +yy718: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 373 "src/wasm-ast-lexer.c" { OPCODE(I32_GT_U); RETURN(COMPARE); } -#line 4509 "src/prebuilt/wasm-ast-lexer-gen.c" -yy718: +#line 4565 "src/prebuilt/wasm-ast-lexer-gen.c" +yy720: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 367 "src/wasm-ast-lexer.c" { OPCODE(I32_LE_S); RETURN(COMPARE); } -#line 4517 "src/prebuilt/wasm-ast-lexer-gen.c" -yy720: +#line 4573 "src/prebuilt/wasm-ast-lexer-gen.c" +yy722: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 369 "src/wasm-ast-lexer.c" { OPCODE(I32_LE_U); RETURN(COMPARE); } -#line 4525 "src/prebuilt/wasm-ast-lexer-gen.c" -yy722: +#line 4581 "src/prebuilt/wasm-ast-lexer-gen.c" +yy724: ++lexer->cursor; if ((yych = *lexer->cursor) <= '8') { if (yych <= ')') { if (yych <= '!') { if (yych >= '!') goto yy49; } else { - if (yych <= '"') goto yy723; + if (yych <= '"') goto yy725; if (yych <= '\'') goto yy49; } } else { if (yych <= '0') { if (yych != ',') goto yy49; } else { - if (yych <= '1') goto yy824; + if (yych <= '1') goto yy829; if (yych <= '7') goto yy49; - goto yy825; + goto yy830; } } } else { @@ -4556,134 +4612,134 @@ yy722: } } } -yy723: +yy725: #line 264 "src/wasm-ast-lexer.c" { OPCODE(I32_LOAD); RETURN(LOAD); } -#line 4563 "src/prebuilt/wasm-ast-lexer-gen.c" -yy724: +#line 4619 "src/prebuilt/wasm-ast-lexer-gen.c" +yy726: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 363 "src/wasm-ast-lexer.c" { OPCODE(I32_LT_S); RETURN(COMPARE); } -#line 4571 "src/prebuilt/wasm-ast-lexer-gen.c" -yy726: +#line 4627 "src/prebuilt/wasm-ast-lexer-gen.c" +yy728: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 365 "src/wasm-ast-lexer.c" { OPCODE(I32_LT_U); RETURN(COMPARE); } -#line 4579 "src/prebuilt/wasm-ast-lexer-gen.c" -yy728: +#line 4635 "src/prebuilt/wasm-ast-lexer-gen.c" +yy730: yych = *++lexer->cursor; - if (yych == 'n') goto yy826; + if (yych == 'n') goto yy831; goto yy50; -yy729: +yy731: yych = *++lexer->cursor; - if (yych == 't') goto yy827; + if (yych == 't') goto yy832; goto yy50; -yy730: +yy732: yych = *++lexer->cursor; - if (yych == 's') goto yy828; - if (yych == 'u') goto yy830; + if (yych == 's') goto yy833; + if (yych == 'u') goto yy835; goto yy50; -yy731: +yy733: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 341 "src/wasm-ast-lexer.c" { OPCODE(I32_ROTL); RETURN(BINARY); } -#line 4600 "src/prebuilt/wasm-ast-lexer-gen.c" -yy733: +#line 4656 "src/prebuilt/wasm-ast-lexer-gen.c" +yy735: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 343 "src/wasm-ast-lexer.c" { OPCODE(I32_ROTR); RETURN(BINARY); } -#line 4608 "src/prebuilt/wasm-ast-lexer-gen.c" -yy735: - yych = *++lexer->cursor; - if (yych == 's') goto yy832; - if (yych == 'u') goto yy834; - goto yy50; -yy736: - yych = *++lexer->cursor; - if (yych == 'e') goto yy836; - goto yy50; +#line 4664 "src/prebuilt/wasm-ast-lexer-gen.c" yy737: yych = *++lexer->cursor; - if (yych == 'c') goto yy838; + if (yych == 's') goto yy837; + if (yych == 'u') goto yy839; goto yy50; yy738: yych = *++lexer->cursor; - if (yych == '/') goto yy839; + if (yych == 'e') goto yy841; goto yy50; yy739: yych = *++lexer->cursor; - if (yych == 't') goto yy840; + if (yych == 'c') goto yy843; goto yy50; yy740: yych = *++lexer->cursor; - if (yych == 's') goto yy842; - if (yych == 'u') goto yy844; + if (yych == '/') goto yy844; goto yy50; yy741: yych = *++lexer->cursor; - if (yych == 'n') goto yy846; + if (yych == 't') goto yy845; goto yy50; yy742: + yych = *++lexer->cursor; + if (yych == 's') goto yy847; + if (yych == 'u') goto yy849; + goto yy50; +yy743: + yych = *++lexer->cursor; + if (yych == 'n') goto yy851; + goto yy50; +yy744: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 376 "src/wasm-ast-lexer.c" { OPCODE(I64_GE_S); RETURN(COMPARE); } -#line 4646 "src/prebuilt/wasm-ast-lexer-gen.c" -yy744: +#line 4702 "src/prebuilt/wasm-ast-lexer-gen.c" +yy746: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 378 "src/wasm-ast-lexer.c" { OPCODE(I64_GE_U); RETURN(COMPARE); } -#line 4654 "src/prebuilt/wasm-ast-lexer-gen.c" -yy746: +#line 4710 "src/prebuilt/wasm-ast-lexer-gen.c" +yy748: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 372 "src/wasm-ast-lexer.c" { OPCODE(I64_GT_S); RETURN(COMPARE); } -#line 4662 "src/prebuilt/wasm-ast-lexer-gen.c" -yy748: +#line 4718 "src/prebuilt/wasm-ast-lexer-gen.c" +yy750: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 374 "src/wasm-ast-lexer.c" { OPCODE(I64_GT_U); RETURN(COMPARE); } -#line 4670 "src/prebuilt/wasm-ast-lexer-gen.c" -yy750: +#line 4726 "src/prebuilt/wasm-ast-lexer-gen.c" +yy752: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 368 "src/wasm-ast-lexer.c" { OPCODE(I64_LE_S); RETURN(COMPARE); } -#line 4678 "src/prebuilt/wasm-ast-lexer-gen.c" -yy752: +#line 4734 "src/prebuilt/wasm-ast-lexer-gen.c" +yy754: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 370 "src/wasm-ast-lexer.c" { OPCODE(I64_LE_U); RETURN(COMPARE); } -#line 4686 "src/prebuilt/wasm-ast-lexer-gen.c" -yy754: +#line 4742 "src/prebuilt/wasm-ast-lexer-gen.c" +yy756: ++lexer->cursor; if ((yych = *lexer->cursor) <= '7') { if (yych <= '+') { @@ -4695,405 +4751,493 @@ yy754: } } else { if (yych <= '1') { - if (yych <= ',') goto yy755; + if (yych <= ',') goto yy757; if (yych <= '0') goto yy49; - goto yy847; + goto yy852; } else { - if (yych == '3') goto yy848; + if (yych == '3') goto yy853; goto yy49; } } } else { if (yych <= '\\') { if (yych <= ';') { - if (yych <= '8') goto yy849; + if (yych <= '8') goto yy854; if (yych <= ':') goto yy49; } else { if (yych != '[') goto yy49; } } else { if (yych <= '{') { - if (yych <= ']') goto yy755; + if (yych <= ']') goto yy757; if (yych <= 'z') goto yy49; } else { - if (yych == '}') goto yy755; + if (yych == '}') goto yy757; if (yych <= '~') goto yy49; } } } -yy755: +yy757: #line 265 "src/wasm-ast-lexer.c" { OPCODE(I64_LOAD); RETURN(LOAD); } -#line 4728 "src/prebuilt/wasm-ast-lexer-gen.c" -yy756: +#line 4784 "src/prebuilt/wasm-ast-lexer-gen.c" +yy758: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 364 "src/wasm-ast-lexer.c" { OPCODE(I64_LT_S); RETURN(COMPARE); } -#line 4736 "src/prebuilt/wasm-ast-lexer-gen.c" -yy758: +#line 4792 "src/prebuilt/wasm-ast-lexer-gen.c" +yy760: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 366 "src/wasm-ast-lexer.c" { OPCODE(I64_LT_U); RETURN(COMPARE); } -#line 4744 "src/prebuilt/wasm-ast-lexer-gen.c" -yy760: +#line 4800 "src/prebuilt/wasm-ast-lexer-gen.c" +yy762: yych = *++lexer->cursor; - if (yych == 'n') goto yy850; + if (yych == 'n') goto yy855; goto yy50; -yy761: +yy763: yych = *++lexer->cursor; - if (yych == 't') goto yy851; + if (yych == 't') goto yy856; goto yy50; -yy762: +yy764: yych = *++lexer->cursor; - if (yych == 's') goto yy852; - if (yych == 'u') goto yy854; + if (yych == 's') goto yy857; + if (yych == 'u') goto yy859; goto yy50; -yy763: +yy765: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 342 "src/wasm-ast-lexer.c" { OPCODE(I64_ROTL); RETURN(BINARY); } -#line 4765 "src/prebuilt/wasm-ast-lexer-gen.c" -yy765: +#line 4821 "src/prebuilt/wasm-ast-lexer-gen.c" +yy767: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 344 "src/wasm-ast-lexer.c" { OPCODE(I64_ROTR); RETURN(BINARY); } -#line 4773 "src/prebuilt/wasm-ast-lexer-gen.c" -yy767: +#line 4829 "src/prebuilt/wasm-ast-lexer-gen.c" +yy769: yych = *++lexer->cursor; - if (yych == 's') goto yy856; - if (yych == 'u') goto yy858; + if (yych == 's') goto yy861; + if (yych == 'u') goto yy863; goto yy50; -yy768: +yy770: yych = *++lexer->cursor; - if (yych == 'e') goto yy860; + if (yych == 'e') goto yy865; goto yy50; -yy769: +yy771: yych = *++lexer->cursor; - if (yych == 'c') goto yy862; + if (yych == 'c') goto yy867; goto yy50; -yy770: +yy772: yych = *++lexer->cursor; if (yybm[0+yych] & 16) { goto yy49; } goto yy186; -yy771: +yy773: + ++lexer->cursor; + if ((yych = *lexer->cursor) <= ';') { + if (yych <= ')') { + if (yych <= '!') { + if (yych >= '!') goto yy49; + } else { + if (yych <= '"') goto yy774; + if (yych <= '\'') goto yy49; + } + } else { + if (yych <= '/') { + if (yych != ',') goto yy49; + } else { + if (yych <= '9') goto yy775; + if (yych <= ':') goto yy49; + } + } + } else { + if (yych <= 'x') { + if (yych <= '\\') { + if (yych != '[') goto yy49; + } else { + if (yych <= ']') goto yy774; + if (yych <= 'w') goto yy49; + goto yy868; + } + } else { + if (yych <= '|') { + if (yych != '{') goto yy49; + } else { + if (yych == '~') goto yy49; + } + } + } +yy774: +#line 287 "src/wasm-ast-lexer.c" + { TEXT_AT(7); RETURN(OFFSET_EQ_NAT); } +#line 4887 "src/prebuilt/wasm-ast-lexer-gen.c" +yy775: ++lexer->cursor; if (lexer->limit <= lexer->cursor) FILL(1); yych = *lexer->cursor; if (yych <= ':') { if (yych <= ')') { if (yych <= '!') { - if (yych >= '!') goto yy49; + if (yych <= ' ') goto yy774; + goto yy49; } else { - if (yych <= '"') goto yy773; + if (yych <= '"') goto yy774; if (yych <= '\'') goto yy49; + goto yy774; } } else { if (yych <= ',') { if (yych <= '+') goto yy49; + goto yy774; } else { if (yych <= '/') goto yy49; - if (yych <= '9') goto yy771; + if (yych <= '9') goto yy775; goto yy49; } } } else { if (yych <= ']') { if (yych <= 'Z') { - if (yych >= '<') goto yy49; + if (yych <= ';') goto yy774; + goto yy49; } else { if (yych == '\\') goto yy49; + goto yy774; } } else { if (yych <= '|') { - if (yych != '{') goto yy49; + if (yych == '{') goto yy774; + goto yy49; } else { if (yych == '~') goto yy49; + goto yy774; } } } -yy773: -#line 287 "src/wasm-ast-lexer.c" - { TEXT_AT(7); RETURN(OFFSET_EQ_NAT); } -#line 4832 "src/prebuilt/wasm-ast-lexer-gen.c" -yy774: +yy777: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 435 "src/wasm-ast-lexer.c" { RETURN(REGISTER); } -#line 4840 "src/prebuilt/wasm-ast-lexer-gen.c" -yy776: +#line 4938 "src/prebuilt/wasm-ast-lexer-gen.c" +yy779: yych = *++lexer->cursor; - if (yych == 'a') goto yy863; + if (yych == 'a') goto yy869; goto yy50; -yy777: +yy780: yych = *++lexer->cursor; - if (yych == 'l') goto yy864; + if (yych == 'l') goto yy870; goto yy50; -yy778: +yy781: yych = *++lexer->cursor; - if (yych == 'l') goto yy866; + if (yych == 'l') goto yy872; goto yy50; -yy779: +yy782: yych = *++lexer->cursor; - if (yych == 'b') goto yy868; + if (yych == 'b') goto yy874; goto yy50; -yy780: +yy783: + ++lexer->cursor; + if (lexer->limit <= lexer->cursor) FILL(1); + yych = *lexer->cursor; + if (yych <= '@') { + if (yych <= '+') { + if (yych <= '"') { + if (yych == '!') goto yy49; + goto yy522; + } else { + if (yych <= '\'') goto yy49; + if (yych <= ')') goto yy522; + goto yy49; + } + } else { + if (yych <= '9') { + if (yych <= ',') goto yy522; + if (yych <= '/') goto yy49; + goto yy783; + } else { + if (yych == ';') goto yy522; + goto yy49; + } + } + } else { + if (yych <= '`') { + if (yych <= '[') { + if (yych <= 'F') goto yy783; + if (yych <= 'Z') goto yy49; + goto yy522; + } else { + if (yych == ']') goto yy522; + goto yy49; + } + } else { + if (yych <= '{') { + if (yych <= 'f') goto yy783; + if (yych <= 'z') goto yy49; + goto yy522; + } else { + if (yych == '}') goto yy522; + if (yych <= '~') goto yy49; + goto yy522; + } + } + } +yy785: yych = *++lexer->cursor; - if (yych == 'v') goto yy869; + if (yych == 'v') goto yy875; goto yy50; -yy781: +yy786: yych = *++lexer->cursor; - if (yych == 'l') goto yy870; + if (yych == 'l') goto yy876; goto yy50; -yy782: +yy787: yych = *++lexer->cursor; - if (yych == 't') goto yy871; + if (yych == 't') goto yy877; goto yy50; -yy783: +yy788: yych = *++lexer->cursor; - if (yych == 'a') goto yy872; + if (yych == 'a') goto yy878; goto yy50; -yy784: +yy789: yych = *++lexer->cursor; - if (yych == 'l') goto yy873; + if (yych == 'l') goto yy879; goto yy50; -yy785: +yy790: yych = *++lexer->cursor; - if (yych == 'r') goto yy874; + if (yych == 'r') goto yy880; goto yy50; -yy786: +yy791: yych = *++lexer->cursor; - if (yych == 'r') goto yy875; + if (yych == 'r') goto yy881; goto yy50; -yy787: +yy792: yych = *++lexer->cursor; - if (yych == 'e') goto yy876; + if (yych == 'e') goto yy882; goto yy50; -yy788: +yy793: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 291 "src/wasm-ast-lexer.c" { TYPE(F32); RETURN(CONST); } -#line 4896 "src/prebuilt/wasm-ast-lexer-gen.c" -yy790: +#line 5040 "src/prebuilt/wasm-ast-lexer-gen.c" +yy795: yych = *++lexer->cursor; - if (yych == 'r') goto yy877; + if (yych == 'r') goto yy883; goto yy50; -yy791: +yy796: yych = *++lexer->cursor; - if (yych == 'i') goto yy878; + if (yych == 'i') goto yy884; goto yy50; -yy792: +yy797: yych = *++lexer->cursor; - if (yych == 'e') goto yy879; + if (yych == 'e') goto yy885; goto yy50; -yy793: +yy798: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 309 "src/wasm-ast-lexer.c" { OPCODE(F32_FLOOR); RETURN(UNARY); } -#line 4916 "src/prebuilt/wasm-ast-lexer-gen.c" -yy795: +#line 5060 "src/prebuilt/wasm-ast-lexer-gen.c" +yy800: yych = *++lexer->cursor; - if (yych == 's') goto yy880; + if (yych == 's') goto yy886; goto yy50; -yy796: +yy801: yych = *++lexer->cursor; - if (yych == 'e') goto yy881; + if (yych == 'e') goto yy887; goto yy50; -yy797: +yy802: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 270 "src/wasm-ast-lexer.c" { OPCODE(F32_STORE); RETURN(STORE); } -#line 4932 "src/prebuilt/wasm-ast-lexer-gen.c" -yy799: +#line 5076 "src/prebuilt/wasm-ast-lexer-gen.c" +yy804: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 311 "src/wasm-ast-lexer.c" { OPCODE(F32_TRUNC); RETURN(UNARY); } -#line 4940 "src/prebuilt/wasm-ast-lexer-gen.c" -yy801: +#line 5084 "src/prebuilt/wasm-ast-lexer-gen.c" +yy806: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 292 "src/wasm-ast-lexer.c" { TYPE(F64); RETURN(CONST); } -#line 4948 "src/prebuilt/wasm-ast-lexer-gen.c" -yy803: +#line 5092 "src/prebuilt/wasm-ast-lexer-gen.c" +yy808: yych = *++lexer->cursor; - if (yych == 'r') goto yy882; + if (yych == 'r') goto yy888; goto yy50; -yy804: +yy809: yych = *++lexer->cursor; - if (yych == 'i') goto yy883; + if (yych == 'i') goto yy889; goto yy50; -yy805: +yy810: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 310 "src/wasm-ast-lexer.c" { OPCODE(F64_FLOOR); RETURN(UNARY); } -#line 4964 "src/prebuilt/wasm-ast-lexer-gen.c" -yy807: +#line 5108 "src/prebuilt/wasm-ast-lexer-gen.c" +yy812: yych = *++lexer->cursor; - if (yych == 's') goto yy884; + if (yych == 's') goto yy890; goto yy50; -yy808: +yy813: yych = *++lexer->cursor; - if (yych == 't') goto yy885; + if (yych == 't') goto yy891; goto yy50; -yy809: +yy814: yych = *++lexer->cursor; - if (yych == 'e') goto yy886; + if (yych == 'e') goto yy892; goto yy50; -yy810: +yy815: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 271 "src/wasm-ast-lexer.c" { OPCODE(F64_STORE); RETURN(STORE); } -#line 4984 "src/prebuilt/wasm-ast-lexer-gen.c" -yy812: +#line 5128 "src/prebuilt/wasm-ast-lexer-gen.c" +yy817: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 312 "src/wasm-ast-lexer.c" { OPCODE(F64_TRUNC); RETURN(UNARY); } -#line 4992 "src/prebuilt/wasm-ast-lexer-gen.c" -yy814: +#line 5136 "src/prebuilt/wasm-ast-lexer-gen.c" +yy819: yych = *++lexer->cursor; - if (yych == 'l') goto yy887; + if (yych == 'l') goto yy893; goto yy50; -yy815: +yy820: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 259 "src/wasm-ast-lexer.c" { RETURN(GET_LOCAL); } -#line 5004 "src/prebuilt/wasm-ast-lexer-gen.c" -yy817: +#line 5148 "src/prebuilt/wasm-ast-lexer-gen.c" +yy822: yych = *++lexer->cursor; - if (yych == 'r') goto yy889; + if (yych == 'r') goto yy895; goto yy50; -yy818: +yy823: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 289 "src/wasm-ast-lexer.c" { TYPE(I32); RETURN(CONST); } -#line 5016 "src/prebuilt/wasm-ast-lexer-gen.c" -yy820: +#line 5160 "src/prebuilt/wasm-ast-lexer-gen.c" +yy825: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 321 "src/wasm-ast-lexer.c" { OPCODE(I32_DIV_S); RETURN(BINARY); } -#line 5024 "src/prebuilt/wasm-ast-lexer-gen.c" -yy822: +#line 5168 "src/prebuilt/wasm-ast-lexer-gen.c" +yy827: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 323 "src/wasm-ast-lexer.c" { OPCODE(I32_DIV_U); RETURN(BINARY); } -#line 5032 "src/prebuilt/wasm-ast-lexer-gen.c" -yy824: +#line 5176 "src/prebuilt/wasm-ast-lexer-gen.c" +yy829: yych = *++lexer->cursor; - if (yych == '6') goto yy890; + if (yych == '6') goto yy896; goto yy50; -yy825: +yy830: yych = *++lexer->cursor; - if (yych == '_') goto yy891; + if (yych == '_') goto yy897; goto yy50; -yy826: +yy831: yych = *++lexer->cursor; - if (yych == 't') goto yy892; + if (yych == 't') goto yy898; goto yy50; -yy827: +yy832: yych = *++lexer->cursor; - if (yych == 'e') goto yy894; + if (yych == 'e') goto yy900; goto yy50; -yy828: +yy833: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 325 "src/wasm-ast-lexer.c" { OPCODE(I32_REM_S); RETURN(BINARY); } -#line 5056 "src/prebuilt/wasm-ast-lexer-gen.c" -yy830: +#line 5200 "src/prebuilt/wasm-ast-lexer-gen.c" +yy835: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 327 "src/wasm-ast-lexer.c" { OPCODE(I32_REM_U); RETURN(BINARY); } -#line 5064 "src/prebuilt/wasm-ast-lexer-gen.c" -yy832: +#line 5208 "src/prebuilt/wasm-ast-lexer-gen.c" +yy837: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 337 "src/wasm-ast-lexer.c" { OPCODE(I32_SHR_S); RETURN(BINARY); } -#line 5072 "src/prebuilt/wasm-ast-lexer-gen.c" -yy834: +#line 5216 "src/prebuilt/wasm-ast-lexer-gen.c" +yy839: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 339 "src/wasm-ast-lexer.c" { OPCODE(I32_SHR_U); RETURN(BINARY); } -#line 5080 "src/prebuilt/wasm-ast-lexer-gen.c" -yy836: +#line 5224 "src/prebuilt/wasm-ast-lexer-gen.c" +yy841: ++lexer->cursor; if ((yych = *lexer->cursor) <= '8') { if (yych <= ')') { if (yych <= '!') { if (yych >= '!') goto yy49; } else { - if (yych <= '"') goto yy837; + if (yych <= '"') goto yy842; if (yych <= '\'') goto yy49; } } else { if (yych <= '0') { if (yych != ',') goto yy49; } else { - if (yych <= '1') goto yy895; + if (yych <= '1') goto yy901; if (yych <= '7') goto yy49; - goto yy896; + goto yy902; } } } else { @@ -5111,99 +5255,99 @@ yy836: } } } -yy837: +yy842: #line 268 "src/wasm-ast-lexer.c" { OPCODE(I32_STORE); RETURN(STORE); } -#line 5118 "src/prebuilt/wasm-ast-lexer-gen.c" -yy838: +#line 5262 "src/prebuilt/wasm-ast-lexer-gen.c" +yy843: yych = *++lexer->cursor; - if (yych == '_') goto yy898; + if (yych == '_') goto yy904; goto yy50; -yy839: +yy844: yych = *++lexer->cursor; - if (yych == 'i') goto yy899; + if (yych == 'i') goto yy905; goto yy50; -yy840: +yy845: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 290 "src/wasm-ast-lexer.c" { TYPE(I64); RETURN(CONST); } -#line 5134 "src/prebuilt/wasm-ast-lexer-gen.c" -yy842: +#line 5278 "src/prebuilt/wasm-ast-lexer-gen.c" +yy847: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 322 "src/wasm-ast-lexer.c" { OPCODE(I64_DIV_S); RETURN(BINARY); } -#line 5142 "src/prebuilt/wasm-ast-lexer-gen.c" -yy844: +#line 5286 "src/prebuilt/wasm-ast-lexer-gen.c" +yy849: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 324 "src/wasm-ast-lexer.c" { OPCODE(I64_DIV_U); RETURN(BINARY); } -#line 5150 "src/prebuilt/wasm-ast-lexer-gen.c" -yy846: +#line 5294 "src/prebuilt/wasm-ast-lexer-gen.c" +yy851: yych = *++lexer->cursor; - if (yych == 'd') goto yy900; + if (yych == 'd') goto yy906; goto yy50; -yy847: +yy852: yych = *++lexer->cursor; - if (yych == '6') goto yy901; + if (yych == '6') goto yy907; goto yy50; -yy848: +yy853: yych = *++lexer->cursor; - if (yych == '2') goto yy902; + if (yych == '2') goto yy908; goto yy50; -yy849: +yy854: yych = *++lexer->cursor; - if (yych == '_') goto yy903; + if (yych == '_') goto yy909; goto yy50; -yy850: +yy855: yych = *++lexer->cursor; - if (yych == 't') goto yy904; + if (yych == 't') goto yy910; goto yy50; -yy851: +yy856: yych = *++lexer->cursor; - if (yych == 'e') goto yy906; + if (yych == 'e') goto yy912; goto yy50; -yy852: +yy857: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 326 "src/wasm-ast-lexer.c" { OPCODE(I64_REM_S); RETURN(BINARY); } -#line 5182 "src/prebuilt/wasm-ast-lexer-gen.c" -yy854: +#line 5326 "src/prebuilt/wasm-ast-lexer-gen.c" +yy859: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 328 "src/wasm-ast-lexer.c" { OPCODE(I64_REM_U); RETURN(BINARY); } -#line 5190 "src/prebuilt/wasm-ast-lexer-gen.c" -yy856: +#line 5334 "src/prebuilt/wasm-ast-lexer-gen.c" +yy861: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 338 "src/wasm-ast-lexer.c" { OPCODE(I64_SHR_S); RETURN(BINARY); } -#line 5198 "src/prebuilt/wasm-ast-lexer-gen.c" -yy858: +#line 5342 "src/prebuilt/wasm-ast-lexer-gen.c" +yy863: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 340 "src/wasm-ast-lexer.c" { OPCODE(I64_SHR_U); RETURN(BINARY); } -#line 5206 "src/prebuilt/wasm-ast-lexer-gen.c" -yy860: +#line 5350 "src/prebuilt/wasm-ast-lexer-gen.c" +yy865: ++lexer->cursor; if ((yych = *lexer->cursor) <= '7') { if (yych <= '+') { @@ -5215,630 +5359,688 @@ yy860: } } else { if (yych <= '1') { - if (yych <= ',') goto yy861; + if (yych <= ',') goto yy866; if (yych <= '0') goto yy49; - goto yy907; + goto yy913; } else { - if (yych == '3') goto yy908; + if (yych == '3') goto yy914; goto yy49; } } } else { if (yych <= '\\') { if (yych <= ';') { - if (yych <= '8') goto yy909; + if (yych <= '8') goto yy915; if (yych <= ':') goto yy49; } else { if (yych != '[') goto yy49; } } else { if (yych <= '{') { - if (yych <= ']') goto yy861; + if (yych <= ']') goto yy866; if (yych <= 'z') goto yy49; } else { - if (yych == '}') goto yy861; + if (yych == '}') goto yy866; if (yych <= '~') goto yy49; } } } -yy861: +yy866: #line 269 "src/wasm-ast-lexer.c" { OPCODE(I64_STORE); RETURN(STORE); } -#line 5248 "src/prebuilt/wasm-ast-lexer-gen.c" -yy862: +#line 5392 "src/prebuilt/wasm-ast-lexer-gen.c" +yy867: yych = *++lexer->cursor; - if (yych == '_') goto yy911; + if (yych == '_') goto yy917; goto yy50; -yy863: +yy868: + yych = *++lexer->cursor; + if (yych <= '@') { + if (yych <= '/') goto yy50; + if (yych <= '9') goto yy918; + goto yy50; + } else { + if (yych <= 'F') goto yy918; + if (yych <= '`') goto yy50; + if (yych <= 'f') goto yy918; + goto yy50; + } +yy869: yych = *++lexer->cursor; - if (yych == 'l') goto yy912; + if (yych == 'l') goto yy920; goto yy50; -yy864: +yy870: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 260 "src/wasm-ast-lexer.c" { RETURN(SET_LOCAL); } -#line 5264 "src/prebuilt/wasm-ast-lexer-gen.c" -yy866: +#line 5420 "src/prebuilt/wasm-ast-lexer-gen.c" +yy872: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 261 "src/wasm-ast-lexer.c" { RETURN(TEE_LOCAL); } -#line 5272 "src/prebuilt/wasm-ast-lexer-gen.c" -yy868: - yych = *++lexer->cursor; - if (yych == 'l') goto yy914; - goto yy50; -yy869: - yych = *++lexer->cursor; - if (yych == 'a') goto yy915; - goto yy50; -yy870: - yych = *++lexer->cursor; - if (yych == 'f') goto yy916; - goto yy50; -yy871: - yych = *++lexer->cursor; - if (yych == 'u') goto yy917; - goto yy50; -yy872: - yych = *++lexer->cursor; - if (yych == 'p') goto yy918; - goto yy50; -yy873: - yych = *++lexer->cursor; - if (yych == 'i') goto yy920; - goto yy50; +#line 5428 "src/prebuilt/wasm-ast-lexer-gen.c" yy874: yych = *++lexer->cursor; - if (yych == 't') goto yy921; + if (yych == 'l') goto yy922; goto yy50; yy875: yych = *++lexer->cursor; - if (yych == 'e') goto yy923; + if (yych == 'a') goto yy923; goto yy50; yy876: yych = *++lexer->cursor; - if (yych == 'm') goto yy924; + if (yych == 'f') goto yy924; goto yy50; yy877: yych = *++lexer->cursor; - if (yych == 't') goto yy925; + if (yych == 'u') goto yy925; goto yy50; yy878: yych = *++lexer->cursor; - if (yych == 'g') goto yy926; + if (yych == 'p') goto yy926; goto yy50; yy879: yych = *++lexer->cursor; - if (yych == '/') goto yy927; + if (yych == 'i') goto yy928; goto yy50; yy880: yych = *++lexer->cursor; - if (yych == 't') goto yy928; + if (yych == 't') goto yy929; goto yy50; yy881: yych = *++lexer->cursor; - if (yych == 'r') goto yy930; + if (yych == 'e') goto yy931; goto yy50; yy882: yych = *++lexer->cursor; - if (yych == 't') goto yy931; + if (yych == 'm') goto yy932; goto yy50; yy883: yych = *++lexer->cursor; - if (yych == 'g') goto yy932; + if (yych == 't') goto yy933; goto yy50; yy884: yych = *++lexer->cursor; - if (yych == 't') goto yy933; + if (yych == 'g') goto yy934; goto yy50; yy885: yych = *++lexer->cursor; - if (yych == 'e') goto yy935; + if (yych == '/') goto yy935; goto yy50; yy886: yych = *++lexer->cursor; - if (yych == 'r') goto yy936; + if (yych == 't') goto yy936; goto yy50; yy887: + yych = *++lexer->cursor; + if (yych == 'r') goto yy938; + goto yy50; +yy888: + yych = *++lexer->cursor; + if (yych == 't') goto yy939; + goto yy50; +yy889: + yych = *++lexer->cursor; + if (yych == 'g') goto yy940; + goto yy50; +yy890: + yych = *++lexer->cursor; + if (yych == 't') goto yy941; + goto yy50; +yy891: + yych = *++lexer->cursor; + if (yych == 'e') goto yy943; + goto yy50; +yy892: + yych = *++lexer->cursor; + if (yych == 'r') goto yy944; + goto yy50; +yy893: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 262 "src/wasm-ast-lexer.c" { RETURN(GET_GLOBAL); } -#line 5356 "src/prebuilt/wasm-ast-lexer-gen.c" -yy889: +#line 5512 "src/prebuilt/wasm-ast-lexer-gen.c" +yy895: yych = *++lexer->cursor; - if (yych == 'y') goto yy937; + if (yych == 'y') goto yy945; goto yy50; -yy890: +yy896: yych = *++lexer->cursor; - if (yych == '_') goto yy939; + if (yych == '_') goto yy947; goto yy50; -yy891: +yy897: yych = *++lexer->cursor; - if (yych == 's') goto yy940; - if (yych == 'u') goto yy942; + if (yych == 's') goto yy948; + if (yych == 'u') goto yy950; goto yy50; -yy892: +yy898: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 299 "src/wasm-ast-lexer.c" { OPCODE(I32_POPCNT); RETURN(UNARY); } -#line 5377 "src/prebuilt/wasm-ast-lexer-gen.c" -yy894: +#line 5533 "src/prebuilt/wasm-ast-lexer-gen.c" +yy900: yych = *++lexer->cursor; - if (yych == 'r') goto yy944; + if (yych == 'r') goto yy952; goto yy50; -yy895: +yy901: yych = *++lexer->cursor; - if (yych == '6') goto yy945; + if (yych == '6') goto yy953; goto yy50; -yy896: +yy902: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 282 "src/wasm-ast-lexer.c" { OPCODE(I32_STORE8); RETURN(STORE); } -#line 5393 "src/prebuilt/wasm-ast-lexer-gen.c" -yy898: +#line 5549 "src/prebuilt/wasm-ast-lexer-gen.c" +yy904: yych = *++lexer->cursor; - if (yych == 's') goto yy947; - if (yych == 'u') goto yy948; + if (yych == 's') goto yy955; + if (yych == 'u') goto yy956; goto yy50; -yy899: +yy905: yych = *++lexer->cursor; - if (yych == '6') goto yy949; + if (yych == '6') goto yy957; goto yy50; -yy900: +yy906: yych = *++lexer->cursor; - if (yych == '_') goto yy950; + if (yych == '_') goto yy958; goto yy50; -yy901: +yy907: yych = *++lexer->cursor; - if (yych == '_') goto yy951; + if (yych == '_') goto yy959; goto yy50; -yy902: +yy908: yych = *++lexer->cursor; - if (yych == '_') goto yy952; + if (yych == '_') goto yy960; goto yy50; -yy903: +yy909: yych = *++lexer->cursor; - if (yych == 's') goto yy953; - if (yych == 'u') goto yy955; + if (yych == 's') goto yy961; + if (yych == 'u') goto yy963; goto yy50; -yy904: +yy910: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 300 "src/wasm-ast-lexer.c" { OPCODE(I64_POPCNT); RETURN(UNARY); } -#line 5427 "src/prebuilt/wasm-ast-lexer-gen.c" -yy906: +#line 5583 "src/prebuilt/wasm-ast-lexer-gen.c" +yy912: yych = *++lexer->cursor; - if (yych == 'r') goto yy957; + if (yych == 'r') goto yy965; goto yy50; -yy907: +yy913: yych = *++lexer->cursor; - if (yych == '6') goto yy958; + if (yych == '6') goto yy966; goto yy50; -yy908: +yy914: yych = *++lexer->cursor; - if (yych == '2') goto yy960; + if (yych == '2') goto yy968; goto yy50; -yy909: +yy915: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 283 "src/wasm-ast-lexer.c" { OPCODE(I64_STORE8); RETURN(STORE); } -#line 5447 "src/prebuilt/wasm-ast-lexer-gen.c" -yy911: +#line 5603 "src/prebuilt/wasm-ast-lexer-gen.c" +yy917: yych = *++lexer->cursor; - if (yych == 's') goto yy962; - if (yych == 'u') goto yy963; + if (yych == 's') goto yy970; + if (yych == 'u') goto yy971; goto yy50; -yy912: +yy918: + ++lexer->cursor; + if (lexer->limit <= lexer->cursor) FILL(1); + yych = *lexer->cursor; + if (yych <= '@') { + if (yych <= '+') { + if (yych <= '"') { + if (yych == '!') goto yy49; + goto yy774; + } else { + if (yych <= '\'') goto yy49; + if (yych <= ')') goto yy774; + goto yy49; + } + } else { + if (yych <= '9') { + if (yych <= ',') goto yy774; + if (yych <= '/') goto yy49; + goto yy918; + } else { + if (yych == ';') goto yy774; + goto yy49; + } + } + } else { + if (yych <= '`') { + if (yych <= '[') { + if (yych <= 'F') goto yy918; + if (yych <= 'Z') goto yy49; + goto yy774; + } else { + if (yych == ']') goto yy774; + goto yy49; + } + } else { + if (yych <= '{') { + if (yych <= 'f') goto yy918; + if (yych <= 'z') goto yy49; + goto yy774; + } else { + if (yych == '}') goto yy774; + if (yych <= '~') goto yy49; + goto yy774; + } + } + } +yy920: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 263 "src/wasm-ast-lexer.c" { RETURN(SET_GLOBAL); } -#line 5460 "src/prebuilt/wasm-ast-lexer-gen.c" -yy914: +#line 5662 "src/prebuilt/wasm-ast-lexer-gen.c" +yy922: yych = *++lexer->cursor; - if (yych == 'e') goto yy964; + if (yych == 'e') goto yy972; goto yy50; -yy915: +yy923: yych = *++lexer->cursor; - if (yych == 'l') goto yy966; + if (yych == 'l') goto yy974; goto yy50; -yy916: +yy924: yych = *++lexer->cursor; - if (yych == 'o') goto yy967; + if (yych == 'o') goto yy975; goto yy50; -yy917: +yy925: yych = *++lexer->cursor; - if (yych == 'r') goto yy968; + if (yych == 'r') goto yy976; goto yy50; -yy918: +yy926: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 443 "src/wasm-ast-lexer.c" { RETURN(ASSERT_TRAP); } -#line 5484 "src/prebuilt/wasm-ast-lexer-gen.c" -yy920: +#line 5686 "src/prebuilt/wasm-ast-lexer-gen.c" +yy928: yych = *++lexer->cursor; - if (yych == 'n') goto yy969; + if (yych == 'n') goto yy977; goto yy50; -yy921: +yy929: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 254 "src/wasm-ast-lexer.c" { RETURN(CALL_IMPORT); } -#line 5496 "src/prebuilt/wasm-ast-lexer-gen.c" -yy923: +#line 5698 "src/prebuilt/wasm-ast-lexer-gen.c" +yy931: yych = *++lexer->cursor; - if (yych == 'c') goto yy970; + if (yych == 'c') goto yy978; goto yy50; -yy924: +yy932: yych = *++lexer->cursor; - if (yych == 'o') goto yy971; + if (yych == 'o') goto yy979; goto yy50; -yy925: +yy933: yych = *++lexer->cursor; - if (yych == '_') goto yy972; + if (yych == '_') goto yy980; goto yy50; -yy926: +yy934: yych = *++lexer->cursor; - if (yych == 'n') goto yy973; + if (yych == 'n') goto yy981; goto yy50; -yy927: +yy935: yych = *++lexer->cursor; - if (yych == 'f') goto yy975; + if (yych == 'f') goto yy983; goto yy50; -yy928: +yy936: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 313 "src/wasm-ast-lexer.c" { OPCODE(F32_NEAREST); RETURN(UNARY); } -#line 5524 "src/prebuilt/wasm-ast-lexer-gen.c" -yy930: +#line 5726 "src/prebuilt/wasm-ast-lexer-gen.c" +yy938: yych = *++lexer->cursor; - if (yych == 'p') goto yy976; + if (yych == 'p') goto yy984; goto yy50; -yy931: +yy939: yych = *++lexer->cursor; - if (yych == '_') goto yy977; + if (yych == '_') goto yy985; goto yy50; -yy932: +yy940: yych = *++lexer->cursor; - if (yych == 'n') goto yy978; + if (yych == 'n') goto yy986; goto yy50; -yy933: +yy941: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 314 "src/wasm-ast-lexer.c" { OPCODE(F64_NEAREST); RETURN(UNARY); } -#line 5544 "src/prebuilt/wasm-ast-lexer-gen.c" -yy935: +#line 5746 "src/prebuilt/wasm-ast-lexer-gen.c" +yy943: yych = *++lexer->cursor; - if (yych == '/') goto yy980; + if (yych == '/') goto yy988; goto yy50; -yy936: +yy944: yych = *++lexer->cursor; - if (yych == 'p') goto yy981; + if (yych == 'p') goto yy989; goto yy50; -yy937: +yy945: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 419 "src/wasm-ast-lexer.c" { RETURN(GROW_MEMORY); } -#line 5560 "src/prebuilt/wasm-ast-lexer-gen.c" -yy939: +#line 5762 "src/prebuilt/wasm-ast-lexer-gen.c" +yy947: yych = *++lexer->cursor; - if (yych == 's') goto yy982; - if (yych == 'u') goto yy984; + if (yych == 's') goto yy990; + if (yych == 'u') goto yy992; goto yy50; -yy940: +yy948: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 272 "src/wasm-ast-lexer.c" { OPCODE(I32_LOAD8_S); RETURN(LOAD); } -#line 5573 "src/prebuilt/wasm-ast-lexer-gen.c" -yy942: +#line 5775 "src/prebuilt/wasm-ast-lexer-gen.c" +yy950: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 274 "src/wasm-ast-lexer.c" { OPCODE(I32_LOAD8_U); RETURN(LOAD); } -#line 5581 "src/prebuilt/wasm-ast-lexer-gen.c" -yy944: +#line 5783 "src/prebuilt/wasm-ast-lexer-gen.c" +yy952: yych = *++lexer->cursor; - if (yych == 'p') goto yy986; + if (yych == 'p') goto yy994; goto yy50; -yy945: +yy953: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 284 "src/wasm-ast-lexer.c" { OPCODE(I32_STORE16); RETURN(STORE); } -#line 5593 "src/prebuilt/wasm-ast-lexer-gen.c" -yy947: +#line 5795 "src/prebuilt/wasm-ast-lexer-gen.c" +yy955: yych = *++lexer->cursor; - if (yych == '/') goto yy987; + if (yych == '/') goto yy995; goto yy50; -yy948: +yy956: yych = *++lexer->cursor; - if (yych == '/') goto yy988; + if (yych == '/') goto yy996; goto yy50; -yy949: +yy957: yych = *++lexer->cursor; - if (yych == '4') goto yy989; + if (yych == '4') goto yy997; goto yy50; -yy950: +yy958: yych = *++lexer->cursor; - if (yych == 's') goto yy991; - if (yych == 'u') goto yy992; + if (yych == 's') goto yy999; + if (yych == 'u') goto yy1000; goto yy50; -yy951: +yy959: yych = *++lexer->cursor; - if (yych == 's') goto yy993; - if (yych == 'u') goto yy995; + if (yych == 's') goto yy1001; + if (yych == 'u') goto yy1003; goto yy50; -yy952: +yy960: yych = *++lexer->cursor; - if (yych == 's') goto yy997; - if (yych == 'u') goto yy999; + if (yych == 's') goto yy1005; + if (yych == 'u') goto yy1007; goto yy50; -yy953: +yy961: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 273 "src/wasm-ast-lexer.c" { OPCODE(I64_LOAD8_S); RETURN(LOAD); } -#line 5628 "src/prebuilt/wasm-ast-lexer-gen.c" -yy955: +#line 5830 "src/prebuilt/wasm-ast-lexer-gen.c" +yy963: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 275 "src/wasm-ast-lexer.c" { OPCODE(I64_LOAD8_U); RETURN(LOAD); } -#line 5636 "src/prebuilt/wasm-ast-lexer-gen.c" -yy957: +#line 5838 "src/prebuilt/wasm-ast-lexer-gen.c" +yy965: yych = *++lexer->cursor; - if (yych == 'p') goto yy1001; + if (yych == 'p') goto yy1009; goto yy50; -yy958: +yy966: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 285 "src/wasm-ast-lexer.c" { OPCODE(I64_STORE16); RETURN(STORE); } -#line 5648 "src/prebuilt/wasm-ast-lexer-gen.c" -yy960: +#line 5850 "src/prebuilt/wasm-ast-lexer-gen.c" +yy968: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 286 "src/wasm-ast-lexer.c" { OPCODE(I64_STORE32); RETURN(STORE); } -#line 5656 "src/prebuilt/wasm-ast-lexer-gen.c" -yy962: +#line 5858 "src/prebuilt/wasm-ast-lexer-gen.c" +yy970: yych = *++lexer->cursor; - if (yych == '/') goto yy1002; + if (yych == '/') goto yy1010; goto yy50; -yy963: +yy971: yych = *++lexer->cursor; - if (yych == '/') goto yy1003; + if (yych == '/') goto yy1011; goto yy50; -yy964: +yy972: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 417 "src/wasm-ast-lexer.c" { RETURN(UNREACHABLE); } -#line 5672 "src/prebuilt/wasm-ast-lexer-gen.c" -yy966: +#line 5874 "src/prebuilt/wasm-ast-lexer-gen.c" +yy974: yych = *++lexer->cursor; - if (yych == 'i') goto yy1004; + if (yych == 'i') goto yy1012; goto yy50; -yy967: +yy975: yych = *++lexer->cursor; - if (yych == 'r') goto yy1005; + if (yych == 'r') goto yy1013; goto yy50; -yy968: +yy976: yych = *++lexer->cursor; - if (yych == 'n') goto yy1006; + if (yych == 'n') goto yy1014; goto yy50; -yy969: +yy977: yych = *++lexer->cursor; - if (yych == 'k') goto yy1008; + if (yych == 'k') goto yy1016; goto yy50; -yy970: +yy978: yych = *++lexer->cursor; - if (yych == 't') goto yy1009; + if (yych == 't') goto yy1017; goto yy50; -yy971: +yy979: yych = *++lexer->cursor; - if (yych == 'r') goto yy1011; + if (yych == 'r') goto yy1019; goto yy50; -yy972: +yy980: yych = *++lexer->cursor; - if (yych == 's') goto yy1012; - if (yych == 'u') goto yy1013; + if (yych == 's') goto yy1020; + if (yych == 'u') goto yy1021; goto yy50; -yy973: +yy981: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 357 "src/wasm-ast-lexer.c" { OPCODE(F32_COPYSIGN); RETURN(BINARY); } -#line 5709 "src/prebuilt/wasm-ast-lexer-gen.c" -yy975: +#line 5911 "src/prebuilt/wasm-ast-lexer-gen.c" +yy983: yych = *++lexer->cursor; - if (yych == '6') goto yy1014; + if (yych == '6') goto yy1022; goto yy50; -yy976: +yy984: yych = *++lexer->cursor; - if (yych == 'r') goto yy1015; + if (yych == 'r') goto yy1023; goto yy50; -yy977: +yy985: yych = *++lexer->cursor; - if (yych == 's') goto yy1016; - if (yych == 'u') goto yy1017; + if (yych == 's') goto yy1024; + if (yych == 'u') goto yy1025; goto yy50; -yy978: +yy986: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 358 "src/wasm-ast-lexer.c" { OPCODE(F64_COPYSIGN); RETURN(BINARY); } -#line 5730 "src/prebuilt/wasm-ast-lexer-gen.c" -yy980: +#line 5932 "src/prebuilt/wasm-ast-lexer-gen.c" +yy988: yych = *++lexer->cursor; - if (yych == 'f') goto yy1018; + if (yych == 'f') goto yy1026; goto yy50; -yy981: +yy989: yych = *++lexer->cursor; - if (yych == 'r') goto yy1019; + if (yych == 'r') goto yy1027; goto yy50; -yy982: +yy990: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 276 "src/wasm-ast-lexer.c" { OPCODE(I32_LOAD16_S); RETURN(LOAD); } -#line 5746 "src/prebuilt/wasm-ast-lexer-gen.c" -yy984: +#line 5948 "src/prebuilt/wasm-ast-lexer-gen.c" +yy992: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 278 "src/wasm-ast-lexer.c" { OPCODE(I32_LOAD16_U); RETURN(LOAD); } -#line 5754 "src/prebuilt/wasm-ast-lexer-gen.c" -yy986: +#line 5956 "src/prebuilt/wasm-ast-lexer-gen.c" +yy994: yych = *++lexer->cursor; - if (yych == 'r') goto yy1020; + if (yych == 'r') goto yy1028; goto yy50; -yy987: +yy995: yych = *++lexer->cursor; - if (yych == 'f') goto yy1021; + if (yych == 'f') goto yy1029; goto yy50; -yy988: +yy996: yych = *++lexer->cursor; - if (yych == 'f') goto yy1022; + if (yych == 'f') goto yy1030; goto yy50; -yy989: +yy997: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 393 "src/wasm-ast-lexer.c" { OPCODE(I32_WRAP_I64); RETURN(CONVERT); } -#line 5774 "src/prebuilt/wasm-ast-lexer-gen.c" -yy991: +#line 5976 "src/prebuilt/wasm-ast-lexer-gen.c" +yy999: yych = *++lexer->cursor; - if (yych == '/') goto yy1023; + if (yych == '/') goto yy1031; goto yy50; -yy992: +yy1000: yych = *++lexer->cursor; - if (yych == '/') goto yy1024; + if (yych == '/') goto yy1032; goto yy50; -yy993: +yy1001: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 277 "src/wasm-ast-lexer.c" { OPCODE(I64_LOAD16_S); RETURN(LOAD); } -#line 5790 "src/prebuilt/wasm-ast-lexer-gen.c" -yy995: +#line 5992 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1003: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 279 "src/wasm-ast-lexer.c" { OPCODE(I64_LOAD16_U); RETURN(LOAD); } -#line 5798 "src/prebuilt/wasm-ast-lexer-gen.c" -yy997: +#line 6000 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1005: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 280 "src/wasm-ast-lexer.c" { OPCODE(I64_LOAD32_S); RETURN(LOAD); } -#line 5806 "src/prebuilt/wasm-ast-lexer-gen.c" -yy999: +#line 6008 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1007: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 281 "src/wasm-ast-lexer.c" { OPCODE(I64_LOAD32_U); RETURN(LOAD); } -#line 5814 "src/prebuilt/wasm-ast-lexer-gen.c" -yy1001: +#line 6016 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1009: yych = *++lexer->cursor; - if (yych == 'r') goto yy1025; + if (yych == 'r') goto yy1033; goto yy50; -yy1002: +yy1010: yych = *++lexer->cursor; - if (yych == 'f') goto yy1026; + if (yych == 'f') goto yy1034; goto yy50; -yy1003: +yy1011: yych = *++lexer->cursor; - if (yych == 'f') goto yy1027; + if (yych == 'f') goto yy1035; goto yy50; -yy1004: +yy1012: yych = *++lexer->cursor; - if (yych == 'd') goto yy1028; + if (yych == 'd') goto yy1036; goto yy50; -yy1005: +yy1013: yych = *++lexer->cursor; - if (yych == 'm') goto yy1030; + if (yych == 'm') goto yy1038; goto yy50; -yy1006: +yy1014: ++lexer->cursor; if ((yych = *lexer->cursor) <= 'Z') { if (yych <= ')') { if (yych <= '!') { if (yych >= '!') goto yy49; } else { - if (yych <= '"') goto yy1007; + if (yych <= '"') goto yy1015; if (yych <= '\'') goto yy49; } } else { @@ -5853,9 +6055,9 @@ yy1006: if (yych <= '\\') { if (yych >= '\\') goto yy49; } else { - if (yych <= ']') goto yy1007; + if (yych <= ']') goto yy1015; if (yych <= '^') goto yy49; - goto yy1031; + goto yy1039; } } else { if (yych <= '|') { @@ -5865,558 +6067,558 @@ yy1006: } } } -yy1007: +yy1015: #line 441 "src/wasm-ast-lexer.c" { RETURN(ASSERT_RETURN); } -#line 5872 "src/prebuilt/wasm-ast-lexer-gen.c" -yy1008: +#line 6074 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1016: yych = *++lexer->cursor; - if (yych == 'a') goto yy1032; + if (yych == 'a') goto yy1040; goto yy50; -yy1009: +yy1017: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 255 "src/wasm-ast-lexer.c" { RETURN(CALL_INDIRECT); } -#line 5884 "src/prebuilt/wasm-ast-lexer-gen.c" -yy1011: +#line 6086 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1019: yych = *++lexer->cursor; - if (yych == 'y') goto yy1033; + if (yych == 'y') goto yy1041; goto yy50; -yy1012: +yy1020: yych = *++lexer->cursor; - if (yych == '/') goto yy1035; + if (yych == '/') goto yy1043; goto yy50; -yy1013: +yy1021: yych = *++lexer->cursor; - if (yych == '/') goto yy1036; + if (yych == '/') goto yy1044; goto yy50; -yy1014: +yy1022: yych = *++lexer->cursor; - if (yych == '4') goto yy1037; + if (yych == '4') goto yy1045; goto yy50; -yy1015: +yy1023: yych = *++lexer->cursor; - if (yych == 'e') goto yy1039; + if (yych == 'e') goto yy1047; goto yy50; -yy1016: +yy1024: yych = *++lexer->cursor; - if (yych == '/') goto yy1040; + if (yych == '/') goto yy1048; goto yy50; -yy1017: +yy1025: yych = *++lexer->cursor; - if (yych == '/') goto yy1041; + if (yych == '/') goto yy1049; goto yy50; -yy1018: +yy1026: yych = *++lexer->cursor; - if (yych == '3') goto yy1042; + if (yych == '3') goto yy1050; goto yy50; -yy1019: +yy1027: yych = *++lexer->cursor; - if (yych == 'e') goto yy1043; + if (yych == 'e') goto yy1051; goto yy50; -yy1020: +yy1028: yych = *++lexer->cursor; - if (yych == 'e') goto yy1044; + if (yych == 'e') goto yy1052; goto yy50; -yy1021: +yy1029: yych = *++lexer->cursor; - if (yych == '3') goto yy1045; - if (yych == '6') goto yy1046; + if (yych == '3') goto yy1053; + if (yych == '6') goto yy1054; goto yy50; -yy1022: +yy1030: yych = *++lexer->cursor; - if (yych == '3') goto yy1047; - if (yych == '6') goto yy1048; + if (yych == '3') goto yy1055; + if (yych == '6') goto yy1056; goto yy50; -yy1023: +yy1031: yych = *++lexer->cursor; - if (yych == 'i') goto yy1049; + if (yych == 'i') goto yy1057; goto yy50; -yy1024: +yy1032: yych = *++lexer->cursor; - if (yych == 'i') goto yy1050; + if (yych == 'i') goto yy1058; goto yy50; -yy1025: +yy1033: yych = *++lexer->cursor; - if (yych == 'e') goto yy1051; + if (yych == 'e') goto yy1059; goto yy50; -yy1026: +yy1034: yych = *++lexer->cursor; - if (yych == '3') goto yy1052; - if (yych == '6') goto yy1053; + if (yych == '3') goto yy1060; + if (yych == '6') goto yy1061; goto yy50; -yy1027: +yy1035: yych = *++lexer->cursor; - if (yych == '3') goto yy1054; - if (yych == '6') goto yy1055; + if (yych == '3') goto yy1062; + if (yych == '6') goto yy1063; goto yy50; -yy1028: +yy1036: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 439 "src/wasm-ast-lexer.c" { RETURN(ASSERT_INVALID); } -#line 5964 "src/prebuilt/wasm-ast-lexer-gen.c" -yy1030: +#line 6166 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1038: yych = *++lexer->cursor; - if (yych == 'e') goto yy1056; + if (yych == 'e') goto yy1064; goto yy50; -yy1031: +yy1039: yych = *++lexer->cursor; - if (yych == 'n') goto yy1057; + if (yych == 'n') goto yy1065; goto yy50; -yy1032: +yy1040: yych = *++lexer->cursor; - if (yych == 'b') goto yy1058; + if (yych == 'b') goto yy1066; goto yy50; -yy1033: +yy1041: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 418 "src/wasm-ast-lexer.c" { RETURN(CURRENT_MEMORY); } -#line 5984 "src/prebuilt/wasm-ast-lexer-gen.c" -yy1035: +#line 6186 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1043: yych = *++lexer->cursor; - if (yych == 'i') goto yy1059; + if (yych == 'i') goto yy1067; goto yy50; -yy1036: +yy1044: yych = *++lexer->cursor; - if (yych == 'i') goto yy1060; + if (yych == 'i') goto yy1068; goto yy50; -yy1037: +yy1045: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 411 "src/wasm-ast-lexer.c" { OPCODE(F32_DEMOTE_F64); RETURN(CONVERT); } -#line 6000 "src/prebuilt/wasm-ast-lexer-gen.c" -yy1039: - yych = *++lexer->cursor; - if (yych == 't') goto yy1061; - goto yy50; -yy1040: - yych = *++lexer->cursor; - if (yych == 'i') goto yy1062; - goto yy50; -yy1041: - yych = *++lexer->cursor; - if (yych == 'i') goto yy1063; - goto yy50; -yy1042: - yych = *++lexer->cursor; - if (yych == '2') goto yy1064; - goto yy50; -yy1043: - yych = *++lexer->cursor; - if (yych == 't') goto yy1066; - goto yy50; -yy1044: - yych = *++lexer->cursor; - if (yych == 't') goto yy1067; - goto yy50; -yy1045: - yych = *++lexer->cursor; - if (yych == '2') goto yy1068; - goto yy50; -yy1046: - yych = *++lexer->cursor; - if (yych == '4') goto yy1070; - goto yy50; +#line 6202 "src/prebuilt/wasm-ast-lexer-gen.c" yy1047: yych = *++lexer->cursor; - if (yych == '2') goto yy1072; + if (yych == 't') goto yy1069; goto yy50; yy1048: yych = *++lexer->cursor; - if (yych == '4') goto yy1074; + if (yych == 'i') goto yy1070; goto yy50; yy1049: yych = *++lexer->cursor; - if (yych == '3') goto yy1076; + if (yych == 'i') goto yy1071; goto yy50; yy1050: yych = *++lexer->cursor; - if (yych == '3') goto yy1077; + if (yych == '2') goto yy1072; goto yy50; yy1051: yych = *++lexer->cursor; - if (yych == 't') goto yy1078; + if (yych == 't') goto yy1074; goto yy50; yy1052: yych = *++lexer->cursor; - if (yych == '2') goto yy1079; + if (yych == 't') goto yy1075; goto yy50; yy1053: yych = *++lexer->cursor; - if (yych == '4') goto yy1081; + if (yych == '2') goto yy1076; goto yy50; yy1054: yych = *++lexer->cursor; - if (yych == '2') goto yy1083; + if (yych == '4') goto yy1078; goto yy50; yy1055: yych = *++lexer->cursor; - if (yych == '4') goto yy1085; + if (yych == '2') goto yy1080; goto yy50; yy1056: yych = *++lexer->cursor; - if (yych == 'd') goto yy1087; + if (yych == '4') goto yy1082; goto yy50; yy1057: yych = *++lexer->cursor; - if (yych == 'a') goto yy1089; + if (yych == '3') goto yy1084; goto yy50; yy1058: yych = *++lexer->cursor; - if (yych == 'l') goto yy1090; + if (yych == '3') goto yy1085; goto yy50; yy1059: yych = *++lexer->cursor; - if (yych == '3') goto yy1091; - if (yych == '6') goto yy1092; + if (yych == 't') goto yy1086; goto yy50; yy1060: yych = *++lexer->cursor; - if (yych == '3') goto yy1093; - if (yych == '6') goto yy1094; + if (yych == '2') goto yy1087; goto yy50; yy1061: yych = *++lexer->cursor; - if (yych == '/') goto yy1095; + if (yych == '4') goto yy1089; goto yy50; yy1062: yych = *++lexer->cursor; - if (yych == '3') goto yy1096; - if (yych == '6') goto yy1097; + if (yych == '2') goto yy1091; goto yy50; yy1063: yych = *++lexer->cursor; - if (yych == '3') goto yy1098; - if (yych == '6') goto yy1099; + if (yych == '4') goto yy1093; goto yy50; yy1064: + yych = *++lexer->cursor; + if (yych == 'd') goto yy1095; + goto yy50; +yy1065: + yych = *++lexer->cursor; + if (yych == 'a') goto yy1097; + goto yy50; +yy1066: + yych = *++lexer->cursor; + if (yych == 'l') goto yy1098; + goto yy50; +yy1067: + yych = *++lexer->cursor; + if (yych == '3') goto yy1099; + if (yych == '6') goto yy1100; + goto yy50; +yy1068: + yych = *++lexer->cursor; + if (yych == '3') goto yy1101; + if (yych == '6') goto yy1102; + goto yy50; +yy1069: + yych = *++lexer->cursor; + if (yych == '/') goto yy1103; + goto yy50; +yy1070: + yych = *++lexer->cursor; + if (yych == '3') goto yy1104; + if (yych == '6') goto yy1105; + goto yy50; +yy1071: + yych = *++lexer->cursor; + if (yych == '3') goto yy1106; + if (yych == '6') goto yy1107; + goto yy50; +yy1072: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 410 "src/wasm-ast-lexer.c" { OPCODE(F64_PROMOTE_F32); RETURN(CONVERT); } -#line 6112 "src/prebuilt/wasm-ast-lexer-gen.c" -yy1066: +#line 6314 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1074: yych = *++lexer->cursor; - if (yych == '/') goto yy1100; + if (yych == '/') goto yy1108; goto yy50; -yy1067: +yy1075: yych = *++lexer->cursor; - if (yych == '/') goto yy1101; + if (yych == '/') goto yy1109; goto yy50; -yy1068: +yy1076: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 394 "src/wasm-ast-lexer.c" { OPCODE(I32_TRUNC_S_F32); RETURN(CONVERT); } -#line 6128 "src/prebuilt/wasm-ast-lexer-gen.c" -yy1070: +#line 6330 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1078: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 396 "src/wasm-ast-lexer.c" { OPCODE(I32_TRUNC_S_F64); RETURN(CONVERT); } -#line 6136 "src/prebuilt/wasm-ast-lexer-gen.c" -yy1072: +#line 6338 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1080: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 398 "src/wasm-ast-lexer.c" { OPCODE(I32_TRUNC_U_F32); RETURN(CONVERT); } -#line 6144 "src/prebuilt/wasm-ast-lexer-gen.c" -yy1074: +#line 6346 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1082: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 400 "src/wasm-ast-lexer.c" { OPCODE(I32_TRUNC_U_F64); RETURN(CONVERT); } -#line 6152 "src/prebuilt/wasm-ast-lexer-gen.c" -yy1076: +#line 6354 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1084: yych = *++lexer->cursor; - if (yych == '2') goto yy1102; + if (yych == '2') goto yy1110; goto yy50; -yy1077: +yy1085: yych = *++lexer->cursor; - if (yych == '2') goto yy1104; + if (yych == '2') goto yy1112; goto yy50; -yy1078: +yy1086: yych = *++lexer->cursor; - if (yych == '/') goto yy1106; + if (yych == '/') goto yy1114; goto yy50; -yy1079: +yy1087: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 395 "src/wasm-ast-lexer.c" { OPCODE(I64_TRUNC_S_F32); RETURN(CONVERT); } -#line 6172 "src/prebuilt/wasm-ast-lexer-gen.c" -yy1081: +#line 6374 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1089: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 397 "src/wasm-ast-lexer.c" { OPCODE(I64_TRUNC_S_F64); RETURN(CONVERT); } -#line 6180 "src/prebuilt/wasm-ast-lexer-gen.c" -yy1083: +#line 6382 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1091: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 399 "src/wasm-ast-lexer.c" { OPCODE(I64_TRUNC_U_F32); RETURN(CONVERT); } -#line 6188 "src/prebuilt/wasm-ast-lexer-gen.c" -yy1085: +#line 6390 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1093: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 401 "src/wasm-ast-lexer.c" { OPCODE(I64_TRUNC_U_F64); RETURN(CONVERT); } -#line 6196 "src/prebuilt/wasm-ast-lexer-gen.c" -yy1087: +#line 6398 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1095: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 438 "src/wasm-ast-lexer.c" { RETURN(ASSERT_MALFORMED); } -#line 6204 "src/prebuilt/wasm-ast-lexer-gen.c" -yy1089: +#line 6406 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1097: yych = *++lexer->cursor; - if (yych == 'n') goto yy1107; + if (yych == 'n') goto yy1115; goto yy50; -yy1090: +yy1098: yych = *++lexer->cursor; - if (yych == 'e') goto yy1109; + if (yych == 'e') goto yy1117; goto yy50; -yy1091: +yy1099: yych = *++lexer->cursor; - if (yych == '2') goto yy1111; + if (yych == '2') goto yy1119; goto yy50; -yy1092: +yy1100: yych = *++lexer->cursor; - if (yych == '4') goto yy1113; + if (yych == '4') goto yy1121; goto yy50; -yy1093: +yy1101: yych = *++lexer->cursor; - if (yych == '2') goto yy1115; + if (yych == '2') goto yy1123; goto yy50; -yy1094: +yy1102: yych = *++lexer->cursor; - if (yych == '4') goto yy1117; + if (yych == '4') goto yy1125; goto yy50; -yy1095: +yy1103: yych = *++lexer->cursor; - if (yych == 'i') goto yy1119; + if (yych == 'i') goto yy1127; goto yy50; -yy1096: +yy1104: yych = *++lexer->cursor; - if (yych == '2') goto yy1120; + if (yych == '2') goto yy1128; goto yy50; -yy1097: +yy1105: yych = *++lexer->cursor; - if (yych == '4') goto yy1122; + if (yych == '4') goto yy1130; goto yy50; -yy1098: +yy1106: yych = *++lexer->cursor; - if (yych == '2') goto yy1124; + if (yych == '2') goto yy1132; goto yy50; -yy1099: +yy1107: yych = *++lexer->cursor; - if (yych == '4') goto yy1126; + if (yych == '4') goto yy1134; goto yy50; -yy1100: +yy1108: yych = *++lexer->cursor; - if (yych == 'i') goto yy1128; + if (yych == 'i') goto yy1136; goto yy50; -yy1101: +yy1109: yych = *++lexer->cursor; - if (yych == 'f') goto yy1129; + if (yych == 'f') goto yy1137; goto yy50; -yy1102: +yy1110: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 391 "src/wasm-ast-lexer.c" { OPCODE(I64_EXTEND_S_I32); RETURN(CONVERT); } -#line 6264 "src/prebuilt/wasm-ast-lexer-gen.c" -yy1104: +#line 6466 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1112: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 392 "src/wasm-ast-lexer.c" { OPCODE(I64_EXTEND_U_I32); RETURN(CONVERT); } -#line 6272 "src/prebuilt/wasm-ast-lexer-gen.c" -yy1106: +#line 6474 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1114: yych = *++lexer->cursor; - if (yych == 'f') goto yy1130; + if (yych == 'f') goto yy1138; goto yy50; -yy1107: +yy1115: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 442 "src/wasm-ast-lexer.c" { RETURN(ASSERT_RETURN_NAN); } -#line 6284 "src/prebuilt/wasm-ast-lexer-gen.c" -yy1109: +#line 6486 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1117: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 440 "src/wasm-ast-lexer.c" { RETURN(ASSERT_UNLINKABLE); } -#line 6292 "src/prebuilt/wasm-ast-lexer-gen.c" -yy1111: +#line 6494 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1119: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 402 "src/wasm-ast-lexer.c" { OPCODE(F32_CONVERT_S_I32); RETURN(CONVERT); } -#line 6300 "src/prebuilt/wasm-ast-lexer-gen.c" -yy1113: +#line 6502 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1121: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 404 "src/wasm-ast-lexer.c" { OPCODE(F32_CONVERT_S_I64); RETURN(CONVERT); } -#line 6308 "src/prebuilt/wasm-ast-lexer-gen.c" -yy1115: +#line 6510 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1123: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 406 "src/wasm-ast-lexer.c" { OPCODE(F32_CONVERT_U_I32); RETURN(CONVERT); } -#line 6316 "src/prebuilt/wasm-ast-lexer-gen.c" -yy1117: +#line 6518 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1125: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 408 "src/wasm-ast-lexer.c" { OPCODE(F32_CONVERT_U_I64); RETURN(CONVERT); } -#line 6324 "src/prebuilt/wasm-ast-lexer-gen.c" -yy1119: +#line 6526 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1127: yych = *++lexer->cursor; - if (yych == '3') goto yy1131; + if (yych == '3') goto yy1139; goto yy50; -yy1120: +yy1128: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 403 "src/wasm-ast-lexer.c" { OPCODE(F64_CONVERT_S_I32); RETURN(CONVERT); } -#line 6336 "src/prebuilt/wasm-ast-lexer-gen.c" -yy1122: +#line 6538 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1130: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 405 "src/wasm-ast-lexer.c" { OPCODE(F64_CONVERT_S_I64); RETURN(CONVERT); } -#line 6344 "src/prebuilt/wasm-ast-lexer-gen.c" -yy1124: +#line 6546 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1132: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 407 "src/wasm-ast-lexer.c" { OPCODE(F64_CONVERT_U_I32); RETURN(CONVERT); } -#line 6352 "src/prebuilt/wasm-ast-lexer-gen.c" -yy1126: +#line 6554 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1134: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 409 "src/wasm-ast-lexer.c" { OPCODE(F64_CONVERT_U_I64); RETURN(CONVERT); } -#line 6360 "src/prebuilt/wasm-ast-lexer-gen.c" -yy1128: +#line 6562 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1136: yych = *++lexer->cursor; - if (yych == '6') goto yy1132; + if (yych == '6') goto yy1140; goto yy50; -yy1129: +yy1137: yych = *++lexer->cursor; - if (yych == '3') goto yy1133; + if (yych == '3') goto yy1141; goto yy50; -yy1130: +yy1138: yych = *++lexer->cursor; - if (yych == '6') goto yy1134; + if (yych == '6') goto yy1142; goto yy50; -yy1131: +yy1139: yych = *++lexer->cursor; - if (yych == '2') goto yy1135; + if (yych == '2') goto yy1143; goto yy50; -yy1132: +yy1140: yych = *++lexer->cursor; - if (yych == '4') goto yy1137; + if (yych == '4') goto yy1145; goto yy50; -yy1133: +yy1141: yych = *++lexer->cursor; - if (yych == '2') goto yy1139; + if (yych == '2') goto yy1147; goto yy50; -yy1134: +yy1142: yych = *++lexer->cursor; - if (yych == '4') goto yy1141; + if (yych == '4') goto yy1149; goto yy50; -yy1135: +yy1143: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 412 "src/wasm-ast-lexer.c" { OPCODE(F32_REINTERPRET_I32); RETURN(CONVERT); } -#line 6396 "src/prebuilt/wasm-ast-lexer-gen.c" -yy1137: +#line 6598 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1145: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 414 "src/wasm-ast-lexer.c" { OPCODE(F64_REINTERPRET_I64); RETURN(CONVERT); } -#line 6404 "src/prebuilt/wasm-ast-lexer-gen.c" -yy1139: +#line 6606 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1147: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 413 "src/wasm-ast-lexer.c" { OPCODE(I32_REINTERPRET_F32); RETURN(CONVERT); } -#line 6412 "src/prebuilt/wasm-ast-lexer-gen.c" -yy1141: +#line 6614 "src/prebuilt/wasm-ast-lexer-gen.c" +yy1149: ++lexer->cursor; if (yybm[0+(yych = *lexer->cursor)] & 16) { goto yy49; } #line 415 "src/wasm-ast-lexer.c" { OPCODE(I64_REINTERPRET_F64); RETURN(CONVERT); } -#line 6420 "src/prebuilt/wasm-ast-lexer-gen.c" +#line 6622 "src/prebuilt/wasm-ast-lexer-gen.c" } } #line 466 "src/wasm-ast-lexer.c" diff --git a/src/wasm-ast-checker.c b/src/wasm-ast-checker.c index 47bd6a51..b07e4df5 100644 --- a/src/wasm-ast-checker.c +++ b/src/wasm-ast-checker.c @@ -908,71 +908,17 @@ static void print_const_expr_error(Context* ctx, desc); } -static WasmResult eval_const_expr_i32(Context* ctx, - const WasmExpr* expr, - const char* desc, - WasmBool* out_has_value, - uint32_t* out_value) { - if (expr->next != NULL) { - expr = expr->next; - goto invalid_expr; - } - - switch (expr->type) { - case WASM_EXPR_TYPE_CONST: - if (expr->const_.type != WASM_TYPE_I32) { - print_error(ctx, CHECK_STYLE_FULL, &expr->loc, - "%s must be of type i32; got %s.", desc, - s_type_names[expr->const_.type]); - return WASM_ERROR; - } - *out_has_value = WASM_TRUE; - *out_value = expr->const_.u32; - return WASM_OK; - - case WASM_EXPR_TYPE_GET_GLOBAL: { - const WasmGlobal* global = NULL; - if (WASM_FAILED( - check_global_var(ctx, &expr->get_global.var, &global, NULL))) - return WASM_ERROR; - - if (global->type != WASM_TYPE_I32) { - print_error(ctx, CHECK_STYLE_FULL, &expr->loc, - "%s must be of type i32; got %s.", desc, - s_type_names[expr->const_.type]); - return WASM_ERROR; - } - - /* TODO(binji): handle infinite recursion */ - if (global->init_expr) { - return eval_const_expr_i32(ctx, global->init_expr, desc, out_has_value, - out_value); - } else { - /* imported globals can't be evaluated until they're linked. */ - *out_has_value = WASM_FALSE; - *out_value = 0; - return WASM_OK; - } - } - - invalid_expr: - default: - print_const_expr_error(ctx, &expr->loc, desc); - return WASM_ERROR; - } -} - -static void check_global(Context* ctx, - const WasmLocation* loc, - const WasmGlobal* global) { - static const char s_desc[] = "global initializer expression"; +static void check_const_init_expr(Context* ctx, + const WasmLocation* loc, + const WasmExpr* expr, + WasmType expected_type, + const char* desc) { WasmType type = WASM_TYPE_VOID; - WasmExpr* expr = global->init_expr; if (!expr) return; if (expr->next != NULL) { - print_const_expr_error(ctx, loc, s_desc); + print_const_expr_error(ctx, loc, desc); return; } @@ -993,18 +939,30 @@ static void check_global(Context* ctx, /* globals can only reference previously defined globals */ if (ref_global_index >= ctx->current_global_index) { print_error(ctx, CHECK_STYLE_FULL, loc, - "global can only be defined in terms of a previously " - "defined global."); + "initializer expression can only be reference a previously " + "defined global"); + } + + if (ref_global->mutable_) { + print_error(ctx, CHECK_STYLE_FULL, loc, + "initializer expression cannot reference a mutable global"); } break; } default: - print_const_expr_error(ctx, loc, s_desc); + print_const_expr_error(ctx, loc, desc); return; } - check_type(ctx, &expr->loc, type, global->type, s_desc); + check_type(ctx, &expr->loc, type, expected_type, desc); +} + +static void check_global(Context* ctx, + const WasmLocation* loc, + const WasmGlobal* global) { + check_const_init_expr(ctx, loc, global->init_expr, global->type, + "global initializer expression"); } static void check_limits(Context* ctx, @@ -1043,7 +1001,6 @@ static void check_table(Context* ctx, static void check_elem_segments(Context* ctx, const WasmModule* module) { WasmModuleField* field; - uint32_t last_end = 0; for (field = module->first_field; field; field = field->next) { if (field->type != WASM_MODULE_FIELD_TYPE_ELEM_SEGMENT) continue; @@ -1054,29 +1011,8 @@ static void check_elem_segments(Context* ctx, const WasmModule* module) { check_table_var(ctx, &elem_segment->table_var, &table))) continue; - WasmBool has_offset = WASM_FALSE; - uint32_t offset = 0; - if (WASM_SUCCEEDED(eval_const_expr_i32(ctx, elem_segment->offset, - "elem segment expression", - &has_offset, &offset))) { - if (has_offset) { - if (offset < last_end) { - print_error( - ctx, CHECK_STYLE_FULL, &field->loc, - "segment offset (%u) less than end of previous segment (%u)", - offset, last_end); - } - - uint64_t max = table->elem_limits.initial; - if ((uint64_t)offset + elem_segment->vars.size > max) { - print_error(ctx, CHECK_STYLE_FULL, &field->loc, - "segment ends past the end of the table (%" PRIu64 ")", - max); - } - - last_end = offset + elem_segment->vars.size; - } - } + check_const_init_expr(ctx, &field->loc, elem_segment->offset, WASM_TYPE_I32, + "elem segment offset"); } } @@ -1090,7 +1026,6 @@ static void check_memory(Context* ctx, static void check_data_segments(Context* ctx, const WasmModule* module) { WasmModuleField* field; - uint32_t last_end = 0; for (field = module->first_field; field; field = field->next) { if (field->type != WASM_MODULE_FIELD_TYPE_DATA_SEGMENT) continue; @@ -1101,30 +1036,8 @@ static void check_data_segments(Context* ctx, const WasmModule* module) { check_memory_var(ctx, &data_segment->memory_var, &memory))) continue; - WasmBool has_offset = WASM_FALSE; - uint32_t offset = 0; - if (WASM_SUCCEEDED(eval_const_expr_i32(ctx, data_segment->offset, - "data segment expression", - &has_offset, &offset))) { - if (has_offset) { - if (offset < last_end) { - print_error( - ctx, CHECK_STYLE_FULL, &field->loc, - "segment offset (%u) less than end of previous segment (%u)", - offset, last_end); - } - - uint32_t max = memory->page_limits.initial; - const uint64_t memory_initial_size = (uint64_t)max * WASM_PAGE_SIZE; - if ((uint64_t)offset + data_segment->size > memory_initial_size) { - print_error(ctx, CHECK_STYLE_FULL, &field->loc, - "segment ends past the end of memory (%" PRIu64 ")", - memory_initial_size); - } - - last_end = offset + data_segment->size; - } - } + check_const_init_expr(ctx, &field->loc, data_segment->offset, WASM_TYPE_I32, + "data segment offset"); } } diff --git a/src/wasm-ast-lexer.c b/src/wasm-ast-lexer.c index ad2c4e3d..f3409918 100644 --- a/src/wasm-ast-lexer.c +++ b/src/wasm-ast-lexer.c @@ -284,8 +284,8 @@ int wasm_ast_lexer_lex(WASM_AST_PARSER_STYPE* lval, <i> "i32.store16" { OPCODE(I32_STORE16); RETURN(STORE); } <i> "i64.store16" { OPCODE(I64_STORE16); RETURN(STORE); } <i> "i64.store32" { OPCODE(I64_STORE32); RETURN(STORE); } - <i> "offset="digits { TEXT_AT(7); RETURN(OFFSET_EQ_NAT); } - <i> "align="digits { TEXT_AT(6); RETURN(ALIGN_EQ_NAT); } + <i> "offset=" nat { TEXT_AT(7); RETURN(OFFSET_EQ_NAT); } + <i> "align=" nat { TEXT_AT(6); RETURN(ALIGN_EQ_NAT); } <i> "i32.const" { TYPE(I32); RETURN(CONST); } <i> "i64.const" { TYPE(I64); RETURN(CONST); } <i> "f32.const" { TYPE(F32); RETURN(CONST); } diff --git a/src/wasm-binary-reader-interpreter.c b/src/wasm-binary-reader-interpreter.c index 3155d98f..57d2fa23 100644 --- a/src/wasm-binary-reader-interpreter.c +++ b/src/wasm-binary-reader-interpreter.c @@ -586,7 +586,7 @@ static WasmResult on_data_segment_data(uint32_t index, assert(ctx->init_expr_value.type == WASM_TYPE_I32); uint32_t address = ctx->init_expr_value.value.i32; uint8_t* dst_data = memory->data; - if ((uint64_t)address + (uint64_t)size > memory->byte_size) + if (size > 0 && (uint64_t)address + (uint64_t)size > memory->byte_size) return WASM_ERROR; memcpy(&dst_data[address], src_data, size); return WASM_OK; diff --git a/test/parse/module/bad-memory-segment-address-negative.txt b/test/parse/module/bad-memory-segment-address-negative.txt deleted file mode 100644 index 37ba91b4..00000000 --- a/test/parse/module/bad-memory-segment-address-negative.txt +++ /dev/null @@ -1,9 +0,0 @@ -;;; ERROR: 1 -(module - (memory 100) - (data (i32.const -1) "foo")) -(;; STDERR ;;; -parse/module/bad-memory-segment-address-negative.txt:4:3: segment ends past the end of memory (6553600) - (data (i32.const -1) "foo")) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^ -;;; STDERR ;;) diff --git a/test/parse/module/bad-memory-segment-address-oob.txt b/test/parse/module/bad-memory-segment-address-oob.txt deleted file mode 100644 index 02e0514d..00000000 --- a/test/parse/module/bad-memory-segment-address-oob.txt +++ /dev/null @@ -1,9 +0,0 @@ -;;; ERROR: 1 -(module - (memory 1 1) - (data (i32.const 80000) "hi")) -(;; STDERR ;;; -parse/module/bad-memory-segment-address-oob.txt:4:3: segment ends past the end of memory (65536) - (data (i32.const 80000) "hi")) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -;;; STDERR ;;) diff --git a/test/parse/module/bad-memory-segment-end-oob.txt b/test/parse/module/bad-memory-segment-end-oob.txt deleted file mode 100644 index e2b3adba..00000000 --- a/test/parse/module/bad-memory-segment-end-oob.txt +++ /dev/null @@ -1,9 +0,0 @@ -;;; ERROR: 1 -(module - (memory 1 1) - (data (i32.const 65531) "56789a")) -(;; STDERR ;;; -parse/module/bad-memory-segment-end-oob.txt:4:3: segment ends past the end of memory (65536) - (data (i32.const 65531) "56789a")) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -;;; STDERR ;;) diff --git a/test/parse/module/bad-memory-segment-overlap.txt b/test/parse/module/bad-memory-segment-overlap.txt deleted file mode 100644 index 464f5330..00000000 --- a/test/parse/module/bad-memory-segment-overlap.txt +++ /dev/null @@ -1,10 +0,0 @@ -;;; ERROR: 1 -(module - (memory 1) - (data (i32.const 0) "hello") - (data (i32.const 3) "hi")) -(;; STDERR ;;; -parse/module/bad-memory-segment-overlap.txt:5:3: segment offset (3) less than end of previous segment (5) - (data (i32.const 3) "hi")) - ^^^^^^^^^^^^^^^^^^^^^^^^^ -;;; STDERR ;;) diff --git a/test/parse/module/bad-table-too-many.txt b/test/parse/module/bad-table-too-many.txt index 36b515cc..f86b3fc4 100644 --- a/test/parse/module/bad-table-too-many.txt +++ b/test/parse/module/bad-table-too-many.txt @@ -7,7 +7,4 @@ parse/module/bad-table-too-many.txt:5:3: only one table allowed (table anyfunc (elem 0))) ^^^^^^^^^^^^^^^^^^^^^^^^ -parse/module/bad-table-too-many.txt:5:3: segment offset (0) less than end of previous segment (1) - (table anyfunc (elem 0))) - ^^^^^^^^^^^^^^^^^^^^^^^^ ;;; STDERR ;;) diff --git a/test/spec/block.txt b/test/spec/block.txt index e17921d9..4ffb2434 100644 --- a/test/spec/block.txt +++ b/test/spec/block.txt @@ -58,91 +58,91 @@ assert_invalid error: (module (func $type-value-num-vs-num (result i32) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/block.wast:208:17: type stack size too small at br value. got 0, expected at least 1 + third_party/testsuite/block.wast:203:17: type stack size too small at br value. got 0, expected at least 1 (block i32 (br 0)) ^^^^ assert_invalid error: - third_party/testsuite/block.wast:214:17: type stack size too small at br value. got 0, expected at least 1 + third_party/testsuite/block.wast:209:17: type stack size too small at br value. got 0, expected at least 1 (block i32 (br 0) (i32.const 1)) ^^^^ assert_invalid error: - third_party/testsuite/block.wast:220:11: type stack size too small at function. got 0, expected at least 1 + third_party/testsuite/block.wast:215:11: type stack size too small at function. got 0, expected at least 1 (module (func $type-break-void-vs-num (result i32) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/block.wast:220:11: type stack at end of function is 0. expected 1 + third_party/testsuite/block.wast:215:11: type stack at end of function is 0. expected 1 (module (func $type-break-void-vs-num (result i32) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/block.wast:226:11: type stack size too small at function. got 0, expected at least 1 + third_party/testsuite/block.wast:221:11: type stack size too small at function. got 0, expected at least 1 (module (func $type-break-num-vs-num (result i32) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/block.wast:226:11: type stack at end of function is 0. expected 1 + third_party/testsuite/block.wast:221:11: type stack at end of function is 0. expected 1 (module (func $type-break-num-vs-num (result i32) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/block.wast:232:11: type stack size too small at function. got 0, expected at least 1 + third_party/testsuite/block.wast:227:11: type stack size too small at function. got 0, expected at least 1 (module (func $type-break-first-void-vs-num (result i32) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/block.wast:232:11: type stack at end of function is 0. expected 1 + third_party/testsuite/block.wast:227:11: type stack at end of function is 0. expected 1 (module (func $type-break-first-void-vs-num (result i32) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/block.wast:238:11: type stack size too small at function. got 0, expected at least 1 + third_party/testsuite/block.wast:233:11: type stack size too small at function. got 0, expected at least 1 (module (func $type-break-first-num-vs-num (result i32) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/block.wast:238:11: type stack at end of function is 0. expected 1 + third_party/testsuite/block.wast:233:11: type stack at end of function is 0. expected 1 (module (func $type-break-first-num-vs-num (result i32) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/block.wast:245:11: type stack at end of function is 1. expected 0 + third_party/testsuite/block.wast:240:11: type stack at end of function is 1. expected 0 (module (func $type-break-nested-num-vs-void ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/block.wast:251:11: type stack size too small at function. got 0, expected at least 1 + third_party/testsuite/block.wast:246:11: type stack size too small at function. got 0, expected at least 1 (module (func $type-break-nested-empty-vs-num (result i32) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/block.wast:251:11: type stack at end of function is 0. expected 1 + third_party/testsuite/block.wast:246:11: type stack at end of function is 0. expected 1 (module (func $type-break-nested-empty-vs-num (result i32) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/block.wast:258:11: type stack size too small at function. got 0, expected at least 1 + third_party/testsuite/block.wast:253:11: type stack size too small at function. got 0, expected at least 1 (module (func $type-break-nested-void-vs-num (result i32) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/block.wast:258:11: type stack at end of function is 0. expected 1 + third_party/testsuite/block.wast:253:11: type stack at end of function is 0. expected 1 (module (func $type-break-nested-void-vs-num (result i32) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/block.wast:264:11: type stack size too small at function. got 0, expected at least 1 + third_party/testsuite/block.wast:259:11: type stack size too small at function. got 0, expected at least 1 (module (func $type-break-nested-num-vs-num (result i32) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/block.wast:264:11: type stack at end of function is 0. expected 1 + third_party/testsuite/block.wast:259:11: type stack at end of function is 0. expected 1 (module (func $type-break-nested-num-vs-num (result i32) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/block.wast:272:6: type stack size too small at i32.ctz. got 0, expected at least 1 + third_party/testsuite/block.wast:267:6: type stack size too small at i32.ctz. got 0, expected at least 1 (i32.ctz (block (br 0))) ^^^^^^^ assert_invalid error: - third_party/testsuite/block.wast:279:6: type stack size too small at i64.ctz. got 0, expected at least 1 + third_party/testsuite/block.wast:274:6: type stack size too small at i64.ctz. got 0, expected at least 1 (i64.ctz (block (br 0 (nop)))) ^^^^^^^ assert_invalid error: - third_party/testsuite/block.wast:278:11: type mismatch at function. got i64, expected i32 + third_party/testsuite/block.wast:273:11: type mismatch at function. got i64, expected i32 (module (func $type-break-operand-void-vs-num (result i32) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/block.wast:285:6: type stack size too small at i64.ctz. got 0, expected at least 1 + third_party/testsuite/block.wast:280:6: type stack size too small at i64.ctz. got 0, expected at least 1 (i64.ctz (block (br 0 (i64.const 9)))) ^^^^^^^ assert_invalid error: - third_party/testsuite/block.wast:284:11: type mismatch at function. got i64, expected i32 + third_party/testsuite/block.wast:279:11: type mismatch at function. got i64, expected i32 (module (func $type-break-operand-num-vs-num (result i32) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14/14 tests passed. diff --git a/test/spec/br_table.txt b/test/spec/br_table.txt index 5d48d5b1..c89bf8ba 100644 --- a/test/spec/br_table.txt +++ b/test/spec/br_table.txt @@ -10,63 +10,63 @@ assert_invalid error: (module (func $type-arg-void-vs-num (result i32) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/br_table.wast:1401:17: type stack size too small at br_table default target. got 0, expected at least 1 + third_party/testsuite/br_table.wast:1396:17: type stack size too small at br_table default target. got 0, expected at least 1 (block i32 (br_table 0 (nop) (i32.const 1)) (i32.const 1)) ^^^^^^^^^^ assert_invalid error: - third_party/testsuite/br_table.wast:1407:17: type mismatch at br_table target. got i64, expected i32 + third_party/testsuite/br_table.wast:1402:17: type mismatch at br_table target. got i64, expected i32 (block i32 (br_table 0 0 0 (i64.const 1) (i32.const 1)) (i32.const 1)) ^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/br_table.wast:1407:17: type mismatch at br_table target. got i64, expected i32 + third_party/testsuite/br_table.wast:1402:17: type mismatch at br_table target. got i64, expected i32 (block i32 (br_table 0 0 0 (i64.const 1) (i32.const 1)) (i32.const 1)) ^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/br_table.wast:1407:17: type mismatch at br_table default target. got i64, expected i32 + third_party/testsuite/br_table.wast:1402:17: type mismatch at br_table default target. got i64, expected i32 (block i32 (br_table 0 0 0 (i64.const 1) (i32.const 1)) (i32.const 1)) ^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/br_table.wast:1414:13: type stack size too small at br_table key. got 0, expected at least 1 + third_party/testsuite/br_table.wast:1409:13: type stack size too small at br_table key. got 0, expected at least 1 (block (br_table 0 0 0 (nop))) ^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/br_table.wast:1420:13: type mismatch at br_table key. got i64, expected i32 + third_party/testsuite/br_table.wast:1415:13: type mismatch at br_table key. got i64, expected i32 (block (br_table 0 (i64.const 0))) ^^^^^^^^^^ assert_invalid error: - third_party/testsuite/br_table.wast:1426:17: type stack size too small at br_table target. got 0, expected at least 1 + third_party/testsuite/br_table.wast:1421:17: type stack size too small at br_table target. got 0, expected at least 1 (block i32 (br_table 0 0 (i32.const 0) (nop)) (i32.const 1)) ^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/br_table.wast:1426:17: type stack size too small at br_table default target. got 0, expected at least 1 + third_party/testsuite/br_table.wast:1421:17: type stack size too small at br_table default target. got 0, expected at least 1 (block i32 (br_table 0 0 (i32.const 0) (nop)) (i32.const 1)) ^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/br_table.wast:1432:17: type mismatch at br_table key. got i64, expected i32 + third_party/testsuite/br_table.wast:1427:17: type mismatch at br_table key. got i64, expected i32 (block i32 (br_table 0 0 (i32.const 0) (i64.const 0)) (i32.const 1)) ^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/br_table.wast:1439:22: label variable out of range (max 2) + third_party/testsuite/br_table.wast:1434:22: label variable out of range (max 2) (block (br_table 2 1 (i32.const 1))) ^ assert_invalid error: - third_party/testsuite/br_table.wast:1445:31: label variable out of range (max 3) + third_party/testsuite/br_table.wast:1440:31: label variable out of range (max 3) (block (block (br_table 0 5 (i32.const 1)))) ^ assert_invalid error: - third_party/testsuite/br_table.wast:1451:24: label variable out of range (max 2) + third_party/testsuite/br_table.wast:1446:24: label variable out of range (max 2) (block (br_table 0 0x10000001 0 (i32.const 1))) ^^^^^^^^^^ assert_invalid error: - third_party/testsuite/br_table.wast:1458:24: label variable out of range (max 2) + third_party/testsuite/br_table.wast:1453:24: label variable out of range (max 2) (block (br_table 1 2 (i32.const 1))) ^ assert_invalid error: - third_party/testsuite/br_table.wast:1464:31: label variable out of range (max 3) + third_party/testsuite/br_table.wast:1459:31: label variable out of range (max 3) (block (block (br_table 0 5 (i32.const 1)))) ^ assert_invalid error: - third_party/testsuite/br_table.wast:1470:26: label variable out of range (max 2) + third_party/testsuite/br_table.wast:1465:26: label variable out of range (max 2) (block (br_table 0 0 0x10000001 (i32.const 1))) ^^^^^^^^^^ 143/143 tests passed. diff --git a/test/spec/call.txt b/test/spec/call.txt index 6dcf240f..f544b38a 100644 --- a/test/spec/call.txt +++ b/test/spec/call.txt @@ -34,35 +34,35 @@ assert_invalid error: (func $arity-2-vs-0 (call 1 (f64.const 2) (i32.const 1))) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/call.wast:204:36: type stack size too small at call. got 1, expected at least 2 + third_party/testsuite/call.wast:196:36: type stack size too small at call. got 1, expected at least 2 (func $type-first-void-vs-num (call 1 (nop) (i32.const 1))) ^^^^^^ assert_invalid error: - third_party/testsuite/call.wast:211:37: type stack size too small at call. got 1, expected at least 2 + third_party/testsuite/call.wast:203:37: type stack size too small at call. got 1, expected at least 2 (func $type-second-void-vs-num (call 1 (i32.const 1) (nop))) ^^^^^^ assert_invalid error: - third_party/testsuite/call.wast:218:35: type mismatch for argument 0 of call. got f64, expected i32 + third_party/testsuite/call.wast:210:35: type mismatch for argument 0 of call. got f64, expected i32 (func $type-first-num-vs-num (call 1 (f64.const 1) (i32.const 1))) ^^^^^^ assert_invalid error: - third_party/testsuite/call.wast:218:35: type mismatch for argument 1 of call. got i32, expected f64 + third_party/testsuite/call.wast:210:35: type mismatch for argument 1 of call. got i32, expected f64 (func $type-first-num-vs-num (call 1 (f64.const 1) (i32.const 1))) ^^^^^^ assert_invalid error: - third_party/testsuite/call.wast:225:36: type mismatch for argument 0 of call. got i32, expected f64 + third_party/testsuite/call.wast:217:36: type mismatch for argument 0 of call. got i32, expected f64 (func $type-second-num-vs-num (call 1 (i32.const 1) (f64.const 1))) ^^^^^^ assert_invalid error: - third_party/testsuite/call.wast:225:36: type mismatch for argument 1 of call. got f64, expected i32 + third_party/testsuite/call.wast:217:36: type mismatch for argument 1 of call. got f64, expected i32 (func $type-second-num-vs-num (call 1 (i32.const 1) (f64.const 1))) ^^^^^^ assert_invalid error: - third_party/testsuite/call.wast:235:37: function variable out of range (max 1) + third_party/testsuite/call.wast:227:37: function variable out of range (max 1) (module (func $unbound-func (call 1))) ^ assert_invalid error: - third_party/testsuite/call.wast:239:35: function variable out of range (max 1) + third_party/testsuite/call.wast:231:35: function variable out of range (max 1) (module (func $large-func (call 1012321300))) ^^^^^^^^^^ 35/35 tests passed. diff --git a/test/spec/call_indirect.txt b/test/spec/call_indirect.txt index 3726b827..4778111a 100644 --- a/test/spec/call_indirect.txt +++ b/test/spec/call_indirect.txt @@ -38,51 +38,51 @@ assert_invalid error: (func $arity-2-vs-0 ^ assert_invalid error: - third_party/testsuite/call_indirect.wast:307:35: type stack size too small at call_indirect. got 0, expected at least 1 + third_party/testsuite/call_indirect.wast:292:35: type stack size too small at call_indirect. got 0, expected at least 1 (func $type-func-void-vs-i32 (call_indirect 0 (i32.const 1) (nop))) ^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/call_indirect.wast:315:34: type mismatch at call_indirect function index. got i64, expected i32 + third_party/testsuite/call_indirect.wast:300:34: type mismatch at call_indirect function index. got i64, expected i32 (func $type-func-num-vs-i32 (call_indirect 0 (i32.const 0) (i64.const 1))) ^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/call_indirect.wast:325:8: type stack size too small at call_indirect. got 1, expected at least 2 + third_party/testsuite/call_indirect.wast:310:8: type stack size too small at call_indirect. got 1, expected at least 2 (call_indirect 0 (nop) (i32.const 1) (i32.const 0)) ^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/call_indirect.wast:335:8: type stack size too small at call_indirect. got 1, expected at least 2 + third_party/testsuite/call_indirect.wast:320:8: type stack size too small at call_indirect. got 1, expected at least 2 (call_indirect 0 (i32.const 1) (nop) (i32.const 0)) ^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/call_indirect.wast:345:8: type mismatch for argument 0 of call_indirect. got f64, expected i32 + third_party/testsuite/call_indirect.wast:330:8: type mismatch for argument 0 of call_indirect. got f64, expected i32 (call_indirect 0 (f64.const 1) (i32.const 1) (i32.const 0)) ^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/call_indirect.wast:345:8: type mismatch for argument 1 of call_indirect. got i32, expected f64 + third_party/testsuite/call_indirect.wast:330:8: type mismatch for argument 1 of call_indirect. got i32, expected f64 (call_indirect 0 (f64.const 1) (i32.const 1) (i32.const 0)) ^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/call_indirect.wast:355:8: type mismatch for argument 0 of call_indirect. got i32, expected f64 + third_party/testsuite/call_indirect.wast:340:8: type mismatch for argument 0 of call_indirect. got i32, expected f64 (call_indirect 0 (i32.const 1) (f64.const 1) (i32.const 0)) ^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/call_indirect.wast:355:8: type mismatch for argument 1 of call_indirect. got f64, expected i32 + third_party/testsuite/call_indirect.wast:340:8: type mismatch for argument 1 of call_indirect. got f64, expected i32 (call_indirect 0 (i32.const 1) (f64.const 1) (i32.const 0)) ^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/call_indirect.wast:367:40: function type variable out of range (max 1) + third_party/testsuite/call_indirect.wast:352:40: function type variable out of range (max 1) (func $unbound-type (call_indirect 1 (i32.const 0))) ^ assert_invalid error: - third_party/testsuite/call_indirect.wast:367:5: type stack at end of function is 1. expected 0 + third_party/testsuite/call_indirect.wast:352:5: type stack at end of function is 1. expected 0 (func $unbound-type (call_indirect 1 (i32.const 0))) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/call_indirect.wast:374:38: function type variable out of range (max 1) + third_party/testsuite/call_indirect.wast:359:38: function type variable out of range (max 1) (func $large-type (call_indirect 1012321300 (i32.const 0))) ^^^^^^^^^^ assert_invalid error: - third_party/testsuite/call_indirect.wast:374:5: type stack at end of function is 1. expected 0 + third_party/testsuite/call_indirect.wast:359:5: type stack at end of function is 1. expected 0 (func $large-type (call_indirect 1012321300 (i32.const 0))) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 48/48 tests passed. diff --git a/test/spec/func.txt b/test/spec/func.txt index 9cfe4126..0b6e87a6 100644 --- a/test/spec/func.txt +++ b/test/spec/func.txt @@ -126,35 +126,35 @@ assert_invalid error: (return (i64.const 1)) (return (i32.const 1)) ^^^^^^ assert_invalid error: - third_party/testsuite/func.wast:485:6: type stack size too small at br value. got 0, expected at least 1 + third_party/testsuite/func.wast:480:6: type stack size too small at br value. got 0, expected at least 1 (br 0) ^^^^ assert_invalid error: - third_party/testsuite/func.wast:491:6: type mismatch at br value. got f32, expected i32 + third_party/testsuite/func.wast:486:6: type mismatch at br value. got f32, expected i32 (br 0 (f32.const 0)) ^^^^ assert_invalid error: - third_party/testsuite/func.wast:497:6: type stack size too small at br value. got 0, expected at least 1 + third_party/testsuite/func.wast:492:6: type stack size too small at br value. got 0, expected at least 1 (br 0) (i32.const 1) ^^^^ assert_invalid error: - third_party/testsuite/func.wast:503:6: type mismatch at br value. got i64, expected i32 + third_party/testsuite/func.wast:498:6: type mismatch at br value. got i64, expected i32 (br 0 (i64.const 1)) (i32.const 1) ^^^^ assert_invalid error: - third_party/testsuite/func.wast:509:6: type mismatch at br value. got i64, expected i32 + third_party/testsuite/func.wast:504:6: type mismatch at br value. got i64, expected i32 (br 0 (i64.const 1)) (br 0 (i32.const 1)) ^^^^ assert_invalid error: - third_party/testsuite/func.wast:525:13: type stack size too small at br value. got 0, expected at least 1 + third_party/testsuite/func.wast:520:13: type stack size too small at br value. got 0, expected at least 1 (block (br 1)) (br 0 (i32.const 1)) ^^^^ assert_invalid error: - third_party/testsuite/func.wast:531:13: type stack size too small at br value. got 0, expected at least 1 + third_party/testsuite/func.wast:526:13: type stack size too small at br value. got 0, expected at least 1 (block (br 1 (nop))) (br 0 (i32.const 1)) ^^^^ assert_invalid error: - third_party/testsuite/func.wast:537:13: type mismatch at br value. got i64, expected i32 + third_party/testsuite/func.wast:532:13: type mismatch at br value. got i64, expected i32 (block (br 1 (i64.const 1))) (br 0 (i32.const 1)) ^^^^ 66/66 tests passed. diff --git a/test/spec/func_ptrs.txt b/test/spec/func_ptrs.txt index f32166ca..b38faf9b 100644 --- a/test/spec/func_ptrs.txt +++ b/test/spec/func_ptrs.txt @@ -10,17 +10,17 @@ assert_invalid error: (assert_invalid (module (elem (i32.const 0) 0) (func)) "unknown table") ^^^^ assert_invalid error: - third_party/testsuite/func_ptrs.wast:35:36: elem segment expression must be of type i32; got i64. + third_party/testsuite/func_ptrs.wast:35:36: type mismatch at elem segment offset. got i64, expected i32 (module (table 1 anyfunc) (elem (i64.const 0))) ^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/func_ptrs.wast:39:36: invalid elem segment expression, must be a constant expression; either *.const or get_global. + third_party/testsuite/func_ptrs.wast:39:29: invalid elem segment offset, must be a constant expression; either *.const or get_global. (module (table 1 anyfunc) (elem (i32.ctz (i32.const 0)))) - ^^^^^^^ + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/func_ptrs.wast:43:36: invalid elem segment expression, must be a constant expression; either *.const or get_global. + third_party/testsuite/func_ptrs.wast:43:29: invalid elem segment offset, must be a constant expression; either *.const or get_global. (module (table 1 anyfunc) (elem (nop))) - ^^^ + ^^^^^^^^^^^^ assert_invalid error: third_party/testsuite/func_ptrs.wast:47:37: function type variable out of range (max 0) (assert_invalid (module (func (type 42))) "unknown type") diff --git a/test/spec/globals.txt b/test/spec/globals.txt index 44df56c7..c8ae465e 100644 --- a/test/spec/globals.txt +++ b/test/spec/globals.txt @@ -34,7 +34,7 @@ assert_invalid error: (module (global i32 (f32.const 0))) ^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/globals.wast:90:11: global can only be defined in terms of a previously defined global. + third_party/testsuite/globals.wast:90:11: initializer expression can only be reference a previously defined global (module (global i32 (get_global 0))) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 16/16 tests passed. diff --git a/test/spec/memory.txt b/test/spec/memory.txt index 6da7e94e..8cee890c 100644 --- a/test/spec/memory.txt +++ b/test/spec/memory.txt @@ -2,139 +2,123 @@ ;;; STDIN_FILE: third_party/testsuite/memory.wast (;; STDOUT ;;; assert_invalid error: - third_party/testsuite/memory.wast:21:26: memory variable out of range (max 0) + third_party/testsuite/memory.wast:25:26: memory variable out of range (max 0) (assert_invalid (module (data (i32.const 0))) "unknown memory") ^^^^ assert_invalid error: - third_party/testsuite/memory.wast:22:26: memory variable out of range (max 0) + third_party/testsuite/memory.wast:26:26: memory variable out of range (max 0) (assert_invalid (module (data (i32.const 0) "")) "unknown memory") ^^^^ assert_invalid error: - third_party/testsuite/memory.wast:23:26: memory variable out of range (max 0) + third_party/testsuite/memory.wast:27:26: memory variable out of range (max 0) (assert_invalid (module (data (i32.const 0) "x")) "unknown memory") ^^^^ assert_invalid error: - third_party/testsuite/memory.wast:26:29: data segment expression must be of type i32; got i64. + third_party/testsuite/memory.wast:30:29: type mismatch at data segment offset. got i64, expected i32 (module (memory 1) (data (i64.const 0))) ^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/memory.wast:30:29: invalid data segment expression, must be a constant expression; either *.const or get_global. + third_party/testsuite/memory.wast:34:22: invalid data segment offset, must be a constant expression; either *.const or get_global. (module (memory 1) (data (i32.ctz (i32.const 0)))) - ^^^^^^^ + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/memory.wast:34:29: invalid data segment expression, must be a constant expression; either *.const or get_global. + third_party/testsuite/memory.wast:38:22: invalid data segment offset, must be a constant expression; either *.const or get_global. (module (memory 1) (data (nop))) - ^^^ + ^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/memory.wast:39:11: max pages (0) must be >= initial pages (1) + third_party/testsuite/memory.wast:42:22: initializer expression cannot reference a mutable global + (module (memory 1) (data (get_global $g)) (global $g (mut i32) (i32.const 0))) + ^^^^^^^^^^^^^^^^^^^^^^ +assert_invalid error: + third_party/testsuite/memory.wast:74:11: max pages (0) must be >= initial pages (1) (module (memory 1 0)) ^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/memory.wast:43:24: segment ends past the end of memory (0) - (module (memory 0 0) (data (i32.const 0) "a")) - ^^^^^^^^^^^^^^^^^^^^^^^^ -assert_invalid error: - third_party/testsuite/memory.wast:47:49: segment ends past the end of memory (65536) - (module (memory 1 2) (data (i32.const 0) "a") (data (i32.const 98304) "b")) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -assert_invalid error: - third_party/testsuite/memory.wast:51:51: segment offset (0) less than end of previous segment (3) - (module (memory 1 2) (data (i32.const 0) "abc") (data (i32.const 0) "def")) - ^^^^^^^^^^^^^^^^^^^^^^^^^^ -assert_invalid error: - third_party/testsuite/memory.wast:55:50: segment offset (0) less than end of previous segment (5) - (module (memory 1 2) (data (i32.const 3) "ab") (data (i32.const 0) "de")) - ^^^^^^^^^^^^^^^^^^^^^^^^^ -assert_invalid error: - third_party/testsuite/memory.wast:61:55: segment offset (1) less than end of previous segment (3) - (data (i32.const 0) "a") (data (i32.const 2) "b") (data (i32.const 1) "c") - ^^^^^^^^^^^^^^^^^^^^^^^^ -assert_invalid error: - third_party/testsuite/memory.wast:66:11: initial pages (65537) must be <= (65536) + third_party/testsuite/memory.wast:78:11: initial pages (65537) must be <= (65536) (module (memory 65537)) ^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/memory.wast:70:11: initial pages (2147483648) must be <= (65536) + third_party/testsuite/memory.wast:82:11: initial pages (2147483648) must be <= (65536) (module (memory 2147483648)) ^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/memory.wast:74:11: initial pages (4294967295) must be <= (65536) + third_party/testsuite/memory.wast:86:11: initial pages (4294967295) must be <= (65536) (module (memory 4294967295)) ^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/memory.wast:78:11: max pages (65537) must be <= (65536) + third_party/testsuite/memory.wast:90:11: max pages (65537) must be <= (65536) (module (memory 0 65537)) ^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/memory.wast:82:11: max pages (2147483648) must be <= (65536) + third_party/testsuite/memory.wast:94:11: max pages (2147483648) must be <= (65536) (module (memory 0 2147483648)) ^^^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/memory.wast:86:11: max pages (4294967295) must be <= (65536) + third_party/testsuite/memory.wast:98:11: max pages (4294967295) must be <= (65536) (module (memory 0 4294967295)) ^^^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/memory.wast:97:35: alignment must be power-of-two + third_party/testsuite/memory.wast:109:35: alignment must be power-of-two (module (memory 0) (func (drop (i64.load align=0 (i32.const 0))))) ^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/memory.wast:101:35: alignment must be power-of-two + third_party/testsuite/memory.wast:113:35: alignment must be power-of-two (module (memory 0) (func (drop (i64.load align=3 (i32.const 0))))) ^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/memory.wast:105:35: alignment must be power-of-two + third_party/testsuite/memory.wast:117:35: alignment must be power-of-two (module (memory 0) (func (drop (i64.load align=5 (i32.const 0))))) ^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/memory.wast:109:35: alignment must be power-of-two + third_party/testsuite/memory.wast:121:35: alignment must be power-of-two (module (memory 0) (func (drop (i64.load align=6 (i32.const 0))))) ^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/memory.wast:113:35: alignment must be power-of-two + third_party/testsuite/memory.wast:125:35: alignment must be power-of-two (module (memory 0) (func (drop (i64.load align=7 (i32.const 0))))) ^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/memory.wast:118:35: alignment must not be larger than natural alignment (8) + third_party/testsuite/memory.wast:130:35: alignment must not be larger than natural alignment (8) (module (memory 0) (func (drop (i64.load align=16 (i32.const 0))))) ^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/memory.wast:122:35: alignment must not be larger than natural alignment (8) + third_party/testsuite/memory.wast:134:35: alignment must not be larger than natural alignment (8) (module (memory 0) (func (drop (i64.load align=32 (i32.const 0))))) ^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/memory.wast:126:35: alignment must not be larger than natural alignment (4) + third_party/testsuite/memory.wast:138:35: alignment must not be larger than natural alignment (4) (module (memory 0) (func (drop (i32.load align=8 (i32.const 0))))) ^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/memory.wast:130:35: alignment must not be larger than natural alignment (2) + third_party/testsuite/memory.wast:142:35: alignment must not be larger than natural alignment (2) (module (memory 0) (func (drop (i32.load16_u align=4 (i32.const 0))))) ^^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/memory.wast:134:35: alignment must not be larger than natural alignment (1) + third_party/testsuite/memory.wast:146:35: alignment must not be larger than natural alignment (1) (module (memory 0) (func (drop (i32.load8_u align=2 (i32.const 0))))) ^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/memory.wast:138:29: alignment must not be larger than natural alignment (1) + third_party/testsuite/memory.wast:150:29: alignment must not be larger than natural alignment (1) (module (memory 0) (func (i32.store8 align=2 (i32.const 0) (i32.const 0)))) ^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/memory.wast:142:29: alignment must not be larger than natural alignment (2) + third_party/testsuite/memory.wast:154:29: alignment must not be larger than natural alignment (2) (module (memory 0) (func (i32.load16_u align=4 (i32.const 0)))) ^^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/memory.wast:142:22: type stack at end of function is 1. expected 0 + third_party/testsuite/memory.wast:154:22: type stack at end of function is 1. expected 0 (module (memory 0) (func (i32.load16_u align=4 (i32.const 0)))) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/memory.wast:146:29: alignment must not be larger than natural alignment (1) + third_party/testsuite/memory.wast:158:29: alignment must not be larger than natural alignment (1) (module (memory 0) (func (i32.load8_u align=2 (i32.const 0)))) ^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/memory.wast:146:22: type stack at end of function is 1. expected 0 + third_party/testsuite/memory.wast:158:22: type stack at end of function is 1. expected 0 (module (memory 0) (func (i32.load8_u align=2 (i32.const 0)))) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ assert_invalid error: - third_party/testsuite/memory.wast:150:29: alignment must not be larger than natural alignment (1) + third_party/testsuite/memory.wast:162:29: alignment must not be larger than natural alignment (1) (module (memory 0) (func (i32.store8 align=2 (i32.const 0) (i32.const 0)))) ^^^^^^^^^^^^^^^^^^ 27/27 tests passed. diff --git a/test/spec/skip-stack-guard-page.txt b/test/spec/skip-stack-guard-page.txt new file mode 100644 index 00000000..520dcf72 --- /dev/null +++ b/test/spec/skip-stack-guard-page.txt @@ -0,0 +1,5 @@ +;;; TOOL: run-interp-spec +;;; STDIN_FILE: third_party/testsuite/skip-stack-guard-page.wast +(;; STDOUT ;;; +10/10 tests passed. +;;; STDOUT ;;) diff --git a/test/spec/unwind.txt b/test/spec/unwind.txt new file mode 100644 index 00000000..0a38548b --- /dev/null +++ b/test/spec/unwind.txt @@ -0,0 +1,5 @@ +;;; TOOL: run-interp-spec +;;; STDIN_FILE: third_party/testsuite/unwind.wast +(;; STDOUT ;;; +32/32 tests passed. +;;; STDOUT ;;) diff --git a/third_party/testsuite b/third_party/testsuite -Subproject 58c1bf67cc65a1219d49114c41805bafc75ac0c +Subproject 30540069b99f51fcdd7de8cbab5dc065fd7defe |