1/* 2 * Copyright (c) 2011 Apple Inc. All rights reserved. 3 * 4 * @APPLE_APACHE_LICENSE_HEADER_START@ 5 * 6 * Licensed under the Apache License, Version 2.0 (the "License"); 7 * you may not use this file except in compliance with the License. 8 * You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software 13 * distributed under the License is distributed on an "AS IS" BASIS, 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 * 18 * @APPLE_APACHE_LICENSE_HEADER_END@ 19 */ 20/* 21 AllocationCache.h 22 Automatic Garbage Collection 23 Copyright (c) 2010-2011 Apple Inc. All rights reserved. 24 */ 25 26#pragma once 27#ifndef __AUTO_ALLOCATION_CACHE__ 28#define __AUTO_ALLOCATION_CACHE__ 29 30#include "Configuration.h" 31#include "FreeList.h" 32 33namespace Auto { 34 35 class AllocationCache { 36 public: 37 enum { 38 cache_size = maximum_quanta + 1 // size of the allocation cache 39 }; 40 private: 41 FreeList _lists[cache_size]; // free lists, one for each quanta size, slot 0 is for large clumps 42 43 public: 44 FreeList &operator[] (usword_t index) { return _lists[index]; } 45 }; 46 47} 48 49#endif 50