refactor: 退役三族挂起快照克隆重写与指针重写死函数

This commit is contained in:
2026-10-02 23:01:13 +00:00
parent ccd6b06b6e
commit 26a46f802b
4 changed files with 1 additions and 406 deletions
-33
View File
@@ -1022,39 +1022,6 @@ pub(crate) fn generator_native_cell_edges(obj: &JsObject) -> Vec<*mut Cell> {
out
}
/// 用转发函数重写状态快照中的所有 JsValue(promote 用)。
#[allow(dead_code)]
pub(crate) fn rewrite_generator_native(obj: &JsObject, mut rewrite: impl FnMut(JsValue) -> JsValue) {
let Some(state) = generator_state_mut(obj) else {
return;
};
state.callee = rewrite(state.callee);
for v in &mut state.args {
*v = rewrite(*v);
}
state.result = rewrite(state.result);
state.suspended.rewrite_values(rewrite);
}
/// 深拷贝状态盒到新对象(promote / sweep 用):新对象持独立 Box,源盒可安全释放。
#[allow(dead_code)]
pub(crate) fn clone_generator_native_with_rewrite(
old: &JsObject, new: &mut JsObject, mut rewrite: impl FnMut(JsValue) -> JsValue,
) {
let Some(state) = generator_state_mut(old) else {
return;
};
let cloned = GeneratorState {
phase: state.phase,
callee: rewrite(state.callee),
args: state.args.iter().copied().map(&mut rewrite).collect(),
this_value: state.this_value,
result: rewrite(state.result),
suspended: state.suspended.clone_with_rewrite(rewrite),
};
new.set_native_data(Box::into_raw(Box::new(cloned)) as *mut u8);
}
/// 只读核算生成器状态盒字节(不释放),供 GC 账目核算。
pub(crate) fn generator_native_size(obj: &JsObject) -> u64 {
if !obj.is_generator_obj() {