From 40fa4802b4290291843cf397ae4e3e85e96067f4 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Mon, 27 Jul 2020 15:29:26 -0500 Subject: [PATCH] Add indirect function calls (function pointers) --- .vimspector.json | 2 +- include/onyxastnodes.h | 6 +-- include/onyxwasm.h | 1 + onyx | Bin 341920 -> 343288 bytes progs/fcf.onyx | 44 ++++++++++++++++ src/onyxchecker.c | 25 +++++---- src/onyxparser.c | 42 +++++++++++++-- src/onyxsymres.c | 62 +++++++++++----------- src/onyxtypes.c | 26 ++++++++-- src/onyxwasm.c | 115 ++++++++++++++++++++++++++++++++++++++--- 10 files changed, 261 insertions(+), 62 deletions(-) create mode 100644 progs/fcf.onyx diff --git a/.vimspector.json b/.vimspector.json index 8a5ecd89..d4b26ba9 100644 --- a/.vimspector.json +++ b/.vimspector.json @@ -6,7 +6,7 @@ "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/onyx", - "args": ["progs/ufc.onyx"], + "args": ["progs/fcf.onyx"], "stopAtEntry": true, "cwd": "${workspaceFolder}", "environment": [], diff --git a/include/onyxastnodes.h b/include/onyxastnodes.h index 1238eed7..72fb15eb 100644 --- a/include/onyxastnodes.h +++ b/include/onyxastnodes.h @@ -137,7 +137,7 @@ typedef enum AstFlags { Ast_Flag_Expr_Ignored = BH_BIT(8), Ast_Flag_Param_Splatted = BH_BIT(9), Ast_Flag_Param_Use = BH_BIT(10), - + // Type flags Ast_Flag_Type_Is_Resolved = BH_BIT(8), @@ -230,7 +230,7 @@ typedef enum OnyxIntrinsic { #define AstNode_base struct AstNode_members; struct AstNode AstNode_members; -// NOTE: 'type_node' is filled out by the parser. +// NOTE: 'type_node' is filled out by the parser. // For a type such as '^^i32', the tree would look something like // // Typed Thing -> AstPointerType -> AstPointerType -> AstNode (symbol node) @@ -255,7 +255,7 @@ struct AstUnaryOp { AstTyped_base; UnaryOp operation; AstTyped *expr; }; struct AstNumLit { AstTyped_base; union { i32 i; i64 l; f32 f; f64 d; } value; }; struct AstStrLit { AstTyped_base; u64 addr; }; struct AstLocal { AstTyped_base; AstLocal *prev_local; }; -struct AstCall { AstTyped_base; AstArgument *arguments; u64 arg_count; AstNode *callee; }; +struct AstCall { AstTyped_base; AstArgument *arguments; u64 arg_count; AstTyped *callee; }; struct AstIntrinsicCall { AstTyped_base; AstArgument *arguments; u64 arg_count; OnyxIntrinsic intrinsic; }; struct AstArgument { AstTyped_base; AstTyped *value; }; struct AstAddressOf { AstTyped_base; AstTyped *expr; }; diff --git a/include/onyxwasm.h b/include/onyxwasm.h index 4a5dfcb7..72a5493e 100644 --- a/include/onyxwasm.h +++ b/include/onyxwasm.h @@ -311,6 +311,7 @@ typedef struct OnyxWasmModule { u32 next_type_idx; u32 export_count; + u32 element_count; u32 next_func_idx; u32 next_foreign_func_idx; u32 next_global_idx; diff --git a/onyx b/onyx index cbe7e0ba7aaa9e05cc1ea80521cf270b7a02437b..c90b1111f5debb7bc5536bfa7ea449cdcdf3ff50 100755 GIT binary patch delta 130969 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�vA|nqFi8YxWIN6vNBo(Y`DO3=qeXj8!oViqpZEC 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 TnVyhEdX?#X`M92NpEK|~x68Mj delta 128545 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

$G4kWpE4nv0VhB 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 i32 + +add :: proc (a: i32, b: i32) -> i32 { return a + b; } +sub :: proc (a: i32, b: i32) -> i32 { return a - b; } +mul :: proc (a: i32, b: i32) -> i32 { return a * b; } +div :: proc (a: i32, b: i32) -> i32 { return a / b; } +mod :: proc (a: i32, b: i32) -> i32 { return a % b; } + +DeferredCall :: struct { + func : proc (i32, i32) -> i32; + left : i32; + right : i32; +} + +execute :: proc (use dc: ^DeferredCall) -> i32 { + return func(left, right); +} + +proc #export "main" { + call_me(print_i32, 10); + + funcs[0] = add; + funcs[1] = sub; + funcs[3] = div; + funcs[4] = mod; + + print(funcs[0](10, 3)); + + dc := __heap_start as ^DeferredCall; + dc.func = mod; + dc.left = 40; + dc.right = 19; + + print(execute(dc)); +} diff --git a/src/onyxchecker.c b/src/onyxchecker.c index 232e4984..5d5c7c10 100644 --- a/src/onyxchecker.c +++ b/src/onyxchecker.c @@ -165,6 +165,8 @@ CHECK(call, AstCall* call) { return 1; } + if (check_expression(&call->callee)) return 1; + // NOTE: Check arguments and splat structs AstNode** prev_param = (AstNode **) &call->arguments; AstArgument* actual_param = call->arguments; @@ -212,7 +214,7 @@ CHECK(call, AstCall* call) { } if (callee->kind == Ast_Kind_Overloaded_Function) { - call->callee = (AstNode *) match_overloaded_function(call, (AstOverloadedFunction *) callee); + call->callee = match_overloaded_function(call, (AstOverloadedFunction *) callee); callee = (AstFunction *) call->callee; if (callee == NULL) return 1; @@ -293,36 +295,34 @@ CHECK(call, AstCall* call) { call->type = callee->type->Function.return_type; - AstLocal* formal_param = callee->params; + Type** formal_param = &callee->type->Function.params[0]; actual_param = call->arguments; i32 arg_pos = 0; while (formal_param != NULL && actual_param != NULL) { - fill_in_type((AstTyped *) formal_param); - - if (!types_are_compatible(formal_param->type, actual_param->type)) { + if (!types_are_compatible(*formal_param, actual_param->type)) { onyx_message_add(Msg_Type_Function_Param_Mismatch, actual_param->token->pos, callee->token->text, callee->token->length, - type_get_name(formal_param->type), + type_get_name(*formal_param), arg_pos, type_get_name(actual_param->type)); return 1; } arg_pos++; - formal_param = (AstLocal *) formal_param->next; + formal_param++; actual_param = (AstArgument *) actual_param->next; } - if (formal_param != NULL && actual_param == NULL) { + if (arg_pos < callee->type->Function.param_count) { onyx_message_add(Msg_Type_Literal, call->token->pos, "too few arguments to function call"); return 1; } - if (formal_param == NULL && actual_param != NULL) { + if (arg_pos > callee->type->Function.param_count) { onyx_message_add(Msg_Type_Literal, call->token->pos, "too many arguments to function call"); @@ -652,8 +652,11 @@ CHECK(expression, AstTyped** pexpr) { assert(expr->type != NULL); break; + case Ast_Kind_Function: + expr->flags |= Ast_Flag_Function_Used; + break; + case Ast_Kind_StrLit: break; - case Ast_Kind_Function: break; case Ast_Kind_Overloaded_Function: break; case Ast_Kind_Enum_Value: break; @@ -919,7 +922,7 @@ void onyx_type_check() { case Entity_Type_Function_Header: if (entity->function->flags & Ast_Flag_Foreign) semstate.program->foreign_func_count++; - + if (check_function_header(entity->function)) return; break; diff --git a/src/onyxparser.c b/src/onyxparser.c index 79958c57..7555e237 100644 --- a/src/onyxparser.c +++ b/src/onyxparser.c @@ -302,7 +302,7 @@ static AstTyped* parse_factor(OnyxParser* parser) { case '(': { AstCall* call_node = make_node(AstCall, Ast_Kind_Call); call_node->token = expect_token(parser, '('); - call_node->callee = (AstNode *) retval; + call_node->callee = retval; call_node->arg_count = 0; AstArgument** prev = &call_node->arguments; @@ -807,6 +807,42 @@ static AstType* parse_type(OnyxParser* parser) { next_insertion = &new->elem; } + else if (parser->curr->type == Token_Type_Keyword_Proc) { + OnyxToken* proc_token = expect_token(parser, Token_Type_Keyword_Proc); + + bh_arr(AstType *) params = NULL; + bh_arr_new(global_scratch_allocator, params, 4); + + expect_token(parser, '('); + while (parser->curr->type != ')') { + AstType* param_type = parse_type(parser); + bh_arr_push(params, param_type); + + if (parser->curr->type != ')') + expect_token(parser, ','); + } + consume_token(parser); + + AstType* return_type = (AstType *) &basic_type_void; + if (parser->curr->type == Token_Type_Right_Arrow) { + consume_token(parser); + return_type = parse_type(parser); + } + + u64 param_count = bh_arr_length(params); + AstFunctionType* new = onyx_ast_node_new(parser->allocator, + sizeof(AstFunctionType) + sizeof(AstType) * param_count, + Ast_Kind_Function_Type); + new->token = proc_token; + new->param_count = param_count; + new->return_type = return_type; + + fori (i, 0, param_count - 1) new->params[i] = params[i]; + + *next_insertion = (AstType *) new; + next_insertion = NULL; + } + else if (parser->curr->type == Token_Type_Symbol) { AstNode* symbol_node = make_node(AstNode, Ast_Kind_Symbol); symbol_node->token = expect_token(parser, Token_Type_Symbol); @@ -1124,7 +1160,7 @@ static AstEnumType* parse_enum_declaration(OnyxParser* parser) { if (parser->curr->type == ':') { consume_token(parser); expect_token(parser, ':'); - + evalue->value = parse_numeric_literal(parser); } @@ -1213,7 +1249,7 @@ static AstNode* parse_top_level_statement(OnyxParser* parser) { add_node_to_process(parser, (AstNode *) upack); return NULL; - + } else { AstIncludeFile* include = make_node(AstIncludeFile, Ast_Kind_Include_File); include->token = use_token; diff --git a/src/onyxsymres.c b/src/onyxsymres.c index f3fe21bf..1d286f98 100644 --- a/src/onyxsymres.c +++ b/src/onyxsymres.c @@ -85,7 +85,7 @@ static AstType* symres_type(AstType* type) { if (type->kind == Ast_Kind_Field_Access) { AstFieldAccess* field = (AstFieldAccess *) type; symres_field_access(&field); - + if (!node_is_type((AstNode *) field)) { onyx_message_add(Msg_Type_Literal, type->token->pos, @@ -154,19 +154,23 @@ static void symres_call(AstCall* call) { symres_expression((AstTyped **) &call->callee); if (call->callee == NULL) return; - if (call->callee->kind == Ast_Kind_Field_Access) { - AstFieldAccess* fa = (AstFieldAccess *) call->callee; - if (fa->expr == NULL) return; + // NOTE: Disabling UFC now. Causes too many problems. + // Especially since structs can have function pointers as members, + // so x.y(...) is ambiguous. + // + // if (call->callee->kind == Ast_Kind_Field_Access) { + // AstFieldAccess* fa = (AstFieldAccess *) call->callee; + // if (fa->expr == NULL) return; - AstArgument* implicit_arg = onyx_ast_node_new(semstate.node_allocator, sizeof(AstArgument), Ast_Kind_Argument); - implicit_arg->value = fa->expr; - implicit_arg->token = fa->expr->token; - implicit_arg->next = (AstNode *) call->arguments; + // AstArgument* implicit_arg = onyx_ast_node_new(semstate.node_allocator, sizeof(AstArgument), Ast_Kind_Argument); + // implicit_arg->value = fa->expr; + // implicit_arg->token = fa->expr->token; + // implicit_arg->next = (AstNode *) call->arguments; - call->callee = symbol_resolve(semstate.curr_scope, fa->token); - call->arguments = implicit_arg; - call->arg_count++; - } + // call->callee = (AstTyped *) symbol_resolve(semstate.curr_scope, fa->token); + // call->arguments = implicit_arg; + // call->arg_count++; + // } symres_statement_chain((AstNode *) call->arguments, (AstNode **) &call->arguments); } @@ -217,39 +221,35 @@ static void symres_unaryop(AstUnaryOp** unaryop) { static void symres_expression(AstTyped** expr) { switch ((*expr)->kind) { - case Ast_Kind_Binary_Op: - symres_expression(&((AstBinaryOp *)(*expr))->left); - symres_expression(&((AstBinaryOp *)(*expr))->right); - break; - - case Ast_Kind_Unary_Op: symres_unaryop((AstUnaryOp **) expr); break; - case Ast_Kind_Call: symres_call((AstCall *) *expr); break; - case Ast_Kind_Block: symres_block((AstBlock *) *expr); break; - case Ast_Kind_Symbol: *expr = (AstTyped *) symbol_resolve(semstate.curr_scope, ((AstNode *) *expr)->token); break; - - case Ast_Kind_Function: - case Ast_Kind_NumLit: - case Ast_Kind_StrLit: - (*expr)->type_node = symres_type((*expr)->type_node); + case Ast_Kind_Binary_Op: + symres_expression(&((AstBinaryOp *)(*expr))->left); + symres_expression(&((AstBinaryOp *)(*expr))->right); break; + case Ast_Kind_Unary_Op: symres_unaryop((AstUnaryOp **) expr); break; + case Ast_Kind_Call: symres_call((AstCall *) *expr); break; + case Ast_Kind_Block: symres_block((AstBlock *) *expr); break; case Ast_Kind_Address_Of: symres_expression(&((AstAddressOf *)(*expr))->expr); break; case Ast_Kind_Dereference: symres_expression(&((AstDereference *)(*expr))->expr); break; case Ast_Kind_Field_Access: symres_field_access((AstFieldAccess **) expr); break; case Ast_Kind_Size_Of: symres_size_of((AstSizeOf *)*expr); break; case Ast_Kind_Align_Of: symres_align_of((AstAlignOf *)*expr); break; + case Ast_Kind_Function: + case Ast_Kind_NumLit: + case Ast_Kind_StrLit: + (*expr)->type_node = symres_type((*expr)->type_node); + break; + case Ast_Kind_Array_Access: symres_expression(&((AstArrayAccess *)(*expr))->addr); symres_expression(&((AstArrayAccess *)(*expr))->expr); break; - // NOTE: This is a good case, since it means the symbol is already resolved - case Ast_Kind_Local: default: break; } } @@ -347,12 +347,12 @@ static void symres_function(AstFunction* func) { for (AstLocal *param = func->params; param != NULL; param = (AstLocal *) param->next) { param->type_node = symres_type(param->type_node); + param->type = type_build_from_ast(semstate.allocator, param->type_node); symbol_introduce(semstate.curr_scope, param->token, (AstNode *) param); if (param->flags & Ast_Flag_Param_Use) { - if (param->type_node->kind != Ast_Kind_Pointer_Type - || ((AstPointerType *) param->type_node)->elem->kind != Ast_Kind_Struct_Type) { + if (param->type->kind != Type_Kind_Pointer || param->type->Pointer.elem->kind != Type_Kind_Struct) { onyx_message_add(Msg_Type_Literal, param->token->pos, "can only 'use' pointers to structures."); @@ -474,7 +474,7 @@ static void symres_enum(AstEnumType* enum_node) { if (enum_node->flags & Ast_Flag_Enum_Is_Flags) { next_assign_value <<= 1; - } else { + } else { next_assign_value++; } } diff --git a/src/onyxtypes.c b/src/onyxtypes.c index 85664e2c..71cab661 100644 --- a/src/onyxtypes.c +++ b/src/onyxtypes.c @@ -1,3 +1,4 @@ +#define BH_DEBUG #include "onyxtypes.h" #include "onyxastnodes.h" #include "onyxutils.h" @@ -144,8 +145,20 @@ b32 types_are_compatible(Type* t1, Type* t2) { } case Type_Kind_Enum: { - if (t2->kind != Type_Kind_Enum) return 0; - return t1 == t2; + return 0; + // if (t2->kind != Type_Kind_Enum) return 0; + // return t1 == t2; + } + + case Type_Kind_Function: { + if (t2->kind != Type_Kind_Function) return 0; + if (t1->Function.param_count != t2->Function.param_count) return 0; + + fori (i, 0, t1->Function.param_count - 1) { + if (!types_are_compatible(t1->Function.params[i], t2->Function.params[i])) return 0; + } + + return 1; } default: @@ -162,7 +175,7 @@ u32 type_size_of(Type* type) { switch (type->kind) { case Type_Kind_Basic: return type->Basic.size; case Type_Kind_Pointer: return 4; - case Type_Kind_Function: return 0; + case Type_Kind_Function: return 4; case Type_Kind_Array: return type->Array.size; case Type_Kind_Struct: return type->Struct.size; case Type_Kind_Enum: return type_size_of(type->Enum.backing); @@ -176,7 +189,7 @@ u32 type_alignment_of(Type* type) { switch (type->kind) { case Type_Kind_Basic: return type->Basic.alignment; case Type_Kind_Pointer: return 4; - case Type_Kind_Function: return 1; + case Type_Kind_Function: return 4; case Type_Kind_Array: return type_alignment_of(type->Array.elem); case Type_Kind_Struct: return type->Struct.aligment; case Type_Kind_Enum: return type_alignment_of(type->Enum.backing); @@ -280,7 +293,7 @@ Type* type_build_from_ast(bh_allocator alloc, AstType* type_node) { } s_type->Struct.aligment = alignment; - + if (offset % alignment != 0) { offset += alignment - (offset % alignment); } @@ -371,6 +384,9 @@ const char* type_get_name(Type* type) { return type->Enum.name; else return ""; + + case Type_Kind_Function: return bh_aprintf(global_scratch_allocator, "proc (...) -> %s", type_get_name(type->Function.return_type)); + default: return "unknown"; } } diff --git a/src/onyxwasm.c b/src/onyxwasm.c index 409fb1d0..966b9ca8 100644 --- a/src/onyxwasm.c +++ b/src/onyxwasm.c @@ -217,6 +217,10 @@ static WasmType onyx_type_to_wasm_type(Type* type) { return WASM_TYPE_INT32; } + if (type->kind == Type_Kind_Function) { + return WASM_TYPE_INT32; + } + if (type->kind == Type_Kind_Basic) { TypeBasic* basic = &type->Basic; if (basic->flags & Basic_Flag_Boolean) return WASM_TYPE_INT32; @@ -235,6 +239,8 @@ static WasmType onyx_type_to_wasm_type(Type* type) { return WASM_TYPE_VOID; } +static i32 generate_type_idx(OnyxWasmModule* mod, Type* ft); + #define WI(instr) bh_arr_push(code, ((WasmInstruction){ instr, 0x00 })) #define WID(instr, data) bh_arr_push(code, ((WasmInstruction){ instr, data })) #define COMPILE_FUNC(kind, ...) static void compile_ ## kind (OnyxWasmModule* mod, bh_arr(WasmInstruction)* pcode, __VA_ARGS__) @@ -398,6 +404,10 @@ COMPILE_FUNC(store_instruction, Type* type, u32 alignment, u32 offset) { type = type->Enum.backing; } + if (type->kind == Type_Kind_Function) { + type = &basic_types[Basic_Kind_U32]; + } + i32 store_size = type_size_of(type); i32 is_basic = type->kind == Type_Kind_Basic || type->kind == Type_Kind_Pointer; i32 is_pointer = is_basic && (type->Basic.flags & Basic_Flag_Pointer); @@ -430,6 +440,10 @@ COMPILE_FUNC(load_instruction, Type* type, u32 offset) { type = type->Enum.backing; } + if (type->kind == Type_Kind_Function) { + type = &basic_types[Basic_Kind_U32]; + } + i32 load_size = type_size_of(type); i32 is_basic = type->kind == Type_Kind_Basic || type->kind == Type_Kind_Pointer; i32 is_pointer = is_basic && (type->Basic.flags & Basic_Flag_Pointer); @@ -718,8 +732,15 @@ COMPILE_FUNC(call, AstCall* call) { compile_expression(mod, &code, arg->value); } - i32 func_idx = (i32) bh_imap_get(&mod->index_map, (u64) call->callee); - bh_arr_push(code, ((WasmInstruction){ WI_CALL, func_idx })); + if (call->callee->kind == Ast_Kind_Function) { + i32 func_idx = (i32) bh_imap_get(&mod->index_map, (u64) call->callee); + bh_arr_push(code, ((WasmInstruction){ WI_CALL, func_idx })); + } else { + compile_expression(mod, &code, call->callee); + + i32 type_idx = generate_type_idx(mod, call->callee->type); + WID(WI_CALL_INDIRECT, ((WasmInstructionData) { type_idx, 0x00 })); + } *pcode = code; } @@ -893,6 +914,12 @@ COMPILE_FUNC(expression, AstTyped* expr) { break; } + case Ast_Kind_Function: { + i32 funcidx = bh_imap_get(&mod->index_map, (u64) expr); + WID(WI_I32_CONST, funcidx); + break; + } + case Ast_Kind_Block: compile_block(mod, &code, (AstBlock *) expr); break; case Ast_Kind_Call: compile_call(mod, &code, (AstCall *) expr); break; case Ast_Kind_Intrinsic_Call: compile_intrinsic_call(mod, &code, (AstIntrinsicCall *) expr); break; @@ -1113,12 +1140,14 @@ COMPILE_FUNC(return, AstReturn* ret) { *pcode = code; } -static i32 generate_type_idx(OnyxWasmModule* mod, AstFunction* fd) { +static i32 generate_type_idx(OnyxWasmModule* mod, Type* ft) { + if (ft->kind != Type_Kind_Function) return -1; + static char type_repr_buf[128]; char* t = type_repr_buf; - Type** param_type = fd->type->Function.params; - i32 param_count = fd->type->Function.param_count; + Type** param_type = ft->Function.params; + i32 param_count = ft->Function.param_count; i32 params_left = param_count; while (params_left-- > 0) { // HACK: Using these directly as part of a string feels weird but they are @@ -1128,7 +1157,7 @@ static i32 generate_type_idx(OnyxWasmModule* mod, AstFunction* fd) { } *(t++) = ':'; - WasmType return_type = onyx_type_to_wasm_type(fd->type->Function.return_type); + WasmType return_type = onyx_type_to_wasm_type(ft->Function.return_type); *(t++) = (char) return_type; *t = '\0'; @@ -1177,7 +1206,7 @@ static inline b32 should_compile_function(AstFunction* fd) { static void compile_function(OnyxWasmModule* mod, AstFunction* fd) { if (!should_compile_function(fd)) return; - i32 type_idx = generate_type_idx(mod, fd); + i32 type_idx = generate_type_idx(mod, fd->type); if (fd->flags & Ast_Flag_Foreign) { WasmImport import = { @@ -1394,6 +1423,8 @@ OnyxWasmModule onyx_wasm_module_create(bh_allocator alloc) { .data = NULL, .next_datum_offset = 0, + .element_count = 0, + .structured_jump_target = NULL, }; @@ -1431,6 +1462,7 @@ void onyx_wasm_module_compile(OnyxWasmModule* module, ProgramInfo* program) { switch (entity->type) { case Entity_Type_Function_Header: { if (!should_compile_function(entity->function)) break; + module->element_count++; u64 func_idx; if ((entity->function->flags & Ast_Flag_Foreign) != 0) @@ -1467,7 +1499,7 @@ void onyx_wasm_module_compile(OnyxWasmModule* module, ProgramInfo* program) { case Entity_Type_Memory_Reservation: { compile_memory_reservation(module, (AstMemRes *) entity->mem_res); - + // HACK: To put this here // NOTE: Round up to the nearest multiple of 16 builtin_heap_start.value.i = @@ -1629,6 +1661,30 @@ static i32 output_funcsection(OnyxWasmModule* module, bh_buffer* buff) { return buff->length - prev_len; } +static i32 output_tablesection(OnyxWasmModule* module, bh_buffer* buff) { + i32 prev_len = buff->length; + bh_buffer_write_byte(buff, WASM_SECTION_ID_TABLE); + + bh_buffer vec_buff; + bh_buffer_init(&vec_buff, buff->allocator, 128); + + i32 leb_len; + u8* leb = uint_to_uleb128((u64) 1, &leb_len); + bh_buffer_append(&vec_buff, leb, leb_len); + + // NOTE: funcrefs are the only valid table element type + bh_buffer_write_byte(&vec_buff, 0x70); + output_limits(module->element_count, -1, &vec_buff); + + leb = uint_to_uleb128((u64) (vec_buff.length), &leb_len); + bh_buffer_append(buff, leb, leb_len); + + bh_buffer_concat(buff, vec_buff); + bh_buffer_free(&vec_buff); + + return buff->length - prev_len; +} + static i32 output_memorysection(OnyxWasmModule* module, bh_buffer* buff) { i32 prev_len = buff->length; bh_buffer_write_byte(buff, WASM_SECTION_ID_MEMORY); @@ -1774,6 +1830,46 @@ static i32 output_startsection(OnyxWasmModule* module, bh_buffer* buff) { return buff->length - prev_len; } +static i32 output_elemsection(OnyxWasmModule* module, bh_buffer* buff) { + i32 prev_len = buff->length; + + bh_buffer_write_byte(buff, WASM_SECTION_ID_ELEMENT); + + bh_buffer vec_buff; + bh_buffer_init(&vec_buff, buff->allocator, 128); + + u32 func_count = bh_arr_length(module->funcs) + module->next_foreign_func_idx; + + i32 leb_len; + u8* leb; + + // NOTE: 0x01 count of elems + bh_buffer_write_byte(&vec_buff, 0x01); + + // NOTE: 0x00 table index + bh_buffer_write_byte(&vec_buff, 0x00); + + bh_buffer_write_byte(&vec_buff, WI_I32_CONST); + bh_buffer_write_byte(&vec_buff, 0x00); + bh_buffer_write_byte(&vec_buff, WI_BLOCK_END); + + leb = uint_to_uleb128((u64) func_count, &leb_len); + bh_buffer_append(&vec_buff, leb, leb_len); + + fori (funcidx, 0, func_count - 1) { + leb = uint_to_uleb128((u64) funcidx, &leb_len); + bh_buffer_append(&vec_buff, leb, leb_len); + } + + leb = uint_to_uleb128((u64) (vec_buff.length), &leb_len); + bh_buffer_append(buff, leb, leb_len); + + bh_buffer_concat(buff, vec_buff); + bh_buffer_free(&vec_buff); + + return buff->length - prev_len; +} + static i32 output_locals(WasmFunc* func, bh_buffer* buff) { i32 prev_len = buff->length; @@ -1836,6 +1932,7 @@ static void output_instruction(WasmInstruction* instr, bh_buffer* buff) { bh_buffer_append(buff, leb, leb_len); break; + case WI_CALL_INDIRECT: case WI_I32_STORE: case WI_I32_STORE_8: case WI_I32_STORE_16: @@ -1978,10 +2075,12 @@ void onyx_wasm_module_write_to_file(OnyxWasmModule* module, bh_file file) { output_typesection(module, &master_buffer); output_importsection(module, &master_buffer); output_funcsection(module, &master_buffer); + output_tablesection(module, &master_buffer); output_memorysection(module, &master_buffer); output_globalsection(module, &master_buffer); output_exportsection(module, &master_buffer); output_startsection(module, &master_buffer); + output_elemsection(module, &master_buffer); output_codesection(module, &master_buffer); output_datasection(module, &master_buffer); -- 2.25.1