From 6a664052de9dd40bf4bb2687f1b16a8c4a2af465 Mon Sep 17 00:00:00 2001 From: "igor%mir2.org" Date: Sat, 14 Jul 2007 08:28:57 +0000 Subject: [PATCH] Bug 380469: Followup for the previous check in to remove more no longer used close-on-GC code. r=brendan git-svn-id: svn://10.0.0.236/trunk@229956 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/js/src/jsfun.c | 6 ++---- mozilla/js/src/jsiter.c | 30 +++++++++++++++++------------- mozilla/js/src/jsiter.h | 5 +++-- 3 files changed, 22 insertions(+), 19 deletions(-) diff --git a/mozilla/js/src/jsfun.c b/mozilla/js/src/jsfun.c index 96eb773c43a..eac23e92c5e 100644 --- a/mozilla/js/src/jsfun.c +++ b/mozilla/js/src/jsfun.c @@ -546,10 +546,8 @@ args_or_call_trace(JSTracer *trc, JSObject *obj) JSStackFrame *fp; fp = (JSStackFrame *) JS_GetPrivate(trc->context, obj); - if (fp && (fp->flags & JSFRAME_GENERATOR)) { - JS_CALL_OBJECT_TRACER(trc, FRAME_TO_GENERATOR(fp)->obj, - "FRAME_TO_GENERATOR(fp)->obj"); - } + if (fp && (fp->flags & JSFRAME_GENERATOR)) + js_TraceGenerator(trc, FRAME_TO_GENERATOR(fp)); } #else # define args_or_call_trace NULL diff --git a/mozilla/js/src/jsiter.c b/mozilla/js/src/jsiter.c index 987e9cab465..bab8a6d3384 100644 --- a/mozilla/js/src/jsiter.c +++ b/mozilla/js/src/jsiter.c @@ -670,23 +670,29 @@ generator_finalize(JSContext *cx, JSObject *obj) } } +void +js_TraceGenerator(JSTracer *trc, JSGenerator *gen) +{ + /* + * We must trace argv[-2], as js_TraceStackFrame will not. Note that + * js_TraceStackFrame will trace thisp (argv[-1]) and actual arguments, + * plus any missing formals and local GC roots. + */ + JS_ASSERT(!JSVAL_IS_PRIMITIVE(gen->frame.argv[-2])); + JS_CALL_OBJECT_TRACER(trc, JSVAL_TO_OBJECT(gen->frame.argv[-2]), + "generator"); + js_TraceStackFrame(trc, &gen->frame); +} + + static void generator_trace(JSTracer *trc, JSObject *obj) { JSGenerator *gen; gen = (JSGenerator *) JS_GetPrivate(trc->context, obj); - if (gen) { - /* - * We must trace argv[-2], as js_TraceStackFrame will not. Note - * that js_TraceStackFrame will trace thisp (argv[-1]) and actual - * arguments, plus any missing formals and local GC roots. - */ - JS_ASSERT(!JSVAL_IS_PRIMITIVE(gen->frame.argv[-2])); - JS_CALL_OBJECT_TRACER(trc, JSVAL_TO_OBJECT(gen->frame.argv[-2]), - "generator"); - js_TraceStackFrame(trc, &gen->frame); - } + if (gen) + js_TraceGenerator(trc, gen); } JSClass js_GeneratorClass = { @@ -733,8 +739,6 @@ js_NewGenerator(JSContext *cx, JSStackFrame *fp) if (!gen) goto bad; - gen->obj = obj; - /* Steal away objects reflecting fp and point them at gen->frame. */ gen->frame.callobj = fp->callobj; if (fp->callobj) { diff --git a/mozilla/js/src/jsiter.h b/mozilla/js/src/jsiter.h index 9325107a6c0..497e317be27 100644 --- a/mozilla/js/src/jsiter.h +++ b/mozilla/js/src/jsiter.h @@ -91,8 +91,6 @@ typedef enum JSGeneratorState { } JSGeneratorState; struct JSGenerator { - JSGenerator *next; - JSObject *obj; JSGeneratorState state; JSStackFrame frame; JSArena arena; @@ -105,6 +103,9 @@ struct JSGenerator { extern JSObject * js_NewGenerator(JSContext *cx, JSStackFrame *fp); +extern void +js_TraceGenerator(JSTracer *trc, JSGenerator *gen); + #endif extern JSClass js_GeneratorClass;