From b45787a1d4dd11917214f8f69ed6c87e3908c195 Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Wed, 10 Sep 2003 04:08:27 +0000 Subject: [PATCH] Renamed yield/gc_freq variables to *_interval (with aliases for backwards compatibility). Created branch.gc_bytes/last_bytes/max_bytes/counter for garbage collection performance metrics, advanced debugging. This modification requires a "cvs update" to the include directory for js.msg. --- src/sbbs3/js_branch.c | 67 +++++++++++++++++++++++++++++++++---------- 1 file changed, 52 insertions(+), 15 deletions(-) diff --git a/src/sbbs3/js_branch.c b/src/sbbs3/js_branch.c index 1b252e3095..d676341752 100644 --- a/src/sbbs3/js_branch.c +++ b/src/sbbs3/js_branch.c @@ -37,11 +37,19 @@ #include "sbbs.h" +#include <jscntxt.h> /* Needed for Context-private data structure */ + enum { BRANCH_PROP_COUNTER ,BRANCH_PROP_LIMIT - ,BRANCH_PROP_YIELD_FREQ - ,BRANCH_PROP_GC_FREQ + ,BRANCH_PROP_YIELD_INTERVAL + ,BRANCH_PROP_GC_INTERVAL +#ifdef jscntxt_h___ + ,BRANCH_PROP_GC_BYTES + ,BRANCH_PROP_GC_LASTBYTES + ,BRANCH_PROP_GC_MAXBYTES + ,BRANCH_PROP_GC_COUNTER +#endif }; static JSBool js_branch_get(JSContext *cx, JSObject *obj, jsval id, jsval *vp) @@ -61,12 +69,26 @@ static JSBool js_branch_get(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case BRANCH_PROP_LIMIT: JS_NewNumberValue(cx,branch->limit,vp); break; - case BRANCH_PROP_GC_FREQ: + case BRANCH_PROP_YIELD_INTERVAL: + JS_NewNumberValue(cx,branch->yield_freq,vp); + break; + case BRANCH_PROP_GC_INTERVAL: JS_NewNumberValue(cx,branch->gc_freq,vp); break; - case BRANCH_PROP_YIELD_FREQ: - JS_NewNumberValue(cx,branch->yield_freq,vp); +#ifdef jscntxt_h___ + case BRANCH_PROP_GC_BYTES: + JS_NewNumberValue(cx,cx->runtime->gcBytes,vp); + break; + case BRANCH_PROP_GC_LASTBYTES: + JS_NewNumberValue(cx,cx->runtime->gcLastBytes,vp); break; + case BRANCH_PROP_GC_MAXBYTES: + JS_NewNumberValue(cx,cx->runtime->gcMaxBytes,vp); + break; + case BRANCH_PROP_GC_COUNTER: + JS_NewNumberValue(cx,cx->runtime->gcNumber,vp); + break; +#endif } return(JS_TRUE); @@ -89,10 +111,10 @@ static JSBool js_branch_set(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case BRANCH_PROP_LIMIT: JS_ValueToInt32(cx, *vp, (int32*)&branch->limit); break; - case BRANCH_PROP_GC_FREQ: + case BRANCH_PROP_GC_INTERVAL: JS_ValueToInt32(cx, *vp, (int32*)&branch->gc_freq); break; - case BRANCH_PROP_YIELD_FREQ: + case BRANCH_PROP_YIELD_INTERVAL: JS_ValueToInt32(cx, *vp, (int32*)&branch->yield_freq); break; } @@ -100,14 +122,23 @@ static JSBool js_branch_set(JSContext *cx, JSObject *obj, jsval id, jsval *vp) return(TRUE); } +#define GC_PROP_FLAGS JSPROP_ENUMERATE|JSPROP_READONLY static struct JSPropertySpec js_branch_properties[] = { -/* name, tinyid, flags, getter, setter */ - - { "counter", BRANCH_PROP_COUNTER, JSPROP_ENUMERATE, NULL, NULL }, - { "limit", BRANCH_PROP_LIMIT, JSPROP_ENUMERATE, NULL, NULL }, - { "gc_freq", BRANCH_PROP_GC_FREQ, JSPROP_ENUMERATE, NULL, NULL }, - { "yield_freq", BRANCH_PROP_YIELD_FREQ, JSPROP_ENUMERATE, NULL, NULL }, +/* name, tinyid, flags, getter, setter */ + + { "counter", BRANCH_PROP_COUNTER, JSPROP_ENUMERATE, NULL, NULL }, + { "limit", BRANCH_PROP_LIMIT, JSPROP_ENUMERATE, NULL, NULL }, + { "yield_freq", BRANCH_PROP_YIELD_INTERVAL, 0 /* ALIAS */, NULL, NULL }, + { "yield_interval", BRANCH_PROP_YIELD_INTERVAL, JSPROP_ENUMERATE, NULL, NULL }, + { "gc_freq", BRANCH_PROP_GC_INTERVAL, 0 /* ALIAS */, NULL, NULL }, + { "gc_interval", BRANCH_PROP_GC_INTERVAL, JSPROP_ENUMERATE, NULL, NULL }, +#ifdef jscntxt_h___ + { "gc_bytes", BRANCH_PROP_GC_BYTES, GC_PROP_FLAGS, NULL, NULL }, + { "gc_last_bytes", BRANCH_PROP_GC_LASTBYTES, GC_PROP_FLAGS, NULL, NULL }, + { "gc_max_bytes", BRANCH_PROP_GC_MAXBYTES, GC_PROP_FLAGS, NULL, NULL }, + { "gc_counter", BRANCH_PROP_GC_COUNTER, GC_PROP_FLAGS, NULL, NULL }, +#endif {0} }; @@ -115,8 +146,14 @@ static struct JSPropertySpec js_branch_properties[] = { static char* branch_prop_desc[] = { "counter incremented for each branch" ,"maximum number of branches, used for infinite-loop detection (0=disabled)" - ,"frequency of periodic garbage collection (0=disabled)" - ,"frequency of periodic time-slice yields (0=disabled)" + ,"interval of periodic garbage collection (lower number=higher frequency, 0=disabled)" + ,"interval of periodic time-slice yields (lower number=higher frequency, 0=disabled)" +#ifdef jscntxt_h___ + ,"number of bytes currently in heap" + ,"number of bytes in heap after last garbage collection" + ,"maximum number of bytes in heap" + ,"number of garbage collections" +#endif ,NULL }; #endif -- GitLab