rune_alloc/limit/
std.rs
1use core::cell::Cell;
2
3std::thread_local!(static MEMORY: Cell<usize> = const { Cell::new(usize::MAX) });
4
5pub(super) fn rune_memory_take(amount: usize) -> bool {
6 MEMORY.with(|tls| {
7 let v = tls.get();
8
9 if v >= amount {
10 tls.set(v.wrapping_sub(amount));
11 true
12 } else {
13 false
14 }
15 })
16}
17
18pub(super) fn rune_memory_release(amount: usize) {
19 MEMORY.with(|tls| {
20 let v = tls.get();
21 tls.set(v.saturating_add(amount));
22 })
23}
24
25pub(super) fn rune_memory_get() -> usize {
26 MEMORY.with(|tls| tls.get())
27}
28
29pub(super) fn rune_memory_replace(value: usize) -> usize {
30 MEMORY.with(|tls| tls.replace(value))
31}