Welcome! Log In Create A New Profile

Advanced

[njs] Introduced njs_object_proto_lookup() where appropriate.

Dmitry Volyntsev
September 29, 2022 08:06PM
details: https://hg.nginx.org/njs/rev/7f43ac9cdc30
branches:
changeset: 1970:7f43ac9cdc30
user: Dmitry Volyntsev <xeioex@nginx.com>
date: Thu Sep 29 16:32:45 2022 -0700
description:
Introduced njs_object_proto_lookup() where appropriate.

diffstat:

src/njs_function.c | 21 +++++----------------
src/njs_string.c | 16 +++-------------
2 files changed, 8 insertions(+), 29 deletions(-)

diffs (68 lines):

diff -r c2a05d35ad72 -r 7f43ac9cdc30 src/njs_function.c
--- a/src/njs_function.c Thu Sep 29 00:47:43 2022 -0700
+++ b/src/njs_function.c Thu Sep 29 16:32:45 2022 -0700
@@ -1302,26 +1302,15 @@ njs_int_t
njs_function_instance_length(njs_vm_t *vm, njs_object_prop_t *prop,
njs_value_t *value, njs_value_t *setval, njs_value_t *retval)
{
- njs_object_t *proto;
njs_function_t *function;

- proto = njs_object(value);
-
- do {
- if (njs_fast_path(proto->type == NJS_FUNCTION)) {
- break;
- }
-
- proto = proto->__proto__;
- } while (proto != NULL);
-
- if (njs_slow_path(proto == NULL)) {
- njs_internal_error(vm, "no function in proto chain");
- return NJS_ERROR;
+ function = njs_object_proto_lookup(njs_object(value), NJS_FUNCTION,
+ njs_function_t);
+ if (njs_slow_path(function == NULL)) {
+ njs_set_undefined(retval);
+ return NJS_DECLINED;
}

- function = (njs_function_t *) proto;
-
njs_set_number(retval, function->args_count);

return NJS_OK;
diff -r c2a05d35ad72 -r 7f43ac9cdc30 src/njs_string.c
--- a/src/njs_string.c Thu Sep 29 00:47:43 2022 -0700
+++ b/src/njs_string.c Thu Sep 29 16:32:45 2022 -0700
@@ -664,7 +664,6 @@ njs_string_instance_length(njs_vm_t *vm,
{
size_t size;
uintptr_t length;
- njs_object_t *proto;
njs_object_value_t *ov;

/*
@@ -674,18 +673,9 @@ njs_string_instance_length(njs_vm_t *vm,
length = 0;

if (njs_slow_path(njs_is_object(value))) {
- proto = njs_object(value);
-
- do {
- if (njs_fast_path(proto->type == NJS_OBJECT_VALUE)) {
- break;
- }
-
- proto = proto->__proto__;
- } while (proto != NULL);
-
- if (proto != NULL) {
- ov = (njs_object_value_t *) proto;
+ ov = njs_object_proto_lookup(njs_object(value), NJS_OBJECT_VALUE,
+ njs_object_value_t);
+ if (ov != NULL) {
value = &ov->value;
}
}
_______________________________________________
nginx-devel mailing list -- nginx-devel@nginx.org
To unsubscribe send an email to nginx-devel-leave@nginx.org
Subject Author Views Posted

[njs] Introduced njs_object_proto_lookup() where appropriate.

Dmitry Volyntsev 360 September 29, 2022 08:06PM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 190
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready