feat: ArrayBuffer 三访问器与 markImmutable 及 detach 宿主真化

This commit is contained in:
2026-09-22 23:30:18 +00:00
parent ced1a2e43e
commit 7d7a195014
7 changed files with 392 additions and 25 deletions
@@ -58,6 +58,11 @@ pub fn bind_array_buffer(core: &Arc<KernelCore>, session: &KernelSession, global
oxide_builtins::array_buffer::array_buffer_to_string::<crate::vm::Vm> as *const (),
0,
),
(
"markImmutable",
oxide_builtins::array_buffer::array_buffer_mark_immutable::<crate::vm::Vm> as *const (),
0,
),
],
);
@@ -79,6 +84,34 @@ pub fn bind_array_buffer(core: &Arc<KernelCore>, session: &KernelSession, global
oxide_builtins::array_buffer::array_buffer_resizable::<crate::vm::Vm> as *const (),
);
// maxByteLength 原型访问器(set 恒 undefined):detached 回 +0,定长回
// 当前字节数,resizable 回存储态上限 − 1。
bind_accessor_getter(
core,
session,
proto,
"maxByteLength",
oxide_builtins::array_buffer::array_buffer_max_byte_length::<crate::vm::Vm> as *const (),
);
// immutable 原型访问器(set 恒 undefined):读载荷 immutable 标志。
bind_accessor_getter(
core,
session,
proto,
"immutable",
oxide_builtins::array_buffer::array_buffer_immutable::<crate::vm::Vm> as *const (),
);
// detached 原型访问器(set 恒 undefined):读载荷 data 存活位。
bind_accessor_getter(
core,
session,
proto,
"detached",
oxide_builtins::array_buffer::array_buffer_detached::<crate::vm::Vm> as *const (),
);
bind_constructor!(
core,
global,
+5 -3
View File
@@ -57,9 +57,11 @@ pub fn eval_script(vm: &mut Vm, args: &[u8]) -> NativeResult {
}
}
/// `$262.detachArrayBuffer(buf)`:ArrayBuffer detach 未实现,抛能力缺失错误。
pub fn detach_array_buffer(vm: &mut Vm, _args: &[u8]) -> NativeResult {
not_supported(vm, "detachArrayBuffer")
/// `$262.detachArrayBuffer(buf)`:真 detach——品牌守卫后载荷 `data → None`,
/// 返回 undefined。
pub fn detach_array_buffer(vm: &mut Vm, args: &[u8]) -> NativeResult {
let this_val = if args.len() > 1 { vm.reg(args[1]) } else { JsValue::undefined() };
oxide_builtins::array_buffer::detach_array_buffer_native::<Vm>(vm, this_val)
}
/// `$262.createRealm()`:跨 realm 未支持,抛能力缺失错误。