diff options
author | Ben Smith <binji@chromium.org> | 2016-04-12 12:42:09 -0700 |
---|---|---|
committer | Ben Smith <binji@chromium.org> | 2016-04-12 14:59:44 -0700 |
commit | fb0f7da9c1ba977aa68f5e01346306ae13b8f59a (patch) | |
tree | f1ff7855186033fcb491dd2120f326a9db834397 /src/prebuilt/wasm-bison-parser.c | |
parent | 04140042f96a68f3610b4a24fdf456b5fac9792e (diff) | |
download | wabt-fb0f7da9c1ba977aa68f5e01346306ae13b8f59a.tar.gz wabt-fb0f7da9c1ba977aa68f5e01346306ae13b8f59a.tar.bz2 wabt-fb0f7da9c1ba977aa68f5e01346306ae13b8f59a.zip |
share WasmFuncDeclaration with Func and Import
There was some duplicated code between WasmFunc and WasmImport; both
allow you to specify a function signature or a function type. This
change introduces a WasmFuncDeclaration which is shared by both.
This also allows us to remove WasmTypeBindings.
Diffstat (limited to 'src/prebuilt/wasm-bison-parser.c')
-rw-r--r-- | src/prebuilt/wasm-bison-parser.c | 2130 |
1 files changed, 677 insertions, 1453 deletions
diff --git a/src/prebuilt/wasm-bison-parser.c b/src/prebuilt/wasm-bison-parser.c index 48c614c1..30371fa1 100644 --- a/src/prebuilt/wasm-bison-parser.c +++ b/src/prebuilt/wasm-bison-parser.c @@ -120,6 +120,10 @@ #define USE_NATURAL_ALIGNMENT (~0) +static WasmFuncField* new_func_field(WasmAllocator* allocator) { + return wasm_alloc_zero(allocator, sizeof(WasmFuncField), WASM_DEFAULT_ALIGN); +} + static WasmFunc* new_func(WasmAllocator* allocator) { return wasm_alloc_zero(allocator, sizeof(WasmFunc), WASM_DEFAULT_ALIGN); } @@ -147,10 +151,14 @@ static WasmExpr* new_block_expr_with_list(WasmAllocator* allocator, WasmLabel* label, WasmExprPtrVector* exprs); +WasmResult copy_signature_from_func_type(WasmAllocator* allocator, + WasmModule* module, + WasmFuncDeclaration* decl); + #define wasm_parser_lex wasm_lexer_lex -#line 154 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:339 */ +#line 162 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:339 */ # ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus @@ -280,7 +288,7 @@ int wasm_parser_parse (WasmLexer lexer, WasmParser* parser); /* Copy the second part of user declarations. */ -#line 284 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:358 */ +#line 292 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:358 */ #ifdef short # undef short @@ -524,16 +532,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 7 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 617 +#define YYLAST 321 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 57 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 44 +#define YYNNTS 42 /* YYNRULES -- Number of rules. */ -#define YYNRULES 177 +#define YYNRULES 114 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 326 +#define YYNSTATES 264 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ @@ -585,24 +593,18 @@ static const yytype_uint8 yytranslate[] = /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 184, 184, 185, 191, 192, 196, 200, 207, 212, - 220, 232, 240, 241, 247, 251, 261, 268, 269, 273, - 274, 283, 284, 295, 298, 302, 306, 314, 323, 334, - 347, 353, 360, 367, 374, 382, 388, 393, 400, 406, - 412, 419, 424, 430, 438, 447, 460, 466, 473, 480, - 487, 493, 497, 501, 508, 509, 512, 516, 522, 523, - 529, 534, 543, 548, 559, 562, 567, 576, 581, 592, - 595, 599, 604, 610, 617, 625, 634, 644, 653, 661, - 670, 678, 685, 693, 702, 710, 717, 725, 732, 738, - 745, 751, 758, 766, 775, 783, 790, 798, 805, 811, - 818, 826, 833, 839, 844, 850, 857, 865, 874, 882, - 889, 897, 904, 910, 917, 925, 932, 938, 945, 951, - 956, 962, 969, 977, 984, 990, 997, 1003, 1008, 1014, - 1021, 1027, 1032, 1038, 1045, 1051, 1055, 1068, 1076, 1077, - 1084, 1096, 1108, 1114, 1123, 1127, 1134, 1138, 1145, 1153, - 1160, 1171, 1178, 1184, 1187, 1196, 1205, 1213, 1221, 1229, - 1237, 1245, 1255, 1362, 1368, 1375, 1382, 1390, 1397, 1407, - 1408, 1416, 1428, 1429, 1432, 1433, 1440, 1449 + 0, 191, 191, 192, 198, 199, 203, 207, 214, 219, + 227, 239, 247, 248, 254, 258, 268, 275, 276, 280, + 281, 290, 291, 302, 305, 309, 313, 321, 330, 341, + 354, 360, 367, 374, 381, 389, 395, 400, 407, 413, + 419, 426, 431, 437, 445, 454, 467, 473, 480, 487, + 494, 500, 504, 508, 515, 516, 519, 523, 529, 530, + 535, 542, 548, 556, 562, 568, 578, 581, 645, 651, + 658, 663, 674, 678, 691, 699, 700, 707, 719, 731, + 737, 746, 750, 757, 761, 768, 776, 783, 794, 801, + 807, 810, 819, 828, 836, 844, 852, 860, 868, 878, + 974, 980, 987, 994, 1002, 1009, 1019, 1020, 1028, 1040, + 1041, 1044, 1045, 1052, 1061 }; #endif @@ -622,12 +624,12 @@ static const char *const yytname[] = "ASSERT_RETURN_NAN", "ASSERT_TRAP", "INVOKE", "LOW", "$accept", "value_type_list", "func_type", "literal", "var", "var_list", "bind_var", "quoted_text", "string_contents", "labeling", "offset", "align", "expr", - "expr1", "expr_opt", "non_empty_expr_list", "expr_list", "param_list", - "result", "local_list", "type_use", "func_info", "func", "start", - "segment_address", "segment", "segment_list", "initial_pages", - "max_pages", "memory", "type_def", "table", "import", "export", - "export_memory", "module_fields", "module", "cmd", "cmd_list", "const", - "const_opt", "const_list", "script", "script_start", YY_NULLPTR + "expr1", "expr_opt", "non_empty_expr_list", "expr_list", "func_fields", + "type_use", "func_info", "func", "start", "segment_address", "segment", + "segment_list", "initial_pages", "max_pages", "memory", "type_def", + "table", "import", "export", "export_memory", "module_fields", "module", + "cmd", "cmd_list", "const", "const_opt", "const_list", "script", + "script_start", YY_NULLPTR }; #endif @@ -645,10 +647,10 @@ static const yytype_uint16 yytoknum[] = }; # endif -#define YYPACT_NINF -140 +#define YYPACT_NINF -130 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-140))) + (!!((Yystate) == (-130))) #define YYTABLE_NINF -1 @@ -659,39 +661,33 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -140, 1, -140, 20, -9, -140, -140, -140, -140, 25, - 29, 31, 33, 42, 97, 17, 42, 8, 11, 23, - -140, -140, 201, -140, -140, -140, -140, -140, -140, -140, - -140, -140, 68, 42, 42, 42, 121, 0, 48, 27, - 69, 123, 42, -140, -140, -140, -140, -140, 50, -140, - -140, 348, -140, 90, -140, 94, 100, 103, 115, 119, - 104, -140, -140, 116, 91, 129, -140, 130, 42, 42, - 21, 105, 142, 150, 152, 162, -140, 141, 94, 141, - 19, 48, -140, 48, 48, 48, 94, 48, 48, 132, - 132, 162, 94, 94, 94, 94, 94, 48, 141, 134, - 141, -140, -140, 94, 158, 94, 100, 103, 115, 119, - 567, -140, 403, 94, 103, 115, 300, 94, 115, 485, - 94, 444, 94, 100, 103, 115, -140, -140, 161, 140, - -140, 169, -140, 42, 179, 183, 186, -140, -140, 192, - 195, 42, -140, -140, 196, -140, 94, 199, 141, 94, - 94, -140, -140, 94, 48, 94, 94, 94, -140, -140, - 94, -140, 174, 174, -140, -140, 94, 94, -140, 94, - 204, 43, 200, 208, 51, 209, -140, -140, 94, 103, - 115, 94, 115, 94, 94, 100, 103, 115, 141, 94, - 115, 94, 94, 141, 94, 103, 115, 94, 115, 94, - 135, 213, 161, 175, -140, -140, 176, 179, -26, 216, - 217, -140, -140, -140, 218, -140, 219, -140, 94, -140, - 526, 94, 94, -140, -140, 94, 94, -140, -140, 94, - -140, -140, 94, 94, -140, -140, 94, -140, -140, -140, - 220, -140, -140, 221, 94, 115, 94, 94, 94, 103, - 115, 94, 115, 94, 78, 227, 94, 80, 232, 94, - 115, 94, 94, -140, 233, 222, 225, 240, -140, 226, - 245, -140, -140, -140, -140, 141, -140, -140, -140, -140, - -140, -140, 94, -140, -140, -140, 94, 94, 115, 94, - 94, -140, 248, -140, 249, 94, 87, 250, -140, 251, - -140, 198, -140, -140, 94, -140, 94, -140, -140, 253, - -140, -140, -140, 255, 256, 228, -140, 254, 252, 262, - 258, 141, -140, 94, 263, -140 + -130, 4, -130, 9, 42, -130, -130, -130, -130, 12, + 31, 73, 80, 39, 28, 49, 39, 33, 45, 50, + -130, -130, 270, -130, -130, -130, -130, -130, -130, -130, + -130, -130, 104, 39, 39, 39, 115, 5, 46, 20, + 108, 116, 39, -130, -130, -130, -130, -130, 86, -130, + -130, 139, -130, 119, -130, 124, -130, -130, 128, 132, + -130, -130, 154, 146, 164, -130, 163, 39, 39, 13, + 82, 122, 126, 131, 134, -130, 167, 124, 167, 21, + 46, -130, 46, 46, 46, 124, 46, 46, 155, 155, + 134, 124, 124, 124, 124, 124, 46, 167, 175, 167, + -130, -130, 124, 181, 128, 182, 262, -130, 180, 189, + -130, -130, 191, 172, -130, 138, -130, 39, 196, 205, + 212, -130, -130, 214, 218, 39, -130, -130, 219, -130, + 124, 215, 167, 124, 124, -130, -130, 124, 46, 124, + 124, 124, -130, -130, 124, -130, 195, 195, -130, -130, + 124, 124, -130, 124, 222, 26, 216, 223, 43, 226, + -130, -130, 236, -130, -130, 107, 245, 191, 206, -130, + -130, 149, 196, 64, 253, 254, -130, -130, -130, 255, + -130, 256, -130, -130, 221, 124, 124, -130, -130, 124, + 124, -130, -130, 124, -130, -130, 124, 124, -130, -130, + 124, -130, 128, -130, 257, 128, 128, 258, -130, -130, + 259, 260, 261, 271, -130, 263, 277, -130, -130, -130, + -130, 167, -130, -130, -130, -130, -130, -130, 124, -130, + -130, 128, -130, -130, 128, 69, 286, -130, 287, -130, + 268, -130, -130, 124, -130, -130, -130, 295, -130, -130, + -130, 296, 297, 264, -130, 299, 290, 249, 301, 167, + -130, 124, 305, -130 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -699,59 +695,53 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 169, 176, 177, 0, 0, 163, 170, 1, 153, 0, + 106, 113, 114, 0, 0, 100, 107, 1, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 15, 174, 0, 162, 154, 161, 160, 159, 158, 155, - 156, 157, 0, 0, 0, 0, 0, 70, 0, 0, - 0, 0, 0, 12, 165, 174, 174, 174, 0, 164, - 175, 0, 14, 71, 56, 133, 119, 127, 131, 103, - 0, 10, 11, 0, 0, 0, 140, 138, 0, 0, - 0, 0, 0, 0, 0, 0, 24, 17, 0, 17, - 54, 0, 12, 0, 0, 0, 54, 0, 0, 19, - 19, 0, 0, 0, 0, 0, 0, 0, 2, 0, - 2, 51, 52, 0, 0, 102, 90, 98, 88, 72, - 0, 57, 0, 126, 120, 124, 0, 130, 128, 0, - 132, 0, 118, 104, 112, 116, 134, 135, 4, 0, - 141, 0, 138, 0, 4, 0, 0, 146, 13, 172, - 0, 0, 8, 9, 0, 18, 58, 0, 18, 58, - 54, 55, 34, 0, 0, 58, 58, 0, 36, 41, - 0, 20, 21, 21, 45, 46, 0, 0, 50, 0, - 0, 0, 0, 0, 0, 0, 53, 23, 97, 91, - 95, 101, 99, 89, 87, 73, 81, 85, 2, 123, - 121, 125, 129, 2, 111, 105, 109, 115, 113, 117, - 0, 0, 4, 0, 143, 139, 0, 4, 0, 0, - 0, 152, 151, 173, 0, 167, 0, 171, 59, 25, - 0, 26, 58, 32, 35, 30, 13, 38, 39, 58, - 42, 22, 0, 0, 47, 49, 0, 69, 60, 3, - 0, 64, 65, 0, 94, 92, 96, 100, 80, 74, - 78, 84, 82, 86, 0, 0, 122, 0, 0, 108, - 106, 110, 114, 2, 0, 0, 0, 0, 142, 0, - 0, 149, 147, 166, 168, 17, 28, 33, 31, 37, - 40, 43, 0, 48, 61, 66, 93, 77, 75, 79, - 83, 62, 0, 67, 0, 107, 0, 0, 144, 0, - 136, 0, 150, 148, 58, 44, 76, 63, 68, 5, - 7, 145, 16, 0, 0, 0, 137, 27, 0, 0, - 0, 17, 6, 58, 0, 29 + 15, 111, 0, 99, 91, 98, 97, 96, 95, 92, + 93, 94, 0, 0, 0, 0, 0, 58, 0, 0, + 0, 0, 0, 12, 102, 111, 111, 111, 0, 101, + 112, 0, 14, 58, 56, 59, 60, 67, 58, 0, + 10, 11, 0, 0, 0, 77, 75, 0, 0, 0, + 0, 0, 0, 0, 0, 24, 17, 0, 17, 54, + 0, 12, 0, 0, 0, 54, 0, 0, 19, 19, + 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, + 51, 52, 0, 0, 58, 0, 0, 57, 0, 0, + 70, 72, 4, 0, 78, 0, 75, 0, 4, 0, + 0, 83, 13, 109, 0, 0, 8, 9, 0, 18, + 58, 0, 18, 58, 54, 55, 34, 0, 0, 58, + 58, 0, 36, 41, 0, 20, 21, 21, 45, 46, + 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, + 53, 23, 0, 71, 68, 0, 0, 4, 0, 80, + 76, 0, 4, 0, 0, 0, 89, 88, 110, 0, + 104, 0, 108, 25, 0, 26, 58, 32, 35, 30, + 13, 38, 39, 58, 42, 22, 0, 0, 47, 49, + 0, 66, 58, 3, 0, 58, 58, 0, 69, 2, + 0, 0, 0, 0, 79, 0, 0, 86, 84, 103, + 105, 17, 28, 33, 31, 37, 40, 43, 0, 48, + 61, 58, 63, 64, 58, 0, 0, 81, 0, 73, + 0, 87, 85, 58, 44, 62, 65, 5, 7, 82, + 16, 0, 0, 0, 74, 27, 0, 0, 0, 17, + 6, 58, 0, 29 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -140, -94, -132, 178, 203, 188, 40, 117, -140, -78, - 187, 122, -55, -140, -77, 157, -139, -48, -2, -38, - -46, -140, -140, -140, -140, -140, 146, -140, -140, -140, - -140, -140, -140, -140, -140, -140, 270, -140, -140, 153, - -140, 70, -140, -140 + -130, -94, -112, 176, -21, 233, -25, 3, -130, -78, + 229, 156, -52, -130, -65, -130, -129, -125, -51, -36, + -130, -130, -130, -130, 203, -130, -130, -130, -130, -130, + -130, -130, -130, -130, 311, -130, -130, 198, -130, 65, + -130, -130 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 171, 201, 144, 63, 71, 145, 21, 313, 146, - 162, 232, 54, 104, 152, 218, 219, 56, 57, 58, - 59, 60, 24, 25, 301, 205, 131, 67, 132, 26, - 27, 28, 29, 30, 31, 14, 5, 6, 1, 50, - 214, 36, 2, 3 + -1, 155, 166, 128, 62, 70, 129, 21, 251, 130, + 146, 196, 54, 103, 136, 55, 56, 57, 58, 59, + 24, 25, 240, 170, 115, 66, 116, 26, 27, 28, + 29, 30, 31, 14, 5, 6, 1, 50, 179, 36, + 2, 3 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -759,173 +749,109 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint16 yytable[] = { - 111, 149, 209, 51, 4, 106, 174, 109, 52, 158, - 223, 123, 97, 263, 264, 108, 227, 228, 115, 118, - 7, 125, 110, 147, 61, 151, 61, 62, 15, 62, - 64, 151, 17, 8, 18, 52, 19, 165, 166, 167, - 168, 169, 9, 10, 11, 12, 13, 238, 176, 20, - 111, 107, 239, 61, 114, 242, 62, 124, 111, 8, - 239, 185, 111, 33, 135, 111, 34, 111, 180, 182, - 266, 187, 44, 224, 66, 269, 190, 53, 35, 65, - 75, 68, 291, 277, 293, 196, 198, 239, 210, 239, - 280, 309, 221, 51, 254, 151, 239, 110, 225, 257, - 22, 23, 229, 112, 179, 230, 116, 186, 126, 137, - 61, 234, 235, 62, 236, 72, 73, 74, 119, 148, - 127, 195, 121, 111, 48, 49, 111, 128, 111, 111, - 20, 52, 129, 32, 111, 130, 111, 111, 172, 111, - 175, 245, 111, 173, 111, 48, 139, 250, 252, 52, - 45, 46, 47, 48, 140, 48, 141, 260, 69, 70, - 161, 270, 177, 111, 200, 314, 276, 142, 143, 296, - 278, 279, 203, 204, 263, 264, 202, 281, 282, 203, - 268, 283, 208, 249, 324, 133, 134, 211, 222, 111, - 212, 111, 111, 111, 55, 48, 111, 304, 111, 215, - 217, 111, 220, 231, 111, 312, 111, 111, 237, 240, - 105, 288, 241, 113, 117, 120, 122, 265, 243, 267, - 271, 272, 273, 274, 284, 285, 298, 305, 255, 299, - 302, 111, 111, 258, 111, 111, 292, 37, 38, 39, - 111, 294, 297, 323, 40, 300, 41, 42, 43, 303, - 207, 111, 307, 308, 310, 311, 315, 319, 216, 316, - 317, 320, 322, 178, 181, 183, 184, 325, 318, 164, - 154, 189, 191, 136, 138, 192, 321, 163, 206, 16, - 194, 197, 199, 150, 153, 233, 155, 156, 157, 0, - 159, 160, 213, 0, 0, 0, 0, 0, 0, 0, - 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 76, 77, 78, 0, 0, 79, 80, 81, 82, 0, - 83, 84, 85, 86, 87, 88, 89, 90, 0, 0, - 91, 92, 93, 94, 95, 96, 244, 246, 0, 247, - 0, 100, 248, 251, 253, 0, 0, 256, 101, 102, - 103, 0, 259, 261, 0, 262, 0, 226, 76, 77, - 78, 0, 0, 79, 80, 81, 82, 0, 83, 84, - 85, 86, 87, 88, 89, 90, 0, 0, 91, 92, - 93, 94, 95, 96, 0, 0, 97, 98, 99, 100, - 0, 0, 0, 0, 0, 0, 101, 102, 103, 0, - 0, 0, 286, 0, 0, 0, 287, 289, 0, 290, - 0, 0, 0, 76, 77, 78, 0, 295, 79, 80, - 81, 82, 0, 83, 84, 85, 86, 87, 88, 89, - 90, 0, 0, 91, 92, 93, 94, 95, 96, 0, - 0, 0, 188, 99, 100, 306, 0, 0, 0, 0, - 0, 101, 102, 103, 76, 77, 78, 0, 0, 79, - 80, 81, 82, 0, 83, 84, 85, 86, 87, 88, - 89, 90, 0, 0, 91, 92, 93, 94, 95, 96, - 0, 0, 0, 98, 99, 100, 0, 0, 0, 0, - 0, 0, 101, 102, 103, 76, 77, 78, 0, 0, - 79, 80, 81, 82, 0, 83, 84, 85, 86, 87, - 88, 89, 90, 0, 0, 91, 92, 93, 94, 95, - 96, 0, 0, 0, 0, 0, 193, 0, 0, 0, - 0, 0, 0, 101, 102, 103, 76, 77, 78, 275, - 0, 79, 80, 81, 82, 0, 83, 84, 85, 86, - 87, 88, 89, 90, 0, 0, 91, 92, 93, 94, - 95, 96, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 101, 102, 103, 76, 77, 78, - 0, 0, 79, 80, 81, 82, 0, 83, 84, 85, - 86, 87, 88, 89, 90, 0, 0, 91, 92, 93, - 94, 95, 96, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 101, 102, 103 + 133, 183, 104, 107, 187, 158, 174, 4, 51, 7, + 191, 192, 53, 52, 64, 15, 67, 105, 60, 32, + 142, 61, 109, 63, 106, 131, 60, 135, 52, 61, + 202, 22, 23, 135, 17, 203, 45, 46, 47, 149, + 150, 151, 152, 153, 68, 69, 20, 206, 120, 122, + 160, 60, 203, 132, 61, 212, 119, 223, 134, 137, + 215, 139, 140, 141, 226, 143, 144, 175, 162, 188, + 117, 118, 156, 247, 159, 154, 18, 230, 203, 185, + 232, 233, 135, 19, 8, 189, 121, 60, 33, 193, + 61, 8, 194, 9, 10, 11, 12, 13, 198, 199, + 34, 200, 96, 209, 210, 35, 245, 186, 44, 246, + 71, 72, 73, 65, 252, 235, 74, 190, 48, 49, + 172, 216, 51, 20, 52, 48, 123, 106, 181, 48, + 124, 108, 262, 222, 48, 125, 110, 224, 225, 126, + 127, 168, 169, 243, 227, 228, 209, 210, 229, 75, + 76, 77, 168, 214, 78, 79, 80, 81, 111, 82, + 83, 84, 85, 86, 87, 88, 89, 113, 114, 90, + 91, 92, 93, 94, 95, 52, 244, 96, 97, 98, + 99, 261, 112, 145, 157, 161, 163, 100, 101, 102, + 75, 76, 77, 164, 165, 78, 79, 80, 81, 173, + 82, 83, 84, 85, 86, 87, 88, 89, 167, 176, + 90, 91, 92, 93, 94, 95, 177, 48, 184, 97, + 98, 99, 180, 182, 195, 204, 201, 205, 100, 101, + 102, 75, 76, 77, 221, 207, 78, 79, 80, 81, + 208, 82, 83, 84, 85, 86, 87, 88, 89, 211, + 213, 90, 91, 92, 93, 94, 95, 217, 218, 219, + 220, 231, 234, 259, 237, 238, 148, 241, 236, 100, + 101, 102, 75, 76, 77, 250, 239, 78, 79, 80, + 81, 242, 82, 83, 84, 85, 86, 87, 88, 89, + 248, 249, 90, 91, 92, 93, 94, 95, 253, 258, + 254, 255, 257, 197, 256, 260, 37, 38, 39, 263, + 100, 101, 102, 40, 138, 41, 42, 43, 147, 171, + 16, 178 }; -static const yytype_int16 yycheck[] = +static const yytype_uint16 yycheck[] = { - 55, 79, 134, 3, 3, 53, 100, 53, 8, 86, - 149, 59, 38, 39, 40, 53, 155, 156, 56, 57, - 0, 59, 3, 78, 5, 80, 5, 8, 3, 8, - 3, 86, 3, 42, 3, 8, 3, 92, 93, 94, - 95, 96, 51, 52, 53, 54, 55, 4, 103, 7, - 105, 53, 9, 5, 56, 4, 8, 59, 113, 42, - 9, 109, 117, 55, 43, 120, 55, 122, 106, 107, - 202, 109, 4, 150, 5, 207, 114, 37, 55, 39, - 30, 41, 4, 222, 4, 123, 124, 9, 134, 9, - 229, 4, 147, 3, 188, 150, 9, 3, 153, 193, - 3, 4, 157, 3, 106, 160, 3, 109, 4, 4, - 5, 166, 167, 8, 169, 45, 46, 47, 3, 79, - 4, 123, 3, 178, 3, 4, 181, 36, 183, 184, - 7, 8, 3, 16, 189, 5, 191, 192, 98, 194, - 100, 179, 197, 9, 199, 3, 4, 185, 186, 8, - 33, 34, 35, 3, 4, 3, 4, 195, 41, 42, - 28, 207, 4, 218, 3, 304, 221, 5, 6, 263, - 225, 226, 3, 4, 39, 40, 36, 232, 233, 3, - 4, 236, 3, 185, 323, 68, 69, 4, 148, 244, - 4, 246, 247, 248, 37, 3, 251, 275, 253, 4, - 4, 256, 3, 29, 259, 7, 261, 262, 4, 9, - 53, 249, 4, 56, 57, 58, 59, 4, 9, 44, - 4, 4, 4, 4, 4, 4, 4, 282, 188, 4, - 4, 286, 287, 193, 289, 290, 9, 36, 37, 38, - 295, 9, 9, 321, 43, 5, 45, 46, 47, 4, - 133, 306, 4, 4, 4, 4, 3, 3, 141, 4, - 4, 9, 4, 106, 107, 108, 109, 4, 40, 91, - 82, 114, 115, 70, 71, 118, 14, 90, 132, 9, - 123, 124, 125, 80, 81, 163, 83, 84, 85, -1, - 87, 88, 139, -1, -1, -1, -1, -1, -1, -1, - 97, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 10, 11, 12, -1, -1, 15, 16, 17, 18, -1, - 20, 21, 22, 23, 24, 25, 26, 27, -1, -1, - 30, 31, 32, 33, 34, 35, 179, 180, -1, 182, - -1, 41, 185, 186, 187, -1, -1, 190, 48, 49, - 50, -1, 195, 196, -1, 198, -1, 154, 10, 11, - 12, -1, -1, 15, 16, 17, 18, -1, 20, 21, - 22, 23, 24, 25, 26, 27, -1, -1, 30, 31, - 32, 33, 34, 35, -1, -1, 38, 39, 40, 41, - -1, -1, -1, -1, -1, -1, 48, 49, 50, -1, - -1, -1, 245, -1, -1, -1, 249, 250, -1, 252, - -1, -1, -1, 10, 11, 12, -1, 260, 15, 16, - 17, 18, -1, 20, 21, 22, 23, 24, 25, 26, - 27, -1, -1, 30, 31, 32, 33, 34, 35, -1, - -1, -1, 39, 40, 41, 288, -1, -1, -1, -1, - -1, 48, 49, 50, 10, 11, 12, -1, -1, 15, - 16, 17, 18, -1, 20, 21, 22, 23, 24, 25, - 26, 27, -1, -1, 30, 31, 32, 33, 34, 35, - -1, -1, -1, 39, 40, 41, -1, -1, -1, -1, - -1, -1, 48, 49, 50, 10, 11, 12, -1, -1, - 15, 16, 17, 18, -1, 20, 21, 22, 23, 24, - 25, 26, 27, -1, -1, 30, 31, 32, 33, 34, - 35, -1, -1, -1, -1, -1, 41, -1, -1, -1, - -1, -1, -1, 48, 49, 50, 10, 11, 12, 13, - -1, 15, 16, 17, 18, -1, 20, 21, 22, 23, - 24, 25, 26, 27, -1, -1, 30, 31, 32, 33, - 34, 35, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 48, 49, 50, 10, 11, 12, - -1, -1, 15, 16, 17, 18, -1, 20, 21, 22, - 23, 24, 25, 26, 27, -1, -1, 30, 31, 32, - 33, 34, 35, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 48, 49, 50 + 78, 130, 53, 55, 133, 99, 118, 3, 3, 0, + 139, 140, 37, 8, 39, 3, 41, 53, 5, 16, + 85, 8, 58, 3, 3, 77, 5, 79, 8, 8, + 4, 3, 4, 85, 3, 9, 33, 34, 35, 91, + 92, 93, 94, 95, 41, 42, 7, 4, 69, 70, + 102, 5, 9, 78, 8, 167, 43, 186, 79, 80, + 172, 82, 83, 84, 193, 86, 87, 118, 104, 134, + 67, 68, 97, 4, 99, 96, 3, 202, 9, 131, + 205, 206, 134, 3, 42, 137, 4, 5, 55, 141, + 8, 42, 144, 51, 52, 53, 54, 55, 150, 151, + 55, 153, 38, 39, 40, 55, 231, 132, 4, 234, + 45, 46, 47, 5, 243, 209, 30, 138, 3, 4, + 117, 172, 3, 7, 8, 3, 4, 3, 125, 3, + 4, 3, 261, 185, 3, 4, 4, 189, 190, 5, + 6, 3, 4, 221, 196, 197, 39, 40, 200, 10, + 11, 12, 3, 4, 15, 16, 17, 18, 4, 20, + 21, 22, 23, 24, 25, 26, 27, 3, 5, 30, + 31, 32, 33, 34, 35, 8, 228, 38, 39, 40, + 41, 259, 36, 28, 9, 4, 4, 48, 49, 50, + 10, 11, 12, 4, 3, 15, 16, 17, 18, 3, + 20, 21, 22, 23, 24, 25, 26, 27, 36, 4, + 30, 31, 32, 33, 34, 35, 4, 3, 3, 39, + 40, 41, 4, 4, 29, 9, 4, 4, 48, 49, + 50, 10, 11, 12, 13, 9, 15, 16, 17, 18, + 4, 20, 21, 22, 23, 24, 25, 26, 27, 4, + 44, 30, 31, 32, 33, 34, 35, 4, 4, 4, + 4, 4, 4, 14, 4, 4, 90, 4, 9, 48, + 49, 50, 10, 11, 12, 7, 5, 15, 16, 17, + 18, 4, 20, 21, 22, 23, 24, 25, 26, 27, + 4, 4, 30, 31, 32, 33, 34, 35, 3, 9, + 4, 4, 3, 147, 40, 4, 36, 37, 38, 4, + 48, 49, 50, 43, 81, 45, 46, 47, 89, 116, + 9, 123 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 95, 99, 100, 3, 93, 94, 0, 42, 51, - 52, 53, 54, 55, 92, 3, 93, 3, 3, 3, - 7, 64, 3, 4, 79, 80, 86, 87, 88, 89, - 90, 91, 64, 55, 55, 55, 98, 36, 37, 38, + 0, 93, 97, 98, 3, 91, 92, 0, 42, 51, + 52, 53, 54, 55, 90, 3, 91, 3, 3, 3, + 7, 64, 3, 4, 77, 78, 84, 85, 86, 87, + 88, 89, 64, 55, 55, 55, 96, 36, 37, 38, 43, 45, 46, 47, 4, 64, 64, 64, 3, 4, - 96, 3, 8, 63, 69, 72, 74, 75, 76, 77, - 78, 5, 8, 61, 3, 63, 5, 84, 63, 64, - 64, 62, 98, 98, 98, 30, 10, 11, 12, 15, - 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, - 27, 30, 31, 32, 33, 34, 35, 38, 39, 40, - 41, 48, 49, 50, 70, 72, 74, 75, 76, 77, - 3, 69, 3, 72, 75, 76, 3, 72, 76, 3, - 72, 3, 72, 74, 75, 76, 4, 4, 36, 3, - 5, 83, 85, 64, 64, 43, 61, 4, 61, 4, - 4, 4, 5, 6, 60, 63, 66, 69, 63, 66, - 61, 69, 71, 61, 62, 61, 61, 61, 71, 61, - 61, 28, 67, 67, 60, 69, 69, 69, 69, 69, - 61, 58, 63, 9, 58, 63, 69, 4, 72, 75, - 76, 72, 76, 72, 72, 74, 75, 76, 39, 72, - 76, 72, 72, 41, 72, 75, 76, 72, 76, 72, - 3, 59, 36, 3, 4, 82, 83, 64, 3, 59, - 77, 4, 4, 96, 97, 4, 64, 4, 72, 73, - 3, 69, 63, 73, 71, 69, 61, 73, 73, 69, - 69, 29, 68, 68, 69, 69, 69, 4, 4, 9, - 9, 4, 4, 9, 72, 76, 72, 72, 72, 75, - 76, 72, 76, 72, 58, 63, 72, 58, 63, 72, - 76, 72, 72, 39, 40, 4, 59, 44, 4, 59, - 77, 4, 4, 4, 4, 13, 69, 73, 69, 69, - 73, 69, 69, 69, 4, 4, 72, 72, 76, 72, - 72, 4, 9, 4, 9, 72, 58, 9, 4, 4, - 5, 81, 4, 4, 66, 69, 72, 4, 4, 4, - 4, 4, 7, 65, 73, 3, 4, 4, 40, 3, - 9, 14, 4, 66, 73, 4 + 94, 3, 8, 63, 69, 72, 73, 74, 75, 76, + 5, 8, 61, 3, 63, 5, 82, 63, 64, 64, + 62, 96, 96, 96, 30, 10, 11, 12, 15, 16, + 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, + 30, 31, 32, 33, 34, 35, 38, 39, 40, 41, + 48, 49, 50, 70, 75, 76, 3, 69, 3, 76, + 4, 4, 36, 3, 5, 81, 83, 64, 64, 43, + 61, 4, 61, 4, 4, 4, 5, 6, 60, 63, + 66, 69, 63, 66, 61, 69, 71, 61, 62, 61, + 61, 61, 71, 61, 61, 28, 67, 67, 60, 69, + 69, 69, 69, 69, 61, 58, 63, 9, 58, 63, + 69, 4, 76, 4, 4, 3, 59, 36, 3, 4, + 80, 81, 64, 3, 59, 75, 4, 4, 94, 95, + 4, 64, 4, 73, 3, 69, 63, 73, 71, 69, + 61, 73, 73, 69, 69, 29, 68, 68, 69, 69, + 69, 4, 4, 9, 9, 4, 4, 9, 4, 39, + 40, 4, 59, 44, 4, 59, 75, 4, 4, 4, + 4, 13, 69, 73, 69, 69, 73, 69, 69, 69, + 74, 4, 74, 74, 4, 58, 9, 4, 4, 5, + 79, 4, 4, 66, 69, 74, 74, 4, 4, 4, + 7, 65, 73, 3, 4, 4, 40, 3, 9, 14, + 4, 66, 73, 4 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ @@ -937,18 +863,12 @@ static const yytype_uint8 yyr1[] = 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 71, 71, 72, 72, 73, 73, - 74, 74, 74, 74, 75, 76, 76, 76, 76, 77, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 79, 80, 81, 82, 83, 83, - 84, 85, 86, 86, 87, 87, 88, 89, 89, 89, - 89, 90, 91, 92, 92, 92, 92, 92, 92, 92, - 92, 92, 93, 94, 94, 94, 94, 94, 94, 95, - 95, 96, 97, 97, 98, 98, 99, 100 + 74, 74, 74, 74, 74, 74, 75, 76, 77, 77, + 77, 77, 78, 79, 80, 81, 81, 82, 83, 84, + 84, 85, 85, 86, 87, 87, 87, 87, 88, 89, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 91, + 92, 92, 92, 92, 92, 92, 93, 93, 94, 95, + 95, 96, 96, 97, 98 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -960,18 +880,12 @@ static const yytype_uint8 yyr2[] = 3, 4, 3, 4, 2, 3, 2, 4, 3, 3, 4, 2, 3, 4, 5, 2, 2, 3, 4, 3, 2, 1, 1, 2, 0, 1, 1, 2, 0, 1, - 4, 5, 5, 6, 4, 4, 5, 5, 6, 4, - 0, 1, 2, 3, 4, 5, 6, 5, 4, 5, - 4, 3, 4, 5, 4, 3, 4, 3, 2, 3, - 2, 3, 4, 5, 4, 3, 4, 3, 2, 3, - 4, 3, 2, 1, 2, 3, 4, 5, 4, 3, - 4, 3, 2, 3, 4, 3, 2, 3, 2, 1, - 2, 3, 4, 3, 2, 3, 2, 1, 2, 3, - 2, 1, 2, 1, 4, 4, 1, 5, 0, 2, - 1, 1, 6, 5, 7, 8, 4, 6, 7, 6, - 7, 5, 5, 0, 2, 2, 2, 2, 2, 2, - 2, 2, 4, 1, 5, 5, 9, 8, 9, 0, - 2, 4, 0, 1, 0, 2, 1, 1 + 1, 5, 6, 5, 5, 6, 4, 1, 5, 6, + 4, 5, 4, 1, 5, 0, 2, 1, 1, 6, + 5, 7, 8, 4, 6, 7, 6, 7, 5, 5, + 0, 2, 2, 2, 2, 2, 2, 2, 2, 4, + 1, 5, 5, 9, 8, 9, 0, 2, 4, 0, + 1, 0, 2, 1, 1 }; @@ -1468,189 +1382,183 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio switch (yytype) { case 58: /* value_type_list */ -#line 154 "src/wasm-bison-parser.y" /* yacc.c:1257 */ +#line 161 "src/wasm-bison-parser.y" /* yacc.c:1257 */ { wasm_destroy_type_vector(parser->allocator, &((*yyvaluep).types)); } -#line 1474 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ +#line 1388 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ break; case 59: /* func_type */ -#line 164 "src/wasm-bison-parser.y" /* yacc.c:1257 */ +#line 171 "src/wasm-bison-parser.y" /* yacc.c:1257 */ { wasm_destroy_func_signature(parser->allocator, &((*yyvaluep).func_sig)); } -#line 1480 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ +#line 1394 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ break; case 60: /* literal */ -#line 153 "src/wasm-bison-parser.y" /* yacc.c:1257 */ +#line 160 "src/wasm-bison-parser.y" /* yacc.c:1257 */ { wasm_destroy_string_slice(parser->allocator, &((*yyvaluep).literal).text); } -#line 1486 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ +#line 1400 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ break; case 61: /* var */ -#line 155 "src/wasm-bison-parser.y" /* yacc.c:1257 */ +#line 162 "src/wasm-bison-parser.y" /* yacc.c:1257 */ { wasm_destroy_var(parser->allocator, &((*yyvaluep).var)); } -#line 1492 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ +#line 1406 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ break; case 62: /* var_list */ -#line 156 "src/wasm-bison-parser.y" /* yacc.c:1257 */ +#line 163 "src/wasm-bison-parser.y" /* yacc.c:1257 */ { wasm_destroy_var_vector_and_elements(parser->allocator, &((*yyvaluep).vars)); } -#line 1498 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ +#line 1412 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ break; case 63: /* bind_var */ -#line 152 "src/wasm-bison-parser.y" /* yacc.c:1257 */ +#line 159 "src/wasm-bison-parser.y" /* yacc.c:1257 */ { wasm_destroy_string_slice(parser->allocator, &((*yyvaluep).text)); } -#line 1504 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ +#line 1418 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ break; case 64: /* quoted_text */ -#line 152 "src/wasm-bison-parser.y" /* yacc.c:1257 */ +#line 159 "src/wasm-bison-parser.y" /* yacc.c:1257 */ { wasm_destroy_string_slice(parser->allocator, &((*yyvaluep).text)); } -#line 1510 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ +#line 1424 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ break; case 65: /* string_contents */ -#line 161 "src/wasm-bison-parser.y" /* yacc.c:1257 */ +#line 168 "src/wasm-bison-parser.y" /* yacc.c:1257 */ { wasm_destroy_segment(parser->allocator, &((*yyvaluep).segment)); } -#line 1516 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ +#line 1430 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ break; case 66: /* labeling */ -#line 152 "src/wasm-bison-parser.y" /* yacc.c:1257 */ +#line 159 "src/wasm-bison-parser.y" /* yacc.c:1257 */ { wasm_destroy_string_slice(parser->allocator, &((*yyvaluep).text)); } -#line 1522 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ +#line 1436 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ break; case 69: /* expr */ -#line 157 "src/wasm-bison-parser.y" /* yacc.c:1257 */ +#line 164 "src/wasm-bison-parser.y" /* yacc.c:1257 */ { wasm_destroy_expr_ptr(parser->allocator, &((*yyvaluep).expr)); } -#line 1528 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ +#line 1442 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ break; case 70: /* expr1 */ -#line 157 "src/wasm-bison-parser.y" /* yacc.c:1257 */ +#line 164 "src/wasm-bison-parser.y" /* yacc.c:1257 */ { wasm_destroy_expr_ptr(parser->allocator, &((*yyvaluep).expr)); } -#line 1534 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ +#line 1448 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ break; case 71: /* expr_opt */ -#line 157 "src/wasm-bison-parser.y" /* yacc.c:1257 */ +#line 164 "src/wasm-bison-parser.y" /* yacc.c:1257 */ { wasm_destroy_expr_ptr(parser->allocator, &((*yyvaluep).expr)); } -#line 1540 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ +#line 1454 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ break; case 72: /* non_empty_expr_list */ -#line 158 "src/wasm-bison-parser.y" /* yacc.c:1257 */ +#line 165 "src/wasm-bison-parser.y" /* yacc.c:1257 */ { wasm_destroy_expr_ptr_vector_and_elements(parser->allocator, &((*yyvaluep).exprs)); } -#line 1546 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ +#line 1460 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ break; case 73: /* expr_list */ -#line 158 "src/wasm-bison-parser.y" /* yacc.c:1257 */ +#line 165 "src/wasm-bison-parser.y" /* yacc.c:1257 */ { wasm_destroy_expr_ptr_vector_and_elements(parser->allocator, &((*yyvaluep).exprs)); } -#line 1552 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ +#line 1466 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ break; - case 74: /* param_list */ -#line 159 "src/wasm-bison-parser.y" /* yacc.c:1257 */ - { wasm_destroy_type_bindings(parser->allocator, &((*yyvaluep).type_bindings)); } -#line 1558 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ - break; - - case 76: /* local_list */ -#line 159 "src/wasm-bison-parser.y" /* yacc.c:1257 */ - { wasm_destroy_type_bindings(parser->allocator, &((*yyvaluep).type_bindings)); } -#line 1564 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ + case 74: /* func_fields */ +#line 166 "src/wasm-bison-parser.y" /* yacc.c:1257 */ + { wasm_destroy_func_fields(parser->allocator, ((*yyvaluep).func_fields)); } +#line 1472 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ break; - case 78: /* func_info */ -#line 160 "src/wasm-bison-parser.y" /* yacc.c:1257 */ + case 76: /* func_info */ +#line 167 "src/wasm-bison-parser.y" /* yacc.c:1257 */ { wasm_destroy_func(parser->allocator, ((*yyvaluep).func)); wasm_free(parser->allocator, ((*yyvaluep).func)); } -#line 1570 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ +#line 1478 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ break; - case 79: /* func */ -#line 160 "src/wasm-bison-parser.y" /* yacc.c:1257 */ + case 77: /* func */ +#line 167 "src/wasm-bison-parser.y" /* yacc.c:1257 */ { wasm_destroy_func(parser->allocator, ((*yyvaluep).func)); wasm_free(parser->allocator, ((*yyvaluep).func)); } -#line 1576 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ +#line 1484 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ break; - case 82: /* segment */ -#line 161 "src/wasm-bison-parser.y" /* yacc.c:1257 */ + case 80: /* segment */ +#line 168 "src/wasm-bison-parser.y" /* yacc.c:1257 */ { wasm_destroy_segment(parser->allocator, &((*yyvaluep).segment)); } -#line 1582 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ +#line 1490 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ break; - case 83: /* segment_list */ -#line 162 "src/wasm-bison-parser.y" /* yacc.c:1257 */ + case 81: /* segment_list */ +#line 169 "src/wasm-bison-parser.y" /* yacc.c:1257 */ { wasm_destroy_segment_vector_and_elements(parser->allocator, &((*yyvaluep).segments)); } -#line 1588 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ +#line 1496 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ break; - case 86: /* memory */ -#line 163 "src/wasm-bison-parser.y" /* yacc.c:1257 */ + case 84: /* memory */ +#line 170 "src/wasm-bison-parser.y" /* yacc.c:1257 */ { wasm_destroy_memory(parser->allocator, &((*yyvaluep).memory)); } -#line 1594 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ +#line 1502 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ break; - case 87: /* type_def */ -#line 165 "src/wasm-bison-parser.y" /* yacc.c:1257 */ + case 85: /* type_def */ +#line 172 "src/wasm-bison-parser.y" /* yacc.c:1257 */ { wasm_destroy_func_type(parser->allocator, &((*yyvaluep).func_type)); } -#line 1600 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ +#line 1508 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ break; - case 88: /* table */ -#line 156 "src/wasm-bison-parser.y" /* yacc.c:1257 */ + case 86: /* table */ +#line 163 "src/wasm-bison-parser.y" /* yacc.c:1257 */ { wasm_destroy_var_vector_and_elements(parser->allocator, &((*yyvaluep).vars)); } -#line 1606 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ +#line 1514 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ break; - case 89: /* import */ -#line 166 "src/wasm-bison-parser.y" /* yacc.c:1257 */ + case 87: /* import */ +#line 173 "src/wasm-bison-parser.y" /* yacc.c:1257 */ { wasm_destroy_import(parser->allocator, ((*yyvaluep).import)); wasm_free(parser->allocator, ((*yyvaluep).import)); } -#line 1612 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ +#line 1520 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ break; - case 90: /* export */ -#line 167 "src/wasm-bison-parser.y" /* yacc.c:1257 */ + case 88: /* export */ +#line 174 "src/wasm-bison-parser.y" /* yacc.c:1257 */ { wasm_destroy_export(parser->allocator, &((*yyvaluep).export_)); } -#line 1618 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ +#line 1526 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ break; - case 92: /* module_fields */ -#line 168 "src/wasm-bison-parser.y" /* yacc.c:1257 */ + case 90: /* module_fields */ +#line 175 "src/wasm-bison-parser.y" /* yacc.c:1257 */ { wasm_destroy_module(parser->allocator, ((*yyvaluep).module)); wasm_free(parser->allocator, ((*yyvaluep).module)); } -#line 1624 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ +#line 1532 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ break; - case 93: /* module */ -#line 168 "src/wasm-bison-parser.y" /* yacc.c:1257 */ + case 91: /* module */ +#line 175 "src/wasm-bison-parser.y" /* yacc.c:1257 */ { wasm_destroy_module(parser->allocator, ((*yyvaluep).module)); wasm_free(parser->allocator, ((*yyvaluep).module)); } -#line 1630 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ +#line 1538 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ break; - case 94: /* cmd */ -#line 170 "src/wasm-bison-parser.y" /* yacc.c:1257 */ + case 92: /* cmd */ +#line 177 "src/wasm-bison-parser.y" /* yacc.c:1257 */ { wasm_destroy_command(parser->allocator, ((*yyvaluep).command)); wasm_free(parser->allocator, ((*yyvaluep).command)); } -#line 1636 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ +#line 1544 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ break; - case 95: /* cmd_list */ -#line 171 "src/wasm-bison-parser.y" /* yacc.c:1257 */ + case 93: /* cmd_list */ +#line 178 "src/wasm-bison-parser.y" /* yacc.c:1257 */ { wasm_destroy_command_vector_and_elements(parser->allocator, &((*yyvaluep).commands)); } -#line 1642 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ +#line 1550 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ break; - case 98: /* const_list */ -#line 169 "src/wasm-bison-parser.y" /* yacc.c:1257 */ + case 96: /* const_list */ +#line 176 "src/wasm-bison-parser.y" /* yacc.c:1257 */ { wasm_destroy_const_vector(parser->allocator, &((*yyvaluep).consts)); } -#line 1648 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ +#line 1556 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ break; - case 99: /* script */ -#line 172 "src/wasm-bison-parser.y" /* yacc.c:1257 */ + case 97: /* script */ +#line 179 "src/wasm-bison-parser.y" /* yacc.c:1257 */ { wasm_destroy_script(&((*yyvaluep).script)); } -#line 1654 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ +#line 1562 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */ break; @@ -1942,72 +1850,72 @@ yyreduce: switch (yyn) { case 2: -#line 184 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 191 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { WASM_ZERO_MEMORY((yyval.types)); } -#line 1948 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 1856 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 3: -#line 185 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 192 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.types) = (yyvsp[-1].types); CHECK_ALLOC(wasm_append_type_value(parser->allocator, &(yyval.types), &(yyvsp[0].type))); } -#line 1957 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 1865 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 4: -#line 191 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 198 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { WASM_ZERO_MEMORY((yyval.func_sig)); } -#line 1963 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 1871 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 5: -#line 192 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 199 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.func_sig).result_type = WASM_TYPE_VOID; (yyval.func_sig).param_types = (yyvsp[-1].types); } -#line 1972 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 1880 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 6: -#line 196 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 203 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.func_sig).result_type = (yyvsp[-1].type); (yyval.func_sig).param_types = (yyvsp[-5].types); } -#line 1981 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 1889 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 7: -#line 200 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 207 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { WASM_ZERO_MEMORY((yyval.func_sig)); (yyval.func_sig).result_type = (yyvsp[-1].type); } -#line 1987 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 1895 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 8: -#line 207 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 214 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.literal).type = (yyvsp[0].literal).type; DUPTEXT((yyval.literal).text, (yyvsp[0].literal).text); CHECK_ALLOC_STR((yyval.literal).text); } -#line 1997 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 1905 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 9: -#line 212 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 219 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.literal).type = (yyvsp[0].literal).type; DUPTEXT((yyval.literal).text, (yyvsp[0].literal).text); CHECK_ALLOC_STR((yyval.literal).text); } -#line 2007 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 1915 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 10: -#line 220 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 227 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.var).loc = (yylsp[0]); (yyval.var).type = WASM_VAR_TYPE_INDEX; @@ -2020,43 +1928,43 @@ yyreduce: } (yyval.var).index = index; } -#line 2024 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 1932 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 11: -#line 232 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 239 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.var).loc = (yylsp[0]); (yyval.var).type = WASM_VAR_TYPE_NAME; DUPTEXT((yyval.var).name, (yyvsp[0].text)); CHECK_ALLOC_STR((yyval.var).name); } -#line 2035 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 1943 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 12: -#line 240 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 247 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { WASM_ZERO_MEMORY((yyval.vars)); } -#line 2041 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 1949 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 13: -#line 241 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 248 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.vars) = (yyvsp[-1].vars); CHECK_ALLOC(wasm_append_var_value(parser->allocator, &(yyval.vars), &(yyvsp[0].var))); } -#line 2050 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 1958 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 14: -#line 247 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 254 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { DUPTEXT((yyval.text), (yyvsp[0].text)); CHECK_ALLOC_STR((yyval.text)); } -#line 2056 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 1964 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 15: -#line 251 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 258 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { void* data; size_t size; @@ -2064,38 +1972,38 @@ yyreduce: (yyval.text).start = data; (yyval.text).length = size; } -#line 2068 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 1976 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 16: -#line 261 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 268 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { CHECK_ALLOC(dup_string_contents(parser->allocator, &(yyvsp[0].text), &(yyval.segment).data, &(yyval.segment).size)); } -#line 2077 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 1985 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 17: -#line 268 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 275 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { WASM_ZERO_MEMORY((yyval.text)); } -#line 2083 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 1991 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 18: -#line 269 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 276 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.text) = (yyvsp[0].text); } -#line 2089 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 1997 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 19: -#line 273 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 280 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.u64) = 0; } -#line 2095 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2003 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 20: -#line 274 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 281 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { if (WASM_FAILED(wasm_parse_int64((yyvsp[0].text).start, (yyvsp[0].text).start + (yyvsp[0].text).length, &(yyval.u64)))) { wasm_parser_error(&(yylsp[0]), lexer, parser, @@ -2103,17 +2011,17 @@ yyreduce: WASM_PRINTF_STRING_SLICE_ARG((yyvsp[0].text))); } } -#line 2107 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2015 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 21: -#line 283 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 290 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.u32) = USE_NATURAL_ALIGNMENT; } -#line 2113 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2021 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 22: -#line 284 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 291 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { if (WASM_FAILED(wasm_parse_int32((yyvsp[0].text).start, (yyvsp[0].text).start + (yyvsp[0].text).length, &(yyval.u32), WASM_PARSE_UNSIGNED_ONLY))) { @@ -2122,35 +2030,35 @@ yyreduce: WASM_PRINTF_STRING_SLICE_ARG((yyvsp[0].text))); } } -#line 2126 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2034 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 23: -#line 295 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 302 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = (yyvsp[-1].expr); (yyval.expr)->loc = (yylsp[-2]); } -#line 2132 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2040 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 24: -#line 298 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 305 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_empty_expr(parser->allocator, WASM_EXPR_TYPE_NOP); CHECK_ALLOC_NULL((yyval.expr)); } -#line 2141 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2049 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 25: -#line 302 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 309 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = new_block_expr_with_list(parser->allocator, &(yyvsp[-1].text), &(yyvsp[0].exprs)); CHECK_ALLOC_NULL((yyval.expr)); } -#line 2150 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2058 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 26: -#line 306 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 313 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_if_expr(parser->allocator); CHECK_ALLOC_NULL((yyval.expr)); @@ -2159,11 +2067,11 @@ yyreduce: CHECK_ALLOC_NULL(true_block); (yyval.expr)->if_.true_ = true_block; } -#line 2163 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2071 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 27: -#line 314 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 321 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_if_expr(parser->allocator); CHECK_ALLOC_NULL((yyval.expr)); @@ -2173,11 +2081,11 @@ yyreduce: CHECK_ALLOC_NULL(true_block); (yyval.expr)->if_.true_ = true_block; } -#line 2177 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2085 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 28: -#line 323 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 330 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_if_else_expr(parser->allocator); CHECK_ALLOC_NULL((yyval.expr)); @@ -2189,11 +2097,11 @@ yyreduce: CHECK_ALLOC_NULL(false_block); (yyval.expr)->if_else.false_ = false_block; } -#line 2193 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2101 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 29: -#line 334 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 341 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_if_else_expr(parser->allocator); CHECK_ALLOC_NULL((yyval.expr)); @@ -2207,22 +2115,22 @@ yyreduce: CHECK_ALLOC_NULL(false_block); (yyval.expr)->if_else.false_ = false_block; } -#line 2211 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2119 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 30: -#line 347 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 354 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_br_if_expr(parser->allocator); CHECK_ALLOC_NULL((yyval.expr)); (yyval.expr)->br_if.var = (yyvsp[-1].var); (yyval.expr)->br_if.cond = (yyvsp[0].expr); } -#line 2222 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2130 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 31: -#line 353 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 360 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_br_if_expr(parser->allocator); CHECK_ALLOC_NULL((yyval.expr)); @@ -2230,11 +2138,11 @@ yyreduce: (yyval.expr)->br_if.expr = (yyvsp[-1].expr); (yyval.expr)->br_if.cond = (yyvsp[0].expr); } -#line 2234 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2142 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 32: -#line 360 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 367 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_loop_expr(parser->allocator); CHECK_ALLOC_NULL((yyval.expr)); @@ -2242,11 +2150,11 @@ yyreduce: (yyval.expr)->loop.inner = (yyvsp[-1].text); (yyval.expr)->loop.exprs = (yyvsp[0].exprs); } -#line 2246 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2154 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 33: -#line 367 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 374 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_loop_expr(parser->allocator); CHECK_ALLOC_NULL((yyval.expr)); @@ -2254,11 +2162,11 @@ yyreduce: (yyval.expr)->loop.inner = (yyvsp[-1].text); (yyval.expr)->loop.exprs = (yyvsp[0].exprs); } -#line 2258 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2166 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 34: -#line 374 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 381 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_br_expr(parser->allocator); CHECK_ALLOC_NULL((yyval.expr)); @@ -2267,32 +2175,32 @@ yyreduce: (yyval.expr)->br.var.index = 0; (yyval.expr)->br.expr = (yyvsp[0].expr); } -#line 2271 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2179 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 35: -#line 382 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 389 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_br_expr(parser->allocator); CHECK_ALLOC_NULL((yyval.expr)); (yyval.expr)->br.var = (yyvsp[-1].var); (yyval.expr)->br.expr = (yyvsp[0].expr); } -#line 2282 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2190 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 36: -#line 388 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 395 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_return_expr(parser->allocator); CHECK_ALLOC_NULL((yyval.expr)); (yyval.expr)->return_.expr = (yyvsp[0].expr); } -#line 2292 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2200 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 37: -#line 393 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 400 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_br_table_expr(parser->allocator); CHECK_ALLOC_NULL((yyval.expr)); @@ -2300,33 +2208,33 @@ yyreduce: (yyval.expr)->br_table.targets = (yyvsp[-2].vars); (yyval.expr)->br_table.default_target = (yyvsp[-1].var); } -#line 2304 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2212 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 38: -#line 400 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 407 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_call_expr(parser->allocator); CHECK_ALLOC_NULL((yyval.expr)); (yyval.expr)->call.var = (yyvsp[-1].var); (yyval.expr)->call.args = (yyvsp[0].exprs); } -#line 2315 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2223 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 39: -#line 406 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 413 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_call_import_expr(parser->allocator); CHECK_ALLOC_NULL((yyval.expr)); (yyval.expr)->call.var = (yyvsp[-1].var); (yyval.expr)->call.args = (yyvsp[0].exprs); } -#line 2326 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2234 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 40: -#line 412 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 419 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_call_indirect_expr(parser->allocator); CHECK_ALLOC_NULL((yyval.expr)); @@ -2334,32 +2242,32 @@ yyreduce: (yyval.expr)->call_indirect.expr = (yyvsp[-1].expr); (yyval.expr)->call_indirect.args = (yyvsp[0].exprs); } -#line 2338 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2246 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 41: -#line 419 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 426 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_get_local_expr(parser->allocator); CHECK_ALLOC_NULL((yyval.expr)); (yyval.expr)->get_local.var = (yyvsp[0].var); } -#line 2348 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2256 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 42: -#line 424 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 431 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_set_local_expr(parser->allocator); CHECK_ALLOC_NULL((yyval.expr)); (yyval.expr)->set_local.var = (yyvsp[-1].var); (yyval.expr)->set_local.expr = (yyvsp[0].expr); } -#line 2359 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2267 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 43: -#line 430 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 437 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_load_expr(parser->allocator); CHECK_ALLOC_NULL((yyval.expr)); @@ -2368,11 +2276,11 @@ yyreduce: (yyval.expr)->load.align = (yyvsp[-1].u32); (yyval.expr)->load.addr = (yyvsp[0].expr); } -#line 2372 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2280 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 44: -#line 438 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 445 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_store_expr(parser->allocator); CHECK_ALLOC_NULL((yyval.expr)); @@ -2382,11 +2290,11 @@ yyreduce: (yyval.expr)->store.addr = (yyvsp[-1].expr); (yyval.expr)->store.value = (yyvsp[0].expr); } -#line 2386 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2294 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 45: -#line 447 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 454 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_const_expr(parser->allocator); CHECK_ALLOC_NULL((yyval.expr)); @@ -2400,22 +2308,22 @@ yyreduce: } wasm_free(parser->allocator, (char*)(yyvsp[0].literal).text.start); } -#line 2404 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2312 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 46: -#line 460 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 467 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_unary_expr(parser->allocator); CHECK_ALLOC_NULL((yyval.expr)); (yyval.expr)->unary.opcode = (yyvsp[-1].opcode); (yyval.expr)->unary.expr = (yyvsp[0].expr); } -#line 2415 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2323 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 47: -#line 466 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 473 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_binary_expr(parser->allocator); CHECK_ALLOC_NULL((yyval.expr)); @@ -2423,11 +2331,11 @@ yyreduce: (yyval.expr)->binary.left = (yyvsp[-1].expr); (yyval.expr)->binary.right = (yyvsp[0].expr); } -#line 2427 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2335 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 48: -#line 473 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 480 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_select_expr(parser->allocator); CHECK_ALLOC_NULL((yyval.expr)); @@ -2435,11 +2343,11 @@ yyreduce: (yyval.expr)->select.false_ = (yyvsp[-1].expr); (yyval.expr)->select.cond = (yyvsp[0].expr); } -#line 2439 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2347 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 49: -#line 480 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 487 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_compare_expr(parser->allocator); CHECK_ALLOC_NULL((yyval.expr)); @@ -2447,968 +2355,274 @@ yyreduce: (yyval.expr)->compare.left = (yyvsp[-1].expr); (yyval.expr)->compare.right = (yyvsp[0].expr); } -#line 2451 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2359 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 50: -#line 487 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 494 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_convert_expr(parser->allocator); CHECK_ALLOC_NULL((yyval.expr)); (yyval.expr)->convert.opcode = (yyvsp[-1].opcode); (yyval.expr)->convert.expr = (yyvsp[0].expr); } -#line 2462 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2370 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 51: -#line 493 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 500 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_empty_expr(parser->allocator, WASM_EXPR_TYPE_UNREACHABLE); CHECK_ALLOC_NULL((yyval.expr)); } -#line 2471 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2379 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 52: -#line 497 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 504 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_empty_expr(parser->allocator, WASM_EXPR_TYPE_MEMORY_SIZE); CHECK_ALLOC_NULL((yyval.expr)); } -#line 2480 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2388 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 53: -#line 501 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 508 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_grow_memory_expr(parser->allocator); CHECK_ALLOC_NULL((yyval.expr)); (yyval.expr)->grow_memory.expr = (yyvsp[0].expr); } -#line 2490 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2398 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 54: -#line 508 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 515 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.expr) = NULL; } -#line 2496 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2404 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 56: -#line 512 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 519 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { WASM_ZERO_MEMORY((yyval.exprs)); CHECK_ALLOC(wasm_append_expr_ptr_value(parser->allocator, &(yyval.exprs), &(yyvsp[0].expr))); } -#line 2505 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2413 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 57: -#line 516 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 523 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.exprs) = (yyvsp[-1].exprs); CHECK_ALLOC(wasm_append_expr_ptr_value(parser->allocator, &(yyval.exprs), &(yyvsp[0].expr))); } -#line 2514 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2422 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 58: -#line 522 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 529 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { WASM_ZERO_MEMORY((yyval.exprs)); } -#line 2520 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2428 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 60: -#line 529 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 535 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { - WASM_ZERO_MEMORY((yyval.type_bindings)); - CHECK_ALLOC(wasm_extend_types(parser->allocator, &(yyval.type_bindings).types, &(yyvsp[-1].types))); - wasm_destroy_type_vector(parser->allocator, &(yyvsp[-1].types)); + (yyval.func_fields) = new_func_field(parser->allocator); + CHECK_ALLOC_NULL((yyval.func_fields)); + (yyval.func_fields)->type = WASM_FUNC_FIELD_TYPE_EXPRS; + (yyval.func_fields)->exprs = (yyvsp[0].exprs); + (yyval.func_fields)->next = NULL; } -#line 2530 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2440 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 61: -#line 534 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 542 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { - WASM_ZERO_MEMORY((yyval.type_bindings)); - WasmBinding* binding = - wasm_insert_binding(parser->allocator, &(yyval.type_bindings).bindings, &(yyvsp[-2].text)); - CHECK_ALLOC_NULL(binding); - binding->loc = (yylsp[-3]); - binding->index = (yyval.type_bindings).types.size; - CHECK_ALLOC(wasm_append_type_value(parser->allocator, &(yyval.type_bindings).types, &(yyvsp[-1].type))); + (yyval.func_fields) = new_func_field(parser->allocator); + (yyval.func_fields)->type = WASM_FUNC_FIELD_TYPE_PARAM_TYPES; + (yyval.func_fields)->types = (yyvsp[-2].types); + (yyval.func_fields)->next = (yyvsp[0].func_fields); } -#line 2544 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2451 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 62: -#line 543 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 548 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { - (yyval.type_bindings) = (yyvsp[-4].type_bindings); - CHECK_ALLOC(wasm_extend_types(parser->allocator, &(yyval.type_bindings).types, &(yyvsp[-1].types))); - wasm_destroy_type_vector(parser->allocator, &(yyvsp[-1].types)); + (yyval.func_fields) = new_func_field(parser->allocator); + (yyval.func_fields)->type = WASM_FUNC_FIELD_TYPE_BOUND_PARAM; + (yyval.func_fields)->bound_type.loc = (yylsp[-4]); + (yyval.func_fields)->bound_type.name = (yyvsp[-3].text); + (yyval.func_fields)->bound_type.type = (yyvsp[-2].type); + (yyval.func_fields)->next = (yyvsp[0].func_fields); } -#line 2554 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2464 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 63: -#line 548 "src/wasm-bison-parser.y" /* yacc.c:1646 */ +#line 556 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { - (yyval.type_bindings) = (yyvsp[-5].type_bindings); - WasmBinding* binding = - wasm_insert_binding(parser->allocator, &(yyval.type_bindings).bindings, &(yyvsp[-2].text)); - CHECK_ALLOC_NULL(binding); - binding->loc = (yylsp[-3]); - binding->index = (yyval.type_bindings).types.size; - CHECK_ALLOC(wasm_append_type_value(parser->allocator, &(yyval.type_bindings).types, &(yyvsp[-1].type))); + (yyval.func_fields) = new_func_field(parser->allocator); + (yyval.func_fields)->type = WASM_FUNC_FIELD_TYPE_RESULT_TYPE; + (yyval.func_fields)->result_type = (yyvsp[-2].type); + (yyval.func_fields)->next = (yyvsp[0].func_fields); } -#line 2568 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2475 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; case 64: -#line 559 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { (yyval.type) = (yyvsp[-1].type); } -#line 2574 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 65: #line 562 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { - WASM_ZERO_MEMORY((yyval.type_bindings)); - CHECK_ALLOC(wasm_extend_types(parser->allocator, &(yyval.type_bindings).types, &(yyvsp[-1].types))); - wasm_destroy_type_vector(parser->allocator, &(yyvsp[-1].types)); + (yyval.func_fields) = new_func_field(parser->allocator); + (yyval.func_fields)->type = WASM_FUNC_FIELD_TYPE_LOCAL_TYPES; + (yyval.func_fields)->types = (yyvsp[-2].types); + (yyval.func_fields)->next = (yyvsp[0].func_fields); } -#line 2584 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2486 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 66: -#line 567 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - WASM_ZERO_MEMORY((yyval.type_bindings)); - WasmBinding* binding = - wasm_insert_binding(parser->allocator, &(yyval.type_bindings).bindings, &(yyvsp[-2].text)); - CHECK_ALLOC_NULL(binding); - binding->loc = (yylsp[-3]); - binding->index = (yyval.type_bindings).types.size; - CHECK_ALLOC(wasm_append_type_value(parser->allocator, &(yyval.type_bindings).types, &(yyvsp[-1].type))); - } -#line 2598 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 67: -#line 576 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.type_bindings) = (yyvsp[-4].type_bindings); - CHECK_ALLOC(wasm_extend_types(parser->allocator, &(yyval.type_bindings).types, &(yyvsp[-1].types))); - wasm_destroy_type_vector(parser->allocator, &(yyvsp[-1].types)); - } -#line 2608 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 68: -#line 581 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 65: +#line 568 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { - (yyval.type_bindings) = (yyvsp[-5].type_bindings); - WasmBinding* binding = - wasm_insert_binding(parser->allocator, &(yyval.type_bindings).bindings, &(yyvsp[-2].text)); - CHECK_ALLOC_NULL(binding); - binding->loc = (yylsp[-3]); - binding->index = (yyval.type_bindings).types.size; - CHECK_ALLOC(wasm_append_type_value(parser->allocator, &(yyval.type_bindings).types, &(yyvsp[-1].type))); + (yyval.func_fields) = new_func_field(parser->allocator); + (yyval.func_fields)->type = WASM_FUNC_FIELD_TYPE_BOUND_LOCAL; + (yyval.func_fields)->bound_type.loc = (yylsp[-4]); + (yyval.func_fields)->bound_type.name = (yyvsp[-3].text); + (yyval.func_fields)->bound_type.type = (yyvsp[-2].type); + (yyval.func_fields)->next = (yyvsp[0].func_fields); } -#line 2622 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2499 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 69: -#line 592 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 66: +#line 578 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.var) = (yyvsp[-1].var); } -#line 2628 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 70: -#line 595 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; - } -#line 2637 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 71: -#line 599 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->name = (yyvsp[0].text); - } -#line 2647 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 72: -#line 604 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE; - (yyval.func)->name = (yyvsp[-1].text); - (yyval.func)->type_var = (yyvsp[0].var); - } -#line 2658 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 73: -#line 610 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->name = (yyvsp[-2].text); - (yyval.func)->type_var = (yyvsp[-1].var); - (yyval.func)->params = (yyvsp[0].type_bindings); - } -#line 2670 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 74: -#line 617 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->name = (yyvsp[-3].text); - (yyval.func)->type_var = (yyvsp[-2].var); - (yyval.func)->params = (yyvsp[-1].type_bindings); - (yyval.func)->result_type = (yyvsp[0].type); - } -#line 2683 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 75: -#line 625 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->name = (yyvsp[-4].text); - (yyval.func)->type_var = (yyvsp[-3].var); - (yyval.func)->params = (yyvsp[-2].type_bindings); - (yyval.func)->result_type = (yyvsp[-1].type); - (yyval.func)->locals = (yyvsp[0].type_bindings); - } -#line 2697 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 76: -#line 634 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->name = (yyvsp[-5].text); - (yyval.func)->type_var = (yyvsp[-4].var); - (yyval.func)->params = (yyvsp[-3].type_bindings); - (yyval.func)->result_type = (yyvsp[-2].type); - (yyval.func)->locals = (yyvsp[-1].type_bindings); - (yyval.func)->exprs = (yyvsp[0].exprs); - } -#line 2712 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 77: -#line 644 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->name = (yyvsp[-4].text); - (yyval.func)->type_var = (yyvsp[-3].var); - (yyval.func)->params = (yyvsp[-2].type_bindings); - (yyval.func)->result_type = (yyvsp[-1].type); - (yyval.func)->exprs = (yyvsp[0].exprs); - } -#line 2726 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 78: -#line 653 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->name = (yyvsp[-3].text); - (yyval.func)->type_var = (yyvsp[-2].var); - (yyval.func)->params = (yyvsp[-1].type_bindings); - (yyval.func)->locals = (yyvsp[0].type_bindings); - } -#line 2739 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 79: -#line 661 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->name = (yyvsp[-4].text); - (yyval.func)->type_var = (yyvsp[-3].var); - (yyval.func)->params = (yyvsp[-2].type_bindings); - (yyval.func)->locals = (yyvsp[-1].type_bindings); - (yyval.func)->exprs = (yyvsp[0].exprs); - } -#line 2753 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 80: -#line 670 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->name = (yyvsp[-3].text); - (yyval.func)->type_var = (yyvsp[-2].var); - (yyval.func)->params = (yyvsp[-1].type_bindings); - (yyval.func)->exprs = (yyvsp[0].exprs); - } -#line 2766 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 81: -#line 678 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->name = (yyvsp[-2].text); - (yyval.func)->type_var = (yyvsp[-1].var); - (yyval.func)->result_type = (yyvsp[0].type); - } -#line 2778 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 82: -#line 685 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->name = (yyvsp[-3].text); - (yyval.func)->type_var = (yyvsp[-2].var); - (yyval.func)->result_type = (yyvsp[-1].type); - (yyval.func)->locals = (yyvsp[0].type_bindings); - } -#line 2791 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 83: -#line 693 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->name = (yyvsp[-4].text); - (yyval.func)->type_var = (yyvsp[-3].var); - (yyval.func)->result_type = (yyvsp[-2].type); - (yyval.func)->locals = (yyvsp[-1].type_bindings); - (yyval.func)->exprs = (yyvsp[0].exprs); - } -#line 2805 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 84: -#line 702 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->name = (yyvsp[-3].text); - (yyval.func)->type_var = (yyvsp[-2].var); - (yyval.func)->result_type = (yyvsp[-1].type); - (yyval.func)->exprs = (yyvsp[0].exprs); - } -#line 2818 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 85: -#line 710 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE; - (yyval.func)->name = (yyvsp[-2].text); - (yyval.func)->type_var = (yyvsp[-1].var); - (yyval.func)->locals = (yyvsp[0].type_bindings); - } -#line 2830 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 86: -#line 717 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE; - (yyval.func)->name = (yyvsp[-3].text); - (yyval.func)->type_var = (yyvsp[-2].var); - (yyval.func)->locals = (yyvsp[-1].type_bindings); - (yyval.func)->exprs = (yyvsp[0].exprs); - } -#line 2843 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2505 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 87: -#line 725 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 67: +#line 581 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE; - (yyval.func)->name = (yyvsp[-2].text); - (yyval.func)->type_var = (yyvsp[-1].var); - (yyval.func)->exprs = (yyvsp[0].exprs); - } -#line 2855 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; + CHECK_ALLOC_NULL((yyval.func)); + WasmFuncField* field = (yyvsp[0].func_fields); + while (field) { + WasmFuncField* next = field->next; - case 88: -#line 732 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->name = (yyvsp[-1].text); - (yyval.func)->locals = (yyvsp[0].type_bindings); - } -#line 2866 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; + if (field->type == WASM_FUNC_FIELD_TYPE_PARAM_TYPES || + field->type == WASM_FUNC_FIELD_TYPE_BOUND_PARAM || + field->type == WASM_FUNC_FIELD_TYPE_RESULT_TYPE) { + (yyval.func)->decl.flags = WASM_FUNC_DECLARATION_FLAG_HAS_SIGNATURE; + } - case 89: -#line 738 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->name = (yyvsp[-2].text); - (yyval.func)->locals = (yyvsp[-1].type_bindings); - (yyval.func)->exprs = (yyvsp[0].exprs); - } -#line 2878 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; + switch (field->type) { + case WASM_FUNC_FIELD_TYPE_EXPRS: + (yyval.func)->exprs = field->exprs; + break; - case 90: -#line 745 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->name = (yyvsp[-1].text); - (yyval.func)->params = (yyvsp[0].type_bindings); - } -#line 2889 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; + case WASM_FUNC_FIELD_TYPE_PARAM_TYPES: + case WASM_FUNC_FIELD_TYPE_LOCAL_TYPES: { + WasmTypeVector* types = + field->type == WASM_FUNC_FIELD_TYPE_PARAM_TYPES + ? &(yyval.func)->decl.sig.param_types + : &(yyval.func)->local_types; + CHECK_ALLOC( + wasm_extend_types(parser->allocator, types, &field->types)); + wasm_destroy_type_vector(parser->allocator, &field->types); + break; + } - case 91: -#line 751 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->name = (yyvsp[-2].text); - (yyval.func)->params = (yyvsp[-1].type_bindings); - (yyval.func)->result_type = (yyvsp[0].type); - } -#line 2901 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; + case WASM_FUNC_FIELD_TYPE_BOUND_PARAM: + case WASM_FUNC_FIELD_TYPE_BOUND_LOCAL: { + WasmTypeVector* types; + WasmBindingHash* bindings; + if (field->type == WASM_FUNC_FIELD_TYPE_BOUND_PARAM) { + types = &(yyval.func)->decl.sig.param_types; + bindings = &(yyval.func)->param_bindings; + } else { + types = &(yyval.func)->local_types; + bindings = &(yyval.func)->local_bindings; + } - case 92: -#line 758 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->name = (yyvsp[-3].text); - (yyval.func)->params = (yyvsp[-2].type_bindings); - (yyval.func)->result_type = (yyvsp[-1].type); - (yyval.func)->locals = (yyvsp[0].type_bindings); - } -#line 2914 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; + CHECK_ALLOC(wasm_append_type_value(parser->allocator, types, + &field->bound_type.type)); + WasmBinding* binding = wasm_insert_binding( + parser->allocator, bindings, &field->bound_type.name); + CHECK_ALLOC_NULL(binding); + binding->loc = field->bound_type.loc; + binding->index = types->size - 1; + break; + } - case 93: -#line 766 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->name = (yyvsp[-4].text); - (yyval.func)->params = (yyvsp[-3].type_bindings); - (yyval.func)->result_type = (yyvsp[-2].type); - (yyval.func)->locals = (yyvsp[-1].type_bindings); - (yyval.func)->exprs = (yyvsp[0].exprs); - } -#line 2928 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; + case WASM_FUNC_FIELD_TYPE_RESULT_TYPE: + (yyval.func)->decl.sig.result_type = field->result_type; + break; + } - case 94: -#line 775 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->name = (yyvsp[-3].text); - (yyval.func)->params = (yyvsp[-2].type_bindings); - (yyval.func)->result_type = (yyvsp[-1].type); - (yyval.func)->exprs = (yyvsp[0].exprs); + /* we steal memory from the func field, but not the linked list nodes */ + wasm_free(parser->allocator, field); + field = next; + } } -#line 2941 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2572 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 95: -#line 783 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 68: +#line 645 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->name = (yyvsp[-2].text); - (yyval.func)->params = (yyvsp[-1].type_bindings); - (yyval.func)->locals = (yyvsp[0].type_bindings); + (yyval.func) = (yyvsp[-1].func); + (yyval.func)->loc = (yylsp[-3]); + (yyval.func)->decl.flags |= WASM_FUNC_DECLARATION_FLAG_HAS_FUNC_TYPE; + (yyval.func)->decl.type_var = (yyvsp[-2].var); } -#line 2953 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2583 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 96: -#line 790 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 69: +#line 651 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; + (yyval.func) = (yyvsp[-1].func); + (yyval.func)->loc = (yylsp[-4]); + (yyval.func)->decl.flags |= WASM_FUNC_DECLARATION_FLAG_HAS_FUNC_TYPE; + (yyval.func)->decl.type_var = (yyvsp[-2].var); (yyval.func)->name = (yyvsp[-3].text); - (yyval.func)->params = (yyvsp[-2].type_bindings); - (yyval.func)->locals = (yyvsp[-1].type_bindings); - (yyval.func)->exprs = (yyvsp[0].exprs); } -#line 2966 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2595 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 97: -#line 798 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->name = (yyvsp[-2].text); - (yyval.func)->params = (yyvsp[-1].type_bindings); - (yyval.func)->exprs = (yyvsp[0].exprs); - } -#line 2978 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 98: -#line 805 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->name = (yyvsp[-1].text); - (yyval.func)->result_type = (yyvsp[0].type); - } -#line 2989 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 99: -#line 811 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 70: +#line 658 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->name = (yyvsp[-2].text); - (yyval.func)->result_type = (yyvsp[-1].type); - (yyval.func)->locals = (yyvsp[0].type_bindings); + (yyval.func) = (yyvsp[-1].func); + (yyval.func)->loc = (yylsp[-2]); + (yyval.func)->decl.flags = WASM_FUNC_DECLARATION_FLAG_HAS_SIGNATURE; } -#line 3001 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2605 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 100: -#line 818 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->name = (yyvsp[-3].text); - (yyval.func)->result_type = (yyvsp[-2].type); - (yyval.func)->locals = (yyvsp[-1].type_bindings); - (yyval.func)->exprs = (yyvsp[0].exprs); - } -#line 3014 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 101: -#line 826 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 71: +#line 663 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; + (yyval.func) = (yyvsp[-1].func); + (yyval.func)->loc = (yylsp[-3]); + (yyval.func)->decl.flags = WASM_FUNC_DECLARATION_FLAG_HAS_SIGNATURE; (yyval.func)->name = (yyvsp[-2].text); - (yyval.func)->result_type = (yyvsp[-1].type); - (yyval.func)->exprs = (yyvsp[0].exprs); - } -#line 3026 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 102: -#line 833 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->name = (yyvsp[-1].text); - (yyval.func)->exprs = (yyvsp[0].exprs); - } -#line 3037 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 103: -#line 839 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE; - (yyval.func)->type_var = (yyvsp[0].var); - } -#line 3047 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 104: -#line 844 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->type_var = (yyvsp[-1].var); - (yyval.func)->params = (yyvsp[0].type_bindings); - } -#line 3058 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 105: -#line 850 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->type_var = (yyvsp[-2].var); - (yyval.func)->params = (yyvsp[-1].type_bindings); - (yyval.func)->result_type = (yyvsp[0].type); - } -#line 3070 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 106: -#line 857 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->type_var = (yyvsp[-3].var); - (yyval.func)->params = (yyvsp[-2].type_bindings); - (yyval.func)->result_type = (yyvsp[-1].type); - (yyval.func)->locals = (yyvsp[0].type_bindings); - } -#line 3083 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 107: -#line 865 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->type_var = (yyvsp[-4].var); - (yyval.func)->params = (yyvsp[-3].type_bindings); - (yyval.func)->result_type = (yyvsp[-2].type); - (yyval.func)->locals = (yyvsp[-1].type_bindings); - (yyval.func)->exprs = (yyvsp[0].exprs); - } -#line 3097 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 108: -#line 874 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->type_var = (yyvsp[-3].var); - (yyval.func)->params = (yyvsp[-2].type_bindings); - (yyval.func)->result_type = (yyvsp[-1].type); - (yyval.func)->exprs = (yyvsp[0].exprs); - } -#line 3110 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 109: -#line 882 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->type_var = (yyvsp[-2].var); - (yyval.func)->params = (yyvsp[-1].type_bindings); - (yyval.func)->locals = (yyvsp[0].type_bindings); - } -#line 3122 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 110: -#line 889 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->type_var = (yyvsp[-3].var); - (yyval.func)->params = (yyvsp[-2].type_bindings); - (yyval.func)->locals = (yyvsp[-1].type_bindings); - (yyval.func)->exprs = (yyvsp[0].exprs); - } -#line 3135 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 111: -#line 897 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->type_var = (yyvsp[-2].var); - (yyval.func)->params = (yyvsp[-1].type_bindings); - (yyval.func)->exprs = (yyvsp[0].exprs); - } -#line 3147 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 112: -#line 904 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->type_var = (yyvsp[-1].var); - (yyval.func)->result_type = (yyvsp[0].type); - } -#line 3158 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 113: -#line 910 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->type_var = (yyvsp[-2].var); - (yyval.func)->result_type = (yyvsp[-1].type); - (yyval.func)->locals = (yyvsp[0].type_bindings); - } -#line 3170 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 114: -#line 917 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->type_var = (yyvsp[-3].var); - (yyval.func)->result_type = (yyvsp[-2].type); - (yyval.func)->locals = (yyvsp[-1].type_bindings); - (yyval.func)->exprs = (yyvsp[0].exprs); - } -#line 3183 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 115: -#line 925 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->type_var = (yyvsp[-2].var); - (yyval.func)->result_type = (yyvsp[-1].type); - (yyval.func)->exprs = (yyvsp[0].exprs); - } -#line 3195 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 116: -#line 932 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE; - (yyval.func)->type_var = (yyvsp[-1].var); - (yyval.func)->locals = (yyvsp[0].type_bindings); - } -#line 3206 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 117: -#line 938 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE; - (yyval.func)->type_var = (yyvsp[-2].var); - (yyval.func)->locals = (yyvsp[-1].type_bindings); - (yyval.func)->exprs = (yyvsp[0].exprs); - } -#line 3218 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 118: -#line 945 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE; - (yyval.func)->type_var = (yyvsp[-1].var); - (yyval.func)->exprs = (yyvsp[0].exprs); - } -#line 3229 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 119: -#line 951 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->params = (yyvsp[0].type_bindings); - } -#line 3239 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 120: -#line 956 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->params = (yyvsp[-1].type_bindings); - (yyval.func)->result_type = (yyvsp[0].type); } -#line 3250 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2616 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 121: -#line 962 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->params = (yyvsp[-2].type_bindings); - (yyval.func)->result_type = (yyvsp[-1].type); - (yyval.func)->locals = (yyvsp[0].type_bindings); - } -#line 3262 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 122: -#line 969 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->params = (yyvsp[-3].type_bindings); - (yyval.func)->result_type = (yyvsp[-2].type); - (yyval.func)->locals = (yyvsp[-1].type_bindings); - (yyval.func)->exprs = (yyvsp[0].exprs); - } -#line 3275 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 123: -#line 977 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->params = (yyvsp[-2].type_bindings); - (yyval.func)->result_type = (yyvsp[-1].type); - (yyval.func)->exprs = (yyvsp[0].exprs); - } -#line 3287 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 124: -#line 984 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->params = (yyvsp[-1].type_bindings); - (yyval.func)->locals = (yyvsp[0].type_bindings); - } -#line 3298 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 125: -#line 990 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->params = (yyvsp[-2].type_bindings); - (yyval.func)->locals = (yyvsp[-1].type_bindings); - (yyval.func)->exprs = (yyvsp[0].exprs); - } -#line 3310 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 126: -#line 997 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->params = (yyvsp[-1].type_bindings); - (yyval.func)->exprs = (yyvsp[0].exprs); - } -#line 3321 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 127: -#line 1003 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->result_type = (yyvsp[0].type); - } -#line 3331 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 128: -#line 1008 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->result_type = (yyvsp[-1].type); - (yyval.func)->locals = (yyvsp[0].type_bindings); - } -#line 3342 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 129: -#line 1014 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->result_type = (yyvsp[-2].type); - (yyval.func)->locals = (yyvsp[-1].type_bindings); - (yyval.func)->exprs = (yyvsp[0].exprs); - } -#line 3354 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 130: -#line 1021 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->result_type = (yyvsp[-1].type); - (yyval.func)->exprs = (yyvsp[0].exprs); - } -#line 3365 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 131: -#line 1027 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->locals = (yyvsp[0].type_bindings); - } -#line 3375 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 132: -#line 1032 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->locals = (yyvsp[-1].type_bindings); - (yyval.func)->exprs = (yyvsp[0].exprs); - } -#line 3386 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 133: -#line 1038 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { - (yyval.func) = new_func(parser->allocator); - (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE; - (yyval.func)->exprs = (yyvsp[0].exprs); - } -#line 3396 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 134: -#line 1045 "src/wasm-bison-parser.y" /* yacc.c:1646 */ - { (yyval.func) = (yyvsp[-1].func); (yyval.func)->loc = (yylsp[-2]); } -#line 3402 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ - break; - - case 135: -#line 1051 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 72: +#line 674 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.var) = (yyvsp[-1].var); } -#line 3408 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2622 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 136: -#line 1055 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 73: +#line 678 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { if (WASM_FAILED(wasm_parse_int32((yyvsp[0].literal).text.start, (yyvsp[0].literal).text.start + (yyvsp[0].literal).text.length, &(yyval.u32), @@ -3419,37 +2633,37 @@ yyreduce: WASM_PRINTF_STRING_SLICE_ARG((yyvsp[0].literal).text)); } } -#line 3423 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2637 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 137: -#line 1068 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 74: +#line 691 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.segment).loc = (yylsp[-3]); (yyval.segment).data = (yyvsp[-1].segment).data; (yyval.segment).size = (yyvsp[-1].segment).size; (yyval.segment).addr = (yyvsp[-2].u32); } -#line 3434 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2648 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 138: -#line 1076 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 75: +#line 699 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { WASM_ZERO_MEMORY((yyval.segments)); } -#line 3440 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2654 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 139: -#line 1077 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 76: +#line 700 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.segments) = (yyvsp[-1].segments); CHECK_ALLOC(wasm_append_segment_value(parser->allocator, &(yyval.segments), &(yyvsp[0].segment))); } -#line 3449 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2663 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 140: -#line 1084 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 77: +#line 707 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { if (WASM_FAILED(wasm_parse_int32((yyvsp[0].literal).text.start, (yyvsp[0].literal).text.start + (yyvsp[0].literal).text.length, &(yyval.u32), @@ -3459,11 +2673,11 @@ yyreduce: WASM_PRINTF_STRING_SLICE_ARG((yyvsp[0].literal).text)); } } -#line 3463 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2677 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 141: -#line 1096 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 78: +#line 719 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { if (WASM_FAILED(wasm_parse_int32((yyvsp[0].literal).text.start, (yyvsp[0].literal).text.start + (yyvsp[0].literal).text.length, &(yyval.u32), @@ -3473,132 +2687,132 @@ yyreduce: WASM_PRINTF_STRING_SLICE_ARG((yyvsp[0].literal).text)); } } -#line 3477 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2691 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 142: -#line 1108 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 79: +#line 731 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.memory).loc = (yylsp[-4]); (yyval.memory).initial_pages = (yyvsp[-3].u32); (yyval.memory).max_pages = (yyvsp[-2].u32); (yyval.memory).segments = (yyvsp[-1].segments); } -#line 3488 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2702 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 143: -#line 1114 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 80: +#line 737 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.memory).loc = (yylsp[-3]); (yyval.memory).initial_pages = (yyvsp[-2].u32); (yyval.memory).max_pages = (yyval.memory).initial_pages; (yyval.memory).segments = (yyvsp[-1].segments); } -#line 3499 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2713 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 144: -#line 1123 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 81: +#line 746 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { WASM_ZERO_MEMORY((yyval.func_type)); (yyval.func_type).sig = (yyvsp[-2].func_sig); } -#line 3508 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2722 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 145: -#line 1127 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 82: +#line 750 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.func_type).name = (yyvsp[-5].text); (yyval.func_type).sig = (yyvsp[-2].func_sig); } -#line 3517 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2731 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 146: -#line 1134 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 83: +#line 757 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.vars) = (yyvsp[-1].vars); } -#line 3523 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2737 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 147: -#line 1138 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 84: +#line 761 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.import) = new_import(parser->allocator); - (yyval.import)->import_type = WASM_IMPORT_HAS_TYPE; (yyval.import)->module_name = (yyvsp[-3].text); (yyval.import)->func_name = (yyvsp[-2].text); - (yyval.import)->type_var = (yyvsp[-1].var); + (yyval.import)->decl.flags = WASM_FUNC_DECLARATION_FLAG_HAS_FUNC_TYPE; + (yyval.import)->decl.type_var = (yyvsp[-1].var); } -#line 3535 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2749 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 148: -#line 1145 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 85: +#line 768 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.import) = new_import(parser->allocator); - (yyval.import)->import_type = WASM_IMPORT_HAS_TYPE; (yyval.import)->name = (yyvsp[-4].text); (yyval.import)->module_name = (yyvsp[-3].text); (yyval.import)->func_name = (yyvsp[-2].text); - (yyval.import)->type_var = (yyvsp[-1].var); + (yyval.import)->decl.flags = WASM_FUNC_DECLARATION_FLAG_HAS_FUNC_TYPE; + (yyval.import)->decl.type_var = (yyvsp[-1].var); } -#line 3548 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2762 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 149: -#line 1153 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 86: +#line 776 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.import) = new_import(parser->allocator); - (yyval.import)->import_type = WASM_IMPORT_HAS_FUNC_SIGNATURE; (yyval.import)->module_name = (yyvsp[-3].text); (yyval.import)->func_name = (yyvsp[-2].text); - (yyval.import)->func_sig = (yyvsp[-1].func_sig); + (yyval.import)->decl.flags = WASM_FUNC_DECLARATION_FLAG_HAS_SIGNATURE; + (yyval.import)->decl.sig = (yyvsp[-1].func_sig); } -#line 3560 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2774 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 150: -#line 1160 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 87: +#line 783 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.import) = new_import(parser->allocator); - (yyval.import)->import_type = WASM_IMPORT_HAS_FUNC_SIGNATURE; (yyval.import)->name = (yyvsp[-4].text); (yyval.import)->module_name = (yyvsp[-3].text); (yyval.import)->func_name = (yyvsp[-2].text); - (yyval.import)->func_sig = (yyvsp[-1].func_sig); + (yyval.import)->decl.flags = WASM_FUNC_DECLARATION_FLAG_HAS_SIGNATURE; + (yyval.import)->decl.sig = (yyvsp[-1].func_sig); } -#line 3573 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2787 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 151: -#line 1171 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 88: +#line 794 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.export_).name = (yyvsp[-2].text); (yyval.export_).var = (yyvsp[-1].var); } -#line 3582 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2796 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 152: -#line 1178 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 89: +#line 801 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.export_memory).name = (yyvsp[-2].text); } -#line 3590 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2804 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 153: -#line 1184 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 90: +#line 807 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.module) = new_module(parser->allocator); } -#line 3598 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2812 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 154: -#line 1187 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 91: +#line 810 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.module) = (yyvsp[-1].module); WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module)); @@ -3608,11 +2822,11 @@ yyreduce: field->func = *(yyvsp[0].func); wasm_free(parser->allocator, (yyvsp[0].func)); } -#line 3612 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2826 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 155: -#line 1196 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 92: +#line 819 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.module) = (yyvsp[-1].module); WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module)); @@ -3622,11 +2836,11 @@ yyreduce: field->import = *(yyvsp[0].import); wasm_free(parser->allocator, (yyvsp[0].import)); } -#line 3626 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2840 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 156: -#line 1205 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 93: +#line 828 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.module) = (yyvsp[-1].module); WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module)); @@ -3635,11 +2849,11 @@ yyreduce: field->type = WASM_MODULE_FIELD_TYPE_EXPORT; field->export_ = (yyvsp[0].export_); } -#line 3639 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2853 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 157: -#line 1213 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 94: +#line 836 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.module) = (yyvsp[-1].module); WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module)); @@ -3648,11 +2862,11 @@ yyreduce: field->type = WASM_MODULE_FIELD_TYPE_EXPORT_MEMORY; field->export_memory = (yyvsp[0].export_memory); } -#line 3652 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2866 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 158: -#line 1221 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 95: +#line 844 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.module) = (yyvsp[-1].module); WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module)); @@ -3661,11 +2875,11 @@ yyreduce: field->type = WASM_MODULE_FIELD_TYPE_TABLE; field->table = (yyvsp[0].vars); } -#line 3665 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2879 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 159: -#line 1229 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 96: +#line 852 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.module) = (yyvsp[-1].module); WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module)); @@ -3674,11 +2888,11 @@ yyreduce: field->type = WASM_MODULE_FIELD_TYPE_FUNC_TYPE; field->func_type = (yyvsp[0].func_type); } -#line 3678 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2892 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 160: -#line 1237 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 97: +#line 860 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.module) = (yyvsp[-1].module); WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module)); @@ -3687,11 +2901,11 @@ yyreduce: field->type = WASM_MODULE_FIELD_TYPE_MEMORY; field->memory = (yyvsp[0].memory); } -#line 3691 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2905 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 161: -#line 1245 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 98: +#line 868 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.module) = (yyvsp[-1].module); WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module)); @@ -3700,11 +2914,11 @@ yyreduce: field->type = WASM_MODULE_FIELD_TYPE_START; field->start = (yyvsp[0].var); } -#line 3704 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 2918 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 162: -#line 1255 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 99: +#line 878 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.module) = (yyvsp[-1].module); (yyval.module)->loc = (yylsp[-2]); @@ -3782,46 +2996,35 @@ yyreduce: } } - /* if a function only defines a func type (and no explicit signature), - * copy the signature over for convenience */ size_t i; for (i = 0; i < (yyval.module)->funcs.size; ++i) { WasmFunc* func = (yyval.module)->funcs.data[i]; - if (func->flags == WASM_FUNC_FLAG_HAS_FUNC_TYPE) { - int index = wasm_get_func_type_index_by_var((yyval.module), &func->type_var); - if (index >= 0 && (size_t)index < (yyval.module)->func_types.size) { - WasmFuncType* func_type = (yyval.module)->func_types.data[index]; - func->result_type = func_type->sig.result_type; - CHECK_ALLOC(wasm_extend_types(parser->allocator, - &func->params.types, - &func_type->sig.param_types)); - } - } + CHECK_ALLOC( + copy_signature_from_func_type(parser->allocator, (yyval.module), &func->decl)); + } - /* now that func->params is set, we can easily create params_and_locals - * as well */ - CHECK_ALLOC(wasm_extend_type_bindings( - parser->allocator, &func->params_and_locals, &func->params)); - CHECK_ALLOC(wasm_extend_type_bindings( - parser->allocator, &func->params_and_locals, &func->locals)); + for (i = 0; i < (yyval.module)->imports.size; ++i) { + WasmImport* import = (yyval.module)->imports.data[i]; + CHECK_ALLOC(copy_signature_from_func_type(parser->allocator, (yyval.module), + &import->decl)); } } -#line 3810 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 3013 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 163: -#line 1362 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 100: +#line 974 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.command) = new_command(parser->allocator); (yyval.command)->type = WASM_COMMAND_TYPE_MODULE; (yyval.command)->module = *(yyvsp[0].module); wasm_free(parser->allocator, (yyvsp[0].module)); } -#line 3821 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 3024 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 164: -#line 1368 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 101: +#line 980 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.command) = new_command(parser->allocator); (yyval.command)->type = WASM_COMMAND_TYPE_INVOKE; @@ -3829,11 +3032,11 @@ yyreduce: (yyval.command)->invoke.name = (yyvsp[-2].text); (yyval.command)->invoke.args = (yyvsp[-1].consts); } -#line 3833 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 3036 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 165: -#line 1375 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 102: +#line 987 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.command) = new_command(parser->allocator); (yyval.command)->type = WASM_COMMAND_TYPE_ASSERT_INVALID; @@ -3841,11 +3044,11 @@ yyreduce: (yyval.command)->assert_invalid.text = (yyvsp[-1].text); wasm_free(parser->allocator, (yyvsp[-2].module)); } -#line 3845 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 3048 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 166: -#line 1382 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 103: +#line 994 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.command) = new_command(parser->allocator); (yyval.command)->type = WASM_COMMAND_TYPE_ASSERT_RETURN; @@ -3854,11 +3057,11 @@ yyreduce: (yyval.command)->assert_return.invoke.args = (yyvsp[-3].consts); (yyval.command)->assert_return.expected = (yyvsp[-1].const_); } -#line 3858 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 3061 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 167: -#line 1390 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 104: +#line 1002 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.command) = new_command(parser->allocator); (yyval.command)->type = WASM_COMMAND_TYPE_ASSERT_RETURN_NAN; @@ -3866,11 +3069,11 @@ yyreduce: (yyval.command)->assert_return_nan.invoke.name = (yyvsp[-3].text); (yyval.command)->assert_return_nan.invoke.args = (yyvsp[-2].consts); } -#line 3870 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 3073 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 168: -#line 1397 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 105: +#line 1009 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.command) = new_command(parser->allocator); (yyval.command)->type = WASM_COMMAND_TYPE_ASSERT_TRAP; @@ -3879,27 +3082,27 @@ yyreduce: (yyval.command)->assert_trap.invoke.args = (yyvsp[-3].consts); (yyval.command)->assert_trap.text = (yyvsp[-1].text); } -#line 3883 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 3086 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 169: -#line 1407 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 106: +#line 1019 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { WASM_ZERO_MEMORY((yyval.commands)); } -#line 3889 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 3092 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 170: -#line 1408 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 107: +#line 1020 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.commands) = (yyvsp[-1].commands); CHECK_ALLOC(wasm_append_command_value(parser->allocator, &(yyval.commands), (yyvsp[0].command))); wasm_free(parser->allocator, (yyvsp[0].command)); } -#line 3899 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 3102 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 171: -#line 1416 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 108: +#line 1028 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.const_).loc = (yylsp[-2]); if (WASM_FAILED(parse_const((yyvsp[-2].type), (yyvsp[-1].literal).type, (yyvsp[-1].literal).text.start, @@ -3910,41 +3113,41 @@ yyreduce: } wasm_free(parser->allocator, (char*)(yyvsp[-1].literal).text.start); } -#line 3914 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 3117 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 172: -#line 1428 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 109: +#line 1040 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.const_).type = WASM_TYPE_VOID; } -#line 3920 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 3123 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 174: -#line 1432 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 111: +#line 1044 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { WASM_ZERO_MEMORY((yyval.consts)); } -#line 3926 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 3129 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 175: -#line 1433 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 112: +#line 1045 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.consts) = (yyvsp[-1].consts); CHECK_ALLOC(wasm_append_const_value(parser->allocator, &(yyval.consts), &(yyvsp[0].const_))); } -#line 3935 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 3138 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; - case 176: -#line 1440 "src/wasm-bison-parser.y" /* yacc.c:1646 */ + case 113: +#line 1052 "src/wasm-bison-parser.y" /* yacc.c:1646 */ { (yyval.script).commands = (yyvsp[0].commands); parser->script = (yyval.script); } -#line 3944 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 3147 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ break; -#line 3948 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ +#line 3151 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -4179,7 +3382,7 @@ yyreturn: #endif return yyresult; } -#line 1452 "src/wasm-bison-parser.y" /* yacc.c:1906 */ +#line 1064 "src/wasm-bison-parser.y" /* yacc.c:1906 */ void wasm_parser_error(WasmLocation* loc, @@ -4322,3 +3525,24 @@ WasmExpr* new_block_expr_with_list(WasmAllocator* allocator, block->block.exprs = *exprs; return block; } + +WasmResult copy_signature_from_func_type(WasmAllocator* allocator, + WasmModule* module, + WasmFuncDeclaration* decl) { + /* if a function or import only defines a func type (and no explicit + * signature), copy the signature over for convenience */ + if (wasm_decl_has_func_type(decl) && !wasm_decl_has_signature(decl)) { + int index = wasm_get_func_type_index_by_var(module, &decl->type_var); + if (index >= 0 && (size_t)index < module->func_types.size) { + WasmFuncType* func_type = module->func_types.data[index]; + decl->sig.result_type = func_type->sig.result_type; + return wasm_extend_types(allocator, &decl->sig.param_types, + &func_type->sig.param_types); + } else { + /* technically not OK, but we'll catch this error later in the AST + * checker */ + return WASM_OK; + } + } + return WASM_OK; +} |