aboutsummaryrefslogtreecommitdiff
path: root/core/math/big
diff options
context:
space:
mode:
authorJeroen van Rijn <Kelimion@users.noreply.github.com>2026-02-12 18:26:39 +0100
committerGitHub <noreply@github.com>2026-02-12 18:26:39 +0100
commitc9f53fdfd70f9b90c9dfca9d01af482ce121d7c4 (patch)
treeb2a725d684c4da52757591c864828554a919db8d /core/math/big
parent1159110e735ba84d651f4bbc4e9883fd83e9eddc (diff)
parentc0300a33039ab003cbf105c082fe43de4b17ab96 (diff)
Merge pull request #6264 from Kelimion/mem_to_runtime
Replace trivial `core:mem` imports with `base:runtime`.
Diffstat (limited to 'core/math/big')
-rw-r--r--core/math/big/internal.odin23
-rw-r--r--core/math/big/private.odin15
-rw-r--r--core/math/big/radix.odin13
-rw-r--r--core/math/big/radix_os.odin4
4 files changed, 29 insertions, 26 deletions
diff --git a/core/math/big/internal.odin b/core/math/big/internal.odin
index 333fee3ad..02d7b4544 100644
--- a/core/math/big/internal.odin
+++ b/core/math/big/internal.odin
@@ -29,7 +29,7 @@ package math_big
import "base:builtin"
import "base:intrinsics"
-import "core:mem"
+import "base:runtime"
import rnd "core:math/rand"
/*
@@ -989,7 +989,8 @@ internal_int_mod_bits :: proc(remainder, numerator: ^Int, bits: int, allocator :
Zero remainder. Special case, can't use `internal_zero_unused`.
*/
if zero_count > 0 {
- mem.zero_slice(remainder.digit[zero_count:])
+ data := remainder.digit[zero_count:]
+ _zero(data)
}
/*
@@ -1015,7 +1016,7 @@ internal_int_mod_bits :: proc(remainder, numerator: ^Int, bits: int, allocator :
Assumes `a` not to be `nil`.
*/
internal_int_allocated_cap :: #force_inline proc(a: ^Int) -> (cap: int) {
- raw := transmute(mem.Raw_Dynamic_Array)a.digit
+ raw := transmute(runtime.Raw_Dynamic_Array)a.digit
return raw.cap
}
@@ -1845,7 +1846,7 @@ internal_int_destroy :: proc(integers: ..^Int) {
for &a in integers {
if internal_int_allocated_cap(a) > 0 {
- mem.zero_slice(a.digit[:])
+ _zero(a.digit[:])
free(&a.digit[0])
}
a = &Int{}
@@ -2177,7 +2178,7 @@ internal_int_grow :: proc(a: ^Int, digits: int, allow_shrink := false, allocator
If not yet initialized, initialize the `digit` backing with the allocator we were passed.
*/
if cap == 0 {
- mem_err: mem.Allocator_Error
+ mem_err: runtime.Allocator_Error
a.digit, mem_err = make([dynamic]DIGIT, needed, allocator)
if mem_err != nil {
return cast(Error)mem_err
@@ -2208,9 +2209,9 @@ internal_grow :: proc { internal_int_grow, }
Assumes `a` not to be `nil`.
*/
internal_int_clear :: proc(a: ^Int, minimize := false, allocator := context.allocator) -> (err: Error) {
- raw := transmute(mem.Raw_Dynamic_Array)a.digit
+ raw := transmute(runtime.Raw_Dynamic_Array)a.digit
if raw.cap != 0 {
- mem.zero_slice(a.digit[:a.used])
+ _zero(a.digit[:a.used])
}
a.sign = .Zero_or_Positive
a.used = 0
@@ -2273,7 +2274,7 @@ internal_int_power_of_two :: proc(a: ^Int, power: int, allocator := context.allo
/*
Zero the entirety.
*/
- mem.zero_slice(a.digit[:])
+ _zero(a.digit[:])
/*
Set the bit.
@@ -2944,11 +2945,15 @@ internal_int_zero_unused :: #force_inline proc(dest: ^Int, old_used := -1) {
Zero remainder.
*/
if zero_count > 0 && dest.used < len(dest.digit) {
- mem.zero_slice(dest.digit[dest.used:][:zero_count])
+ _zero(dest.digit[dest.used:][:zero_count])
}
}
internal_zero_unused :: proc { internal_int_zero_unused, }
+_zero :: proc(data: []DIGIT) {
+ intrinsics.mem_zero(raw_data(data), size_of(DIGIT)*len(data))
+}
+
/*
========================== End of low-level routines ==========================
*/
diff --git a/core/math/big/private.odin b/core/math/big/private.odin
index caed8c8b9..8cf7a2a77 100644
--- a/core/math/big/private.odin
+++ b/core/math/big/private.odin
@@ -19,7 +19,6 @@ package math_big
*/
import "base:intrinsics"
-import "core:mem"
/*
Multiplies |a| * |b| and only computes upto digs digits of result.
@@ -817,7 +816,7 @@ _private_int_sqr_karatsuba :: proc(dest, src: ^Int, allocator := context.allocat
x1.used = src.used - B
#force_inline internal_copy_digits(x0, src, x0.used)
- #force_inline mem.copy_non_overlapping(&x1.digit[0], &src.digit[B], size_of(DIGIT) * x1.used)
+ intrinsics.mem_copy_non_overlapping(&x1.digit[0], &src.digit[B], size_of(DIGIT) * x1.used)
#force_inline internal_clamp(x0)
/*
@@ -882,9 +881,9 @@ _private_int_sqr_toom :: proc(dest, src: ^Int, allocator := context.allocator) -
a1.used = B
a2.used = src.used - 2 * B
- #force_inline mem.copy_non_overlapping(&a0.digit[0], &src.digit[ 0], size_of(DIGIT) * a0.used)
- #force_inline mem.copy_non_overlapping(&a1.digit[0], &src.digit[ B], size_of(DIGIT) * a1.used)
- #force_inline mem.copy_non_overlapping(&a2.digit[0], &src.digit[2 * B], size_of(DIGIT) * a2.used)
+ intrinsics.mem_copy_non_overlapping(&a0.digit[0], &src.digit[ 0], size_of(DIGIT) * a0.used)
+ intrinsics.mem_copy_non_overlapping(&a1.digit[0], &src.digit[ B], size_of(DIGIT) * a1.used)
+ intrinsics.mem_copy_non_overlapping(&a2.digit[0], &src.digit[2 * B], size_of(DIGIT) * a2.used)
internal_clamp(a0)
internal_clamp(a1)
@@ -2340,7 +2339,7 @@ _private_int_dr_reduce :: proc(x, n: ^Int, k: DIGIT, allocator := context.alloca
/*
Zero words above m.
*/
- mem.zero_slice(x.digit[m + 1:][:x.used - m])
+ _zero(x.digit[m + 1:][:x.used - m])
/*
Clamp, sub and return.
@@ -3137,7 +3136,7 @@ _private_copy_digits :: proc(dest, src: ^Int, digits: int, offset := int(0)) ->
}
digits = min(digits, len(src.digit), len(dest.digit))
- mem.copy_non_overlapping(&dest.digit[0], &src.digit[offset], size_of(DIGIT) * digits)
+ intrinsics.mem_copy_non_overlapping(&dest.digit[0], &src.digit[offset], size_of(DIGIT) * digits)
return nil
}
@@ -3175,7 +3174,7 @@ _private_int_shl_leg :: proc(quotient: ^Int, digits: int, allocator := context.a
}
quotient.used += digits
- mem.zero_slice(quotient.digit[:digits])
+ _zero(quotient.digit[:digits])
return nil
}
diff --git a/core/math/big/radix.odin b/core/math/big/radix.odin
index 0d57bc071..b4f5f875e 100644
--- a/core/math/big/radix.odin
+++ b/core/math/big/radix.odin
@@ -15,8 +15,7 @@ package math_big
- Also look at extracting and splatting several digits at once.
*/
-import "base:intrinsics"
-import "core:mem"
+import "base:intrinsics"
/*
This version of `itoa` allocates on behalf of the caller. The caller must free the string.
@@ -143,7 +142,7 @@ int_itoa_raw :: proc(a: ^Int, radix: i8, buffer: []u8, size := int(-1), zero_ter
written = len(buffer) - available
if written < size {
diff := size - written
- mem.copy(&buffer[0], &buffer[diff], written)
+ intrinsics.mem_copy(&buffer[0], &buffer[diff], written)
}
return written, nil
}
@@ -176,7 +175,7 @@ int_itoa_raw :: proc(a: ^Int, radix: i8, buffer: []u8, size := int(-1), zero_ter
written = len(buffer) - available
if written < size {
diff := size - written
- mem.copy(&buffer[0], &buffer[diff], written)
+ intrinsics.mem_copy(&buffer[0], &buffer[diff], written)
}
return written, nil
}
@@ -217,7 +216,7 @@ int_itoa_raw :: proc(a: ^Int, radix: i8, buffer: []u8, size := int(-1), zero_ter
written = len(buffer) - available
if written < size {
diff := size - written
- mem.copy(&buffer[0], &buffer[diff], written)
+ intrinsics.mem_copy(&buffer[0], &buffer[diff], written)
}
return written, nil
}
@@ -640,7 +639,7 @@ _itoa_raw_full :: proc(a: ^Int, radix: i8, buffer: []u8, zero_terminate := false
written = len(buffer) - available
if written < len(buffer) {
diff := len(buffer) - written
- mem.copy(&buffer[0], &buffer[diff], written)
+ intrinsics.mem_copy(&buffer[0], &buffer[diff], written)
}
return written, nil
}
@@ -688,7 +687,7 @@ _itoa_raw_old :: proc(a: ^Int, radix: i8, buffer: []u8, zero_terminate := false,
written = len(buffer) - available
if written < len(buffer) {
diff := len(buffer) - written
- mem.copy(&buffer[0], &buffer[diff], written)
+ intrinsics.mem_copy(&buffer[0], &buffer[diff], written)
}
return written, nil
} \ No newline at end of file
diff --git a/core/math/big/radix_os.odin b/core/math/big/radix_os.odin
index 50454b679..793a6c88a 100644
--- a/core/math/big/radix_os.odin
+++ b/core/math/big/radix_os.odin
@@ -17,7 +17,7 @@ package math_big
- Also look at extracting and splatting several digits at once.
*/
-import "core:mem"
+import "base:runtime"
import "core:os"
/*
@@ -69,7 +69,7 @@ internal_int_write_to_ascii_file :: proc(a: ^Int, filename: string, radix := i8(
l := len(as)
assert(l > 0)
- data := transmute([]u8)mem.Raw_Slice{
+ data := transmute([]u8)runtime.Raw_Slice{
data = raw_data(as),
len = l,
}