From 3f2c108105a7276a7d40e0b315290225cddabae8 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Fri, 6 Aug 2021 09:33:23 -0500 Subject: [PATCH] struct member defaults are now available at runtime --- bin/onyx | Bin 409456 -> 413592 bytes core/builtin.onyx | 2 +- core/container/array.onyx | 14 ++++++++ core/type_info/helper.onyx | 15 ++++++++- core/type_info/type_info.onyx | 6 +++- src/onyxtypes.c | 59 ++++++++++++++++++++++++++++++---- src/onyxutils.c | 1 + src/onyxwasm.c | 42 ++++++++++++++++-------- src/onyxwasm_type_table.c | 57 ++++++++++++++++++++++++++++++-- 9 files changed, 170 insertions(+), 26 deletions(-) diff --git a/bin/onyx b/bin/onyx index 569f3fa03ceb384e9583567668ba5de7d7d92e46..1799b4fdaab30c473fee7e85559e4705a974bffc 100755 GIT binary patch delta 110289 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%0A4J;53QSDx>s&IGEGpQDz+ zS}d1~*qTtUrP{essoe^+og!7L161d8tIKZFz7i9l)_;;}vFJ)v4Y5j^$24WTg!PkC z9EIAO1hs62{O43IPcgF;@@~6omyx|UsC)j1==L=a@!KVKFm<| z&9vf!%5n}JJx@o05volqVJjrV8nLJrs<%t3&F#)dVm}D)8QKSVW|^tXwaetQx+p)h zSs?in3bMjZHvRzGS0i75c9461F9)dxUunxz^qX4FQj&txk1 zyDHmYbuB)aeJPF5xzf`zP%rc-d}+VT1W1?Ohv`pP%Ti zqF5wzt9^%R4$Y>TBb~j`SnQX%b)wqMr=L1ZolZWVW4Z$Q;pBZRJa&0z7%vhN;O+^k z{eM;Tr&KQlFAI+s-%X|mc^~aPhZWI|{B|)zy7M!chc^Z{)hEfj!xp^rmb*`sAy#}d z{3Oo7U3?T|IW$T(D*8#PYl_%9P&cO9!$UKx@uMf^6pR+BiS`=e z&P02z*p`Tgrn|(9M0?GMwkC)#6YYa{_iSiC6DjU)YX2zgABe%SRz%y~p{Dk}5xd7E z+4Tr96N$w`ci8jfRSjFROZus`+tJKkq5kf;9`>Bbh&1t7Py3w}xgFlKOziAwzc-eT zG}fa{)=cqxPkXCM)<>pU4MlP<`#rH2TB$CzutZGjWp`EFrC7&0v9p)`UQ5Jp<6gN% zbgmQ0y`kkHX>hBUD8+YF+Q4?PQ;ODSvBlzw6!{S7+#!-P?e{u(uSyB1L_RSs)1DF~ zrNxW7;1^%_>CqyPX-}*{gZ%cYx9|+A{UG!{_U07>mF*_?hG^Tze(!Bh%Qp)U8p# ^T { return null; } +first :: #match { + (arr: ^[..] $T, predicate: (T) -> bool) -> ^T { + first((#type [] T).{ arr.data, arr.count }, predicate); + }, + + (arr: [] $T, predicate: (T) -> bool) -> ^T { + for ^it: arr { + if predicate(*it) do return it; + } + + return null; + }, +} + count_where :: #match { (arr: ^[..] $T, predicate: (T) -> bool) -> u32 { count: u32 = 0; diff --git a/core/type_info/helper.onyx b/core/type_info/helper.onyx index 7801d82d..f0bc2ad9 100644 --- a/core/type_info/helper.onyx +++ b/core/type_info/helper.onyx @@ -127,4 +127,17 @@ offset_of :: (T: type_expr, member: str) -> u32 { // Should this return something else if the member was not found? return 0; -} \ No newline at end of file +} + +#operator == (t1: Type_Info_Function, t2: Type_Info_Function) -> bool { + if t1.parameter_types.count != t2.parameter_types.count do return false; + if t1.return_type != t2.return_type do return false; + if t1.is_variadic != t2.is_variadic do return false; + + while i := 0; i < t1.parameter_types.count { + @Robustness // This does not handle nested procedure types + if t1.parameter_types[i] != t2.parameter_types[i] do return false; + } + + return true; +} diff --git a/core/type_info/type_info.onyx b/core/type_info/type_info.onyx index b51afe89..d49dce44 100644 --- a/core/type_info/type_info.onyx +++ b/core/type_info/type_info.onyx @@ -136,7 +136,11 @@ Type_Info_Struct :: struct { type: type_expr; used: bool; - has_default: bool; + default: rawptr; // Pointer to the initial value of the same type as the member. + // null if no default value is given, or if it is not compile time known. + + // As another thought. This could become a thunk that get the default value + // at runtime or returns the value. } name: str; diff --git a/src/onyxtypes.c b/src/onyxtypes.c index 70098f3f..125461ab 100644 --- a/src/onyxtypes.c +++ b/src/onyxtypes.c @@ -43,6 +43,7 @@ static bh_imap type_pointer_map; static bh_imap type_slice_map; static bh_imap type_dynarr_map; static bh_imap type_vararg_map; +static bh_table(u64) type_func_map; static Type* type_create(TypeKind kind, bh_allocator a, u32 extra_type_pointer_count) { Type* type = bh_alloc(a, sizeof(Type) + sizeof(Type *) * extra_type_pointer_count); @@ -65,6 +66,7 @@ void types_init() { bh_imap_init(&type_slice_map, global_heap_allocator, 255); bh_imap_init(&type_dynarr_map, global_heap_allocator, 255); bh_imap_init(&type_vararg_map, global_heap_allocator, 255); + bh_table_init(global_heap_allocator, type_func_map, 64); fori (i, 0, Basic_Kind_Count) type_register(&basic_types[i]); } @@ -262,7 +264,18 @@ Type* type_build_from_ast(bh_allocator alloc, AstType* type_node) { if (func_type->Function.params[i] == NULL) return NULL; } + char* name = (char *) type_get_unique_name(func_type); + if (bh_table_has(u64, type_func_map, name)) { + u64 id = bh_table_get(u64, type_func_map, name); + Type* existing_type = (Type *) bh_imap_get(&type_map, id); + + // LEAK LEAK LEAK the func_type that is created + return existing_type; + } + type_register(func_type); + bh_table_put(u64, type_func_map, name, func_type->id); + return func_type; } @@ -594,7 +607,19 @@ Type* type_build_function_type(bh_allocator alloc, AstFunction* func) { } } + // CopyPaste from above in type_build_from_ast + char* name = (char *) type_get_unique_name(func_type); + if (bh_table_has(u64, type_func_map, name)) { + u64 id = bh_table_get(u64, type_func_map, name); + Type* existing_type = (Type *) bh_imap_get(&type_map, id); + + // LEAK LEAK LEAK the func_type that is created + return existing_type; + } + type_register(func_type); + bh_table_put(u64, type_func_map, name, func_type->id); + return func_type; } @@ -770,22 +795,42 @@ const char* type_get_unique_name(Type* type) { case Type_Kind_DynArray: return bh_aprintf(global_scratch_allocator, "[..] %s", type_get_unique_name(type->DynArray.ptr_to_data->Pointer.elem)); case Type_Kind_Function: { - char buf[512]; - fori (i, 0, 512) buf[i] = 0; + char buf[1024]; + memset(buf, 0, 1024); - strncat(buf, "(", 511); + strncat(buf, "(", 1023); fori (i, 0, type->Function.param_count) { - strncat(buf, type_get_unique_name(type->Function.params[i]), 511); + strncat(buf, type_get_unique_name(type->Function.params[i]), 1023); + + if (i >= type->Function.needed_param_count) + strncat(buf, "?", 1023); + if (i != type->Function.param_count - 1) - strncat(buf, ", ", 511); + strncat(buf, ", ", 1023); } - strncat(buf, ") -> ", 511); - strncat(buf, type_get_unique_name(type->Function.return_type), 511); + strncat(buf, ") -> ", 1023); + strncat(buf, type_get_unique_name(type->Function.return_type), 1023); + + return bh_aprintf(global_scratch_allocator, "%s", buf); + } + + case Type_Kind_Compound: { + char buf[1024]; + memset(buf, 0, 1024); + + strncat(buf, "(", 1023); + fori (i, 0, type->Compound.count) { + strncat(buf, type_get_unique_name(type->Compound.types[i]), 1023); + if (i != type->Compound.count - 1) + strncat(buf, ", ", 1023); + } + strncat(buf, ")", 1023); return bh_aprintf(global_scratch_allocator, "%s", buf); } + default: return "unknown"; } } diff --git a/src/onyxutils.c b/src/onyxutils.c index 2fddfdb5..be16d9f6 100644 --- a/src/onyxutils.c +++ b/src/onyxutils.c @@ -1085,6 +1085,7 @@ AstTyped* find_matching_overload_by_arguments(bh_arr(OverloadOption) overloads, if (overload == NULL) continue; if (overload->kind != Ast_Kind_Function) continue; if (overload->type == NULL) continue; + assert(overload->type->kind == Type_Kind_Function); // NOTE: If the arguments cannot be placed successfully in the parameters list if (!fill_in_arguments(&args, (AstNode *) overload, NULL)) continue; diff --git a/src/onyxwasm.c b/src/onyxwasm.c index 9a6af364..e2e63bc9 100644 --- a/src/onyxwasm.c +++ b/src/onyxwasm.c @@ -266,6 +266,7 @@ EMIT_FUNC(enter_structured_block, StructuredBlockType sbt); EMIT_FUNC_NO_ARGS(leave_structured_block); static void emit_raw_data(OnyxWasmModule* mod, ptr data, AstTyped* node); +static b32 emit_raw_data_(OnyxWasmModule* mod, ptr data, AstTyped* node); #include "onyxwasm_intrinsics.c" #include "onyxwasm_type_table.c" @@ -3181,6 +3182,16 @@ static void emit_string_literal(OnyxWasmModule* mod, AstStrLit* strlit) { } static void emit_raw_data(OnyxWasmModule* mod, ptr data, AstTyped* node) { + if (!emit_raw_data_(mod, data, node)) { + onyx_report_error(node->token->pos, + "Cannot generate constant data for '%s'.", + onyx_ast_node_kind_string(node->kind)); + } +} + +static b32 emit_raw_data_(OnyxWasmModule* mod, ptr data, AstTyped* node) { + b32 retval = 1; + switch (node->kind) { case Ast_Kind_Array_Literal: { AstArrayLiteral* al = (AstArrayLiteral *) node; @@ -3189,7 +3200,7 @@ static void emit_raw_data(OnyxWasmModule* mod, ptr data, AstTyped* node) { i32 elem_size = type_size_of(al->type->Array.elem); bh_arr_each(AstTyped *, expr, al->values) { - emit_raw_data(mod, bh_pointer_add(data, i * elem_size), *expr); + retval &= emit_raw_data_(mod, bh_pointer_add(data, i * elem_size), *expr); i++; } @@ -3200,11 +3211,15 @@ static void emit_raw_data(OnyxWasmModule* mod, ptr data, AstTyped* node) { AstStructLiteral* sl = (AstStructLiteral *) node; Type* sl_type = sl->type; - assert(sl_type->kind == Type_Kind_Struct); + // ROBUSTNESS: Handle cases for slices and dynamic arrays + if (sl_type->kind != Type_Kind_Struct) { + retval = 0; + break; + } i32 i = 0; bh_arr_each(AstTyped *, expr, sl->args.values) { - emit_raw_data(mod, bh_pointer_add(data, sl_type->Struct.memarr[i]->offset), *expr); + retval &= emit_raw_data_(mod, bh_pointer_add(data, sl_type->Struct.memarr[i]->offset), *expr); i++; } @@ -3225,7 +3240,7 @@ static void emit_raw_data(OnyxWasmModule* mod, ptr data, AstTyped* node) { case Ast_Kind_Enum_Value: { AstEnumValue* ev = (AstEnumValue *) node; - emit_raw_data(mod, data, (AstTyped *) ev->value); + retval &= emit_raw_data_(mod, data, (AstTyped *) ev->value); break; } @@ -3252,41 +3267,42 @@ static void emit_raw_data(OnyxWasmModule* mod, ptr data, AstTyped* node) { case Basic_Kind_I8: case Basic_Kind_U8: *((i8 *) data) = (i8) ((AstNumLit *) node)->value.i; - return; + return retval; case Basic_Kind_I16: case Basic_Kind_U16: *((i16 *) data) = (i16) ((AstNumLit *) node)->value.i; - return; + return retval; case Basic_Kind_I32: case Basic_Kind_U32: *((i32 *) data) = ((AstNumLit *) node)->value.i; - return; + return retval; case Basic_Kind_I64: case Basic_Kind_U64: case Basic_Kind_Rawptr: *((i64 *) data) = ((AstNumLit *) node)->value.l; - return; + return retval; case Basic_Kind_F32: *((f32 *) data) = ((AstNumLit *) node)->value.f; - return; + return retval; case Basic_Kind_F64: *((f64 *) data) = ((AstNumLit *) node)->value.d; - return; + return retval; default: break; } //fallthrough } - default: onyx_report_error(node->token->pos, - "Cannot generate constant data for '%s'.", - onyx_ast_node_kind_string(node->kind)); + + default: retval = 0; } + + return retval; } static void emit_memory_reservation(OnyxWasmModule* mod, AstMemRes* memres) { diff --git a/src/onyxwasm_type_table.c b/src/onyxwasm_type_table.c index c8bf7238..4daf9d1c 100644 --- a/src/onyxwasm_type_table.c +++ b/src/onyxwasm_type_table.c @@ -12,10 +12,14 @@ u64 build_type_table(OnyxWasmModule* module) { // This is the data behind the "type_table" slice in type_info.onyx u32 type_count = bh_arr_length(type_map.entries) + 1; u64* table_info = bh_alloc_array(global_heap_allocator, u64, type_count); // HACK + memset(table_info, 0, type_count * sizeof(u64)); bh_buffer table_buffer; bh_buffer_init(&table_buffer, global_heap_allocator, 4096); + // Write a "NULL" at the beginning so nothing will have to point to the first byte of the buffer. + bh_buffer_write_u64(&table_buffer, 0); + bh_arr_each(bh__imap_entry, type_entry, type_map.entries) { u64 type_idx = type_entry->key; Type* type = (Type *) type_entry->value; @@ -169,6 +173,8 @@ u64 build_type_table(OnyxWasmModule* module) { TypeStruct* s = &type->Struct; u32* name_locations = bh_alloc_array(global_scratch_allocator, u32, s->mem_count); u32* param_locations = bh_alloc_array(global_scratch_allocator, u32, bh_arr_length(s->poly_sln)); + u32* value_locations = bh_alloc_array(global_scratch_allocator, u32, s->mem_count); + memset(value_locations, 0, s->mem_count * sizeof(u32)); u32 i = 0; bh_arr_each(StructMember*, pmem, s->memarr) { @@ -211,6 +217,44 @@ u64 build_type_table(OnyxWasmModule* module) { } } + bh_buffer_align(&table_buffer, 8); + + i = 0; + bh_arr_each(StructMember*, pmem, s->memarr) { + StructMember* mem = *pmem; + + if (mem->initial_value == NULL || *mem->initial_value == NULL) { + i++; + continue; + } + + AstTyped* value = *mem->initial_value; + assert(value->type); + + if ((value->flags & Ast_Flag_Comptime) == 0) { + // onyx_report_warning(value->token->pos, "Warning: skipping generating default value for '%s' in '%s' because it is not compile-time known.\n", mem->name, s->name); + i++; + continue; + } + + u32 size = type_size_of(value->type); + bh_buffer_align(&table_buffer, type_alignment_of(value->type)); + + bh_buffer_grow(&table_buffer, table_buffer.length + size); + u8* buffer = table_buffer.data + table_buffer.length; + + if (!emit_raw_data_(module, buffer, value)) { + // Failed to generate raw data + // onyx_report_warning(value->token->pos, "Warning: failed to generate default value for '%s' in '%s'.\n", mem->name, s->name); + value_locations[i++] = 0; + + } else { + // Success + value_locations[i++] = table_buffer.length; + table_buffer.length += size; + } + } + bh_buffer_align(&table_buffer, 8); u32 members_base = table_buffer.length; @@ -218,7 +262,8 @@ u64 build_type_table(OnyxWasmModule* module) { bh_arr_each(StructMember*, pmem, s->memarr) { StructMember* mem = *pmem; - u32 name_loc = name_locations[i++]; + u32 name_loc = name_locations[i]; + u32 value_loc = value_locations[i++]; bh_buffer_align(&table_buffer, 8); PATCH; @@ -227,7 +272,10 @@ u64 build_type_table(OnyxWasmModule* module) { bh_buffer_write_u32(&table_buffer, mem->offset); bh_buffer_write_u32(&table_buffer, mem->type->id); bh_buffer_write_byte(&table_buffer, mem->used ? 1 : 0); - bh_buffer_write_byte(&table_buffer, mem->initial_value != NULL ? 1 : 0); + + bh_buffer_align(&table_buffer, 8); + PATCH; + bh_buffer_write_u64(&table_buffer, value_loc); } bh_buffer_align(&table_buffer, 8); @@ -291,7 +339,10 @@ u64 build_type_table(OnyxWasmModule* module) { } bh_arr_each(u32, patch_loc, base_patch_locations) { - *(u64 *) (bh_pointer_add(table_buffer.data, *patch_loc)) += offset; + u64* loc = bh_pointer_add(table_buffer.data, *patch_loc); + if (*loc == 0) continue; + + *loc += offset; } WasmDatum type_info_data = { -- 2.25.1