static JSBool vm_dumpGCStats(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { const char *filename = JS_GetStringBytes(JS_ValueToString(cx, argv[0])); FILE *file; depth = JS_SuspendRequest(cx); file = fopen(filename, "w"); flock(file, LOCK_EX); JS_ResumeRequest(cx); js_DumpGCStats(); fclose(file); }
GC(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { JSRuntime *rt; uint32 preBytes; rt = cx->runtime; preBytes = rt->gcBytes; JS_GC(cx); fprintf(gOutFile, "before %lu, after %lu, break %08lx\n", (unsigned long)preBytes, (unsigned long)rt->gcBytes, #ifdef XP_UNIX (unsigned long)sbrk(0) #else 0 #endif ); #ifdef JS_GCMETER js_DumpGCStats(rt, stdout); #endif return JS_TRUE; }