diff --git a/base/runtime/core_builtin.odin b/base/runtime/core_builtin.odin index 82b3eb0de..401dcb857 100644 --- a/base/runtime/core_builtin.odin +++ b/base/runtime/core_builtin.odin @@ -825,16 +825,18 @@ map_insert :: proc(m: ^$T/map[$K]$V, key: K, value: V, loc := #caller_location) } // Explicitly inserts a key and value into a map `m`, the same as `map_insert`, but the return values differ. -// - `prev_key_ptr` will return the previous pointer of a key if it exists, and `nil` otherwise. +// - `prev_key` will return the previous pointer of a key if it exists, check `found_previous` if was previously found // - `value_ptr` will return the pointer of the memory where the insertion happens, and `nil` if the map failed to resize -// - `found_previous` will be true if `prev_key_ptr != nil` -@(require_results) -map_insert_and_check_for_previous :: proc(m: ^$T/map[$K]$V, key: K, value: V, loc := #caller_location) -> (prev_key_ptr: ^K, value_ptr: ^V, found_previous: bool) { +// - `found_previous` will be true a previous key was found +@(builtin, require_results) +map_upsert :: proc(m: ^$T/map[$K]$V, key: K, value: V, loc := #caller_location) -> (prev_key: K, value_ptr: ^V, found_previous: bool) { key, value := key, value kp, vp := __dynamic_map_set_extra_without_hash((^Raw_Map)(m), map_info(T), rawptr(&key), rawptr(&value), loc) - prev_key_ptr = (^K)(kp) - value_ptr = (^V)(vp) - found_previous = kp != nil + if kp != nil { + prev_key = (^K)(kp)^ + found_previous = true + } + value_ptr = (^V)(vp) return } diff --git a/build_odin.sh b/build_odin.sh index 93319b4ef..c53766290 100755 --- a/build_odin.sh +++ b/build_odin.sh @@ -56,7 +56,7 @@ fi case "$OS_NAME" in Darwin) - if [ "$OS_ARCH" == "arm64" ]; then + if [ "$OS_ARCH" = "arm64" ]; then if [ $LLVM_VERSION_MAJOR -lt 13 ] || [ $LLVM_VERSION_MAJOR -gt 17 ]; then error "Darwin Arm64 requires LLVM 13, 14 or 17" fi @@ -101,7 +101,7 @@ build_odin() { EXTRAFLAGS="-O3" ;; release-native) - if [ "$OS_ARCH" == "arm64" ]; then + if [ "$OS_ARCH" = "arm64" ]; then # Use preferred flag for Arm (ie arm64 / aarch64 / etc) EXTRAFLAGS="-O3 -mcpu=native" else