]> git.kaiwu.me - njs.git/commitdiff
Added default number of arguments expected by builtin functions.
authorAlexander Borisov <alexander.borisov@nginx.com>
Fri, 11 Oct 2019 16:41:51 +0000 (19:41 +0300)
committerAlexander Borisov <alexander.borisov@nginx.com>
Fri, 11 Oct 2019 16:41:51 +0000 (19:41 +0300)
This closes #207 issue on GitHub.

17 files changed:
src/njs_array.c
src/njs_boolean.c
src/njs_builtin.c
src/njs_crypto.c
src/njs_date.c
src/njs_error.c
src/njs_fs.c
src/njs_function.c
src/njs_json.c
src/njs_math.c
src/njs_number.c
src/njs_object.c
src/njs_parser.c
src/njs_regexp.c
src/njs_string.c
src/njs_value.h
src/njs_vmcode.c

index 9fb178ee53cc6aedc86040aeb06e8f7e939d77d5..1d5f38b0eb95fb84714eb70a05aa31ed542412d7 100644 (file)
@@ -304,7 +304,7 @@ static const njs_object_prop_t  njs_array_constructor_properties[] =
     {
         .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,
     },
@@ -314,7 +314,7 @@ static const njs_object_prop_t  njs_array_constructor_properties[] =
     {
         .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,
     },
