perf: 数组整数键走独立 si 区间免字符串往返

This commit is contained in:
2026-08-13 17:47:55 +08:00
parent dea4876c94
commit 7f1374a5f1
10 changed files with 199 additions and 60 deletions
+2 -2
View File
@@ -3,7 +3,7 @@ use oxide_types::mem::P;
use oxide_types::object::{JsObject, PropAttributes};
use oxide_types::value::JsValue;
use crate::object::{delete_own_property, walk_own_keys};
use crate::object::{delete_own_property, key_si_to_string, walk_own_keys};
use oxide_runtime_api::{NativeResult, VmHost};
@@ -193,7 +193,7 @@ pub fn reflect_own_keys<H: VmHost>(vm: &mut H, args: &[u8]) -> NativeResult {
let target = unsafe { &*target_ptr };
let key_names: Vec<String> = walk_own_keys(vm, target)
.into_iter()
.map(|(si, _)| vm.kernel_core().perm_interner().lookup(si).unwrap_or("").to_string())
.map(|(si, _)| key_si_to_string(vm, si))
.collect();
NativeResult::Ok(make_string_array(vm, &key_names))
}