This closes #207 issue on GitHub.
{
.type = NJS_PROPERTY,
.name = njs_string("isArray"),
- .value = njs_native_function(njs_array_is_array, 0),
+ .value = njs_native_function(njs_array_is_array, 1, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("of"),
- .value = njs_native_function(njs_array_of, 0),
+ .value = njs_native_function(njs_array_of, 0, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("slice"),
- .value = njs_native_function(njs_array_prototype_slice,
+ .value = njs_native_function(njs_array_prototype_slice, 2,
NJS_OBJECT_ARG, NJS_INTEGER_ARG, NJS_INTEGER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("push"),
- .value = njs_native_function(njs_array_prototype_push, 0),
+ .value = njs_native_function(njs_array_prototype_push, 1, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("pop"),
- .value = njs_native_function(njs_array_prototype_pop, 0),
+ .value = njs_native_function(njs_array_prototype_pop, 0, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("unshift"),
- .value = njs_native_function(njs_array_prototype_unshift, 0),
+ .value = njs_native_function(njs_array_prototype_unshift, 1, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("shift"),
- .value = njs_native_function(njs_array_prototype_shift, 0),
+ .value = njs_native_function(njs_array_prototype_shift, 0, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("splice"),
- .value = njs_native_function(njs_array_prototype_splice,
+ .value = njs_native_function(njs_array_prototype_splice, 2,
NJS_OBJECT_ARG, NJS_INTEGER_ARG, NJS_INTEGER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("reverse"),
- .value = njs_native_function(njs_array_prototype_reverse,
+ .value = njs_native_function(njs_array_prototype_reverse, 0,
NJS_OBJECT_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("toString"),
- .value = njs_native_function(njs_array_prototype_to_string, 0),
+ .value = njs_native_function(njs_array_prototype_to_string, 0, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("join"),
- .value = njs_native_function(njs_array_prototype_join,
+ .value = njs_native_function(njs_array_prototype_join, 1,
NJS_OBJECT_ARG, NJS_STRING_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("concat"),
- .value = njs_native_function(njs_array_prototype_concat, 0),
+ .value = njs_native_function(njs_array_prototype_concat, 1, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("indexOf"),
- .value = njs_native_function(njs_array_prototype_index_of,
+ .value = njs_native_function(njs_array_prototype_index_of, 1,
NJS_OBJECT_ARG, NJS_SKIP_ARG, NJS_INTEGER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("lastIndexOf"),
- .value = njs_native_function(njs_array_prototype_last_index_of,
+ .value = njs_native_function(njs_array_prototype_last_index_of, 1,
NJS_OBJECT_ARG, NJS_SKIP_ARG, NJS_INTEGER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("includes"),
- .value = njs_native_function(njs_array_prototype_includes,
+ .value = njs_native_function(njs_array_prototype_includes, 1,
NJS_OBJECT_ARG, NJS_SKIP_ARG, NJS_INTEGER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("forEach"),
- .value = njs_native_function(njs_array_prototype_for_each, 0),
+ .value = njs_native_function(njs_array_prototype_for_each, 1, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("some"),
- .value = njs_native_function(njs_array_prototype_some, 0),
+ .value = njs_native_function(njs_array_prototype_some, 1, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("every"),
- .value = njs_native_function(njs_array_prototype_every, 0),
+ .value = njs_native_function(njs_array_prototype_every, 1, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("fill"),
- .value = njs_native_function(njs_array_prototype_fill,
+ .value = njs_native_function(njs_array_prototype_fill, 1,
NJS_OBJECT_ARG, NJS_SKIP_ARG, NJS_NUMBER_ARG,
NJS_NUMBER_ARG),
.writable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("filter"),
- .value = njs_native_function(njs_array_prototype_filter, 0),
+ .value = njs_native_function(njs_array_prototype_filter, 1, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("find"),
- .value = njs_native_function(njs_array_prototype_find, 0),
+ .value = njs_native_function(njs_array_prototype_find, 1, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("findIndex"),
- .value = njs_native_function(njs_array_prototype_find_index, 0),
+ .value = njs_native_function(njs_array_prototype_find_index, 1, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("map"),
- .value = njs_native_function(njs_array_prototype_map, 0),
+ .value = njs_native_function(njs_array_prototype_map, 1, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("reduce"),
- .value = njs_native_function(njs_array_prototype_reduce, 0),
+ .value = njs_native_function(njs_array_prototype_reduce, 1, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("reduceRight"),
- .value = njs_native_function(njs_array_prototype_reduce_right, 0),
+ .value = njs_native_function(njs_array_prototype_reduce_right, 1, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("sort"),
- .value = njs_native_function(njs_array_prototype_sort, 0),
+ .value = njs_native_function(njs_array_prototype_sort, 1, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("valueOf"),
- .value = njs_native_function(njs_boolean_prototype_value_of, 0),
+ .value = njs_native_function(njs_boolean_prototype_value_of, 0, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("toString"),
- .value = njs_native_function(njs_boolean_prototype_to_string, 0),
+ .value = njs_native_function(njs_boolean_prototype_to_string, 0, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("dump"),
- .value = njs_native_function(njs_dump_value,
+ .value = njs_native_function(njs_dump_value, 0,
NJS_SKIP_ARG, NJS_SKIP_ARG, NJS_NUMBER_ARG),
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("toString"),
- .value = njs_native_function(njs_hash_prototype_to_string, 0),
+ .value = njs_native_function(njs_hash_prototype_to_string, 0, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("update"),
- .value = njs_native_function(njs_hash_prototype_update,
+ .value = njs_native_function(njs_hash_prototype_update, 0,
NJS_OBJECT_ARG, NJS_SKIP_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("digest"),
- .value = njs_native_function(njs_hash_prototype_digest,
+ .value = njs_native_function(njs_hash_prototype_digest, 0,
NJS_OBJECT_ARG, NJS_SKIP_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("toString"),
- .value = njs_native_function(njs_hmac_prototype_to_string, 0),
+ .value = njs_native_function(njs_hmac_prototype_to_string, 0, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("update"),
- .value = njs_native_function(njs_hmac_prototype_update,
+ .value = njs_native_function(njs_hmac_prototype_update, 0,
NJS_OBJECT_ARG, NJS_SKIP_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("digest"),
- .value = njs_native_function(njs_hmac_prototype_digest,
+ .value = njs_native_function(njs_hmac_prototype_digest, 0,
NJS_OBJECT_ARG, NJS_SKIP_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("createHash"),
- .value = njs_native_function(njs_crypto_create_hash,
+ .value = njs_native_function(njs_crypto_create_hash, 0,
NJS_SKIP_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("createHmac"),
- .value = njs_native_function(njs_crypto_create_hmac,
+ .value = njs_native_function(njs_crypto_create_hmac, 0,
NJS_SKIP_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("UTC"),
- .value = njs_native_function(njs_date_utc, 0),
+ .value = njs_native_function(njs_date_utc, 7, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("now"),
- .value = njs_native_function(njs_date_now, 0),
+ .value = njs_native_function(njs_date_now, 0, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("parse"),
- .value = njs_native_function(njs_date_parse,
+ .value = njs_native_function(njs_date_parse, 1,
NJS_SKIP_ARG, NJS_STRING_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("valueOf"),
- .value = njs_native_function(njs_date_prototype_value_of, NJS_DATE_ARG),
+ .value = njs_native_function(njs_date_prototype_value_of, 0,
+ NJS_DATE_ARG),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("toString"),
- .value = njs_native_function(njs_date_prototype_to_string,
+ .value = njs_native_function(njs_date_prototype_to_string, 0,
NJS_DATE_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("toDateString"),
- .value = njs_native_function(njs_date_prototype_to_date_string,
+ .value = njs_native_function(njs_date_prototype_to_date_string, 0,
NJS_DATE_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("toTimeString"),
- .value = njs_native_function(njs_date_prototype_to_time_string,
+ .value = njs_native_function(njs_date_prototype_to_time_string, 0,
NJS_DATE_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("toLocaleString"),
- .value = njs_native_function(njs_date_prototype_to_string,
+ .value = njs_native_function(njs_date_prototype_to_string, 0,
NJS_DATE_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_long_string("toLocaleDateString"),
- .value = njs_native_function(njs_date_prototype_to_date_string,
+ .value = njs_native_function(njs_date_prototype_to_date_string, 0,
NJS_DATE_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_long_string("toLocaleTimeString"),
- .value = njs_native_function(njs_date_prototype_to_time_string,
+ .value = njs_native_function(njs_date_prototype_to_time_string, 0,
NJS_DATE_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("toUTCString"),
- .value = njs_native_function(njs_date_prototype_to_utc_string,
+ .value = njs_native_function(njs_date_prototype_to_utc_string, 0,
NJS_DATE_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("toISOString"),
- .value = njs_native_function(njs_date_prototype_to_iso_string,
+ .value = njs_native_function(njs_date_prototype_to_iso_string, 0,
NJS_DATE_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("getTime"),
- .value = njs_native_function(njs_date_prototype_value_of, NJS_DATE_ARG),
+ .value = njs_native_function(njs_date_prototype_value_of, 0,
+ NJS_DATE_ARG),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("getFullYear"),
- .value = njs_native_function(njs_date_prototype_get_full_year,
+ .value = njs_native_function(njs_date_prototype_get_full_year, 0,
NJS_DATE_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("getUTCFullYear"),
- .value = njs_native_function(njs_date_prototype_get_utc_full_year,
+ .value = njs_native_function(njs_date_prototype_get_utc_full_year, 0,
NJS_DATE_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("getMonth"),
- .value = njs_native_function(njs_date_prototype_get_month,
+ .value = njs_native_function(njs_date_prototype_get_month, 0,
NJS_DATE_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("getUTCMonth"),
- .value = njs_native_function(njs_date_prototype_get_utc_month,
+ .value = njs_native_function(njs_date_prototype_get_utc_month, 0,
NJS_DATE_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("getDate"),
- .value = njs_native_function(njs_date_prototype_get_date,
+ .value = njs_native_function(njs_date_prototype_get_date, 0,
NJS_DATE_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("getUTCDate"),
- .value = njs_native_function(njs_date_prototype_get_utc_date,
+ .value = njs_native_function(njs_date_prototype_get_utc_date, 0,
NJS_DATE_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("getDay"),
- .value = njs_native_function(njs_date_prototype_get_day, NJS_DATE_ARG),
+ .value = njs_native_function(njs_date_prototype_get_day, 0,
+ NJS_DATE_ARG),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("getUTCDay"),
- .value = njs_native_function(njs_date_prototype_get_utc_day,
+ .value = njs_native_function(njs_date_prototype_get_utc_day, 0,
NJS_DATE_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("getHours"),
- .value = njs_native_function(njs_date_prototype_get_hours,
+ .value = njs_native_function(njs_date_prototype_get_hours, 0,
NJS_DATE_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("getUTCHours"),
- .value = njs_native_function(njs_date_prototype_get_utc_hours,
+ .value = njs_native_function(njs_date_prototype_get_utc_hours, 0,
NJS_DATE_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("getMinutes"),
- .value = njs_native_function(njs_date_prototype_get_minutes,
+ .value = njs_native_function(njs_date_prototype_get_minutes, 0,
NJS_DATE_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("getUTCMinutes"),
- .value = njs_native_function(njs_date_prototype_get_utc_minutes,
+ .value = njs_native_function(njs_date_prototype_get_utc_minutes, 0,
NJS_DATE_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("getSeconds"),
- .value = njs_native_function(njs_date_prototype_get_seconds,
+ .value = njs_native_function(njs_date_prototype_get_seconds, 0,
NJS_DATE_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("getUTCSeconds"),
- .value = njs_native_function(njs_date_prototype_get_seconds,
+ .value = njs_native_function(njs_date_prototype_get_seconds, 0,
NJS_DATE_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_long_string("getMilliseconds"),
- .value = njs_native_function(njs_date_prototype_get_milliseconds,
+ .value = njs_native_function(njs_date_prototype_get_milliseconds, 0,
NJS_DATE_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_long_string("getUTCMilliseconds"),
- .value = njs_native_function(njs_date_prototype_get_milliseconds,
+ .value = njs_native_function(njs_date_prototype_get_milliseconds, 0,
NJS_DATE_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_long_string("getTimezoneOffset"),
- .value = njs_native_function(njs_date_prototype_get_timezone_offset,
+ .value = njs_native_function(njs_date_prototype_get_timezone_offset, 0,
NJS_DATE_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("setTime"),
- .value = njs_native_function(njs_date_prototype_set_time,
+ .value = njs_native_function(njs_date_prototype_set_time, 1,
NJS_DATE_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_long_string("setMilliseconds"),
- .value = njs_native_function(njs_date_prototype_set_milliseconds,
+ .value = njs_native_function(njs_date_prototype_set_milliseconds, 1,
NJS_DATE_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_long_string("setUTCMilliseconds"),
- .value = njs_native_function(njs_date_prototype_set_milliseconds,
+ .value = njs_native_function(njs_date_prototype_set_milliseconds, 1,
NJS_DATE_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("setSeconds"),
- .value = njs_native_function(njs_date_prototype_set_seconds,
+ .value = njs_native_function(njs_date_prototype_set_seconds, 2,
NJS_DATE_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("setUTCSeconds"),
- .value = njs_native_function(njs_date_prototype_set_seconds,
+ .value = njs_native_function(njs_date_prototype_set_seconds, 2,
NJS_DATE_ARG, NJS_NUMBER_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("setMinutes"),
- .value = njs_native_function(njs_date_prototype_set_minutes,
+ .value = njs_native_function(njs_date_prototype_set_minutes, 3,
NJS_DATE_ARG, NJS_NUMBER_ARG, NJS_NUMBER_ARG,
NJS_NUMBER_ARG),
.writable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("setUTCMinutes"),
- .value = njs_native_function(njs_date_prototype_set_utc_minutes,
+ .value = njs_native_function(njs_date_prototype_set_utc_minutes, 3,
NJS_DATE_ARG, NJS_NUMBER_ARG, NJS_NUMBER_ARG,
NJS_NUMBER_ARG),
.writable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("setHours"),
- .value = njs_native_function(njs_date_prototype_set_hours,
+ .value = njs_native_function(njs_date_prototype_set_hours, 4,
NJS_DATE_ARG, NJS_NUMBER_ARG, NJS_NUMBER_ARG,
NJS_NUMBER_ARG, NJS_NUMBER_ARG),
.writable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("setUTCHours"),
- .value = njs_native_function(njs_date_prototype_set_utc_hours,
+ .value = njs_native_function(njs_date_prototype_set_utc_hours, 4,
NJS_DATE_ARG, NJS_NUMBER_ARG, NJS_NUMBER_ARG,
NJS_NUMBER_ARG, NJS_NUMBER_ARG),
.writable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("setDate"),
- .value = njs_native_function(njs_date_prototype_set_date,
+ .value = njs_native_function(njs_date_prototype_set_date, 1,
NJS_DATE_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("setUTCDate"),
- .value = njs_native_function(njs_date_prototype_set_utc_date,
+ .value = njs_native_function(njs_date_prototype_set_utc_date, 1,
NJS_DATE_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("setMonth"),
- .value = njs_native_function(njs_date_prototype_set_month,
+ .value = njs_native_function(njs_date_prototype_set_month, 2,
NJS_DATE_ARG, NJS_NUMBER_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("setUTCMonth"),
- .value = njs_native_function(njs_date_prototype_set_utc_month,
+ .value = njs_native_function(njs_date_prototype_set_utc_month, 2,
NJS_DATE_ARG, NJS_NUMBER_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("setFullYear"),
- .value = njs_native_function(njs_date_prototype_set_full_year,
+ .value = njs_native_function(njs_date_prototype_set_full_year, 3,
NJS_DATE_ARG, NJS_NUMBER_ARG, NJS_NUMBER_ARG,
NJS_NUMBER_ARG),
.writable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("setUTCFullYear"),
- .value = njs_native_function(njs_date_prototype_set_utc_full_year,
+ .value = njs_native_function(njs_date_prototype_set_utc_full_year, 3,
NJS_DATE_ARG, NJS_NUMBER_ARG, NJS_NUMBER_ARG,
NJS_NUMBER_ARG),
.writable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("toJSON"),
- .value = njs_native_function(njs_date_prototype_to_json, 0),
+ .value = njs_native_function(njs_date_prototype_to_json, 1, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("valueOf"),
- .value = njs_native_function(njs_error_prototype_value_of, 0),
+ .value = njs_native_function(njs_error_prototype_value_of, 0, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("toString"),
- .value = njs_native_function(njs_error_prototype_to_string, 0),
+ .value = njs_native_function(njs_error_prototype_to_string, 0, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("toString"),
- .value = njs_native_function(njs_internal_error_prototype_to_string, 0),
+ .value = njs_native_function(njs_internal_error_prototype_to_string,
+ 0, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("readFile"),
- .value = njs_native_function(njs_fs_read_file, 0),
+ .value = njs_native_function(njs_fs_read_file, 0, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("readFileSync"),
- .value = njs_native_function(njs_fs_read_file_sync, 0),
+ .value = njs_native_function(njs_fs_read_file_sync, 0, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("appendFile"),
- .value = njs_native_function(njs_fs_append_file, 0),
+ .value = njs_native_function(njs_fs_append_file, 0, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("appendFileSync"),
- .value = njs_native_function(njs_fs_append_file_sync, 0),
+ .value = njs_native_function(njs_fs_append_file_sync, 0, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("writeFile"),
- .value = njs_native_function(njs_fs_write_file, 0),
+ .value = njs_native_function(njs_fs_write_file, 0, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("writeFileSync"),
- .value = njs_native_function(njs_fs_write_file_sync, 0),
+ .value = njs_native_function(njs_fs_write_file_sync, 0, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("renameSync"),
- .value = njs_native_function(njs_fs_rename_sync, NJS_STRING_ARG,
+ .value = njs_native_function(njs_fs_rename_sync, 0, NJS_STRING_ARG,
NJS_STRING_ARG, 0),
.writable = 1,
.configurable = 1,
njs_function_instance_length(njs_vm_t *vm, njs_value_t *value,
njs_value_t *setval, njs_value_t *retval)
{
- njs_uint_t n;
- njs_object_t *proto;
- njs_function_t *function;
- njs_function_lambda_t *lambda;
+ njs_object_t *proto;
+ njs_function_t *function;
proto = njs_object(value);
function = (njs_function_t *) proto;
- if (function->native) {
- for (n = function->args_offset; n < NJS_ARGS_TYPES_MAX; n++) {
- if (function->args_types[n] == 0) {
- break;
- }
- }
-
- } else {
- lambda = function->u.lambda;
- n = lambda->nargs + 1 - lambda->rest_parameters;
- }
-
- if (n >= function->args_offset) {
- n -= function->args_offset;
-
- } else {
- n = 0;
- }
-
- njs_set_number(retval, n);
+ njs_set_number(retval, function->args_count);
return NJS_OK;
}
args++;
}
+ if (nargs > function->args_count) {
+ function->args_count = 0;
+
+ } else {
+ function->args_count -= nargs - 1;
+ }
+
function->args_offset = nargs;
size = nargs * sizeof(njs_value_t);
{
.type = NJS_PROPERTY,
.name = njs_string("call"),
- .value = njs_native_function(njs_function_prototype_call, 0),
+ .value = njs_native_function(njs_function_prototype_call, 1, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("apply"),
- .value = njs_native_function(njs_function_prototype_apply, 0),
+ .value = njs_native_function(njs_function_prototype_apply, 2, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("bind"),
- .value = njs_native_function(njs_function_prototype_bind, 0),
+ .value = njs_native_function(njs_function_prototype_bind, 1, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("parse"),
- .value = njs_native_function(njs_json_parse,
+ .value = njs_native_function(njs_json_parse, 2,
NJS_SKIP_ARG, NJS_STRING_ARG,
NJS_OBJECT_ARG),
.writable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("stringify"),
- .value = njs_native_function(njs_json_stringify,
+ .value = njs_native_function(njs_json_stringify, 3,
NJS_SKIP_ARG, NJS_SKIP_ARG, NJS_SKIP_ARG,
NJS_SKIP_ARG),
.writable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("abs"),
- .value = njs_native_function(njs_object_math_abs,
+ .value = njs_native_function(njs_object_math_abs, 1,
NJS_SKIP_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("acos"),
- .value = njs_native_function(njs_object_math_acos,
+ .value = njs_native_function(njs_object_math_acos, 1,
NJS_SKIP_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("acosh"),
- .value = njs_native_function(njs_object_math_acosh,
+ .value = njs_native_function(njs_object_math_acosh, 1,
NJS_SKIP_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("asin"),
- .value = njs_native_function(njs_object_math_asin,
+ .value = njs_native_function(njs_object_math_asin, 1,
NJS_SKIP_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("asinh"),
- .value = njs_native_function(njs_object_math_asinh,
+ .value = njs_native_function(njs_object_math_asinh, 1,
NJS_SKIP_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("atan"),
- .value = njs_native_function(njs_object_math_atan,
+ .value = njs_native_function(njs_object_math_atan, 1,
NJS_SKIP_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("atan2"),
- .value = njs_native_function(njs_object_math_atan2,
+ .value = njs_native_function(njs_object_math_atan2, 2,
NJS_SKIP_ARG, NJS_NUMBER_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("atanh"),
- .value = njs_native_function(njs_object_math_atanh,
+ .value = njs_native_function(njs_object_math_atanh, 1,
NJS_SKIP_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("cbrt"),
- .value = njs_native_function(njs_object_math_cbrt,
+ .value = njs_native_function(njs_object_math_cbrt, 1,
NJS_SKIP_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("ceil"),
- .value = njs_native_function(njs_object_math_ceil,
+ .value = njs_native_function(njs_object_math_ceil, 1,
NJS_SKIP_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("clz32"),
- .value = njs_native_function(njs_object_math_clz32,
+ .value = njs_native_function(njs_object_math_clz32, 1,
NJS_SKIP_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("cos"),
- .value = njs_native_function(njs_object_math_cos,
+ .value = njs_native_function(njs_object_math_cos, 1,
NJS_SKIP_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("cosh"),
- .value = njs_native_function(njs_object_math_cosh,
+ .value = njs_native_function(njs_object_math_cosh, 1,
NJS_SKIP_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("exp"),
- .value = njs_native_function(njs_object_math_exp,
+ .value = njs_native_function(njs_object_math_exp, 1,
NJS_SKIP_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("expm1"),
- .value = njs_native_function(njs_object_math_expm1,
+ .value = njs_native_function(njs_object_math_expm1, 1,
NJS_SKIP_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("floor"),
- .value = njs_native_function(njs_object_math_floor,
+ .value = njs_native_function(njs_object_math_floor, 1,
NJS_SKIP_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("fround"),
- .value = njs_native_function(njs_object_math_fround,
+ .value = njs_native_function(njs_object_math_fround, 1,
NJS_SKIP_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("hypot"),
- .value = njs_native_function(njs_object_math_hypot, 0),
+ .value = njs_native_function(njs_object_math_hypot, 2, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("imul"),
- .value = njs_native_function(njs_object_math_imul,
+ .value = njs_native_function(njs_object_math_imul, 2,
NJS_SKIP_ARG, NJS_NUMBER_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("log"),
- .value = njs_native_function(njs_object_math_log,
+ .value = njs_native_function(njs_object_math_log, 1,
NJS_SKIP_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("log10"),
- .value = njs_native_function(njs_object_math_log10,
+ .value = njs_native_function(njs_object_math_log10, 1,
NJS_SKIP_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("log1p"),
- .value = njs_native_function(njs_object_math_log1p,
+ .value = njs_native_function(njs_object_math_log1p, 1,
NJS_SKIP_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("log2"),
- .value = njs_native_function(njs_object_math_log2,
+ .value = njs_native_function(njs_object_math_log2, 1,
NJS_SKIP_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("max"),
- .value = njs_native_function(njs_object_math_max, 0),
+ .value = njs_native_function(njs_object_math_max, 2, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("min"),
- .value = njs_native_function(njs_object_math_min, 0),
+ .value = njs_native_function(njs_object_math_min, 2, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("pow"),
- .value = njs_native_function(njs_object_math_pow,
+ .value = njs_native_function(njs_object_math_pow, 2,
NJS_SKIP_ARG, NJS_NUMBER_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("random"),
- .value = njs_native_function(njs_object_math_random, 0),
+ .value = njs_native_function(njs_object_math_random, 0, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("round"),
- .value = njs_native_function(njs_object_math_round,
+ .value = njs_native_function(njs_object_math_round, 1,
NJS_SKIP_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("sign"),
- .value = njs_native_function(njs_object_math_sign,
+ .value = njs_native_function(njs_object_math_sign, 1,
NJS_SKIP_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("sin"),
- .value = njs_native_function(njs_object_math_sin,
+ .value = njs_native_function(njs_object_math_sin, 1,
NJS_SKIP_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("sinh"),
- .value = njs_native_function(njs_object_math_sinh,
+ .value = njs_native_function(njs_object_math_sinh, 1,
NJS_SKIP_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("sqrt"),
- .value = njs_native_function(njs_object_math_sqrt,
+ .value = njs_native_function(njs_object_math_sqrt, 1,
NJS_SKIP_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("tan"),
- .value = njs_native_function(njs_object_math_tan,
+ .value = njs_native_function(njs_object_math_tan, 1,
NJS_SKIP_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("tanh"),
- .value = njs_native_function(njs_object_math_tanh,
+ .value = njs_native_function(njs_object_math_tanh, 1,
NJS_SKIP_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("trunc"),
- .value = njs_native_function(njs_object_math_trunc,
+ .value = njs_native_function(njs_object_math_trunc, 1,
NJS_SKIP_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("isFinite"),
- .value = njs_native_function(njs_number_is_finite, 0),
+ .value = njs_native_function(njs_number_is_finite, 1, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("isInteger"),
- .value = njs_native_function(njs_number_is_integer, 0),
+ .value = njs_native_function(njs_number_is_integer, 1, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("isSafeInteger"),
- .value = njs_native_function(njs_number_is_safe_integer, 0),
+ .value = njs_native_function(njs_number_is_safe_integer, 1, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("isNaN"),
- .value = njs_native_function(njs_number_is_nan, 0),
+ .value = njs_native_function(njs_number_is_nan, 1, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("parseFloat"),
- .value = njs_native_function(njs_number_parse_float,
+ .value = njs_native_function(njs_number_parse_float, 1,
NJS_SKIP_ARG, NJS_STRING_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("parseInt"),
- .value = njs_native_function(njs_number_parse_int,
+ .value = njs_native_function(njs_number_parse_int, 2,
NJS_SKIP_ARG, NJS_STRING_ARG, NJS_INTEGER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("valueOf"),
- .value = njs_native_function(njs_number_prototype_value_of, 0),
+ .value = njs_native_function(njs_number_prototype_value_of, 0, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("toString"),
- .value = njs_native_function(njs_number_prototype_to_string,
+ .value = njs_native_function(njs_number_prototype_to_string, 1,
NJS_SKIP_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("toFixed"),
- .value = njs_native_function(njs_number_prototype_to_fixed,
+ .value = njs_native_function(njs_number_prototype_to_fixed, 1,
NJS_SKIP_ARG, NJS_INTEGER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("toPrecision"),
- .value = njs_native_function(njs_number_prototype_to_precision,
+ .value = njs_native_function(njs_number_prototype_to_precision, 1,
NJS_SKIP_ARG, NJS_INTEGER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("toExponential"),
- .value = njs_native_function(njs_number_prototype_to_exponential,
+ .value = njs_native_function(njs_number_prototype_to_exponential, 1,
NJS_SKIP_ARG, NJS_INTEGER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("create"),
- .value = njs_native_function(njs_object_create, 0),
+ .value = njs_native_function(njs_object_create, 2, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("keys"),
- .value = njs_native_function(njs_object_keys,
+ .value = njs_native_function(njs_object_keys, 1,
NJS_SKIP_ARG, NJS_OBJECT_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("values"),
- .value = njs_native_function(njs_object_values,
+ .value = njs_native_function(njs_object_values, 1,
NJS_SKIP_ARG, NJS_OBJECT_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("entries"),
- .value = njs_native_function(njs_object_entries,
+ .value = njs_native_function(njs_object_entries, 1,
NJS_SKIP_ARG, NJS_OBJECT_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("defineProperty"),
- .value = njs_native_function(njs_object_define_property,
+ .value = njs_native_function(njs_object_define_property, 3,
NJS_SKIP_ARG, NJS_OBJECT_ARG,
NJS_STRING_ARG, NJS_OBJECT_ARG),
.writable = 1,
{
.type = NJS_PROPERTY,
.name = njs_long_string("defineProperties"),
- .value = njs_native_function(njs_object_define_properties,
+ .value = njs_native_function(njs_object_define_properties, 2,
NJS_SKIP_ARG, NJS_OBJECT_ARG,
NJS_OBJECT_ARG),
.writable = 1,
{
.type = NJS_PROPERTY,
.name = njs_long_string("getOwnPropertyDescriptor"),
- .value = njs_native_function(njs_object_get_own_property_descriptor,
+ .value = njs_native_function(njs_object_get_own_property_descriptor, 2,
NJS_SKIP_ARG, NJS_SKIP_ARG,
NJS_STRING_ARG),
.writable = 1,
{
.type = NJS_PROPERTY,
.name = njs_long_string("getOwnPropertyDescriptors"),
- .value = njs_native_function(njs_object_get_own_property_descriptors,
+ .value = njs_native_function(njs_object_get_own_property_descriptors, 1,
NJS_SKIP_ARG, NJS_OBJECT_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_long_string("getOwnPropertyNames"),
- .value = njs_native_function(njs_object_get_own_property_names,
+ .value = njs_native_function(njs_object_get_own_property_names, 1,
NJS_SKIP_ARG, NJS_OBJECT_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("getPrototypeOf"),
- .value = njs_native_function(njs_object_get_prototype_of,
+ .value = njs_native_function(njs_object_get_prototype_of, 1,
NJS_SKIP_ARG, NJS_OBJECT_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("freeze"),
- .value = njs_native_function(njs_object_freeze,
+ .value = njs_native_function(njs_object_freeze, 1,
NJS_SKIP_ARG, NJS_OBJECT_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("isFrozen"),
- .value = njs_native_function(njs_object_is_frozen,
+ .value = njs_native_function(njs_object_is_frozen, 1,
NJS_SKIP_ARG, NJS_OBJECT_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("seal"),
- .value = njs_native_function(njs_object_seal,
+ .value = njs_native_function(njs_object_seal, 1,
NJS_SKIP_ARG, NJS_OBJECT_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("isSealed"),
- .value = njs_native_function(njs_object_is_sealed,
+ .value = njs_native_function(njs_object_is_sealed, 1,
NJS_SKIP_ARG, NJS_OBJECT_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_long_string("preventExtensions"),
- .value = njs_native_function(njs_object_prevent_extensions,
+ .value = njs_native_function(njs_object_prevent_extensions, 1,
NJS_SKIP_ARG, NJS_OBJECT_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("isExtensible"),
- .value = njs_native_function(njs_object_is_extensible,
+ .value = njs_native_function(njs_object_is_extensible, 1,
NJS_SKIP_ARG, NJS_OBJECT_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("valueOf"),
- .value = njs_native_function(njs_object_prototype_value_of, 0),
+ .value = njs_native_function(njs_object_prototype_value_of, 0, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("toString"),
- .value = njs_native_function(njs_object_prototype_to_string, 0),
+ .value = njs_native_function(njs_object_prototype_to_string, 0, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("hasOwnProperty"),
- .value = njs_native_function(njs_object_prototype_has_own_property,
+ .value = njs_native_function(njs_object_prototype_has_own_property, 1,
NJS_OBJECT_ARG, NJS_STRING_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_long_string("propertyIsEnumerable"),
- .value = njs_native_function(njs_object_prototype_prop_is_enumerable,
+ .value = njs_native_function(njs_object_prototype_prop_is_enumerable, 1,
NJS_OBJECT_ARG, NJS_STRING_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("isPrototypeOf"),
- .value = njs_native_function(njs_object_prototype_is_prototype_of,
+ .value = njs_native_function(njs_object_prototype_is_prototype_of, 1,
NJS_OBJECT_ARG, NJS_OBJECT_ARG),
.writable = 1,
.configurable = 1,
return NJS_TOKEN_ERROR;
}
- return njs_parser_function_lambda(vm, parser, function->u.lambda, token);
+ token = njs_parser_function_lambda(vm, parser, function->u.lambda, token);
+
+ function->args_count = function->u.lambda->nargs
+ - function->u.lambda->rest_parameters;
+
+ return token;
}
{
.type = NJS_PROPERTY,
.name = njs_string("toString"),
- .value = njs_native_function(njs_regexp_prototype_to_string, 0),
+ .value = njs_native_function(njs_regexp_prototype_to_string, 0, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("test"),
- .value = njs_native_function(njs_regexp_prototype_test,
+ .value = njs_native_function(njs_regexp_prototype_test, 1,
NJS_OBJECT_ARG, NJS_STRING_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("exec"),
- .value = njs_native_function(njs_regexp_prototype_exec,
+ .value = njs_native_function(njs_regexp_prototype_exec, 1,
NJS_OBJECT_ARG, NJS_STRING_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("bytesFrom"),
- .value = njs_native_function(njs_string_bytes_from, NJS_SKIP_ARG,
+ .value = njs_native_function(njs_string_bytes_from, 0, NJS_SKIP_ARG,
NJS_SKIP_ARG, NJS_STRING_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("fromCharCode"),
- .value = njs_native_function(njs_string_from_char_code, 0),
+ .value = njs_native_function(njs_string_from_char_code, 1, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("fromCodePoint"),
- .value = njs_native_function(njs_string_from_code_point, 0),
+ .value = njs_native_function(njs_string_from_code_point, 1, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("valueOf"),
- .value = njs_native_function(njs_string_prototype_value_of, 0),
+ .value = njs_native_function(njs_string_prototype_value_of, 0, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("toString"),
- .value = njs_native_function(njs_string_prototype_to_string, 0),
+ .value = njs_native_function(njs_string_prototype_to_string, 0, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("concat"),
- .value = njs_native_function(njs_string_prototype_concat, 0),
+ .value = njs_native_function(njs_string_prototype_concat, 1, 0),
.writable = 1,
.configurable = 1,
},
{
.type = NJS_PROPERTY,
.name = njs_string("fromUTF8"),
- .value = njs_native_function(njs_string_prototype_from_utf8,
+ .value = njs_native_function(njs_string_prototype_from_utf8, 0,
NJS_STRING_OBJECT_ARG, NJS_INTEGER_ARG, NJS_INTEGER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("toUTF8"),
- .value = njs_native_function(njs_string_prototype_to_utf8,
+ .value = njs_native_function(njs_string_prototype_to_utf8, 0,
NJS_STRING_OBJECT_ARG, NJS_INTEGER_ARG, NJS_INTEGER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("fromBytes"),
- .value = njs_native_function(njs_string_prototype_from_bytes,
+ .value = njs_native_function(njs_string_prototype_from_bytes, 0,
NJS_STRING_OBJECT_ARG, NJS_INTEGER_ARG, NJS_INTEGER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("toBytes"),
- .value = njs_native_function(njs_string_prototype_to_bytes,
+ .value = njs_native_function(njs_string_prototype_to_bytes, 0,
NJS_STRING_OBJECT_ARG, NJS_INTEGER_ARG, NJS_INTEGER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("slice"),
- .value = njs_native_function(njs_string_prototype_slice,
+ .value = njs_native_function(njs_string_prototype_slice, 2,
NJS_STRING_OBJECT_ARG, NJS_INTEGER_ARG, NJS_INTEGER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("substring"),
- .value = njs_native_function(njs_string_prototype_substring,
+ .value = njs_native_function(njs_string_prototype_substring, 2,
NJS_STRING_OBJECT_ARG, NJS_INTEGER_ARG, NJS_INTEGER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("substr"),
- .value = njs_native_function(njs_string_prototype_substr,
+ .value = njs_native_function(njs_string_prototype_substr, 2,
NJS_STRING_OBJECT_ARG, NJS_INTEGER_ARG, NJS_INTEGER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("charAt"),
- .value = njs_native_function(njs_string_prototype_char_at,
+ .value = njs_native_function(njs_string_prototype_char_at, 1,
NJS_STRING_OBJECT_ARG, NJS_INTEGER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("charCodeAt"),
- .value = njs_native_function(njs_string_prototype_char_code_at,
+ .value = njs_native_function(njs_string_prototype_char_code_at, 1,
NJS_STRING_OBJECT_ARG, NJS_INTEGER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("codePointAt"),
- .value = njs_native_function(njs_string_prototype_char_code_at,
+ .value = njs_native_function(njs_string_prototype_char_code_at, 1,
NJS_STRING_OBJECT_ARG, NJS_INTEGER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("indexOf"),
- .value = njs_native_function(njs_string_prototype_index_of,
+ .value = njs_native_function(njs_string_prototype_index_of, 1,
NJS_STRING_OBJECT_ARG, NJS_STRING_ARG, NJS_INTEGER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("lastIndexOf"),
- .value = njs_native_function(njs_string_prototype_last_index_of,
+ .value = njs_native_function(njs_string_prototype_last_index_of, 1,
NJS_STRING_OBJECT_ARG, NJS_STRING_ARG, NJS_NUMBER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("includes"),
- .value = njs_native_function(njs_string_prototype_includes,
+ .value = njs_native_function(njs_string_prototype_includes, 1,
NJS_STRING_OBJECT_ARG, NJS_STRING_ARG, NJS_INTEGER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("startsWith"),
- .value = njs_native_function(njs_string_prototype_starts_with,
+ .value = njs_native_function(njs_string_prototype_starts_with, 1,
NJS_STRING_OBJECT_ARG, NJS_STRING_ARG, NJS_INTEGER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("endsWith"),
- .value = njs_native_function(njs_string_prototype_ends_with,
+ .value = njs_native_function(njs_string_prototype_ends_with, 1,
NJS_STRING_OBJECT_ARG, NJS_STRING_ARG, NJS_INTEGER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("toLowerCase"),
- .value = njs_native_function(njs_string_prototype_to_lower_case,
+ .value = njs_native_function(njs_string_prototype_to_lower_case, 0,
NJS_STRING_OBJECT_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("toUpperCase"),
- .value = njs_native_function(njs_string_prototype_to_upper_case,
+ .value = njs_native_function(njs_string_prototype_to_upper_case, 0,
NJS_STRING_OBJECT_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("trim"),
- .value = njs_native_function(njs_string_prototype_trim,
+ .value = njs_native_function(njs_string_prototype_trim, 0,
NJS_STRING_OBJECT_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("trimStart"),
- .value = njs_native_function(njs_string_prototype_trim_start,
+ .value = njs_native_function(njs_string_prototype_trim_start, 0,
NJS_STRING_OBJECT_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("trimEnd"),
- .value = njs_native_function(njs_string_prototype_trim_end,
+ .value = njs_native_function(njs_string_prototype_trim_end, 0,
NJS_STRING_OBJECT_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("repeat"),
- .value = njs_native_function(njs_string_prototype_repeat,
+ .value = njs_native_function(njs_string_prototype_repeat, 1,
NJS_STRING_OBJECT_ARG, NJS_INTEGER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("padStart"),
- .value = njs_native_function(njs_string_prototype_pad_start,
+ .value = njs_native_function(njs_string_prototype_pad_start, 1,
NJS_STRING_OBJECT_ARG, NJS_INTEGER_ARG, NJS_STRING_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("padEnd"),
- .value = njs_native_function(njs_string_prototype_pad_end,
+ .value = njs_native_function(njs_string_prototype_pad_end, 1,
NJS_STRING_OBJECT_ARG, NJS_INTEGER_ARG, NJS_STRING_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("search"),
- .value = njs_native_function(njs_string_prototype_search,
+ .value = njs_native_function(njs_string_prototype_search, 1,
NJS_STRING_OBJECT_ARG, NJS_REGEXP_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("match"),
- .value = njs_native_function(njs_string_prototype_match,
+ .value = njs_native_function(njs_string_prototype_match, 1,
NJS_STRING_OBJECT_ARG, NJS_REGEXP_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("split"),
- .value = njs_native_function(njs_string_prototype_split,
+ .value = njs_native_function(njs_string_prototype_split, 2,
NJS_STRING_OBJECT_ARG, NJS_REGEXP_ARG, NJS_INTEGER_ARG),
.writable = 1,
.configurable = 1,
{
.type = NJS_PROPERTY,
.name = njs_string("replace"),
- .value = njs_native_function(njs_string_prototype_replace,
+ .value = njs_native_function(njs_string_prototype_replace, 2,
NJS_STRING_OBJECT_ARG, NJS_REGEXP_ARG, NJS_FUNCTION_ARG),
.writable = 1,
.configurable = 1,
uint8_t args_types[NJS_ARGS_TYPES_MAX];
uint8_t args_offset;
- uint8_t continuation_size;
+ uint8_t args_count;
/* Function is a closure. */
uint8_t closure:1;
}
-#define njs_native_function(_function, ...) { \
+#define njs_native_function(_function, _args_count, ...) { \
.data = { \
.type = NJS_FUNCTION, \
.truth = 1, \
.u.function = & (njs_function_t) { \
.native = 1, \
+ .args_count = _args_count, \
.args_types = { __VA_ARGS__ }, \
.args_offset = 1, \
.u.native = _function, \
return NJS_ERROR;
}
+ function->args_count = lambda->nargs - lambda->rest_parameters;
+
njs_set_function(&vm->retval, function);
return sizeof(njs_vmcode_function_t);