From 2c9546ca555936811901dce4d088c44025988d40 Mon Sep 17 00:00:00 2001 From: pjh456 <147148383@qq.com> Date: Wed, 16 Sep 2026 01:40:31 +0000 Subject: [PATCH] =?UTF-8?q?refactor:=20builtin=20=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E5=8C=96=E5=B9=B6=E6=8B=86=E5=87=BA=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E6=8C=87=E9=92=88=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/oxide_kernel/src/builtin/methods.rs | 140 +++++++++++++++++ .../src/{builtin.rs => builtin/mod.rs} | 146 +----------------- 2 files changed, 146 insertions(+), 140 deletions(-) create mode 100644 crates/oxide_kernel/src/builtin/methods.rs rename crates/oxide_kernel/src/{builtin.rs => builtin/mod.rs} (96%) diff --git a/crates/oxide_kernel/src/builtin/methods.rs b/crates/oxide_kernel/src/builtin/methods.rs new file mode 100644 index 00000000..6a129c0d --- /dev/null +++ b/crates/oxide_kernel/src/builtin/methods.rs @@ -0,0 +1,140 @@ +//! 内置对象方法的 native 函数指针表:由绑定层填充后交给 BuiltinWorld 的 bind 方法安装到构造器/原型上。 +/// Object 静态方法与原型方法的 native 函数指针集合,由 builtin 绑定层填充后交给 +/// [`BuiltinWorld::bind_object_methods`] 安装到对象/原型上。 +pub struct ObjectMethods { + pub keys: *const (), + pub create: *const (), + pub assign: *const (), + pub is: *const (), + pub define_property: *const (), + pub get_own_property_descriptor: *const (), + pub freeze: *const (), + pub seal: *const (), + pub prevent_extensions: *const (), + pub is_frozen: *const (), + pub is_sealed: *const (), + pub is_extensible: *const (), + pub get_own_property_names: *const (), + pub get_own_property_symbols: *const (), + pub define_properties: *const (), + pub from_entries: *const (), + pub get_prototype_of: *const (), + pub has_own: *const (), + pub entries: *const (), + pub values: *const (), + pub has_own_property: *const (), + pub property_is_enumerable: *const (), + pub group_by: *const (), +} + +/// Array 静态方法与原型方法的 native 函数指针集合,由 [`BuiltinWorld::bind_array_methods`] 安装。 +pub struct ArrayMethods { + pub is_array: *const (), + pub from: *const (), + pub of: *const (), + pub push: *const (), + pub pop: *const (), + pub slice: *const (), + pub splice: *const (), + pub concat: *const (), + pub join: *const (), + pub index_of: *const (), + pub includes: *const (), + pub reverse: *const (), + pub for_each: *const (), + pub map: *const (), + pub filter: *const (), + pub reduce: *const (), + pub find: *const (), + pub some: *const (), + pub every: *const (), + pub flat: *const (), + pub flat_map: *const (), + pub shift: *const (), + pub unshift: *const (), + pub fill: *const (), + pub copy_within: *const (), + pub at: *const (), + pub last_index_of: *const (), + pub find_index: *const (), + pub find_last: *const (), + pub reduce_right: *const (), + pub sort: *const (), + pub values: *const (), + pub entries: *const (), + pub keys: *const (), + pub find_last_index: *const (), + pub to_sorted: *const (), + pub to_reversed: *const (), + pub to_spliced: *const (), + pub with_method: *const (), +} + +/// Error 家族(含各子类型)构造器与原型方法的 native 函数指针集合,由 [`BuiltinWorld::bind_error_methods`] 安装。 +pub struct ErrorMethods { + pub error: *const (), + pub type_error: *const (), + pub reference_error: *const (), + pub range_error: *const (), + pub syntax_error: *const (), + pub uri_error: *const (), + pub eval_error: *const (), + pub suppressed_error: *const (), + pub to_string: *const (), + pub stack: *const (), +} + +/// String 静态方法与原型方法的 native 函数指针集合,由 [`BuiltinWorld::bind_string_methods`] 安装。 +pub struct StringMethods { + pub from_char_code: *const (), + pub index_of: *const (), + pub includes: *const (), + pub char_at: *const (), + pub char_code_at: *const (), + pub concat: *const (), + pub slice: *const (), + pub substring: *const (), + pub to_upper_case: *const (), + pub to_lower_case: *const (), + pub trim: *const (), + pub repeat: *const (), + pub pad_start: *const (), + pub pad_end: *const (), + pub starts_with: *const (), + pub ends_with: *const (), + pub split: *const (), + pub replace: *const (), + pub match_fn: *const (), + pub search: *const (), + pub trim_start: *const (), + pub trim_end: *const (), + pub code_point_at: *const (), + pub normalize: *const (), + pub match_all: *const (), + pub replace_all: *const (), + pub value_of: *const (), + pub substr: *const (), + pub at: *const (), + pub last_index_of: *const (), + pub from_code_point: *const (), + pub is_well_formed: *const (), + pub to_well_formed: *const (), + pub from_raw: *const (), +} + +/// RegExp 原型方法的 native 函数指针集合。 +pub struct RegExpMethods { + pub exec: *const (), + pub test: *const (), + pub to_string: *const (), +} + +/// Function 原型方法的 native 函数指针集合,由 [`BuiltinWorld::bind_function_methods`] 安装。 +pub struct FunctionMethods { + pub call: *const (), + pub apply: *const (), + pub bind: *const (), + pub to_string: *const (), + /// `@@hasInstance`(well-known symbol id 6):instanceof 运算符的默认判定。 + pub has_instance: *const (), +} diff --git a/crates/oxide_kernel/src/builtin.rs b/crates/oxide_kernel/src/builtin/mod.rs similarity index 96% rename from crates/oxide_kernel/src/builtin.rs rename to crates/oxide_kernel/src/builtin/mod.rs index 0bf533c3..9f0c5199 100644 --- a/crates/oxide_kernel/src/builtin.rs +++ b/crates/oxide_kernel/src/builtin/mod.rs @@ -1,3 +1,6 @@ +//! 内置对象世界:持有并构造全部内置原型、构造器与全局单例(Math/JSON), +//! 支持按脏标记重建,并提供绑定层的 native 方法指针表。 + use oxide_types::mem::P; use oxide_types::object::{JsObject, NativeFnPtr, PropAttributes}; use oxide_types::private_key::make_well_known_symbol_key; @@ -8,6 +11,9 @@ use crate::kernel_info; use crate::shape_forge::{ShapeForge, EMPTY_SHAPE_ID}; use crate::string_forge::PermInterner; +mod methods; +pub use methods::{ArrayMethods, ErrorMethods, FunctionMethods, ObjectMethods, RegExpMethods, StringMethods}; + #[macro_export] macro_rules! bind_method { ($world:expr, $target:expr, $sf:expr, $sh:expr, $name:literal, $func:expr, $nargs:expr) => {{ @@ -52,146 +58,6 @@ macro_rules! bind_methods_static { }; } -/// Object 静态方法与原型方法的 native 函数指针集合,由 builtin 绑定层填充后交给 -/// [`BuiltinWorld::bind_object_methods`] 安装到对象/原型上。 -pub struct ObjectMethods { - pub keys: *const (), - pub create: *const (), - pub assign: *const (), - pub is: *const (), - pub define_property: *const (), - pub get_own_property_descriptor: *const (), - pub freeze: *const (), - pub seal: *const (), - pub prevent_extensions: *const (), - pub is_frozen: *const (), - pub is_sealed: *const (), - pub is_extensible: *const (), - pub get_own_property_names: *const (), - pub get_own_property_symbols: *const (), - pub define_properties: *const (), - pub from_entries: *const (), - pub get_prototype_of: *const (), - pub has_own: *const (), - pub entries: *const (), - pub values: *const (), - pub has_own_property: *const (), - pub property_is_enumerable: *const (), - pub group_by: *const (), -} - -/// Array 静态方法与原型方法的 native 函数指针集合,由 [`BuiltinWorld::bind_array_methods`] 安装。 -pub struct ArrayMethods { - pub is_array: *const (), - pub from: *const (), - pub of: *const (), - pub push: *const (), - pub pop: *const (), - pub slice: *const (), - pub splice: *const (), - pub concat: *const (), - pub join: *const (), - pub index_of: *const (), - pub includes: *const (), - pub reverse: *const (), - pub for_each: *const (), - pub map: *const (), - pub filter: *const (), - pub reduce: *const (), - pub find: *const (), - pub some: *const (), - pub every: *const (), - pub flat: *const (), - pub flat_map: *const (), - pub shift: *const (), - pub unshift: *const (), - pub fill: *const (), - pub copy_within: *const (), - pub at: *const (), - pub last_index_of: *const (), - pub find_index: *const (), - pub find_last: *const (), - pub reduce_right: *const (), - pub sort: *const (), - pub values: *const (), - pub entries: *const (), - pub keys: *const (), - pub find_last_index: *const (), - pub to_sorted: *const (), - pub to_reversed: *const (), - pub to_spliced: *const (), - pub with_method: *const (), -} - -/// Error 家族(含各子类型)构造器与原型方法的 native 函数指针集合,由 [`BuiltinWorld::bind_error_methods`] 安装。 -pub struct ErrorMethods { - pub error: *const (), - pub type_error: *const (), - pub reference_error: *const (), - pub range_error: *const (), - pub syntax_error: *const (), - pub uri_error: *const (), - pub eval_error: *const (), - pub suppressed_error: *const (), - pub to_string: *const (), - pub stack: *const (), -} - -/// String 静态方法与原型方法的 native 函数指针集合,由 [`BuiltinWorld::bind_string_methods`] 安装。 -pub struct StringMethods { - pub from_char_code: *const (), - pub index_of: *const (), - pub includes: *const (), - pub char_at: *const (), - pub char_code_at: *const (), - pub concat: *const (), - pub slice: *const (), - pub substring: *const (), - pub to_upper_case: *const (), - pub to_lower_case: *const (), - pub trim: *const (), - pub repeat: *const (), - pub pad_start: *const (), - pub pad_end: *const (), - pub starts_with: *const (), - pub ends_with: *const (), - pub split: *const (), - pub replace: *const (), - pub match_fn: *const (), - pub search: *const (), - pub trim_start: *const (), - pub trim_end: *const (), - pub code_point_at: *const (), - pub normalize: *const (), - pub match_all: *const (), - pub replace_all: *const (), - pub value_of: *const (), - pub substr: *const (), - pub at: *const (), - pub last_index_of: *const (), - pub from_code_point: *const (), - pub is_well_formed: *const (), - pub to_well_formed: *const (), - pub from_raw: *const (), -} - -/// RegExp 原型方法的 native 函数指针集合。 -pub struct RegExpMethods { - pub exec: *const (), - pub test: *const (), - pub to_string: *const (), -} - -/// Function 原型方法的 native 函数指针集合,由 [`BuiltinWorld::bind_function_methods`] 安装。 -pub struct FunctionMethods { - pub call: *const (), - pub apply: *const (), - pub bind: *const (), - pub to_string: *const (), - /// `@@hasInstance`(well-known symbol id 6):instanceof 运算符的默认判定。 - pub has_instance: *const (), -} - /// 全部内置对象(原型、构造器、全局单例 Math/JSON、well-known symbol 与 stub 对象)的持有者。 /// /// 每个 session 独立持有自己的 `BuiltinWorld`,保证 session 间内置对象隔离;