From 1b567da4f7a880c06e6c548dbc2f1bf94a4804aa Mon Sep 17 00:00:00 2001 From: "brendan%mozilla.org" Date: Thu, 30 Dec 2004 17:44:41 +0000 Subject: [PATCH] Propagate TCF_HAS_DEFXMLNS from parser to constant folder; call js_Mark from xml_mark (246441, r=shaver). --- js/src/jsparse.c | 15 ++++++++++++++- js/src/jsxml.c | 2 +- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/js/src/jsparse.c b/js/src/jsparse.c index c8948b5f0bc7..3e7f3ae9c565 100644 --- a/js/src/jsparse.c +++ b/js/src/jsparse.c @@ -972,7 +972,7 @@ FunctionDef(JSContext *cx, JSTokenStream *ts, JSTreeContext *tc, pn->pn_op = op; pn->pn_body = body; - pn->pn_flags = funtc.flags & TCF_FUN_FLAGS; + pn->pn_flags = funtc.flags & (TCF_FUN_FLAGS | TCF_HAS_DEFXMLNS); pn->pn_tryCount = funtc.tryCount; TREE_CONTEXT_FINISH(&funtc); return pn; @@ -1287,6 +1287,10 @@ Statement(JSContext *cx, JSTokenStream *ts, JSTreeContext *tc) #endif /* JS_HAS_EXPORT_IMPORT */ case TOK_FUNCTION: +#if JS_HAS_XML_SUPPORT + if (js_PeekToken(cx, ts) == TOK_DBLCOLON) + goto expression; +#endif return FunctionStmt(cx, ts, tc); case TOK_IF: @@ -2007,6 +2011,9 @@ Statement(JSContext *cx, JSTokenStream *ts, JSTreeContext *tc) return NULL; default: +#if JS_HAS_XML_SUPPORT + expression: +#endif js_UngetToken(ts); pn2 = Expr(cx, ts, tc); if (!pn2) @@ -4370,9 +4377,15 @@ js_FoldConstants(JSContext *cx, JSParseNode *pn, JSTreeContext *tc) switch (pn->pn_arity) { case PN_FUNC: + { + uint16 oldflags = tc->flags; + + tc->flags = (uint16) pn->pn_flags; if (!js_FoldConstants(cx, pn->pn_body, tc)) return JS_FALSE; + tc->flags = oldflags; break; + } case PN_LIST: #if JS_HAS_XML_SUPPORT diff --git a/js/src/jsxml.c b/js/src/jsxml.c index f078689b77f4..3b61c5e2866f 100644 --- a/js/src/jsxml.c +++ b/js/src/jsxml.c @@ -5085,7 +5085,7 @@ xml_mark(JSContext *cx, JSObject *obj, void *arg) xml = (JSXML *) JS_GetPrivate(cx, obj); xml_mark_private(cx, xml, arg); - return 0; + return js_Mark(cx, obj, arg); } static void