@@ -2736,7 +2736,7 @@ static const njs_object_prop_t  njs_array_prototype_properties[] =
     {
         .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,
@@ -2745,7 +2745,7 @@ static const njs_object_prop_t  njs_array_prototype_properties[] =
     {
         .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,
     },
@@ -2753,7 +2753,7 @@ static const njs_object_prop_t  njs_array_prototype_properties[] =
     {
         .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,
     },
@@ -2761,7 +2761,7 @@ static const njs_object_prop_t  njs_array_prototype_properties[] =
     {
         .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,
     },
@@ -2769,7 +2769,7 @@ static const njs_object_prop_t  njs_array_prototype_properties[] =
     {
         .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,
     },
@@ -2777,7 +2777,7 @@ static const njs_object_prop_t  njs_array_prototype_properties[] =
     {
         .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,
@@ -2786,7 +2786,7 @@ static const njs_object_prop_t  njs_array_prototype_properties[] =
     {
         .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,
@@ -2795,7 +2795,7 @@ static const njs_object_prop_t  njs_array_prototype_properties[] =
     {
         .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,
     },
@@ -2803,7 +2803,7 @@ static const njs_object_prop_t  njs_array_prototype_properties[] =
     {
         .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,
@@ -2812,7 +2812,7 @@ static const njs_object_prop_t  njs_array_prototype_properties[] =
     {
         .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,
     },
@@ -2820,7 +2820,7 @@ static const njs_object_prop_t  njs_array_prototype_properties[] =
     {
         .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,
@@ -2829,7 +2829,7 @@ static const njs_object_prop_t  njs_array_prototype_properties[] =
     {
         .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,
@@ -2839,7 +2839,7 @@ static const njs_object_prop_t  njs_array_prototype_properties[] =
     {
         .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,
@@ -2848,7 +2848,7 @@ static const njs_object_prop_t  njs_array_prototype_properties[] =
     {
         .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,
     },
@@ -2856,7 +2856,7 @@ static const njs_object_prop_t  njs_array_prototype_properties[] =
     {
         .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,
     },
@@ -2864,7 +2864,7 @@ static const njs_object_prop_t  njs_array_prototype_properties[] =
     {
         .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,
     },
@@ -2873,7 +2873,7 @@ static const njs_object_prop_t  njs_array_prototype_properties[] =
     {
         .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,
@@ -2883,7 +2883,7 @@ static const njs_object_prop_t  njs_array_prototype_properties[] =
     {
         .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,
     },
@@ -2892,7 +2892,7 @@ static const njs_object_prop_t  njs_array_prototype_properties[] =
     {
         .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,
     },
@@ -2901,7 +2901,7 @@ static const njs_object_prop_t  njs_array_prototype_properties[] =
     {
         .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,
     },
@@ -2909,7 +2909,7 @@ static const njs_object_prop_t  njs_array_prototype_properties[] =
     {
         .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,
     },
@@ -2917,7 +2917,7 @@ static const njs_object_prop_t  njs_array_prototype_properties[] =
     {
         .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,
     },
@@ -2925,7 +2925,7 @@ static const njs_object_prop_t  njs_array_prototype_properties[] =
     {
         .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,
     },
@@ -2933,7 +2933,7 @@ static const njs_object_prop_t  njs_array_prototype_properties[] =
     {
         .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,
     },
index 79c54beddb760184f885965c9e8d0891eb713202..651392360dfaa220d6eb70c64e9ae560a5156fb4 100644 (file)
@@ -145,7 +145,7 @@ static const njs_object_prop_t  njs_boolean_prototype_properties[] =
     {
         .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,
     },
@@ -153,7 +153,7 @@ static const njs_object_prop_t  njs_boolean_prototype_properties[] =
     {
         .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,
     },
index 614fbf74cbfcdb83f11e68105b4ced76a98503f1..a66a6303678c1fdfbe5fd27456402f451f5be721 100644 (file)
@@ -1117,7 +1117,7 @@ static const njs_object_prop_t  njs_njs_object_properties[] =
     {
         .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,
     },
index 1993fad157d8fe57e31f97536fee116ab2550a31..2e79e5e02a60a5780c029a5febd91ffbd40c961c 100644 (file)
@@ -323,7 +323,7 @@ static const njs_object_prop_t  njs_hash_prototype_properties[] =
     {
         .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,
     },
@@ -331,7 +331,7 @@ static const njs_object_prop_t  njs_hash_prototype_properties[] =
     {
         .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,
@@ -340,7 +340,7 @@ static const njs_object_prop_t  njs_hash_prototype_properties[] =
     {
         .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,
@@ -585,7 +585,7 @@ static const njs_object_prop_t  njs_hmac_prototype_properties[] =
     {
         .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,
     },
@@ -593,7 +593,7 @@ static const njs_object_prop_t  njs_hmac_prototype_properties[] =
     {
         .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,
@@ -602,7 +602,7 @@ static const njs_object_prop_t  njs_hmac_prototype_properties[] =
     {
         .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,
@@ -650,7 +650,7 @@ static const njs_object_prop_t  njs_crypto_object_properties[] =
     {
         .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,
@@ -659,7 +659,7 @@ static const njs_object_prop_t  njs_crypto_object_properties[] =
     {
         .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,
index f697f08cc35e398fa55fe0b1f3fcc8686098749a..379ae9c8567a900b89d5658167bcb4918c4b0cbb 100644 (file)
@@ -1016,7 +1016,7 @@ static const njs_object_prop_t  njs_date_constructor_properties[] =
     {
         .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,
     },
@@ -1024,7 +1024,7 @@ static const njs_object_prop_t  njs_date_constructor_properties[] =
     {
         .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,
     },
@@ -1032,7 +1032,7 @@ static const njs_object_prop_t  njs_date_constructor_properties[] =
     {
         .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,
@@ -2034,7 +2034,8 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
     },
@@ -2042,7 +2043,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2051,7 +2052,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2060,7 +2061,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2069,7 +2070,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2078,7 +2079,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2087,7 +2088,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2096,7 +2097,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2105,7 +2106,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2114,7 +2115,8 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
     },
@@ -2122,7 +2124,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2131,7 +2133,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2140,7 +2142,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2149,7 +2151,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2158,7 +2160,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2167,7 +2169,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2176,7 +2178,8 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
     },
@@ -2184,7 +2187,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2193,7 +2196,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2202,7 +2205,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2211,7 +2214,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2220,7 +2223,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2229,7 +2232,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2238,7 +2241,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2247,7 +2250,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2256,7 +2259,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2265,7 +2268,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2274,7 +2277,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2283,7 +2286,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2292,7 +2295,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2301,7 +2304,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2310,7 +2313,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2319,7 +2322,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2329,7 +2332,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2339,7 +2342,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2349,7 +2352,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2359,7 +2362,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2368,7 +2371,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2377,7 +2380,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2386,7 +2389,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2395,7 +2398,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2405,7 +2408,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
@@ -2415,7 +2418,7 @@ static const njs_object_prop_t  njs_date_prototype_properties[] =
     {
         .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,
     },
index e60178d746e108a48b00b938e0a747e959b68520..6ca7b11fbcc076e15dadb141fc98d78cc4ec2471 100644 (file)
@@ -734,7 +734,7 @@ static const njs_object_prop_t  njs_error_prototype_properties[] =
     {
         .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,
     },
@@ -742,7 +742,7 @@ static const njs_object_prop_t  njs_error_prototype_properties[] =
     {
         .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,
     },
@@ -816,7 +816,8 @@ static const njs_object_prop_t  njs_internal_error_prototype_properties[] =
     {
         .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,
     },
index a70586ac115f314734cabf635a5f1329d69a7e73..3256b3189168bf0af0d074d7104d01794a142ed3 100644 (file)
@@ -1140,7 +1140,7 @@ static const njs_object_prop_t  njs_fs_object_properties[] =
     {
         .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,
     },
@@ -1148,7 +1148,7 @@ static const njs_object_prop_t  njs_fs_object_properties[] =
     {
         .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,
     },
@@ -1156,7 +1156,7 @@ static const njs_object_prop_t  njs_fs_object_properties[] =
     {
         .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,
     },
@@ -1164,7 +1164,7 @@ static const njs_object_prop_t  njs_fs_object_properties[] =
     {
         .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,
     },
@@ -1172,7 +1172,7 @@ static const njs_object_prop_t  njs_fs_object_properties[] =
     {
         .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,
     },
@@ -1180,7 +1180,7 @@ static const njs_object_prop_t  njs_fs_object_properties[] =
     {
         .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,
     },
@@ -1188,7 +1188,7 @@ static const njs_object_prop_t  njs_fs_object_properties[] =
     {
         .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,
index 96a23ac0b9c28cb3007024bfddedf2e5178f6104..2a4ee5012c1807acae26f4ce7afad4fa49cbeee4 100644 (file)
@@ -1032,10 +1032,8 @@ static njs_int_t
 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);
 
@@ -1054,26 +1052,7 @@ njs_function_instance_length(njs_vm_t *vm, njs_value_t *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;
 }
@@ -1224,6 +1203,13 @@ njs_function_prototype_bind(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs,
         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);
 
@@ -1273,7 +1259,7 @@ static const njs_object_prop_t  njs_function_prototype_properties[] =
     {
         .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,
     },
@@ -1281,7 +1267,7 @@ static const njs_object_prop_t  njs_function_prototype_properties[] =
     {
         .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,
     },
@@ -1289,7 +1275,7 @@ static const njs_object_prop_t  njs_function_prototype_properties[] =
     {
         .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,
     },
index e81e94943c7f932a6984b3ca8f3de9eec5cba6e9..feeeb40700674ba71c21a204a7de05dbf091da48 100644 (file)
@@ -2101,7 +2101,7 @@ static const njs_object_prop_t  njs_json_object_properties[] =
     {
         .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,
@@ -2112,7 +2112,7 @@ static const njs_object_prop_t  njs_json_object_properties[] =
     {
         .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,
index a2cc9dd6617f28f70f1777cc1fdba0fcae687b79..48306e3e18c5be8dcf8ea7a9183a8783e9c99486 100644 (file)
@@ -833,7 +833,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
@@ -842,7 +842,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
@@ -852,7 +852,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
@@ -861,7 +861,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
@@ -871,7 +871,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
@@ -880,7 +880,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
@@ -889,7 +889,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
@@ -899,7 +899,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
@@ -909,7 +909,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
@@ -918,7 +918,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
@@ -928,7 +928,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
@@ -937,7 +937,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
@@ -947,7 +947,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
@@ -956,7 +956,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
@@ -966,7 +966,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
@@ -975,7 +975,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
@@ -985,7 +985,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
@@ -995,7 +995,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
     },
@@ -1004,7 +1004,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
@@ -1013,7 +1013,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
@@ -1023,7 +1023,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
@@ -1033,7 +1033,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
@@ -1043,7 +1043,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
@@ -1052,7 +1052,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
     },
@@ -1060,7 +1060,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
     },
@@ -1068,7 +1068,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
@@ -1077,7 +1077,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
     },
@@ -1085,7 +1085,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
@@ -1095,7 +1095,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
@@ -1104,7 +1104,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
@@ -1114,7 +1114,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
@@ -1123,7 +1123,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
@@ -1132,7 +1132,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
@@ -1142,7 +1142,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
@@ -1152,7 +1152,7 @@ static const njs_object_prop_t  njs_math_object_properties[] =
     {
         .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,
index bdb43d5ae632f7d0d04c5f5e6ce0d101d046bcbf..0a4d6d991af6ae7cabd586a5d48446750be425f8 100644 (file)
@@ -415,7 +415,7 @@ static const njs_object_prop_t  njs_number_constructor_properties[] =
     {
         .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,
     },
@@ -424,7 +424,7 @@ static const njs_object_prop_t  njs_number_constructor_properties[] =
     {
         .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,
     },
@@ -433,7 +433,7 @@ static const njs_object_prop_t  njs_number_constructor_properties[] =
     {
         .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,
     },
@@ -442,7 +442,7 @@ static const njs_object_prop_t  njs_number_constructor_properties[] =
     {
         .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,
     },
@@ -451,7 +451,7 @@ static const njs_object_prop_t  njs_number_constructor_properties[] =
     {
         .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,
@@ -461,7 +461,7 @@ static const njs_object_prop_t  njs_number_constructor_properties[] =
     {
         .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,
@@ -873,7 +873,7 @@ static const njs_object_prop_t  njs_number_prototype_properties[] =
     {
         .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,
     },
@@ -881,7 +881,7 @@ static const njs_object_prop_t  njs_number_prototype_properties[] =
     {
         .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,
@@ -890,7 +890,7 @@ static const njs_object_prop_t  njs_number_prototype_properties[] =
     {
         .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,
@@ -899,7 +899,7 @@ static const njs_object_prop_t  njs_number_prototype_properties[] =
     {
         .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,
@@ -908,7 +908,7 @@ static const njs_object_prop_t  njs_number_prototype_properties[] =
     {
         .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,
index 961ba1f72de058725b5d6dbfc04e3191014ee762..3633b4a46cb6232aa243e31c58849a1f811db22d 100644 (file)
@@ -1679,7 +1679,7 @@ static const njs_object_prop_t  njs_object_constructor_properties[] =
     {
         .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,
     },
@@ -1688,7 +1688,7 @@ static const njs_object_prop_t  njs_object_constructor_properties[] =
     {
         .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,
@@ -1698,7 +1698,7 @@ static const njs_object_prop_t  njs_object_constructor_properties[] =
     {
         .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,
@@ -1708,7 +1708,7 @@ static const njs_object_prop_t  njs_object_constructor_properties[] =
     {
         .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,
@@ -1718,7 +1718,7 @@ static const njs_object_prop_t  njs_object_constructor_properties[] =
     {
         .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,
@@ -1729,7 +1729,7 @@ static const njs_object_prop_t  njs_object_constructor_properties[] =
     {
         .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,
@@ -1740,7 +1740,7 @@ static const njs_object_prop_t  njs_object_constructor_properties[] =
     {
         .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,
@@ -1751,7 +1751,7 @@ static const njs_object_prop_t  njs_object_constructor_properties[] =
     {
         .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,
@@ -1761,7 +1761,7 @@ static const njs_object_prop_t  njs_object_constructor_properties[] =
     {
         .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,
@@ -1771,7 +1771,7 @@ static const njs_object_prop_t  njs_object_constructor_properties[] =
     {
         .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,
@@ -1781,7 +1781,7 @@ static const njs_object_prop_t  njs_object_constructor_properties[] =
     {
         .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,
@@ -1791,7 +1791,7 @@ static const njs_object_prop_t  njs_object_constructor_properties[] =
     {
         .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,
@@ -1801,7 +1801,7 @@ static const njs_object_prop_t  njs_object_constructor_properties[] =
     {
         .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,
@@ -1811,7 +1811,7 @@ static const njs_object_prop_t  njs_object_constructor_properties[] =
     {
         .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,
@@ -1821,7 +1821,7 @@ static const njs_object_prop_t  njs_object_constructor_properties[] =
     {
         .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,
@@ -1831,7 +1831,7 @@ static const njs_object_prop_t  njs_object_constructor_properties[] =
     {
         .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,
@@ -2253,7 +2253,7 @@ static const njs_object_prop_t  njs_object_prototype_properties[] =
     {
         .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,
     },
@@ -2261,7 +2261,7 @@ static const njs_object_prop_t  njs_object_prototype_properties[] =
     {
         .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,
     },
@@ -2269,7 +2269,7 @@ static const njs_object_prop_t  njs_object_prototype_properties[] =
     {
         .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,
@@ -2278,7 +2278,7 @@ static const njs_object_prop_t  njs_object_prototype_properties[] =
     {
         .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,
@@ -2287,7 +2287,7 @@ static const njs_object_prop_t  njs_object_prototype_properties[] =
     {
         .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,
index 8b870fe7b860dcd9f7c7953ee0653f2ff6f92f9e..750ebc04133fdc84da15690c3732f161eccbdd75 100644 (file)
@@ -667,7 +667,12 @@ njs_parser_function_declaration(njs_vm_t *vm, njs_parser_t *parser)
         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;
 }
 
 
index 00e85d3d2704c7458e5828a64c1ca56962a8de45..3a45326379f0473c76fa51fd8dc9ed0ced98244d 100644 (file)
@@ -1232,7 +1232,7 @@ static const njs_object_prop_t  njs_regexp_prototype_properties[] =
     {
         .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,
     },
@@ -1240,7 +1240,7 @@ static const njs_object_prop_t  njs_regexp_prototype_properties[] =
     {
         .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,
@@ -1249,7 +1249,7 @@ static const njs_object_prop_t  njs_regexp_prototype_properties[] =
     {
         .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,
index 23d8e51d77514ce65b9b6325cea63845c3b53df1..04892eaa2697e1afe0afdd53b83a7259e3eda892 100644 (file)
@@ -596,7 +596,7 @@ static const njs_object_prop_t  njs_string_constructor_properties[] =
     {
         .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,
@@ -606,7 +606,7 @@ static const njs_object_prop_t  njs_string_constructor_properties[] =
     {
         .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,
     },
@@ -615,7 +615,7 @@ static const njs_object_prop_t  njs_string_constructor_properties[] =
     {
         .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,
     },
@@ -4084,7 +4084,7 @@ static const njs_object_prop_t  njs_string_prototype_properties[] =
     {
         .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,
     },
@@ -4092,7 +4092,7 @@ static const njs_object_prop_t  njs_string_prototype_properties[] =
     {
         .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,
     },
@@ -4100,7 +4100,7 @@ static const njs_object_prop_t  njs_string_prototype_properties[] =
     {
         .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,
     },
@@ -4108,7 +4108,7 @@ static const njs_object_prop_t  njs_string_prototype_properties[] =
     {
         .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,
@@ -4117,7 +4117,7 @@ static const njs_object_prop_t  njs_string_prototype_properties[] =
     {
         .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,
@@ -4126,7 +4126,7 @@ static const njs_object_prop_t  njs_string_prototype_properties[] =
     {
         .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,
@@ -4135,7 +4135,7 @@ static const njs_object_prop_t  njs_string_prototype_properties[] =
     {
         .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,
@@ -4144,7 +4144,7 @@ static const njs_object_prop_t  njs_string_prototype_properties[] =
     {
         .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,
@@ -4153,7 +4153,7 @@ static const njs_object_prop_t  njs_string_prototype_properties[] =
     {
         .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,
@@ -4162,7 +4162,7 @@ static const njs_object_prop_t  njs_string_prototype_properties[] =
     {
         .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,
@@ -4171,7 +4171,7 @@ static const njs_object_prop_t  njs_string_prototype_properties[] =
     {
         .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,
@@ -4180,7 +4180,7 @@ static const njs_object_prop_t  njs_string_prototype_properties[] =
     {
         .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,
@@ -4190,7 +4190,7 @@ static const njs_object_prop_t  njs_string_prototype_properties[] =
     {
         .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,
@@ -4199,7 +4199,7 @@ static const njs_object_prop_t  njs_string_prototype_properties[] =
     {
         .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,
@@ -4208,7 +4208,7 @@ static const njs_object_prop_t  njs_string_prototype_properties[] =
     {
         .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,
@@ -4218,7 +4218,7 @@ static const njs_object_prop_t  njs_string_prototype_properties[] =
     {
         .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,
@@ -4228,7 +4228,7 @@ static const njs_object_prop_t  njs_string_prototype_properties[] =
     {
         .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,
@@ -4238,7 +4238,7 @@ static const njs_object_prop_t  njs_string_prototype_properties[] =
     {
         .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,
@@ -4247,7 +4247,7 @@ static const njs_object_prop_t  njs_string_prototype_properties[] =
     {
         .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,
@@ -4256,7 +4256,7 @@ static const njs_object_prop_t  njs_string_prototype_properties[] =
     {
         .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,
@@ -4265,7 +4265,7 @@ static const njs_object_prop_t  njs_string_prototype_properties[] =
     {
         .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,
@@ -4275,7 +4275,7 @@ static const njs_object_prop_t  njs_string_prototype_properties[] =
     {
         .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,
@@ -4285,7 +4285,7 @@ static const njs_object_prop_t  njs_string_prototype_properties[] =
     {
         .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,
@@ -4295,7 +4295,7 @@ static const njs_object_prop_t  njs_string_prototype_properties[] =
     {
         .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,
@@ -4305,7 +4305,7 @@ static const njs_object_prop_t  njs_string_prototype_properties[] =
     {
         .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,
@@ -4315,7 +4315,7 @@ static const njs_object_prop_t  njs_string_prototype_properties[] =
     {
         .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,
@@ -4324,7 +4324,7 @@ static const njs_object_prop_t  njs_string_prototype_properties[] =
     {
         .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,
@@ -4333,7 +4333,7 @@ static const njs_object_prop_t  njs_string_prototype_properties[] =
     {
         .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,
@@ -4342,7 +4342,7 @@ static const njs_object_prop_t  njs_string_prototype_properties[] =
     {
         .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,
@@ -4351,7 +4351,7 @@ static const njs_object_prop_t  njs_string_prototype_properties[] =
     {
         .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,
index dd946b215e6efde6d2e8520297a76fff9c0ac4e6..032ee4ab230009e547b1513d75323f50e691f5ba 100644 (file)
@@ -242,7 +242,7 @@ struct njs_function_s {
 
     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;
@@ -391,12 +391,13 @@ typedef struct {
 }
 
 
-#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,                                            \
index 21af6c290556641c3fe6dff0db46a4630302fd1f..bb90be00c679c4160abb8c8b597690788011a8b9 100644 (file)
@@ -992,6 +992,8 @@ njs_vmcode_function(njs_vm_t *vm, u_char *pc)
         return NJS_ERROR;
     }
 
+    function->args_count = lambda->nargs - lambda->rest_parameters;
+
     njs_set_function(&vm->retval, function);
 
     return sizeof(njs_vmcode_function_t);