perf: 函数调用 bytecode 改 Arc 共享(O(1) 帧切换 + IC 写时复制)

This commit is contained in:
2026-08-10 15:08:51 +08:00
parent 34fb7c8dff
commit 7efb26bc96
12 changed files with 72 additions and 50 deletions
+4 -4
View File
@@ -168,12 +168,12 @@ mod tests {
fn cache_hit_debug_verifies_bytecode() {
let forge = forge(16);
let mut m1 = CompiledModule::new();
m1.bytecode = vec![1, 2, 3];
m1.bytecode = Arc::from(vec![1, 2, 3]);
forge.insert(42, m1);
let _ = forge
.get_or_insert_with(42, || {
let mut m = CompiledModule::new();
m.bytecode = vec![4, 5, 6];
m.bytecode = Arc::from(vec![4, 5, 6]);
Ok(m)
})
.unwrap();
@@ -183,12 +183,12 @@ mod tests {
fn cache_hit_returns_cached_not_recompiled() {
let forge = forge(16);
let mut m = CompiledModule::new();
m.bytecode = vec![1, 2, 3];
m.bytecode = Arc::from(vec![1, 2, 3]);
let cached = forge.insert(99, m);
let result = forge
.get_or_insert_with(99, || {
let mut m = CompiledModule::new();
m.bytecode = vec![1, 2, 3];
m.bytecode = Arc::from(vec![1, 2, 3]);
Ok(m)
})
.unwrap();