diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/prebuilt/wasm-ast-parser-gen.c | 180 | ||||
-rw-r--r-- | src/wasm-ast-checker.c | 18 | ||||
-rw-r--r-- | src/wasm-ast-parser.y | 14 | ||||
-rw-r--r-- | src/wasm-ast-writer.c | 4 | ||||
-rw-r--r-- | src/wasm-ast.h | 4 | ||||
-rw-r--r-- | src/wasm-common.h | 2 |
6 files changed, 110 insertions, 112 deletions
diff --git a/src/prebuilt/wasm-ast-parser-gen.c b/src/prebuilt/wasm-ast-parser-gen.c index 4234ed62..3aa1164e 100644 --- a/src/prebuilt/wasm-ast-parser-gen.c +++ b/src/prebuilt/wasm-ast-parser-gen.c @@ -610,11 +610,11 @@ static const yytype_uint16 yyrline[] = 516, 523, 530, 536, 540, 545, 552, 553, 556, 560, 568, 569, 574, 581, 587, 595, 601, 607, 617, 620, 684, 693, 703, 711, 723, 724, 731, 735, 748, 756, - 757, 764, 777, 789, 795, 804, 808, 815, 819, 826, - 834, 841, 852, 859, 865, 868, 909, 929, 948, 957, - 966, 986, 995, 1007, 1026, 1036, 1061, 1067, 1074, 1080, - 1088, 1095, 1105, 1106, 1114, 1126, 1127, 1130, 1131, 1138, - 1147 + 757, 764, 776, 787, 793, 802, 806, 813, 817, 824, + 832, 839, 850, 857, 863, 866, 907, 927, 946, 955, + 964, 984, 993, 1005, 1024, 1034, 1059, 1065, 1072, 1078, + 1086, 1093, 1103, 1104, 1112, 1124, 1125, 1128, 1129, 1136, + 1145 }; #endif @@ -2744,80 +2744,78 @@ yyreduce: case 81: #line 764 "src/wasm-ast-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), - WASM_PARSE_UNSIGNED_ONLY))) { + if (WASM_FAILED(wasm_parse_uint64((yyvsp[0].literal).text.start, + (yyvsp[0].literal).text.start + (yyvsp[0].literal).text.length, &(yyval.u64)))) { wasm_ast_parser_error(&(yylsp[0]), lexer, parser, "invalid initial memory pages \"" PRIstringslice "\"", WASM_PRINTF_STRING_SLICE_ARG((yyvsp[0].literal).text)); } } -#line 2757 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2756 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 82: -#line 777 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 776 "src/wasm-ast-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), - WASM_PARSE_UNSIGNED_ONLY))) { + if (WASM_FAILED(wasm_parse_uint64((yyvsp[0].literal).text.start, + (yyvsp[0].literal).text.start + (yyvsp[0].literal).text.length, &(yyval.u64)))) { wasm_ast_parser_error(&(yylsp[0]), lexer, parser, "invalid max memory pages \"" PRIstringslice "\"", WASM_PRINTF_STRING_SLICE_ARG((yyvsp[0].literal).text)); } } -#line 2771 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2769 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 83: -#line 789 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 787 "src/wasm-ast-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).initial_pages = (yyvsp[-3].u64); + (yyval.memory).max_pages = (yyvsp[-2].u64); (yyval.memory).segments = (yyvsp[-1].segments); } -#line 2782 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2780 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 84: -#line 795 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 793 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.memory).loc = (yylsp[-3]); - (yyval.memory).initial_pages = (yyvsp[-2].u32); + (yyval.memory).initial_pages = (yyvsp[-2].u64); (yyval.memory).max_pages = (yyval.memory).initial_pages; (yyval.memory).segments = (yyvsp[-1].segments); } -#line 2793 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2791 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 85: -#line 804 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 802 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { WASM_ZERO_MEMORY((yyval.func_type)); (yyval.func_type).sig = (yyvsp[-2].func_sig); } -#line 2802 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2800 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 86: -#line 808 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 806 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.func_type).name = (yyvsp[-5].text); (yyval.func_type).sig = (yyvsp[-2].func_sig); } -#line 2811 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2809 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 87: -#line 815 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 813 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.vars) = (yyvsp[-1].vars); } -#line 2817 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2815 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 88: -#line 819 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 817 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.import) = new_import(parser->allocator); (yyval.import)->module_name = (yyvsp[-3].text); @@ -2825,11 +2823,11 @@ yyreduce: (yyval.import)->decl.flags = WASM_FUNC_DECLARATION_FLAG_HAS_FUNC_TYPE; (yyval.import)->decl.type_var = (yyvsp[-1].var); } -#line 2829 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2827 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 89: -#line 826 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 824 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.import) = new_import(parser->allocator); (yyval.import)->name = (yyvsp[-4].text); @@ -2838,11 +2836,11 @@ yyreduce: (yyval.import)->decl.flags = WASM_FUNC_DECLARATION_FLAG_HAS_FUNC_TYPE; (yyval.import)->decl.type_var = (yyvsp[-1].var); } -#line 2842 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2840 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 90: -#line 834 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 832 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.import) = new_import(parser->allocator); (yyval.import)->module_name = (yyvsp[-3].text); @@ -2850,11 +2848,11 @@ yyreduce: (yyval.import)->decl.flags = WASM_FUNC_DECLARATION_FLAG_HAS_SIGNATURE; (yyval.import)->decl.sig = (yyvsp[-1].func_sig); } -#line 2854 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2852 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 91: -#line 841 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 839 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.import) = new_import(parser->allocator); (yyval.import)->name = (yyvsp[-4].text); @@ -2863,36 +2861,36 @@ yyreduce: (yyval.import)->decl.flags = WASM_FUNC_DECLARATION_FLAG_HAS_SIGNATURE; (yyval.import)->decl.sig = (yyvsp[-1].func_sig); } -#line 2867 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2865 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 92: -#line 852 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 850 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.export_).name = (yyvsp[-2].text); (yyval.export_).var = (yyvsp[-1].var); } -#line 2876 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2874 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 93: -#line 859 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 857 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.export_memory).name = (yyvsp[-2].text); } -#line 2884 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2882 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 94: -#line 865 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 863 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.module) = new_module(parser->allocator); } -#line 2892 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2890 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 95: -#line 868 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 866 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.module) = (yyvsp[-1].module); WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module)); @@ -2934,11 +2932,11 @@ yyreduce: binding->index = (yyval.module)->exports.size - 1; } } -#line 2938 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2936 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 96: -#line 909 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 907 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.module) = (yyvsp[-1].module); WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module)); @@ -2959,11 +2957,11 @@ yyreduce: binding->index = (yyval.module)->imports.size - 1; } } -#line 2963 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2961 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 97: -#line 929 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 927 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.module) = (yyvsp[-1].module); WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module)); @@ -2983,11 +2981,11 @@ yyreduce: binding->index = (yyval.module)->exports.size - 1; } } -#line 2987 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2985 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 98: -#line 948 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 946 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.module) = (yyvsp[-1].module); WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module)); @@ -2997,11 +2995,11 @@ yyreduce: field->export_memory = (yyvsp[0].export_memory); (yyval.module)->export_memory = &field->export_memory; } -#line 3001 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2999 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 99: -#line 957 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 955 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.module) = (yyvsp[-1].module); WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module)); @@ -3011,11 +3009,11 @@ yyreduce: field->table = (yyvsp[0].vars); (yyval.module)->table = &field->table; } -#line 3015 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3013 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 100: -#line 966 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 964 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.module) = (yyvsp[-1].module); WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module)); @@ -3036,11 +3034,11 @@ yyreduce: binding->index = (yyval.module)->func_types.size - 1; } } -#line 3040 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3038 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 101: -#line 986 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 984 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.module) = (yyvsp[-1].module); WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module)); @@ -3050,11 +3048,11 @@ yyreduce: field->memory = (yyvsp[0].memory); (yyval.module)->memory = &field->memory; } -#line 3054 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3052 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 102: -#line 995 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 993 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.module) = (yyvsp[-1].module); WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module)); @@ -3064,11 +3062,11 @@ yyreduce: field->start = (yyvsp[0].var); (yyval.module)->start = &field->start; } -#line 3068 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3066 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 103: -#line 1007 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 1005 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.raw_module).type = WASM_RAW_MODULE_TYPE_TEXT; (yyval.raw_module).text = (yyvsp[-1].module); @@ -3088,11 +3086,11 @@ yyreduce: &import->decl)); } } -#line 3092 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3090 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 104: -#line 1026 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 1024 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.raw_module).type = WASM_RAW_MODULE_TYPE_BINARY; (yyval.raw_module).loc = (yylsp[-2]); @@ -3100,11 +3098,11 @@ yyreduce: &(yyval.raw_module).binary.size)); wasm_destroy_text_list(parser->allocator, &(yyvsp[-1].text_list)); } -#line 3104 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3102 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 105: -#line 1036 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 1034 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { if ((yyvsp[0].raw_module).type == WASM_RAW_MODULE_TYPE_TEXT) { (yyval.module) = (yyvsp[0].raw_module).text; @@ -3125,22 +3123,22 @@ yyreduce: wasm_free(parser->allocator, (yyvsp[0].raw_module).binary.data); } } -#line 3129 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3127 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 106: -#line 1061 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 1059 "src/wasm-ast-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 3140 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3138 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 107: -#line 1067 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 1065 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.command) = new_command(parser->allocator); (yyval.command)->type = WASM_COMMAND_TYPE_INVOKE; @@ -3148,22 +3146,22 @@ yyreduce: (yyval.command)->invoke.name = (yyvsp[-2].text); (yyval.command)->invoke.args = (yyvsp[-1].consts); } -#line 3152 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3150 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 108: -#line 1074 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 1072 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.command) = new_command(parser->allocator); (yyval.command)->type = WASM_COMMAND_TYPE_ASSERT_INVALID; (yyval.command)->assert_invalid.module = (yyvsp[-2].raw_module); (yyval.command)->assert_invalid.text = (yyvsp[-1].text); } -#line 3163 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3161 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 109: -#line 1080 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 1078 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.command) = new_command(parser->allocator); (yyval.command)->type = WASM_COMMAND_TYPE_ASSERT_RETURN; @@ -3172,11 +3170,11 @@ yyreduce: (yyval.command)->assert_return.invoke.args = (yyvsp[-3].consts); (yyval.command)->assert_return.expected = (yyvsp[-1].const_); } -#line 3176 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3174 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 110: -#line 1088 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 1086 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.command) = new_command(parser->allocator); (yyval.command)->type = WASM_COMMAND_TYPE_ASSERT_RETURN_NAN; @@ -3184,11 +3182,11 @@ yyreduce: (yyval.command)->assert_return_nan.invoke.name = (yyvsp[-3].text); (yyval.command)->assert_return_nan.invoke.args = (yyvsp[-2].consts); } -#line 3188 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3186 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 111: -#line 1095 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 1093 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.command) = new_command(parser->allocator); (yyval.command)->type = WASM_COMMAND_TYPE_ASSERT_TRAP; @@ -3197,27 +3195,27 @@ yyreduce: (yyval.command)->assert_trap.invoke.args = (yyvsp[-3].consts); (yyval.command)->assert_trap.text = (yyvsp[-1].text); } -#line 3201 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3199 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 112: -#line 1105 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 1103 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { WASM_ZERO_MEMORY((yyval.commands)); } -#line 3207 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3205 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 113: -#line 1106 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 1104 "src/wasm-ast-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 3217 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3215 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 114: -#line 1114 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 1112 "src/wasm-ast-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, @@ -3228,41 +3226,41 @@ yyreduce: } wasm_free(parser->allocator, (char*)(yyvsp[-1].literal).text.start); } -#line 3232 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3230 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 115: -#line 1126 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 1124 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.const_).type = WASM_TYPE_VOID; } -#line 3238 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3236 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 117: -#line 1130 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 1128 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { WASM_ZERO_MEMORY((yyval.consts)); } -#line 3244 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3242 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 118: -#line 1131 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 1129 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.consts) = (yyvsp[-1].consts); CHECK_ALLOC(wasm_append_const_value(parser->allocator, &(yyval.consts), &(yyvsp[0].const_))); } -#line 3253 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3251 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 119: -#line 1138 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 1136 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.script).commands = (yyvsp[0].commands); parser->script = (yyval.script); } -#line 3262 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3260 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; -#line 3266 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3264 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -3497,7 +3495,7 @@ yyreturn: #endif return yyresult; } -#line 1150 "src/wasm-ast-parser.y" /* yacc.c:1906 */ +#line 1148 "src/wasm-ast-parser.y" /* yacc.c:1906 */ static WasmResult parse_const(WasmType type, diff --git a/src/wasm-ast-checker.c b/src/wasm-ast-checker.c index 1a4c45ae..a5082ca5 100644 --- a/src/wasm-ast-checker.c +++ b/src/wasm-ast-checker.c @@ -18,6 +18,7 @@ #include "wasm-config.h" #include <assert.h> +#include <inttypes.h> #include <memory.h> #include <stdarg.h> #include <stdio.h> @@ -742,20 +743,20 @@ static void check_table(Context* ctx, const WasmVarVector* table) { static void check_memory(Context* ctx, const WasmMemory* memory) { if (memory->initial_pages > WASM_MAX_PAGES) { - print_error(ctx, &memory->loc, "initial pages (%u) must be less than (%u)", + print_error(ctx, &memory->loc, + "initial pages (%" PRIu64 ") must be <= (%u)", memory->initial_pages, WASM_MAX_PAGES); } if (memory->max_pages > WASM_MAX_PAGES) { - print_error(ctx, &memory->loc, "max pages (%u) must be less than (%u)", + print_error(ctx, &memory->loc, "max pages (%" PRIu64 ") must be <= (%u)", memory->max_pages, WASM_MAX_PAGES); } if (memory->max_pages < memory->initial_pages) { - print_error( - ctx, &memory->loc, - "max pages (%u) must be greater than or equal to initial pages (%u)", - memory->max_pages, memory->initial_pages); + print_error(ctx, &memory->loc, "max pages (%" PRIu64 + ") must be >= initial pages (%" PRIu64 ")", + memory->max_pages, memory->initial_pages); } size_t i; @@ -769,12 +770,13 @@ static void check_memory(Context* ctx, const WasmMemory* memory) { } if (segment->addr > memory->initial_pages * WASM_PAGE_SIZE) { print_error(ctx, &segment->loc, - "address (%u) greater than initial memory size (%u)", + "address (%u) greater than initial memory size (%" PRIu64 ")", segment->addr, memory->initial_pages * WASM_PAGE_SIZE); } else if (segment->addr + segment->size > memory->initial_pages * WASM_PAGE_SIZE) { print_error(ctx, &segment->loc, - "segment ends past the end of initial memory size (%u)", + "segment ends past the end of initial memory size (%" PRIu64 + ")", memory->initial_pages * WASM_PAGE_SIZE); } last_end = segment->addr + segment->size; diff --git a/src/wasm-ast-parser.y b/src/wasm-ast-parser.y index aba1e5f0..c8f7512b 100644 --- a/src/wasm-ast-parser.y +++ b/src/wasm-ast-parser.y @@ -163,8 +163,8 @@ static void on_read_binary_error(uint32_t offset, const char* error, %type<text> bind_var labeling quoted_text export_opt %type<text_list> text_list %type<types> value_type_list -%type<u32> align initial_pages max_pages segment_address -%type<u64> offset +%type<u32> align segment_address +%type<u64> offset initial_pages max_pages %type<vars> table var_list %type<var> start type_use var @@ -762,9 +762,8 @@ segment_list : initial_pages : INT { - if (WASM_FAILED(wasm_parse_int32($1.text.start, - $1.text.start + $1.text.length, &$$, - WASM_PARSE_UNSIGNED_ONLY))) { + if (WASM_FAILED(wasm_parse_uint64($1.text.start, + $1.text.start + $1.text.length, &$$))) { wasm_ast_parser_error(&@1, lexer, parser, "invalid initial memory pages \"" PRIstringslice "\"", @@ -775,9 +774,8 @@ initial_pages : max_pages : INT { - if (WASM_FAILED(wasm_parse_int32($1.text.start, - $1.text.start + $1.text.length, &$$, - WASM_PARSE_UNSIGNED_ONLY))) { + if (WASM_FAILED(wasm_parse_uint64($1.text.start, + $1.text.start + $1.text.length, &$$))) { wasm_ast_parser_error(&@1, lexer, parser, "invalid max memory pages \"" PRIstringslice "\"", WASM_PRINTF_STRING_SLICE_ARG($1.text)); diff --git a/src/wasm-ast-writer.c b/src/wasm-ast-writer.c index 8f06abb7..6134fa07 100644 --- a/src/wasm-ast-writer.c +++ b/src/wasm-ast-writer.c @@ -664,9 +664,9 @@ static void write_segment(Context* ctx, const WasmSegment* segment) { static void write_memory(Context* ctx, const WasmMemory* memory) { write_open_space(ctx, "memory"); - writef(ctx, "%u", memory->initial_pages); + writef(ctx, "%" PRIu64, memory->initial_pages); if (memory->initial_pages != memory->max_pages) - writef(ctx, "%u", memory->max_pages); + writef(ctx, "%" PRIu64, memory->max_pages); write_newline(ctx, NO_FORCE_NEWLINE); size_t i; for (i = 0; i < memory->segments.size; ++i) { diff --git a/src/wasm-ast.h b/src/wasm-ast.h index b732ff01..cdb7e1f4 100644 --- a/src/wasm-ast.h +++ b/src/wasm-ast.h @@ -242,8 +242,8 @@ WASM_DEFINE_VECTOR(segment, WasmSegment); typedef struct WasmMemory { WasmLocation loc; - uint32_t initial_pages; - uint32_t max_pages; + uint64_t initial_pages; + uint64_t max_pages; WasmSegmentVector segments; } WasmMemory; diff --git a/src/wasm-common.h b/src/wasm-common.h index 21d7bd88..4d5f088f 100644 --- a/src/wasm-common.h +++ b/src/wasm-common.h @@ -40,7 +40,7 @@ #define WASM_UNKNOWN_OFFSET ((uint32_t)~0) #define WASM_PAGE_SIZE 0x10000 /* 64k */ -#define WASM_MAX_PAGES 0x10000 /* # of pages that fit in 32-bit address space */ +#define WASM_MAX_PAGES 0x0ffff /* # of pages that fit in 32-bit address space */ #define PRIstringslice "%.*s" #define WASM_PRINTF_STRING_SLICE_ARG(x) (int)((x).length), (x).start |