From d3dab5f56ada4d00efe07fadd1d5769f3a3b8d0a Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Mon, 21 Jun 2021 22:03:50 -0500 Subject: [PATCH] adding untested type table creation --- bin/onyx | Bin 410240 -> 414504 bytes core/type_info.onyx | 9 +- include/bh.h | 23 ++++- include/onyxtypes.h | 2 + src/onyxtypes.c | 3 +- src/onyxwasm.c | 1 + src/onyxwasm_type_table.c | 195 ++++++++++++++++++++++++++++++++++++++ 7 files changed, 230 insertions(+), 3 deletions(-) create mode 100644 src/onyxwasm_type_table.c diff --git a/bin/onyx b/bin/onyx index e0bd10c24c0e03c0cf0681d665318c9a5626dac9..7a061c3bc6f9d30bc3fce96e76b79e1029ef5c8b 100755 GIT binary patch delta 103525 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%0AZPYEbHkbCuj`hs>7BtliyGd_JxU#Jq*zHELA{aM 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 diff --git a/core/type_info.onyx b/core/type_info.onyx index ec435f15..bad1026e 100644 --- a/core/type_info.onyx +++ b/core/type_info.onyx @@ -115,8 +115,9 @@ Type_Info_Enum :: struct { value: u64; // This assumes enums are always represented as ints. } - name: str; + // This is first for better alignment backing_type: Type_Index; + name: str; members: [] Member; is_flags: bool; @@ -142,4 +143,10 @@ Type_Info_Compound :: struct { use base : Type_Info; components : [] Type_Index; +} + +get_type_info :: (t: Type_Index) -> ^Type_Info { + if t < 0 || t >= type_table.count do return null; + + return type_table[t]; } \ No newline at end of file diff --git a/include/bh.h b/include/bh.h index 068f8e0a..742034c5 100644 --- a/include/bh.h +++ b/include/bh.h @@ -470,7 +470,9 @@ void bh_buffer_grow(bh_buffer* buffer, i32 length); void bh_buffer_append(bh_buffer* buffer, const void * data, i32 length); void bh_buffer_concat(bh_buffer* buffer, bh_buffer other); void bh_buffer_write_byte(bh_buffer* buffer, u8 byte); - +void bh_buffer_write_u32(bh_buffer* buffer, u32 i); +void bh_buffer_write_u64(bh_buffer* buffer, u64 i); +void bh_buffer_align(bh_buffer* buffer, u32 alignment); @@ -1953,7 +1955,26 @@ void bh_buffer_write_byte(bh_buffer* buffer, u8 byte) { buffer->data[buffer->length++] = byte; } +void bh_buffer_write_u32(bh_buffer* buffer, u32 i) { + bh_buffer_grow(buffer, buffer->length + 4); + *((u32 *) bh_pointer_add(buffer->data, buffer->length)) = i; + buffer->length += 4; +} + +void bh_buffer_write_u64(bh_buffer* buffer, u64 i) { + bh_buffer_grow(buffer, buffer->length + 8); + *((u8 *) bh_pointer_add(buffer->data, buffer->length)) = i; + buffer->length += 8; +} +void bh_buffer_align(bh_buffer* buffer, u32 alignment) { + if (buffer->length % alignment != 0) { + u32 difference = alignment - (buffer->length % alignment); + buffer->length += difference; + + bh_buffer_grow(buffer, buffer->length); + } +} #endif diff --git a/include/onyxtypes.h b/include/onyxtypes.h index 48cd409b..9bacca84 100644 --- a/include/onyxtypes.h +++ b/include/onyxtypes.h @@ -154,6 +154,8 @@ struct Type { }; }; +extern bh_imap type_map; + extern Type basic_types[]; struct AstType; diff --git a/src/onyxtypes.c b/src/onyxtypes.c index 29e2ac25..90fccfd1 100644 --- a/src/onyxtypes.c +++ b/src/onyxtypes.c @@ -37,7 +37,8 @@ Type basic_types[] = { { Type_Kind_Basic, 0, 0, (AstType *) &basic_type_v128, { Basic_Kind_V128, Basic_Flag_SIMD, 16, 16, "v128" } }, }; -static bh_imap type_map; +// TODO: Document this!! + bh_imap type_map; static bh_imap type_pointer_map; static bh_imap type_slice_map; static bh_imap type_dynarr_map; diff --git a/src/onyxwasm.c b/src/onyxwasm.c index 55c8b280..f2a9a7ac 100644 --- a/src/onyxwasm.c +++ b/src/onyxwasm.c @@ -264,6 +264,7 @@ EMIT_FUNC(enter_structured_block, StructuredBlockType sbt); EMIT_FUNC_NO_ARGS(leave_structured_block); #include "onyxwasm_intrinsics.c" +#include "onyxwasm_type_table.c" EMIT_FUNC(function_body, AstFunction* fd) { if (fd->body == NULL) return; diff --git a/src/onyxwasm_type_table.c b/src/onyxwasm_type_table.c new file mode 100644 index 00000000..c945f17d --- /dev/null +++ b/src/onyxwasm_type_table.c @@ -0,0 +1,195 @@ +// This file is directly included in src/onxywasm.c +// It is here purely to decrease the amount of clutter in the main file. + + +void build_type_table(OnyxWasmModule* module) { + + bh_arr(u32) base_patch_locations=NULL; + bh_arr_new(global_heap_allocator, base_patch_locations, 256); + +#define PATCH (bh_arr_push(base_patch_locations, table_buffer.length)) + + // This is the data behind the "type_table" slice in type_info.onyx + u32* table_info = bh_alloc_array(global_heap_allocator, u32, bh_arr_length(type_map.entries)); + + bh_buffer table_buffer; + bh_buffer_init(&table_buffer, global_heap_allocator, 4096); + + bh_arr_each(bh__imap_entry, type_entry, type_map.entries) { + u64 type_idx = type_entry->key; + Type* type = (Type *) type_entry->value; + + + switch (type->kind) { + case Type_Kind_Basic: { + table_info[type_idx] = table_buffer.length; + bh_buffer_write_u32(&table_buffer, type->kind); + bh_buffer_write_u32(&table_buffer, type_size_of(type)); + bh_buffer_write_u32(&table_buffer, type_alignment_of(type)); + bh_buffer_write_u32(&table_buffer, type->Basic.kind); + break; + } + + case Type_Kind_Pointer: { + table_info[type_idx] = table_buffer.length; + bh_buffer_write_u32(&table_buffer, type->kind); + bh_buffer_write_u32(&table_buffer, type_size_of(type)); + bh_buffer_write_u32(&table_buffer, type_alignment_of(type)); + bh_buffer_write_u32(&table_buffer, type->Pointer.elem->id); + break; + } + + case Type_Kind_Array: { + table_info[type_idx] = table_buffer.length; + bh_buffer_write_u32(&table_buffer, type->kind); + bh_buffer_write_u32(&table_buffer, type_size_of(type)); + bh_buffer_write_u32(&table_buffer, type_alignment_of(type)); + bh_buffer_write_u32(&table_buffer, type->Array.elem->id); + bh_buffer_write_u32(&table_buffer, type->Array.count); + break; + } + + case Type_Kind_Slice: { + table_info[type_idx] = table_buffer.length; + bh_buffer_write_u32(&table_buffer, type->kind); + bh_buffer_write_u32(&table_buffer, type_size_of(type)); + bh_buffer_write_u32(&table_buffer, type_alignment_of(type)); + bh_buffer_write_u32(&table_buffer, type->Slice.ptr_to_data->Pointer.elem->id); + break; + } + + case Type_Kind_DynArray: { + table_info[type_idx] = table_buffer.length; + bh_buffer_write_u32(&table_buffer, type->kind); + bh_buffer_write_u32(&table_buffer, type_size_of(type)); + bh_buffer_write_u32(&table_buffer, type_alignment_of(type)); + bh_buffer_write_u32(&table_buffer, type->DynArray.ptr_to_data->Pointer.elem->id); + break; + } + + case Type_Kind_VarArgs: { + table_info[type_idx] = table_buffer.length; + bh_buffer_write_u32(&table_buffer, type->kind); + bh_buffer_write_u32(&table_buffer, type_size_of(type)); + bh_buffer_write_u32(&table_buffer, type_alignment_of(type)); + bh_buffer_write_u32(&table_buffer, type->VarArgs.ptr_to_data->Pointer.elem->id); + break; + } + + case Type_Kind_Compound: { + u32 components_base = table_buffer.length; + + u32 components_count = type->Compound.count; + fori (i, 0, components_count) { + u32 type_idx = type->Compound.types[i]->id; + bh_buffer_write_u32(&table_buffer, type_idx); + } + + table_info[type_idx] = table_buffer.length; + bh_buffer_write_u32(&table_buffer, type->kind); + bh_buffer_write_u32(&table_buffer, type_size_of(type)); + bh_buffer_write_u32(&table_buffer, type_alignment_of(type)); + PATCH; + bh_buffer_write_u64(&table_buffer, components_base); + bh_buffer_write_u64(&table_buffer, components_count); + break; + } + + case Type_Kind_Function: { + u32 parameters_base = table_buffer.length; + + u32 parameters_count = type->Function.param_count; + fori (i, 0, parameters_count) { + u32 type_idx = type->Function.params[i]->id; + bh_buffer_write_u32(&table_buffer, type_idx); + } + + table_info[type_idx] = table_buffer.length; + bh_buffer_write_u32(&table_buffer, type->kind); + bh_buffer_write_u32(&table_buffer, type_size_of(type)); + bh_buffer_write_u32(&table_buffer, type_alignment_of(type)); + bh_buffer_write_u32(&table_buffer, type->Function.return_type->id); + + PATCH; + bh_buffer_write_u64(&table_buffer, parameters_base); + bh_buffer_write_u64(&table_buffer, parameters_count); + + bh_buffer_write_u32(&table_buffer, type->Function.vararg_arg_pos > 0 ? 1 : 0); + break; + } + + case Type_Kind_Enum: { + + u32 name_base = table_buffer.length; + u32 name_length = strlen(type->Enum.name); + bh_buffer_append(&table_buffer, type->Enum.name, name_length); + bh_buffer_align(&table_buffer, 8); + + // u32 member_base = table_buffer.length; + + table_info[type_idx] = table_buffer.length; + bh_buffer_write_u32(&table_buffer, type->kind); + bh_buffer_write_u32(&table_buffer, type_size_of(type)); + bh_buffer_write_u32(&table_buffer, type_alignment_of(type)); + bh_buffer_write_u32(&table_buffer, type->Enum.backing->id); + PATCH; + bh_buffer_write_u64(&table_buffer, name_base); + bh_buffer_write_u64(&table_buffer, name_length); + bh_buffer_write_u64(&table_buffer, 0); // TODO: Add member info here. Also, Patching + bh_buffer_write_u64(&table_buffer, 0); + bh_buffer_write_u32(&table_buffer, type->Enum.is_flags ? 1 : 0); + } + + case Type_Kind_Struct: { + TypeStruct* s = &type->Struct; + u32* name_locations = bh_alloc_array(global_scratch_allocator, u32, s->mem_count); + + u32 i = 0; + bh_arr_each(StructMember*, pmem, s->memarr) { + StructMember* mem = *pmem; + + name_locations[i++] = table_buffer.length; + bh_buffer_append(&table_buffer, mem->name, strlen(mem->name)); + } + + bh_buffer_align(&table_buffer, 8); + + u32 members_base = table_buffer.length; + + i = 0; + bh_arr_each(StructMember*, pmem, s->memarr) { + StructMember* mem = *pmem; + + u32 name_loc = name_locations[i++]; + + bh_buffer_align(&table_buffer, 8); + PATCH; + bh_buffer_write_u64(&table_buffer, name_loc); + bh_buffer_write_u64(&table_buffer, strlen(mem->name)); + 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); + } + + u32 name_base = table_buffer.length; + u32 name_length = strlen(s->name); + bh_buffer_append(&table_buffer, s->name, name_length); + bh_buffer_align(&table_buffer, 8); + + table_info[type_idx] = table_buffer.length; + bh_buffer_write_u32(&table_buffer, type->kind); + bh_buffer_write_u32(&table_buffer, type_size_of(type)); + bh_buffer_write_u32(&table_buffer, type_alignment_of(type)); + PATCH; + bh_buffer_write_u64(&table_buffer, name_base); + bh_buffer_write_u64(&table_buffer, name_length); + PATCH; + bh_buffer_write_u64(&table_buffer, members_base); + bh_buffer_write_u64(&table_buffer, s->mem_count); + } + } + } + +#undef PATCH +} \ No newline at end of file -- 2.25.1