From e5821d9db1966d3b6612516957d277fd7dfda325 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Tue, 1 Sep 2020 11:00:16 -0500 Subject: [PATCH] added ptrmap.onyx; small bugfixes; changed rules about auto pointer conversions --- core/array.onyx | 7 +++ core/file.onyx | 2 +- core/ptrmap.onyx | 111 +++++++++++++++++++++++++++++++++++++++++++ core/std/js.onyx | 1 + core/std/wasi.onyx | 1 + core/string.onyx | 2 +- onyx | Bin 586696 -> 586784 bytes progs/poly_test.onyx | 36 ++++++++++++-- src/onyxchecker.c | 30 ++++++++---- src/onyxtypes.c | 3 -- src/onyxutils.c | 3 ++ 11 files changed, 177 insertions(+), 19 deletions(-) create mode 100644 core/ptrmap.onyx diff --git a/core/array.onyx b/core/array.onyx index 2498d4a4..7717c058 100644 --- a/core/array.onyx +++ b/core/array.onyx @@ -67,6 +67,13 @@ array_delete :: proc (arr: ^[..] $T, idx: u32) { arr.count -= 1; } +array_fast_delete :: proc (arr: ^[..] $T, idx: u32) { + if idx >= arr.count do return; + + arr.data[idx] = arr.data[arr.count - 1]; + arr.count -= 1; +} + array_contains :: proc (arr: ^[..] $T, x: T) -> bool { for i: 0, arr.count do if arr.data[i] == x do return true; return false; diff --git a/core/file.onyx b/core/file.onyx index 70ac2683..83ca7188 100644 --- a/core/file.onyx +++ b/core/file.onyx @@ -100,7 +100,7 @@ file_get_contents_from_file :: proc (file: File) -> string { fd_seek(file.fd, 0l, Whence.Set, ^dummy); dummy2: u32; - buf := IOVec.{ cast(rawptr) data, size }; + buf := IOVec.{ data, size }; fd_pread(file.fd, IOVecArray.{ ^buf, 1 }, 0l, ^dummy2); fd_seek(file.fd, prev_loc, Whence.Set, ^dummy); diff --git a/core/ptrmap.onyx b/core/ptrmap.onyx new file mode 100644 index 00000000..e828771b --- /dev/null +++ b/core/ptrmap.onyx @@ -0,0 +1,111 @@ +package core + + +PtrMap :: struct { + hashes : [..] i32; + entries : [..] PtrMapEntry; +} + +PtrMapEntry :: struct { + key : rawptr; + value : rawptr; + + next : i32; +} + +ptrmap_init :: proc (use pmap: ^PtrMap, hash_count: i32 = 16) { + array_init(^hashes, hash_count); + array_init(^entries, 4); + + for i: 0, hash_count do array_push(^hashes, -1); +} + +ptrmap_free :: proc (use pmap: ^PtrMap) { + array_free(^hashes); + array_free(^entries); +} + + +ptrmap_put :: proc (use pmap: ^PtrMap, key: rawptr, value: rawptr) { + lr := ptrmap_lookup(pmap, key); + + if lr.entry_index >= 0 { + entries[lr.entry_index].value = value; + return; + } + + array_push(^entries, PtrMapEntry.{ + key = key, + value = value, + next = hashes[lr.hash_index], + }); + + hashes[lr.hash_index] = entries.count - 1; +} + +ptrmap_has :: proc (use pmap: ^PtrMap, key: rawptr) -> bool { + lr := ptrmap_lookup(pmap, key); + return lr.entry_index >= 0; +} + +ptrmap_get :: proc (use pmap: ^PtrMap, key: rawptr) -> rawptr { + lr := ptrmap_lookup(pmap, key); + if lr.entry_index >= 0 do return entries[lr.entry_index].value; + + return null; +} + +ptrmap_delete :: proc (use pmap: ^PtrMap, key: rawptr) { + lr := ptrmap_lookup(pmap, key); + if lr.entry_index < 0 do return; + + if lr.entry_prev < 0 do hashes[lr.hash_index] = entries[lr.entry_index].next; + else do hashes[lr.entry_prev] = entries[lr.entry_index].next; + + if lr.entry_index == entries.count - 1 { + array_pop(^entries); + return; + } + + array_fast_delete(^entries, lr.entry_index); + last := ptrmap_lookup(pmap, entries[lr.entry_index].key); + if last.entry_prev >= 0 do entries[last.entry_prev].next = lr.entry_index; + else do hashes[last.hash_index] = lr.entry_index; +} + +ptrmap_clear :: proc (use pmap: ^PtrMap) { + for i: 0, hashes.count do hashes.data[i] = -1; + entries.count = 0; +} + + + +// +// Private symbols +// + +#private +PtrMapLookupResult :: struct { + hash_index : i32 = -1; + entry_index : i32 = -1; + entry_prev : i32 = -1; +} + +#private +ptrmap_lookup :: proc (use pmap: ^PtrMap, key: rawptr) -> PtrMapLookupResult { + lr := PtrMapLookupResult.{}; + + hash := cast(u32) 0xcbf29ce4 ^ cast(u32) key; + + lr.hash_index = hash % hashes.count; + lr.entry_index = hashes[lr.hash_index]; + + while lr.entry_index >= 0 { + if entries[lr.entry_index].key == key do return lr; + + lr.entry_prev = lr.entry_index; + lr.entry_index = entries[lr.entry_index].next; + } + + return lr; +} \ No newline at end of file diff --git a/core/std/js.onyx b/core/std/js.onyx index 8650a2a4..69b0473b 100644 --- a/core/std/js.onyx +++ b/core/std/js.onyx @@ -7,6 +7,7 @@ use package builtin #include_file "core/intrinsics" #include_file "core/math" #include_file "core/memory" +#include_file "core/ptrmap" #include_file "core/random" #include_file "core/stdio" #include_file "core/string" diff --git a/core/std/wasi.onyx b/core/std/wasi.onyx index 518befb8..0c8d9495 100644 --- a/core/std/wasi.onyx +++ b/core/std/wasi.onyx @@ -8,6 +8,7 @@ use package builtin #include_file "core/intrinsics" #include_file "core/math" #include_file "core/memory" +#include_file "core/ptrmap" #include_file "core/random" #include_file "core/stdio" #include_file "core/string" diff --git a/core/string.onyx b/core/string.onyx index b81b6227..3804ea35 100644 --- a/core/string.onyx +++ b/core/string.onyx @@ -222,7 +222,7 @@ i64_to_string :: proc (n_: i64, base: u64, buf: Buffer) -> string { string_builder_add_i64 :: proc (use sb: ^StringBuilder, n: i64, base := 10l) -> ^StringBuilder { buf : [256] u8; - s := i64_to_string(n, base, Buffer.{ cast(rawptr) buf, 256 }); + s := i64_to_string(n, base, Buffer.{ cast(^void) buf, 256 }); return string_builder_add_string(sb, s); } diff --git a/onyx b/onyx index 8f0b89377acc2682f23f7a5cbd81ac7ea1e815d2..708fe4561c3244026968b17a827fb697c16b5720 100755 GIT binary patch delta 73529 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 delta 73162 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 diff --git a/progs/poly_test.onyx b/progs/poly_test.onyx index de6a34f6..4d0dbafe 100644 --- a/progs/poly_test.onyx +++ b/progs/poly_test.onyx @@ -63,7 +63,7 @@ soa_deinit :: proc (s: ^SOA) { array_free(^s.b); } -main2 :: proc (args: [] cstring) { +main :: proc (args: [] cstring) { s : SOA; soa_init(^s); defer soa_deinit(^s); @@ -85,9 +85,37 @@ main2 :: proc (args: [] cstring) { print("After adding...\n"); print_arr_details(^s.a); print_arr_details(^s.b); -} -main :: proc (args: [] cstring) { + + map : PtrMap; + ptrmap_init(^map); + defer ptrmap_free(^map); + + for i: 0, 100 do ptrmap_put(^map, ^s.a[i], ^s.b[i]); + + print("Has ^a[20]? "); + print(ptrmap_has(^map, ^s.a[20])); + print("\n"); + + print("Has null? "); + print(ptrmap_has(^map, null)); + print("\n"); + + print("Value at ^a[50]: "); + print(ptrmap_get(^map, ^s.a[50])); + print(" == "); + print(^s.b[50]); + print("\n"); + + print("Deleteing ^a[20]\n"); + ptrmap_delete(^map, ^s.a[20]); + + print("Has ^a[20]? "); + print(ptrmap_has(^map, ^s.a[20])); + print("\n"); +} + +main2 :: proc (args: [] cstring) { print(cast(u32) __heap_start, 16); iarr_backing : [32] i32; @@ -163,7 +191,7 @@ main :: proc (args: [] cstring) { print_array(varr, "\n"); - dummy := Dummy.{ data = calloc(sizeof [5] i32) }; + dummy := Dummy.{ data = cast(^u32) calloc(sizeof [5] i32) }; for i: 0, dummy.count do dummy.data[i] = i * 5; print_array(dummy); diff --git a/src/onyxchecker.c b/src/onyxchecker.c index b80a4728..0d0dfe16 100644 --- a/src/onyxchecker.c +++ b/src/onyxchecker.c @@ -48,13 +48,15 @@ b32 check_return(AstReturn* retnode) { if (!types_are_compatible(retnode->expr->type, semstate.expected_return_type)) { onyx_report_error(retnode->expr->token->pos, "Expected to return a value of type '%s', returning value of type '%s'.", - type_get_name(retnode->expr->type), - type_get_name(semstate.expected_return_type)); + type_get_name(semstate.expected_return_type), + type_get_name(retnode->expr->type)); return 1; } } else { if (semstate.expected_return_type->Basic.size > 0) { - onyx_report_error(retnode->token->pos, "returning from non-void function without value"); + onyx_report_error(retnode->token->pos, + "Returning from non-void function without value. Expected a value of type '%s'.", + type_get_name(semstate.expected_return_type)); return 1; } } @@ -524,11 +526,11 @@ b32 check_binop_assignment(AstBinaryOp* binop, b32 assignment_is_ok) { if (check_binaryop(&binop_node, 0)) return 1; } - if (!types_are_compatible(binop->left->type, binop->right->type)) { + if (!types_are_compatible(binop->right->type, binop->right->type)) { onyx_report_error(binop->token->pos, "Cannot assign value of type '%s' to a '%s'.", - type_get_name(binop->left->type), - type_get_name(binop->right->type)); + type_get_name(binop->right->type), + type_get_name(binop->left->type)); return 1; } @@ -564,11 +566,19 @@ b32 check_binaryop_compare(AstBinaryOp** pbinop) { return 1; } - if (!types_are_compatible(binop->left->type, binop->right->type)) { + // HACK: Since ^... to rawptr is a one way conversion, strip any pointers + // away so they can be compared as expected + Type* ltype = binop->left->type; + Type* rtype = binop->right->type; + + if (ltype->kind == Type_Kind_Pointer) ltype = &basic_types[Basic_Kind_Rawptr]; + if (rtype->kind == Type_Kind_Pointer) rtype = &basic_types[Basic_Kind_Rawptr]; + + if (!types_are_compatible(ltype, rtype)) { onyx_report_error(binop->token->pos, "Cannot compare '%s' to '%s'.", - type_get_name(binop->left->type), - type_get_name(binop->right->type)); + type_get_name(ltype), + type_get_name(rtype)); return 1; } @@ -770,7 +780,7 @@ b32 check_struct_literal(AstStructLiteral* sl) { if (!types_are_compatible(formal, (*actual)->type)) { onyx_report_error(sl->token->pos, - "Mismatched types for %d%s member, expected '%s, got '%s'.", + "Mismatched types for %d%s member, expected '%s', got '%s'.", i, bh_num_suffix(i), type_get_name(formal), type_get_name((*actual)->type)); diff --git a/src/onyxtypes.c b/src/onyxtypes.c index beade717..040d26bd 100644 --- a/src/onyxtypes.c +++ b/src/onyxtypes.c @@ -134,9 +134,6 @@ b32 types_are_compatible(Type* t1, Type* t2) { return types_are_compatible(t1->Pointer.elem, t2->Pointer.elem); } - if (t2->kind == Type_Kind_Basic && t2->Basic.kind == Basic_Kind_Rawptr) - return 1; - break; } diff --git a/src/onyxutils.c b/src/onyxutils.c index 538cb06f..67d91f72 100644 --- a/src/onyxutils.c +++ b/src/onyxutils.c @@ -445,6 +445,7 @@ AstFunction* polymorphic_proc_lookup(AstPolyProc* pp, PolyProcLookupMethod pp_lo return bh_table_get(AstFunction *, pp->concrete_funcs, key_buf); } + Type* old_return_type = semstate.expected_return_type; semstate.curr_scope = pp->poly_scope; AstFunction* func = (AstFunction *) ast_clone(semstate.node_allocator, pp->base_func); @@ -459,9 +460,11 @@ AstFunction* polymorphic_proc_lookup(AstPolyProc* pp, PolyProcLookupMethod pp_lo has_error: onyx_report_error(pos, "Error in polymorphic procedure generated from this call site."); + semstate.expected_return_type = old_return_type; return NULL; no_errors: + semstate.expected_return_type = old_return_type; bh_arr_push(semstate.other_entities, ((Entity) { .type = Entity_Type_Function_Header, -- 2.25.1