feat: 提取 oxide_builtins 独立 crate,泛型化 <H: VmHost>
This commit is contained in:
@@ -8,36 +8,36 @@ use crate::bind_constructor;
|
||||
|
||||
pub fn bind_array(core: &Arc<KernelCore>, session: &KernelSession, global: &mut JsObject) {
|
||||
let _array_methods = ArrayMethods {
|
||||
is_array: crate::builtins::array::array_is_array as *const (),
|
||||
push: crate::builtins::array::array_push as *const (),
|
||||
pop: crate::builtins::array::array_pop as *const (),
|
||||
slice: crate::builtins::array::array_slice as *const (),
|
||||
splice: crate::builtins::array::array_splice as *const (),
|
||||
concat: crate::builtins::array::array_concat as *const (),
|
||||
join: crate::builtins::array::array_join as *const (),
|
||||
index_of: crate::builtins::array::array_index_of as *const (),
|
||||
includes: crate::builtins::array::array_includes as *const (),
|
||||
reverse: crate::builtins::array::array_reverse as *const (),
|
||||
for_each: crate::builtins::array::array_for_each as *const (),
|
||||
map: crate::builtins::array::array_map as *const (),
|
||||
filter: crate::builtins::array::array_filter as *const (),
|
||||
reduce: crate::builtins::array::array_reduce as *const (),
|
||||
find: crate::builtins::array::array_find as *const (),
|
||||
some: crate::builtins::array::array_some as *const (),
|
||||
every: crate::builtins::array::array_every as *const (),
|
||||
flat: crate::builtins::array::array_flat as *const (),
|
||||
flat_map: crate::builtins::array::array_flat_map as *const (),
|
||||
shift: crate::builtins::array::array_shift as *const (),
|
||||
unshift: crate::builtins::array::array_unshift as *const (),
|
||||
fill: crate::builtins::array::array_fill as *const (),
|
||||
copy_within: crate::builtins::array::array_copy_within as *const (),
|
||||
at: crate::builtins::array::array_at as *const (),
|
||||
last_index_of: crate::builtins::array::array_last_index_of as *const (),
|
||||
find_index: crate::builtins::array::array_find_index as *const (),
|
||||
find_last: crate::builtins::array::array_find_last as *const (),
|
||||
reduce_right: crate::builtins::array::array_reduce_right as *const (),
|
||||
sort: crate::builtins::array::array_sort as *const (),
|
||||
values: crate::builtins::array::array_values as *const (),
|
||||
is_array: oxide_builtins::array::array_is_array::<crate::vm::Vm> as *const (),
|
||||
push: oxide_builtins::array::array_push::<crate::vm::Vm> as *const (),
|
||||
pop: oxide_builtins::array::array_pop::<crate::vm::Vm> as *const (),
|
||||
slice: oxide_builtins::array::array_slice::<crate::vm::Vm> as *const (),
|
||||
splice: oxide_builtins::array::array_splice::<crate::vm::Vm> as *const (),
|
||||
concat: oxide_builtins::array::array_concat::<crate::vm::Vm> as *const (),
|
||||
join: oxide_builtins::array::array_join::<crate::vm::Vm> as *const (),
|
||||
index_of: oxide_builtins::array::array_index_of::<crate::vm::Vm> as *const (),
|
||||
includes: oxide_builtins::array::array_includes::<crate::vm::Vm> as *const (),
|
||||
reverse: oxide_builtins::array::array_reverse::<crate::vm::Vm> as *const (),
|
||||
for_each: oxide_builtins::array::array_for_each::<crate::vm::Vm> as *const (),
|
||||
map: oxide_builtins::array::array_map::<crate::vm::Vm> as *const (),
|
||||
filter: oxide_builtins::array::array_filter::<crate::vm::Vm> as *const (),
|
||||
reduce: oxide_builtins::array::array_reduce::<crate::vm::Vm> as *const (),
|
||||
find: oxide_builtins::array::array_find::<crate::vm::Vm> as *const (),
|
||||
some: oxide_builtins::array::array_some::<crate::vm::Vm> as *const (),
|
||||
every: oxide_builtins::array::array_every::<crate::vm::Vm> as *const (),
|
||||
flat: oxide_builtins::array::array_flat::<crate::vm::Vm> as *const (),
|
||||
flat_map: oxide_builtins::array::array_flat_map::<crate::vm::Vm> as *const (),
|
||||
shift: oxide_builtins::array::array_shift::<crate::vm::Vm> as *const (),
|
||||
unshift: oxide_builtins::array::array_unshift::<crate::vm::Vm> as *const (),
|
||||
fill: oxide_builtins::array::array_fill::<crate::vm::Vm> as *const (),
|
||||
copy_within: oxide_builtins::array::array_copy_within::<crate::vm::Vm> as *const (),
|
||||
at: oxide_builtins::array::array_at::<crate::vm::Vm> as *const (),
|
||||
last_index_of: oxide_builtins::array::array_last_index_of::<crate::vm::Vm> as *const (),
|
||||
find_index: oxide_builtins::array::array_find_index::<crate::vm::Vm> as *const (),
|
||||
find_last: oxide_builtins::array::array_find_last::<crate::vm::Vm> as *const (),
|
||||
reduce_right: oxide_builtins::array::array_reduce_right::<crate::vm::Vm> as *const (),
|
||||
sort: oxide_builtins::array::array_sort::<crate::vm::Vm> as *const (),
|
||||
values: oxide_builtins::array::array_values::<crate::vm::Vm> as *const (),
|
||||
};
|
||||
|
||||
session.builtin_world().bind_array_methods(
|
||||
@@ -47,5 +47,5 @@ pub fn bind_array(core: &Arc<KernelCore>, session: &KernelSession, global: &mut
|
||||
);
|
||||
|
||||
let ctor_ptr = session.builtin_world().array_constructor.as_ptr() as *mut JsObject;
|
||||
bind_constructor!(core, global, "Array", ctor_ptr, crate::builtins::array::array_constructor, 1, hash: true);
|
||||
bind_constructor!(core, global, "Array", ctor_ptr, oxide_builtins::array::array_constructor::<crate::vm::Vm>, 1, hash: true);
|
||||
}
|
||||
|
||||
@@ -11,13 +11,21 @@ pub fn bind_array_buffer(core: &Arc<KernelCore>, session: &KernelSession, global
|
||||
let proto_ptr = session.builtin_world().array_buffer_proto.as_ptr() as *mut JsObject;
|
||||
let proto = unsafe { &mut *proto_ptr };
|
||||
|
||||
configure_native_constructor(ctor, crate::builtins::array_buffer::array_buffer_constructor as *const (), 1);
|
||||
configure_native_constructor(
|
||||
ctor,
|
||||
oxide_builtins::array_buffer::array_buffer_constructor::<crate::vm::Vm> as *const (),
|
||||
1,
|
||||
);
|
||||
|
||||
apply_binding_table(
|
||||
session.builtin_world(),
|
||||
ctor,
|
||||
core,
|
||||
&[("isView", crate::builtins::array_buffer::array_buffer_is_view as *const (), 1)],
|
||||
&[(
|
||||
"isView",
|
||||
oxide_builtins::array_buffer::array_buffer_is_view::<crate::vm::Vm> as *const (),
|
||||
1,
|
||||
)],
|
||||
);
|
||||
|
||||
apply_binding_table(
|
||||
@@ -25,9 +33,17 @@ pub fn bind_array_buffer(core: &Arc<KernelCore>, session: &KernelSession, global
|
||||
proto,
|
||||
core,
|
||||
&[
|
||||
("byteLength", crate::builtins::array_buffer::array_buffer_byte_length as *const (), 0),
|
||||
("slice", crate::builtins::array_buffer::array_buffer_slice as *const (), 2),
|
||||
("toString", crate::builtins::array_buffer::array_buffer_to_string as *const (), 0),
|
||||
(
|
||||
"byteLength",
|
||||
oxide_builtins::array_buffer::array_buffer_byte_length::<crate::vm::Vm> as *const (),
|
||||
0,
|
||||
),
|
||||
("slice", oxide_builtins::array_buffer::array_buffer_slice::<crate::vm::Vm> as *const (), 2),
|
||||
(
|
||||
"toString",
|
||||
oxide_builtins::array_buffer::array_buffer_to_string::<crate::vm::Vm> as *const (),
|
||||
0,
|
||||
),
|
||||
],
|
||||
);
|
||||
|
||||
@@ -36,7 +52,7 @@ pub fn bind_array_buffer(core: &Arc<KernelCore>, session: &KernelSession, global
|
||||
global,
|
||||
"ArrayBuffer",
|
||||
ctor_ptr,
|
||||
crate::builtins::array_buffer::array_buffer_constructor,
|
||||
oxide_builtins::array_buffer::array_buffer_constructor::<crate::vm::Vm>,
|
||||
1,
|
||||
hash: true
|
||||
);
|
||||
|
||||
@@ -11,17 +11,25 @@ pub fn bind_boolean(core: &Arc<KernelCore>, session: &KernelSession, global: &mu
|
||||
let proto_ptr = session.builtin_world().boolean_proto.as_ptr() as *mut JsObject;
|
||||
let proto = unsafe { &mut *proto_ptr };
|
||||
|
||||
configure_native_constructor(ctor, crate::builtins::boolean::boolean_constructor as *const (), 1);
|
||||
configure_native_constructor(ctor, oxide_builtins::boolean::boolean_constructor::<crate::vm::Vm> as *const (), 1);
|
||||
|
||||
apply_binding_table(
|
||||
session.builtin_world(),
|
||||
proto,
|
||||
core,
|
||||
&[
|
||||
("valueOf", crate::builtins::boolean::boolean_prototype_value_of as *const (), 0),
|
||||
("toString", crate::builtins::boolean::boolean_prototype_to_string as *const (), 0),
|
||||
(
|
||||
"valueOf",
|
||||
oxide_builtins::boolean::boolean_prototype_value_of::<crate::vm::Vm> as *const (),
|
||||
0,
|
||||
),
|
||||
(
|
||||
"toString",
|
||||
oxide_builtins::boolean::boolean_prototype_to_string::<crate::vm::Vm> as *const (),
|
||||
0,
|
||||
),
|
||||
],
|
||||
);
|
||||
|
||||
bind_constructor!(core, global, "Boolean", ctor_ptr, crate::builtins::boolean::boolean_constructor, 1, hash: true);
|
||||
bind_constructor!(core, global, "Boolean", ctor_ptr, oxide_builtins::boolean::boolean_constructor::<crate::vm::Vm>, 1, hash: true);
|
||||
}
|
||||
|
||||
@@ -11,36 +11,116 @@ pub fn bind_data_view(core: &Arc<KernelCore>, session: &KernelSession, global: &
|
||||
let proto_ptr = session.builtin_world().data_view_proto.as_ptr() as *mut JsObject;
|
||||
let proto = unsafe { &mut *proto_ptr };
|
||||
|
||||
configure_native_constructor(ctor, crate::builtins::data_view::data_view_constructor as *const (), 3);
|
||||
configure_native_constructor(
|
||||
ctor,
|
||||
oxide_builtins::data_view::data_view_constructor::<crate::vm::Vm> as *const (),
|
||||
3,
|
||||
);
|
||||
|
||||
apply_binding_table(
|
||||
session.builtin_world(),
|
||||
proto,
|
||||
core,
|
||||
&[
|
||||
("getInt8", crate::builtins::data_view::data_view_get_int8 as *const (), 1),
|
||||
("getUint8", crate::builtins::data_view::data_view_get_uint8 as *const (), 1),
|
||||
("getInt16", crate::builtins::data_view::data_view_get_int16 as *const (), 2),
|
||||
("getUint16", crate::builtins::data_view::data_view_get_uint16 as *const (), 2),
|
||||
("getInt32", crate::builtins::data_view::data_view_get_int32 as *const (), 2),
|
||||
("getUint32", crate::builtins::data_view::data_view_get_uint32 as *const (), 2),
|
||||
("getFloat32", crate::builtins::data_view::data_view_get_float32 as *const (), 2),
|
||||
("getFloat64", crate::builtins::data_view::data_view_get_float64 as *const (), 2),
|
||||
("getBigInt64", crate::builtins::data_view::data_view_get_big_int64 as *const (), 2),
|
||||
("getBigUint64", crate::builtins::data_view::data_view_get_big_uint64 as *const (), 2),
|
||||
("setInt8", crate::builtins::data_view::data_view_set_int8 as *const (), 2),
|
||||
("setUint8", crate::builtins::data_view::data_view_set_uint8 as *const (), 2),
|
||||
("setInt16", crate::builtins::data_view::data_view_set_int16 as *const (), 3),
|
||||
("setUint16", crate::builtins::data_view::data_view_set_uint16 as *const (), 3),
|
||||
("setInt32", crate::builtins::data_view::data_view_set_int32 as *const (), 3),
|
||||
("setUint32", crate::builtins::data_view::data_view_set_uint32 as *const (), 3),
|
||||
("setFloat32", crate::builtins::data_view::data_view_set_float32 as *const (), 3),
|
||||
("setFloat64", crate::builtins::data_view::data_view_set_float64 as *const (), 3),
|
||||
("setBigInt64", crate::builtins::data_view::data_view_set_big_int64 as *const (), 3),
|
||||
("setBigUint64", crate::builtins::data_view::data_view_set_big_uint64 as *const (), 3),
|
||||
("toString", crate::builtins::data_view::data_view_to_string as *const (), 0),
|
||||
("getInt8", oxide_builtins::data_view::data_view_get_int8::<crate::vm::Vm> as *const (), 1),
|
||||
(
|
||||
"getUint8",
|
||||
oxide_builtins::data_view::data_view_get_uint8::<crate::vm::Vm> as *const (),
|
||||
1,
|
||||
),
|
||||
(
|
||||
"getInt16",
|
||||
oxide_builtins::data_view::data_view_get_int16::<crate::vm::Vm> as *const (),
|
||||
2,
|
||||
),
|
||||
(
|
||||
"getUint16",
|
||||
oxide_builtins::data_view::data_view_get_uint16::<crate::vm::Vm> as *const (),
|
||||
2,
|
||||
),
|
||||
(
|
||||
"getInt32",
|
||||
oxide_builtins::data_view::data_view_get_int32::<crate::vm::Vm> as *const (),
|
||||
2,
|
||||
),
|
||||
(
|
||||
"getUint32",
|
||||
oxide_builtins::data_view::data_view_get_uint32::<crate::vm::Vm> as *const (),
|
||||
2,
|
||||
),
|
||||
(
|
||||
"getFloat32",
|
||||
oxide_builtins::data_view::data_view_get_float32::<crate::vm::Vm> as *const (),
|
||||
2,
|
||||
),
|
||||
(
|
||||
"getFloat64",
|
||||
oxide_builtins::data_view::data_view_get_float64::<crate::vm::Vm> as *const (),
|
||||
2,
|
||||
),
|
||||
(
|
||||
"getBigInt64",
|
||||
oxide_builtins::data_view::data_view_get_big_int64::<crate::vm::Vm> as *const (),
|
||||
2,
|
||||
),
|
||||
(
|
||||
"getBigUint64",
|
||||
oxide_builtins::data_view::data_view_get_big_uint64::<crate::vm::Vm> as *const (),
|
||||
2,
|
||||
),
|
||||
("setInt8", oxide_builtins::data_view::data_view_set_int8::<crate::vm::Vm> as *const (), 2),
|
||||
(
|
||||
"setUint8",
|
||||
oxide_builtins::data_view::data_view_set_uint8::<crate::vm::Vm> as *const (),
|
||||
2,
|
||||
),
|
||||
(
|
||||
"setInt16",
|
||||
oxide_builtins::data_view::data_view_set_int16::<crate::vm::Vm> as *const (),
|
||||
3,
|
||||
),
|
||||
(
|
||||
"setUint16",
|
||||
oxide_builtins::data_view::data_view_set_uint16::<crate::vm::Vm> as *const (),
|
||||
3,
|
||||
),
|
||||
(
|
||||
"setInt32",
|
||||
oxide_builtins::data_view::data_view_set_int32::<crate::vm::Vm> as *const (),
|
||||
3,
|
||||
),
|
||||
(
|
||||
"setUint32",
|
||||
oxide_builtins::data_view::data_view_set_uint32::<crate::vm::Vm> as *const (),
|
||||
3,
|
||||
),
|
||||
(
|
||||
"setFloat32",
|
||||
oxide_builtins::data_view::data_view_set_float32::<crate::vm::Vm> as *const (),
|
||||
3,
|
||||
),
|
||||
(
|
||||
"setFloat64",
|
||||
oxide_builtins::data_view::data_view_set_float64::<crate::vm::Vm> as *const (),
|
||||
3,
|
||||
),
|
||||
(
|
||||
"setBigInt64",
|
||||
oxide_builtins::data_view::data_view_set_big_int64::<crate::vm::Vm> as *const (),
|
||||
3,
|
||||
),
|
||||
(
|
||||
"setBigUint64",
|
||||
oxide_builtins::data_view::data_view_set_big_uint64::<crate::vm::Vm> as *const (),
|
||||
3,
|
||||
),
|
||||
(
|
||||
"toString",
|
||||
oxide_builtins::data_view::data_view_to_string::<crate::vm::Vm> as *const (),
|
||||
0,
|
||||
),
|
||||
],
|
||||
);
|
||||
|
||||
bind_constructor!(core, global, "DataView", ctor_ptr, crate::builtins::data_view::data_view_constructor, 3, hash: true);
|
||||
bind_constructor!(core, global, "DataView", ctor_ptr, oxide_builtins::data_view::data_view_constructor::<crate::vm::Vm>, 3, hash: true);
|
||||
}
|
||||
|
||||
@@ -11,16 +11,16 @@ pub fn bind_date(core: &Arc<KernelCore>, session: &KernelSession, global: &mut J
|
||||
let proto_ptr = session.builtin_world().date_proto.as_ptr() as *mut JsObject;
|
||||
let proto = unsafe { &mut *proto_ptr };
|
||||
|
||||
configure_native_constructor(ctor, crate::builtins::date::date_constructor as *const (), 7);
|
||||
configure_native_constructor(ctor, oxide_builtins::date::date_constructor::<crate::vm::Vm> as *const (), 7);
|
||||
|
||||
apply_binding_table(
|
||||
session.builtin_world(),
|
||||
ctor,
|
||||
core,
|
||||
&[
|
||||
("now", crate::builtins::date::date_now as *const (), 0),
|
||||
("parse", crate::builtins::date::date_parse as *const (), 1),
|
||||
("UTC", crate::builtins::date::date_utc as *const (), 7),
|
||||
("now", oxide_builtins::date::date_now::<crate::vm::Vm> as *const (), 0),
|
||||
("parse", oxide_builtins::date::date_parse::<crate::vm::Vm> as *const (), 1),
|
||||
("UTC", oxide_builtins::date::date_utc::<crate::vm::Vm> as *const (), 7),
|
||||
],
|
||||
);
|
||||
|
||||
@@ -29,39 +29,67 @@ pub fn bind_date(core: &Arc<KernelCore>, session: &KernelSession, global: &mut J
|
||||
proto,
|
||||
core,
|
||||
&[
|
||||
("getTime", crate::builtins::date::date_get_time as *const (), 0),
|
||||
("getFullYear", crate::builtins::date::date_get_full_year as *const (), 0),
|
||||
("getMonth", crate::builtins::date::date_get_month as *const (), 0),
|
||||
("getDate", crate::builtins::date::date_get_date as *const (), 0),
|
||||
("getDay", crate::builtins::date::date_get_day as *const (), 0),
|
||||
("getHours", crate::builtins::date::date_get_hours as *const (), 0),
|
||||
("getMinutes", crate::builtins::date::date_get_minutes as *const (), 0),
|
||||
("getSeconds", crate::builtins::date::date_get_seconds as *const (), 0),
|
||||
("getMilliseconds", crate::builtins::date::date_get_milliseconds as *const (), 0),
|
||||
("getUTCFullYear", crate::builtins::date::date_get_utc_full_year as *const (), 0),
|
||||
("getUTCMonth", crate::builtins::date::date_get_utc_month as *const (), 0),
|
||||
("getUTCDate", crate::builtins::date::date_get_utc_date as *const (), 0),
|
||||
("getUTCDay", crate::builtins::date::date_get_utc_day as *const (), 0),
|
||||
("getUTCHours", crate::builtins::date::date_get_utc_hours as *const (), 0),
|
||||
("getUTCMinutes", crate::builtins::date::date_get_utc_minutes as *const (), 0),
|
||||
("getUTCSeconds", crate::builtins::date::date_get_utc_seconds as *const (), 0),
|
||||
("getUTCMilliseconds", crate::builtins::date::date_get_utc_milliseconds as *const (), 0),
|
||||
("getTimezoneOffset", crate::builtins::date::date_get_timezone_offset as *const (), 0),
|
||||
("setTime", crate::builtins::date::date_set_time as *const (), 1),
|
||||
("setFullYear", crate::builtins::date::date_set_full_year as *const (), 3),
|
||||
("setMonth", crate::builtins::date::date_set_month as *const (), 2),
|
||||
("setDate", crate::builtins::date::date_set_date as *const (), 1),
|
||||
("setHours", crate::builtins::date::date_set_hours as *const (), 4),
|
||||
("setMinutes", crate::builtins::date::date_set_minutes as *const (), 3),
|
||||
("setSeconds", crate::builtins::date::date_set_seconds as *const (), 2),
|
||||
("setMilliseconds", crate::builtins::date::date_set_milliseconds as *const (), 1),
|
||||
("toISOString", crate::builtins::date::date_to_iso_string as *const (), 0),
|
||||
("toJSON", crate::builtins::date::date_to_json as *const (), 1),
|
||||
("toString", crate::builtins::date::date_to_string as *const (), 0),
|
||||
("toDateString", crate::builtins::date::date_to_date_string as *const (), 0),
|
||||
("toTimeString", crate::builtins::date::date_to_time_string as *const (), 0),
|
||||
("toUTCString", crate::builtins::date::date_to_utc_string as *const (), 0),
|
||||
("valueOf", crate::builtins::date::date_value_of as *const (), 0),
|
||||
("getTime", oxide_builtins::date::date_get_time::<crate::vm::Vm> as *const (), 0),
|
||||
("getFullYear", oxide_builtins::date::date_get_full_year::<crate::vm::Vm> as *const (), 0),
|
||||
("getMonth", oxide_builtins::date::date_get_month::<crate::vm::Vm> as *const (), 0),
|
||||
("getDate", oxide_builtins::date::date_get_date::<crate::vm::Vm> as *const (), 0),
|
||||
("getDay", oxide_builtins::date::date_get_day::<crate::vm::Vm> as *const (), 0),
|
||||
("getHours", oxide_builtins::date::date_get_hours::<crate::vm::Vm> as *const (), 0),
|
||||
("getMinutes", oxide_builtins::date::date_get_minutes::<crate::vm::Vm> as *const (), 0),
|
||||
("getSeconds", oxide_builtins::date::date_get_seconds::<crate::vm::Vm> as *const (), 0),
|
||||
(
|
||||
"getMilliseconds",
|
||||
oxide_builtins::date::date_get_milliseconds::<crate::vm::Vm> as *const (),
|
||||
0,
|
||||
),
|
||||
(
|
||||
"getUTCFullYear",
|
||||
oxide_builtins::date::date_get_utc_full_year::<crate::vm::Vm> as *const (),
|
||||
0,
|
||||
),
|
||||
("getUTCMonth", oxide_builtins::date::date_get_utc_month::<crate::vm::Vm> as *const (), 0),
|
||||
("getUTCDate", oxide_builtins::date::date_get_utc_date::<crate::vm::Vm> as *const (), 0),
|
||||
("getUTCDay", oxide_builtins::date::date_get_utc_day::<crate::vm::Vm> as *const (), 0),
|
||||
("getUTCHours", oxide_builtins::date::date_get_utc_hours::<crate::vm::Vm> as *const (), 0),
|
||||
(
|
||||
"getUTCMinutes",
|
||||
oxide_builtins::date::date_get_utc_minutes::<crate::vm::Vm> as *const (),
|
||||
0,
|
||||
),
|
||||
(
|
||||
"getUTCSeconds",
|
||||
oxide_builtins::date::date_get_utc_seconds::<crate::vm::Vm> as *const (),
|
||||
0,
|
||||
),
|
||||
(
|
||||
"getUTCMilliseconds",
|
||||
oxide_builtins::date::date_get_utc_milliseconds::<crate::vm::Vm> as *const (),
|
||||
0,
|
||||
),
|
||||
(
|
||||
"getTimezoneOffset",
|
||||
oxide_builtins::date::date_get_timezone_offset::<crate::vm::Vm> as *const (),
|
||||
0,
|
||||
),
|
||||
("setTime", oxide_builtins::date::date_set_time::<crate::vm::Vm> as *const (), 1),
|
||||
("setFullYear", oxide_builtins::date::date_set_full_year::<crate::vm::Vm> as *const (), 3),
|
||||
("setMonth", oxide_builtins::date::date_set_month::<crate::vm::Vm> as *const (), 2),
|
||||
("setDate", oxide_builtins::date::date_set_date::<crate::vm::Vm> as *const (), 1),
|
||||
("setHours", oxide_builtins::date::date_set_hours::<crate::vm::Vm> as *const (), 4),
|
||||
("setMinutes", oxide_builtins::date::date_set_minutes::<crate::vm::Vm> as *const (), 3),
|
||||
("setSeconds", oxide_builtins::date::date_set_seconds::<crate::vm::Vm> as *const (), 2),
|
||||
(
|
||||
"setMilliseconds",
|
||||
oxide_builtins::date::date_set_milliseconds::<crate::vm::Vm> as *const (),
|
||||
1,
|
||||
),
|
||||
("toISOString", oxide_builtins::date::date_to_iso_string::<crate::vm::Vm> as *const (), 0),
|
||||
("toJSON", oxide_builtins::date::date_to_json::<crate::vm::Vm> as *const (), 1),
|
||||
("toString", oxide_builtins::date::date_to_string::<crate::vm::Vm> as *const (), 0),
|
||||
("toDateString", oxide_builtins::date::date_to_date_string::<crate::vm::Vm> as *const (), 0),
|
||||
("toTimeString", oxide_builtins::date::date_to_time_string::<crate::vm::Vm> as *const (), 0),
|
||||
("toUTCString", oxide_builtins::date::date_to_utc_string::<crate::vm::Vm> as *const (), 0),
|
||||
("valueOf", oxide_builtins::date::date_value_of::<crate::vm::Vm> as *const (), 0),
|
||||
],
|
||||
);
|
||||
|
||||
|
||||
@@ -45,15 +45,15 @@ fn bind_error_subtype_constructor(
|
||||
|
||||
pub fn bind_error(core: &Arc<KernelCore>, session: &KernelSession, global: &mut JsObject) {
|
||||
let error_methods = ErrorMethods {
|
||||
error: crate::builtins::error::error_constructor as *const (),
|
||||
type_error: crate::builtins::error::type_error_constructor as *const (),
|
||||
reference_error: crate::builtins::error::reference_error_constructor as *const (),
|
||||
range_error: crate::builtins::error::range_error_constructor as *const (),
|
||||
syntax_error: crate::builtins::error::syntax_error_constructor as *const (),
|
||||
uri_error: crate::builtins::error::uri_error_constructor as *const (),
|
||||
eval_error: crate::builtins::error::eval_error_constructor as *const (),
|
||||
to_string: crate::builtins::error::error_to_string as *const (),
|
||||
stack: crate::builtins::error::error_stack_getter as *const (),
|
||||
error: oxide_builtins::error::error_constructor::<crate::vm::Vm> as *const (),
|
||||
type_error: oxide_builtins::error::type_error_constructor::<crate::vm::Vm> as *const (),
|
||||
reference_error: oxide_builtins::error::reference_error_constructor::<crate::vm::Vm> as *const (),
|
||||
range_error: oxide_builtins::error::range_error_constructor::<crate::vm::Vm> as *const (),
|
||||
syntax_error: oxide_builtins::error::syntax_error_constructor::<crate::vm::Vm> as *const (),
|
||||
uri_error: oxide_builtins::error::uri_error_constructor::<crate::vm::Vm> as *const (),
|
||||
eval_error: oxide_builtins::error::eval_error_constructor::<crate::vm::Vm> as *const (),
|
||||
to_string: oxide_builtins::error::error_to_string::<crate::vm::Vm> as *const (),
|
||||
stack: oxide_builtins::error::error_stack_getter::<crate::vm::Vm> as *const (),
|
||||
};
|
||||
session.builtin_world().bind_error_methods(
|
||||
&error_methods,
|
||||
@@ -74,7 +74,7 @@ pub fn bind_error(core: &Arc<KernelCore>, session: &KernelSession, global: &mut
|
||||
global,
|
||||
"TypeError",
|
||||
session.builtin_world().type_error_proto.as_ptr() as *mut JsObject,
|
||||
crate::builtins::error::type_error_constructor as *const (),
|
||||
oxide_builtins::error::type_error_constructor::<crate::vm::Vm> as *const (),
|
||||
);
|
||||
bind_error_subtype_constructor(
|
||||
core,
|
||||
@@ -82,7 +82,7 @@ pub fn bind_error(core: &Arc<KernelCore>, session: &KernelSession, global: &mut
|
||||
global,
|
||||
"ReferenceError",
|
||||
session.builtin_world().reference_error_proto.as_ptr() as *mut JsObject,
|
||||
crate::builtins::error::reference_error_constructor as *const (),
|
||||
oxide_builtins::error::reference_error_constructor::<crate::vm::Vm> as *const (),
|
||||
);
|
||||
bind_error_subtype_constructor(
|
||||
core,
|
||||
@@ -90,7 +90,7 @@ pub fn bind_error(core: &Arc<KernelCore>, session: &KernelSession, global: &mut
|
||||
global,
|
||||
"RangeError",
|
||||
session.builtin_world().range_error_proto.as_ptr() as *mut JsObject,
|
||||
crate::builtins::error::range_error_constructor as *const (),
|
||||
oxide_builtins::error::range_error_constructor::<crate::vm::Vm> as *const (),
|
||||
);
|
||||
bind_error_subtype_constructor(
|
||||
core,
|
||||
@@ -98,7 +98,7 @@ pub fn bind_error(core: &Arc<KernelCore>, session: &KernelSession, global: &mut
|
||||
global,
|
||||
"SyntaxError",
|
||||
session.builtin_world().syntax_error_proto.as_ptr() as *mut JsObject,
|
||||
crate::builtins::error::syntax_error_constructor as *const (),
|
||||
oxide_builtins::error::syntax_error_constructor::<crate::vm::Vm> as *const (),
|
||||
);
|
||||
bind_error_subtype_constructor(
|
||||
core,
|
||||
@@ -106,7 +106,7 @@ pub fn bind_error(core: &Arc<KernelCore>, session: &KernelSession, global: &mut
|
||||
global,
|
||||
"URIError",
|
||||
session.builtin_world().uri_error_proto.as_ptr() as *mut JsObject,
|
||||
crate::builtins::error::uri_error_constructor as *const (),
|
||||
oxide_builtins::error::uri_error_constructor::<crate::vm::Vm> as *const (),
|
||||
);
|
||||
bind_error_subtype_constructor(
|
||||
core,
|
||||
@@ -114,7 +114,7 @@ pub fn bind_error(core: &Arc<KernelCore>, session: &KernelSession, global: &mut
|
||||
global,
|
||||
"EvalError",
|
||||
session.builtin_world().eval_error_proto.as_ptr() as *mut JsObject,
|
||||
crate::builtins::error::eval_error_constructor as *const (),
|
||||
oxide_builtins::error::eval_error_constructor::<crate::vm::Vm> as *const (),
|
||||
);
|
||||
|
||||
{
|
||||
@@ -122,7 +122,7 @@ pub fn bind_error(core: &Arc<KernelCore>, session: &KernelSession, global: &mut
|
||||
let err_ctor = unsafe { &mut *err_ctor_ptr };
|
||||
// SAFETY: error_constructor is a NativeFn fn-item.
|
||||
err_ctor.set_native_fn(Some(unsafe {
|
||||
NativeFnPtr::from_raw(crate::builtins::error::error_constructor as *const ())
|
||||
NativeFnPtr::from_raw(oxide_builtins::error::error_constructor::<crate::vm::Vm> as *const ())
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,10 +9,10 @@ use super::bind_global_value;
|
||||
|
||||
pub fn bind_function(core: &Arc<KernelCore>, session: &KernelSession, global: &mut JsObject) {
|
||||
let function_methods = FunctionMethods {
|
||||
call: crate::builtins::function::function_call as *const (),
|
||||
apply: crate::builtins::function::function_apply as *const (),
|
||||
bind: crate::builtins::function::function_bind as *const (),
|
||||
to_string: crate::builtins::function::function_to_string as *const (),
|
||||
call: oxide_builtins::function::function_call::<crate::vm::Vm> as *const (),
|
||||
apply: oxide_builtins::function::function_apply::<crate::vm::Vm> as *const (),
|
||||
bind: oxide_builtins::function::function_bind::<crate::vm::Vm> as *const (),
|
||||
to_string: oxide_builtins::function::function_to_string::<crate::vm::Vm> as *const (),
|
||||
};
|
||||
session.builtin_world().bind_function_methods(
|
||||
&function_methods,
|
||||
|
||||
@@ -11,12 +11,20 @@ pub fn bind_global(core: &Arc<KernelCore>, session: &KernelSession, global: &mut
|
||||
global,
|
||||
core,
|
||||
&[
|
||||
("escape", crate::builtins::global::js_escape as *const (), 1),
|
||||
("unescape", crate::builtins::global::js_unescape as *const (), 1),
|
||||
("encodeURI", crate::builtins::global::encode_uri as *const (), 1),
|
||||
("decodeURI", crate::builtins::global::decode_uri as *const (), 1),
|
||||
("encodeURIComponent", crate::builtins::global::encode_uri_component as *const (), 1),
|
||||
("decodeURIComponent", crate::builtins::global::decode_uri_component as *const (), 1),
|
||||
("escape", oxide_builtins::global::js_escape::<crate::vm::Vm> as *const (), 1),
|
||||
("unescape", oxide_builtins::global::js_unescape::<crate::vm::Vm> as *const (), 1),
|
||||
("encodeURI", oxide_builtins::global::encode_uri::<crate::vm::Vm> as *const (), 1),
|
||||
("decodeURI", oxide_builtins::global::decode_uri::<crate::vm::Vm> as *const (), 1),
|
||||
(
|
||||
"encodeURIComponent",
|
||||
oxide_builtins::global::encode_uri_component::<crate::vm::Vm> as *const (),
|
||||
1,
|
||||
),
|
||||
(
|
||||
"decodeURIComponent",
|
||||
oxide_builtins::global::decode_uri_component::<crate::vm::Vm> as *const (),
|
||||
1,
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
@@ -11,13 +11,17 @@ pub fn bind_iterator(core: &Arc<KernelCore>, session: &KernelSession, global: &m
|
||||
let function_proto = session.builtin_world().function_proto.as_ptr() as *mut JsObject;
|
||||
let mut iterator = Box::new(JsObject::new_empty(EMPTY_SHAPE_ID, JsValue::from_js_object(function_proto)));
|
||||
iterator.set_function(true);
|
||||
configure_native_constructor(&mut iterator, crate::builtins::iterator::iterator_constructor as *const (), 0);
|
||||
configure_native_constructor(
|
||||
&mut iterator,
|
||||
oxide_builtins::iterator::iterator_constructor::<crate::vm::Vm> as *const (),
|
||||
0,
|
||||
);
|
||||
|
||||
apply_binding_table(
|
||||
session.builtin_world(),
|
||||
&mut iterator,
|
||||
core,
|
||||
&[("from", crate::builtins::iterator::iterator_from as *const (), 1)],
|
||||
&[("from", oxide_builtins::iterator::iterator_from::<crate::vm::Vm> as *const (), 1)],
|
||||
);
|
||||
|
||||
bind_global_value(core, global, "Iterator", JsValue::from_js_object(Box::into_raw(iterator)));
|
||||
|
||||
@@ -14,8 +14,8 @@ pub fn bind_json(core: &Arc<KernelCore>, session: &KernelSession, global: &mut J
|
||||
json,
|
||||
core,
|
||||
&[
|
||||
("parse", crate::builtins::json::json_parse as *const (), 1),
|
||||
("stringify", crate::builtins::json::json_stringify as *const (), 1),
|
||||
("parse", oxide_builtins::json::json_parse::<crate::vm::Vm> as *const (), 1),
|
||||
("stringify", oxide_builtins::json::json_stringify::<crate::vm::Vm> as *const (), 1),
|
||||
],
|
||||
);
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ pub fn bind_map(core: &Arc<KernelCore>, session: &KernelSession, global: &mut Js
|
||||
let ctor = unsafe { &mut *ctor_ptr };
|
||||
let proto_ptr = session.builtin_world().map_proto.as_ptr() as *mut JsObject;
|
||||
|
||||
configure_native_constructor(ctor, crate::builtins::map::map_constructor as *const (), 1);
|
||||
configure_native_constructor(ctor, oxide_builtins::map::map_constructor::<crate::vm::Vm> as *const (), 1);
|
||||
let proto = unsafe { &mut *proto_ptr };
|
||||
|
||||
apply_binding_table(
|
||||
@@ -18,14 +18,14 @@ pub fn bind_map(core: &Arc<KernelCore>, session: &KernelSession, global: &mut Js
|
||||
proto,
|
||||
core,
|
||||
&[
|
||||
("set", crate::builtins::map::map_set as *const (), 2),
|
||||
("get", crate::builtins::map::map_get as *const (), 1),
|
||||
("has", crate::builtins::map::map_has as *const (), 1),
|
||||
("delete", crate::builtins::map::map_delete as *const (), 1),
|
||||
("clear", crate::builtins::map::map_clear as *const (), 0),
|
||||
("size", crate::builtins::map::map_size as *const (), 0),
|
||||
("set", oxide_builtins::map::map_set::<crate::vm::Vm> as *const (), 2),
|
||||
("get", oxide_builtins::map::map_get::<crate::vm::Vm> as *const (), 1),
|
||||
("has", oxide_builtins::map::map_has::<crate::vm::Vm> as *const (), 1),
|
||||
("delete", oxide_builtins::map::map_delete::<crate::vm::Vm> as *const (), 1),
|
||||
("clear", oxide_builtins::map::map_clear::<crate::vm::Vm> as *const (), 0),
|
||||
("size", oxide_builtins::map::map_size::<crate::vm::Vm> as *const (), 0),
|
||||
],
|
||||
);
|
||||
|
||||
bind_constructor!(core, global, "Map", ctor_ptr, crate::builtins::map::map_constructor, 1, hash: true);
|
||||
bind_constructor!(core, global, "Map", ctor_ptr, oxide_builtins::map::map_constructor::<crate::vm::Vm>, 1, hash: true);
|
||||
}
|
||||
|
||||
@@ -18,41 +18,41 @@ pub fn bind_math(core: &Arc<KernelCore>, session: &KernelSession, global: &mut J
|
||||
math,
|
||||
sf,
|
||||
sh,
|
||||
("abs", crate::builtins::math::math_abs, 1),
|
||||
("acos", crate::builtins::math::math_acos, 1),
|
||||
("asin", crate::builtins::math::math_asin, 1),
|
||||
("atan", crate::builtins::math::math_atan, 1),
|
||||
("atan2", crate::builtins::math::math_atan2, 2),
|
||||
("cbrt", crate::builtins::math::math_cbrt, 1),
|
||||
("ceil", crate::builtins::math::math_ceil, 1),
|
||||
("cos", crate::builtins::math::math_cos, 1),
|
||||
("cosh", crate::builtins::math::math_cosh, 1),
|
||||
("exp", crate::builtins::math::math_exp, 1),
|
||||
("floor", crate::builtins::math::math_floor, 1),
|
||||
("hypot", crate::builtins::math::math_hypot, 2),
|
||||
("imul", crate::builtins::math::math_imul, 2),
|
||||
("log", crate::builtins::math::math_log, 1),
|
||||
("log10", crate::builtins::math::math_log10, 1),
|
||||
("log2", crate::builtins::math::math_log2, 1),
|
||||
("max", crate::builtins::math::math_max, 2),
|
||||
("min", crate::builtins::math::math_min, 2),
|
||||
("pow", crate::builtins::math::math_pow, 2),
|
||||
("random", crate::builtins::math::math_random, 0),
|
||||
("round", crate::builtins::math::math_round, 1),
|
||||
("sign", crate::builtins::math::math_sign, 1),
|
||||
("sin", crate::builtins::math::math_sin, 1),
|
||||
("sinh", crate::builtins::math::math_sinh, 1),
|
||||
("sqrt", crate::builtins::math::math_sqrt, 1),
|
||||
("tan", crate::builtins::math::math_tan, 1),
|
||||
("tanh", crate::builtins::math::math_tanh, 1),
|
||||
("trunc", crate::builtins::math::math_trunc, 1),
|
||||
("acosh", crate::builtins::math::math_acosh, 1),
|
||||
("asinh", crate::builtins::math::math_asinh, 1),
|
||||
("atanh", crate::builtins::math::math_atanh, 1),
|
||||
("clz32", crate::builtins::math::math_clz32, 1),
|
||||
("expm1", crate::builtins::math::math_expm1, 1),
|
||||
("fround", crate::builtins::math::math_fround, 1),
|
||||
("log1p", crate::builtins::math::math_log1p, 1),
|
||||
("abs", oxide_builtins::math::math_abs::<crate::vm::Vm>, 1),
|
||||
("acos", oxide_builtins::math::math_acos::<crate::vm::Vm>, 1),
|
||||
("asin", oxide_builtins::math::math_asin::<crate::vm::Vm>, 1),
|
||||
("atan", oxide_builtins::math::math_atan::<crate::vm::Vm>, 1),
|
||||
("atan2", oxide_builtins::math::math_atan2::<crate::vm::Vm>, 2),
|
||||
("cbrt", oxide_builtins::math::math_cbrt::<crate::vm::Vm>, 1),
|
||||
("ceil", oxide_builtins::math::math_ceil::<crate::vm::Vm>, 1),
|
||||
("cos", oxide_builtins::math::math_cos::<crate::vm::Vm>, 1),
|
||||
("cosh", oxide_builtins::math::math_cosh::<crate::vm::Vm>, 1),
|
||||
("exp", oxide_builtins::math::math_exp::<crate::vm::Vm>, 1),
|
||||
("floor", oxide_builtins::math::math_floor::<crate::vm::Vm>, 1),
|
||||
("hypot", oxide_builtins::math::math_hypot::<crate::vm::Vm>, 2),
|
||||
("imul", oxide_builtins::math::math_imul::<crate::vm::Vm>, 2),
|
||||
("log", oxide_builtins::math::math_log::<crate::vm::Vm>, 1),
|
||||
("log10", oxide_builtins::math::math_log10::<crate::vm::Vm>, 1),
|
||||
("log2", oxide_builtins::math::math_log2::<crate::vm::Vm>, 1),
|
||||
("max", oxide_builtins::math::math_max::<crate::vm::Vm>, 2),
|
||||
("min", oxide_builtins::math::math_min::<crate::vm::Vm>, 2),
|
||||
("pow", oxide_builtins::math::math_pow::<crate::vm::Vm>, 2),
|
||||
("random", oxide_builtins::math::math_random::<crate::vm::Vm>, 0),
|
||||
("round", oxide_builtins::math::math_round::<crate::vm::Vm>, 1),
|
||||
("sign", oxide_builtins::math::math_sign::<crate::vm::Vm>, 1),
|
||||
("sin", oxide_builtins::math::math_sin::<crate::vm::Vm>, 1),
|
||||
("sinh", oxide_builtins::math::math_sinh::<crate::vm::Vm>, 1),
|
||||
("sqrt", oxide_builtins::math::math_sqrt::<crate::vm::Vm>, 1),
|
||||
("tan", oxide_builtins::math::math_tan::<crate::vm::Vm>, 1),
|
||||
("tanh", oxide_builtins::math::math_tanh::<crate::vm::Vm>, 1),
|
||||
("trunc", oxide_builtins::math::math_trunc::<crate::vm::Vm>, 1),
|
||||
("acosh", oxide_builtins::math::math_acosh::<crate::vm::Vm>, 1),
|
||||
("asinh", oxide_builtins::math::math_asinh::<crate::vm::Vm>, 1),
|
||||
("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),
|
||||
("fround", oxide_builtins::math::math_fround::<crate::vm::Vm>, 1),
|
||||
("log1p", oxide_builtins::math::math_log1p::<crate::vm::Vm>, 1),
|
||||
);
|
||||
|
||||
for (name, val) in [
|
||||
|
||||
@@ -12,17 +12,21 @@ pub fn bind_number(core: &Arc<KernelCore>, session: &KernelSession, global: &mut
|
||||
let proto_ptr = session.builtin_world().number_proto.as_ptr() as *mut JsObject;
|
||||
let proto = unsafe { &mut *proto_ptr };
|
||||
|
||||
configure_native_constructor(ctor, crate::builtins::number::number_constructor as *const (), 1);
|
||||
configure_native_constructor(ctor, oxide_builtins::number::number_constructor::<crate::vm::Vm> as *const (), 1);
|
||||
|
||||
apply_binding_table(
|
||||
session.builtin_world(),
|
||||
ctor,
|
||||
core,
|
||||
&[
|
||||
("isNaN", crate::builtins::number::number_is_nan as *const (), 1),
|
||||
("isFinite", crate::builtins::number::number_is_finite as *const (), 1),
|
||||
("isInteger", crate::builtins::number::number_is_integer as *const (), 1),
|
||||
("isSafeInteger", crate::builtins::number::number_is_safe_integer as *const (), 1),
|
||||
("isNaN", oxide_builtins::number::number_is_nan::<crate::vm::Vm> as *const (), 1),
|
||||
("isFinite", oxide_builtins::number::number_is_finite::<crate::vm::Vm> as *const (), 1),
|
||||
("isInteger", oxide_builtins::number::number_is_integer::<crate::vm::Vm> as *const (), 1),
|
||||
(
|
||||
"isSafeInteger",
|
||||
oxide_builtins::number::number_is_safe_integer::<crate::vm::Vm> as *const (),
|
||||
1,
|
||||
),
|
||||
],
|
||||
);
|
||||
|
||||
@@ -31,11 +35,19 @@ pub fn bind_number(core: &Arc<KernelCore>, session: &KernelSession, global: &mut
|
||||
proto,
|
||||
core,
|
||||
&[
|
||||
("toString", crate::builtins::number::number_to_string as *const (), 0),
|
||||
("toFixed", crate::builtins::number::number_to_fixed as *const (), 0),
|
||||
("toExponential", crate::builtins::number::number_to_exponential as *const (), 0),
|
||||
("toPrecision", crate::builtins::number::number_to_precision as *const (), 0),
|
||||
("valueOf", crate::builtins::number::number_value_of as *const (), 0),
|
||||
("toString", oxide_builtins::number::number_to_string::<crate::vm::Vm> as *const (), 0),
|
||||
("toFixed", oxide_builtins::number::number_to_fixed::<crate::vm::Vm> as *const (), 0),
|
||||
(
|
||||
"toExponential",
|
||||
oxide_builtins::number::number_to_exponential::<crate::vm::Vm> as *const (),
|
||||
0,
|
||||
),
|
||||
(
|
||||
"toPrecision",
|
||||
oxide_builtins::number::number_to_precision::<crate::vm::Vm> as *const (),
|
||||
0,
|
||||
),
|
||||
("valueOf", oxide_builtins::number::number_value_of::<crate::vm::Vm> as *const (), 0),
|
||||
],
|
||||
);
|
||||
|
||||
@@ -55,15 +67,15 @@ pub fn bind_number(core: &Arc<KernelCore>, session: &KernelSession, global: &mut
|
||||
ctor.set_shape_id(next_shape);
|
||||
}
|
||||
|
||||
bind_constructor!(core, global, "Number", ctor_ptr, crate::builtins::number::number_constructor, 1, hash: true);
|
||||
bind_constructor!(core, global, "Number", ctor_ptr, oxide_builtins::number::number_constructor::<crate::vm::Vm>, 1, hash: true);
|
||||
|
||||
apply_binding_table(
|
||||
session.builtin_world(),
|
||||
global,
|
||||
core,
|
||||
&[
|
||||
("parseInt", crate::builtins::number::number_parse_int as *const (), 1),
|
||||
("parseFloat", crate::builtins::number::number_parse_float as *const (), 1),
|
||||
("parseInt", oxide_builtins::number::number_parse_int::<crate::vm::Vm> as *const (), 1),
|
||||
("parseFloat", oxide_builtins::number::number_parse_float::<crate::vm::Vm> as *const (), 1),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
@@ -8,32 +8,41 @@ use crate::bind_constructor;
|
||||
|
||||
pub fn bind_object(core: &Arc<KernelCore>, session: &KernelSession, global: &mut JsObject) {
|
||||
let methods = ObjectMethods {
|
||||
keys: crate::builtins::object::object_keys as *const (),
|
||||
create: crate::builtins::object::object_create as *const (),
|
||||
assign: crate::builtins::object::object_assign as *const (),
|
||||
is: crate::builtins::object::object_is as *const (),
|
||||
define_property: crate::builtins::object::object_define_property as *const (),
|
||||
get_own_property_descriptor: crate::builtins::object::object_get_own_property_descriptor as *const (),
|
||||
freeze: crate::builtins::object::object_freeze as *const (),
|
||||
seal: crate::builtins::object::object_seal as *const (),
|
||||
prevent_extensions: crate::builtins::object::object_prevent_extensions as *const (),
|
||||
is_frozen: crate::builtins::object::object_is_frozen as *const (),
|
||||
is_sealed: crate::builtins::object::object_is_sealed as *const (),
|
||||
is_extensible: crate::builtins::object::object_is_extensible as *const (),
|
||||
get_own_property_names: crate::builtins::object::object_get_own_property_names as *const (),
|
||||
define_properties: crate::builtins::object::object_define_properties as *const (),
|
||||
from_entries: crate::builtins::object::object_from_entries as *const (),
|
||||
get_prototype_of: crate::builtins::object::object_get_prototype_of as *const (),
|
||||
has_own: crate::builtins::object::object_has_own as *const (),
|
||||
entries: crate::builtins::object::object_entries as *const (),
|
||||
values: crate::builtins::object::object_values as *const (),
|
||||
has_own_property: crate::builtins::object::object_proto_has_own_property as *const (),
|
||||
property_is_enumerable: crate::builtins::object::object_proto_property_is_enumerable as *const (),
|
||||
keys: oxide_builtins::object::object_keys::<crate::vm::Vm> as *const (),
|
||||
create: oxide_builtins::object::object_create::<crate::vm::Vm> as *const (),
|
||||
assign: oxide_builtins::object::object_assign::<crate::vm::Vm> as *const (),
|
||||
is: oxide_builtins::object::object_is::<crate::vm::Vm> as *const (),
|
||||
define_property: oxide_builtins::object::object_define_property::<crate::vm::Vm> as *const (),
|
||||
get_own_property_descriptor: oxide_builtins::object::object_get_own_property_descriptor::<crate::vm::Vm>
|
||||
as *const (),
|
||||
freeze: oxide_builtins::object::object_freeze::<crate::vm::Vm> as *const (),
|
||||
seal: oxide_builtins::object::object_seal::<crate::vm::Vm> as *const (),
|
||||
prevent_extensions: oxide_builtins::object::object_prevent_extensions::<crate::vm::Vm> as *const (),
|
||||
is_frozen: oxide_builtins::object::object_is_frozen::<crate::vm::Vm> as *const (),
|
||||
is_sealed: oxide_builtins::object::object_is_sealed::<crate::vm::Vm> as *const (),
|
||||
is_extensible: oxide_builtins::object::object_is_extensible::<crate::vm::Vm> as *const (),
|
||||
get_own_property_names: oxide_builtins::object::object_get_own_property_names::<crate::vm::Vm> as *const (),
|
||||
define_properties: oxide_builtins::object::object_define_properties::<crate::vm::Vm> as *const (),
|
||||
from_entries: oxide_builtins::object::object_from_entries::<crate::vm::Vm> as *const (),
|
||||
get_prototype_of: oxide_builtins::object::object_get_prototype_of::<crate::vm::Vm> as *const (),
|
||||
has_own: oxide_builtins::object::object_has_own::<crate::vm::Vm> as *const (),
|
||||
entries: oxide_builtins::object::object_entries::<crate::vm::Vm> as *const (),
|
||||
values: oxide_builtins::object::object_values::<crate::vm::Vm> as *const (),
|
||||
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 (),
|
||||
};
|
||||
session
|
||||
.builtin_world()
|
||||
.bind_object_methods(&methods, core.perm_interner().as_ref(), core.shape_forge().as_ref());
|
||||
|
||||
let ctor_ptr = session.builtin_world().object_constructor.as_ptr() as *mut JsObject;
|
||||
bind_constructor!(core, global, "Object", ctor_ptr, crate::builtins::object::object_constructor, 1);
|
||||
bind_constructor!(
|
||||
core,
|
||||
global,
|
||||
"Object",
|
||||
ctor_ptr,
|
||||
oxide_builtins::object::object_constructor::<crate::vm::Vm>,
|
||||
1
|
||||
);
|
||||
}
|
||||
|
||||
@@ -17,23 +17,47 @@ pub fn bind_reflect(core: &Arc<KernelCore>, session: &KernelSession, global: &mu
|
||||
&mut reflect,
|
||||
core,
|
||||
&[
|
||||
("apply", crate::builtins::reflect::reflect_apply as *const (), 3),
|
||||
("construct", crate::builtins::reflect::reflect_construct as *const (), 2),
|
||||
("defineProperty", crate::builtins::reflect::reflect_define_property as *const (), 3),
|
||||
("deleteProperty", crate::builtins::reflect::reflect_delete_property as *const (), 2),
|
||||
("get", crate::builtins::reflect::reflect_get as *const (), 2),
|
||||
("apply", oxide_builtins::reflect::reflect_apply::<crate::vm::Vm> as *const (), 3),
|
||||
("construct", oxide_builtins::reflect::reflect_construct::<crate::vm::Vm> as *const (), 2),
|
||||
(
|
||||
"getOwnPropertyDescriptor",
|
||||
crate::builtins::reflect::reflect_get_own_property_descriptor as *const (),
|
||||
"defineProperty",
|
||||
oxide_builtins::reflect::reflect_define_property::<crate::vm::Vm> as *const (),
|
||||
3,
|
||||
),
|
||||
(
|
||||
"deleteProperty",
|
||||
oxide_builtins::reflect::reflect_delete_property::<crate::vm::Vm> as *const (),
|
||||
2,
|
||||
),
|
||||
("get", oxide_builtins::reflect::reflect_get::<crate::vm::Vm> as *const (), 2),
|
||||
(
|
||||
"getOwnPropertyDescriptor",
|
||||
oxide_builtins::reflect::reflect_get_own_property_descriptor::<crate::vm::Vm> as *const (),
|
||||
2,
|
||||
),
|
||||
(
|
||||
"getPrototypeOf",
|
||||
oxide_builtins::reflect::reflect_get_prototype_of::<crate::vm::Vm> as *const (),
|
||||
1,
|
||||
),
|
||||
("has", oxide_builtins::reflect::reflect_has::<crate::vm::Vm> as *const (), 2),
|
||||
(
|
||||
"isExtensible",
|
||||
oxide_builtins::reflect::reflect_is_extensible::<crate::vm::Vm> as *const (),
|
||||
1,
|
||||
),
|
||||
("ownKeys", oxide_builtins::reflect::reflect_own_keys::<crate::vm::Vm> as *const (), 1),
|
||||
(
|
||||
"preventExtensions",
|
||||
oxide_builtins::reflect::reflect_prevent_extensions::<crate::vm::Vm> as *const (),
|
||||
1,
|
||||
),
|
||||
("set", oxide_builtins::reflect::reflect_set::<crate::vm::Vm> as *const (), 3),
|
||||
(
|
||||
"setPrototypeOf",
|
||||
oxide_builtins::reflect::reflect_set_prototype_of::<crate::vm::Vm> as *const (),
|
||||
2,
|
||||
),
|
||||
("getPrototypeOf", crate::builtins::reflect::reflect_get_prototype_of as *const (), 1),
|
||||
("has", crate::builtins::reflect::reflect_has as *const (), 2),
|
||||
("isExtensible", crate::builtins::reflect::reflect_is_extensible as *const (), 1),
|
||||
("ownKeys", crate::builtins::reflect::reflect_own_keys as *const (), 1),
|
||||
("preventExtensions", crate::builtins::reflect::reflect_prevent_extensions as *const (), 1),
|
||||
("set", crate::builtins::reflect::reflect_set as *const (), 3),
|
||||
("setPrototypeOf", crate::builtins::reflect::reflect_set_prototype_of as *const (), 2),
|
||||
],
|
||||
);
|
||||
|
||||
|
||||
@@ -12,18 +12,18 @@ pub fn bind_regexp(core: &Arc<KernelCore>, session: &KernelSession, global: &mut
|
||||
let proto_ptr = session.builtin_world().regexp_proto.as_ptr() as *mut JsObject;
|
||||
let proto = unsafe { &mut *proto_ptr };
|
||||
|
||||
configure_native_constructor(ctor, crate::builtins::regexp::regexp_constructor as *const (), 2);
|
||||
configure_native_constructor(ctor, oxide_builtins::regexp::regexp_constructor::<crate::vm::Vm> as *const (), 2);
|
||||
|
||||
apply_binding_table(
|
||||
session.builtin_world(),
|
||||
proto,
|
||||
core,
|
||||
&[
|
||||
("exec", crate::builtins::regexp::regexp_exec as *const (), 1),
|
||||
("test", crate::builtins::regexp::regexp_test as *const (), 1),
|
||||
("toString", crate::builtins::regexp::regexp_to_string as *const (), 0),
|
||||
("exec", oxide_builtins::regexp::regexp_exec::<crate::vm::Vm> as *const (), 1),
|
||||
("test", oxide_builtins::regexp::regexp_test::<crate::vm::Vm> as *const (), 1),
|
||||
("toString", oxide_builtins::regexp::regexp_to_string::<crate::vm::Vm> as *const (), 0),
|
||||
],
|
||||
);
|
||||
|
||||
bind_constructor!(core, global, "RegExp", ctor_ptr, crate::builtins::regexp::regexp_constructor, 2, hash: true);
|
||||
bind_constructor!(core, global, "RegExp", ctor_ptr, oxide_builtins::regexp::regexp_constructor::<crate::vm::Vm>, 2, hash: true);
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ pub fn bind_set(core: &Arc<KernelCore>, session: &KernelSession, global: &mut Js
|
||||
let ctor = unsafe { &mut *ctor_ptr };
|
||||
let proto_ptr = session.builtin_world().set_proto.as_ptr() as *mut JsObject;
|
||||
|
||||
configure_native_constructor(ctor, crate::builtins::set::set_constructor as *const (), 1);
|
||||
configure_native_constructor(ctor, oxide_builtins::set::set_constructor::<crate::vm::Vm> as *const (), 1);
|
||||
let proto = unsafe { &mut *proto_ptr };
|
||||
|
||||
apply_binding_table(
|
||||
@@ -18,13 +18,13 @@ pub fn bind_set(core: &Arc<KernelCore>, session: &KernelSession, global: &mut Js
|
||||
proto,
|
||||
core,
|
||||
&[
|
||||
("add", crate::builtins::set::set_add as *const (), 1),
|
||||
("has", crate::builtins::set::set_has as *const (), 1),
|
||||
("delete", crate::builtins::set::set_delete as *const (), 1),
|
||||
("clear", crate::builtins::set::set_clear as *const (), 0),
|
||||
("size", crate::builtins::set::set_size as *const (), 0),
|
||||
("add", oxide_builtins::set::set_add::<crate::vm::Vm> as *const (), 1),
|
||||
("has", oxide_builtins::set::set_has::<crate::vm::Vm> as *const (), 1),
|
||||
("delete", oxide_builtins::set::set_delete::<crate::vm::Vm> as *const (), 1),
|
||||
("clear", oxide_builtins::set::set_clear::<crate::vm::Vm> as *const (), 0),
|
||||
("size", oxide_builtins::set::set_size::<crate::vm::Vm> as *const (), 0),
|
||||
],
|
||||
);
|
||||
|
||||
bind_constructor!(core, global, "Set", ctor_ptr, crate::builtins::set::set_constructor, 1, hash: true);
|
||||
bind_constructor!(core, global, "Set", ctor_ptr, oxide_builtins::set::set_constructor::<crate::vm::Vm>, 1, hash: true);
|
||||
}
|
||||
|
||||
@@ -8,33 +8,33 @@ use oxide_types::value::JsValue;
|
||||
|
||||
pub fn bind_string(core: &Arc<KernelCore>, session: &KernelSession, global: &mut JsObject) {
|
||||
let string_methods = StringMethods {
|
||||
from_char_code: crate::builtins::string::string_from_char_code as *const (),
|
||||
index_of: crate::builtins::string::string_index_of as *const (),
|
||||
includes: crate::builtins::string::string_includes as *const (),
|
||||
char_at: crate::builtins::string::string_char_at as *const (),
|
||||
char_code_at: crate::builtins::string::string_char_code_at as *const (),
|
||||
concat: crate::builtins::string::string_concat as *const (),
|
||||
slice: crate::builtins::string::string_slice as *const (),
|
||||
substring: crate::builtins::string::string_substring as *const (),
|
||||
to_upper_case: crate::builtins::string::string_to_upper_case as *const (),
|
||||
to_lower_case: crate::builtins::string::string_to_lower_case as *const (),
|
||||
trim: crate::builtins::string::string_trim as *const (),
|
||||
repeat: crate::builtins::string::string_repeat as *const (),
|
||||
pad_start: crate::builtins::string::string_pad_start as *const (),
|
||||
pad_end: crate::builtins::string::string_pad_end as *const (),
|
||||
starts_with: crate::builtins::string::string_starts_with as *const (),
|
||||
ends_with: crate::builtins::string::string_ends_with as *const (),
|
||||
split: crate::builtins::string::string_split as *const (),
|
||||
replace: crate::builtins::string::string_replace as *const (),
|
||||
match_fn: crate::builtins::string::string_match_fn as *const (),
|
||||
search: crate::builtins::string::string_search as *const (),
|
||||
trim_start: crate::builtins::string::string_trim_start as *const (),
|
||||
trim_end: crate::builtins::string::string_trim_end as *const (),
|
||||
code_point_at: crate::builtins::string::string_code_point_at as *const (),
|
||||
normalize: crate::builtins::string::string_normalize as *const (),
|
||||
match_all: crate::builtins::string::string_match_all as *const (),
|
||||
replace_all: crate::builtins::string::string_replace_all as *const (),
|
||||
value_of: crate::builtins::string::string_value_of as *const (),
|
||||
from_char_code: oxide_builtins::string::string_from_char_code::<crate::vm::Vm> as *const (),
|
||||
index_of: oxide_builtins::string::string_index_of::<crate::vm::Vm> as *const (),
|
||||
includes: oxide_builtins::string::string_includes::<crate::vm::Vm> as *const (),
|
||||
char_at: oxide_builtins::string::string_char_at::<crate::vm::Vm> as *const (),
|
||||
char_code_at: oxide_builtins::string::string_char_code_at::<crate::vm::Vm> as *const (),
|
||||
concat: oxide_builtins::string::string_concat::<crate::vm::Vm> as *const (),
|
||||
slice: oxide_builtins::string::string_slice::<crate::vm::Vm> as *const (),
|
||||
substring: oxide_builtins::string::string_substring::<crate::vm::Vm> as *const (),
|
||||
to_upper_case: oxide_builtins::string::string_to_upper_case::<crate::vm::Vm> as *const (),
|
||||
to_lower_case: oxide_builtins::string::string_to_lower_case::<crate::vm::Vm> as *const (),
|
||||
trim: oxide_builtins::string::string_trim::<crate::vm::Vm> as *const (),
|
||||
repeat: oxide_builtins::string::string_repeat::<crate::vm::Vm> as *const (),
|
||||
pad_start: oxide_builtins::string::string_pad_start::<crate::vm::Vm> as *const (),
|
||||
pad_end: oxide_builtins::string::string_pad_end::<crate::vm::Vm> as *const (),
|
||||
starts_with: oxide_builtins::string::string_starts_with::<crate::vm::Vm> as *const (),
|
||||
ends_with: oxide_builtins::string::string_ends_with::<crate::vm::Vm> as *const (),
|
||||
split: oxide_builtins::string::string_split::<crate::vm::Vm> as *const (),
|
||||
replace: oxide_builtins::string::string_replace::<crate::vm::Vm> as *const (),
|
||||
match_fn: oxide_builtins::string::string_match_fn::<crate::vm::Vm> as *const (),
|
||||
search: oxide_builtins::string::string_search::<crate::vm::Vm> as *const (),
|
||||
trim_start: oxide_builtins::string::string_trim_start::<crate::vm::Vm> as *const (),
|
||||
trim_end: oxide_builtins::string::string_trim_end::<crate::vm::Vm> as *const (),
|
||||
code_point_at: oxide_builtins::string::string_code_point_at::<crate::vm::Vm> as *const (),
|
||||
normalize: oxide_builtins::string::string_normalize::<crate::vm::Vm> as *const (),
|
||||
match_all: oxide_builtins::string::string_match_all::<crate::vm::Vm> as *const (),
|
||||
replace_all: oxide_builtins::string::string_replace_all::<crate::vm::Vm> as *const (),
|
||||
value_of: oxide_builtins::string::string_value_of::<crate::vm::Vm> as *const (),
|
||||
};
|
||||
session.builtin_world().bind_string_methods(
|
||||
&string_methods,
|
||||
@@ -44,7 +44,7 @@ pub fn bind_string(core: &Arc<KernelCore>, session: &KernelSession, global: &mut
|
||||
|
||||
let ctor_ptr = session.builtin_world().string_constructor.as_ptr() as *mut JsObject;
|
||||
let ctor = unsafe { &mut *ctor_ptr };
|
||||
configure_native_constructor(ctor, crate::builtins::string::string_constructor as *const (), 1);
|
||||
configure_native_constructor(ctor, oxide_builtins::string::string_constructor::<crate::vm::Vm> as *const (), 1);
|
||||
|
||||
let proto_ptr = session.builtin_world().string_proto.as_ptr() as *mut JsObject;
|
||||
let proto = unsafe { &mut *proto_ptr };
|
||||
@@ -52,7 +52,7 @@ pub fn bind_string(core: &Arc<KernelCore>, session: &KernelSession, global: &mut
|
||||
session.builtin_world(),
|
||||
proto,
|
||||
core,
|
||||
&[("toString", crate::builtins::string::string_to_string as *const (), 0)],
|
||||
&[("toString", oxide_builtins::string::string_to_string::<crate::vm::Vm> as *const (), 0)],
|
||||
);
|
||||
|
||||
let si_str = core.perm_interner().intern("String").0;
|
||||
|
||||
@@ -9,14 +9,22 @@ use oxide_types::value::JsValue;
|
||||
use crate::bindings::{bind_global_value, configure_native_constructor};
|
||||
|
||||
const STUBS: [(&str, *const (), u8); 8] = [
|
||||
("Proxy", crate::builtins::stubs::proxy_stub as *const (), 2),
|
||||
("BigInt", crate::builtins::stubs::bigint_stub as *const (), 1),
|
||||
("WeakMap", crate::builtins::stubs::weakmap_stub as *const (), 0),
|
||||
("WeakSet", crate::builtins::stubs::weakset_stub as *const (), 0),
|
||||
("WeakRef", crate::builtins::stubs::weakref_stub as *const (), 1),
|
||||
("FinalizationRegistry", crate::builtins::stubs::finalization_registry_stub as *const (), 1),
|
||||
("SharedArrayBuffer", crate::builtins::stubs::shared_array_buffer_stub as *const (), 1),
|
||||
("Atomics", crate::builtins::stubs::atomics_stub as *const (), 0),
|
||||
("Proxy", oxide_builtins::stubs::proxy_stub::<crate::vm::Vm> as *const (), 2),
|
||||
("BigInt", oxide_builtins::stubs::bigint_stub::<crate::vm::Vm> as *const (), 1),
|
||||
("WeakMap", oxide_builtins::stubs::weakmap_stub::<crate::vm::Vm> as *const (), 0),
|
||||
("WeakSet", oxide_builtins::stubs::weakset_stub::<crate::vm::Vm> as *const (), 0),
|
||||
("WeakRef", oxide_builtins::stubs::weakref_stub::<crate::vm::Vm> as *const (), 1),
|
||||
(
|
||||
"FinalizationRegistry",
|
||||
oxide_builtins::stubs::finalization_registry_stub::<crate::vm::Vm> as *const (),
|
||||
1,
|
||||
),
|
||||
(
|
||||
"SharedArrayBuffer",
|
||||
oxide_builtins::stubs::shared_array_buffer_stub::<crate::vm::Vm> as *const (),
|
||||
1,
|
||||
),
|
||||
("Atomics", oxide_builtins::stubs::atomics_stub::<crate::vm::Vm> as *const (), 0),
|
||||
];
|
||||
|
||||
pub fn bind_stubs(core: &Arc<KernelCore>, session: &mut KernelSession, global: &mut JsObject) {
|
||||
|
||||
@@ -13,15 +13,15 @@ pub fn bind_symbol(core: &Arc<KernelCore>, session: &KernelSession, global: &mut
|
||||
let proto_ptr = session.builtin_world().symbol_proto.as_ptr() as *mut JsObject;
|
||||
let proto = unsafe { &mut *proto_ptr };
|
||||
|
||||
configure_native_constructor(ctor, crate::builtins::symbol::symbol_constructor as *const (), 1);
|
||||
configure_native_constructor(ctor, oxide_builtins::symbol::symbol_constructor::<crate::vm::Vm> as *const (), 1);
|
||||
|
||||
apply_binding_table(
|
||||
session.builtin_world(),
|
||||
ctor,
|
||||
core,
|
||||
&[
|
||||
("for", crate::builtins::symbol::symbol_for as *const (), 1),
|
||||
("keyFor", crate::builtins::symbol::symbol_key_for as *const (), 1),
|
||||
("for", oxide_builtins::symbol::symbol_for::<crate::vm::Vm> as *const (), 1),
|
||||
("keyFor", oxide_builtins::symbol::symbol_key_for::<crate::vm::Vm> as *const (), 1),
|
||||
],
|
||||
);
|
||||
|
||||
@@ -29,7 +29,7 @@ pub fn bind_symbol(core: &Arc<KernelCore>, session: &KernelSession, global: &mut
|
||||
session.builtin_world(),
|
||||
proto,
|
||||
core,
|
||||
&[("toString", crate::builtins::symbol::symbol_to_string as *const (), 0)],
|
||||
&[("toString", oxide_builtins::symbol::symbol_to_string::<crate::vm::Vm> as *const (), 0)],
|
||||
);
|
||||
|
||||
for (name, val) in [
|
||||
@@ -57,7 +57,7 @@ pub fn bind_symbol(core: &Arc<KernelCore>, session: &KernelSession, global: &mut
|
||||
bind_well_known_symbol(core, ctor, name, val);
|
||||
}
|
||||
|
||||
bind_constructor!(core, global, "Symbol", ctor_ptr, crate::builtins::symbol::symbol_constructor, 1, hash: true);
|
||||
bind_constructor!(core, global, "Symbol", ctor_ptr, oxide_builtins::symbol::symbol_constructor::<crate::vm::Vm>, 1, hash: true);
|
||||
}
|
||||
|
||||
fn bind_well_known_symbol(core: &Arc<KernelCore>, ctor: &mut JsObject, name: &str, val: JsValue) {
|
||||
|
||||
@@ -8,7 +8,7 @@ use oxide_types::object::JsObject;
|
||||
macro_rules! bind_typed_array_constructor {
|
||||
($core:expr, $global:expr, $name:literal, $ctor_ptr:expr, $ctor_fn:path) => {{
|
||||
let ctor = unsafe { &mut *$ctor_ptr };
|
||||
configure_native_constructor(ctor, $ctor_fn as *const (), 1);
|
||||
configure_native_constructor(ctor, ($ctor_fn as fn(&mut $crate::vm::Vm, &[u8]) -> oxide_runtime_api::NativeResult) as *const (), 1);
|
||||
bind_constructor!($core, $global, $name, $ctor_ptr, $ctor_fn, 1, hash: true);
|
||||
}};
|
||||
}
|
||||
@@ -21,12 +21,20 @@ pub fn bind_typed_array(core: &Arc<KernelCore>, session: &KernelSession, global:
|
||||
shared_proto,
|
||||
core,
|
||||
&[
|
||||
("at", crate::builtins::typed_array::typed_array_at as *const (), 1),
|
||||
("fill", crate::builtins::typed_array::typed_array_fill as *const (), 3),
|
||||
("set", crate::builtins::typed_array::typed_array_set as *const (), 2),
|
||||
("slice", crate::builtins::typed_array::typed_array_slice as *const (), 2),
|
||||
("subarray", crate::builtins::typed_array::typed_array_subarray as *const (), 2),
|
||||
("toString", crate::builtins::typed_array::typed_array_to_string as *const (), 0),
|
||||
("at", oxide_builtins::typed_array::typed_array_at::<crate::vm::Vm> as *const (), 1),
|
||||
("fill", oxide_builtins::typed_array::typed_array_fill::<crate::vm::Vm> as *const (), 3),
|
||||
("set", oxide_builtins::typed_array::typed_array_set::<crate::vm::Vm> as *const (), 2),
|
||||
("slice", oxide_builtins::typed_array::typed_array_slice::<crate::vm::Vm> as *const (), 2),
|
||||
(
|
||||
"subarray",
|
||||
oxide_builtins::typed_array::typed_array_subarray::<crate::vm::Vm> as *const (),
|
||||
2,
|
||||
),
|
||||
(
|
||||
"toString",
|
||||
oxide_builtins::typed_array::typed_array_to_string::<crate::vm::Vm> as *const (),
|
||||
0,
|
||||
),
|
||||
],
|
||||
);
|
||||
|
||||
@@ -35,76 +43,76 @@ pub fn bind_typed_array(core: &Arc<KernelCore>, session: &KernelSession, global:
|
||||
global,
|
||||
"Int8Array",
|
||||
session.builtin_world().int8array_constructor.as_ptr() as *mut JsObject,
|
||||
crate::builtins::typed_array::int8array_constructor
|
||||
oxide_builtins::typed_array::int8array_constructor
|
||||
);
|
||||
bind_typed_array_constructor!(
|
||||
core,
|
||||
global,
|
||||
"Uint8Array",
|
||||
session.builtin_world().uint8array_constructor.as_ptr() as *mut JsObject,
|
||||
crate::builtins::typed_array::uint8array_constructor
|
||||
oxide_builtins::typed_array::uint8array_constructor
|
||||
);
|
||||
bind_typed_array_constructor!(
|
||||
core,
|
||||
global,
|
||||
"Uint8ClampedArray",
|
||||
session.builtin_world().uint8clampedarray_constructor.as_ptr() as *mut JsObject,
|
||||
crate::builtins::typed_array::uint8clampedarray_constructor
|
||||
oxide_builtins::typed_array::uint8clampedarray_constructor
|
||||
);
|
||||
bind_typed_array_constructor!(
|
||||
core,
|
||||
global,
|
||||
"Int16Array",
|
||||
session.builtin_world().int16array_constructor.as_ptr() as *mut JsObject,
|
||||
crate::builtins::typed_array::int16array_constructor
|
||||
oxide_builtins::typed_array::int16array_constructor
|
||||
);
|
||||
bind_typed_array_constructor!(
|
||||
core,
|
||||
global,
|
||||
"Uint16Array",
|
||||
session.builtin_world().uint16array_constructor.as_ptr() as *mut JsObject,
|
||||
crate::builtins::typed_array::uint16array_constructor
|
||||
oxide_builtins::typed_array::uint16array_constructor
|
||||
);
|
||||
bind_typed_array_constructor!(
|
||||
core,
|
||||
global,
|
||||
"Int32Array",
|
||||
session.builtin_world().int32array_constructor.as_ptr() as *mut JsObject,
|
||||
crate::builtins::typed_array::int32array_constructor
|
||||
oxide_builtins::typed_array::int32array_constructor
|
||||
);
|
||||
bind_typed_array_constructor!(
|
||||
core,
|
||||
global,
|
||||
"Uint32Array",
|
||||
session.builtin_world().uint32array_constructor.as_ptr() as *mut JsObject,
|
||||
crate::builtins::typed_array::uint32array_constructor
|
||||
oxide_builtins::typed_array::uint32array_constructor
|
||||
);
|
||||
bind_typed_array_constructor!(
|
||||
core,
|
||||
global,
|
||||
"Float32Array",
|
||||
session.builtin_world().float32array_constructor.as_ptr() as *mut JsObject,
|
||||
crate::builtins::typed_array::float32array_constructor
|
||||
oxide_builtins::typed_array::float32array_constructor
|
||||
);
|
||||
bind_typed_array_constructor!(
|
||||
core,
|
||||
global,
|
||||
"Float64Array",
|
||||
session.builtin_world().float64array_constructor.as_ptr() as *mut JsObject,
|
||||
crate::builtins::typed_array::float64array_constructor
|
||||
oxide_builtins::typed_array::float64array_constructor
|
||||
);
|
||||
bind_typed_array_constructor!(
|
||||
core,
|
||||
global,
|
||||
"BigInt64Array",
|
||||
session.builtin_world().bigint64array_constructor.as_ptr() as *mut JsObject,
|
||||
crate::builtins::typed_array::bigint64array_constructor
|
||||
oxide_builtins::typed_array::bigint64array_constructor
|
||||
);
|
||||
bind_typed_array_constructor!(
|
||||
core,
|
||||
global,
|
||||
"BigUint64Array",
|
||||
session.builtin_world().biguint64array_constructor.as_ptr() as *mut JsObject,
|
||||
crate::builtins::typed_array::biguint64array_constructor
|
||||
oxide_builtins::typed_array::biguint64array_constructor
|
||||
);
|
||||
}
|
||||
|
||||
@@ -46,7 +46,8 @@ macro_rules! bind_constructor {
|
||||
$global.push_prop(val);
|
||||
}
|
||||
let ctor = unsafe { &mut *$ctor_ptr };
|
||||
ctor.set_native_fn(Some(unsafe { oxide_types::object::NativeFnPtr::from_raw($ctor_fn as *const ()) }));
|
||||
let ptr: *const () = ($ctor_fn as fn(&mut $crate::vm::Vm, &[u8]) -> oxide_runtime_api::NativeResult) as *const ();
|
||||
ctor.set_native_fn(Some(unsafe { oxide_types::object::NativeFnPtr::from_raw(ptr) }));
|
||||
ctor.set_native_arg_count($nargs);
|
||||
}};
|
||||
}
|
||||
@@ -127,14 +128,22 @@ fn bind_global_functions(core: &Arc<KernelCore>, session: &KernelSession, global
|
||||
global,
|
||||
core,
|
||||
&[
|
||||
("parseInt", crate::builtins::number::number_parse_int as *const (), 1),
|
||||
("parseFloat", crate::builtins::number::number_parse_float as *const (), 1),
|
||||
("escape", crate::builtins::global::js_escape as *const (), 1),
|
||||
("unescape", crate::builtins::global::js_unescape as *const (), 1),
|
||||
("encodeURI", crate::builtins::global::encode_uri as *const (), 1),
|
||||
("decodeURI", crate::builtins::global::decode_uri as *const (), 1),
|
||||
("encodeURIComponent", crate::builtins::global::encode_uri_component as *const (), 1),
|
||||
("decodeURIComponent", crate::builtins::global::decode_uri_component as *const (), 1),
|
||||
("parseInt", oxide_builtins::number::number_parse_int::<crate::vm::Vm> as *const (), 1),
|
||||
("parseFloat", oxide_builtins::number::number_parse_float::<crate::vm::Vm> as *const (), 1),
|
||||
("escape", oxide_builtins::global::js_escape::<crate::vm::Vm> as *const (), 1),
|
||||
("unescape", oxide_builtins::global::js_unescape::<crate::vm::Vm> as *const (), 1),
|
||||
("encodeURI", oxide_builtins::global::encode_uri::<crate::vm::Vm> as *const (), 1),
|
||||
("decodeURI", oxide_builtins::global::decode_uri::<crate::vm::Vm> as *const (), 1),
|
||||
(
|
||||
"encodeURIComponent",
|
||||
oxide_builtins::global::encode_uri_component::<crate::vm::Vm> as *const (),
|
||||
1,
|
||||
),
|
||||
(
|
||||
"decodeURIComponent",
|
||||
oxide_builtins::global::decode_uri_component::<crate::vm::Vm> as *const (),
|
||||
1,
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
@@ -149,23 +158,47 @@ fn bind_reflect_global(core: &Arc<KernelCore>, session: &KernelSession, global:
|
||||
&mut reflect,
|
||||
core,
|
||||
&[
|
||||
("apply", crate::builtins::reflect::reflect_apply as *const (), 3),
|
||||
("construct", crate::builtins::reflect::reflect_construct as *const (), 2),
|
||||
("defineProperty", crate::builtins::reflect::reflect_define_property as *const (), 3),
|
||||
("deleteProperty", crate::builtins::reflect::reflect_delete_property as *const (), 2),
|
||||
("get", crate::builtins::reflect::reflect_get as *const (), 2),
|
||||
("apply", oxide_builtins::reflect::reflect_apply::<crate::vm::Vm> as *const (), 3),
|
||||
("construct", oxide_builtins::reflect::reflect_construct::<crate::vm::Vm> as *const (), 2),
|
||||
(
|
||||
"getOwnPropertyDescriptor",
|
||||
crate::builtins::reflect::reflect_get_own_property_descriptor as *const (),
|
||||
"defineProperty",
|
||||
oxide_builtins::reflect::reflect_define_property::<crate::vm::Vm> as *const (),
|
||||
3,
|
||||
),
|
||||
(
|
||||
"deleteProperty",
|
||||
oxide_builtins::reflect::reflect_delete_property::<crate::vm::Vm> as *const (),
|
||||
2,
|
||||
),
|
||||
("get", oxide_builtins::reflect::reflect_get::<crate::vm::Vm> as *const (), 2),
|
||||
(
|
||||
"getOwnPropertyDescriptor",
|
||||
oxide_builtins::reflect::reflect_get_own_property_descriptor::<crate::vm::Vm> as *const (),
|
||||
2,
|
||||
),
|
||||
(
|
||||
"getPrototypeOf",
|
||||
oxide_builtins::reflect::reflect_get_prototype_of::<crate::vm::Vm> as *const (),
|
||||
1,
|
||||
),
|
||||
("has", oxide_builtins::reflect::reflect_has::<crate::vm::Vm> as *const (), 2),
|
||||
(
|
||||
"isExtensible",
|
||||
oxide_builtins::reflect::reflect_is_extensible::<crate::vm::Vm> as *const (),
|
||||
1,
|
||||
),
|
||||
("ownKeys", oxide_builtins::reflect::reflect_own_keys::<crate::vm::Vm> as *const (), 1),
|
||||
(
|
||||
"preventExtensions",
|
||||
oxide_builtins::reflect::reflect_prevent_extensions::<crate::vm::Vm> as *const (),
|
||||
1,
|
||||
),
|
||||
("set", oxide_builtins::reflect::reflect_set::<crate::vm::Vm> as *const (), 3),
|
||||
(
|
||||
"setPrototypeOf",
|
||||
oxide_builtins::reflect::reflect_set_prototype_of::<crate::vm::Vm> as *const (),
|
||||
2,
|
||||
),
|
||||
("getPrototypeOf", crate::builtins::reflect::reflect_get_prototype_of as *const (), 1),
|
||||
("has", crate::builtins::reflect::reflect_has as *const (), 2),
|
||||
("isExtensible", crate::builtins::reflect::reflect_is_extensible as *const (), 1),
|
||||
("ownKeys", crate::builtins::reflect::reflect_own_keys as *const (), 1),
|
||||
("preventExtensions", crate::builtins::reflect::reflect_prevent_extensions as *const (), 1),
|
||||
("set", crate::builtins::reflect::reflect_set as *const (), 3),
|
||||
("setPrototypeOf", crate::builtins::reflect::reflect_set_prototype_of as *const (), 2),
|
||||
],
|
||||
);
|
||||
bind_existing_global(core, global, "Reflect", JsValue::from_js_object(Box::into_raw(reflect)));
|
||||
@@ -175,26 +208,38 @@ fn bind_iterator_global(core: &Arc<KernelCore>, session: &KernelSession, global:
|
||||
let function_proto = session.builtin_world().function_proto.as_ptr() as *mut JsObject;
|
||||
let mut iterator = Box::new(JsObject::new_empty(EMPTY_SHAPE_ID, JsValue::from_js_object(function_proto)));
|
||||
iterator.set_function(true);
|
||||
configure_native_constructor(&mut iterator, crate::builtins::iterator::iterator_constructor as *const (), 0);
|
||||
configure_native_constructor(
|
||||
&mut iterator,
|
||||
oxide_builtins::iterator::iterator_constructor::<crate::vm::Vm> as *const (),
|
||||
0,
|
||||
);
|
||||
apply_binding_table(
|
||||
session.builtin_world(),
|
||||
&mut iterator,
|
||||
core,
|
||||
&[("from", crate::builtins::iterator::iterator_from as *const (), 1)],
|
||||
&[("from", oxide_builtins::iterator::iterator_from::<crate::vm::Vm> as *const (), 1)],
|
||||
);
|
||||
bind_existing_global(core, global, "Iterator", JsValue::from_js_object(Box::into_raw(iterator)));
|
||||
}
|
||||
|
||||
fn bind_stub_globals(core: &Arc<KernelCore>, session: &KernelSession, global: &mut JsObject) {
|
||||
for (index, (name, native_fn, arg_count)) in [
|
||||
("Proxy", crate::builtins::stubs::proxy_stub as *const (), 2),
|
||||
("BigInt", crate::builtins::stubs::bigint_stub as *const (), 1),
|
||||
("WeakMap", crate::builtins::stubs::weakmap_stub as *const (), 0),
|
||||
("WeakSet", crate::builtins::stubs::weakset_stub as *const (), 0),
|
||||
("WeakRef", crate::builtins::stubs::weakref_stub as *const (), 1),
|
||||
("FinalizationRegistry", crate::builtins::stubs::finalization_registry_stub as *const (), 1),
|
||||
("SharedArrayBuffer", crate::builtins::stubs::shared_array_buffer_stub as *const (), 1),
|
||||
("Atomics", crate::builtins::stubs::atomics_stub as *const (), 0),
|
||||
("Proxy", oxide_builtins::stubs::proxy_stub::<crate::vm::Vm> as *const (), 2),
|
||||
("BigInt", oxide_builtins::stubs::bigint_stub::<crate::vm::Vm> as *const (), 1),
|
||||
("WeakMap", oxide_builtins::stubs::weakmap_stub::<crate::vm::Vm> as *const (), 0),
|
||||
("WeakSet", oxide_builtins::stubs::weakset_stub::<crate::vm::Vm> as *const (), 0),
|
||||
("WeakRef", oxide_builtins::stubs::weakref_stub::<crate::vm::Vm> as *const (), 1),
|
||||
(
|
||||
"FinalizationRegistry",
|
||||
oxide_builtins::stubs::finalization_registry_stub::<crate::vm::Vm> as *const (),
|
||||
1,
|
||||
),
|
||||
(
|
||||
"SharedArrayBuffer",
|
||||
oxide_builtins::stubs::shared_array_buffer_stub::<crate::vm::Vm> as *const (),
|
||||
1,
|
||||
),
|
||||
("Atomics", oxide_builtins::stubs::atomics_stub::<crate::vm::Vm> as *const (), 0),
|
||||
]
|
||||
.into_iter()
|
||||
.enumerate()
|
||||
@@ -209,26 +254,66 @@ fn bind_stub_globals(core: &Arc<KernelCore>, session: &KernelSession, global: &m
|
||||
pub fn bind_global_builtin_slots(core: &Arc<KernelCore>, session: &KernelSession, global: &mut JsObject) {
|
||||
let world = session.builtin_world();
|
||||
|
||||
configure_existing_ctor(&world.object_constructor, crate::builtins::object::object_constructor as *const (), 1);
|
||||
configure_existing_ctor(&world.array_constructor, crate::builtins::array::array_constructor as *const (), 1);
|
||||
configure_existing_ctor(
|
||||
&world.object_constructor,
|
||||
oxide_builtins::object::object_constructor::<crate::vm::Vm> as *const (),
|
||||
1,
|
||||
);
|
||||
configure_existing_ctor(
|
||||
&world.array_constructor,
|
||||
oxide_builtins::array::array_constructor::<crate::vm::Vm> as *const (),
|
||||
1,
|
||||
);
|
||||
configure_existing_ctor(
|
||||
&world.array_buffer_constructor,
|
||||
crate::builtins::array_buffer::array_buffer_constructor as *const (),
|
||||
oxide_builtins::array_buffer::array_buffer_constructor::<crate::vm::Vm> as *const (),
|
||||
1,
|
||||
);
|
||||
configure_existing_ctor(
|
||||
&world.data_view_constructor,
|
||||
crate::builtins::data_view::data_view_constructor as *const (),
|
||||
oxide_builtins::data_view::data_view_constructor::<crate::vm::Vm> as *const (),
|
||||
3,
|
||||
);
|
||||
configure_existing_ctor(&world.error_constructor, crate::builtins::error::error_constructor as *const (), 1);
|
||||
configure_existing_ctor(&world.number_constructor, crate::builtins::number::number_constructor as *const (), 1);
|
||||
configure_existing_ctor(&world.date_constructor, crate::builtins::date::date_constructor as *const (), 7);
|
||||
configure_existing_ctor(&world.set_constructor, crate::builtins::set::set_constructor as *const (), 1);
|
||||
configure_existing_ctor(&world.map_constructor, crate::builtins::map::map_constructor as *const (), 1);
|
||||
configure_existing_ctor(&world.boolean_constructor, crate::builtins::boolean::boolean_constructor as *const (), 1);
|
||||
configure_existing_ctor(&world.regexp_constructor, crate::builtins::regexp::regexp_constructor as *const (), 2);
|
||||
configure_existing_ctor(&world.symbol_constructor, crate::builtins::symbol::symbol_constructor as *const (), 1);
|
||||
configure_existing_ctor(
|
||||
&world.error_constructor,
|
||||
oxide_builtins::error::error_constructor::<crate::vm::Vm> as *const (),
|
||||
1,
|
||||
);
|
||||
configure_existing_ctor(
|
||||
&world.number_constructor,
|
||||
oxide_builtins::number::number_constructor::<crate::vm::Vm> as *const (),
|
||||
1,
|
||||
);
|
||||
configure_existing_ctor(
|
||||
&world.date_constructor,
|
||||
oxide_builtins::date::date_constructor::<crate::vm::Vm> as *const (),
|
||||
7,
|
||||
);
|
||||
configure_existing_ctor(
|
||||
&world.set_constructor,
|
||||
oxide_builtins::set::set_constructor::<crate::vm::Vm> as *const (),
|
||||
1,
|
||||
);
|
||||
configure_existing_ctor(
|
||||
&world.map_constructor,
|
||||
oxide_builtins::map::map_constructor::<crate::vm::Vm> as *const (),
|
||||
1,
|
||||
);
|
||||
configure_existing_ctor(
|
||||
&world.boolean_constructor,
|
||||
oxide_builtins::boolean::boolean_constructor::<crate::vm::Vm> as *const (),
|
||||
1,
|
||||
);
|
||||
configure_existing_ctor(
|
||||
&world.regexp_constructor,
|
||||
oxide_builtins::regexp::regexp_constructor::<crate::vm::Vm> as *const (),
|
||||
2,
|
||||
);
|
||||
configure_existing_ctor(
|
||||
&world.symbol_constructor,
|
||||
oxide_builtins::symbol::symbol_constructor::<crate::vm::Vm> as *const (),
|
||||
1,
|
||||
);
|
||||
|
||||
for (name, value) in [
|
||||
("Object", JsValue::from_js_object(world.object_constructor.as_ptr() as *mut JsObject)),
|
||||
@@ -258,57 +343,57 @@ pub fn bind_global_builtin_slots(core: &Arc<KernelCore>, session: &KernelSession
|
||||
(
|
||||
"Int8Array",
|
||||
&world.int8array_constructor,
|
||||
crate::builtins::typed_array::int8array_constructor as *const (),
|
||||
oxide_builtins::typed_array::int8array_constructor::<crate::vm::Vm> as *const (),
|
||||
),
|
||||
(
|
||||
"Uint8Array",
|
||||
&world.uint8array_constructor,
|
||||
crate::builtins::typed_array::uint8array_constructor as *const (),
|
||||
oxide_builtins::typed_array::uint8array_constructor::<crate::vm::Vm> as *const (),
|
||||
),
|
||||
(
|
||||
"Uint8ClampedArray",
|
||||
&world.uint8clampedarray_constructor,
|
||||
crate::builtins::typed_array::uint8clampedarray_constructor as *const (),
|
||||
oxide_builtins::typed_array::uint8clampedarray_constructor::<crate::vm::Vm> as *const (),
|
||||
),
|
||||
(
|
||||
"Int16Array",
|
||||
&world.int16array_constructor,
|
||||
crate::builtins::typed_array::int16array_constructor as *const (),
|
||||
oxide_builtins::typed_array::int16array_constructor::<crate::vm::Vm> as *const (),
|
||||
),
|
||||
(
|
||||
"Uint16Array",
|
||||
&world.uint16array_constructor,
|
||||
crate::builtins::typed_array::uint16array_constructor as *const (),
|
||||
oxide_builtins::typed_array::uint16array_constructor::<crate::vm::Vm> as *const (),
|
||||
),
|
||||
(
|
||||
"Int32Array",
|
||||
&world.int32array_constructor,
|
||||
crate::builtins::typed_array::int32array_constructor as *const (),
|
||||
oxide_builtins::typed_array::int32array_constructor::<crate::vm::Vm> as *const (),
|
||||
),
|
||||
(
|
||||
"Uint32Array",
|
||||
&world.uint32array_constructor,
|
||||
crate::builtins::typed_array::uint32array_constructor as *const (),
|
||||
oxide_builtins::typed_array::uint32array_constructor::<crate::vm::Vm> as *const (),
|
||||
),
|
||||
(
|
||||
"Float32Array",
|
||||
&world.float32array_constructor,
|
||||
crate::builtins::typed_array::float32array_constructor as *const (),
|
||||
oxide_builtins::typed_array::float32array_constructor::<crate::vm::Vm> as *const (),
|
||||
),
|
||||
(
|
||||
"Float64Array",
|
||||
&world.float64array_constructor,
|
||||
crate::builtins::typed_array::float64array_constructor as *const (),
|
||||
oxide_builtins::typed_array::float64array_constructor::<crate::vm::Vm> as *const (),
|
||||
),
|
||||
(
|
||||
"BigInt64Array",
|
||||
&world.bigint64array_constructor,
|
||||
crate::builtins::typed_array::bigint64array_constructor as *const (),
|
||||
oxide_builtins::typed_array::bigint64array_constructor::<crate::vm::Vm> as *const (),
|
||||
),
|
||||
(
|
||||
"BigUint64Array",
|
||||
&world.biguint64array_constructor,
|
||||
crate::builtins::typed_array::biguint64array_constructor as *const (),
|
||||
oxide_builtins::typed_array::biguint64array_constructor::<crate::vm::Vm> as *const (),
|
||||
),
|
||||
] {
|
||||
configure_existing_ctor(ctor, native_fn, 1);
|
||||
@@ -321,7 +406,7 @@ pub fn bind_global_builtin_slots(core: &Arc<KernelCore>, session: &KernelSession
|
||||
global,
|
||||
"TypeError",
|
||||
&world.type_error_proto,
|
||||
crate::builtins::error::type_error_constructor as *const (),
|
||||
oxide_builtins::error::type_error_constructor::<crate::vm::Vm> as *const (),
|
||||
);
|
||||
bind_error_subtype_global(
|
||||
core,
|
||||
@@ -329,7 +414,7 @@ pub fn bind_global_builtin_slots(core: &Arc<KernelCore>, session: &KernelSession
|
||||
global,
|
||||
"ReferenceError",
|
||||
&world.reference_error_proto,
|
||||
crate::builtins::error::reference_error_constructor as *const (),
|
||||
oxide_builtins::error::reference_error_constructor::<crate::vm::Vm> as *const (),
|
||||
);
|
||||
bind_error_subtype_global(
|
||||
core,
|
||||
@@ -337,7 +422,7 @@ pub fn bind_global_builtin_slots(core: &Arc<KernelCore>, session: &KernelSession
|
||||
global,
|
||||
"RangeError",
|
||||
&world.range_error_proto,
|
||||
crate::builtins::error::range_error_constructor as *const (),
|
||||
oxide_builtins::error::range_error_constructor::<crate::vm::Vm> as *const (),
|
||||
);
|
||||
bind_error_subtype_global(
|
||||
core,
|
||||
@@ -345,7 +430,7 @@ pub fn bind_global_builtin_slots(core: &Arc<KernelCore>, session: &KernelSession
|
||||
global,
|
||||
"SyntaxError",
|
||||
&world.syntax_error_proto,
|
||||
crate::builtins::error::syntax_error_constructor as *const (),
|
||||
oxide_builtins::error::syntax_error_constructor::<crate::vm::Vm> as *const (),
|
||||
);
|
||||
bind_error_subtype_global(
|
||||
core,
|
||||
@@ -353,7 +438,7 @@ pub fn bind_global_builtin_slots(core: &Arc<KernelCore>, session: &KernelSession
|
||||
global,
|
||||
"URIError",
|
||||
&world.uri_error_proto,
|
||||
crate::builtins::error::uri_error_constructor as *const (),
|
||||
oxide_builtins::error::uri_error_constructor::<crate::vm::Vm> as *const (),
|
||||
);
|
||||
bind_error_subtype_global(
|
||||
core,
|
||||
@@ -361,7 +446,7 @@ pub fn bind_global_builtin_slots(core: &Arc<KernelCore>, session: &KernelSession
|
||||
global,
|
||||
"EvalError",
|
||||
&world.eval_error_proto,
|
||||
crate::builtins::error::eval_error_constructor as *const (),
|
||||
oxide_builtins::error::eval_error_constructor::<crate::vm::Vm> as *const (),
|
||||
);
|
||||
|
||||
bind_reflect_global(core, session, global);
|
||||
|
||||
Reference in New Issue
Block a user