Skip to content

Commit f3d584b

Browse files
committed
split vtable, add opt-in macro, restore tests
1 parent 00f1ba5 commit f3d584b

File tree

13 files changed

+1829
-1677
lines changed

13 files changed

+1829
-1677
lines changed

src/js_native_api.h

Lines changed: 918 additions & 0 deletions
Large diffs are not rendered by default.

src/js_native_api_types.h

Lines changed: 546 additions & 1 deletion
Large diffs are not rendered by default.

src/js_native_api_v8.cc

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3672,3 +3672,137 @@ napi_status NAPI_CDECL napi_is_detached_arraybuffer(napi_env env,
36723672

36733673
return napi_clear_last_error(env);
36743674
}
3675+
3676+
static const node_api_js_native_vtable g_vtable = {
3677+
napi_get_last_error_info,
3678+
napi_get_undefined,
3679+
napi_get_null,
3680+
napi_get_global,
3681+
napi_get_boolean,
3682+
napi_create_object,
3683+
napi_create_array,
3684+
napi_create_array_with_length,
3685+
napi_create_double,
3686+
napi_create_int32,
3687+
napi_create_uint32,
3688+
napi_create_int64,
3689+
napi_create_string_latin1,
3690+
napi_create_string_utf8,
3691+
napi_create_string_utf16,
3692+
napi_create_symbol,
3693+
napi_create_function,
3694+
napi_create_error,
3695+
napi_create_type_error,
3696+
napi_create_range_error,
3697+
napi_typeof,
3698+
napi_get_value_double,
3699+
napi_get_value_int32,
3700+
napi_get_value_uint32,
3701+
napi_get_value_int64,
3702+
napi_get_value_bool,
3703+
napi_get_value_string_latin1,
3704+
napi_get_value_string_utf8,
3705+
napi_get_value_string_utf16,
3706+
napi_coerce_to_bool,
3707+
napi_coerce_to_number,
3708+
napi_coerce_to_object,
3709+
napi_coerce_to_string,
3710+
napi_get_prototype,
3711+
napi_get_property_names,
3712+
napi_set_property,
3713+
napi_has_property,
3714+
napi_get_property,
3715+
napi_delete_property,
3716+
napi_has_own_property,
3717+
napi_set_named_property,
3718+
napi_has_named_property,
3719+
napi_get_named_property,
3720+
napi_set_element,
3721+
napi_has_element,
3722+
napi_get_element,
3723+
napi_delete_element,
3724+
napi_define_properties,
3725+
napi_is_array,
3726+
napi_get_array_length,
3727+
napi_strict_equals,
3728+
napi_call_function,
3729+
napi_new_instance,
3730+
napi_instanceof,
3731+
napi_get_cb_info,
3732+
napi_get_new_target,
3733+
napi_define_class,
3734+
napi_wrap,
3735+
napi_unwrap,
3736+
napi_remove_wrap,
3737+
napi_create_external,
3738+
napi_get_value_external,
3739+
napi_create_reference,
3740+
napi_delete_reference,
3741+
napi_reference_ref,
3742+
napi_reference_unref,
3743+
napi_get_reference_value,
3744+
napi_open_handle_scope,
3745+
napi_close_handle_scope,
3746+
napi_open_escapable_handle_scope,
3747+
napi_close_escapable_handle_scope,
3748+
napi_escape_handle,
3749+
napi_throw,
3750+
napi_throw_error,
3751+
napi_throw_type_error,
3752+
napi_throw_range_error,
3753+
napi_is_error,
3754+
napi_is_exception_pending,
3755+
napi_get_and_clear_last_exception,
3756+
napi_is_arraybuffer,
3757+
napi_create_arraybuffer,
3758+
napi_create_external_arraybuffer,
3759+
napi_get_arraybuffer_info,
3760+
napi_is_typedarray,
3761+
napi_create_typedarray,
3762+
napi_get_typedarray_info,
3763+
napi_create_dataview,
3764+
napi_is_dataview,
3765+
napi_get_dataview_info,
3766+
napi_get_version,
3767+
napi_create_promise,
3768+
napi_resolve_deferred,
3769+
napi_reject_deferred,
3770+
napi_is_promise,
3771+
napi_run_script,
3772+
napi_adjust_external_memory,
3773+
napi_create_date,
3774+
napi_is_date,
3775+
napi_get_date_value,
3776+
napi_add_finalizer,
3777+
napi_create_bigint_int64,
3778+
napi_create_bigint_uint64,
3779+
napi_create_bigint_words,
3780+
napi_get_value_bigint_int64,
3781+
napi_get_value_bigint_uint64,
3782+
napi_get_value_bigint_words,
3783+
napi_get_all_property_names,
3784+
napi_set_instance_data,
3785+
napi_get_instance_data,
3786+
napi_detach_arraybuffer,
3787+
napi_is_detached_arraybuffer,
3788+
napi_type_tag_object,
3789+
napi_check_object_type_tag,
3790+
napi_object_freeze,
3791+
napi_object_seal,
3792+
node_api_symbol_for,
3793+
node_api_create_syntax_error,
3794+
node_api_throw_syntax_error,
3795+
node_api_create_external_string_latin1,
3796+
node_api_create_external_string_utf16,
3797+
node_api_create_property_key_latin1,
3798+
node_api_create_property_key_utf8,
3799+
node_api_create_property_key_utf16,
3800+
node_api_post_finalizer,
3801+
napi_create_object_with_properties,
3802+
node_api_is_sharedarraybuffer,
3803+
node_api_create_sharedarraybuffer,
3804+
};
3805+
3806+
const node_api_js_native_vtable* node_api_get_js_native_vtable() {
3807+
return &g_vtable;
3808+
}

