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 40 namespace WebCore { 41 42 static const size_t gMaxRecycledSize = 400; 43 44 class RenderArena { 45 public: 46 RenderArena(unsigned arenaSize = 4096); 47 ~RenderArena(); 48 49 // Memory management functions 50 void* allocate(size_t); 51 void free(size_t, void*); 52 53 #ifdef ANDROID_INSTRUMENT 54 size_t reportPoolSize() const; 55 #endif 56 57 private: 58 // Underlying arena pool 59 ArenaPool m_pool; 60 61 // The recycler array is sparse with the indices being multiples of 4, 62 // i.e., 0, 4, 8, 12, 16, 20, ... 63 void* m_recyclers[gMaxRecycledSize >> 2]; 64 }; 65 66 } // namespace WebCore 67 68 #endif // RenderArena_h 69