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