Subversion Repositories Kolibri OS

Compare Revisions

No changes between revisions

Regard whitespace Rev 7401 → Rev 7400

/programs/cmm/experimental/allocation/mallocFreeRealloc.c
36,25 → 36,26
return EAX;
}
 
:dword __offsetAllocData = 0;
:dword __limitAllocSize = 0;
:dword __sizeFullAllocMemory = 0;
:dword offsetAllocData = 0;
:dword malloc(dword size)
{
dword array = 0;
dword orderSize = 1;
dword order = 0;
dword stackAlloc = 0;
dword stackKey = 0;
dword result = 0;
IF(!__offsetAllocData) __offsetAllocData = mallocSystem(4*40);
size+=4;
order = __offsetAllocData;
IF(!offsetAllocData) offsetAllocData = mallocSystem(4*32);
WHILE(orderSize<size)
{
orderSize<<=1;
order+=4;
order++;
}
__sizeFullAllocMemory += orderSize;
order<<=2;
order += offsetAllocData;
IF(!DSDWORD[order])
{
stackAlloc = mallocSystem(4*50);
78,6 → 79,25
}
}
 
/*:dword freeSystem(dword mptr)
{
$push eax
$push ebx
$push ecx
$mov eax, 68
$mov ebx, 13
$mov ecx, mptr
$test ecx, ecx
$jz end0
$int 0x40
@end0:
$pop ecx
$pop ebx
$pop eax
return 0;
}*/
 
:dword free(dword ptr)
{
dword array = 0;
87,30 → 107,39
dword stackKey = 0;
dword result = 0;
dword size = 0;
IF(!__offsetAllocData) return 0;
size = DSDWORD[ptr-4];
order = __offsetAllocData;
IF(!offsetAllocData) return 0;
WHILE(orderSize!=size)
{
orderSize<<=1;
order+=4;
order++;
}
order<<=2;
order += offsetAllocData;
stackAlloc = DSDWORD[order];
DSDWORD[stackAlloc] += 4;
stackKey = DSDWORD[stackAlloc];
order = ptr;
orderSize -= 4;
WHILE(orderSize)
{
DSBYTE[order] = 0;
order++;
orderSize--;
}
DSDWORD[stackKey] = ptr-4;
}
 
:dword realloc(dword oldMem,size)
:dword realloc(dword ptr,size)
{
dword newMem = 0;
dword oldSize = 0;
dword ptr1 = 0;
dword ptr2 = 0;
IF(!oldMem) RETURN malloc(size);
newMem = malloc(size);
oldSize = DSDWORD[oldMem-4] - 4;
ptr1 = oldMem;
oldSize = DSDWORD[ptr-4] - 4;
ptr1 = ptr;
ptr2 = newMem;
WHILE(oldSize)
{
119,7 → 148,7
ptr2++;
oldSize--;
}
free(oldMem);
free(ptr);
RETURN newMem;
}
 
/programs/cmm/experimental/allocation/mallocFreeRealloc.kex
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property