feat: String.raw/groupBy/withResolvers/f16round/__defineGetter__ 低垂果实批量实现

This commit is contained in:
2026-08-22 10:26:00 +08:00
parent d2572682dc
commit c7b54cb181
13 changed files with 591 additions and 4 deletions
+8
View File
@@ -38,5 +38,13 @@ pub fn bind_map(core: &Arc<KernelCore>, session: &KernelSession, global: &mut Js
bind_well_known_method_alias(core, proto, "entries", 0);
bind_accessor_getter(core, session, proto, "size", oxide_builtins::map::map_size::<crate::vm::Vm> as *const ());
// Map.groupBy 静态方法。
apply_binding_table(
session.builtin_world(),
ctor,
core,
&[("groupBy", oxide_builtins::map::map_group_by::<crate::vm::Vm> as *const (), 2)],
);
bind_constructor!(core, global, "Map", ctor_ptr, oxide_builtins::map::map_constructor::<crate::vm::Vm>, 1, hash: true);
}
@@ -52,6 +52,7 @@ pub fn bind_math(core: &Arc<KernelCore>, session: &KernelSession, global: &mut J
("atanh", oxide_builtins::math::math_atanh::<crate::vm::Vm>, 1),
("clz32", oxide_builtins::math::math_clz32::<crate::vm::Vm>, 1),
("expm1", oxide_builtins::math::math_expm1::<crate::vm::Vm>, 1),
("f16round", oxide_builtins::math::math_f16round::<crate::vm::Vm>, 1),
("fround", oxide_builtins::math::math_fround::<crate::vm::Vm>, 1),
("log1p", oxide_builtins::math::math_log1p::<crate::vm::Vm>, 1),
);
+7 -1
View File
@@ -34,6 +34,7 @@ pub fn bind_object(core: &Arc<KernelCore>, session: &KernelSession, global: &mut
has_own_property: oxide_builtins::object::object_proto_has_own_property::<crate::vm::Vm> as *const (),
property_is_enumerable: oxide_builtins::object::object_proto_property_is_enumerable::<crate::vm::Vm>
as *const (),
group_by: oxide_builtins::object::object_group_by::<crate::vm::Vm> as *const (),
};
session
.builtin_world()
@@ -52,10 +53,15 @@ pub fn bind_object(core: &Arc<KernelCore>, session: &KernelSession, global: &mut
0,
),
("valueOf", oxide_builtins::object::object_proto_value_of::<crate::vm::Vm> as *const (), 0),
(
"__defineGetter__",
oxide_builtins::object::object_proto_define_getter::<crate::vm::Vm> as *const (),
2,
),
],
);
// 内置原型方法不可枚举(否则会泄漏进 for-in)。
for name in ["toString", "valueOf"] {
for name in ["toString", "valueOf", "__defineGetter__"] {
let si = core.perm_interner().intern(name).0;
if let Some(pos) = core.shape_forge().lookup_position(object_proto.shape_id(), si) {
object_proto.set_data_meta(pos, PropAttributes::new(true, false, true));
@@ -42,6 +42,7 @@ pub fn bind_string(core: &Arc<KernelCore>, session: &KernelSession, global: &mut
from_code_point: oxide_builtins::string::string_from_code_point::<crate::vm::Vm> as *const (),
is_well_formed: oxide_builtins::string::string_is_well_formed::<crate::vm::Vm> as *const (),
to_well_formed: oxide_builtins::string::string_to_well_formed::<crate::vm::Vm> as *const (),
from_raw: oxide_builtins::string::string_raw::<crate::vm::Vm> as *const (),
};
session.builtin_world().bind_string_methods(
&string_methods,