64#define DUK__ALLOWED_STANDARD_SPECIFIERS "diouxXeEfFgGaAcsCSpnm"
67#define DUK__MAX_FORMAT_TAG_LENGTH 32
70#define DUK__DEEP_DEPTH_LIMIT 8
73#define DUK__LOOP_STACK_DEPTH 256
76DUK_LOCAL const char *duk__bc_optab[64] = {
77 "LDREG",
"STREG",
"LDCONST",
"LDINT",
"LDINTX",
"MPUTOBJ",
"MPUTOBJI",
"MPUTARR",
"MPUTARRI",
"NEW",
78 "NEWI",
"REGEXP",
"CSREG",
"CSREGI",
"GETVAR",
"PUTVAR",
"DECLVAR",
"DELVAR",
"CSVAR",
"CSVARI",
79 "CLOSURE",
"GETPROP",
"PUTPROP",
"DELPROP",
"CSPROP",
"CSPROPI",
"ADD",
"SUB",
"MUL",
"DIV",
80 "MOD",
"BAND",
"BOR",
"BXOR",
"BASL",
"BLSR",
"BASR",
"EQ",
"NEQ",
"SEQ",
81 "SNEQ",
"GT",
"GE",
"LT",
"LE",
"IF",
"JUMP",
"RETURN",
"CALL",
"CALLI",
82 "TRYCATCH",
"EXTRA",
"PREINCR",
"PREDECR",
"POSTINCR",
"POSTDECR",
"PREINCV",
"PREDECV",
"POSTINCV",
"POSTDECV",
83 "PREINCP",
"PREDECP",
"POSTINCP",
"POSTDECP"
86DUK_LOCAL const char *duk__bc_extraoptab[256] = {
87 "NOP",
"INVALID",
"LDTHIS",
"LDUNDEF",
"LDNULL",
"LDTRUE",
"LDFALSE",
"NEWOBJ",
"NEWARR",
"SETALEN",
88 "TYPEOF",
"TYPEOFID",
"INITENUM",
"NEXTENUM",
"INITSET",
"INITSETI",
"INITGET",
"INITGETI",
"ENDTRY",
"ENDCATCH",
89 "ENDFIN",
"THROW",
"INVLHS",
"UNM",
"UNP",
"DEBUGGER",
"BREAK",
"CONTINUE",
"BNOT",
"LNOT",
90 "INSTOF",
"IN",
"LABEL",
"ENDLABEL",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
91 "XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
93 "XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
94 "XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
95 "XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
96 "XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
97 "XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
99 "XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
100 "XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
101 "XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
102 "XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
103 "XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
105 "XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
106 "XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
107 "XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
108 "XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
109 "XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
111 "XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
112 "XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
113 "XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
114 "XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
115 "XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
117 "XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX"
120typedef struct duk__dprint_state duk__dprint_state;
121struct duk__dprint_state {
153 duk_fixedbuffer *fb = st->fb;
156 duk_fb_sprintf(fb,
"(%p)", (
void *) h);
166 for (i = 0; i < (
duk_size_t)
sizeof(*h); i++) {
167 duk_fb_sprintf(fb,
"%02lx", (
unsigned long) ((duk_uint8_t *)h)[i]);
172#ifdef DUK_USE_REFERENCE_COUNTING
174 duk_fb_sprintf(fb,
"[h_next=%p,h_prev=%p,h_refcount=%lu,h_flags=%08lx,type=%ld,"
175 "reachable=%ld,temproot=%ld,finalizable=%ld,finalized=%ld]",
188 duk_fb_sprintf(fb,
"[h_next=%p,h_flags=%08lx,type=%ld,reachable=%ld,temproot=%ld,finalizable=%ld,finalized=%ld]",
201 duk_fixedbuffer *fb = st->fb;
204 duk_fb_sprintf(fb,
"(%p)", (
void *) h);
214 for (i = 0; i < (
duk_size_t)
sizeof(*h); i++) {
215 duk_fb_sprintf(fb,
"%02lx", (
unsigned long) ((duk_uint8_t *)h)[i]);
220#ifdef DUK_USE_REFERENCE_COUNTING
222 duk_fb_sprintf(fb,
"[h_refcount=%lu,h_flags=%08lx,type=%ld,reachable=%ld,temproot=%ld,finalizable=%ld,finalized=%ld]",
233 duk_fb_sprintf(fb,
"[h_flags=%08lx,type=%ld,reachable=%ld,temproot=%ld,finalizable=%ld,finalized=%ld]",
245 duk_fixedbuffer *fb = st->fb;
246 const duk_uint8_t *p;
247 const duk_uint8_t *p_end;
251 if (duk_fb_is_full(fb)) {
255 duk__print_shared_heaphdr_string(st, &h->
hdr);
258 duk_fb_put_cstring(fb,
"NULL");
277 duk_uint8_t ch = *p++;
281 duk_fb_sprintf(fb,
"\\\\");
282 }
else if (ch ==
'"') {
283 duk_fb_sprintf(fb,
"\\\"");
284 }
else if (ch >= 0x20 && ch <= 0x7e) {
285 duk_fb_put_byte(fb, ch);
286 }
else if (ch == 0xff && !quotes) {
292 duk_fb_sprintf(fb,
"\\x%02lx", (
unsigned long) ch);
298#ifdef DUK_USE_REFERENCE_COUNTING
307#define DUK__COMMA() do { \
311 duk_fb_put_byte(fb, (duk_uint8_t) DUK_ASC_COMMA); \
316 duk_fixedbuffer *fb = st->fb;
321 const char *brace1 =
"{";
322 const char *brace2 =
"}";
325 if (duk_fb_is_full(fb)) {
329 duk__print_shared_heaphdr(st, &h->
hdr);
337 duk_fb_put_cstring(fb,
"NULL");
341 if (st->depth >= st->depth_limit) {
343 duk_fb_sprintf(fb,
"%sobject/compiledfunction %p%s", (
const char *) brace1, (
void *) h, (
const char *) brace2);
345 duk_fb_sprintf(fb,
"%sobject/nativefunction %p%s", (
const char *) brace1, (
void *) h, (
const char *) brace2);
347 duk_fb_sprintf(fb,
"%sobject/thread %p%s", (
const char *) brace1, (
void *) h, (
const char *) brace2);
349 duk_fb_sprintf(fb,
"%sobject %p%s", (
const char *) brace1, (
void *) h, (
const char *) brace2);
355 if (st->loop_stack[i] == h) {
356 duk_fb_sprintf(fb,
"%sLOOP:%p%s", (
const char *) brace1, (
void *) h, (
const char *) brace2);
364 if (st->loop_stack_index >= st->loop_stack_limit) {
365 duk_fb_sprintf(fb,
"%sOUT-OF-LOOP-STACK%s", (
const char *) brace1, (
const char *) brace2);
368 st->loop_stack[st->loop_stack_index++] = h;
369 pushed_loopstack = 1;
376 duk_fb_put_cstring(fb, brace1);
379 duk_uint32_t a_limit;
389 while (a_limit > 0) {
398 for (i = 0; i < a_limit; i++) {
401 duk__print_tval(st, tv);
415 duk__print_hstring(st, key, 0);
418 duk_fb_sprintf(fb,
"[get:%p,set:%p]",
423 duk__print_tval(st, tv);
432 DUK__COMMA(); duk_fb_sprintf(fb,
"__extensible:true");
437 DUK__COMMA(); duk_fb_sprintf(fb,
"__constructable:true");
442 DUK__COMMA(); duk_fb_sprintf(fb,
"__bound:true");
447 DUK__COMMA(); duk_fb_sprintf(fb,
"__compiledfunction:true");
452 DUK__COMMA(); duk_fb_sprintf(fb,
"__nativefunction:true");
457 DUK__COMMA(); duk_fb_sprintf(fb,
"__thread:true");
462 DUK__COMMA(); duk_fb_sprintf(fb,
"__array_part:true");
467 DUK__COMMA(); duk_fb_sprintf(fb,
"__strict:true");
472 DUK__COMMA(); duk_fb_sprintf(fb,
"__newenv:true");
477 DUK__COMMA(); duk_fb_sprintf(fb,
"__namebinding:true");
482 DUK__COMMA(); duk_fb_sprintf(fb,
"__createargs:true");
487 DUK__COMMA(); duk_fb_sprintf(fb,
"__envrecclosed:true");
492 DUK__COMMA(); duk_fb_sprintf(fb,
"__exotic_array:true");
497 DUK__COMMA(); duk_fb_sprintf(fb,
"__exotic_stringobj:true");
502 DUK__COMMA(); duk_fb_sprintf(fb,
"__exotic_arguments:true");
507 DUK__COMMA(); duk_fb_sprintf(fb,
"__exotic_dukfunc:true");
512 DUK__COMMA(); duk_fb_sprintf(fb,
"__exotic_bufferobj:true");
517 DUK__COMMA(); duk_fb_sprintf(fb,
"__exotic_proxyobj:true");
524 DUK__COMMA(); duk_fb_put_cstring(fb,
"__data:");
526 DUK__COMMA(); duk_fb_sprintf(fb,
"__nregs:%ld", (
long) f->
nregs);
527 DUK__COMMA(); duk_fb_sprintf(fb,
"__nargs:%ld", (
long) f->
nargs);
528#if defined(DUK_USE_DEBUGGER_SUPPORT)
529 DUK__COMMA(); duk_fb_sprintf(fb,
"__start_line:%ld", (
long) f->start_line);
530 DUK__COMMA(); duk_fb_sprintf(fb,
"__end_line:%ld", (
long) f->end_line);
532 DUK__COMMA(); duk_fb_put_cstring(fb,
"__data:");
536 DUK__COMMA(); duk_fb_sprintf(fb,
"__func:");
537 duk_fb_put_funcptr(fb, (duk_uint8_t *) &f->
func,
sizeof(f->
func));
538 DUK__COMMA(); duk_fb_sprintf(fb,
"__nargs:%ld", (
long) f->
nargs);
539 DUK__COMMA(); duk_fb_sprintf(fb,
"__magic:%ld", (
long) f->
magic);
542 DUK__COMMA(); duk_fb_sprintf(fb,
"__buf:");
544 DUK__COMMA(); duk_fb_sprintf(fb,
"__offset:%ld", (
long) b->
offset);
545 DUK__COMMA(); duk_fb_sprintf(fb,
"__length:%ld", (
long) b->
length);
546 DUK__COMMA(); duk_fb_sprintf(fb,
"__shift:%ld", (
long) b->
shift);
547 DUK__COMMA(); duk_fb_sprintf(fb,
"__elemtype:%ld", (
long) b->
elem_type);
550 DUK__COMMA(); duk_fb_sprintf(fb,
"__strict:%ld", (
long) t->
strict);
551 DUK__COMMA(); duk_fb_sprintf(fb,
"__state:%ld", (
long) t->
state);
552 DUK__COMMA(); duk_fb_sprintf(fb,
"__unused1:%ld", (
long) t->
unused1);
553 DUK__COMMA(); duk_fb_sprintf(fb,
"__unused2:%ld", (
long) t->
unused2);
554 DUK__COMMA(); duk_fb_sprintf(fb,
"__valstack_max:%ld", (
long) t->
valstack_max);
555 DUK__COMMA(); duk_fb_sprintf(fb,
"__callstack_max:%ld", (
long) t->
callstack_max);
556 DUK__COMMA(); duk_fb_sprintf(fb,
"__catchstack_max:%ld", (
long) t->
catchstack_max);
557 DUK__COMMA(); duk_fb_sprintf(fb,
"__valstack:%p", (
void *) t->
valstack);
561 DUK__COMMA(); duk_fb_sprintf(fb,
"__catchstack:%p", (
void *) t->
catchstack);
562 DUK__COMMA(); duk_fb_sprintf(fb,
"__catchstack_size:%ld", (
long) t->
catchstack_size);
563 DUK__COMMA(); duk_fb_sprintf(fb,
"__catchstack_top:%ld", (
long) t->
catchstack_top);
564 DUK__COMMA(); duk_fb_sprintf(fb,
"__resumer:"); duk__print_hobject(st, (
duk_hobject *) t->
resumer);
568#ifdef DUK_USE_REFERENCE_COUNTING
577 DUK__COMMA(); duk_fb_sprintf(fb,
"__heapptr:%p", (
void *) h);
581 if (st->follow_proto) {
588 duk_fb_put_cstring(fb, brace2);
590#if defined(DUK_USE_HOBJECT_HASH_PART)
599 duk_fb_sprintf(fb,
"u");
601 duk_fb_sprintf(fb,
"d");
603 duk_fb_sprintf(fb,
"%ld", (
long) h_idx);
612 if (pushed_loopstack) {
613 st->loop_stack_index--;
614 st->loop_stack[st->loop_stack_index] =
NULL;
621 duk_fixedbuffer *fb = st->fb;
625 if (duk_fb_is_full(fb)) {
632 duk_fb_put_cstring(fb,
"NULL");
639 duk_fb_sprintf(fb,
"buffer:external:%p:%ld",
644 duk_fb_sprintf(fb,
"buffer:dynamic:%p:%ld",
652#ifdef DUK_USE_REFERENCE_COUNTING
657 duk_fb_sprintf(fb,
"=[");
660 for (i = 0; i < n; i++) {
661 duk_fb_sprintf(fb,
"%02lx", (
unsigned long) p[i]);
663 duk_fb_sprintf(fb,
"]");
668 duk_fixedbuffer *fb = st->fb;
670 if (duk_fb_is_full(fb)) {
675 duk_fb_put_cstring(fb,
"NULL");
696 duk_fixedbuffer *fb = st->fb;
698 if (duk_fb_is_full(fb)) {
705 duk_fb_sprintf(fb,
"(%p)", (
void *) tv);
709 duk_fb_put_cstring(fb,
"NULL");
716 for (i = 0; i < (
duk_size_t)
sizeof(*tv); i++) {
717 duk_fb_sprintf(fb,
"%02lx", (
unsigned long) ((duk_uint8_t *)tv)[i]);
727 duk_fb_put_cstring(fb,
"undefined");
731 duk_fb_put_cstring(fb,
"unused");
735 duk_fb_put_cstring(fb,
"null");
764 duk_fb_sprintf(fb,
"lightfunc:");
765 duk_fb_put_funcptr(fb, (duk_uint8_t *) &func,
sizeof(func));
766 duk_fb_sprintf(fb,
":%04lx", (
long) lf_flags);
769#if defined(DUK_USE_FASTINT)
770 case DUK_TAG_FASTINT:
786 duk_fixedbuffer *fb = st->fb;
789 const char *extraop_name;
792 op_name = duk__bc_optab[op];
797 extraop_name = duk__bc_extraoptab[
DUK_DEC_A(ins)];
799 duk_fb_sprintf(fb,
"%s %ld, %ld",
805 duk_fb_sprintf(fb,
"%s %ld (to pc%c%ld)",
806 (
const char *) op_name, (
long) diff1,
807 (
int) (diff2 >= 0 ?
'+' :
'-'),
808 (long) (diff2 >= 0 ? diff2 : -diff2));
810 duk_fb_sprintf(fb,
"%s %ld, %ld, %ld",
811 (
const char *) op_name, (
long)
DUK_DEC_A(ins),
817 duk_fixedbuffer *fb = st->fb;
820 duk_fb_sprintf(fb,
"?(%ld)", (
long) opcode);
822 duk_fb_sprintf(fb,
"%s", (
const char *) duk__bc_optab[opcode]);
833 fb.buffer = (duk_uint8_t *) str;
840 const char *p_begfmt =
NULL;
843 duk__dprint_state st;
846 duk_fb_put_byte(&fb, (duk_uint8_t) ch);
861 st.loop_stack_index = 0;
862 st.loop_stack_limit = DUK__LOOP_STACK_DEPTH;
879 st.depth_limit = DUK__DEEP_DEPTH_LIMIT;
894 if (st.pointer && !st.heavy) {
895 duk_fb_sprintf(&fb,
"(%p)", (
void *) t);
897 duk__print_tval(&st, t);
901 if (st.pointer && !st.heavy) {
902 duk_fb_sprintf(&fb,
"(%p)", (
void *) t);
904 duk__print_heaphdr(&st, t);
908 duk__print_instr(&st, t);
911 long t = va_arg(ap,
long);
914 }
else if (!got_exclamation && strchr(DUK__ALLOWED_STANDARD_SPECIFIERS, (
int) ch)) {
915 char fmtbuf[DUK__MAX_FORMAT_TAG_LENGTH];
920 if (fmtlen >=
sizeof(fmtbuf)) {
933 double arg = va_arg(ap,
double);
934 duk_fb_sprintf(&fb, fmtbuf,
arg);
937 long arg = va_arg(ap,
long);
938 duk_fb_sprintf(&fb, fmtbuf,
arg);
941 int arg = va_arg(ap,
int);
942 duk_fb_sprintf(&fb, fmtbuf,
arg);
945 unsigned long arg = va_arg(ap,
unsigned long);
946 duk_fb_sprintf(&fb, fmtbuf,
arg);
949 unsigned int arg = va_arg(ap,
unsigned int);
950 duk_fb_sprintf(&fb, fmtbuf,
arg);
953 unsigned long arg = va_arg(ap,
unsigned long);
954 duk_fb_sprintf(&fb, fmtbuf,
arg);
957 unsigned int arg = va_arg(ap,
unsigned int);
958 duk_fb_sprintf(&fb, fmtbuf,
arg);
961 const char *
arg = va_arg(ap,
const char *);
966 duk_fb_sprintf(&fb,
"NULL");
968 duk_fb_sprintf(&fb, fmtbuf,
arg);
972 void *
arg = va_arg(ap,
void *);
977 duk_fb_sprintf(&fb,
"NULL");
979 duk_fb_sprintf(&fb, fmtbuf,
arg);
983 int arg = va_arg(ap,
int);
984 duk_fb_sprintf(&fb, fmtbuf,
arg);
987 duk_fb_sprintf(&fb,
"INVALID-FORMAT(%s)", (
const char *) fmtbuf);
998 duk_fb_put_cstring(&fb,
"FMTERR");
1003 duk_fb_put_byte(&fb, (duk_uint8_t) 0);
1014 retval = duk_debug_vsnprintf(str, size,
format, ap);
1027 duk_uint8_t *p = (duk_uint8_t *) buf;
1028 duk_uint8_t *p_end = (duk_uint8_t *) (buf + buf_size - 1);
1032 for (i = 0; i < fptr_size; i++) {
1040#ifdef DUK_USE_INTEGER_BE
1043 ch = fptr[fptr_size - 1 - i];
CURL_EXTERN int void * arg
unsigned int duk_small_uint_t
duk_int_fast32_t duk_int_t
duk_uint_fast32_t duk_uint_t
#define DUK_MEMZERO(p, n)
duk_small_int_t duk_bool_t
duk_uint32_t duk_uint_fast32_t
#define DUK_HBUFFER_EXTERNAL_GET_DATA_PTR(heap, x)
#define DUK_HBUFFER_DYNAMIC_GET_DATA_PTR(heap, x)
#define DUK_HOBJECT_A_GET_VALUE_PTR(heap, h, i)
#define DUK_ASC_DOUBLEQUOTE
#define DUK_HOBJECT_HAS_EXOTIC_ARRAY(h)
#define DUK_HSTRING_GET_DATA(x)
#define DUK_HBUFFER_DYNAMIC_GET_SIZE(x)
#define DUK_HEAPHDR_GET_TYPE(h)
#define DUK_HOBJECT_GET_PROTOTYPE(heap, h)
#define DUK_TVAL_IS_NUMBER(tv)
#define DUK_HOBJECT_HAS_BOUND(h)
#define DUK_ASC_EXCLAMATION
#define DUK_HOBJECT_HAS_EXOTIC_DUKFUNC(h)
#define DUK_HOBJECT_GET_ENEXT(h)
#define DUK_TVAL_GET_OBJECT(tv)
#define DUK_HOBJECT_GET_PROPS(heap, h)
#define DUK_HEAPHDR_GET_PREV(heap, h)
#define DUK_HOBJECT_HAS_EXOTIC_STRINGOBJ(h)
#define DUK_HOBJECT_IS_COMPILEDFUNCTION(h)
#define DUK_HOBJECT_HAS_CREATEARGS(h)
#define DUK_TVAL_GET_BUFFER(tv)
#define DUK_HOBJECT_HASHIDX_UNUSED
#define DUK_HOBJECT_HAS_CONSTRUCTABLE(h)
#define DUK_HOBJECT_E_GET_KEY(heap, h, i)
#define DUK_TVAL_GET_TAG(tv)
#define DUK_HOBJECT_GET_ASIZE(h)
#define DUK_TVAL_IS_UNUSED(tv)
#define DUK_HEAPHDR_HAS_TEMPROOT(h)
#define DUK_HEAPHDR_HAS_REACHABLE(h)
#define DUK_HEAPHDR_GET_REFCOUNT(h)
#define DUK_HOBJECT_IS_THREAD(h)
#define DUK_TVAL_GET_STRING(tv)
#define DUK_HOBJECT_HAS_EXOTIC_ARGUMENTS(h)
#define DUK_HOBJECT_HAS_ARRAY_PART(h)
#define DUK_HOBJECT_IS_NATIVEFUNCTION(h)
#define DUK_HOBJECT_GET_HSIZE(h)
#define DUK_HOBJECT_IS_BUFFEROBJECT(h)
#define DUK_HSTRING_GET_BYTELEN(x)
#define DUK_HEAPHDR_GET_FLAGS(h)
#define DUK_HOBJECT_H_GET_INDEX(heap, h, i)
#define DUK_HOBJECT_E_SLOT_IS_ACCESSOR(heap, h, i)
#define DUK_HOBJECT_HAS_NATIVEFUNCTION(h)
#define DUK_HOBJECT_HAS_THREAD(h)
#define DUK_TAG_UNDEFINED
#define DUK_HEAPHDR_HAS_FINALIZED(h)
#define DUK_TVAL_GET_POINTER(tv)
#define DUK_HOBJECT_HAS_EXOTIC_PROXYOBJ(h)
#define DUK_HBUFFER_EXTERNAL_GET_SIZE(x)
#define DUK_TVAL_GET_LIGHTFUNC(tv, out_fp, out_flags)
#define DUK_HOBJECT_HAS_NEWENV(h)
#define DUK_TVAL_GET_BOOLEAN(tv)
#define DUK_HCOMPILEDFUNCTION_GET_DATA(heap, h)
#define DUK_HBUFFER_GET_DATA_PTR(heap, x)
#define DUK_HOBJECT_E_GET_VALUE(heap, h, i)
#define DUK_HOBJECT_HASHIDX_DELETED
#define DUK_HOBJECT_HAS_ENVRECCLOSED(h)
#define DUK_TVAL_GET_NUMBER(tv)
#define DUK_HOBJECT_GET_CLASS_NUMBER(h)
#define DUK_ASC_UNDERSCORE
#define DUK_HOBJECT_E_GET_FLAGS(heap, h, i)
#define DUK_HEAPHDR_HAS_FINALIZABLE(h)
#define DUK_HEAPHDR_GET_NEXT(heap, h)
#define DUK_HOBJECT_HAS_EXTENSIBLE(h)
#define DUK_HBUFFER_HAS_EXTERNAL(x)
#define DUK_HBUFFER_HAS_DYNAMIC(x)
#define DUK_HOBJECT_HAS_STRICT(h)
#define DUK_HOBJECT_HAS_COMPILEDFUNCTION(h)
#define DUK_HBUFFER_GET_SIZE(x)
#define DUK_HOBJECT_HAS_NAMEBINDING(h)
#define DUK_TAG_LIGHTFUNC
duk_ret_t(* duk_c_function)(duk_context *ctx)
json_t format(printf, 1, 2)))
static void error(LoadState *S, const char *why)
duk_size_t catchstack_size
duk_size_t catchstack_top
duk_size_t catchstack_max
duk_tval * valstack_bottom
union duk_tval_struct::@18 v