src/node_api.cc

Lines changed: 2 additions & 129 deletions
Original file line numberDiff line numberDiff line change
@@ -1494,103 +1494,7 @@ node_api_create_buffer_from_arraybuffer(napi_env env,
14941494

14951495
#endif
14961496

1497-
node_api_vtable g_vtable = {
1498-
napi_get_last_error_info,
1499-
napi_get_undefined,
1500-
napi_get_null,
1501-
napi_get_global,
1502-
napi_get_boolean,
1503-
napi_create_object,
1504-
napi_create_array,
1505-
napi_create_array_with_length,
1506-
napi_create_double,
1507-
napi_create_int32,
1508-
napi_create_uint32,
1509-
napi_create_int64,
1510-
napi_create_string_latin1,
1511-
napi_create_string_utf8,
1512-
napi_create_string_utf16,
1513-
napi_create_symbol,
1514-
napi_create_function,
1515-
napi_create_error,
1516-
napi_create_type_error,
1517-
napi_create_range_error,
1518-
napi_typeof,
1519-
napi_get_value_double,
1520-
napi_get_value_int32,
1521-
napi_get_value_uint32,
1522-
napi_get_value_int64,
1523-
napi_get_value_bool,
1524-
napi_get_value_string_latin1,
1525-
napi_get_value_string_utf8,
1526-
napi_get_value_string_utf16,
1527-
napi_coerce_to_bool,
1528-
napi_coerce_to_number,
1529-
napi_coerce_to_object,
1530-
napi_coerce_to_string,
1531-
napi_get_prototype,
1532-
napi_get_property_names,
1533-
napi_set_property,
1534-
napi_has_property,
1535-
napi_get_property,
1536-
napi_delete_property,
1537-
napi_has_own_property,
1538-
napi_set_named_property,
1539-
napi_has_named_property,
1540-
napi_get_named_property,
1541-
napi_set_element,
1542-
napi_has_element,
1543-
napi_get_element,
1544-
napi_delete_element,
1545-
napi_define_properties,
1546-
napi_is_array,
1547-
napi_get_array_length,
1548-
napi_strict_equals,
1549-
napi_call_function,
1550-
napi_new_instance,
1551-
napi_instanceof,
1552-
napi_get_cb_info,
1553-
napi_get_new_target,
1554-
napi_define_class,
1555-
napi_wrap,
1556-
napi_unwrap,
1557-
napi_remove_wrap,
1558-
napi_create_external,
1559-
napi_get_value_external,
1560-
napi_create_reference,
1561-
napi_delete_reference,
1562-
napi_reference_ref,
1563-
napi_reference_unref,
1564-
napi_get_reference_value,
1565-
napi_open_handle_scope,
1566-
napi_close_handle_scope,
1567-
napi_open_escapable_handle_scope,
1568-
napi_close_escapable_handle_scope,
1569-
napi_escape_handle,
1570-
napi_throw,
1571-
napi_throw_error,
1572-
napi_throw_type_error,
1573-
napi_throw_range_error,
1574-
napi_is_error,
1575-
napi_is_exception_pending,
1576-
napi_get_and_clear_last_exception,
1577-
napi_is_arraybuffer,
1578-
napi_create_arraybuffer,
1579-
napi_create_external_arraybuffer,
1580-
napi_get_arraybuffer_info,
1581-
napi_is_typedarray,
1582-
napi_create_typedarray,
1583-
napi_get_typedarray_info,
1584-
napi_create_dataview,
1585-
napi_is_dataview,
1586-
napi_get_dataview_info,
1587-
napi_get_version,
1588-
napi_create_promise,
1589-
napi_resolve_deferred,
1590-
napi_reject_deferred,
1591-
napi_is_promise,
1592-
napi_run_script,
1593-
napi_adjust_external_memory,
1497+
static const node_api_module_vtable g_vtable = {
15941498
napi_module_register,
15951499
napi_fatal_error,
15961500
napi_async_init,
@@ -1619,43 +1523,12 @@ node_api_vtable g_vtable = {
16191523
napi_release_threadsafe_function,
16201524
napi_unref_threadsafe_function,
16211525
napi_ref_threadsafe_function,
1622-
napi_create_date,
1623-
napi_is_date,
1624-
napi_get_date_value,
1625-
napi_add_finalizer,
1626-
napi_create_bigint_int64,
1627-
napi_create_bigint_uint64,
1628-
napi_create_bigint_words,
1629-
napi_get_value_bigint_int64,
1630-
napi_get_value_bigint_uint64,
1631-
napi_get_value_bigint_words,
1632-
napi_get_all_property_names,
1633-
napi_set_instance_data,
1634-
napi_get_instance_data,
1635-
napi_detach_arraybuffer,
1636-
napi_is_detached_arraybuffer,
1637-
napi_type_tag_object,
1638-
napi_check_object_type_tag,
1639-
napi_object_freeze,
1640-
napi_object_seal,
16411526
napi_add_async_cleanup_hook,
16421527
napi_remove_async_cleanup_hook,
1643-
node_api_symbol_for,
1644-
node_api_create_syntax_error,
1645-
node_api_throw_syntax_error,
16461528
node_api_get_module_file_name,
1647-
node_api_create_external_string_latin1,
1648-
node_api_create_external_string_utf16,
1649-
node_api_create_property_key_latin1,
1650-
node_api_create_property_key_utf8,
1651-
node_api_create_property_key_utf16,
16521529
node_api_create_buffer_from_arraybuffer,
1653-
node_api_post_finalizer,
1654-
napi_create_object_with_properties,
1655-
node_api_is_sharedarraybuffer,
1656-
node_api_create_sharedarraybuffer,
16571530
};
16581531

1659-
node_api_vtable* node_api_get_vtable() {
1532+
const node_api_module_vtable* node_api_get_module_vtable() {
16601533
return &g_vtable;
16611534
}

0 commit comments

Comments
 (0)