##__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(). */
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;
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);
}
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);
}
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);
}
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;
}
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;