perf: 数组元素访问 dispatch 内联 fast path + length_si 缓存

GET_PROP_DYNAMIC/SET_PROP_DYNAMIC 开头内联数组元素 fast path:整数键 +
真数组 + 无元素 meta + 界内时直读/直写元素区,免 primitive_property_get /
ordinary_get/set 调用链与 __proto__ 每次 RwLock 查询;越界与有 meta
场景回退原路径(CreateDataProperty + length 扩展 / accessor/hole 协议)。
GET 侧 is_object() 快检先于 checked_object_ptr,保持原始值 receiver
不抛错。length_si 缓存为 Vm 字段(builtin 绑定后取 id,稳定非 0),
普通属性路径 5 处 hot spot 改读缓存,消除每次 intern 的共享锁开销。
This commit is contained in:
2026-08-15 04:58:57 +08:00
parent 63d549aec2
commit ee4a12668f
7 changed files with 222 additions and 16 deletions
+1 -1
View File
@@ -216,7 +216,7 @@ impl Vm {
}
// length:实参个数,可写、不可枚举、可配置。
let length_si = self.kernel_core.perm_interner().intern("length").0;
let length_si = self.length_si;
if let Err(msg) = self.define_data_property(
obj,
length_si,