1 /* 2 * Copyright (C) 2003 Apple Computer, Inc. 3 * 4 * Portions are Copyright (C) 1998 Netscape Communications Corporation. 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2.1 of the License, or (at your option) any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with this library; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 * 20 * Alternatively, the contents of this file may be used under the terms 21 * of either the Mozilla Public License Version 1.1, found at 22 * http://www.mozilla.org/MPL/ (the "MPL") or the GNU General Public 23 * License Version 2.0, found at http://www.fsf.org/copyleft/gpl.html 24 * (the "GPL"), in which case the provisions of the MPL or the GPL are 25 * applicable instead of those above. If you wish to allow use of your 26 * version of this file only under the terms of one of those two 27 * licenses (the MPL or the GPL) and not to allow others to use your 28 * version of this file under the LGPL, indicate your decision by 29 * deletingthe provisions above and replace them with the notice and 30 * other provisions required by the MPL or the GPL, as the case may be. 31 * If you do not delete the provisions above, a recipient may use your 32 * version of this file under any of the LGPL, the MPL or the GPL. 33 */ 34 35 #ifndef RenderArena_h 36 #define RenderArena_h 37 38 #include "Arena.h" 39 #include <wtf/FastAllocBase.h> 40 #include <wtf/Noncopyable.h> 41 42 namespace WebCore { 43 44 static const size_t gMaxRecycledSize = 400; 45 46 class RenderArena { 47 WTF_MAKE_NONCOPYABLE(RenderArena); WTF_MAKE_FAST_ALLOCATED; 48 public: 49 RenderArena(unsigned arenaSize = 4096); 50 ~RenderArena(); 51 52 // Memory management functions 53 void* allocate(size_t); 54 void free(size_t, void*); 55 56 private: 57 // Underlying arena pool 58 ArenaPool m_pool; 59 60 // The recycler array is sparse with the indices being multiples of 4, 61 // i.e., 0, 4, 8, 12, 16, 20, ... 62 void* m_recyclers[gMaxRecycledSize >> 2]; 63 }; 64 65 } // namespace WebCore 66 67 #endif // RenderArena_h 68