aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/gp32/gp32std_memory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'backends/platform/gp32/gp32std_memory.cpp')
-rw-r--r--backends/platform/gp32/gp32std_memory.cpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/backends/platform/gp32/gp32std_memory.cpp b/backends/platform/gp32/gp32std_memory.cpp
index 10a831d1f0..08a868e78f 100644
--- a/backends/platform/gp32/gp32std_memory.cpp
+++ b/backends/platform/gp32/gp32std_memory.cpp
@@ -122,8 +122,10 @@ void *MemBlock::addBlock(size_t size)
}
blk++;
}
- if(i == prevBlock)
- return NULL;
+ if(i == prevBlock) {
+ prevBlock = 0;
+ return gm_malloc(size);
+ }
}
byte *ptr = userMem + (i * USER_BLOCK_SIZE);
@@ -139,11 +141,13 @@ void *MemBlock::addBlock(size_t size)
void MemBlock::deleteBlock(void *dstBlock)
{
+ // Faster method
uint32 np = (uint32) dstBlock - (uint32) userMem;
if ((np / USER_BLOCK_SIZE) * USER_BLOCK_SIZE != np) {
gm_free(dstBlock);
// warning("wrong block! (%d / %d)", (np / USER_BLOCK_SIZE) * USER_BLOCK_SIZE, np);
+ return;
}
int i = np / USER_BLOCK_SIZE;
if (i > NUM_BLOCK) {
@@ -201,10 +205,6 @@ void *gp_malloc(size_t size) {
int allocSize = ALIGNED_SIZE(size) + sizeof(uint32) + sizeof(uint32);
if (allocSize <= USER_BLOCK_SIZE) {
np = (uint32) MemBlock::addBlock(allocSize);
- if (!np) {
-// GPDEBUG("falling back to gm_malloc");
- np = (uint32) gm_malloc(allocSize);
- }
} else {
np = (uint32) gm_malloc(allocSize);
}
@@ -276,7 +276,7 @@ static char usedMemStr[16];
int gUsedMem = 1024 * 1024;
//#define CLEAN_MEMORY_WITH_0xE7
-#define CHECK_USED_MEMORY
+//#define CHECK_USED_MEMORY
//#define CHECK_NEW_TIME
//#define CHECK_NEW_SIZE