/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- * vim: set ts=8 sts=4 et sw=4 tw=99: * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef frontend_ParseMaps_inl_h #define frontend_ParseMaps_inl_h #include "frontend/ParseMaps.h" #include "jscntxtinlines.h" namespace js { namespace frontend { template inline bool AtomThingMapPtr::ensureMap(ExclusiveContext* cx) { if (map_) return true; AutoLockForExclusiveAccess lock(cx); map_ = cx->parseMapPool().acquire(); if (!map_) ReportOutOfMemory(cx); return !!map_; } template inline void AtomThingMapPtr::releaseMap(ExclusiveContext* cx) { if (!map_) return; AutoLockForExclusiveAccess lock(cx); cx->parseMapPool().release(map_); map_ = nullptr; } template inline bool AtomDecls::init() { AutoLockForExclusiveAccess lock(cx); map = cx->parseMapPool().acquire(); return map; } template inline AtomDecls::~AtomDecls() { if (map) { AutoLockForExclusiveAccess lock(cx); cx->parseMapPool().release(map); } } } /* namespace frontend */ } /* namespace js */ #endif /* frontend_ParseMaps_inl_h */