@@ -2108,7 +2108,7 @@ void JS_FreeRuntime(JSRuntime *rt)
21082108 p = list_entry(el, JSGCObjectHeader, link);
21092109 if (p->ref_count != 0) {
21102110 if (!header_done) {
2111- printf( "Object leaks:\n");
2111+ fprintf(stderr, "Object leaks:\n");
21122112 JS_DumpObjectHeader(rt);
21132113 header_done = TRUE;
21142114 }
@@ -2124,7 +2124,7 @@ void JS_FreeRuntime(JSRuntime *rt)
21242124 }
21252125 }
21262126 if (count != 0)
2127- printf( "Secondary object leaks: %d\n", count);
2127+ fprintf(stderr, "Secondary object leaks: %d\n", count);
21282128 }
21292129#endif
21302130
@@ -11802,7 +11802,7 @@ static JSValue JS_ToQuotedString(JSContext *ctx, JSValue val1)
1180211802
1180311803static __maybe_unused void JS_DumpObjectHeader(JSRuntime *rt)
1180411804{
11805- printf( "%14s %4s %4s %14s %10s %s\n",
11805+ fprintf(stderr, "%14s %4s %4s %14s %10s %s\n",
1180611806 "ADDRESS", "REFS", "SHRF", "PROTO", "CLASS", "PROPS");
1180711807}
1180811808
@@ -11818,24 +11818,24 @@ static __maybe_unused void JS_DumpObject(JSRuntime *rt, JSObject *p)
1181811818
1181911819 /* XXX: should encode atoms with special characters */
1182011820 sh = p->shape; /* the shape can be NULL while freeing an object */
11821- printf( "%14p %4d ",
11821+ fprintf(stderr, "%14p %4d ",
1182211822 (void *)p,
1182311823 p->header.ref_count);
1182411824 if (sh) {
11825- printf( "%3d%c %14p ",
11825+ fprintf(stderr, "%3d%c %14p ",
1182611826 sh->header.ref_count,
1182711827 " *"[sh->is_hashed],
1182811828 (void *)sh->proto);
1182911829 } else {
11830- printf( "%3s %14s ", "-", "-");
11830+ fprintf(stderr, "%3s %14s ", "-", "-");
1183111831 }
11832- printf( "%10s ",
11832+ fprintf(stderr, "%10s ",
1183311833 JS_AtomGetStrRT(rt, atom_buf, sizeof(atom_buf), rt->class_array[p->class_id].class_name));
1183411834 if (p->is_exotic && p->fast_array) {
11835- printf( "[ ");
11835+ fprintf(stderr, "[ ");
1183611836 for(i = 0; i < p->u.array.count; i++) {
1183711837 if (i != 0)
11838- printf( ", ");
11838+ fprintf(stderr, ", ");
1183911839 switch (p->class_id) {
1184011840 case JS_CLASS_ARRAY:
1184111841 case JS_CLASS_ARGUMENTS:
@@ -11857,30 +11857,30 @@ static __maybe_unused void JS_DumpObject(JSRuntime *rt, JSObject *p)
1185711857 int size = 1 << typed_array_size_log2(p->class_id);
1185811858 const uint8_t *b = p->u.array.u.uint8_ptr + i * size;
1185911859 while (size-- > 0)
11860- printf( "%02X", *b++);
11860+ fprintf(stderr, "%02X", *b++);
1186111861 }
1186211862 break;
1186311863 }
1186411864 }
11865- printf( " ] ");
11865+ fprintf(stderr, " ] ");
1186611866 }
1186711867
1186811868 if (sh) {
11869- printf( "{ ");
11869+ fprintf(stderr, "{ ");
1187011870 for(i = 0, prs = get_shape_prop(sh); i < sh->prop_count; i++, prs++) {
1187111871 if (prs->atom != JS_ATOM_NULL) {
1187211872 pr = &p->prop[i];
1187311873 if (!is_first)
11874- printf( ", ");
11875- printf( "%s: ",
11874+ fprintf(stderr, ", ");
11875+ fprintf(stderr, "%s: ",
1187611876 JS_AtomGetStrRT(rt, atom_buf, sizeof(atom_buf), prs->atom));
1187711877 if ((prs->flags & JS_PROP_TMASK) == JS_PROP_GETSET) {
11878- printf( "[getset %p %p]", (void *)pr->u.getset.getter,
11878+ fprintf(stderr, "[getset %p %p]", (void *)pr->u.getset.getter,
1187911879 (void *)pr->u.getset.setter);
1188011880 } else if ((prs->flags & JS_PROP_TMASK) == JS_PROP_VARREF) {
11881- printf( "[varref %p]", (void *)pr->u.var_ref);
11881+ fprintf(stderr, "[varref %p]", (void *)pr->u.var_ref);
1188211882 } else if ((prs->flags & JS_PROP_TMASK) == JS_PROP_AUTOINIT) {
11883- printf( "[autoinit %p %d %p]",
11883+ fprintf(stderr, "[autoinit %p %d %p]",
1188411884 (void *)js_autoinit_get_realm(pr),
1188511885 js_autoinit_get_id(pr),
1188611886 (void *)pr->u.init.opaque);
@@ -11890,57 +11890,57 @@ static __maybe_unused void JS_DumpObject(JSRuntime *rt, JSObject *p)
1189011890 is_first = FALSE;
1189111891 }
1189211892 }
11893- printf( " }");
11893+ fprintf(stderr, " }");
1189411894 }
1189511895
1189611896 if (js_class_has_bytecode(p->class_id)) {
1189711897 JSFunctionBytecode *b = p->u.func.function_bytecode;
1189811898 JSVarRef **var_refs;
1189911899 if (b->closure_var_count) {
1190011900 var_refs = p->u.func.var_refs;
11901- printf( " Closure:");
11901+ fprintf(stderr, " Closure:");
1190211902 for(i = 0; i < b->closure_var_count; i++) {
11903- printf( " ");
11903+ fprintf(stderr, " ");
1190411904 JS_DumpValue(rt, var_refs[i]->value);
1190511905 }
1190611906 if (p->u.func.home_object) {
11907- printf( " HomeObject: ");
11907+ fprintf(stderr, " HomeObject: ");
1190811908 JS_DumpValue(rt, JS_MKPTR(JS_TAG_OBJECT, p->u.func.home_object));
1190911909 }
1191011910 }
1191111911 }
11912- printf( "\n");
11912+ fprintf(stderr, "\n");
1191311913}
1191411914
1191511915static __maybe_unused void JS_DumpGCObject(JSRuntime *rt, JSGCObjectHeader *p)
1191611916{
1191711917 if (p->gc_obj_type == JS_GC_OBJ_TYPE_JS_OBJECT) {
1191811918 JS_DumpObject(rt, (JSObject *)p);
1191911919 } else {
11920- printf( "%14p %4d ",
11920+ fprintf(stderr, "%14p %4d ",
1192111921 (void *)p,
1192211922 p->ref_count);
1192311923 switch(p->gc_obj_type) {
1192411924 case JS_GC_OBJ_TYPE_FUNCTION_BYTECODE:
11925- printf( "[function bytecode]");
11925+ fprintf(stderr, "[function bytecode]");
1192611926 break;
1192711927 case JS_GC_OBJ_TYPE_SHAPE:
11928- printf( "[shape]");
11928+ fprintf(stderr, "[shape]");
1192911929 break;
1193011930 case JS_GC_OBJ_TYPE_VAR_REF:
11931- printf( "[var_ref]");
11931+ fprintf(stderr, "[var_ref]");
1193211932 break;
1193311933 case JS_GC_OBJ_TYPE_ASYNC_FUNCTION:
11934- printf( "[async_function]");
11934+ fprintf(stderr, "[async_function]");
1193511935 break;
1193611936 case JS_GC_OBJ_TYPE_JS_CONTEXT:
11937- printf( "[js_context]");
11937+ fprintf(stderr, "[js_context]");
1193811938 break;
1193911939 default:
11940- printf( "[unknown %d]", p->gc_obj_type);
11940+ fprintf(stderr, "[unknown %d]", p->gc_obj_type);
1194111941 break;
1194211942 }
11943- printf( "\n");
11943+ fprintf(stderr, "\n");
1194411944 }
1194511945}
1194611946
0 commit comments