Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 887 → Rev 888

/kernel/branches/kolibri_pe/core/heap.inc
149,30 → 149,31
test al, DONT_FREE_BLOCK
jnz .cantfree
 
push edi
 
and eax, not 4095
mov ecx, eax
mov edi, eax
or al, FREE_BLOCK
mov [page_tabs+(esi-1)*4], eax
sub ecx, 4096
mov ebx, ecx
shr ecx, 12
sub edi, 4096
mov ebx, edi
shr edi, 12
jz .released
.release:
xor eax, eax
xchg eax, [page_tabs+esi*4]
test al, 1
xor ecx, ecx
xchg ecx, [page_tabs+esi*4]
test cl, 1
jz @F
call free_page
 
call @core_free@4
mov eax, esi
shl eax, 12
invlpg [eax]
@@:
inc esi
dec ecx
dec edi
jnz .release
.released:
push edi
 
mov edx, [current_slot]
mov esi, dword [edx+APPDATA.heap_base]
mov edi, dword [edx+APPDATA.heap_top]
276,20 → 277,28
cmp edx, ebx
jb .realloc_add
; release part of allocated memory
 
push ecx
.loop:
cmp edx, ebx
jz .release_done
dec edx
xor eax, eax
xchg eax, [page_tabs+edx*4]
xor ecx, ecx
xchg ecx, [page_tabs+edx*4]
test al, 1
jz .loop
call free_page
 
push edx
call @core_free@4
pop edx
mov eax, edx
shl eax, 12
invlpg [eax]
jmp .loop
.release_done:
 
pop ecx
 
sub ebx, ecx
cmp ebx, 1
jnz .nofreeall