]> git.kaiwu.me - njs.git/commitdiff
Introduced njs_vm_prototype() to get a value's prototype.
authorDmitry Volyntsev <xeioex@nginx.com>
Fri, 15 Mar 2024 06:28:03 +0000 (23:28 -0700)
committerDmitry Volyntsev <xeioex@nginx.com>
Fri, 15 Mar 2024 06:28:03 +0000 (23:28 -0700)
src/njs.h
src/njs_object.c
src/njs_object.h
src/njs_vm.c

index e3c72a5b85a044870263f7b122fe69761347344e..4dfa2da65814504fd64aedf55b8e0de2812e1233 100644 (file)
--- a/src/njs.h
+++ b/src/njs.h
@@ -373,6 +373,8 @@ NJS_EXPORT njs_int_t njs_vm_value(njs_vm_t *vm, const njs_str_t *path,
     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,
index e89019587bfec8039033ea1c5f28864202211769..2a173e8bceb50ca128d8c39ca94b6bb3c50006ce 100644 (file)
@@ -1598,7 +1598,7 @@ njs_object_get_own_property(njs_vm_t *vm, njs_value_t *args,
 }
 
 
-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)
 {
index d2a6a79711ac5349c94537644b516619d8a34197..1ed0b69e0fa0f831c4b7f175b7e2b2ebdbbf395f 100644 (file)
@@ -106,6 +106,8 @@ njs_int_t njs_object_prop_define(njs_vm_t *vm, njs_value_t *object,
     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);
index b33c2dd91fed74a5e3106d7801a460468ee205b1..eee6dfbee2ef0dd0322bd64b0d0ac385ea83d459 100644 (file)
@@ -1200,6 +1200,19 @@ njs_vm_object_keys(njs_vm_t *vm, njs_value_t *value, njs_value_t *retval)
 }
 
 
+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)
 {