Welcome! Log In Create A New Profile

Advanced

[njs] Added generator debug.

Dmitry Volyntsev
May 18, 2022 03:06AM
details: https://hg.nginx.org/njs/rev/c48ecb7b24d7
branches:
changeset: 1858:c48ecb7b24d7
user: Dmitry Volyntsev <xeioex@nginx.com>
date: Tue May 17 23:26:09 2022 -0700
description:
Added generator debug.

diffstat:

src/njs_generator.c | 22 +++++++++++++++-------
1 files changed, 15 insertions(+), 7 deletions(-)

diffs (74 lines):

diff -r 3e754413e907 -r c48ecb7b24d7 src/njs_generator.c
--- a/src/njs_generator.c Tue May 17 23:26:05 2022 -0700
+++ b/src/njs_generator.c Tue May 17 23:26:09 2022 -0700
@@ -427,6 +427,16 @@ static njs_int_t njs_generate_index_rele
##__VA_ARGS__)


+#ifdef NJS_GENERATOR_DEBUG
+#define njs_generator_debug(msg, ...) njs_printf(msg "\n", ##__VA_ARGS__)
+#define njs_generator_debug_code(code) \
+ njs_disassemble((u_char *) code, NULL, 1, NULL)
+#else
+#define njs_generator_debug(msg, ...)
+#define njs_generator_debug_code(code)
+#endif
+
+
static const njs_str_t no_label = njs_str("");
static const njs_str_t return_label = njs_str("@return");
/* GCC and Clang complain about NULL argument passed to memcmp(). */
@@ -725,7 +735,6 @@ njs_generate(njs_vm_t *vm, njs_generator
return njs_generate_await(vm, generator, node);

default:
- njs_thread_log_debug("unknown token: %d", node->token);
njs_internal_error(vm, "Generator failed: unknown token");

return NJS_ERROR;
@@ -3368,8 +3377,7 @@ njs_generate_3addr_operation_end(njs_vm_

code->dst = node->index;

- njs_thread_log_debug("CODE3 %p, %p, %p",
- code->dst, code->src1, code->src2);
+ njs_generator_debug_code(code);

return njs_generator_stack_pop(vm, generator, generator->context);
}
@@ -3404,7 +3412,7 @@ njs_generate_2addr_operation_end(njs_vm_

code->dst = node->index;

- njs_thread_log_debug("CODE2 %p, %p", code->dst, code->src);
+ njs_generator_debug_code(code);

return njs_generator_stack_pop(vm, generator, NULL);
}
@@ -3453,7 +3461,7 @@ njs_generate_typeof_operation_end(njs_vm

code->dst = node->index;

- njs_thread_log_debug("CODE2 %p, %p", code->dst, code->src);
+ njs_generator_debug_code(code);

return njs_generator_stack_pop(vm, generator, NULL);
}
@@ -4898,7 +4906,7 @@ njs_generate_temp_index_get(njs_vm_t *vm
if (cache != NULL && cache->items != 0) {
last = njs_arr_remove_last(cache);

- njs_thread_log_debug("CACHE %p", *last);
+ njs_generator_debug("INDEX REUSE %04Xz", (size_t) *last);

return *last;
}
@@ -4964,7 +4972,7 @@ njs_generate_index_release(njs_vm_t *vm,
njs_arr_t *cache;
njs_index_t *last;

- njs_thread_log_debug("RELEASE %p", index);
+ njs_generator_debug("INDEX RELEASE %04Xz", (size_t) index);

cache = generator->index_cache;

_______________________________________________
nginx-devel mailing list -- nginx-devel@nginx.org
To unsubscribe send an email to nginx-devel-leave@nginx.org
Subject Author Views Posted

[njs] Added generator debug.

Dmitry Volyntsev 354 May 18, 2022 03:06AM



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

Online Users

Guests: 240
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