Commit Graph

137 Commits

Author SHA1 Message Date
daniel
0c3a2a257d * Convert heap to ptruint.
git-svn-id: trunk@7950 -
2007-07-04 19:46:47 +00:00
micha
b8822c88b5 * fix heap manager adding to wrong free list, and race condition
git-svn-id: trunk@7878 -
2007-06-30 21:13:48 +00:00
micha
cd1a283a18 * fix heap var size chunk search to be as intended (search constant number of blocks from best, not from any bigger)
git-svn-id: trunk@7807 -
2007-06-24 21:50:05 +00:00
micha
afb5f32f65 * fix heap block recycle flag when orphaning
git-svn-id: trunk@7805 -
2007-06-24 21:32:31 +00:00
micha
787f9a44c7 * heap manager: do not try to leave critical section twice, moron
git-svn-id: trunk@7763 -
2007-06-21 20:19:33 +00:00
micha
c0fa8fd255 * heap manager: fix thread exit race condition by using single global lock
fix finishing to be freed list in orphaned list context
  fix heaptrace finalization

git-svn-id: trunk@7752 -
2007-06-20 21:10:35 +00:00
micha
c226f6fd44 * heap manager: handle freeing of block owned by exited thread
* heap trace: ditto

git-svn-id: trunk@7649 -
2007-06-13 20:27:42 +00:00
Jonas Maebe
20b99dade3 - reverted r7600, see additional comments in mantis #9027
git-svn-id: trunk@7606 -
2007-06-09 17:14:28 +00:00
Jonas Maebe
5a8679131f + support for new/dispose with extra size parameter in macpas mode
(mantis #9027)

git-svn-id: trunk@7600 -
2007-06-08 18:02:31 +00:00
micha
f3a22cbab4 * simplify/remove some code
git-svn-id: trunk@7533 -
2007-05-30 19:05:07 +00:00
micha
eaa598094e * heap manager: do not access chunk after last one
git-svn-id: trunk@7497 -
2007-05-28 15:06:19 +00:00
micha
0248d2472d * heap manager: fix os chunk list nonsense
fix usage statistics for variable sized chunks
    fix var chunks free space fragmentation

git-svn-id: trunk@7491 -
2007-05-27 19:04:02 +00:00
micha
f9d2ea7e3a * heap manager: fix shrinking var sized chunks to very small sizes < sizeof(tmemchunk_var)
was no problem previously due to sizeof(tmemchunk_var) <= blocksize

git-svn-id: trunk@7464 -
2007-05-25 07:05:33 +00:00
micha
9f11556f10 * flush output after heap debug writeln at exit
git-svn-id: trunk@7413 -
2007-05-21 20:38:29 +00:00
micha
6c85fcb157 heap manager: initialize critical sections properly
git-svn-id: trunk@7412 -
2007-05-21 17:08:28 +00:00
micha
7f2a257102 + heap manager now per thread, reduce heap lock contention
+ heap threading test

git-svn-id: trunk@7407 -
2007-05-20 20:58:12 +00:00
micha
bb9de8f193 * SHOW_MEM_USAGE define to always show maximum heap size used/allocated, independent of DUMP_MEM_USAGE
git-svn-id: trunk@7324 -
2007-05-13 12:34:16 +00:00
micha
4579c242df * heap manager: look for better matching variable block size, with upperbound search
git-svn-id: trunk@7320 -
2007-05-12 20:52:08 +00:00
micha
aa951460a5 + heap manager size statistics
git-svn-id: trunk@7319 -
2007-05-12 20:50:33 +00:00
micha
09a60a4019 * tiny optimization to heap manager: implement freeoslist as a fifo (instead of lifo) which should allow more os chunks to keep their fixed size formatting in case of diverse fixed size usage
git-svn-id: trunk@7237 -
2007-05-02 05:20:44 +00:00
micha
9c727d1762 * tiny optimization to heap manager, avoid repeated removing/readding to freeoslist overhead
git-svn-id: trunk@7236 -
2007-05-01 21:04:18 +00:00
micha
e30a47723b * heap manager micro optimizations
git-svn-id: trunk@7219 -
2007-04-30 20:23:46 +00:00
micha
9bdde01a99 * avoid usage of freelists_free_chunk boolean, while still prevent repeated fixed size conversion overhead; should reduce memory usage in some cases
git-svn-id: trunk@7203 -
2007-04-30 12:52:28 +00:00
yury
3c10856a4f * Dont throw runerrors in default MemoryMutexManager if HAS_MT_MEMORYMANAGER is defined.
git-svn-id: trunk@5962 -
2007-01-14 01:14:12 +00:00
Legolas
9e6d19a494 * rtl part of first Nintendo DS port
git-svn-id: trunk@5593 -
2006-12-14 17:34:51 +00:00
Jonas Maebe
64b7f00afd * fixed ReturnNilIfGrowHeapFails
git-svn-id: trunk@5042 -
2006-10-28 18:17:34 +00:00
micha
dc3b37ff73 + heap manager: reduce overhead on fixed size chunks from 8 to 4
git-svn-id: trunk@4904 -
2006-10-14 15:05:24 +00:00
Legolas
19d597f425 * Reactivated heap management for GBA
git-svn-id: trunk@4529 -
2006-09-01 17:54:59 +00:00
florian
d337c3ca6a * clean up heap at exit, fixes #7183
git-svn-id: trunk@4410 -
2006-08-11 22:09:29 +00:00
peter
b3732f7215 * keep same fixed block, also if we resize to a smaller size.
git-svn-id: trunk@4313 -
2006-07-30 15:02:28 +00:00
yury
e062922528 * added an option to use target-specific memory manager instead of standard. This is controlled by HAS_MEMORYMANAGER and HAS_MT_MEMORYMANAGER defines.
* wince executables use C memory manager now (as all apps compiled by eVC++). It saves 5.5 KB of exe size.

git-svn-id: trunk@4282 -
2006-07-23 10:23:31 +00:00
florian
5575a837db * gba patch from Francesco Lombardi
git-svn-id: trunk@3716 -
2006-05-28 14:48:24 +00:00
peter
4b7f51b0aa * fixed uninitialized var
git-svn-id: trunk@2654 -
2006-02-20 11:24:38 +00:00
florian
0cc2b9b16b * small speed improvements
git-svn-id: trunk@2633 -
2006-02-19 16:59:03 +00:00
florian
a9198b7300 * ensure always 16 byte aligned memory blocks
git-svn-id: trunk@2511 -
2006-02-10 19:08:43 +00:00
peter
9d817056ce * optimize by removing expensive calculations
git-svn-id: trunk@1973 -
2005-12-16 17:19:37 +00:00
florian
e2a4dac215 + i386 assembler versions of decr_ansistring and unique_ansistring
git-svn-id: trunk@1963 -
2005-12-15 19:51:57 +00:00
Jonas Maebe
31b173fe85 * always keep 1 free os chunk available in the freelist to avoid
a performance killing corner case where one block is constantly allocated
    and freed and can result in a redividing of an os chunk in small parts
    for each allocation

git-svn-id: trunk@1900 -
2005-12-07 20:01:15 +00:00
peter
f9f75b40e5 * fixed DUMPGROW compile
git-svn-id: trunk@1305 -
2005-10-06 05:57:58 +00:00
florian
4e6b371dc5 * patch from Martin Schreiber to fix bug #4247
git-svn-id: trunk@784 -
2005-08-03 19:55:06 +00:00
peter
1cecfcc09f * only all resizes for fixed blocks when the blocksize doesn't
change.
  * check the new size first if it fits in the fixed size range
    to prevent truncation of the size when the fixedsizemask is applied

git-svn-id: trunk@636 -
2005-07-16 20:17:24 +00:00
peter
822f7f0f16 * allow freemem nil
git-svn-id: trunk@499 -
2005-06-25 21:11:16 +00:00
michael
fccc19aa5c + Removed HASGETHEAPSTATUS HASGETFPCHEAPSTATUS defines
git-svn-id: trunk@311 -
2005-06-09 18:04:47 +00:00
michael
a775d3d487 + Removed HASCURRENCY VALUEGETMEM VALUEFREEMEM defines
git-svn-id: trunk@293 -
2005-06-09 17:33:22 +00:00
peter
4ace790492 * remove $Log
git-svn-id: trunk@231 -
2005-06-07 09:47:55 +00:00
florian
0d7aaab6b8 * patch from Ales Katona making the memory manager more
smart when releasing memory chunks back to the OS

git-svn-id: trunk@190 -
2005-06-04 10:53:38 +00:00
fpc
790a4fe2d3 * log and id tags removed
git-svn-id: trunk@42 -
2005-05-21 09:42:41 +00:00
fpc
50778076c3 initial import
git-svn-id: trunk@1 -
2005-05-16 18:37:41 +00:00
peter
fc977d3259 * check if there is enough room before concatting blocks in
systryresizemem()
2005-04-04 15:40:30 +00:00
Jonas Maebe
2426ecafc3 * fixed several warnings and notes about unused variables (mainly) or
uninitialised use of variables/function results (a few)
2005-03-25 22:53:39 +00:00