mirror of
https://github.com/pjh456/OxideJS.git
synced 2026-10-24 10:41:11 +08:00
feat: 新增 SharedBuffer 共享字节缓冲与核账目
This commit is contained in:
@@ -36,6 +36,9 @@ pub struct KernelCore {
|
||||
/// 内创建满 512 个 Vm 前重建 kernel(重建即计数器归零);test262 runner
|
||||
/// 经 kernel_batch 缺省值(不超 512)满足该约束。
|
||||
realm_counter: AtomicU32,
|
||||
/// 共享字节缓冲账目:存活 `SharedBuffer` 的预分配真实上限之和。
|
||||
/// `SharedBuffer` 构造加、`Drop` 减(同值),供宿主读取共享层内存占用。
|
||||
shared_buffer_bytes: AtomicUsize,
|
||||
}
|
||||
|
||||
impl KernelCore {
|
||||
@@ -66,6 +69,7 @@ impl KernelCore {
|
||||
prop_forge,
|
||||
active_vms: AtomicUsize::new(0),
|
||||
realm_counter: AtomicU32::new(0),
|
||||
shared_buffer_bytes: AtomicUsize::new(0),
|
||||
});
|
||||
kernel_info!("KernelCore initialized: max_cached_modules={}, min_pool={}", max_cached, min_pool);
|
||||
core
|
||||
@@ -196,6 +200,21 @@ impl KernelCore {
|
||||
self.active_vms.load(Ordering::Relaxed)
|
||||
}
|
||||
|
||||
/// 读取存活共享字节缓冲的预分配真实上限之和(字节)。
|
||||
pub fn shared_buffer_bytes(&self) -> usize {
|
||||
self.shared_buffer_bytes.load(Ordering::Relaxed)
|
||||
}
|
||||
|
||||
/// 共享字节缓冲账目加账(`SharedBuffer` 构造调用;单位是预分配真实上限)。
|
||||
pub(crate) fn shared_buffer_bytes_add(&self, bytes: usize) {
|
||||
self.shared_buffer_bytes.fetch_add(bytes, Ordering::Relaxed);
|
||||
}
|
||||
|
||||
/// 共享字节缓冲账目减账(`SharedBuffer` 析构调用;单位是预分配真实上限)。
|
||||
pub(crate) fn shared_buffer_bytes_sub(&self, bytes: usize) {
|
||||
self.shared_buffer_bytes.fetch_sub(bytes, Ordering::Relaxed);
|
||||
}
|
||||
|
||||
/// 分配一个 realm 编号:取计数器当前值后自增,进程内单调递增。
|
||||
///
|
||||
/// 首个 realm 编号为 0(与旧符号编码一致),供 `Realm` 构造时固化。
|
||||
|
||||
Reference in New Issue
Block a user