diff options
| author | gingerBill <bill@gingerbill.org> | 2022-11-11 11:24:34 +0000 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2022-11-11 11:24:34 +0000 |
| commit | 5d47e2a166ada673ed08784f47120abe2433f742 (patch) | |
| tree | 6d627a5eb4955cde79eaf4d19e741055b0eae6cd /core/runtime | |
| parent | b47548178811860afaffbba0690c644823b72d5e (diff) | |
Change `map_reserve_dynamic` no do anything when current capacity is greater than specified for the reserve
Diffstat (limited to 'core/runtime')
| -rw-r--r-- | core/runtime/core_builtin.odin | 2 | ||||
| -rw-r--r-- | core/runtime/dynamic_map_internal.odin | 4 |
2 files changed, 4 insertions, 2 deletions
diff --git a/core/runtime/core_builtin.odin b/core/runtime/core_builtin.odin index 754316dab..dab177f46 100644 --- a/core/runtime/core_builtin.odin +++ b/core/runtime/core_builtin.odin @@ -300,7 +300,7 @@ shrink_map :: proc(m: ^$T/map[$K]$V, loc := #caller_location) -> (did_shrink: bo delete_key :: proc(m: ^$T/map[$K]$V, key: K) -> (deleted_key: K, deleted_value: V) { if m != nil { key := key - old_k, old_v, ok := map_erase_dynamic((^Raw_Map)(m), map_info(T), uintptr(&key)) + old_k, old_v, ok := map_erase_dynamic((^Raw_Map)(m), map_info(T), uintptr(&key)) if ok { deleted_key = (^K)(old_k)^ deleted_value = (^V)(old_v)^ diff --git a/core/runtime/dynamic_map_internal.odin b/core/runtime/dynamic_map_internal.odin index 303f566ed..007df4365 100644 --- a/core/runtime/dynamic_map_internal.odin +++ b/core/runtime/dynamic_map_internal.odin @@ -442,7 +442,6 @@ map_reserve_dynamic :: proc "odin" (#no_alias m: ^Raw_Map, #no_alias info: ^Map_ } new_capacity := new_capacity - new_capacity = max(new_capacity, uintptr(1)<<MAP_MIN_LOG2_CAPACITY) log2_capacity := map_log2_cap(m^) capacity := uintptr(1) << log2_capacity @@ -450,6 +449,9 @@ map_reserve_dynamic :: proc "odin" (#no_alias m: ^Raw_Map, #no_alias info: ^Map_ if capacity >= new_capacity { return nil } + + new_capacity = max(new_capacity, uintptr(1)<<MAP_MIN_LOG2_CAPACITY) + // ceiling nearest power of two log2_new_capacity := size_of(uintptr) - intrinsics.count_leading_zeros(new_capacity-1) |