From b4920dcb5cf717e4614ff56eea62992c38bf7b5e Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Tue, 30 Mar 2021 11:48:53 -0500 Subject: [PATCH] random cleanups --- bin/onyx | Bin 348512 -> 344432 bytes core/string.onyx | 6 +-- core/sys/wasi.onyx | 17 ++++++-- core/wasi.onyx | 100 +++++++++++++++++++++---------------------- src/onyxsymres.c | 16 +++---- src/onyxtypes.c | 104 ++++++--------------------------------------- 6 files changed, 86 insertions(+), 157 deletions(-) diff --git a/bin/onyx b/bin/onyx index cf48b2c31aeea3415f0b6f02903cd9f0803589ac..2cd9c3488783a3389a5f4c0c9f89f50d4aff95d0 100755 GIT binary patch delta 92731 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 diff --git a/core/string.onyx b/core/string.onyx index ab8949d5..2c5997b6 100644 --- a/core/string.onyx +++ b/core/string.onyx @@ -38,7 +38,7 @@ copy :: (orig: str, dest: str) { len := orig.count; if dest.count < len do len = dest.count; - for i: 0 .. len do dest.data[i] = orig.data[i]; + memory.copy(dest.data, orig.data, len); } concat :: (s1: str, s2: str) -> str { @@ -46,8 +46,8 @@ concat :: (s1: str, s2: str) -> str { len2 := length(s2); data := cast(^u8) calloc(len1 + len2); - for i: 0 .. len1 do data[i] = s1[i]; - for i: 0 .. len2 do data[i + len1] = s2[i]; + memory.copy(data, s1.data, len1); + memory.copy(data + len1, s2.data, len2); return str.{ data, len1 + len2 }; } diff --git a/core/sys/wasi.onyx b/core/sys/wasi.onyx index ebfbf06e..2805a217 100644 --- a/core/sys/wasi.onyx +++ b/core/sys/wasi.onyx @@ -31,6 +31,17 @@ assert_handler :: (msg: str, file: str) { proc_exit(1); } +proc () #export "_initialize" { + alloc.init(); + + __initialize(^context); + context.allocator = alloc.heap_allocator; + context.temp_allocator = alloc.temp_allocator; + context.assert_handler = assert_handler; + + stdio_init(); +} + // The builtin _start proc. // Sets up everything needed for execution. proc () #export "_start" { @@ -41,6 +52,8 @@ proc () #export "_start" { context.temp_allocator = alloc.temp_allocator; context.assert_handler = assert_handler; + stdio_init(); + args : [] cstr; argv_buf_size : Size; args_sizes_get(^args.count, ^argv_buf_size); @@ -63,10 +76,6 @@ proc () #export "_start" { args[i] = cast(cstr) (cast(^u32) args.data)[i]; } - - - stdio_init(); - main.main(args); print_stream_flush(); diff --git a/core/wasi.onyx b/core/wasi.onyx index 1383f60d..fa0e3a1a 100644 --- a/core/wasi.onyx +++ b/core/wasi.onyx @@ -364,42 +364,42 @@ IOVecArray :: struct { // FUNCTIONS -args_get :: (argv: ^^u8, argv_buf: ^u8) -> Errno #foreign "wasi_unstable" "args_get"--- -args_sizes_get :: (argc: ^Size, argv_buf_size: ^Size) -> Errno #foreign "wasi_unstable" "args_sizes_get" --- - -environ_get :: (environ: ^^u8, environ_buf: ^u8) -> Errno #foreign "wasi_unstable" "environ_get" --- -environ_sizes_get :: (environc: ^Size, environ_buf_size: ^Size) -> Errno #foreign "wasi_unstable" "environ_sizes_get" --- - -clock_res_get :: (id: ClockID, resolution: ^Timestamp) -> Errno #foreign "wasi_unstable" "clock_res_get" --- -clock_time_get :: (id: ClockID, precision: Timestamp, time: ^Timestamp) -> Errno #foreign "wasi_unstable" "clock_time_get" --- - -fd_advise :: (fd: FileDescriptor, offset: Filesize, len: Filesize, advice: Advice) -> Errno #foreign "wasi_unstable" "fd_advise" --- -fd_allocate :: (fd: FileDescriptor, offset: Filesize, len: Filesize) -> Errno #foreign "wasi_unstable" "fd_allocate" --- -fd_close :: (fd: FileDescriptor) -> Errno #foreign "wasi_unstable" "fd_close" --- -fd_datasync :: (fd: FileDescriptor) -> Errno #foreign "wasi_unstable" "fd_datasync" --- -fd_fdstat_get :: (fd: FileDescriptor, stat: ^FDStat) -> Errno #foreign "wasi_unstable" "fd_fdstat_get" --- -fd_fdstat_set_flags :: (fd: FileDescriptor, flags: FDFlags) -> Errno #foreign "wasi_unstable" "fd_fdstat_set_flags" --- -fd_fdstat_set_rights :: (fd: FileDescriptor, rights_base: Rights, rights_inheriting: Rights) -> Errno #foreign "wasi_unstable" "fd_fdstat_set_rights" --- -fd_filestat_get :: (fd: FileDescriptor, buf: ^FileStat) -> Errno #foreign "wasi_unstable" "fd_filestat_get" --- -fd_filestat_set_size :: (fd: FileDescriptor, size: Filesize) -> Errno #foreign "wasi_unstable" "fd_filestat_set_size" --- -fd_filestat_set_times :: (fd: FileDescriptor, atim: Timestamp, mtim: Timestamp, fst_flags: FSTFlags) -> Errno #foreign "wasi_unstable" "fd_filestat_set_times" --- -fd_pread :: (fd: FileDescriptor, iovs: IOVecArray, offset: Filesize, nread: ^Size) -> Errno #foreign "wasi_unstable" "fd_pread" --- -fd_prestat_get :: (fd: FileDescriptor, buf: ^PrestatTagged) -> Errno #foreign "wasi_unstable" "fd_prestat_get" --- -fd_prestat_dir_name :: (fd: FileDescriptor, path: str) -> Errno #foreign "wasi_unstable" "fd_prestat_dir_name" --- -fd_pwrite :: (fd: FileDescriptor, iovs: IOVecArray, offset: Filesize, nwritten: ^Size) -> Errno #foreign "wasi_unstable" "fd_pwrite" --- -fd_read :: (fd: FileDescriptor, iovs: IOVecArray, nread: ^Size) -> Errno #foreign "wasi_unstable" "fd_read" --- -fd_readdir :: (fd: FileDescriptor, buf: ^u8, buf_len: Size, cookie: DirCookie, bufused: ^Size) -> Errno #foreign "wasi_unstable" "fd_readdir" --- -fd_renumber :: (fd: FileDescriptor, to: FileDescriptor) -> Errno #foreign "wasi_unstable" "fd_renumber" --- -fd_seek :: (fd: FileDescriptor, offset: FileDelta, whence: Whence, newoffset: ^Filesize) -> Errno #foreign "wasi_unstable" "fd_seek" --- -fd_sync :: (fd: FileDescriptor) -> Errno #foreign "wasi_unstable" "fd_sync" --- -fd_tell :: (fd: FileDescriptor, offset: ^Filesize) -> Errno #foreign "wasi_unstable" "fd_tell" --- -fd_write :: (fd: FileDescriptor, iovs: IOVecArray, nwritten: ^Size) -> Errno #foreign "wasi_unstable" "fd_write" --- - -path_create_directory :: (fd: FileDescriptor, path: str) -> Errno #foreign "wasi_unstable" "path_create_directory" --- -path_filestat_get :: (fd: FileDescriptor, flags: LookupFlags, path: str, buf: ^FileStat) -> Errno #foreign "wasi_unstable" "path_filestat_get" --- -path_filestat_set_times :: (fd: FileDescriptor, flags: LookupFlags, path: str, atim: Timestamp, mtim: Timestamp, fst_flags: FSTFlags) -> Errno #foreign "wasi_unstable" "path_filestat_set_times" --- - -path_link :: (fd: FileDescriptor, old_flags: LookupFlags, old_path: str, new_fd: FileDescriptor, new_path: str) -> Errno #foreign "wasi_unstable" "path_link" --- +args_get :: (argv: ^^u8, argv_buf: ^u8) -> Errno #foreign "wasi_snapshot_preview1" "args_get"--- +args_sizes_get :: (argc: ^Size, argv_buf_size: ^Size) -> Errno #foreign "wasi_snapshot_preview1" "args_sizes_get" --- + +environ_get :: (environ: ^^u8, environ_buf: ^u8) -> Errno #foreign "wasi_snapshot_preview1" "environ_get" --- +environ_sizes_get :: (environc: ^Size, environ_buf_size: ^Size) -> Errno #foreign "wasi_snapshot_preview1" "environ_sizes_get" --- + +clock_res_get :: (id: ClockID, resolution: ^Timestamp) -> Errno #foreign "wasi_snapshot_preview1" "clock_res_get" --- +clock_time_get :: (id: ClockID, precision: Timestamp, time: ^Timestamp) -> Errno #foreign "wasi_snapshot_preview1" "clock_time_get" --- + +fd_advise :: (fd: FileDescriptor, offset: Filesize, len: Filesize, advice: Advice) -> Errno #foreign "wasi_snapshot_preview1" "fd_advise" --- +fd_allocate :: (fd: FileDescriptor, offset: Filesize, len: Filesize) -> Errno #foreign "wasi_snapshot_preview1" "fd_allocate" --- +fd_close :: (fd: FileDescriptor) -> Errno #foreign "wasi_snapshot_preview1" "fd_close" --- +fd_datasync :: (fd: FileDescriptor) -> Errno #foreign "wasi_snapshot_preview1" "fd_datasync" --- +fd_fdstat_get :: (fd: FileDescriptor, stat: ^FDStat) -> Errno #foreign "wasi_snapshot_preview1" "fd_fdstat_get" --- +fd_fdstat_set_flags :: (fd: FileDescriptor, flags: FDFlags) -> Errno #foreign "wasi_snapshot_preview1" "fd_fdstat_set_flags" --- +fd_fdstat_set_rights :: (fd: FileDescriptor, rights_base: Rights, rights_inheriting: Rights) -> Errno #foreign "wasi_snapshot_preview1" "fd_fdstat_set_rights" --- +fd_filestat_get :: (fd: FileDescriptor, buf: ^FileStat) -> Errno #foreign "wasi_snapshot_preview1" "fd_filestat_get" --- +fd_filestat_set_size :: (fd: FileDescriptor, size: Filesize) -> Errno #foreign "wasi_snapshot_preview1" "fd_filestat_set_size" --- +fd_filestat_set_times :: (fd: FileDescriptor, atim: Timestamp, mtim: Timestamp, fst_flags: FSTFlags) -> Errno #foreign "wasi_snapshot_preview1" "fd_filestat_set_times" --- +fd_pread :: (fd: FileDescriptor, iovs: IOVecArray, offset: Filesize, nread: ^Size) -> Errno #foreign "wasi_snapshot_preview1" "fd_pread" --- +fd_prestat_get :: (fd: FileDescriptor, buf: ^PrestatTagged) -> Errno #foreign "wasi_snapshot_preview1" "fd_prestat_get" --- +fd_prestat_dir_name :: (fd: FileDescriptor, path: str) -> Errno #foreign "wasi_snapshot_preview1" "fd_prestat_dir_name" --- +fd_pwrite :: (fd: FileDescriptor, iovs: IOVecArray, offset: Filesize, nwritten: ^Size) -> Errno #foreign "wasi_snapshot_preview1" "fd_pwrite" --- +fd_read :: (fd: FileDescriptor, iovs: IOVecArray, nread: ^Size) -> Errno #foreign "wasi_snapshot_preview1" "fd_read" --- +fd_readdir :: (fd: FileDescriptor, buf: ^u8, buf_len: Size, cookie: DirCookie, bufused: ^Size) -> Errno #foreign "wasi_snapshot_preview1" "fd_readdir" --- +fd_renumber :: (fd: FileDescriptor, to: FileDescriptor) -> Errno #foreign "wasi_snapshot_preview1" "fd_renumber" --- +fd_seek :: (fd: FileDescriptor, offset: FileDelta, whence: Whence, newoffset: ^Filesize) -> Errno #foreign "wasi_snapshot_preview1" "fd_seek" --- +fd_sync :: (fd: FileDescriptor) -> Errno #foreign "wasi_snapshot_preview1" "fd_sync" --- +fd_tell :: (fd: FileDescriptor, offset: ^Filesize) -> Errno #foreign "wasi_snapshot_preview1" "fd_tell" --- +fd_write :: (fd: FileDescriptor, iovs: IOVecArray, nwritten: ^Size) -> Errno #foreign "wasi_snapshot_preview1" "fd_write" --- + +path_create_directory :: (fd: FileDescriptor, path: str) -> Errno #foreign "wasi_snapshot_preview1" "path_create_directory" --- +path_filestat_get :: (fd: FileDescriptor, flags: LookupFlags, path: str, buf: ^FileStat) -> Errno #foreign "wasi_snapshot_preview1" "path_filestat_get" --- +path_filestat_set_times :: (fd: FileDescriptor, flags: LookupFlags, path: str, atim: Timestamp, mtim: Timestamp, fst_flags: FSTFlags) -> Errno #foreign "wasi_snapshot_preview1" "path_filestat_set_times" --- + +path_link :: (fd: FileDescriptor, old_flags: LookupFlags, old_path: str, new_fd: FileDescriptor, new_path: str) -> Errno #foreign "wasi_snapshot_preview1" "path_link" --- path_open :: (fd: FileDescriptor , dirflags: LookupFlags , path: str @@ -409,26 +409,26 @@ path_open :: (fd: FileDescriptor , fdflags: FDFlags , opened_fd: ^FileDescriptor ) -> Errno - #foreign "wasi_unstable" "path_open" --- + #foreign "wasi_snapshot_preview1" "path_open" --- -path_readlink :: (fd: FileDescriptor, path: str, buf: ^u8, buf_len: Size, bufused: ^Size) -> Errno #foreign "wasi_unstable" "path_readlink" --- -path_remove_directory :: (fd: FileDescriptor, path: str) -> Errno #foreign "wasi_unstable" "path_remove_directory" --- -path_rename :: (fd: FileDescriptor, old_path: str, new_fd: FileDescriptor, new_path: str) -> Errno #foreign "wasi_unstable" "path_rename" --- -path_symlink :: (old_path: ^u8, old_path_len: Size, fd: FileDescriptor, new_path: str) -> Errno #foreign "wasi_unstable" "path_symlink" --- -path_unlink_file :: (fd: FileDescriptor, path: str) -> Errno #foreign "wasi_unstable" "path_unlink_file" --- +path_readlink :: (fd: FileDescriptor, path: str, buf: ^u8, buf_len: Size, bufused: ^Size) -> Errno #foreign "wasi_snapshot_preview1" "path_readlink" --- +path_remove_directory :: (fd: FileDescriptor, path: str) -> Errno #foreign "wasi_snapshot_preview1" "path_remove_directory" --- +path_rename :: (fd: FileDescriptor, old_path: str, new_fd: FileDescriptor, new_path: str) -> Errno #foreign "wasi_snapshot_preview1" "path_rename" --- +path_symlink :: (old_path: ^u8, old_path_len: Size, fd: FileDescriptor, new_path: str) -> Errno #foreign "wasi_snapshot_preview1" "path_symlink" --- +path_unlink_file :: (fd: FileDescriptor, path: str) -> Errno #foreign "wasi_snapshot_preview1" "path_unlink_file" --- -poll_oneoff :: (in: ^Subscription, out: ^Event, nsubscriptions: Size, nevents: ^Size) -> Errno #foreign "wasi_unstable" "poll_oneoff" --- +poll_oneoff :: (in: ^Subscription, out: ^Event, nsubscriptions: Size, nevents: ^Size) -> Errno #foreign "wasi_snapshot_preview1" "poll_oneoff" --- -proc_exit :: (rval: ExitCode) -> void #foreign "wasi_unstable" "proc_exit" --- -proc_raise :: (sig: Signal) -> Errno #foreign "wasi_unstable" "proc_raise" --- +proc_exit :: (rval: ExitCode) -> void #foreign "wasi_snapshot_preview1" "proc_exit" --- +proc_raise :: (sig: Signal) -> Errno #foreign "wasi_snapshot_preview1" "proc_raise" --- -sched_yield :: () -> Errno #foreign "wasi_unstable" "sched_yield" --- +sched_yield :: () -> Errno #foreign "wasi_snapshot_preview1" "sched_yield" --- -random_get :: (buf: ^u8, buf_len: Size) -> Errno #foreign "wasi_unstable" "random_get" --- +random_get :: (buf: ^u8, buf_len: Size) -> Errno #foreign "wasi_snapshot_preview1" "random_get" --- -sock_recv :: (fd: FileDescriptor, ri_data: IOVecArray, ri_flags: RIFlags, ro_datalen: ^Size, ro_flags: ^ROFlags) -> Errno #foreign "wasi_unstable" "sock_recv" --- -sock_send :: (fd: FileDescriptor, si_data: IOVecArray, si_flags: SIFlags, so_datalen: ^Size) -> Errno #foreign "wasi_unstable" "sock_send" --- -sock_shutdown :: (fd: FileDescriptor, how: SDFlags) -> Errno #foreign "wasi_unstable" "sock_shutdown" --- +sock_recv :: (fd: FileDescriptor, ri_data: IOVecArray, ri_flags: RIFlags, ro_datalen: ^Size, ro_flags: ^ROFlags) -> Errno #foreign "wasi_snapshot_preview1" "sock_recv" --- +sock_send :: (fd: FileDescriptor, si_data: IOVecArray, si_flags: SIFlags, so_datalen: ^Size) -> Errno #foreign "wasi_snapshot_preview1" "sock_send" --- +sock_shutdown :: (fd: FileDescriptor, how: SDFlags) -> Errno #foreign "wasi_snapshot_preview1" "sock_shutdown" --- diff --git a/src/onyxsymres.c b/src/onyxsymres.c index efb5ec6e..beaa4806 100644 --- a/src/onyxsymres.c +++ b/src/onyxsymres.c @@ -1084,16 +1084,16 @@ void symres_entity(Entity* ent) { case Entity_Type_Function: ss = symres_function(ent->function); break; case Entity_Type_Foreign_Global_Header: - case Entity_Type_Global_Header: ss = symres_global(ent->global); break; + case Entity_Type_Global_Header: ss = symres_global(ent->global); break; - case Entity_Type_Use_Package: ss = symres_use_package(ent->use_package); - if (ent->use_package->package) package_track_use_package(ent->use_package->package, ent); - next_state = Entity_State_Finalized; - break; + case Entity_Type_Use_Package: ss = symres_use_package(ent->use_package); + if (ent->use_package->package) package_track_use_package(ent->use_package->package, ent); + next_state = Entity_State_Finalized; + break; - case Entity_Type_Use: ss = symres_use(ent->use); - next_state = Entity_State_Finalized; - break; + case Entity_Type_Use: ss = symres_use(ent->use); + next_state = Entity_State_Finalized; + break; case Entity_Type_Overloaded_Function: ss = symres_overloaded_function(ent->overloaded_function); break; case Entity_Type_Expression: ss = symres_expression(&ent->expr); break; diff --git a/src/onyxtypes.c b/src/onyxtypes.c index 993f97f2..42eab6b2 100644 --- a/src/onyxtypes.c +++ b/src/onyxtypes.c @@ -37,95 +37,7 @@ Type basic_types[] = { { Type_Kind_Basic, 0, (AstType *) &basic_type_v128, { Basic_Kind_V128, Basic_Flag_SIMD, 16, 16, "v128" } }, }; -b32 types_are_surface_compatible(Type* t1, Type* t2) { - // NOTE: If they are pointing to the same thing, - // it is safe to assume they are the same type - if (t1 == t2) return 1; - if (t1 == NULL || t2 == NULL) return 0; - - switch (t1->kind) { - case Type_Kind_Basic: - if (t2->kind == Type_Kind_Basic) { - // HACK: Not sure if this is right way to check this? - if (t1 == t2) return 1; - - if ((t1->Basic.flags & Basic_Flag_Integer) && (t2->Basic.flags & Basic_Flag_Integer)) { - return t1->Basic.size == t2->Basic.size; - } - - if (t1->Basic.kind == Basic_Kind_Rawptr && type_is_pointer(t2)) { - return 1; - } - } - break; - - case Type_Kind_Pointer: - if (t2->kind != Type_Kind_Pointer) return 0; - - if (t1->Pointer.elem->kind == Type_Kind_Basic && t2->Pointer.elem->kind == Type_Kind_Basic) - return types_are_compatible(t1->Pointer.elem, t2->Pointer.elem); - - return 1; - - case Type_Kind_Array: { - if (t2->kind != Type_Kind_Array) return 0; - - if (t1->Array.count != 0) - if (t1->Array.count != t2->Array.count) return 0; - - return types_are_compatible(t1->Array.elem, t2->Array.elem); - } - - case Type_Kind_Struct: { - if (t2->kind != Type_Kind_Struct) return 0; - if (t1->Struct.mem_count != t2->Struct.mem_count) return 0; - if (t1->Struct.name && t2->Struct.name) - if (strcmp(t1->Struct.name, t2->Struct.name) == 0) return 1; - - b32 works = 1; - bh_table_each_start(StructMember, t1->Struct.members); - if (!bh_table_has(StructMember, t2->Struct.members, (char *) key)) return 0; - StructMember other = bh_table_get(StructMember, t2->Struct.members, (char *) key); - if (other.offset != value.offset) return 0; - - if (!types_are_compatible(value.type, other.type)) { - works = 0; - break; - } - bh_table_each_end; - - return works; - } - - case Type_Kind_Enum: { - if (t2->kind != Type_Kind_Enum) return 0; - return t1 == t2; - } - - case Type_Kind_Slice: { - if (t2->kind != Type_Kind_Slice) return 0; - return types_are_compatible(t1->Slice.ptr_to_data->Pointer.elem, t2->Slice.ptr_to_data->Pointer.elem); - } - - case Type_Kind_VarArgs: { - if (t2->kind != Type_Kind_VarArgs) return 0; - return types_are_compatible(t1->VarArgs.ptr_to_data->Pointer.elem, t2->VarArgs.ptr_to_data->Pointer.elem); - } - - case Type_Kind_DynArray: { - if (t2->kind != Type_Kind_DynArray) return 0; - return types_are_compatible(t1->DynArray.ptr_to_data->Pointer.elem, t2->DynArray.ptr_to_data->Pointer.elem); - } - - default: - assert(("Invalid type", 0)); - break; - } - - return 0; -} - -b32 types_are_compatible(Type* t1, Type* t2) { +b32 types_are_compatible_(Type* t1, Type* t2, b32 recurse_pointers) { // NOTE: If they are pointing to the same thing, // it is safe to assume they are the same type if (t1 == t2) return 1; @@ -151,6 +63,8 @@ b32 types_are_compatible(Type* t1, Type* t2) { case Type_Kind_Pointer: { if (t2->kind == Type_Kind_Pointer) { + if (!recurse_pointers) return 1; + if (types_are_compatible(t1->Pointer.elem, t2->Pointer.elem)) return 1; if (t1->Pointer.elem->kind == Type_Kind_Struct && t2->Pointer.elem->kind == Type_Kind_Struct) { @@ -178,6 +92,7 @@ b32 types_are_compatible(Type* t1, Type* t2) { case Type_Kind_Struct: { if (t2->kind != Type_Kind_Struct) return 0; + if (t1->Struct.unique_id != t2->Struct.unique_id) return 0; if (t1->Struct.mem_count != t2->Struct.mem_count) return 0; b32 works = 1; @@ -186,7 +101,9 @@ b32 types_are_compatible(Type* t1, Type* t2) { StructMember other = bh_table_get(StructMember, t2->Struct.members, (char *) key); if (other.offset != value.offset) return 0; - if (!types_are_surface_compatible(value.type, other.type)) { + // NOTE: Don't recurse down pointers; This could be a problem, but it is a quick + // fix for the problem that occurs when using a linked-list style data structure. + if (!types_are_compatible_(value.type, other.type, 0)) { works = 0; break; } @@ -196,9 +113,8 @@ b32 types_are_compatible(Type* t1, Type* t2) { } case Type_Kind_Enum: { + // NOTE: The check above for t1 == t2 would already catch this. return 0; - // if (t2->kind != Type_Kind_Enum) return 0; - // return t1 == t2; } case Type_Kind_Function: { @@ -250,6 +166,10 @@ b32 types_are_compatible(Type* t1, Type* t2) { return 0; } +b32 types_are_compatible(Type* t1, Type* t2) { + return types_are_compatible_(t1, t2, 1); +} + u32 type_size_of(Type* type) { if (type == NULL) return 0; -- 2.25.1