aboutsummaryrefslogtreecommitdiff
path: root/core/runtime
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2022-11-11 11:24:34 +0000
committergingerBill <bill@gingerbill.org>2022-11-11 11:24:34 +0000
commit5d47e2a166ada673ed08784f47120abe2433f742 (patch)
tree6d627a5eb4955cde79eaf4d19e741055b0eae6cd /core/runtime
parentb47548178811860afaffbba0690c644823b72d5e (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.odin2
-rw-r--r--core/runtime/dynamic_map_internal.odin4
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)