From 12c8db927b11218de5fa491af9bc28dee392e0a0 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Fri, 26 Aug 2022 16:46:19 +0100 Subject: [PATCH] Remove direct `core:mem` dependency in `core:reflect` --- core/reflect/reflect.odin | 47 +++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/core/reflect/reflect.odin b/core/reflect/reflect.odin index 25d682cb8..07ab94183 100644 --- a/core/reflect/reflect.odin +++ b/core/reflect/reflect.odin @@ -1,7 +1,6 @@ package reflect import "core:runtime" -import "core:mem" import "core:intrinsics" _ :: intrinsics @@ -224,7 +223,7 @@ align_of_typeid :: proc(T: typeid) -> int { as_bytes :: proc(v: any) -> []byte { if v != nil { sz := size_of_typeid(v.id) - return mem.slice_ptr((^byte)(v.data), sz) + return ([^]byte)(v.data)[:sz] } return nil } @@ -266,19 +265,19 @@ length :: proc(val: any) -> int { return a.count case Type_Info_Slice: - return (^mem.Raw_Slice)(val.data).len + return (^runtime.Raw_Slice)(val.data).len case Type_Info_Dynamic_Array: - return (^mem.Raw_Dynamic_Array)(val.data).len + return (^runtime.Raw_Dynamic_Array)(val.data).len case Type_Info_Map: - return (^mem.Raw_Map)(val.data).entries.len + return (^runtime.Raw_Map)(val.data).entries.len case Type_Info_String: if a.is_cstring { return len((^cstring)(val.data)^) } else { - return (^mem.Raw_String)(val.data).len + return (^runtime.Raw_String)(val.data).len } } return 0 @@ -301,10 +300,10 @@ capacity :: proc(val: any) -> int { return a.count case Type_Info_Dynamic_Array: - return (^mem.Raw_Dynamic_Array)(val.data).cap + return (^runtime.Raw_Dynamic_Array)(val.data).cap case Type_Info_Map: - return (^mem.Raw_Map)(val.data).entries.cap + return (^runtime.Raw_Map)(val.data).entries.cap } return 0 } @@ -344,14 +343,14 @@ index :: proc(val: any, i: int, loc := #caller_location) -> any { return any{data, a.elem.id} case Type_Info_Slice: - raw := (^mem.Raw_Slice)(val.data) + raw := (^runtime.Raw_Slice)(val.data) runtime.bounds_check_error_loc(loc, i, raw.len) offset := uintptr(a.elem.size * i) data := rawptr(uintptr(raw.data) + offset) return any{data, a.elem.id} case Type_Info_Dynamic_Array: - raw := (^mem.Raw_Dynamic_Array)(val.data) + raw := (^runtime.Raw_Dynamic_Array)(val.data) runtime.bounds_check_error_loc(loc, i, raw.len) offset := uintptr(a.elem.size * i) data := rawptr(uintptr(raw.data) + offset) @@ -360,7 +359,7 @@ index :: proc(val: any, i: int, loc := #caller_location) -> any { case Type_Info_String: if a.is_cstring { return nil } - raw := (^mem.Raw_String)(val.data) + raw := (^runtime.Raw_String)(val.data) runtime.bounds_check_error_loc(loc, i, raw.len) offset := uintptr(size_of(u8) * i) data := rawptr(uintptr(raw.data) + offset) @@ -837,17 +836,17 @@ set_union_value :: proc(dst: any, value: any) -> bool { ti := runtime.type_info_base(type_info_of(dst.id)) if info, ok := ti.variant.(runtime.Type_Info_Union); ok { if value.id == nil { - mem.zero(dst.data, ti.size) + intrinsics.mem_zero(dst.data, ti.size) return true } if ti.id == runtime.typeid_base(value.id) { - mem.copy(dst.data, value.data, ti.size) + intrinsics.mem_copy(dst.data, value.data, ti.size) return true } if type_info_union_is_pure_maybe(info) { if variant := info.variants[0]; variant.id == value.id { - mem.copy(dst.data, value.data, variant.size) + intrinsics.mem_copy(dst.data, value.data, variant.size) return true } return false @@ -859,7 +858,7 @@ set_union_value :: proc(dst: any, value: any) -> bool { if !info.no_nil { tag += 1 } - mem.copy(dst.data, value.data, variant.size) + intrinsics.mem_copy(dst.data, value.data, variant.size) set_union_variant_raw_tag(dst, tag) return true } @@ -1352,11 +1351,11 @@ as_raw_data :: proc(a: any) -> (value: rawptr, valid: bool) { case Type_Info_Slice: valid = true - value = (^mem.Raw_Slice)(a.data).data + value = (^runtime.Raw_Slice)(a.data).data case Type_Info_Dynamic_Array: valid = true - value = (^mem.Raw_Dynamic_Array)(a.data).data + value = (^runtime.Raw_Dynamic_Array)(a.data).data } return @@ -1398,7 +1397,7 @@ equal :: proc(a, b: any, including_indirect_array_recursion := false, recursion_ } if .Simple_Compare in t.flags { - return mem.compare_byte_ptrs((^byte)(a.data), (^byte)(b.data), t.size) == 0 + return runtime.memory_compare(a.data, b.data, t.size) == 0 } t = runtime.type_info_core(t) @@ -1436,7 +1435,7 @@ equal :: proc(a, b: any, including_indirect_array_recursion := false, recursion_ Type_Info_Relative_Pointer, Type_Info_Soa_Pointer, Type_Info_Matrix: - return mem.compare_byte_ptrs((^byte)(a.data), (^byte)(b.data), t.size) == 0 + return runtime.memory_compare(a.data, b.data, t.size) == 0 case Type_Info_String: if v.is_cstring { @@ -1490,8 +1489,8 @@ equal :: proc(a, b: any, including_indirect_array_recursion := false, recursion_ if !including_indirect_array_recursion { return false } - array_a := (^mem.Raw_Slice)(a.data) - array_b := (^mem.Raw_Slice)(b.data) + array_a := (^runtime.Raw_Slice)(a.data) + array_b := (^runtime.Raw_Slice)(b.data) if array_a.len != array_b.len { return false } @@ -1510,8 +1509,8 @@ equal :: proc(a, b: any, including_indirect_array_recursion := false, recursion_ if !including_indirect_array_recursion { return false } - array_a := (^mem.Raw_Dynamic_Array)(a.data) - array_b := (^mem.Raw_Dynamic_Array)(b.data) + array_a := (^runtime.Raw_Dynamic_Array)(a.data) + array_b := (^runtime.Raw_Dynamic_Array)(b.data) if array_a.len != array_b.len { return false } @@ -1519,7 +1518,7 @@ equal :: proc(a, b: any, including_indirect_array_recursion := false, recursion_ return true } if .Simple_Compare in v.elem.flags { - return mem.compare_byte_ptrs((^byte)(array_a.data), (^byte)(array_b.data), array_a.len * v.elem.size) == 0 + return runtime.memory_compare((^byte)(array_a.data), (^byte)(array_b.data), array_a.len * v.elem.size) == 0 } for i in 0..