details: https://hg.nginx.org/njs/rev/6808a27d254a branches: changeset: 2298:6808a27d254a user: Dmitry Volyntsev <xei...@nginx.com> date: Thu Mar 14 23:28:03 2024 -0700 description: Introduced njs_vm_prototype() to get a value's prototype.
diffstat: src/njs.h | 2 ++ src/njs_object.c | 2 +- src/njs_object.h | 2 ++ src/njs_vm.c | 13 +++++++++++++ 4 files changed, 18 insertions(+), 1 deletions(-) diffs (59 lines): diff -r 00b89201fb71 -r 6808a27d254a src/njs.h --- a/src/njs.h Thu Mar 14 23:28:03 2024 -0700 +++ b/src/njs.h Thu Mar 14 23:28:03 2024 -0700 @@ -373,6 +373,8 @@ NJS_EXPORT njs_int_t njs_vm_value(njs_vm njs_value_t *retval); NJS_EXPORT njs_function_t *njs_vm_function(njs_vm_t *vm, const njs_str_t *name); NJS_EXPORT njs_bool_t njs_vm_constructor(njs_vm_t *vm); +NJS_EXPORT njs_int_t njs_vm_prototype(njs_vm_t *vm, njs_value_t *value, + njs_value_t *retval); NJS_EXPORT void njs_vm_throw(njs_vm_t *vm, const njs_value_t *value); NJS_EXPORT void njs_vm_error2(njs_vm_t *vm, unsigned error_type, diff -r 00b89201fb71 -r 6808a27d254a src/njs_object.c --- a/src/njs_object.c Thu Mar 14 23:28:03 2024 -0700 +++ b/src/njs_object.c Thu Mar 14 23:28:03 2024 -0700 @@ -1598,7 +1598,7 @@ njs_object_get_own_property(njs_vm_t *vm } -static njs_int_t +njs_int_t njs_object_get_prototype_of(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs, njs_index_t unused, njs_value_t *retval) { diff -r 00b89201fb71 -r 6808a27d254a src/njs_object.h --- a/src/njs_object.h Thu Mar 14 23:28:03 2024 -0700 +++ b/src/njs_object.h Thu Mar 14 23:28:03 2024 -0700 @@ -106,6 +106,8 @@ njs_int_t njs_object_prop_define(njs_vm_ njs_value_t *name, njs_value_t *value, unsigned flags, uint32_t hash); njs_int_t njs_object_prop_descriptor(njs_vm_t *vm, njs_value_t *dest, njs_value_t *value, njs_value_t *setval); +njs_int_t njs_object_get_prototype_of(njs_vm_t *vm, njs_value_t *args, + njs_uint_t nargs, njs_index_t unused, njs_value_t *retval); const char *njs_prop_type_string(njs_object_prop_type_t type); njs_int_t njs_object_prop_init(njs_vm_t *vm, const njs_object_init_t* init, const njs_object_prop_t *base, njs_value_t *value, njs_value_t *retval); diff -r 00b89201fb71 -r 6808a27d254a src/njs_vm.c --- a/src/njs_vm.c Thu Mar 14 23:28:03 2024 -0700 +++ b/src/njs_vm.c Thu Mar 14 23:28:03 2024 -0700 @@ -1201,6 +1201,19 @@ njs_vm_object_keys(njs_vm_t *vm, njs_val njs_int_t +njs_vm_prototype(njs_vm_t *vm, njs_value_t *value, njs_value_t *retval) +{ + njs_value_t arguments[2]; + + njs_set_undefined(&arguments[0]); + njs_value_assign(&arguments[1], value); + + return njs_object_get_prototype_of(vm, njs_value_arg(&arguments), 2, 0, + retval); +} + + +njs_int_t njs_vm_array_alloc(njs_vm_t *vm, njs_value_t *retval, uint32_t spare) { njs_array_t *array; _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-devel