michael@0: /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- michael@0: * vim: set ts=8 sts=4 et sw=4 tw=99: michael@0: * This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #ifndef frontend_Parser_inl_h michael@0: #define frontend_Parser_inl_h michael@0: michael@0: #include "frontend/Parser.h" michael@0: michael@0: #include "frontend/ParseMaps-inl.h" michael@0: michael@0: namespace js { michael@0: namespace frontend { michael@0: michael@0: template michael@0: bool michael@0: ParseContext::init(TokenStream &ts) michael@0: { michael@0: if (!frontend::GenerateBlockId(ts, this, this->bodyid)) michael@0: return false; michael@0: michael@0: return decls_.init() && lexdeps.ensureMap(sc->context); michael@0: } michael@0: michael@0: template michael@0: ParseContext::~ParseContext() michael@0: { michael@0: // |*parserPC| pointed to this object. Now that this object is about to michael@0: // die, make |*parserPC| point to this object's parent. michael@0: JS_ASSERT(*parserPC == this); michael@0: *parserPC = this->oldpc; michael@0: js_delete(funcStmts); michael@0: } michael@0: michael@0: } // namespace frontend michael@0: } // namespace js michael@0: michael@0: #endif /* frontend_Parser_inl_h */