Cleanup cache.h
This commit is contained in:
parent
92fbd33579
commit
83ebb7d473
45
src/cache.cc
45
src/cache.cc
|
@ -9,8 +9,27 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
// The initial number of cache entries in new cache.
|
||||||
|
#define CACHE_ENTRIES_INITIAL_CAPACITY (100)
|
||||||
|
|
||||||
|
// The number of cache entries added when cache capacity is reached.
|
||||||
|
#define CACHE_ENTRIES_GROW_CAPACITY (50)
|
||||||
|
|
||||||
|
static bool cacheFetchEntryForKey(Cache* cache, int key, int* indexPtr);
|
||||||
|
static bool cacheInsertEntryAtIndex(Cache* cache, CacheEntry* cacheEntry, int index);
|
||||||
|
static int cacheFindIndexForKey(Cache* cache, int key, int* indexPtr);
|
||||||
|
static bool cacheEntryInit(CacheEntry* cacheEntry);
|
||||||
|
static bool cacheEntryFree(Cache* cache, CacheEntry* cacheEntry);
|
||||||
|
static bool cacheClean(Cache* cache);
|
||||||
|
static bool cacheResetStatistics(Cache* cache);
|
||||||
|
static bool cacheEnsureSize(Cache* cache, int size);
|
||||||
|
static bool cacheSweep(Cache* cache);
|
||||||
|
static bool cacheSetCapacity(Cache* cache, int newCapacity);
|
||||||
|
static int cacheEntriesCompareByUsage(const void* a1, const void* a2);
|
||||||
|
static int cacheEntriesCompareByMostRecentHit(const void* a1, const void* a2);
|
||||||
|
|
||||||
// 0x510938
|
// 0x510938
|
||||||
int _lock_sound_ticker = 0;
|
static int _lock_sound_ticker = 0;
|
||||||
|
|
||||||
// cache_init
|
// cache_init
|
||||||
// 0x41FCC0
|
// 0x41FCC0
|
||||||
|
@ -187,7 +206,7 @@ bool cachePrintStats(Cache* cache, char* dest)
|
||||||
// Fetches entry for the specified key into the cache.
|
// Fetches entry for the specified key into the cache.
|
||||||
//
|
//
|
||||||
// 0x4203AC
|
// 0x4203AC
|
||||||
bool cacheFetchEntryForKey(Cache* cache, int key, int* indexPtr)
|
static bool cacheFetchEntryForKey(Cache* cache, int key, int* indexPtr)
|
||||||
{
|
{
|
||||||
CacheEntry* cacheEntry = (CacheEntry*)internal_malloc(sizeof(*cacheEntry));
|
CacheEntry* cacheEntry = (CacheEntry*)internal_malloc(sizeof(*cacheEntry));
|
||||||
if (cacheEntry == NULL) {
|
if (cacheEntry == NULL) {
|
||||||
|
@ -287,7 +306,7 @@ bool cacheFetchEntryForKey(Cache* cache, int key, int* indexPtr)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x4205E8
|
// 0x4205E8
|
||||||
bool cacheInsertEntryAtIndex(Cache* cache, CacheEntry* cacheEntry, int index)
|
static bool cacheInsertEntryAtIndex(Cache* cache, CacheEntry* cacheEntry, int index)
|
||||||
{
|
{
|
||||||
// Ensure cache have enough space for new entry.
|
// Ensure cache have enough space for new entry.
|
||||||
if (cache->entriesLength == cache->entriesCapacity - 1) {
|
if (cache->entriesLength == cache->entriesCapacity - 1) {
|
||||||
|
@ -312,7 +331,7 @@ bool cacheInsertEntryAtIndex(Cache* cache, CacheEntry* cacheEntry, int index)
|
||||||
// this case indexPtr represents insertion point.
|
// this case indexPtr represents insertion point.
|
||||||
//
|
//
|
||||||
// 0x420654
|
// 0x420654
|
||||||
int cacheFindIndexForKey(Cache* cache, int key, int* indexPtr)
|
static int cacheFindIndexForKey(Cache* cache, int key, int* indexPtr)
|
||||||
{
|
{
|
||||||
int length = cache->entriesLength;
|
int length = cache->entriesLength;
|
||||||
if (length == 0) {
|
if (length == 0) {
|
||||||
|
@ -351,7 +370,7 @@ int cacheFindIndexForKey(Cache* cache, int key, int* indexPtr)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x420708
|
// 0x420708
|
||||||
bool cacheEntryInit(CacheEntry* cacheEntry)
|
static bool cacheEntryInit(CacheEntry* cacheEntry)
|
||||||
{
|
{
|
||||||
cacheEntry->key = 0;
|
cacheEntry->key = 0;
|
||||||
cacheEntry->size = 0;
|
cacheEntry->size = 0;
|
||||||
|
@ -366,7 +385,7 @@ bool cacheEntryInit(CacheEntry* cacheEntry)
|
||||||
// NOTE: Inlined.
|
// NOTE: Inlined.
|
||||||
//
|
//
|
||||||
// 0x420740
|
// 0x420740
|
||||||
bool cacheEntryFree(Cache* cache, CacheEntry* cacheEntry)
|
static bool cacheEntryFree(Cache* cache, CacheEntry* cacheEntry)
|
||||||
{
|
{
|
||||||
if (cacheEntry->data != NULL) {
|
if (cacheEntry->data != NULL) {
|
||||||
heapBlockDeallocate(&(cache->heap), &(cacheEntry->heapHandleIndex));
|
heapBlockDeallocate(&(cache->heap), &(cacheEntry->heapHandleIndex));
|
||||||
|
@ -378,7 +397,7 @@ bool cacheEntryFree(Cache* cache, CacheEntry* cacheEntry)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x420764
|
// 0x420764
|
||||||
bool cacheClean(Cache* cache)
|
static bool cacheClean(Cache* cache)
|
||||||
{
|
{
|
||||||
Heap* heap = &(cache->heap);
|
Heap* heap = &(cache->heap);
|
||||||
for (int index = 0; index < cache->entriesLength; index++) {
|
for (int index = 0; index < cache->entriesLength; index++) {
|
||||||
|
@ -397,7 +416,7 @@ bool cacheClean(Cache* cache)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x4207D4
|
// 0x4207D4
|
||||||
bool cacheResetStatistics(Cache* cache)
|
static bool cacheResetStatistics(Cache* cache)
|
||||||
{
|
{
|
||||||
if (cache == NULL) {
|
if (cache == NULL) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -427,7 +446,7 @@ bool cacheResetStatistics(Cache* cache)
|
||||||
// Prepare cache for storing new entry with the specified size.
|
// Prepare cache for storing new entry with the specified size.
|
||||||
//
|
//
|
||||||
// 0x42084C
|
// 0x42084C
|
||||||
bool cacheEnsureSize(Cache* cache, int size)
|
static bool cacheEnsureSize(Cache* cache, int size)
|
||||||
{
|
{
|
||||||
if (size > cache->maxSize) {
|
if (size > cache->maxSize) {
|
||||||
// The entry of given size is too big for caching, no matter what.
|
// The entry of given size is too big for caching, no matter what.
|
||||||
|
@ -503,7 +522,7 @@ bool cacheEnsureSize(Cache* cache, int size)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x42099C
|
// 0x42099C
|
||||||
bool cacheSweep(Cache* cache)
|
static bool cacheSweep(Cache* cache)
|
||||||
{
|
{
|
||||||
for (int index = 0; index < cache->entriesLength; index++) {
|
for (int index = 0; index < cache->entriesLength; index++) {
|
||||||
CacheEntry* cacheEntry = cache->entries[index];
|
CacheEntry* cacheEntry = cache->entries[index];
|
||||||
|
@ -534,7 +553,7 @@ bool cacheSweep(Cache* cache)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x420A40
|
// 0x420A40
|
||||||
bool cacheSetCapacity(Cache* cache, int newCapacity)
|
static bool cacheSetCapacity(Cache* cache, int newCapacity)
|
||||||
{
|
{
|
||||||
if (newCapacity < cache->entriesLength) {
|
if (newCapacity < cache->entriesLength) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -552,7 +571,7 @@ bool cacheSetCapacity(Cache* cache, int newCapacity)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x420A74
|
// 0x420A74
|
||||||
int cacheEntriesCompareByUsage(const void* a1, const void* a2)
|
static int cacheEntriesCompareByUsage(const void* a1, const void* a2)
|
||||||
{
|
{
|
||||||
CacheEntry* v1 = *(CacheEntry**)a1;
|
CacheEntry* v1 = *(CacheEntry**)a1;
|
||||||
CacheEntry* v2 = *(CacheEntry**)a2;
|
CacheEntry* v2 = *(CacheEntry**)a2;
|
||||||
|
@ -581,7 +600,7 @@ int cacheEntriesCompareByUsage(const void* a1, const void* a2)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x420AE8
|
// 0x420AE8
|
||||||
int cacheEntriesCompareByMostRecentHit(const void* a1, const void* a2)
|
static int cacheEntriesCompareByMostRecentHit(const void* a1, const void* a2)
|
||||||
{
|
{
|
||||||
CacheEntry* v1 = *(CacheEntry**)a1;
|
CacheEntry* v1 = *(CacheEntry**)a1;
|
||||||
CacheEntry* v2 = *(CacheEntry**)a2;
|
CacheEntry* v2 = *(CacheEntry**)a2;
|
||||||
|
|
18
src/cache.h
18
src/cache.h
|
@ -5,12 +5,6 @@
|
||||||
|
|
||||||
#define INVALID_CACHE_ENTRY ((CacheEntry*)-1)
|
#define INVALID_CACHE_ENTRY ((CacheEntry*)-1)
|
||||||
|
|
||||||
// The initial number of cache entries in new cache.
|
|
||||||
#define CACHE_ENTRIES_INITIAL_CAPACITY (100)
|
|
||||||
|
|
||||||
// The number of cache entries added when cache capacity is reached.
|
|
||||||
#define CACHE_ENTRIES_GROW_CAPACITY (50)
|
|
||||||
|
|
||||||
typedef enum CacheEntryFlags {
|
typedef enum CacheEntryFlags {
|
||||||
// Specifies that cache entry has no references as should be evicted during
|
// Specifies that cache entry has no references as should be evicted during
|
||||||
// the next sweep operation.
|
// the next sweep operation.
|
||||||
|
@ -71,17 +65,5 @@ bool cacheLock(Cache* cache, int key, void** data, CacheEntry** cacheEntryPtr);
|
||||||
bool cacheUnlock(Cache* cache, CacheEntry* cacheEntry);
|
bool cacheUnlock(Cache* cache, CacheEntry* cacheEntry);
|
||||||
bool cacheFlush(Cache* cache);
|
bool cacheFlush(Cache* cache);
|
||||||
bool cachePrintStats(Cache* cache, char* dest);
|
bool cachePrintStats(Cache* cache, char* dest);
|
||||||
bool cacheFetchEntryForKey(Cache* cache, int key, int* indexPtr);
|
|
||||||
bool cacheInsertEntryAtIndex(Cache* cache, CacheEntry* cacheEntry, int index);
|
|
||||||
int cacheFindIndexForKey(Cache* cache, int key, int* indexPtr);
|
|
||||||
bool cacheEntryInit(CacheEntry* cacheEntry);
|
|
||||||
bool cacheEntryFree(Cache* cache, CacheEntry* cacheEntry);
|
|
||||||
bool cacheClean(Cache* cache);
|
|
||||||
bool cacheResetStatistics(Cache* cache);
|
|
||||||
bool cacheEnsureSize(Cache* cache, int size);
|
|
||||||
bool cacheSweep(Cache* cache);
|
|
||||||
bool cacheSetCapacity(Cache* cache, int newCapacity);
|
|
||||||
int cacheEntriesCompareByUsage(const void* a1, const void* a2);
|
|
||||||
int cacheEntriesCompareByMostRecentHit(const void* a1, const void* a2);
|
|
||||||
|
|
||||||
#endif /* CACHE_H */
|
#endif /* CACHE_H */
|
||||||
|
|
Loading…
Reference in New Issue