Sped up lmemorymanager a little.

git-svn-id: https://spexeah.com:8443/svn/Asuro@161 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c
This commit is contained in:
kieron 2017-05-20 23:02:02 +00:00
parent 691f2cad0f
commit e44174227b

View File

@ -31,7 +31,8 @@ type
PHeapPage = ^THeapPage; PHeapPage = ^THeapPage;
var var
Root_Page : PHeapPage; Root_Page : PHeapPage;
Search_Page : PHeapPage;
procedure init; procedure init;
function kalloc(size : uint32) : void; function kalloc(size : uint32) : void;
@ -75,6 +76,7 @@ var
begin begin
Root_Page:= PHeapPage(new_lmm_page); Root_Page:= PHeapPage(new_lmm_page);
Search_Page:= Root_Page;
Root_Page^.Next_Page:= 0; Root_Page^.Next_Page:= 0;
Root_Page^.Prev_Page:= 0; Root_Page^.Prev_Page:= 0;
For i:=0 to MAX_ENTRIES-1 do begin For i:=0 to MAX_ENTRIES-1 do begin
@ -94,7 +96,7 @@ var
begin begin
Heap_Entries:= size div 8; Heap_Entries:= size div 8;
If sint32(size-(Heap_Entries*8)) > 0 then Heap_Entries:= Heap_Entries + 1; If sint32(size-(Heap_Entries*8)) > 0 then Heap_Entries:= Heap_Entries + 1;
hp:= Root_Page; hp:= Search_Page;
kalloc:= nil; kalloc:= nil;
while kalloc = nil do begin while kalloc = nil do begin
for i:=0 to MAX_ENTRIES-1 do begin for i:=0 to MAX_ENTRIES-1 do begin
@ -124,6 +126,7 @@ begin
new_heap_page(hp); new_heap_page(hp);
end; end;
hp:= PHeapPage(hp^.Next_Page); hp:= PHeapPage(hp^.Next_Page);
Search_Page:= hp;
end; end;
end; end;
end; end;
@ -149,6 +152,7 @@ begin
hp^.Entries[entry].Present:= False; hp^.Entries[entry].Present:= False;
hp^.Entries[entry].Root:= False; hp^.Entries[entry].Root:= False;
hp^.Entries[entry].Last:= False; hp^.Entries[entry].Last:= False;
Search_Page:= hp;
end else begin end else begin
GPF; GPF;
end; end;